/loop
The Speccle loop.
Every skill drives the same loop, and it always stops at the same place: you own the criteria, so nothing gets built until you ratify them. Everything below that pause is either skill judgement that gets mechanically attested, or the deterministic oracle doing the attesting.
01
Input
A feature, in any form.
Prose, a ticket, a half-formed idea — or existing code you want brought under governance. implement-feature takes the first three; carve-feature takes the last, deriving the spec from what the code observably does.
02
Draft
SPEC.md + CONTEXT.md, in the feature folder.
One directory owns the whole vertical slice: acceptance criteria as H2 headings — ## [KEY-n] followed by one testable statement — with free-form bodies for rationale and edge cases, and a CONTEXT.md holding the feature's language and cross-criterion decisions.
03
Lint
Nine fixed rules over the criteria.
Structural rules police keys and ids; quality heuristics judge the heading statement only — weasel wording, compound criteria, unmeasurable outcomes. One severity, no configuration: a spec lints clean or it doesn't.
04
Ratify
The pause where you own the criteria.
Nothing gets built until you ratify the criteria. Every skill that drafts a criterion stops here — before the first test of a new slice, before a human-path test in strengthen, before a carved spec is claimed.
05
Build
Tagged tests and green code, one criterion at a time.
A test claims a criterion by carrying its [KEY-n] token anywhere in its full name — one describe block claims every test inside it. The tracer criterion goes end-to-end first; done means lint clean, every criterion claimed, all tests green.
06
Measure
Mutation + coverage → the per-criterion heatmap.
strength joins the specs with a Stryker mutation report and a coverage summary into killed ÷ covered per criterion. A criterion below 100% always lists its surviving mutants — the exact code changes no test noticed — with line coverage alongside as the naïve baseline.
07
Route
Every surviving mutant routed — never the score.
Each survivor is judged on what it breaks, not on what it does to the number. The routing decides who acts next: the agent when a criterion already promises the behaviour, you when the spec needs sharpening.
Machine path
A criterion already promises the behaviour the survivor breaks — a test gap. Write the killing test, re-run.
Human path
Nothing promises it — a spec problem. Draft a sharper criterion; you ratify it.
Equivalent mutant
No test could ever detect it. Annotated in the source — and rare.
Never a test fitted to a mutant: killing a survivor no criterion promises defends nothing. The routing exists to prevent exactly that.
Both feedback edges lead back to you or to a test.
A survivor a criterion promises becomes a killing test; a survivor nothing promises becomes a sharper criterion — which you ratify before anything is built against it. Round and round until every behaviour the spec promises is one the tests would defend. See the measurement half rendered live in the demo.