From 3a0ba5d42708a5be3a326b5bff30652cd25f5b65 Mon Sep 17 00:00:00 2001 From: tegwick Date: Thu, 20 Aug 2026 23:18:52 +0200 Subject: [PATCH] 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 --- WORK-RECORDS.md | 10 ++++----- docs/method/dependencies.md | 19 ++++++++++++++++++ .../__pycache__/register_lib.cpython-312.pyc | Bin 7081 -> 8178 bytes tools/register_check.py | 5 +++-- tools/register_lib.py | 13 ++++++++++++ ...ISK-WP-0001-make-the-register-decidable.md | 15 +++++++++++++- 6 files changed, 54 insertions(+), 8 deletions(-) diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index a310aac..b594980 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -10,7 +10,7 @@ | --- | --- | --- | --- | --- | | 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-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 | | 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 | @@ -23,10 +23,10 @@ | 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-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-T02 | todo | — | workplans/RISK-WP-0003-regulatory-intake.md | -| task | RISK-WP-0003-T03 | todo | — | workplans/RISK-WP-0003-regulatory-intake.md | -| task | RISK-WP-0003-T04 | 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 | done | — | 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 | 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-T02 | done | — | workplans/RISK-WP-0004-run-the-register.md | | task | RISK-WP-0004-T03 | done | — | workplans/RISK-WP-0004-run-the-register.md | diff --git a/docs/method/dependencies.md b/docs/method/dependencies.md index 66ba913..b6779d4 100644 --- a/docs/method/dependencies.md +++ b/docs/method/dependencies.md @@ -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, 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 `make check` reports every open wait with its age, its owner and its default diff --git a/tools/__pycache__/register_lib.cpython-312.pyc b/tools/__pycache__/register_lib.cpython-312.pyc index e77fdba71295004375d674252990dec0e989ec63..447cf7ee483e2f73d34c75c15970c61984e10a08 100644 GIT binary patch delta 1446 zcmZuwT}&KR6ux(MfQ4OPcLVze)u9E-Mpz5WUu^?oq!DRIEds$>ao9V+z_LT{OuMj! z?xtca6;sKrp;|RnOmu@WG5FNP*hUjbjIj_jWaE?3#0MYRZXd*l#&d_3)aXs-`@T8n z+;v|ZI#LeoCm~V+TtezeC2%S5e&9X8RltvtdUjuMOQexh!|PtsL~4NdOU8( z9Je7fgQnRFo?>>}?#mHo(KH&(VQFhA>u}hH#98!t*0R7q520=p$UfZ;qEDk^6A?M8 zOJSMPDJdqahAtVJCjFYcEXhQhFjOrnX+x4M(bEw{Qgtb+4Qga+zb*}_QKCkNgX!GZ z!(-UBd^bDiI0V8>MqIHHB+h~5%BJgh{O$qCx>3gp*|0RBLKCDDc}bmi3L z`YU*`Y26jt&WPYRU+lqj7zF#c;OPWaLD4aQ08ZnWjzLM(%Z+^i@sj^b7LmsXiM*4` z0Z~bGqjt67X2V+18vV94iKw6N*EmdY&;cGj`3yI5=udD@BR~@UX0=~9yKeO-+qP`> zOU-l5^G|IRIxpn@VspaXueE)8H7<2+x42;s~; zh(%=Z?=jc%12(|Bv$&;>%Q!qn7FT>d4CK~l(IpfXhT%EsHYWj^zi_`aq2u}DX|y2B zdqwcgKDA0GRgf&VeV?;J2EvD#_MtQ425=qy_6=MV%T`k4HufPUr z3|cR#2E+u@d3M4Ru^0O2m-=<2C~Wf_cD>7HKCO z5Vudr#z;gR3?2jCIbS4d*mw{d&x@$Kae}BhVdEsXu`j&-0KZ1u1_=o?mM4XL@BQmK z^h0R z*OyjAe*)KK;TLhnA>clo$+KVuXY5w&$ha}CzGua_6K`i^0Xc&@|53iHx3{-s{{v4F Bf^+}? delta 631 zcmZWlL2DC16yCSHX=9phlH#V>GznPknvoi{sr6WT2%-h)#Y5W25_eX+ZJNkrYSU<` zNGUbNLz#o()sqJg68r~(f_Rrb2;MzN<3TUtn??n3V7~8r-+a6`yu;ZSmyGwr!x06~ z$n)Kmj&We5)bHv+{w++t`uYLp&e9V*`r;@p&~fAxJx5O>Tl73Vg`B1r=mhc@ouW2! z2Kh8{7CDccqebykO~yAhR|Un@wqQ%yP{>SoT5AnKTf8(%BSgE#uH*bbArNS{Jx+uk zTL=?iWps(C#4I4DN?vN%i?feYJO3+-Um={~iVV5)_ZZ6X9(y|KaW$@0F0SqW(gDG9rOU`0%feGGN5 ztP3?$-hLn-_7MWjuXCcai_-Y(wxg66xWDF6ug0tYJs$;$deoq=bvBO;+R-~zzFhNf z78a2E{dMZQ{CBn;srgO5MEyaR-;kd8oJn7m-)IlvKw9OV9E$TE{qr667)vr93_1>N zxQ-J<9Ou?LUuT}qSlobg~!k*a6HsT>E4-$mjy%H}@HU@x n=W^R%Yv4gI8isf;2{8FB3@{HrdY4rtQD_ce?#* int: # Waits: typed, dated, and defaulted (docs/method/dependencies.md). waiting, due_defaults, deep = [], [], [] # A closed finding can still owe something — RISK-F-0001 is `fixed` and - # still waiting on its publication entry. Waits outlive statuses. - with_waits = [f for f in lib.findings() if f.get("waiting_on")] + # still waiting on its publication entry. Waits outlive statuses, and they + # 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} for f in with_waits: for w in (f.get("waiting_on") or []): diff --git a/tools/register_lib.py b/tools/register_lib.py index badcc88..46337cc 100644 --- a/tools/register_lib.py +++ b/tools/register_lib.py @@ -86,6 +86,19 @@ def regulatory() -> list[dict]: 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]: if not NOTES.exists(): return [] diff --git a/workplans/RISK-WP-0001-make-the-register-decidable.md b/workplans/RISK-WP-0001-make-the-register-decidable.md index e5f0552..ac990f8 100644 --- a/workplans/RISK-WP-0001-make-the-register-decidable.md +++ b/workplans/RISK-WP-0001-make-the-register-decidable.md @@ -8,7 +8,20 @@ status: active owner: the-custodian topic_slug: risk-nexus 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