ZeroNoise Logo zeronoise
Post
Coding Agents Are Moving From Prompts to Control Graphs
1 day ago
4 min read
137 docs
The most useful signal today is operational: explicit state, verifier gates, and trace-driven evals are the practical path beyond one-shot prompting. New T3 Code and OpenWiki releases make that shift concrete.

🔥 TOP SIGNAL

AI Jason’s practical thesis is that repeatable coding work should be designed as a control graph, not left as a chat prompt. His team models workflows as nodes, edges, and carried state; its change-shipping graph runs setup/implementation → verification → simplification/PR only when verification passes, with structured outputs passed between agent sessions. The design keeps the human one layer above execution, but only after a separate verifier and deterministic scripts take over self-checking, data fetching, server startup, and tests.

⚡ TRY THIS

  • Map one recurring loop before adding more agents. Write its SOP; label each node (action), edge (next transition), and state (data carried forward); specify whether the trigger is time-, goal-, or event-based and which conditions require a human. Keep current state in a Markdown status file and append each run to a log. Use scripts for complex fetching, server startup, evaluation, and end-to-end tests.

  • Make verification a hard gate. For a scoped change, run setup/implement → verify → simplify/PR; do not enter the last phase unless verification passes. Give every agent node an explicit model and output schema, then build the next prompt from the prior node’s structured output.

  • Turn traces into an eval factory. Load the eval-engineering skill. Use: Use the eval-engineering skill, the traces from {LangSmith project}, and the {current repository} to help me create an eval Task for {agent}. Review the generated world-spec skill, validate it in a new thread, iterate until reliable, then ask for 10 new task specs from recent traces and instantiate them. Run tasks with real agents and multiple model tiers to expose leaky environments and reward hacks; keep human review for domain alignment and difficulty calibration.

  • Protect the prompt cache. Pick the model and effort level at session start. Addy Osmani says switching later forces a full uncached reread because the KV cache is tied to model weights; effort level and fast mode have the same behavior. Switch only in the first few turns if you must.

📡 WHAT SHIPPED

  • T3 Code — 380+ changes. Theo’s release adds in-app PR reviews, npx t3 triage, Mac npx t3 connect, a 93.8%+ improvement in long-thread rendering, an 80%+ reduction in thread data transferred and stored, one-click VS Code-over-SSH projects, and an overhauled terminal. It also improves Codex/Claude/OpenCode skill discovery and surfaces Claude compaction recommendations plus Codex MCP/ComputerUse permission requests. Nightly builds expose the features before stable, with Theo’s caveat that they are “mostly” done.

  • OpenWiki 0.4.0 — evidence-backed memory. It records each factual claim with supporting code and an evidence version; changed evidence flags the claim stale, which persists until re-verification. Staleness checking runs deterministically before the agent and unresolved claims stay flagged. In the article’s own replay, stale claims fell from 80 to 9 and hallucinated claims from 15 to 0; upgrade with npm install -g openwiki@latest and openwiki --init.

  • Rails’ lemans — open-source agent eval harness. The CLI-first harness supports Daytona sandboxes and a local Docker backend. It hides verification_test.rb and restores test/, bin/, and config/environments/test.rb before grading, keeping the agent from changing the graded surfaces. Its new-model report is a useful task-specific comparison: Terra scored 49/63 at a 182-second median; open-weight Qwen 3.8-27B scored 48/63 but took 27 minutes and had 7.9% Rails API recall; Sonnet 5 scored 44/63 despite higher API recall than Opus 4.8.

  • Event-triggered ChatGPT Work tasks. Plus and Pro users can now run tasks when GitHub, Slack, or Gmail changes rather than only on a fixed schedule; the Free rollout supports up to three scheduled tasks, and tasks can be shared for customization.

  • ChatGPT Sites — useful but still a demo. Riley Brown used @sites in ChatGPT Work to generate a hosted app with a database, authentication, storage, and custom-domain support; his prompt included team sign-in, video storage, and an API-backed skill. The run took 25 minutes 8 seconds, after which he used browser annotations to request UI fixes. He says it had not yet been sent to his team, and the video was OpenAI-sponsored; use environment variables rather than pasting API keys.

🎬 GO DEEPER

  • AI Jason — “I don’t prompt agents anymore…” Watch the concrete design: deterministic heuristics filter bad designs, parallel screenshot agents evaluate the survivors against user requests, shared schemas standardize outputs, and a main agent ranks the report; his code-shipping workflow then uses dynamic workflow with structured handoffs.
  • DHH — “Is Linux the perfect operating system?” The crash-to-PR segment is a useful risk boundary: diagnose → report → permissioned GitHub submission → maintainer-agent PR. He then shows a low-criticality library being patched, released, and tagged as 0.31, while explicitly saying he would not automate everything.
  • Study the guardrails in lemans and OpenWiki. One isolates verification so evals are harder to game; the other makes project memory stale when its evidence changes. Both are better starting points than adding another prompt or memory layer.

Editorial take: Reliable coding-agent leverage is becoming an operating loop—explicit state, a separate verifier, and bounded permissions—not a more elaborate prompt.

Coding Agents Are Moving From Prompts to Control Graphs
Summary
Coverage start
2 days ago
Coverage end
1 day ago
Frequency
Daily
Published
18 hours ago
Reading time
4 min
Research time
3 hrs 57 min
Documents scanned
137
Documents used
9
Citations
24
Sources monitored
109 / 110
Insights
Skipped contexts
Source details
Source Docs Insights Status
Lukas Möller 0 0
Jediah Katz 1 0
Aman Karmani 0 0
Jacob Jackson 0 0
Cursor Blog | RSS Feed 0 0
Nicholas Moy 0 0
Mike Krieger 0 0
Sualeh Asif 0 0
Michael Truell 0 0
Google Antigravity 2 1
Aman Sanger 0 0
cat 2 1
Mark Chen 0 0
Greg Brockman 10 3
Tongzhou Wang 0 0
fouad 0 0
Calvin French-Owen 0 0
Hanson Wang 0 0
Ed Bayes 0 0
Alexander Embiricos 0 0
Tibo 9 1
Romain Huet 4 1
DHH 36 1
Jane Street Blog 0 0
Miguel Grinberg's Blog: AI 0 0
xxchan's Blog 0 0
<antirez> 0 0
Brendan Long 0 0
The Pragmatic Engineer 0 0
David Heinemeier Hansson 0 0
Armin Ronacher ⇌ 3 0
Mitchell Hashimoto 0 0
Armin Ronacher's Thoughts and Writings 0 0
Peter Steinberger 0 0
Theo - t3.gg 16 5
Sourcegraph 0 0
Anthropic 0 0
Cursor 0 0
LangChain 0 0
Anthropic 0 0
LangChain Blog 0 0
LangChain 12 5
Cursor 0 0
Riley Brown 1 1
Riley Brown 1 1
Jason Zhou 3 1
Boris Cherny 2 1
Mckay Wrigley 0 0
geoff 6 4
Peter Steinberger 🦞 2 0
AI Jason 1 1
Alex Albert 0 0
Latent.Space 0 0
Logan Kilpatrick 0 0
Fireship 0 0
Fireship 0 0
Kent C. Dodds 🐨 12 3
Practical AI 0 0
Practical AI Clips 0 0
Stories by Steve Yegge on Medium 0 0
Kent C. Dodds Blog 0 0
ThePrimeTime 0 0
Theo - t3․gg 1 1
ThePrimeagen 4 1
Ben Tossell 1 0
swyx 0 0
AI For Developers 0 0
Geoffrey Huntley 0 0
Addy Osmani 2 1
Andrej Karpathy 0 0
Simon Willison 0 0
Matthew Berman 0 0
Changelog 0 0
Simon Willison’s Newsletter 0 0
Agentic Coding Newsletter 0 0
Latent Space 1 1
Simon Willison's Weblog 1 0
Elevate 0 0
Lukas Möller 0 0
Jediah Katz 0 0
Sualeh Asif 0 0
Mike Krieger 0 0
Michael Truell 0 0
Cat Wu 0 0
Kevin Hou 0 0
Aman Sanger 0 0
Nicholas Moy 0 0
Andrey Mishchenko 0 0
Jerry Tworek 0 0
Romain Huet 0 0
Thibault Sottiaux 0 0
Alexander Embiricos 0 0
xxchan 0 0
Salvatore Sanfilippo 0 0
Armin Ronacher 0 0
David Heinemeier Hansson (DHH) 1 1
Alex Albert 0 0
Logan Kilpatrick 0 0
Shawn "swyx" Wang 0 0
Jason Zhou 0 0
Riley Brown 1 1
McKay Wrigley 0 0
Boris Cherny 0 0
Ben Tossell 0 0
Geoffrey Huntley 0 0
Peter Steinberger 0 0
Addy Osmani 0 0
Simon Willison 1 1
Andrej Karpathy 1 1
Harrison Chase 0 0