Registry — Gate ledger
SSOT of conformance-gate lifecycle state, per
policies/gates.kmd(stack-RFC-014 R3R5) and consumed by `taskskanon-gate.md(the/k-commit §5b3gate). One row per gate (akanon_bindingsclause that declares agate:). The ledger is what the soak posture and the automatic demotion (R5) read: a gate staysadvisoryuntil its row shows a clean soak, and a gate that exceeds itsfp_budgetis demoted back towarn` with a recalibration ticket.Schema (columns):
gate_id—<doc-rel-path>#<clause-id>(e.g.specs/landing-pages/products.kmd#req-landing-responsive).declared— thegate:level in the doc (advisory|warn|block).posture— the EFFECTIVE level enforced today (advisoryduring soak; raised todeclaredonce clean).fp_budget— false-positive budget (default2/30d).fp_count— confirmed false positives in the current window.last_override—<actor> <iso-date> "<reason>"of the most recent audited escape-hatch use (R4), or—.notes— promotion/demotion provenance.
| gate_id | declared | posture | fp_budget | fp_count | last_override | notes |
|---|---|---|---|---|---|---|
specs/landing-pages/products.kmd#req-landing-responsive |
block | advisory | 2/30d | 0 | — | soak start 2026-06-22 (koder-tools#056); promote to block when clean |
policies/gates.kmd#req-block-has-budget |
warn | warn | 2/30d | 0 | — | structurally enforced by koder-spec-audit bindings (kanon-block-without-budget) |
specs/audit/frontmatter.kmd#req-frontmatter-conformance |
block | advisory | 2/30d | 0 | — | meta-lint: path-scoped ({changed}) frontmatter check on any metadocsstack edit; soak start 2026-06-22; promote to block when clean |
Promotion rule (
policies/gates.kmdreq-promote-soak): a gate movesadvisory → warn → blockonly when its row shows zero confirmed FP across the budget window. Editposturehere (not the doc'sgate:) to roll out; the doc'sgate:is the CEILING, the ledger'spostureis the live value.Live as of koder-tools (read-side):
koder-spec-audit gatereads thisposturecolumn at commit time and resolves the effective gate asmin(declared_ceiling, posture)(then the--advisoryCLI cap). So promotion advisory→block is genuinely a one-line edit of this column — no rebuild, no doc edit. The WRITE-side (audited override appendinglast_override/fp_countand auto-demotion R5) is koder-tools#057.