Study session · 2026-10-23

Software Factories

What they are, what they are not, how one is built, what people argue about, and whether they pay.

HumanAgentMachine / CIGateArtifact (spec, test, doc)

These colors mean the same thing on every slide. Press N for speaker notes, ← → to move.

Agenda

Six parts, from definition to my own view

1 · DefineWhat it isand is not 2 · Blueprint11 stationsand their tech 3 · CasesStrongDM, Stripe,Spotify, OpenAI… 4 · DebatesDark or light?Who reviews? 5 · StackSandboxes, CI,harnesses 6 · My viewTacit knowledge,lanes, money SURVEY OF OTHERS OUR POSITION Parts 1–5 report what the field says, with sources on every slide. Part 6 is opinion, marked as such.
1

Define: what a software factory is, and what it is not

One definition, two births of the word, and four neighbours it gets confused with: Claude Code, Ralph loops, CI/CD and "dark" automation.

1 · Define · The one-slide definition

A software factory turns intent into verified software with a line of agent loops

Human sets intentwhat to build, why, limits Human accepts outcomeowns risk, approves evidence Specplan, scenarios,acceptance tests Queuesplit into tasks,schedule workers Agent loop · sandbox 1 Agent loop · sandbox 2 Agent loop · sandbox n Verifytests, CI, judges,hidden scenarios Gatemerge ruleby risk Ship & observeverified softwarein production FAIL → RETRY FEEDBACK: INCIDENTS, FAILED RUNS → SPEC Governancetoken budgets · agent identity with a human owner · permissions · delivery metrics

Osmani's short form: "an org chart made of loops". The agent is one part. Queue, sandboxes, verification, gates and feedback make it a factory.

1 · Define · History

The factory was born twice: 1968 to standardize human work, 2026 to run without it

Born once: make humans produce like a factory Born again: agents produce 1968Bemer coins"software factory";NATO, McIlroy:reusable parts 1969Hitachi SoftwareWorks: firstsoftware-only plant 1991Cusumano,Japan's SoftwareFactories: reuse,QA, standards 2004Microsoft SoftwareFactories: modelsand DSLs generate 2017–22Kessel Run, DoDDevSecOps: 29factories = CI/CD+ in-house teams 2026Jan Shapiro: "dark factory"Feb StrongDM manifestoJul AIEWF main-stage theme;Osmani, HumanLayer Problem solved: variance and reuse. The worker is a person. Problem: unattended output
1 · Define · Is / is not

A factory is the system around the agents: queue, checks, gates and feedback

A software factory is

  • Many agent loops running at once, fed by a queue
  • A line from intent to production, end to end
  • Machine verification as the main check on every change
  • Humans setting intent and owning outcomes and risk
  • A feedback loop from production back into specs and context

It is not

  • One smarter agent, a bigger prompt, or one long chat
  • A while true loop on its own
  • CI/CD with a chatbot added
  • "No humans" by definition: dark is one setting of it
  • Proof of quality: green tests can hide unreadable code

Test for any claimed factory: who decides a change is done, and what happens when that check is wrong?

1 · Define · vs Claude Code

Claude Code is one worker on the line; the factory is the plant around it

Software factory = all of this Intaketickets Specplan, tests ContextAGENTS.md Orchestr.task graph SandboxVM, devbox Harnessmodel+tools VerifyCI, judges Reviewmerge gate Shipcanary, flags Feedbackincidents Governance: cost, identity, permissions, metrics Claude Code / Codex: this one station

Spotify kept its Fleet Management pipeline (targeting, PRs, review, merge) and swapped only the transformation step for an agent, later Claude Code.

1 · Define · vs loop engineering

A Ralph loop repeats one station; a factory wires many loops to specs and gates

Ralph loop (Huntley, 2025-07) Software factory Human tunes prompt Agent runfresh context each time REPEAT PROMPT.md, specs/plan, git = state while :; do cat PROMPT.md | claude-code ; done Spec + taskqueue Loop A Loop B Loop n Verify againstscenarios Holdoutscenarios Merge gate Human ownsgate + intent FAILED RUN → NEW TASK
1 · Define · vs CI/CD and platforms

CI/CD automated the pipeline around coders; a factory puts agents in their seat

Claude Code sessionRalph loopCI/CD platformSoftware factory
Unit of workOne chat, one taskOne prompt, run again and againA commit or merge requestA ticket, through to a deployed change
Who writes codeAgent, human watchingAgent, unattendedHumansMany agents in parallel
Who decides "done"The human at the terminalThe loop's exit checkTests pass, a human approvesMachine checks plus a gate sized to risk
Where humans areEvery turnBetween runs, tuning the promptWriting and reviewing codeIntent, gates, accepting outcomes
What limits scaleOne person's attentionOne repo, one processHuman coding hoursHow fast changes can be verified

The new product is the check: specs, scenarios and verifiers decide what an unattended agent may ship.

1 · Define · Shapiro's Five Levels

Most company factories sit at Level 3: agents write code, humans still read diffs

COMPANY PLACEMENT = OUR READING OF THEIR POSTS L0 Manualyou write it all L1 AI internautocomplete, tasks L2 Junior buddypairing; ~90% of devs L3 Manageryou review the diffs L4 Product mgryou write specs,check outcomes L5 Dark factoryspecs in, code out;no human reads code Stripe MinionsRamp InspectUberCloudflareHumanLayer(after lights-off) Spotify HonkOpenAI harnessAWS Kiro CrewAirbnb migrationRalph loops StrongDMYegge's Gas TownCarlini C compiler "ALMOST EVERYONETOPS OUT HERE"
1 · Define · Light · Twilight · Dark

Light, twilight or dark is set per loop, by how cheaply its output can be checked

Light: humans read the code Twilight: agents call humans in Dark: no human reads code MORE HUMAN READINGLESS HUMAN READING HumanLayer (Horthy) Went lights-off July 2025; outages, then a hand rewrite. Heading: "Turning the lights back on" Osmani Keep humans on auth, billing, public APIs Mollick, "Twilight Factory" Agents do most of the work. A facilitator agent decides when to bring a person in: approval, missing expertise, new ideas. Says StrongDM-style minimal human involvement is wrong for most orgs. StrongDM "Code must not be written by humans." Humans don't review it either. Shapiro L5 "Dark factory", from FANUC's lights-out robot plant Osmani's rule: run a loop dark only if its check is cheap, hard to fake, and stable.
1 · Define · Why now

Long-running agents and cheap sandboxes arrived in 2025; PR volume followed

Models hold long tasks

METR: doable task length doubles ~every 7 months. OpenAI: single Codex runs of 6h+.

Sandboxes are cheap and fast

Stripe: a devbox in ~10 s. Ramp: full stack per agent on Modal.

Harnesses run headless

Claude Code SDK, Codex exec: a pipeline calls the agent like a build step.

1,300+

Stripe: minion-produced PRs merged per week

70%+

Uber: PRs attributed to local or cloud agents

~50%

Ramp: merged PRs started by its Inspect agent

~1M

OpenAI: lines in 5 months, none written by hand

2

Blueprint: the whole line, then each station

Eleven stations. For each: what it does, which technology runs it, one research finding, and what is still open.

2 · Blueprint · The whole line

A factory is nine stations in a line, plus a feedback loop and governance

HumanAgentMachine / CIGateArtifactFeedback loopCOLOR = WHO TYPICALLY RUNS THE STATIONWHAT TO BUILDBUILDCHECK AND SHIP01HUMANIntaketicketsSlack threadsprod alerts02ARTIFACTSpecrequirementsdesigntask list03ARTIFACTContextAGENTS.mddocs, MCPskills04MACHINEOrchestratetask graphloopsfan-out05MACHINESandboxVM / devboxworktreeservice fakes06AGENTHarnessmodel + toolsClaude CodeCodex, goose07MACHINEVerifytests, CILLM judgescenarios08GATEReviewmerge gatehuman or AIrisk tiers09MACHINEShipcanaryfeature flagstelemetry10Feedbackincidents, errors, failed runsproduction signalsnew ticketsfix the factory11Governunder every station: agent identity with a human owner · permissions · token budgets · delivery metrics
2 · Blueprint · Our reading of 14 cases

Higher levels pull humans out of review; at L5 they keep only intake and spec

IntakeSpecContextOrchestrateSandboxHarnessVerifyReviewShipFeedbackGovernL3human reviews diffs6 cases6/62/6n/c1/6n/c0/61/66/61/60/6n/cL4human writes specs5 cases5/55/5n/c0/5n/c0/50/52/50/52/5n/cL5no human reads code3 cases2/32/3n/c0/3n/c0/30/30/30/30/3n/chuman in most casesin somein nonen/c = not coded in the case swimlanes. Counts are our reading of each case write-up.
2 · Blueprint · Stations 01–02

Requests enter as tickets and leave as written specs the agent follows

IntakeSpecContextOrchestrateSandboxHarnessVerifyReviewShipFeedbackGovern
01 INTAKE: WHAT STARTS A RUN02 SPEC AND PLANSlack @botStripe, RampLinear ticketOpenAI SymphonyProd alertDatadog BitsFleet changeSpotify, UberTasksmall, clearRequirementsWHATDesign / planHOWTask listSTEPSTOOLSGitHub Spec Kit · AWS Kiro (EARS)HumanLayer ACE · StrongDM NLSpecHuman writes or reviews the spec;the agent implements from it.

What it does

Turns requests into small tasks, then writes what to build, and how, as files.

Key finding

Thoughtworks sorts tools into spec-first, spec-anchored and spec-as-source; heavy spec tools are overkill for small fixes.

Open question

How detailed? Too thin and agents guess; too thick and it is just slower code.

2 · Blueprint · Station 03

Context is a budget: a short map always, everything else on demand

IntakeSpecContextOrchestrateSandboxHarnessVerifyReviewShipFeedbackGovern
AGENTS.md~100-line map of the repoALWAYSdocs/ in the repodesign, decisions, kept fresh by lintWHEN RELEVANTMCP toolsStripe Toolshed ~500 · Uber 1,000+WHEN CALLEDSkillsinstructions + scripts · Uber 3,600+ON DEMANDCONTEXT WINDOW40%60%targetCompaction: summarize research into a file, then start a fresh window (ACE).

What it does

Gives the agent what a new hire would need, loaded only when relevant.

Key finding

OpenAI: give Codex "a map, not a 1,000-page instruction manual"; the docs folder is the source of truth.

Open question

Docs and AGENTS.md drift from the code, and nobody can cheaply tell which context is stale.

2 · Blueprint · Station 04

Orchestration runs many agents at once, but human attention does not scale

IntakeSpecContextOrchestrateSandboxHarnessVerifyReviewShipFeedbackGovern
LoopHuntley RalphCoordinatorGas Town + BeadsClaude Code teamsGraph runnerStripe BlueprintsStrongDM AttractorAgentsame prompt, freshcontext each turnspec + plan + gitMayorW1W2W3task graph in gitlintimplementtestfix CIcode owns the flow;agents are boxed nodesNo orchestrator at all: 16 agents claim tasks with lock files in git (Carlini).

What it does

Splits work into a task graph and keeps agents running on it.

Key finding

Osmani, "The Orchestration Tax": adding agents is easy; human attention does not parallelize, so it becomes the bottleneck.

Open question

How much control flow to give the model versus fixing it in code is still taste, not evidence.

2 · Blueprint · Station 05

Each agent gets its own disposable dev environment, walled off from production

IntakeSpecContextOrchestrateSandboxHarnessVerifyReviewShipFeedbackGovern
Sandbox, one per agentAgentrepo branchPostgres, Redis,browserDigital twins of Okta, Slack, Jirabehavior clones of outside services (StrongDM)full permissions, no prompts inside (Stripe)ProductionSecretsOpen internetblocked by defaultCHEAP, LOCALSTRONGER, MORE REALISTICgit worktreeConductordevbox, ~10 sStripefull-stack VMRamp on ModalmicroVMFirecracker

What it does

Gives each agent a safe copy of the dev environment, plus fakes of outside services.

Key finding

Stripe names the key trait as "the absence of a supervisory human": isolation is what makes that safe.

Open question

Keeping sandboxes realistic (data, services, secrets) without making them dangerous or costly.

2 · Blueprint · Station 06

The worker is a model in a loop with tools, and the tools shape its skill

IntakeSpecContextOrchestrateSandboxHarnessVerifyReviewShipFeedbackGovern
task +contextModelpicks next stepTOOLSread, searchedit filesrun commandsrun testscallresultdone?diff + evidenceClaude Code / Agent SDK · Codex CLI · goose (forked by Stripe)OpenHands · mini-swe-agent: about 100 lines, bash only

What it does

The coding agent itself: a model that reads, edits, runs and tests code in a loop.

Key finding

SWE-agent (Princeton): designing the agent's commands for search, view and edit raised results without changing the model.

Open question

Training rewards tests passing; "there is no penalty for eroding codebase maintainability" (HumanLayer).

2 · Blueprint · Station 07

Agents solve whatever the verifier checks, so stack checks up to hard-to-game

IntakeSpecContextOrchestrateSandboxHarnessVerifyReviewShipFeedbackGovern
Format, lint, typesTests + CI, max 2 rounds (Stripe)LLM judge vs task (Spotify)Holdout scenarios (StrongDM)Proof: CI, videoCOSTLY, FEW, HARD TO GAMEHidden scenarioskept outside the repoAgentfixes and retriesfailretryCHEAP, RUN ON EVERY CHANGE

What it does

Checks the agent's work by machine before any human looks at it.

Key finding

Carlini (Anthropic): make sure "the task verifier is nearly perfect, otherwise Claude will solve the wrong problem."

Open question

Tests prove behavior, not maintainability or intent, and an LLM judge can share the agent's blind spots.

2 · Blueprint · Station 08

Review is the new bottleneck, and teams split on who holds the gate

IntakeSpecContextOrchestrateSandboxHarnessVerifyReviewShipFeedbackGovern
PRRisk triagetrivial · lite · fullCloudflareHuman approvesStripe, Google, DatadogAI review + humanCloudflare 100%, Uber uReviewNo human reviewStrongDM: scenarios insteadMergeRamp: PRs open with the requester's own token, so nobody approves their own agent's change.

What it does

Decides which changes merge, with stricter rules for riskier code.

Key finding

Google's report on AI-driven code migrations finds human review becomes the bottleneck even when generation works.

Open question

AI reviewers raise the floor, not the ceiling (HumanLayer). No review UX fits agent volume yet.

2 · Blueprint · Stations 09–10

Ship with a small blast radius, and feed every failure back into the factory

IntakeSpecContextOrchestrateSandboxHarnessVerifyReviewShipFeedbackGovern
09 SHIP: SMALL BLAST RADIUSMergedpassed the gateFeature flagmerge dark, ramp upCanarysmall share firstFull rolloutall trafficTelemetryerrors, latencyStop the lineroll back, call a human10 FEEDBACKError to draft PRDatadog Bits, Sentry (Ramp)to 01 intakeFix the factoryAGENTS.md, skill, lint, testto 03 contextAndon: any abnormalsignal stops the lineand pulls in a human.

What it does

Ships merged changes safely, watches production, and routes failures back upstream.

Key finding

DORA 2025: AI use goes with higher throughput but lower delivery stability.

Open question

Who is on call for code no human wrote or read, and when should an agent stop the line?

2 · Blueprint · Station 11

Every agent needs a human owner, a budget, and a metric beyond PR count

IntakeSpecContextOrchestrateSandboxHarnessVerifyReviewShipFeedbackGovern
Agent identityone per agentHuman sponsoraccountable ownerRampRisk tierautonomy by domainless where errors costToken budgetcost per agent (Uber)$1,000/eng/day (StrongDM)Metricsthroughput + stabilityDORA, SPACEUber spend = users × sessions × turns × requests × tokens × price

What it does

Controls who each agent acts for, what it may touch, what it costs, and how it is measured.

Key finding

METR RCT: 16 experienced developers were 19% slower with AI, while believing they were 20% faster.

Open question

PR counts and "AI code share" use different definitions, and few report cost or quality.

2 · Blueprint · Summary

Cheap generation moves the jam upstream to spec and downstream to review

INTAKESPECCONTEXTBUILDVERIFYREVIEWSHIPBefore agentshumans write codeBOTTLENECKWith agentsgeneration is cheapBOTTLENECKBOTTLENECKagentsin parallelBOTTLENECKBOTTLENECKUpstream: is this the right thing?Downstream: is it right?HumanLayer: aim for a safe 2–3x, not 10–100x, and invest where the line is slowest.
3

Cases: how real factories are wired

Eight landmark factories drawn as swimlanes, six more at a glance, then what they share.

3 · Cases · Map · level is our reading

Big companies run L3–L4 factories; the L5 claims come from small teams

L3human reviews diffs L4human writes specs L5nobody reads the code LESS HUMAN READING Big-company platform Startup / small team Individual Research lab Stripe Minions Ramp Inspect Uber Dropbox Nova Cloudflare OpenAI harness + Symphony Spotify Honk Kiro Crew (AWS) Airbnb test migration HumanLayer, 2026 StrongDM Ralph loop (Huntley) Gas Town (Yegge) C compiler (Anthropic) HumanLayer, Jul 2025 trial lights back on after outages

Blue dot: has its own slide next. Grey dot: in the table at the end. Levels follow Shapiro's Five Levels.

3 · Cases · StrongDM · 2026-02 · L5

StrongDM: hidden scenarios on digital twins replace human code review

Human Agents (Attractor) Digital twins + LLM judge Writes NLSpec Holdout scenarios Two models plan the sprint Writes code, iterates Runs on digital twins LLM judge: satisfaction hidden from agents low score → iterate

STACK

AttractorGraphviz DOT pipelinesDigital Twin UniversecxdbClaude Code / Codex / …
$1,000

tokens per engineer per day, their floor

6

services cloned: Okta, Jira, Slack, Google

3

people on the team (Oct 2025)

“Code must not be written by humans.”factory.strongdm.ai

3 · Cases · Stripe · 2026-02 · L3

Stripe Minions: Slack to throwaway devbox to PR, and a human reviews every PR

Engineer Minion (goose fork) Devbox + CI Tags bot in Slack Warm devbox in ~10 s Fixed step: load context Implements, runs lints CI, at most 2 rounds PR from template Human reviews PR push fail → one retry re-prompt

STACK

goose (internal fork)Toolshed MCPEC2 devboxesSlackrule filesStripe CI
1,300+

minion PRs merged per week

~10 s

devbox from a warm pool

2

CI rounds, then stop

Blueprints mean “putting LLMs into contained boxes.”Stripe, Minions part 2

3 · Cases · Spotify · 2025-11 to 2026-06 · L4

Spotify Honk: the fleet pipeline stayed, and Claude Code replaced the script

Migration owner, team Claude Code in a pod Fleet Management One prompt per change Fleetshift picks repos Claude Code applies it Verifiers: build, test LLM judge Opens PR; safe → merge Team reviews the rest per repo pass fail → fix veto → correct

STACK

Claude CodeClaude Agent SDKKubernetesFleetshiftBackstageMCP
1,500+

agent PRs merged (Nov 2025)

~1 in 4

sessions vetoed by the LLM judge

60–90%

time saved on migrations

Prompts should “describe the end state”, one change each.Spotify Engineering, part 2

3 · Cases · OpenAI · 2026-02 · L4

OpenAI: a repo built for Codex to read, and Symphony turning tickets into runs

Human Codex Symphony + repo harness Writes Linear ticket Symphony claims ticket Reads map, reproduces Implements, opens PR Custom lints + CI Agent reviews Approves proof of work land skill merges WORKFLOW.md error says the fix until satisfied

STACK

Codex app-serverSymphony (Elixir)LinearAGENTS.md + docs/git worktreescustom linters
~1M

lines in 5 months, none by hand

~1,500

PRs merged, started with 3 engineers

3.5

PRs per engineer per day

“Humans steer. Agents execute.”OpenAI, "Harness engineering"

3 · Cases · Anthropic research · Nicholas Carlini · 2026-02 · L5

Anthropic: 16 parallel Claudes built a C compiler, steered only by the tests

Human 16 Claudes in Docker Git repo + test harness Goal + test harness Loop spawns container Claims task by lock file Fixes failing tests Tests + GCC oracle Merge, push upstream Specialists: dedupe, perf the verifier fail → fix next session

STACK

Claude Opus 4.6Claude CodeDockergit lock filesGCC torture testsRust
~2,000

sessions over two weeks

<$20k

API cost (2B in, 140M out tokens)

100k

lines; boots Linux 6.9

Make sure “the task verifier is nearly perfect, otherwise Claude will solve the wrong problem”.Carlini, Anthropic

3 · Cases · Individual · Geoffrey Huntley · 2025-07 · L4

Ralph: one agent reruns the same prompt in a loop, and files are its memory

Human Claude (one loop) Repo files + tests Talks out requirements specs/ + fix_plan.md Same prompt, fresh context Picks one item, builds Tests + type checks Commit, update plan Adds signs, resets LLM writes specs every loop fail → fix drop context, restart tune the prompt

STACK

Claude Code or AmpPROMPT.mdspecs/*fix_plan.mdAGENTS.mdgit
~170k

tokens of context; use less

1

process runs build and tests

1,768

stars on the playbook repo

while :; do cat PROMPT.md | claude-code ; doneHuntley, "Ralph"

3 · Cases · Individual · Steve Yegge · 2026-01 · L5

Gas Town: you talk to a Mayor agent, and work state lives in a git ledger

Human Mayor + Polecats Beads ledger + Refinery Tells Mayor the goal Mayor splits the work Beads tickets in git Polecats in worktrees Witness, Deacon watch Refinery merge queue Merged to main dispatch gt done logged to the ledger stuck → escalate

STACK

Gas Town (Go, gt)Beads (bd, Dolt)git worktreestmuxClaude Code default
20–30

agents it claims to run comfortably

17 days

to build it: 75k LOC, 2,000 commits

$30k/yr

SaaS tool a customer rebuilt on it

A dark factory “just means background work”.Yegge, "Welcome to Gas City"

3 · Cases · Startup · HumanLayer (Dex Horthy) · 2026-07 · L3

HumanLayer turned the lights back on: humans review the specs and read the code

Engineer + reviewer Claude Code Triage by task size Drafts the specs Product + arch review Program design review Builds 1–3 slices Reads code, resteers medium, large ~40% one-shot redraft next slice

STACK

Claude Coderesearch / plan / implement promptssub-agentsMermaid diagrams
2–3x

safe speedup, instead of 10–100x

~40%

tasks one-shot to the agent

2 weeks

hand rewrite after lights-off

“Read the dang code”Horthy, "Why Software Factories Fail"

3 · Cases · The rest at a glance

Six more factories: different triggers, similar shapes, a check before merge

CaseTriggerFactory shapeGateHeadline numberLevel
UberEngineer, CI failure, alert, migrationModel and MCP gateways, DevPods, any harnessuReview on every PR, then a human70%+ of PRs attributed to agentsL3
Ramp InspectSlack, web, Chrome, PR commentFull dev env in a Modal sandboxAgent self-verifies; a teammate reviews~30% of merged PRs, later ~50%L3
Dropbox NovaUI, CLI, Slack, flaky-test botAny agent on a repo snapshot, one branchCI loop, up to 5 tries; owner reviews100+ CI runs to accept a flaky fixL3
CloudflareEngineer, keyless OpenCode loginOwn products turned inwardRisk-tiered AI reviewer on every MRWeekly MRs 5,600 → 8,700+L3
Kiro CrewHuman sets a goalCoordinator agent, 30–50 sessionsCI and review before merge1,000+ PRs in 7 days, 3 devsL4
AirbnbMigrate ~3.5K test filesPer-file state machine with retriesJest, lint and tsc must pass1.5-year estimate → 6 weeksL4
3 · Cases · Cross-case patterns · our reading

Shared: a sandbox per task and machine checks first. Different: the final gate

PatternStrongDMStripeSpotifyOpenAICarliniRalphGas TownHumanLayer
A sandbox per tasktwinsdevboxK8s podworktreeDocker—worktree—
A machine check before any humanLLM judgeCI, 2 roundsverifiers + judgelints, CI, agent reviewtests + GCCtests + typesRefinery—
Human effort moves into the spec or checkhidden scenarios—end-state prompttickets, lintstest harnessspecs/—reviewed specs
State lives in files, not agent memorycxdb—versioned promptsdocs/lock + progress filesfix_plan.mdBeads ledgerplan docs
The final gate: where they splitnone: a scorehuman PR reviewauto-merge if safehuman approves prooftests onlyhuman watchesmerge queuehuman reads code

“—” means the source does not describe it. Gate color: orange is a human, grey is a machine.

4

Debates: dark or light, who reviews, and does it pay?

Six open arguments, both sides with sources, ending with what each position needs technically.

4 · Debates · Map

On all six debates, builders lean "go further" while measurers and maintainers lean "slow down"

← FOR / GO FURTHER AGAINST / SLOW DOWN → Should humans read code?dark ↔ light / twilight Where does rigor go?machine checks ↔ design + production Real productivity gains?big counts ↔ measured slowdowns Spec-driven, or MDD again?specs first-class ↔ MDD flaws again Will history repeat?wave 4 works ↔ stays internal Is the token bill worth it?value moves up ↔ cost too high StrongDM Yegge Shapiro Cherny Willison Ronacher Mollick Osmani HumanLayer OpenAI Cloudflare Spotify Carlini Fowler Osmani Majors HumanLayer Stripe Google Uber Ramp AWS Kiro DORA Faros METR 2025 Spec Kit Kiro BMAD Harper Reed StrongDM Böckeler DoD 2022 TrueFoundry Wavect Kessel Run pivot a16z Sequoia Factory Tessl Garry Tan Gas Town #3649 Peter P.
procautiouscritical Dot color = the source's stance in our survey. Horizontal position is our reading, not a measurement.
4 · Debates · Dark or light

Both sides call verification the limit; they split on whether design quality needs human reading

For dark: verify behavior, not code

Agents can rewrite tests to fit the code. So StrongDM keeps scenarios outside the repo as a holdout and scores "satisfaction" against clones of Okta, Jira and Slack.

  • Shapiro: a few teams under 5 people already work at Level 5
  • Yegge: 20-30 parallel agents, code openly unread
  • Carlini: 100K-line C compiler that builds Linux, GCC as oracle
  • Cherny: no hand-written code since Nov 2025 (self-report)

Against: tests pass while design rots

HumanLayer went lights-off in July 2025, hit outages from code nobody could read, and rewrote by hand in November. Cause: "there is no penalty for eroding codebase maintainability."

  • Osmani: comprehension debt grows while tests stay green
  • Willison: LLM error rates, and $1,000/day of tokens
  • Mollick: the wrong goal for most organizations
  • Carlini: never-verified software is a real concern
4 · Debates · Twilight

Twilight: automate only loops with trustworthy checks, and keep people on intent, design and risk

A loop toautomate Is its check cheap, hard to fake, stable? Osmani's test for which loops may run dark yes no Lights off: agents + machine checks • Maintenance PRs: most auto-merge, no human (Spotify) • Format, lint, type and test fixes inside CI loops • Test migrations retried until green (Airbnb, 3.5K files) Lights on: a human stays at the gate • Product intent, specs and scenarios • Architecture and program design, before code (HumanLayer) • Auth, billing and public APIs (Osmani) Andon: the agent stops and calls a human (Mollick)
4 · Debates · Review

Six review strategies are in use, and they differ mainly in how much code a human still reads

Diff review Human reads everydiff before merge Stripe Minions:1,300+ PRs/week,human-reviewed Stripe; Shapiro L3≈ L3 Design first Human reviewsproduct, system,program design, then 100-200 linecode slices HumanLayerL3 → L4 AI reviewer Agents reviewevery change, ahuman signs off Cloudflare: 100%of standard CI Cloudflare, UberL3-L4 Risk tiers Review depth setby risk: trivial,lite or full People keep auth,billing, APIs Cloudflare, FowlerL4 Proof of work Human checks theevidence: CI,review notes, video andscreenshots, thenapproves Symphony, RampL4 Scenarios only No one readscode. Hiddenscenarios scored for satisfactionon digital twins StrongDML5 human reading READS EVERY LINE READS NO CODE
4 · Debates · Rigor

Rigor moves into specs, tests, scenarios and production; nothing yet checks maintainability fast

Writing codenow cheap: agentsdo most of it Specsspec → plan → todo (Harper Reed); Spec Kit, Kiro Tests and oraclesGCC as oracle; test quality decided it (Carlini) Holdout scenariosoutside the repo, scored as satisfaction (StrongDM) Lints, structurecustom lints enforce layers and taste (OpenAI) Design reviewreview the design before code exists (HumanLayer) Productiontelemetry is "the surviving spec" (Majors) Gapno fast oracle formaintainability
4 · Debates · Evidence

Company numbers count AI output; controlled studies find smaller, mixed and sometimes negative effects

Volume, self-reported by companies

1,300+

PRs/week merged, fully agent-produced, still human-reviewed (Stripe)

70%+

of Uber PRs attributed to agents; only 11% agent-opened (Mar 2026)

~75%

of Google's new code AI-generated, per its CEO

~50%

of Ramp's merged PRs started by its agent (Modal)

Measured: trials and telemetry

+19%

task time with AI, METR 2025 RCT (16 devs); they felt 20% faster

−18%

task time in METR's 2026 rerun, which METR calls an "unreliable signal"

↑ ↓

DORA 2025: AI goes with higher throughput and lower stability

+242.7%

incidents per PR at high AI adoption (Faros, 22K devs)

Counts mix "touched", "authored", "generated" and "merged", so they are not comparable across companies.

4 · Debates · Specs

The closer spec-driven work gets to spec-as-source, the more it inherits the problems of MDD

Spec-first spec written, then used for the task Kiro, Spec Kit (her placement) Spec-anchored spec kept to evolve the feature Tessl aims here Spec-as-source spec is the source; code untouched where MDD (UML/DSL → generator) sat SPEC GUIDES ONE TASK HUMANS NEVER TOUCH CODE

Why it may be different this time

  • LLMs remove the DSL and custom-generator overhead that sank MDD
  • Specs are plain language, so product people can write them
  • Specs now also drive tests and holdout scenarios (StrongDM, Symphony SPEC.md)

Why it may not be

  • MDD "never took off for business applications" (Böckeler)
  • Spec-as-source risks "inflexibility and non-determinism" together
  • Verbose Markdown: she would rather review code than these files
4 · Debates · History

Earlier software factories raised quality but stalled; Toyota's stop-the-line rule is worth borrowing

1969 Hitachi Japan's factories:standards, reuse, QA Quality up, butcompany-specific 1975 SDC First US attempt:tools + process Stalled quickly 2004 Microsoft DSLs, models,product lines Never mainstream 2017 Kessel Run DoD: DevSecOpsplatform + teams 2025: pivot tovendor-managed 2026 AI factories Agent loops +verification gates Open question Toyota: jidoka and andon A machine stops itself on an abnormality, so defects never flow to the next step. Andon: stop, and call for help at once. Agent factory equivalent (our angle) A failing check or low confidence stops the loop before more PRs pile up, and pulls a human in (Mollick's facilitator).
4 · Debates · Money

The token bill can rival a salary, and the evidence of payoff is so far mostly spend and valuations

Cost

$1,000

tokens per engineer per day: StrongDM's floor. About $250K a year at 250 workdays (our arithmetic)

~6x

Uber's AI cost vs 2024

−52%

Uber cost per session vs its June 2026 peak, via model routing, compaction and caching

Value signals

$4.0B

enterprise spend on AI coding in 2025, 55% of departmental AI spend (Menlo)

$3T

a year of developer labor a16z sees as the market (30M × $100K)

<$20K

API cost of Carlini's 100K-line C compiler

Push-back

  • Garry Tan (YC): "Stop building Foxconn factories for your agents"
  • Gas Town: alleged use of users' LLM credits for self-improvement (HN 253 pts)
  • "Personal software factories are a waste of time" (Oct 2026)
  • Value may flow to the harness layer: Factory raised $150M at $1.5B
4 · Debates · Requirements

Going darker is less a decision than a capability: each step removes a human check you must replace

CapabilityLight · L3Twilight · L4Dark · L5Seen at
Sandboxes, CI and lints, audit logs, scoped permissionsneedneedneedStripe, OpenAI, AWS
Small PRs and fast diff-review toolingneedhelps–HumanLayer, Uber
Design docs reviewed before codehelpsneed–HumanLayer
AI reviewer with measured precision and recallhelpsneedneedUber, Cloudflare
Risk classification of every changehelpsneedneedCloudflare
Proof-of-work artifacts: video, screenshots, logshelpsneedneedSymphony, Ramp
Andon: agent escalates to a humanhelpsneedneedMollick (proposal)
Holdout scenarios and digital twins of dependencies–helpsneedStrongDM
Production telemetry, flags, fast rollbackhelpsneedneedHoneycomb, Ramp
Token budget and cost per session trackinghelpsneedneedUber
Part 5
5

The stack

The layers a factory is built from, the products people use for each today, and which layers start to matter more as agents open hundreds of PRs.

5 · The stack · Layers

A factory is eight layers of tooling, with governance cutting across all of them

LAYERSTATIONNAMED PRODUCTS / PRACTICES Model harnessClaude Opus / Sonnet · GPT-5.x · Kimi K2.5 (open) Harness harnessClaude Code / Agent SDK · Codex CLI · goose · OpenCode Context and tools contextAGENTS.md · MCP gateways (Stripe Toolshed) · Skills Orchestration orchestrateSymphony · Gas Town · Temporal · CF Workflows Sandbox / compute sandboxModal · E2B · Cloudflare Sandbox · Stripe devboxes Verification / CI verifyBazel remote cache · Buildkite MCP · LLM judges Review / merge reviewGitHub merge queue · AI reviewers (Cloudflare, Uber) Deploy / observe ship · feedbackVercel previews · Sentry, Datadog · OTel Identity,permissions, cost govern · every layer Cloudflare Access AI Gateway (keys, cost) Ramp Agent Keys MCP OAuth 2.1 Uber spend tiers
5 · The stack · Sandbox

Sandbox vendors now compete on state: snapshot, fork and resume, not only isolation

A FACTORY NEEDS:one box per taskfast startsnapshot / forkhours, not minutesnetwork + secret policymany in parallel
OptionIsolationState: snapshot / fork / resumeStands out for
Modal SandboxesgVisor, or VM runtimeFS, dir, memory (exp.) snapshots; fork manyup to 24 h; Ramp Inspect runs on it
E2BFirecracker microVMpause saves filesystem + memory, kept until killedopen source; 24 h on Pro
Daytonaown kernel per sandboxsnapshots; VM type can snapshot memory"under 90ms" start (vendor claim)
Cloudflare Sandboxcontainer, each a microVMbackup/restore; VM snapshots announcedegress proxy injects credentials
Vercel SandboxFirecracker microVMpersistent by default; snapshotsno CPU billed while model thinks
Fly SpritesFirecracker microVMcheckpoint in ~300 ms, incl. packagesstateful by design; L3 egress policy
Morph InfinibranchVMsnapshot, branch, restore "under 250ms"one state, many parallel tries
Stripe devboxesEC2, no prod, no internetpre-warmed pool, ready in ~10 ssame box human engineers use

Highlighted: keeps memory state or forks. Speeds are vendor claims. Firecracker = AWS microVM; gVisor = Google user-space kernel.

5 · The stack · Verify

CI becomes a tool the agent calls in its loop, so it must be fast, cached and capped

Agent editsin its ownsandbox Local checkslint on pushunder 5 s Remote CIselected tests,remote cache Merge queuePR + latest base+ PRs ahead Preview envURL per branchand per commit Human reviewrequester can'tapprove own PR fail: autofix if known, else back to agent · at most 2 CI rounds (Stripe) Queueing Hundreds of PRs fight for CIand for the main branch. Merge queue tests changestogether; build concurrencyis set from 1 to 100 (GitHub). Flaky tests A random failure sends theagent chasing noise. Dropbox needed 100+ CI runsto validate one flaky-test fix;its Deflaker caps fixes at 5. Cost and time Each retry spends tokens,compute and wall-clock time. Cap rounds, reuse build outputs,give the agent a one-callfailure summary (Buildkite MCP).
5 · The stack · Front-runner

Cloudflare bets on per-agent compute and state, plus the control points every call passes through

NEEDWHAT THEY SHIP (2025-09 TO 2026-04) Run agent code Dynamic Workers: isolates Sandboxes, Containers GA State per agent Durable Objects Agents SDK, Think Workflows Tools MCP Server Portal Code Mode: model writes code Models and cost AI Gateway Workers AI (open-weight) Identity, secrets Access egress proxy adds credentials Code storage Artifacts: git-compatible storage for agents USED ON THEMSELVES · 30 DAYS · 2026-04 3,683AI coding users, 93% of R&D 241.37Btokens through AI Gateway 100%MRs on standard CI get AI review 5.6k → 8.7k+weekly merge requests (4-wk avg) Their own line: "isolates are the right primitive", yet "Coding agents genuinely need containers".
5 · The stack · Harness

Every harness is the same loop; the choice is where it runs and whether you build on it

SANDBOX / WORKSPACE Model Hooks + permissionsallow / deny / ask Toolsread, edit, bash, MCP ContextAGENTS.mdskills, memorysession historycompaction Subagentsown context window, report a summary back loop until done INTERACTIVE, ON A LAPTOPBACKGROUND, IN THE CLOUD USE AS A PRODUCT Claude Code CLICodex CLIAider (auto git commits)goose desktop / CLI USE AS A PRODUCT Codex cloudCursor cloud agentsCopilot cloud agentDevin BUILD ON IT · YOU HOST Claude Agent SDKOpenAI Agents SDKOpenHands SDKgoose, OpenCode (OSS) IN-HOUSE OR HOSTED Stripe Minions: goose forkSpotify Honk: Agent SDKRamp Inspect: OpenCodeClaude Managed Agents
5 · The stack · Orchestrate

Orchestrators differ in who owns control flow; durable execution keeps long runs alive

No orchestratorlock files + git racesCarlini: 16 Claudes,one C compiler Coordinator agentGas Town Mayor: 20–30Kiro Crew: 30–50 sessionson 6–10 machines Ticket daemonSymphony: each Linearissue gets an isolatedCodex run Fixed blueprintcode runs the steps,agents fill bounded nodes(Stripe, Dropbox Nova) MODEL OWNS CONTROL FLOWCODE OWNS CONTROL FLOW Durable execution underneathTemporal · Inngest · Cloudflare Workflows 1 · planresult checkpointed 2 · implementresult checkpointed 3 · run CIfails: retry this step 4 · wait for approvalwaitForEvent, then merge Completed steps return saved results on replay, so a crash or a failed step does not redo hours of agent work. Runs can wait minutes to weeks.
5 · The stack · Verify

Green tests are the cheapest check; factories stack harder-to-fake checks on top

Deterministiclint, types, testsStripe: lint < 5 s,3M+ test suite Stop-hook checksformat, build, testbefore any PR(Spotify, via MCP) LLM judgevetoes ~1/4 ofsessions (Spotify)Uber uReview scoredon precision/recall Browser checksPlaywright MCP:accessibility treeRamp: screenshotsfor frontend Hidden scenarioskept outside repo,scored as"satisfaction"(StrongDM) Digital twinsclones of Okta,Slack, Jira, Googleto test at scale(StrongDM DTU) CHEAP · FAST · EASY TO GAMECOSTLY · SLOW · HARD TO GAME

Proof of work ties them together: Symphony attaches CI status, review feedback and walkthrough videos to each PR.

5 · The stack · Govern

Each agent gets a human sponsor, short-lived scoped tokens and a cost model per session

IDENTITY AND PERMISSIONS Human sponsoragent never getsmore than this role Agent identityAgent Key, expiresby default (Ramp) Short-lived tokenOAuth2-PKCE, aboutan hour, revocable GatewayMCP gateway: auth+ policy in one place Tools, APIssecret added ategress, not in agent Audit: "Sarah (via Codex)" · PRs use the requester's token, so no one approves their own agent's PR COST · UBER'S EQUATION, ONE LEVER PER FACTOR users × sessions × turns × requests × tokens × price context graph,skill tuning compact at 400K,1 h cache, code-mode route by benchmark,cheaper subagents Budgets: spend tiers, Slack nudges at 50 / 80 / 100%, manager sign-off to upgrade (Uber). Opposite stance: StrongDM treats under $1,000 of tokens per engineer per day as room to improve.
5 · The stack · Now → next

The layers that gain importance are the ones between the agent and the main branch

LayerCommon practice nowBecomes important (our reading)Seen at
Modelone frontier model per toolroute per workload; open-weight for easy workUber, Cloudflare
Harnessinteractive CLI on a laptopsame harness, headless, via SDK or hostedSpotify, Stripe, Ramp
Context, toolshand-written AGENTS.md, ad-hoc MCPone MCP gateway; Code Mode; agent-kept docsCloudflare, Uber
Orchestrationa human juggling tabs and worktreesticket-driven runs on durable workflowsSymphony, Kiro Crew
Sandboxlaptop, container or worktreeper-task microVM: snapshot, fork, egress policyRamp/Modal, Stripe
CIhuman-paced, retried by handCI as an agent tool: test selection, cache, round capsStripe, Dropbox
Verification"tests pass" means donehidden scenarios, twins, judges, proof-of-work bundlesStrongDM, Spotify
Review, mergea human reads every diffrisk tiers: AI review, merge queue, humans on riskyCloudflare, Uber
Governper-seat licenses, shared keysagent identity + sponsor; keys at gateway; cost/sessionRamp, Uber

Highlighted rows: where we expect the bottleneck to sit as PR volume grows. This column is interpretation, not a survey result.

6 · Our view · Opinion
6

Our view: tacit knowledge decides whether a factory pays

Parts 1 to 5 reported what others say. This part is our own opinion, with research added only where it supports a point.

6 · Our view · Tacit knowledge

About 80% of what a customer knows is below the waterline, out of the factory's reach

WATERLINE Manuals Specs Existing data On site Who actually uses it What they struggle with every day How they think while using it Which tasks are most frequent What they talk about with their customers ~20% documented the factory can read this ~80% tacit lives with people on site 80/20 is our rough estimate, not a measurement
Our view (presenter's opinion)
6 · Our view · Tacit knowledge

The factory receives the request, not the context behind it, so it builds a generic answer

What the customer knows Who uses it What kind of customers they have What data exists Daily struggles on site How users think while working Most frequent tasks Conversations with their customers mostly tacit, mostly unwritten The request "a clock-in button" "a CRM" + docs Factory agents build Generic app works, but not for this site everything left of here is lost
6 · Our view · How to build one

Build the factory as specialized lanes, adding a lane when demand appears, so each person's load stays flat

STARTMORE USEMORE KINDS OF TASKS One general laneagents do everything Frontend lanedesign + engineer agents Backend laneown agents Frontend lane Backend lane Next laneadded when demand appears Cognitive load per lane owner target: flat as the factory grows = lane owner (human)
6 · Our view · Drift

A 1% gap in understanding compounds the longer the factory runs unattended

far off on target steps the factory runs without a human check Unattended: 1.01²⁰⁰ ≈ 7.3× harder to recover, AI slop piles up Checked every 25 steps: 1.01²⁵ ≈ 1.28× Illustration, not measured data. Purple dots = review checkpoints.
6 · Our view · Drift

So review, develop and get feedback on a fixed cadence, and stop the line when something looks wrong

Reviewhumans check output Developagents build a slice Feedbackfrom users on site Every cycle, on a schedule SUPPORT · TOYOTA Jidoka A machine stops itself on an abnormality, so defects never flow to the next step. Andon A signal to stop and call for help at once. For us: when an agent should escalate.
6 · Our view · Shared language

We use three reviewed documents as the common language: UX flow, design doc, implementation plan

WHAT WE DO NOW UX flowwho does what, in order review Design dochow the system works review Implementation plansteps the agents follow review Agentsbuild Each document lowers cognitive load: a reviewer reads one short layer at a time. FOR COMPARISON · HUMANLAYER (RESEARCH) Product reviewproblem, mockups System architectureservices, schemas Program designcall trees, types Vertical slices1-3 at a time, reviewed Same shape: agree on intent, then structure, then code-level plan, before agents build.
6 · Our view · Shared language

Thousands of people can build one rocket because they all work from one reviewed drawing

FactoryApartment blockSkyscraperSubmarineRocket

One drawing

the single source everyone builds from

Experiments in it

prototypes, 3D-printed tests

Check documents

derived from the drawing

Review meetings

and more checks

Any 100 builders

build the right thing, correctly

Why it works

The drawing does not drift, so the result does not depend on who builds it.

For a software factory

The three documents play the role of the drawing. Agents are the 100 builders.

Our view (analogy, no external source)
6 · Our view · Shared language

Reviewing hard is not enough: review has to bridge human tacit knowledge and AI tacit knowledge

Human tacit knowledge what the customer meant how the site really works why a choice was made AI tacit knowledge what the model assumed defaults it picked silently code nobody has read yet Review over shared docs both sides surface what they assumed The examples in each circle are our reading.
6 · Our view · Does it pay?

For one product, a factory cuts cost and adds features, but we doubt more features mean better outcomes

↓

Cost

cheaper to build and change

↑

Features

more shipped per month

?

Usability and outcomes

no clear link to feature count

The first two follow from cheaper code. The third depends on knowing what users need, which is the tacit part.

6 · Our view · Does it pay?

For enterprise, ten customers likely means ten dedicated factories, each getting better the more it is used

Co. A Co. B Co. C Co. D Co. E Co. F Co. G Co. H Co. I Co. J Teal layers = context accumulated in that company's factory (illustrative). Use on site Data and context pile up Better output next time
Our view (no external source)
6 · Our view · Does it pay?

When coding becomes easy, the bottleneck moves to selling, adopting and rolling out

Coding now easy Everywhere: sales · customer success · planning · consulting Enterprise SalesInternal approval (ringi)Embedding in the orgRollout on site SMB SalesMarketingPrice competitionDifferentiation Japan, especially OnboardingCustomer successEvangelism-stylemarketingBranding Amber = new constraint. The Japan column is highlighted because it is our home market.
6 · Our view · Does it pay?

Our open question: go all in on brand, or keep following wherever the bottleneck moves?

Coding is cheap for everyone ? A · All in on branding Win on trust and recognition that cheap code cannot copy. B · Follow the scarcity Keep moving to wherever the bottleneck goes next.
Our view (open question, no external source)
6 · Our view · Cornerstones

The right app for every department needs four cornerstones, built on a factory that keeps its context

AI builds the right app, accurately, for every department Context collected, kept,reused Factory design the skill to designsoftware factories Customer intent grasp what theyactually mean Templates turn it into templatesand roll them out A factory where context accumulates the more it builds
Our view (no external source)
Closing · Summary

Five things to take away from today

1 · DefinitionA software factory is agents doing the building inside a pipeline of specs, checks and review gates.
2 · FieldDesigns range from lights-on with human review to dark, with no human reading code, and HumanLayer turned the lights back on.
3 · Tacit knowledgeMost of what a customer knows is not written down. A factory only builds from what it is given (our view).
4 · PracticeGrow lanes with demand, correct on a cadence, and share reviewed documents: UX flow, design doc, implementation plan (our view).
5 · MoneyCheap code moves the bottleneck to sales, adoption and rollout. That is where the value goes (our view).
Closing · Discussion

Five questions to discuss before we build our own factory

1 · Below the waterline

For one current customer, what do we know only from being on site? How would we write it down?

2 · First lane

Which lane should we build first, and who owns it?

3 · Cadence

How often do we review, and what should make an agent stop and call a human?

4 · Our drawing

Are UX flow, design doc and implementation plan enough? What is missing?

5 · Brand or scarcity

If coding is cheap for everyone, do we bet on brand, or keep moving to the next bottleneck?

Our view
Closing · Reading list

Twelve sources worth reading after this session

SourceWhy read it
HumanLayer · Why Software Factories Fail (2026-07)Lights-off failure, staged documents
StrongDM · Software Factories and the Agentic Moment (2026-02)Dark factory, holdout scenarios
Simon Willison · StrongDM write-up (2026-02)Outside view of StrongDM
Dan Shapiro · The Five Levels (2026-01)Shared vocabulary, L0 to L5
Addy Osmani · Software Factories, Light and Dark (2026-07)Review gates, comprehension debt
OpenAI · Harness engineering (2026-02)Agent-first repo design
Stripe · Minions (2026-02)One-shot agents at scale
Spotify · Background coding agent, part 1 (2025-11)Agents inside existing fleet tooling
OpenHands · What Is An AI Dark Factory? (2026-09)Manufacturing lessons
Wavect · The Factory Returns (2026-07)From Hitachi 1969 to AI agents
Google · 2025 DORA report (2025-09)AI amplifies what is already there
METR · Experienced OSS developer RCT (2025-07)Felt faster, measured slower