Guardrails

A gate counts only after every planted defect makes it fail. Its proof is pinned to a hash of its definition; change the gate and the proof must be made again.

GateProtectsPlanted defects that must fail itProof
tone-and-next-stepNo message to a student scolds, reads above their level, or reports a problem without a next step (PRD P3, P4).planted scolding message; planted message with no next stepvalid acc3ce507609
student-sendsNothing reaches an outside party without a single-use approval token for that exact content (PRD P9).planted dispatcher that ignores tokensvalid 9291ad61107c
safety-routerCrisis messages, including held-out phrasings, route to 988 before any model (PRD SAF-1).planted router that only knows one phrasevalid 6b40e067a399
freshnessA catalog entry past its freshness window is never offered as available (PRD P11).planted finder that ignores freshnessvalid fcbe74161315
sealed-factsA sealed fact never appears in a message unless the student released it to a playbook that needs it (PRD P10).planted message quoting the sealed factvalid 83a937648736
evidence-pseudonymousThe evidence store holds no student identifiers or content.planted evidence row with a phone numbervalid 0090315f6b70
no-status-questionThe team never asks about citizenship or immigration status (PRD NAV-7).planted citizenship questionvalid a385b8910465
snap-income-oracleSNAP income results match the published FY2027 table at and just over every limit (record-derived oracle, Pattern 17).planted off-by-one limitvalid 476d7f2fa140
journey-lockNo change can edit or remove the journey cards it is judged by (Pattern 18).planted lock missing a cardvalid cc9247717e08
community-moderationHarmful or risky posts never surface in the community (PRD COM-5).planted community with no filtersvalid ea36f3492c71
no-dead-endsEvery button any agent offers works, in the app and by text (PRD P3, P8).planted registry missing a handler; planted handler that answers with no next stepvalid 6e53f2ec92ae
docs-linkedEvery test file names the document it verifies, that document exists, and every document is verified by a test.planted test file with no doc; planted link to a missing docvalid 4dc1f4192ee8
no-hidden-egressOnly the model client and the egress block may reach the network; domain, agent and server code cannot (PRD P2).planted fetch in a domain filevalid 6b1258fc1bb0
pattern-coverageAll 33 ZTHR patterns are implemented, each points at files that exist, and each is proven by a test (and a gate where it names one).planted map missing a pattern; planted proof that does not existvalid 2b875b39253f
findings-registerEvery finding we have not fixed is written down with a reason, an owner and an expiry, and none has expired (Pattern 13).planted expired finding; planted finding with no ownervalid 632a7ae48af5
zero-bypassEvery required check runs in the live pipeline, none may fail and none can be skipped (Pattern 7).planted pipeline without the gates step; planted step allowed to fail; planted step that swallows failurevalid 3debb42e2ae0
authorship-tiersEvery file belongs to an authorship tier and every tier names a guard that enforces it; the open tier comes last (Pattern 6).planted tier with no guard; planted open tier firstvalid 1f87e495db71
held-outNo rule is written against its own evaluation set: a held-out line that appears in a rule is caught, to be retired (Pattern 32).planted rule written against a held-out linevalid 987f0ab15c23
sensitive-dataEvery field the app keeps is classified, and a planted marker in each personal, sensitive and secret field turns up only where its class may go.planted field with no class; planted income marker in the evidence log; planted field the trace never exercisedvalid 6f4ea8d980b0
block-libraryEvery block has its own tests, a page saying what to use it for and what not, at least one consumer, a mutation score at or above its floor, and no copy of its code inside an app.planted block with no tests; planted block nothing uses; planted block under its mutation floor; planted block with no purpose page; planted app copy of a block functionvalid b23795afc27f