One Command, Three Gates
hybrid-build-harness, SunriseIntelligence, 5 September 2026

The relay between the two models becomes a command. The human stays at the three gates that carry judgement.

Today the review model and the executing model each live in a chat tab, and every pack, stop and amendment travels between them by hand. The harness moves that traffic as files, applies the mechanical edits itself, and asks the human only where the rulebook already says a human decides.

Today: every message passes through the human
Review model Executing model The human Bundle chat tab chat tab copying schedules and workbook pack paste stop paste amendment paste checkpoint edits by hand, one tab open reads, decides copies out copies back looks, says go and repeats
One round moves seven times through the clipboard. Four of those carry no decision, and the executing tab edits the bundle itself, so a slip in a paste is a defect in a contract schedule.
With the harness: files move, the human is asked three times
Review model Executing model Harness Bundle and registers drafts the pack pre-flights, reports applies and asserts every edit, stop and gate on the record pack run exit code 0, 2 or 3 stop report amended pack edits, registers asserts every count first writes the report as a file resumes from the failed item 1 ratify 2 checkpoint go 3 approve
The same round, on the same grid. The four clipboard crossings that carried no decision are gone. The three that carried one are now explicit gates, each recorded with who answered and how long they took.
copied by hand moved as a file or a call a moment the human is asked

The rulebook keeps its three gates. Only the courier changes.

Mark's standing rulebook already names the points where a human must decide. The harness does not add or remove one; it removes the pasting between them.

Who acts at each point of a round, today and with the harness
Point in the roundTodayWith the harness
Decisions settled, pack writtenReview model with the human in chatReview model, using tools that count against the bundle before it submits; if it needs a decision first, it asks and the human answers in one line
Pack ratified before any buildThe human reads it in the tabThe human sees every old and new wording in full, types the round number
Pack carried to the executorThe human pastesNobody: it is a file
Edits applied, counts assertedExecuting model, by handThe harness, in code, all of a stage or none of it
Checkpoint after the riskiest stageThe human reads the report in the tabThe human reads the report file, one keypress to continue
A stop carried back for an amendmentThe human pastes, twiceNobody: the report becomes the reviewer's next message
Amendment approved, run resumesThe human pastes againThe human sees the one-line diff, one keypress

What changes for the person running it

One command, not two tabs

A round starts with one command in a terminal and ends with a round report. The models are told what they may touch and cannot reach past it.

The mechanical half runs as code

Counting, replacing, registering and stopping are done by the harness, keyless. A model is asked only for what code cannot do: judge a comment, write a wording, read a page.

The record writes itself

Every edit, stop, gate answer and model turn lands in append-only registers inside the bundle, so a fresh session can pick the round up from the files alone.

What you need

Python 3.12 and the repo

Clone, create a virtual environment, install. The keyless selftest proves the core works before any model is involved.

Your claude.ai plan, or an API key

Since June 2026 every claude.ai plan carries a monthly Agent SDK credit (Pro $20, Max 5x $100, Max 20x $200), claimed once in your account. The harness's default backend runs on that credit through the Agent SDK, logged in with your own Claude account. An Anthropic Console API key is the other path, pay as you go, and the right one for an enterprise deployment.

No Claude Code in your day

You never open Claude Code. The subscription backend installs the Agent SDK, which carries the Claude Code runtime as a library; the API backend uses the plain client SDK. Either way the loop is one command in a terminal.

What exists today and what is still to build

State of the repo as at 5 September 2026
PieceStateWhat it does
Deterministic coreBuiltParses a pack, asserts every count in a stage before writing, applies, registers, stops, checkpoints, resumes from the failed item. Keyless. Tested.
Reviewer tools and draft checkBuiltChecks a draft pack against the bundle before a human sees it and refuses to accept an unclean one; a command does the same with no model. Keyless. Tested.
Config, client seam and transcriptsBuiltWhich models run each role, recorded with every round; every model turn appended to a transcript the round can be rebuilt from. The live client itself is not yet connected.
Executor conversation and gatesBuiltThe pre-flight, the run, the four gates, the state machine. Runs end to end on scripted models with no key.
Live model backendsBuiltSubscription path through the Agent SDK (default) and API-key path through the client SDK. The subscription path has run live twice on a real login: the first run stopped to ask four scoping questions, the second submitted a clean pack. Each cost between one and two dollars of the monthly credit.
Render and measureBuiltRulebook Part 5: a pack item renders a page to an image, measures its ink and its drift from a reference, keeps the render as evidence, and stops the round if the page is blank or drifted. A missing renderer stops rather than passes.
Post-round verification and the concurrent-modification stopBuiltAfter a round the review model independently re-tests the bundle against a deterministic diff and files a verdict. A file changed by anything other than the harness between ratification and a run fails the round with the rulebook's quarantine instruction.
Exit codes the plain run returns, so a script or a person can tell the states apart without reading the report
CodeMeaningWho answers it
0Round complete, report writtenNobody: the bundle goes back to the review model for its own check
2Checkpoint stage complete, report waitingThe human
3Something did not match, stop report waitingThe review model, with an amended pack

The next thing to agree

The pack format is the contract between the two models, and it is generic: exact old text, exact new text, an asserted count, grouped into stages with at least one checkpoint. It fits any build where a change can be stated that way, which covers contracts, reports, bid packs and generated code alike.

What it needs now is one real round, on synthetic material, run against it. That is the point at which the format either holds or gets amended through the rulebook's own loop.