Waits attach to any record, not just findings

Adopting a rule is nobody's finding; neither is registering a canon kind
or publishing a document. Each obligation that lived outside the
mechanism was invisible to it. RISK-WP-0001 now carries both of its
custodian waits, and the escalation-rule one has the register's most
uncomfortable default pointed inward: unadopted by 2026-09-17 means
recorded as de facto in force but unratified, said on the face of every
escalation sent under it. A draft that quietly governs is exactly what
this register exists to notice.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
tegwick 2026-08-20 23:18:52 +02:00
parent 9a22a2adc5
commit 3a0ba5d427
6 changed files with 54 additions and 8 deletions

View file

@ -10,7 +10,7 @@
| --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- |
| workplan | RISK-WP-0001 | active | — | workplans/RISK-WP-0001-make-the-register-decidable.md | | workplan | RISK-WP-0001 | active | — | workplans/RISK-WP-0001-make-the-register-decidable.md |
| workplan | RISK-WP-0002 | active | — | workplans/RISK-WP-0002-publication-handover.md | | workplan | RISK-WP-0002 | active | — | workplans/RISK-WP-0002-publication-handover.md |
| workplan | RISK-WP-0003 | active | — | workplans/RISK-WP-0003-regulatory-intake.md | | workplan | RISK-WP-0003 | blocked | — | workplans/RISK-WP-0003-regulatory-intake.md |
| workplan | RISK-WP-0004 | finished | — | workplans/RISK-WP-0004-run-the-register.md | | workplan | RISK-WP-0004 | finished | — | workplans/RISK-WP-0004-run-the-register.md |
| task | RISK-WP-0001-T01 | done | — | workplans/RISK-WP-0001-make-the-register-decidable.md | | task | RISK-WP-0001-T01 | done | — | workplans/RISK-WP-0001-make-the-register-decidable.md |
| task | RISK-WP-0001-T02 | done | — | workplans/RISK-WP-0001-make-the-register-decidable.md | | task | RISK-WP-0001-T02 | done | — | workplans/RISK-WP-0001-make-the-register-decidable.md |
@ -23,10 +23,10 @@
| task | RISK-WP-0002-T01 | progress | — | workplans/RISK-WP-0002-publication-handover.md | | task | RISK-WP-0002-T01 | progress | — | workplans/RISK-WP-0002-publication-handover.md |
| task | RISK-WP-0002-T02 | done | — | workplans/RISK-WP-0002-publication-handover.md | | task | RISK-WP-0002-T02 | done | — | workplans/RISK-WP-0002-publication-handover.md |
| task | RISK-WP-0002-T03 | done | — | workplans/RISK-WP-0002-publication-handover.md | | task | RISK-WP-0002-T03 | done | — | workplans/RISK-WP-0002-publication-handover.md |
| task | RISK-WP-0003-T01 | todo | — | workplans/RISK-WP-0003-regulatory-intake.md | | task | RISK-WP-0003-T01 | wait | — | workplans/RISK-WP-0003-regulatory-intake.md |
| task | RISK-WP-0003-T02 | todo | — | workplans/RISK-WP-0003-regulatory-intake.md | | task | RISK-WP-0003-T02 | done | — | workplans/RISK-WP-0003-regulatory-intake.md |
| task | RISK-WP-0003-T03 | todo | — | workplans/RISK-WP-0003-regulatory-intake.md | | task | RISK-WP-0003-T03 | done | — | workplans/RISK-WP-0003-regulatory-intake.md |
| task | RISK-WP-0003-T04 | todo | — | workplans/RISK-WP-0003-regulatory-intake.md | | task | RISK-WP-0003-T04 | done | — | workplans/RISK-WP-0003-regulatory-intake.md |
| task | RISK-WP-0004-T01 | done | — | workplans/RISK-WP-0004-run-the-register.md | | task | RISK-WP-0004-T01 | done | — | workplans/RISK-WP-0004-run-the-register.md |
| task | RISK-WP-0004-T02 | done | — | workplans/RISK-WP-0004-run-the-register.md | | task | RISK-WP-0004-T02 | done | — | workplans/RISK-WP-0004-run-the-register.md |
| task | RISK-WP-0004-T03 | done | — | workplans/RISK-WP-0004-run-the-register.md | | task | RISK-WP-0004-T03 | done | — | workplans/RISK-WP-0004-run-the-register.md |

View file

@ -112,6 +112,25 @@ So the waiting list is built from **every** finding, not from the watched ones.
A closed record with an open obligation is precisely the thing that goes quiet, A closed record with an open obligation is precisely the thing that goes quiet,
because nothing is prompting anyone to look at it any more. because nothing is prompting anyone to look at it any more.
## A wait is not a findings-only idea
Adopting a rule is nobody's finding. Registering a canon kind is nobody's
finding. Publishing a document is nobody's finding. All three are obligations
someone owes, and each one that lived outside the mechanism was invisible to it.
So waits attach to **any** record this repo keeps — findings, regulatory
records, workplans — and `make check` reports them together. `RISK-WP-0001`
carries two: the escalation rule that is producing decisions while still
`status: proposed`, and the canon question about what kind of thing a finding
is.
The first of those has the most uncomfortable default in the register, and it
points inward: **if the rule is not adopted by 2026-09-17, it is recorded as de
facto in force but unratified, and every escalation sent under it says so on
its face.** That is worse than either adopting or rejecting it, which is the
point — a draft that quietly governs is the thing this register was built to
notice.
## Where the waits are visible ## Where the waits are visible
`make check` reports every open wait with its age, its owner and its default `make check` reports every open wait with its age, its owner and its default

View file

@ -124,8 +124,9 @@ def main() -> int:
# Waits: typed, dated, and defaulted (docs/method/dependencies.md). # Waits: typed, dated, and defaulted (docs/method/dependencies.md).
waiting, due_defaults, deep = [], [], [] waiting, due_defaults, deep = [], [], []
# A closed finding can still owe something — RISK-F-0001 is `fixed` and # A closed finding can still owe something — RISK-F-0001 is `fixed` and
# still waiting on its publication entry. Waits outlive statuses. # still waiting on its publication entry. Waits outlive statuses, and they
with_waits = [f for f in lib.findings() if f.get("waiting_on")] # are not a findings-only idea: adopting a rule is nobody's finding.
with_waits = lib.records_with_waits()
waiting_ids = {f["id"] for f in with_waits} waiting_ids = {f["id"] for f in with_waits}
for f in with_waits: for f in with_waits:
for w in (f.get("waiting_on") or []): for w in (f.get("waiting_on") or []):

View file

@ -86,6 +86,19 @@ def regulatory() -> list[dict]:
key=lambda r: r.get("id", "")) key=lambda r: r.get("id", ""))
def workplans() -> list[dict]:
"""Workplans carry waits too — adoption of a rule is nobody's finding."""
d = REPO / "workplans"
if not d.exists():
return []
return sorted((load(p) for p in d.glob("*.md")), key=lambda w: w.get("id", ""))
def records_with_waits() -> list[dict]:
"""Every record that owes or is owed something, whatever kind it is."""
return [r for r in findings() + regulatory() + workplans() if r.get("waiting_on")]
def notes() -> list[dict]: def notes() -> list[dict]:
if not NOTES.exists(): if not NOTES.exists():
return [] return []

View file

@ -8,7 +8,20 @@ status: active
owner: the-custodian owner: the-custodian
topic_slug: risk-nexus topic_slug: risk-nexus
created: "2026-08-19" created: "2026-08-19"
updated: "2026-08-19" updated: "2026-08-20"
waiting_on:
- who: the-custodian
what: "adopt docs/method/escalation.md, which is producing decisions while still status: proposed"
since: "2026-08-19"
would_change: "the rule stops being a draft that looks like coverage; the spend thresholds become the operator's numbers rather than ours"
default: "recorded as de facto in force but unratified, and every escalation sent under it says so on its face"
default_at: "2026-09-17"
- who: the-custodian
what: "register finding / note / regulatory-record as canon work-record kinds, or rule that the register is a different ontology"
since: "2026-08-20"
would_change: "C-31 stops being a standing warning; the estate's work-record backbone gains four species it currently cannot name"
default: "C-31 documented as expected noise for this repo, and the register stops treating it as a gap it can close"
default_at: "2026-09-17"
--- ---
# RISK-WP-0001 — make the register decidable # RISK-WP-0001 — make the register decidable