Skip to content
On this page

How I build · The delivery method

The one idea. The model builds; the human specifies, reviews and signs. Every phase passes through gates, and a gate has two outcomes only: approved or revise. A revise returns to the artefact. It does not proceed "with the finding noted".

Reading path. Entry from The harness, the case study. The rules and hooks that hold these gates in place are on How I build · The harness; the documents the gates read and write are on How I build · The artefact set; the operating documents that run each session, and what happens when they drift, are on How I build · The operating model; what changed between the planned and the built system is on a later How I build page, Plan versus as built. The method was built on a sovereign OSINT platform built for a defence innovation challenge, and went unchanged to a second product, MyWarren.

It is written down as one SOP of about 66 KB in twelve parts: definitions, bootstrap, then a contract each for the session, delivery, memory, economics, enforcement and delegation, a failure catalogue, how to scale it down, what it is not, and a one-page reference card. This page covers the session and delivery contracts. The SOP itself stays private; what follows describes it.

1 · Three gates before the first action

Every session answers three questions out loud before it does anything substantive. Each is independent: a session can pass one and fail another.

GateThe questionThe test
BudgetDoes this step fit the usage that is left?Ask for current usage against the limits, estimate the step, and name which economy rules bring the estimate down. "It fits" on its own is not an answer
Scope shapeDoes this session stop at a written spec, or carry on into the build?Decided by the work's risk shape, not by the budget (below)
ModelWhich model runs it, and why?If being wrong would be found later by someone reading a document rather than by a failing test, it goes to the strongest reasoning model. Mechanical execution against something already written down goes to a cheaper, faster one. The reason is stated, so the human has something to overrule

The scope-shape test. Self-contained work — it extends existing structures, adds no unproven component, has no unresolved external dependency — is specified and built in one pass; splitting it only re-derives context. Risk-heavy work — a new component whose behaviour must be validated, an open licensing or availability question, or a measurement that everything downstream will be designed against — is specified, its open risk resolved, and stopped for review, even when the budget is ample. The cost being avoided is not tokens. It is an implementation built on an assumption that scoping alone might have overturned.

Two rules follow from the model gate. Decide at the gate, not mid-flight: switching model partway pays the context handover twice and lands the new model inside reasoning it did not build. Name a mixed session's split rather than averaging it: mechanical breadth goes to a sub-agent on a cheaper model, and the judgement stays in the main thread.

This site runs two of the three: the budget gate was dropped here by decision on 2026-10-18, and the scope-shape and model gates still open every session. This page was scoped as writing from files already on disk and given to the strongest model, because a wrong claim here would be caught by a reader, not by a test. Its build log is a later How I build page.

2 · The phase spec, written before any code

Every phase gets a written specification before any code is written. That is what makes a wrong decision cheap: it is caught while it is still a paragraph. One master scope document per milestone pins the component order, the phase sequence, the non-functional framework and the evaluation gates; each phase spec draws from it and does not repeat it.

The phase spec has a fixed skeleton:

SectionWhat it holdsThe rule on it
Status lineOne of three: draft, approved for build · built, awaiting sign-off · signed off, with approver and dateNever "complete" before sign-off (§4)
ObjectiveWhy the phase exists, framed for the end user—
Design decision · scope decision · model choiceThe key choice, named; what is deliberately deferred; the model or technology, with the reasonA deferral is recorded so it is not re-litigated
What must be true — the contractInterfaces, data shapes, validation rules, acceptance criteriaCheckable by a reviewer without agreeing to any implementation
How it will be builtComponents, sequence of operations, integration choicesKept apart from the contract: the two change at different rates
Out of scopeWhat is recorded for later—
Non-functional targetsEach with a numeric bar: latency percentiles, throughput at a stated scale, restart and replay integrity, index coverage, backpressure, storage growthDeclared now, measured live before sign-off
Evaluation planDataset, metric, floorPinned before implementation. A missed floor is reported, never quietly absorbed
Exit checksThe literal script run before sign-off; each check names its mechanism"Tests pass" is not an exit check
Sign-offDate, approver, measured values, demo reference, tag—

The skeleton is a download: Phase spec skeleton, headings and field lists only, beside the five on The artefact set §4.

Two recording rules carry more weight than they look:

  • Non-functional targets are declared before the build starts. Declared afterwards, they are set to whatever was achieved.
  • A spec is never written to justify work already done. If the work outran its spec, the progress log says so, and the spec is written for what remains.

What a written floor did, measured. On the OSINT build, the credibility engine's band-agreement floor is 85.9 % and its measured agreement 94.4 %. The floor is encoded in a gate script, and that script blocked a proposed change costing 6.6 %. Measuring the generation layer's latency showed prefill at 78 % of it, and the retrieved context was cut from 8 × 900 to 6 × 700 characters in response.

3 · Review by role, before the human sees anything

A specification reviewed only by whoever drafted it, and then by the human, has had one pass — while the code that implements it gets a dedicated review. That is backwards: a wrong decision is cheapest to fix as a paragraph and most expensive as a schema with data in it.

So review roles are assigned per artefact type, not per person. Even with one human, the roles catch different things, and separate passes with separate framing find more than one pass wearing every hat.

ArtefactReview rolesWhat the role asks
Scope or proposalProduct fitment · architectureWould the end user notice if this did not exist? Does it take a dependency the project has committed not to take?
SpecificationProduct fitment · testabilityCan every exit check be mechanised? Can any acceptance criterion not be falsified?
Design or planEngineering soundness · architectureDoes it hold under the failure modes the system actually has?
ImplementationCode reviewFindings only; the reviewer writes no fix

The roles are staffed by sub-agents, each with its own framing and a narrow write scope. On the OSINT build these were a spec drafter, a test lead, a code reviewer and an end-user subject-matter expert (The harness §3). The gate runs before the human sees the artefact: the human is the last gate, not the first reviewer, because theirs is the scarcest time in the process.

The whole loop, from the pinned master spec to the retrospective:

The phase-gate diagram and the sign-off log form are offered as skeletons on The artefact set §4.

4 · Sign-off needs three things

A phase is not done until all three hold:

  1. An end-to-end test exercises the new deliverable against the live system — idempotent and re-runnable, extending the existing check script or adding one for the phase.
  2. The live outcome is demonstrated with real data the approver can see — query output, a rendered page, a message on a queue. Not a description of it.
  3. The approver explicitly approves.

Until then the status reads built, awaiting sign-off — never complete — and the item sits in a standing index, because items in limbo otherwise become invisible.

Two rules keep the protocol honest. "Blocked" is not the default when the approver is away: the actual dependency footprint of the check is examined first, and most checks need far less than the full environment. Hand-seeded data is declared as such: a screenshot of hand-seeded data proves the page, not the pipeline that would normally fill it.

What a binary gate did, measured. The generation layer's gate required citation validity of 100 % (43 of 43) and abstention on 12 of 12 unanswerable questions. A smaller candidate model was rejected at the gate, abstaining on 9 of 12: a pass or a fail, not a trade-off argued in review. Across the OSINT build: 45 phase specs, 29 phase sign-off tags, and 1,711 tests passing on 2026-08-28.

5 · Measured versus projected, never blurred

Two ladders, kept apart:

  • Every performance number is recorded as measured — a real run, at a stated scale — or projected — a capacity model, labelled as one. A projected number is never quoted as a benchmark.
  • Development-scale and production-scale figures stay separate. A demonstration claim never silently substitutes one for the other.
  • No production-scale throughput is quoted until a staged load test has produced it — the load stepped up and the curve shown.
  • Targets that are out of scope for now are not dropped. They stay in the spec as production gates.

The rule applied to this page's own figures:

FigureKindNote
USD 661.57 model spend for the OSINT buildMeasured — metered—
~355 person-days of scope for the same buildEstimated — not measuredShown beside the spend for scale only; this page quotes no ratio between them
Hybrid retrieval P95 80.6 ms rising to 182 ms, against a 200 ms barMeasuredLogged as a backlog item as it approached the bar, not absorbed. The corpus size at measurement is not recorded here, so it is not a production-scale figure

6 · Stated honestly

  • One human holds the last seat at every gate. The person who writes the master spec also reviews and signs. The role-shaped passes reduce what reaches that person; they do not make the sign-off independent.
  • The OSINT build's reviewers were scoped by prose. Each sub-agent's write scope was stated in its instructions, not enforced, and the code reviewer's "do not edit" is a prose rule (The harness §3 and the diagram above). Later projects moved scope into tool lists and hooks.
  • 1,711 is a count of tests, not of coverage. The adversarial quadrant had 0 tests, and retrieval quality has no eval yet (The artefact set §5).
  • The SOP is the method as written. It went to the second product unchanged; how fully each gate ran there is told with MyWarren, not here.
  • 45 specs and 29 sign-off tags are not the same population. The difference is not broken down on this page.

Measured figures on this page

FigureSource
45 phase specs; 29 phase sign-off tags; 1,711 tests passing (2026-08-28)the OSINT build's specs, sign-off tags and test run
Band-agreement floor 85.9 %, measured 94.4 %; gate blocked a change costing 6.6 %the OSINT build's eval gate script
Prefill 78 % of latency; context 8 × 900 → 6 × 700 charactersthe OSINT build's generation-layer latency measurement
Citation validity 100 % (43/43); abstention 12/12; candidate rejected at 9/12the OSINT build's generation-layer sign-off gate
Hybrid retrieval P95 80.6 → 182 ms against 200 msthe OSINT build's retrieval measurements
USD 661.57 metered; ~355 person-days of scope (estimate)the OSINT build's metered model spend and scope estimate
Adversarial quadrant 0 teststhe OSINT build's test inventory
SOP ~66 KB (66,238 bytes), twelve partsthe SOP file, measured 2026-10-17; The harness

What this page does not claim

  • No count of code reviews or RCAs. The code-review count differs between two sources, and the RCA count is not yet cleared for quotation; neither is quoted until both are reconciled.
  • No savings ratio. Spend and estimated scope sit side by side; no multiple of cost or duration is claimed.
  • No claim that every project ran every gate in full. The loop is the OSINT build's; other projects run it in some form.
  • No claim that the eval gate ran in CI. It is a script that encodes the floor.
  • The SOP is not reproduced. Its gates, roles and spec headings are described and re-typed; its text stays private.