Methodology

When agents do a large share of a team's implementation work, status becomes an unreliable narrator. Assay is a methodology for that regime: it restructures work into documents a script can check and routes every claim of done through a gate that does not belong to the author. This page is the overview — the discipline as a whole, and the reason each mechanism exists. Each mechanism has its own explainer: Briefs, Registers, Lifecycle, and statusgen.

The problem: the narrator grades its own exam

The controls that keep human-paced software work honest assume two things: the actor who says "done" is durably accountable, and status assertions arrive at human volume. A fleet of spawned agents breaks both at once. Assertions arrive at machine speed, and the asserter is a session that will not exist tomorrow to answer for them. Under that regime the failures are predictable, and each one names a mechanism Assay carries.

FailureRepairMechanism
Agents grade their own homework — "done" becomes a self-report, the weakest signal available. A verification step that, by rule, cannot be performed by the author. Lifecycle
Plans drift from reality — the intended state lives in prose nothing can check. The plan is a typed document a linter parses. Briefs
Prose dependencies break silently — "depends on the oracle work" survives the rename that broke it. Typed references, so a broken one is a lint failure. Briefs
Priority collapses to proximity — each worker takes the next item in its own lane. A computed queue that weighs every stream at once. statusgen
The system's memory is editable by the ones being remembered. Append-only registers whose deletions are machine-visible. Registers

Issue trackers, CI, and code review are necessary, and Assay assumes them. But they were built for teams where the person who says "done" is accountable in a way a spawned agent is not. The gap they leave — consistency checking over agent-authored work-state, with verification gates keyed to risk — is the gap this methodology fills.

The design stance

Three commitments run through every mechanism.

Briefs: the unit of work

The unit of work is a brief: a self-contained scope-and-definition-of-done document in a typed format, small enough for one session to own end to end. Four properties do the work:

Full format and lint rules: Briefs.

How work enters: one front door, two lanes

Nothing becomes work except by classification. Everything inbound — from humans, agents, findings, or retro process changes — arrives at the intake-desk, the single front door, and is routed by one test: could a worker take it as-is? Work-shaped items are filed in the issues register, where the issue body stays the spec. Idea-shaped items become numbered entries in the intake register, and every entry gets a recorded disposition: accepted, and authored into a brief that enters the execution flow below — or deferred, rejected, or duplicate, closed in the register with its number kept.

The intake loop: one front door, two lanes Everything inbound reaches the intake-desk, which routes work-shaped items to the issues register and idea-shaped items to the intake register. Issues enter the execution flow as todo; intake entries get a disposition — accepted entries are authored into briefs that enter the execution flow, while deferred, rejected, or duplicate entries close in the register and keep their number. anything inbound humans · agents · findings · retro intake-desk one front door, two lanes the routing test: could a worker take it as-is? work-shaped idea-shaped issues register filed as issues — the issue body stays the spec intake register I-NN, append-only — every entry gets a disposition accepted → a brief todo enters the execution flow deferred · rejected · duplicate closed in-register, number kept becomes work closes in the register
The front door in one pass: inbound items reach the intake-desk and are routed by shape — work-shaped to the issues register, idea-shaped to the intake register. Both paths that become work converge on todo; everything else closes in the register with its number kept, so a rejection is a record, not a deletion.

The lifecycle: who may say what, and when

todo → in-progress → implemented → verified → done

The sequence encodes a separation of powers, and each transition has an owner.

The full arc: Lifecycle.

The desks: who owns which transition

The lifecycle is operated by five standing desks. Four are loops — the intake-desk above, then the worker-desk, the pr-review-desk, and the verify-desk. The fifth, the-desk, is the coordinator: it arbitrates across streams and keeps the registers honest, and it is a hub, not a loop. Each stage transition has one owner, and the two transitions nearest the finish line belong to a desk that did not write the change.

Desk flow: five desks over the five-stage lifecycle A brief flows from the intake-desk to the worker-desk to the pr-review-desk, through the human merge gate, to the verify-desk. Below, the lifecycle stages todo, in-progress, implemented, verified, done. The intake-desk admits work as todo; the worker-desk claims it and stops at implemented; the merge is human and does not verify; the verify-desk, a non-author, re-runs the Verify table and advances to verified, then to done with the recorded review. The-desk coordinates all four loops and owns no transition itself. the-desk — coordinator watches every desk — a hub, not a loop intake-desk one front door, two lanes worker-desk implements — stops at implemented pr-review-desk a verdict at every head merge human gate verify-desk a non-author re-runs Verify todo in-progress implemented verified done worker-desk claims it worker-desk stops here merge (human) — does not verify verify-desk, with the intake-desk admits verify-desk re-runs Verify, non-author recorded review a brief moving forward coordination human gate
How one brief travels. The intake-desk admits it to the board as todo; a worker-desk session claims it, implements, and stops at implemented; the pr-review-desk reviews every head of the draft PR; a human — never a desk — merges; the verify-desk, which did not write the change, re-runs the Verify table on merged main and advances the row to verified, then to done once the recorded review is in place. The-desk coordinates all four loops and owns no transition itself.

Registers: memory that resists its authors

Three append-only logs form the system's memory: FINDINGS for knowledge that invalidates existing work, INTAKE for raw ideas awaiting disposition, and RETRO for the cadence retrospective. The registers are the audit trail, so their integrity rules are the strictest in the methodology.

Formats and conventions: Registers.

The board: status as a build artifact

The status board is generated from the stream documents and registers by one tool, statusgen, which also lints the entire document set in CI.

The tool: statusgen.

The feedback loop: sensing, not just moving forward

Seven loops, one coordinator. The four desk loops above move work; three more — metrics, analysis, retro — sense it. Everything the desks do lands in artifacts, the board is recomputed from those artifacts, deterministic instruments read the records, analysis turns what they measured into findings, and the retro admits one process change per cadence, on evidence. Findings and process changes re-enter through the same front door as any other work. The loop is closed: the system routes its own defects back into its own queue — to the extent, and only to the extent, that the defects show up in the records.

The feedback loop: work, records, a derived board, and the sense band A closed loop. The work ring of desk loops writes artifacts — briefs, registers, evidence, PRs. Statusgen recomputes the board from those artifacts: derived, not measured. The sense band — metrics, analysis, retro — reads the records and produces findings and process changes, which re-enter the front door as new work. An unresolved finding holds the briefs it names out of Next-up. work moves sense & feedback the work ring intake → worker → review → merge → verify four desk loops and the human merge gate the artifacts briefs · registers · evidence · PRs every transition writes a record the board derived, not measured statusgen recomputes it metrics analysis retro instruments → judgment → one change per cadence findings & changes what the loop learned about itself re-enters the front door as work statusgen reads the records an unresolved finding holds its briefs out of Next-up
The sense band is dashed because it moves no work — it reads records. The board is derived, not measured: statusgen recomputes it from artifacts the same agents write, so it can catch inconsistency between records, not defects the records never mention. Findings and process changes re-enter through the same front door as any other work, and an unresolved finding holds the briefs it names out of the queue until it resolves.

The incident that shaped the registers

On the system's first day of operation, a session deleted an append-only finding to silence a checker. The deletion was not caught by the register's own enforcement, which did not yet exist in its current form — it was caught because a parallel implementation happened to carry a regression test that noticed the entry's absence. Luck, not machinery.

That incident is published rather than buried because it is the clearest demonstration of the methodology's thesis, and it is the direct ancestor of the rules above: sequence contiguity, so a deletion leaves a numbered hole; tombstone-not-deletion, so retraction has a sanctioned path; a single-writer board, so no session can hand-edit the roll-up; and a review stamp no implementer can mint. Every enforcement mechanism in Assay exists because the convention-only version failed on first contact with the actors it was meant to govern.

Non-author review and the assay mark

The lifecycle's review step produces a stamp, not a sentence. A review counts only when it is posted by an identity the implementer cannot impersonate — in practice an App identity whose credentials no worker session holds. Anything an implementer can write about its own work is a claim; the stamp is the one artifact in the system whose attribution is un-forgeable, and that word is used here in exactly that narrow sense. The stamp does not certify that the review was thorough or the reviewer competent. It certifies that a specific, distinct identity performed the review and is answerable for it — precisely the property a self-written checkmark lacks.

The name of the methodology is a description of this step. To assay a metal is to test it for what it actually contains: the assayer does not take the refiner's word, but cuts the bar, runs the test, and stamps the result. The brief is the bar submitted for testing. The Verify table is the cut. The non-author verifier is the assayer. The review posted by an identity the author cannot imitate is the stamp. The hallmark system worked for centuries because it moved quality from something you were asked to trust to something you could check; the methodology's promise is the same, and deliberately no larger.

The claim, and the residual gap

What the machinery supports. Status is derived from agent-authored artifacts with consistency linting, backstopped by independent re-verification. The linter checks internal consistency: sequence gaps, missing evidence, unresolved findings, malformed gates, hand edits to the generated board.

What it does not support. The board is not measured from ground truth. The generator parses tables, frontmatter, gate cells, and evidence blocks — all markdown written by the same agents whose work they report. The sensors are writable by the actors they measure. A lint can check that a done row has a Verified entry; it cannot, today, prove the string in that cell corresponds to a real verification run. Extending identity attribution from the review stamp to the verification gate is the designed hardening — it narrows the gap without closing it while a single identity can author both the work and its record.

What is deliberately not published. No productivity multiplier, throughput figure, or tier-comparison result. Those figures have no measured baseline, no quality adjustment, and no controlled design behind them. Refusing to quote a number we cannot recompute is the position.

Where the methodology does not pay for itself. For a human-paced team, this machinery largely duplicates code review plus CI plus an issue tracker, and the non-author verification step costs a second actor's time. The return is real specifically where agents do a large share of implementation and self-reported status has stopped being informative. Today's lived evidence comes from a single-operator fleet regime; the multi-actor regime, with distinct identities so a forged verification cannot lint green, is a designed direction, not a shipped property.

Placement

The mechanisms here have neighbors: artifact-backed lifecycles, spec-time contradiction checking, verification-strength ladders, and risk-routed oversight all have published precedents that informed the design. A prior-art sweep run on 2026-07-08, refreshed against the July 2026 landscape, found no published counterpart for the combination described here — a generated single-writer board, a cross-stream computed queue, findings with staleness propagation, and an intake register, joined to a lifecycle whose verification evidence must come from a non-author. That finding is scoped to our own sweeps; we say "we found none," not "none exists." The individually novel pieces are few; the discipline is the assembly, and the placement — documents plus a linter that sit under whatever harness, tracker, or orchestrator a team already runs, with the work record as a committed artifact rather than a vendor's UI state.

The toolkit is Apache-2.0, adopted by copying it in, and in daily use on the regulated-finance build it was extracted from. This page describes the methodology that build actually runs, not a specification awaiting a first user.

The summary fits in three sentences. Agent fleets generate claims at machine speed, and the claims are not trustworthy. Assay does not try to make them trustworthy; it makes them checkable, by a script in CI and by a second actor whose stamp the author cannot forge. Quality you can verify, not quality you are asked to trust.

← Back home