Skip to content

Spec2Ship: the factory of factories

The production line that learns. One operator. A fleet of AI agents. Software shipped at a team’s pace, with the controls an executive would demand.

Spec2Ship, the production line that learns: an eight-stage loop of Shape, Plan, Build, Run, Assure, Decide, Learn and Stay honest, with two human decisions, approving the spec and approving the outcome, and 94% of the work running end to end on its own.

What it has built

  • CarerSupport: the participant-owned NDIS care record. In production.
  • Digital Starter Kit: small-business websites, live in days, flat fee. A factory built by the factory.
  • MyWealthTracker: AI guidance grounded in Australian tax and super law. Pilot.
  • ProductMatch: AI pricing intelligence for retailers. Live.
  • Dealroom: two AI agents negotiating a deal for their humans. In the build queue.
  • Spec2Ship itself: the factory’s most demanding customer.

Built to be handed over, not to depend on me. Every agent, rule and check lives in versioned, documented and tested configuration, like any other product. Every new production line is installed from that same source. It’s designed to be installed in a team, not to live in one person’s head.

The factory of factories: a central Spec2Ship core (spec agents, review, gates, dispatcher and learning loop) with a production line out to each product: CarerSupport, in production; Digital Starter Kit, small-business websites that fan out again into individual sites; MyWealthTracker; ProductMatch, live; and Dealroom, two AI agents negotiating a deal, in the queue. A loop runs back into Spec2Ship itself, because it builds itself. Every product runs on the same production line.

The production line

Eight stages. Each one answers a question an executive should ask of any AI-built system.

The production line, in two rows: Shape (spec before code), Plan (one queue), Build (parallel agents), Run (day and night, with a dispatcher whose concurrency scales with review), then Assure (cross-vendor review), Decide (you approve and ship), Learn (improves overnight) and Stay honest (checks that can fail). Two human stations are highlighted in amber: you approve the spec before Build, and you approve and ship at Decide. Every other stage is run by agents. A dashed arrow carries lessons back to the start so they feed the next spec. 94% of the work runs end to end on its own.

1. Shape: “Do we know what we’re building?”

Spec before code

  • Does: a crew of specialist agents takes an idea from rough to buildable before any code is written. Five of them each produce one document, and the next one starts only when I approve it. A sixth keeps the crew sharp:
    • Marvin, the scoper. Questions the idea until it’s clear what problem it solves, for whom, and what’s out of scope. Produces the brief.
    • Slartibartfast, the architect. Designs how it will be built: components, data, integrations, and the trade-offs behind each choice.
    • Eddie, the tester. Writes the QA plan: what has to be true for the build to count as done, written before anyone builds.
    • Trillian, the outcome owner. Defines what success looks like after launch, and stress-tests each measure so it can’t be gamed.
    • Ford Prefect, the planner. Breaks the approved design into small, ordered tasks, each tied to the tests that prove it.
    • Deep Thought, the calibrator. Reviews how the crew performed on real tickets and tunes them.
  • Matters: decisions are made once, while they’re cheap to change.
  • You’ve heard it called: spec-driven development, the opposite of “vibe coding”.
Spec before code: five specialist agents in sequence, and nothing gets built until I approve each step. Marvin, the scoper, asks the uncomfortable questions first and produces the brief. Slartibartfast, the architect, produces the engineering design: how it will be built, and why. Eddie, the tester, writes the QA plan, what done must prove before anyone builds. Trillian, the outcome owner, defines success after launch with measures that cannot be gamed, and produces the outcome plan. Ford Prefect, the planner, breaks the work into small, ordered tasks tied to tests. An amber "I approve" step follows each of the five, and only then does Build, the production line of parallel agents, begin. Deep Thought, the calibrator, runs along the top, reviewing how the crew performed and tuning them. A real spec ran to 33 build tasks and 91 acceptance criteria. Decisions are made once, while they are cheap to change.

Tests locked up front

  • Does: the tests that prove a feature are fixed before the build, and agents can’t weaken them.
  • Matters: “it passed” means it passed the original bar.
  • You’ve heard it called: guardrails.

Risk declared per product

  • Does: every change is automatically classed, from routine to irreversible.
  • Matters: risky work gets stricter handling by rule, not by mood.

2. Plan: “Where does the work live?”

One queue, graded at the door

  • Does: every task lives in one tracker and is graded on arrival as runs-alone, needs-a-human or someday.
  • Matters: nothing lives in anyone’s head.

Agents propose, triage decides

  • Does: agents suggest follow-up work and a scheduled triage pass decides what’s real. Reviewer findings become tasks automatically.
  • Matters: the backlog grows with real work, not agent noise.

3. Build: “Who does the work?”

A team’s worth of agents

  • Does: a dozen or more agents work in parallel, with supervisor agents answering routine questions for me. There’s no fixed ceiling: the number is set by how fast changes can be reviewed, not by what the platform can run.
  • Matters: one operator delivers a small team’s output.
  • You’ve heard it called: multi-agent orchestration, agentic workflows.

The right model for the job

  • Does: premium models on high-risk products, leaner ones on internal tooling, and more than one model vendor.
  • Matters: spend follows value, with no lock-in to one vendor.
  • You’ve heard it called: model routing.

Contained by design

  • Does: agents run with scoped permissions, extensions are vetted before they load, and transcripts are scanned for leaked secrets.
  • Matters: agents can’t do or leak what they shouldn’t.
  • You’ve heard it called: least privilege.

4. Run: “Does it stop when I do?”

Works while I’m away

  • Does: a dispatcher works the queue overnight and whenever I’m out, switched on and off from my phone. It runs several tasks at once, never two on the same file. How many is a setting matched to review capacity, not a platform limit.
  • Matters: idle hours become shipped work.
  • You’ve heard it called: background agents, autonomous agents.

Paces itself

  • Does: it works in priority order, waits until blockers have actually landed, stays inside the plan’s limits, and restarts stalled work.
  • Matters: costs stay capped and nobody babysits it.

5. Assure: “Can we trust what it built?”

No agent marks its own homework

  • Does: code from one AI is reviewed by a different AI from a different vendor.
  • Matters: one model’s blind spots don’t compound.
  • You’ve heard it called: AI code review, LLM-as-a-judge.

Reviewers tested before they’re trusted

  • Does: reviewers were calibrated on deliberately planted defects and caught 5 of 5. Three rival reviewers were trialled and rejected.
  • Matters: reviewers are chosen on evidence, not marketing.
  • You’ve heard it called: evals.

Every change carries its own evidence

  • Does: each change states the problem, the outcome and the proof, and machines check those claims.
  • Matters: approval is on outcomes, so nobody needs to read code.

6. Decide: “Where’s the human?”

Two touchpoints, by design

  • Does: I approve the spec and the outcome, and irreversible changes always need my tap.
  • Matters: human judgement goes where it counts: product, architecture and risk.
  • You’ve heard it called: human-in-the-loop. It’s not a “lights-out factory”: two lights stay on, deliberately.

Decisions on my phone

  • Does: questions arrive answerable in three lines, with tap-to-answer and one-tap approval to ship. A morning message lists only what needs me.
  • Matters: work doesn’t wait for me to be at a desk.

Every decision logged and audited

  • Does: every decision is recorded. I audit how often I take the agent’s recommendation; over one fortnight it was 77%.
  • Matters: there’s a full audit trail, and proof of exactly where a human still changes the outcome.
  • You’ve heard it called: AI governance.

7. Learn: “Does it get better?”

Learns overnight

  • Does: lessons from the day become improved agent instructions overnight, reviewed like any other change.
  • Matters: a mistake is fixed once, in the system.
  • You’ve heard it called: agent memory, context engineering. It’s instructions, not model training.

Do it twice, automate it

  • Does: anything done by hand twice gets automated.
  • Matters: manual work trends towards zero.

8. Stay honest: “How do we know it’s working?”

Checks that can fail

  • Does: every safety check is tested by deliberately breaking what it guards, and a weekly sweep finds anything built but never switched on.
  • Matters: a green light means something.

Measured every week

  • Does: output, rework, cost per change and decision load are measured against the baseline, including when they get worse.
  • Matters: decisions about AI run on data, not enthusiasm.
  • You’ve heard it called: observability, AgentOps.

How review works

How review works, left to right: triage classes every change by risk; a quick first pass by a low-cost AI flags the obvious problems; independent review is by a different AI from a different vendor (Codex and CodeRabbit, read-only); every finding is resolved, fixed, waived by a human or escalated; and hard gates are automated checks that fail closed. Ship then splits: routine changes will ship automatically once every check passes (coming), and irreversible changes need a human tap. A note reads: one pass, not a loop, because when reviewers looped until clean, more than half the late serious bugs came from the fixes themselves.
  1. Triage. Every change is classed by risk.
  2. Quick first pass. A low-cost AI flags the obvious problems.
  3. Independent review. Codex reviews every change; CodeRabbit also reviews the high-stakes products. Reviewers read; they never edit.
  4. One pass, not a loop. Fixes are re-checked once. We measured this: when reviewers looped until “clean”, more than half the late serious bugs came from the fixes themselves.
  5. Every finding resolved. Each one is fixed, waived by a human, or escalated.
  6. Hard gates. Automated checks that fail closed decide whether a change can ship.
  7. Ship. Routine changes are heading towards shipping automatically once every check passes. Irreversible ones always need a human.

The numbers

Six weeks, 11 September – 23 October 2026

Tasks completed670
Done end to end by agents94% (595 of 631 engineering tasks)
… on the regulated product (CarerSupport, NDIS data)95%
Needed my hands36 tasks

The busiest week (5–12 October)

Changes shipped174 across 15 products and tools (2.5× the previous six-week average)
Task picked up → reviewed, passing change~40 minutes median
Questions to me1 per 6 changes shipped
Review rounds per reviewed changeunder 2
Changes rolled back, seven weeks0

What stayed with me is the point. The 36 hands-on tasks were production go-lives, security settings on live systems, vendor accounts and billing, and physical machine work. That’s exactly the work an executive would want a human to own. Everything else, the agents did.

Measured honestly. The same measurement showed output rising faster than efficiency, and the biggest hold-up was a reviewer’s spending cap, not the agents. Each finding became a change to the factory. Measuring, finding the constraint and fixing the system is the product.

A day and night in the factory, on a 24-hour timeline. Desk lanes run a dozen or more agents in parallel, supervisor desks answer routine questions for me, the dispatcher works the queue when I am not at the desk, reviewers cover every change around the clock, and nightly routines run the learning loop and a backlog sweep. I appear at three points: a 07:30 morning message, approving specs, and merging from my phone. Concurrency is a setting tuned to how fast changes can be reviewed, not a platform limit. The week behind it: 174 changes shipped, 1 question per 6 changes, and 94% end to end on its own.

Next on the line

  • Pacing against a weekly budget, so idle agents free their slot.
  • Turning the concurrency dial up as more review moves to machines.
  • A second build engine (Codex) for mechanical work, alongside Claude.
  • Automatic model switching as plan allowances run down.
  • Agents that wake when their work ships and finish the follow-up themselves.
  • Crash recovery from an agent’s own transcript.
  • Automatic shipping for routine changes once every check passes, shadow-tested first.
  • Routine decisions answered by policy, proposed to me until it earns trust.
  • Lessons harvested from the wider community and adopted by trial, not by install.

What this means if you lead technology

What you’re askingWhat I’ve seen first-handWhat I bring
“Our teams use AI coding agents. Is that safe?”Checks that couldn’t fail. Agents grading their own work.An independent read on your controls: AI Second Opinion
“A vendor says they’ll build it with AI in weeks.”What that speed really requires.A straight assessment before you sign
“We want the speed without the risk.”Two touchpoints and one real control per risk classAn operating model for AI-assisted delivery
“How do we know it’s paying off?”Weekly measurement, including when it got worseMetrics that separate output from activity
“We want our own line.”The same line installed across five productsHands-on leadership to stand one up: Services

Eighteen years in the rooms where technology programmes succeed or stall. Now I’ve built the factory myself.

Under the hood: for the technical reader

The page above is written for decision-makers. This section is for the engineers in the room.

Components

LayerWhat runs itHow it works
Work queue and spec storeLinearEvery ticket is the spec, with acceptance criteria and a close condition. Lane labels (cc-solo, cc-attended with a reason, oc-solo) and an Icebox state are set at filing. Decision points (“seams”) are structured comments, and long-form artefacts travel between surfaces as Linear documents, never copy-paste.
Spec pipelineFortyTwo (/42): Marvin as a Claude Project on claude.ai; Slartibartfast, Eddie, Trillian and Ford Prefect in Claude CodeStage-gated personas, each producing one artefact attached to the ticket (brief → engineering design → QA plan → outcome plan → decomposition). Stage labels advance only on operator approval. Decomposition writes leaves as direct children with explicit blocked-by edges.
Build lanesClaude Code (Opus 5.5 on quality-first products, Sonnet 5.5 on factory repos); OpenCode with GLM-5.3 on some productsAround 15 named tmux lanes on a dedicated Linux server, each in its own git worktree, started with a one-line /kickoff <ticket> or /sweep. Lanes own their PR gate loop end to end: request reviews, poll, re-run, classify reds, resolve threads. Each reports exactly one of “need an ack”, “green, ready to merge” or “blocked”.
DesksTwo Claude Code desk lanes (factory and CarerSupport)They read every lane’s pane, reply under standing rulings, hold major calls in shadow mode, and post their recommendation to Linear before the operator rules, so recommendation-against-ruling is measurable.
DispatcherA Node service on a timer, with a durable journalIt reads Linear for ready cc-solo tickets. Readiness means the blocker is Done AND its PRs are merged, no same-file collision with an open PR, priority products first, then dispatch-first, then oldest. It launches headless claude -p lanes in fresh worktrees: currently set to 4 at once and 3 per repo, guarded by free memory and live session count. Those are tuning settings matched to review throughput, not platform limits. Claims are read back to catch lost races. It holds at the plan’s usage wall rather than buying overage, waits out reviewer rate limits, resumes lanes that exit without a report, and pages seams.
Operator surfaceSelf-hosted n8n → Telegram dispatch bot; a Claude dashboard over LinearPages are answerable from their first three lines, with tap-to-answer buttons and a merge button. away / back comes from the phone. The 07:30 message lists only what needs action. PR buckets publish hourly to a Linear doc that the dashboard reads.
Fleet configurationA versioned claude-fleet-config repoDoctrine (CLAUDE.md), commands, skills and hooks, symlinked into Claude Code from a main-pinned live mirror. It pulls at session start, and a drift check blocks landing while the mirror is dirty. Critical guardrails are enforced at the system level, so no lane or extension can override them, and only reviewed extensions load. Skills are dual-homed across claude.ai and Claude Code and hash-verified against the deployed copy.
ReviewA risk-triage table as config; a low-cost CI pass (OpenRouter model, structured findings); hosted Codex review on every PR; CodeRabbit on quality-first productsThe unit of review is (repo, base SHA, head SHA, policy). Reviewers are read-only: one discovery pass per head, then a re-review of named findings only. CodeRabbit requests go through one central queue in dispatcher order. Major-plus findings are harvested into de-duplicated Linear tickets under a daily cap.
Merge gatesGitHub rulesets plus custom required checksA review-evidence check that fails rather than skips. A PR-body contract (Problem / Outcome / Evidence plus a ticket reference) checked in CI, with a claim ledger. Locked acceptance tests that agents can’t weaken. Paths only a human may merge. A human acknowledgement on high-risk changes that agents can’t apply and that expires when the code changes. A guard that every required check can actually report.
CISelf-hosted GitHub Actions runnerEphemeral, firewall-isolated containers on the factory server, with one-switch failover to hosted runners (proven live). Title and body edits skip the test suites.
Learning loopSession-close captures → nightly Anthropic cloud Routine → one consolidation PRCaptures travel through a Linear day ticket. The consolidator admits a rule to always-loaded doctrine only if it changes every session’s behaviour and can’t be enforced by a hook. Otherwise it routes to a skill, a scoped rule or a ticket. A net-zero size rule applies, and a size gate warns at 140k characters and refuses at 150k. Anything done by hand twice is automated.
Self-checksA weekly wired-check, mutation-tested guards, a vendor-wall probe, an n8n error railIt finds anything asserted but never provisioned, proves each guard can fail, names vendor outages and quota walls before a red is misdiagnosed, and reaps leaked review-broker processes. Agent transcripts are scanned for secrets, and agent configuration has periodic security audits.
MeasurementA per-ticket timing ledger, a dispatcher journal, weekly read-out scriptsOutput, intake, cost per merge, operator load and rework are measured against rolling baselines, with each measurement’s horizon stated.
Product stackNext.js on Vercel, Supabase Postgres (multi-tenant, RLS), Astro and Sanity for content sites, Cloudflare, Sentry, Better StackThe production lines the factory builds onto.

The numbers, in detail

MeasureValueWindow and method
Tickets completed670 (631 of them engineering)11 Sep – 23 Oct 2026, Linear Done state, factory team
Done end to end by agents94.3% (595 of 631 engineering tasks)Each ticket classified by what actually happened: attended = hands-on operator work. 139 were read in full, and an 18-ticket random spot-check agreed on 17
… CarerSupport only94.9%Same method
Operator hands-on tickets36Production go-lives, console and security settings, vendor accounts, physical box work, skill uploads
PRs merged, busiest week174 across 15 repos5–12 Oct; bots and consolidation PRs excluded; 62 launched by the dispatcher
Against the six-week mean2.5× (174 vs 69)Same method, previous six weeks
PRs opened / lines changed, that week197 / ~101,500Median 195 lines per PR
Claim → green PR0.68 h median, 2.87 h p90Lane timing ledger, 100 green rows
Review rounds per merged PR1.86Ledger rows that recorded rounds; 0.66 reviewer P1s per PR
Operator decision pages28 for 174 merges (0.16 per merge)Dispatcher journal; every merge by the operator’s account
Reverts0Seven weeks of merged PRs and commits
Recommendation agreement64% exact, 77% recommended option44 decision seams, 6–20 Oct; median 6.3 h from seam to ruling
Intake gate, first 24 hours31 proposals: 10 promoted, 19 folded, 0 needing the operatorScheduled triage run, Oct 2026
Reviewer calibration6 of 6 completed, 5 of 5 planted defects caughtHosted Codex review on seeded PRs. cubic, Greptile and Gemini Code Assist were replayed on the same heads and not adopted
Review-loop forensic55% of late P1s born in review-fix commitsn = 164 late P1s. This drove the move from “loop until clean” to one pass per SHA, and retired a 20× cheaper tiered loop with about 14,000 lines of code
Compute per merge, busiest week163k output tokens per merged PR (102k the week before)Claude Code transcripts on the factory server. More output, lower efficiency: the next lever is pacing, now in build