We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
🔥 TOP SIGNAL
Build the gate before scaling the agent. Addy Osmani says most teams can go surprisingly far with stock Claude Code or Codex, multiple sessions, good SPECs, constraints, and explicit human-involvement criteria; a factory earns its keep when work becomes repeatable and event-driven across GitHub, Slack, or Linear queues in isolated environments.
The design principle is relocation, not removal: humans still choose the problem, architecture, quality bar, trusted verification signals, and when the evidence is sufficient to ship, while deterministic checks move earlier and run continuously.
⚡ TRY THIS
Use a bounded issue-to-draft-PR contract. Tell the agent to read GitHub issue #123 and the repository instructions; implement only the acceptance criteria; leave authentication, billing, migrations, and existing test assertions alone; work in a branch; run
npm run lint,npm test, andnpm run build; stop if a required check cannot run; then open a draft PR listing checks, remaining risks, and human decisions. Do not merge.Turn labels into the control plane. For incoming issues, use four states:
ready-to-implement,ready-to-spec,needs-info, andwait-to-implement. Only let sessions claim work marked ready; the label becomes the queue, the lock, and a parking place for work that is not rejected permanently.Budget verification like performance. Run fast checks such as linting and type checking early; reserve mutation, browser, security, and the full test suite for the draft-PR boundary so the development loop stays fast. Osmani says verification, retries, browser checks, and human review can make a task take 2–4× longer; track cost per merged PR and code shelf life, and pair each run status with per-stage timing—his sample quick-finder run took 7 minutes, while a favorites feature took 56 minutes after two rejections and a human decision.
Persist the context your parallel sessions create. Osmani warns that five or ten concurrent sessions create cold mental models; ask agents to save their trajectory and lessons to a local or repository file instead of leaving the reasoning in chat history. A complementary pattern from Armin Ronacher: ask the agent to make the OpenAPI spec “agent discoverable”—returning the relevant spec when it summarizes a task—and he reports the agent wired an embedding model on Cloudflare five minutes later.
📡 WHAT SHIPPED
Codex crossed 20M active users. Tibo reports 20M active users and announced a banked reset for every Codex and ChatGPT Work user. A separate rate-limit update says some users have had worse cache hit rates than in prior stable weeks, which may explain faster usage drain; OpenAI is investigating.
GPT-5.6 Sol got a temporary price cut. OpenAI says API and credit pricing will drop by more than 20% for the next three months.
Mobile session control is converging. Claude Code can now start a session from a phone: machines running
claude remote-controlappear as device cards in the Code tab, where the user taps a machine and chooses a directory. Antigravity’s Remote Control exposes active sessions through supported browsers and iOS/Android, rolling out to all users beginning with Ultra subscribers. Ben Tossell had identified the absence of mobile-created Claude sessions as a reason users could move to Codex.Simon Willison’s CLI stack caught up with tool-using models.
llm 0.32.1fixes fresh installs by pinningopenai<3after the OpenAI Python library droppedhttpx; the coming 0.33 release will switch tohttpx2.llm-openrouter 0.7adds compatibility with LLM 0.32, OpenRouter’s Responses API, and server-sideShell,WebFetch, andWebSearchtools enabled with options such as-T WebSearch.Kody Exchange launched an agent-interoperability surface. Kent C. Dodds says it replaces copy-pasting between agents by letting them connect directly, and it is free to try without an account. The positioning matches Ali Spittel’s formulation—“I want to use my agent to use your thing”—which Dodds calls a major part of Kody’s appeal.
LangChain Academy Tutors puts instruction inside the coding-agent loop. Its tutors use skills to teach concepts, ask questions, run quizzes, and give feedback, with customizable teaching style; the project links to the
lca-tutorsrepository.
🎬 GO DEEPER
▶️ Peter Steinberger — “No Doors for Agents”. Steinberger’s talk supplies the conceptual frame for the product shifts above: the event recap attributes to him, “The text box is AI’s radio-on-TV phase.” Read that alongside mobile session control and agent-to-agent surfaces.
Study Addy Osmani’s Factory reference repo, demo app, and workshop. This is the implementation path behind the queue, verification, and human-gate patterns; Osmani presents it as a reference setup rather than a claim that every team needs a factory.
Study
llm-openrouter 0.7. The interesting bit is not another model wrapper but the small, explicit tool surface—Responses API plus shell and web primitives—that lets a CLI agent use routed models without hiding the execution boundary.
Editorial take: The coding-agent frontier is becoming a supervised operating loop—queue work, preserve context, spend a verification budget, and only then widen autonomy; cheaper models and mobile controls make that loop easier to run, not safer to skip.
Transcript unavailable. The supplied bundle contains only a single line of YouTube page footer navigation (About, Press, Terms, etc.) and no talk captions, timestamps, or descriptive transcript text. Therefore no exact timestamped excerpt about agent interfaces, coding agents, or agent infrastructure can be extracted from this source.
Addy Osmani (firsthand; runs agentic workflows on production client apps with real auth/payments and on open-source projects) shares his software-factory playbook:
When a factory is worth it: "You can get surprisingly far with your stock coding harness" — Claude Code or Codex, multiple sessions, SPECs with verification baked in, constraints, and batches of GitHub issues with human-involvement criteria. A factory earns its keep only when work must be repeatable and event-driven (Slack/GitHub Issues/Linear queues) in isolated cloud environments with explicit human babysitting .
Minimal factory prompt (his example):
Read GitHub issue #123 and the repository instructions before changing code. Implement only the stated acceptance criteria. Do not modify authentication, billing, migrations, or existing test assertions. Work in a branch and keep the diff reviewable. Run npm run lint, npm test, and npm run build. If a required check cannot run, stop and explain why. Open a draft pull request with the checks you ran, the remaining risks, and any decision a human still needs to make. Do not merge.
Core factory primitives: steering (human redirects mid-run), notifications (blocked because requirement ambiguous, task risky, or human input needed), and handoff (move task/state/context; good handoffs record what happened, what's left, and why the handoff is needed) . The human can shape work early, steer during implementation, or stop it shipping .
Triage pattern (Warp): label every incoming issue as ready-to-implement / ready-to-spec / needs-info / wait-to-implement; the label is the queue, the lock, and a place to park work without permanently saying no — sessions only pick up what's marked ready .
Verification philosophy: push quality checks as early and continuously as possible — type systems, automated tests, mutation testing, security scanners, linting for architecture rules; more checks ≠ quality, tune for signal-to-noise . Budget like a performance budget: fast checks (lint, type checking) early; the full suite (mutation, browser, security) closer to PR time; don't slow the dev loop .
Costs and metrics: individual tasks take 2–4x longer once verification, retries, browser checks, and human review are included ; useful metrics are cost per merged PR and "code shelf life" as comprehension-debt measures . In his 82-minute sample factory run, the quick finder feature took 7 minutes, while favorites took 56 minutes (2 rejections + a human decision) — same factory, so pair run taxonomy with per-stage timing .
Run outcomes: Vercel marks every run success / flawed / blocked / manual; only "success" ships . Flawed = wrong thing implemented or missing context; blocked = missing credential; manual = trust boundary the factory may not cross . A manual run isn't done when the factory stops, but when the human knows what to do next .
Pitfalls to design around: agents can game green tests by changing the test or the logic — green doesn't mean intent was followed ; his example of an agent silently dropping a wanted auth provider because the UI had room for three . Treat GitHub issues/Slack as untrusted input (supply-chain attack surface); Vercel runs agents in isolated sandboxes holding only the secrets a task needs . Parallel sessions create comprehension debt — he once pasted a dark-mode prompt into the wrong project's session ; mitigation is asking agents to persist their trajectory/lessons to a repo file and reviewing only where automated back-pressure weakens or consequences become subjective .
Human judgment relocates, not disappears: someone still chooses the problem, architecture, quality bar, which verification signals to trust, and when evidence is sufficient to ship — "the agent wrote it" doesn't cut it .
Tooling landscape: buy-vs-build — Factory, Warp, and HumanLayer are all working on commercial software factories . He published an open reference implementation at https://github.com/addyosmani/factory, plus a demo app (https://github.com/addyosmani/factory-demo/) and a step-by-step workshop (in ADVICE.md) .
Simon Willison shipped LLM 0.32.1, his command-line tool for accessing LLMs, on 21 August 2026 . Fresh installs had broken because the OpenAI Python library dropped its httpx dependency, which LLM only pulled in transitively; this release pins openai<3, and the pending 0.33 release will switch from httpx to httpx2. Practical takeaway: developers doing fresh installs should use 0.32.1 (or pin openai<3) until 0.33 lands . The post's recent-articles list also includes 'Qwen 3.8 27B is excellent, but it defaults to wildly overthinking things' and 'Conceptual integrity and counting lines of code', both potentially relevant to coding-agent model choice and workflow design .
MongoDB announced at #MongoDBlocal Build Fest an Atlas Managed MCP Server for Agents and native Atlas access inside Claude Code, ChatGPT, Codex, Grok Build, Devin AI, and Cursor, designed to let developers stay in flow and ship production AI . Also announced: Automated Embeddings in MongoDB Atlas, VoyageAI's voyage-code-4, GA'd Embedding & Reranking API, and Vector Search for Stream Processing — reducing setup and workarounds . swyx highlighted this as a huge step up from last year's Build Fest, noting SF builders rediscovering MongoDB in the AI engineering era . Official post: https://mongodb.social/6017B1isMS.
@swyx recommends setting your {codex | claude | gemini | devin} automations to autonomously research how to improve SEO/AEO every week, calling it "free, should-be-commoditizing-but-weirdly-untapped alpha" . He is continuing a "Kill My SaaS" series: another SaaS is targeted and results of "Kill My SaaS 1" are promised next week; the post links back to the SEO/AEO automation tip .
Matt Webb used ChatGPT as a patient interactive tutor to learn quaternions — not to write code — for his app Galactic Compass 2 (after v1.0, for rotation work), and says outsourcing thinking to AI pushed him to learn more rather than stopping learning. Firsthand account .
Peter Steinberger (@steipete, Creator of OpenClaw, OpenAI) spoke at the Agentic AI Summit 2026 (Aug 1–2, UC Berkeley; ~5,000 in person, ~100,000 online) and shared his talk "No Doors for Agents": https://www.youtube.com/watch?v=W3ha2lLyLhc. Quotes below come from Dawn Song's (@dawnsongtweets) secondhand event recap; Steinberger's tweet is firsthand confirmation of his talk and his own quote.
- Michele Catasta (Replit President & Head of AI): stop treating evaluation as the last check before shipping — think of it as an engine that helps you ship a better agent every single day .
- Alex Graveley (co-creator of GitHub Copilot): "The bottleneck becomes your attention as an agent-using engineer… We're moving from seeing the code to seeing the entire business" .
- Jonathan Cohen (Nvidia VP of Applied Research): "An agent isn't just an LLM — it's an LLM surrounded by what I call infrastructure... another word for that is computer science" .
- Andrew Ng: "There will be no AI job apocalypse... we just can't find enough skilled AI engineers" .
- Ryan Lopopolo (ex-OpenAI Dark Factory lead, now Agentic Google Cloud Platform): "We are in a capability overhang—models are far more capable than they're able to side-effect into the world today" .
- Steinberger's own quote: "The text box is AI's radio-on-TV phase…. Every new medium starts by imitating the old one" .
- Jared Palmer (Apr 2024): even 10x better reasoning won't make agents real until cost and reliability are solved — running frontier models in a loop is "comical" at current prices, requiring middleware for task-appropriate model sizing, queue/batching, and state/file/memory passing; provider error rates are "abysmal", so agent loops "effectively rolling the dice again and again" need near-100% reliability .
- ThePrimeagen (Aug 2026) calls this "still relevant": intelligence has increased significantly but "the price is still very absurd". His contrarian take: "10x faster and 10x cheaper and dumber than 5.6 sol is a sweet spot for a literal billion people" .
- In a reply, ThePrimeagen says he "wont even talk about reliability as Claude is competing with Github" .
Thomas Ptacek (in "Stop Making TUIs") argues developers should build real native user interfaces even for the smallest personal tools, because coding agents have reduced the cost of a usable GUI "to almost nothing" — "Go build a native UI" . Simon Willison confirms from firsthand experience: his vibe-coded SwiftUI macOS menu bar apps for bandwidth and GPU monitoring, built March 2026, are still in daily use, and he says he's "running out of excuses" not to apply this to other projects . Essay: https://sockpuppet.org/blog/2026/08/20/stop-making-tuis/
@bentossell (builder/investor in dev tools; not a hands-on coder) argues that Claude not supporting creation of local sessions from mobile is "gifting users to codex" — i.e., OpenAI's Codex is picking up users because of Claude Code's missing mobile workflow support . He re-emphasized the point by linking his original post to a @claudedevs post, suggesting the issue is being discussed in the Claude Devs community . This is an opinion/observation, not first-hand engineering data: the actionable takeaway is that mobile-initiated agent sessions are a competitive differentiator, and Codex currently has that edge.
Simon Willison released llm-openrouter 0.7, an LLM plugin for models hosted by OpenRouter . It is now compatible with LLM 0.32, which works much better with reasoning LLMs available through OpenRouter . Models now use OpenRouter's implementation of the Responses API . Three new server-side tools were added — Shell, WebFetch, and WebSearch — enabled with options like -T WebSearch. Posted 21st August 2026 .
@bentossell: Claude's lack of support for creating local sessions from mobile appears to be driving users to Codex .
Kent C. Dodds demonstrates a self-expiring Dropbox dump system he built — /Public/delete-me/{1-day,7-days,31-days} retention folders (dropbox-delete-me) — with screenshots of a Grok chat titled 'Dropbox delete-me sweep' discussing it . He calls 'doing stuff like this' 'too easy' , and frames the lesson: 'If software you use doesn't have a feature you want, you can just build it yourself' . No prompts or code are shared, just the result and chat UI.
Kent C. Dodds (@kentcdodds) says agent interoperability is central to Kody (@kodykoala), the coding agent he promotes: "This is a big part of what makes [@kodykoala] so special!" in reply to Ali Spittel's (@ASpittel) post, "i really don't want to use your agent, i want to use my agent to use your thing" . The endorsed pattern — users want their own primary agent to drive third-party tools/agents rather than adopt a new agent per tool — is a firsthand product-positioning signal from a prominent practitioner, though it gives no workflow specifics.
@jasonzhou1993 promoted treg_ai, an open-source tool that connects Claude/Codex to source influencers, claiming he sourced 1000+ influencers for ~$0.025 . The repo is at https://github.com/superdesigndev/treg.
- Kent C. Dodds (@kentcdodds) says he'll show how he turned his products into "self-healing software" using Cursor automations .
- Upcoming joint session with Sentry (@sentry, with @sergical): Kent will cover how he set up Cursor AI automations with Sentry to fix "all the frustrations he had with personal assistants," and built kody.codes (http://kody.codes) as a result .
- Event: "Agentic Loops with Kent" — register at https://luma.com/agentic-loops-with-kent.
- Timeless pattern: agentic loops combining Cursor automations with error-monitoring (Sentry) to create self-healing products; firsthand account from Kent.
Kent C. Dodds shared a Dropbox-based auto-expiring dump system: a Public/delete-me folder with 1-day, 7-days, and 31-days retention folders, described in a Grok chat named "Dropbox delete-me sweep" where the AI's response called it a "self-expiring Dropbox dump system" with the paths /Public/delete-me/{1-day,7-days,31-days} and project @kentcdodds/dropbox-delete-me. He framed doing "stuff like this" as "too easy" under his #KodyCodes AI-coding workflow . Firsthand post from a prominent developer/educator; the images show the Finder layout and the Grok conversation, so the agent's exact role in building the system (vs. annotating it) isn't stated in the text.
Reported by @mark_k and reshared by @steipete: Linus Torvalds fixed a Linux kernel GPU bug with substantial AI help. The bug caused part of Intel Xe GPU compression metadata storage to be incorrectly exposed as usable VRAM, resulting in corrupted page tables and black screens; the eventual fix was a one-liner changing round_up() to round_down(). Finding it was the hard part: 24 debugging patches and 18 kernel boots, with AI doing much of the grunt work by repeatedly adding debug code and analyzing results as Torvalds narrowed down the problem . The AI repeatedly told him the problem was "impossible and unsolvable" and suggested giving up; Torvalds kept pushing until they found the bug, then let the AI write the commit message . @steipete shared it with the caption "dropping new skill brb" .
Geoffrey Huntley (@GeoffreyHuntley) describes AI as 'a time compression device, a fuzzer for ideas' that enables a 'be wrong quickly, be wrong cheaply' approach to product development, and says his output over the last two years exceeds what he'd have achieved in an entire human-lifetime wall clock . He reports shifting from days of upfront deliberation on interfaces/design details to letting details 'fall out/are discovered through iteration' . His main caveat is validation: he built an almost 1:1 reimplementation of a well-known devtools product that he suspects is ready to market, but the 'load bearing responsibility to customers' is verifying it works and having a toolchain to rapidly respond to and fix defects in a codebase created in a week with 'near zero understanding' of its intricacies . He frames this as a 'software factory' and the new norm for product building, with the enabling tooling 'lacking yet somewhat already exists in the right places,' pointing to AntithesisHQ's verification work as relevant .
Kent C. Dodds announced his newest product, Kody Exchange (kody.exchange): a tool to connect your AI agent directly to someone else's agent so they can "hash it out," replacing copy-pasting between AI agents . It's marketed as safe, secure, and efficient, free to try with no account required , and is listed on Product Hunt, where Dodds asked for upvotes . Firsthand announcement from the creator (a well-known developer educator); no workflow or configuration details provided.
Human judgment doesn't leave the software factory. It relocates.
A software factory is a repeatable loop around software work. If you’re building a software factory, code good enough to ship still needs human taste and ownership. We’ll discuss this including whether you *need* a factory just yet.**
If so:
You’ll likely need humans in the loop upfront for deciding on product intent, system design (if you care) and your quality bar.
Do review code (lights-on factory) but be intentional with where it’s needed the most. I’ve found you want to watch out for where automated back-pressure breaks. Or where maintainability trade-offs need to be made.
Aim for quality checks to happen as early and continuously as possible. Not all of them have to, but this includes type systems, automated tests, mutation testing, security scanners and linting for architecture rules.
Number of checks != quality. You’ll likely need to experiment with what checks give you the best signal to noise ratio. Be ready to tighten or relax your constraints deliberately.
You want to build your factory so some aspects of human taste get encoded in the environment, the agent gives you evidence of its work being right and where a human still “owns” what ships to production.

Your agents write the code. Your gate decides if it ships. AI agents are writing more of my code, faster than ever - but fast isn’t the same as shippable. So I let a coding agent build an app, then put it through SonarQube. Every commit gets the same deterministic check: deep cross-file analysis, a clear map of where the risk actually lives, and a quality gate that holds every human and every agent to one bar. The screenshot? A PR that didn’t pass. That’s the gate doing its job. Try SonarQube → (https://fandf.co/4g7DP8r (opens in new tab)). Sponsored by Sonar.
Do you really need a software factory?
In my experience, you can get surprisingly far with your stock coding harness! i.e. Claude Code or Codex, multiple sessions, good SPECs with verification baked in and constraints. You can even throw a batch of GitHub issues at them with implementation and human-involvement criteria, but it’s when this system needs to be repeatable and event-driven that a factory is helpful.

So I started off by saying a software factory is a repeatable loop around software work. We can actually look at a prompt that demonstrates a very small factory loop here:
Read GitHub issue #123 and the repository instructions before changing code. Implement only the stated acceptance criteria. Do not modify authentication, billing, migrations, or existing test assertions. Work in a branch and keep the diff reviewable. Run npm run lint, npm test, and npm run build. If a required check cannot run, stop and explain why. Open a draft pull request with the checks you ran, the remaining risks, and any decision a human still needs to make. Do not merge.
A goal can keep this moving until the checks pass and we can poll GitHub issues for any specific labels or review open pull requests each morning. Branch protection could enforce a merge boundary and the human can stay in the loop by choosing what becomes ready, reviewing and making the final merge calls etc.
Add a software factory when you need an event-driven queue of work (e.g. Slack triggers, GitHub issues, Linear, a backlog) to run in an isolated cloud environment to handle triage, implementation and testing with some explicit human babysitting. Some end their loop with a monitor agent watching production and filing issues which triage again.
In my experience, the factory becomes useful when the hard part is making your different runs behave consistently, handing work off between agents and avoiding different sessions from claiming the same issue, preserving evidence and stopping production when human review is falling behind.
What solves this might sound a little boring. For example, Warp mention triaging (opens in new tab) every incoming issue into one of four states - ready-to-implement, ready-to-spec, needs-info, wait-to-implement - and the label is what fires the next agent.

This label does a few jobs in one go: it’s the queue, the lock and since a session only picks up what’s marked ready, it’s where a human can park stuff without saying no permanently.
Workflow wise, there are a few similarities and differences to just using Claude/Codex:
Steering: agent needs course-correction, you can give input and redirect it
Notifications: how the factory says its blocked. This can be because a requirement was ambiguous, it started something risky or it needs human input (steering)
Handoff: move the task, its state and context between the cloud factory/another agent/human reviewer. Good handoffs will keep track of what happened, whats left to be done and why the handoff is needed.
In a good factory, the human isn’t limited to just reviewing and approving the final diff at the very end. They can shape the work early on, steer it during implementation, get it through a handoff or stop it shipping to production.
Verification is where a responsible factory spends a lot of its time. We’ll cover this more later.

If you decide you do need a software factory, building it isn’t the only option. Standing up the infra to scale a factory can be a lot of work and you may want to consider buying vs. building. Factory (opens in new tab), Warp (opens in new tab) and HumanLayer (opens in new tab) are all working on this.
What my day looks like now
My day-to-day experience of software development has changed a lot over the past year. I’ve been talking about increasingly doing a lot of parallel work with agents, moving towards having a lights-on software factory. And a lot of people have been asking me, like, what do these things actually mean? What are you building? What are the kinds of projects that you’re using these things on? It’s a lot of this:

So on a very average day, I have a simpler lights-on software factory. I can have tasks that are running in the cloud. Half of these tasks might be working on production client applications with smaller companies that I’m working with. They’re going to have real users. They’re going to have real authentication, payments, subscriptions, real beefy risks that you need to be careful with. You can’t just say, oh, agent, just go and do this stuff without having tests and constraints and quality checks in place.
I could work on my open source projects. I could be building out companion sites for my books. I could be working on tools. I could be building apps of my own. And these are all very, very different kinds of applications that I’m working on. And sometimes all they have in common is the tool that I’m using to work on them, right? Maybe I’m working on a migration. Others, I might be doing actual beefy feature work. And the blast radius of the work might also be very, very different.
So as you begin to think about getting to a place where we’re increasingly doing a lot of parallel work, we’re trying to improve velocity, we’re trying to improve productivity, and we’re trying to improve autonomy, which means getting the system to a place where we trust it more, you do have to think about what are the places that absolutely require human code review, human input.
And a lot of that is going to be required up front, right? When you’re defining your specification, your requirements, what is the design of the product going to look like? What is the intent of the product going to look like? And then how are you verifying that the agents have actually gotten the work done right? How are you verifying that they haven’t broken the existing system that has been in place? How are you making sure that it’s meeting your quality bar?
And so generating code is not necessarily the part that you need to worry about the most. Given enough context, agents can write the implementation and run the tests and inspect failure and revise code for us. We need to get to a place where we feel like there is enough of human taste encoded in the environment that we can trust what is being built, so that our human attention can be focused on the places where it’s needed most.
Now, there is pushback from folks saying, hey, well, I don’t buy that you can just automate away a lot of this stuff. It’s not to say that we’re automating away all of it, right? But given the volume of code that’s being generated, I don’t think that it’s realistic for humans to be reading all of it, especially when we’re not building rockets a lot of the time, right? We’re building UI, we’re building full stack applications.
Our judgment, our taste is best focused on the places where it’s needed the most. Like, what are the riskiest parts of the systems? Where do we need to apply human taste? And that can be in the front end. That can be in how the system works. It doesn’t have to be 100% of it.
My cognitive bandwidth does not scale with the agents
The reality is, yes, we can now fire up dozens, hundreds, thousands of agents in parallel, but your own cognitive bandwidth does not scale in the same way. This can feed into cognitive or comprehension debt which I’ve talked about before.

If you remember back to just five, ten years ago, there was a lot of discussion in the engineering community about context switching and the cost of it. We would talk about how people hated when a colleague or someone would walk up to your desk when you were in the middle of a task. It would then take you so long to get back into your flow state because you had to catch back up in terms of like, where was I? What was I doing? Even if you had a little bit of residue there, it still took you time.
We’re now context switching even more than we did before. On any given day, if I’m working outside of a software factory, I can be working on five or ten different projects with agents at a single time, or five or ten different features on a single project at a time. I can have five or ten different sessions, you can effectively say.
That means that I have to be able to stay on top of at least a few of those. It is possible that I’m going to be able to increase how much autonomy I give some tasks if I have trust that I’ve defined the task well enough, I’ve defined the outcome, how it’s going to verify that it’s done well enough. But then there are going to be tasks where maybe I don’t necessarily feel that way and there’s more risk involved or more nuance. I’m going to have to pay attention.
Consider optimising the software factory for your reviewer. Given every one of those approaches still routes its output to one person’s attention, you should ask how much cheaper the factory is making the decisions you still have to make.
A wrong-project mistake
I remember when I’ve been working on multiple parallel projects with my agents, and there have been times when I’ve accidentally done things like, maybe I was working on a web app where I wanted to add in a dark mode, and so I had in my head, okay, well, this is what the shape of this needs to look like. But I accidentally went to the session for a different project, and I started putting in that same prompt.
So I began implementing dark mode for something that absolutely didn’t need it. And so I can make that mistake. I don’t want my software factory making that kind of mistake.
You need to think about this really in terms of a system. You are effectively trying to encode a software engineering culture, a team culture, into a system so that it has those same kinds of behaviors, so that it has ownership that belongs somewhere, so that someone is still on the hook for what happens, and you’re being very explicit about how you think about those things.
When green is misleading
Even in these systems, you want to be very careful, right? Many of us have seen that when you have asked AI to help you pass a test, like we’re talking about a programming test, a unit test, it can change the unit test to satisfy that condition, or it can change the logic of the code to pass that condition. That doesn’t mean that it’s actually followed your intent in order to align both the functional behavior and what the test was supposed to be testing, right?

Just because a software factory is showing that everything is green doesn’t mean that it’s actually green, especially at the start when you’re setting these things up. You need to pay a lot of attention to make sure that your checks, your verifications, all of those are shaped the right way. They’re doing what you expect them to be doing. You don’t want them to be misleading.
You don’t want a situation where you had tests that said, hey, actually, I have gone and changed what authentication providers are supported. You asked me to add GitHub for example, as an authentication provider, but hey, my UI only had space for three, so I’ve gone and I’ve dropped one of the other ones. And hey, by the way, that happened to be one that your customers actually wanted. So you just need to be very explicit about how you want these systems to work.
Btw security is super important too and if your factory reads untrusted input like a GitHub issue/Slack message it might be adversarial and include problems like supply chain attacks. So some explorations into software factories, like Vercel (opens in new tab), run their agents in isolated sandboxes holding just the secrets a task needs. That way a compromised run can’t reach what the job doesn’t need. Your defense ends up being layered.
Which old projects deserve another life?
I also think that a big part of how we work these days is deciding what should exist. If you remember back to many years ago before AI, there were so many abandoned software engineering projects, so many abandoned weekend projects, personal projects where they just wouldn’t launch because we didn’t have the time to finish them. We didn’t have the bandwidth to prioritize getting them out the door because they just weren’t that important to us or we couldn’t find the time.
Now it’s fairly trivial for us to complete those projects, but the same human judgment question comes in. Do those projects deserve to exist? Should they be launched? Because you put them out into the world and even if it has just five users, maybe you have to maintain it. Maybe you have a quality bar now that you want to maintain.
I know that I’ve had so many GitHub projects from over the years where now that I have an agent, the first thing I do is get the thing building. Because, of course, you clone it and now it doesn’t build because all the dependencies have changed. Half the things are out of date or have security vulnerabilities all over them, so you have to update that.
Then you have to add tests if you didn’t have tests so that you know that behavior is at least going to be there if you’re upgrading the project in some way, or if you’re migrating it to a more modern language or framework or thing like that.
Then you start to ask yourself, well, maybe, a silly example, but maybe I used Twitter Bootstrap back in the day for this, but now everybody is using Tailwind and shadcn, so I have to re-implement the UI. And what you’ll notice is that suddenly this is taking you more time, right? Yes, the agent can get a lot of this done quicker, but you’re now having to factor in product sense and taste and all of these things.
You still question, well, who is this for? Does it have a market? Is it for myself? Is it for other people? If I’m putting it out into the world, is it still going to be as interesting given that now anybody can spin these things up as quickly?
So I think that human question of do these things deserve to exist? How do we factor in our taste and judgment? I feel like those things continue to be extremely important. That’s where that scarce resource of human attention still really comes in. Back in the day, we only had a finite number of hours in the day. We had meetings. We had to budget in time for design and coding and so on.
Now that we have agents to help us, I think that you have to really just be very explicit about where you’re spending your time and why.
What happened when I built a sample one
So I’m going to talk about the 82-minute factory run. People have been asking me for quite some time, you know, “How do I build a software factory?” Or, “I’m used to using Claude Code or Codex. How do I evolve my setup to using a software factory?”
So the first thing that I’ve been saying is, “You may be fine. Your work may actually be totally fine without needing a factory.” But I did want to give people a reference setup that they can check out. So what I put together is a repository called Factory (opens in new tab) that you can go and check out. I also put together a demo application (opens in new tab) and workshop (opens in new tab).
Now, for the last couple of years, my go-to demo application for a lot of things has been a movies app. I’m a big movies fan. I love watching movies. I watch movies all the time, and so I have a demo application, which really starts off as a very simple movies app. And what I want the factory to be able to do is go ahead and implement a number of features. There’s a few different features. I want a favorites feature. I want it to be able to maybe do search, and maybe also want a dark theme in there as well, those types of things.
So I have my factory go and begin working with these things. You can check out the implementation. One of the benefits of it was actually catching real problems. These problems may not have been things that I would have caught if I had just asked it to do a one-shot implementation.
Maybe around the 60-minute point, I was feeling like, “Wow, this is going unusually slow.” I asked my harness using the factory, “Why are things going slow?” It said, “This is actually totally fine. All the verifiers are still running.”
You might have expected individual tasks to take 10 minutes, 15 minutes, 20 minutes, but they can take two to four times as long once you begin to include verification, retries, browser checks, human review, any of those extra delays.
I do think that these can add up to better quality and better trust in the system. From a measurement perspective, you might look at metrics like cost per merged PR and code shelf life as comprehension debt metrics.
You also need to think about what is useful delay versus factory overhead. The verifiers, in my case, caught some real problems. A little bit of the time was maybe sunk into producing evidence that I wanted. Some of it was overhead in the factory running. I didn’t really spend any time optimizing it, but a factory that just runs a lot of checks that you’re not finding valuable does not mean it’s a high quality one.
You want to study how, for any repeated checks, are they irrelevant? Are they noisy? Are they actually making the system safer?
A verification budget
The way that I think about the budget for verification, this is basically what we’re talking about. We’re talking about a verification budget. I think about it in the same way as I’ve historically thought about performance budgets.

There are going to be certain kinds of checks that you can run early on in your software development lifecycle, and there are going to be some things that are so heavy, but they offer so much value that you will want to run them later on. There are some kinds of fast checks, linting, for example, type checking. These are relatively fast checks that you can run early on.
Our full suite of tests can be run closer to right before a draft PR is being put together or after that. That can include mutation testing, browser testing, security checks, anything like that.
I think that you don’t necessarily want to replace these with just summaries. You want real tests, but you just need to make sure that you’re budgeting for them in the right places because you don’t want to slow down your development loop. I certainly never want to slow down my development loop. Having a fast iteration loop is important to me, but I also want to still have those checks and balances.
When a run doesn’t ship
A lot of what I’ve written above concerns the checks.
In their software factory, Vercel marks (opens in new tab) every agent run as “success”, “flawed”, “blocked” or “manual” and only “success” ships to production. The rest re-enter the system. I’ve been thinking about runs in similar terms.

“Flawed” here means the wrong thing was implemented or maybe it didn’t have full context, so that has to be fixed. Blocked means the environment may have been missing a credential so you have to provide it. Manual is a boundary the factory may not be allowed to cross it yet.
Two of the three things here may have mechanical fixes and the last one is about trust.
While this is great what sorting doesn’t show you is cost. B
ack to my factory implementation with the TMDB app, the quick finder with no rejections took 7 minutes. Favorites, with two rejections and a human decision in the middle, took 56. Same factory. So I’d pair the taxonomy with per-stage timing, otherwise you know a run came back flawed without knowing what finding out cost you. The other thing I’d fix is the handoff at the boundary: my sample factory stopped issue the first issue and moved it to factory:needs-info, which was right, but I didn’t know where to put my answer. A manual run isn’t finished when the factory stops but when the human knows what to do next.
Autonomy is not a single setting
I wrote a couple of weeks ago an article about agentic autonomy (opens in new tab) and how to think about autonomy because autonomy is not going to be a single setting for every single project.
Verification buys you trust, and it buys the ability to grant more autonomy to your agents. So if, for example, I am working on a non-trivial change, but I have a number of checks in place, everything gets verified correctly, and maybe I’ve hand checked it myself. The next time I’m going to do a task like that in the same project, maybe I’ll feel comfortable giving the agent a little bit more autonomy.
That’s the thing that you think about when you’re building these software factories. Your verification is going to change with risk. Your goal is the best signal to noise ratio. You don’t just want to have some large checklist that you’re running.
The feature I had to relearn
There was a feature that I’ve been putting off on a day when I’ve been using multiple sessions with Claude, and I was working on a few different projects at a time, a few different features at a time per project. And so Claude had implemented the feature that I was working on. It looked like the tests were passing. I hadn’t put a lot of thought into verification, but the tests passed, and so I thought it worked. I merged it.
And so this was a favoriting feature. I thought that this was actually pretty good. I tried to check it out in the browser. It seemed like it was okay, but a couple of days later, I actually returned to the code because there were some tweaks that I thought I might make to this.
I didn’t want to just ask my agent to make the changes, because it was just a subtle way that it worked. You tap on the icon, and it would not show the right effect on tap, and so I wanted to just tweak it. I wanted to understand how it worked so I could guide my agent correctly.
I returned to the code, and I couldn’t explain to you how the feature worked. This repository was mine, right? I’d approved the change. I understood how a lot of it worked, a lot of the repo worked, but my understanding hadn’t kept up pace with all of the code that had been building up.
What I failed to absorb was how this feature that had been added actually worked, how the UI worked, how the effect on it worked. I had to redo this feature and actually go step-by-step, “How does this work? How can I understand it?”
What parallel work does to understanding
When you’re doing parallel work, it amplifies this overall problem, and it gets even more amplified when you’re doing it in a software factory. When you’re doing five or 10 sessions, they create much more than just a review volume problem. They create several mental models that can end up going pretty cold while you’re working elsewhere.
We’ve historically talked about the challenges with context switching, and as soon as chat compacts, you reject some approaches, you try out different things, you’re pairing with the agent, you’re going to have a difficult time remembering everything that happened in your session.
You can scroll up, and as compaction has been happening, you’re not going to have everything there, and you’re not going to be able to store it all in your head. Code often preserves a decision that was made, but not why the decision was made.
This is something that I think can be a useful learning for you, where it’s important, consider asking your agent to actually store information about its trajectory, or interesting lessons about how it approached a problem so that you can go back to it later.
This can or can’t be something that you decide to commit to a repo. You can keep it local if you want, you can share it with a team if you want, but that can be something that can then be consulted later on. Rather than you relying on it maybe being in a session, or you maybe remembering about it later.

P.S. - if agents are pushing to your main branch, they need the same quality bar you do. SonarQube gates every commit deterministically: one standard for humans and agents alike, on every PR. Try Sonar → (https://fandf.co/4g7DP8r (opens in new tab)) · Sponsored by Sonar.
Ownership doesn’t disappear
There is a broader principle underneath all of this.
The percentage of code physically typed by humans may fall dramatically. I don’t think human ownership needs to fall with it.
Someone still chooses the problem.
Someone still chooses the architecture.
Someone still sets the quality bar.
Someone decides which verification signals deserve trust.
Someone decides when the evidence is sufficient to ship.
And when the resulting system fails, “the agent wrote it” doesn’t cut it. This is why I don’t think the future of software engineering is best described as humans leaving the loop. Instead, human judgment is being relocated.
We should remove people from the parts of the loop where machines can produce stronger, faster, more deterministic signals. At the same time, we should concentrate people around the places where context, taste, risk, and long-term ownership matter most.
The best software factories will not be defined by how completely they eliminate human involvement.
They will be defined by how intelligently they place it.
Keep human judgment upstream on intent, system shape, and the quality bar. Review code where automated back-pressure becomes weak or the consequences become subjective. Push every deterministic signal as early and continuously into the loop as possible. Tighten and relax constraints deliberately as the system earns or loses trust.
A human still has to own what code ultimately ships. Code good enough to ship still starts there.

Addy Osmani (firsthand; runs agentic workflows on production client apps with real auth/payments and on open-source projects) shares his software-factory playbook:
When a factory is worth it: "You can get surprisingly far with your stock coding harness" — Claude Code or Codex, multiple sessions, SPECs with verification baked in, constraints, and batches of GitHub issues with human-involvement criteria. A factory earns its keep only when work must be repeatable and event-driven (Slack/GitHub Issues/Linear queues) in isolated cloud environments with explicit human babysitting .
Minimal factory prompt (his example):
Read GitHub issue #123 and the repository instructions before changing code. Implement only the stated acceptance criteria. Do not modify authentication, billing, migrations, or existing test assertions. Work in a branch and keep the diff reviewable. Run npm run lint, npm test, and npm run build. If a required check cannot run, stop and explain why. Open a draft pull request with the checks you ran, the remaining risks, and any decision a human still needs to make. Do not merge.
Core factory primitives: steering (human redirects mid-run), notifications (blocked because requirement ambiguous, task risky, or human input needed), and handoff (move task/state/context; good handoffs record what happened, what's left, and why the handoff is needed) . The human can shape work early, steer during implementation, or stop it shipping .
Triage pattern (Warp): label every incoming issue as ready-to-implement / ready-to-spec / needs-info / wait-to-implement; the label is the queue, the lock, and a place to park work without permanently saying no — sessions only pick up what's marked ready .
Verification philosophy: push quality checks as early and continuously as possible — type systems, automated tests, mutation testing, security scanners, linting for architecture rules; more checks ≠ quality, tune for signal-to-noise . Budget like a performance budget: fast checks (lint, type checking) early; the full suite (mutation, browser, security) closer to PR time; don't slow the dev loop .
Costs and metrics: individual tasks take 2–4x longer once verification, retries, browser checks, and human review are included ; useful metrics are cost per merged PR and "code shelf life" as comprehension-debt measures . In his 82-minute sample factory run, the quick finder feature took 7 minutes, while favorites took 56 minutes (2 rejections + a human decision) — same factory, so pair run taxonomy with per-stage timing .
Run outcomes: Vercel marks every run success / flawed / blocked / manual; only "success" ships . Flawed = wrong thing implemented or missing context; blocked = missing credential; manual = trust boundary the factory may not cross . A manual run isn't done when the factory stops, but when the human knows what to do next .
Pitfalls to design around: agents can game green tests by changing the test or the logic — green doesn't mean intent was followed ; his example of an agent silently dropping a wanted auth provider because the UI had room for three . Treat GitHub issues/Slack as untrusted input (supply-chain attack surface); Vercel runs agents in isolated sandboxes holding only the secrets a task needs . Parallel sessions create comprehension debt — he once pasted a dark-mode prompt into the wrong project's session ; mitigation is asking agents to persist their trajectory/lessons to a repo file and reviewing only where automated back-pressure weakens or consequences become subjective .
Human judgment relocates, not disappears: someone still chooses the problem, architecture, quality bar, which verification signals to trust, and when evidence is sufficient to ship — "the agent wrote it" doesn't cut it .
Tooling landscape: buy-vs-build — Factory, Warp, and HumanLayer are all working on commercial software factories . He published an open reference implementation at https://github.com/addyosmani/factory, plus a demo app (https://github.com/addyosmani/factory-demo/) and a step-by-step workshop (in ADVICE.md) .