[FIX] ruled_pendings' docstring asserted the opposite of the record
Jurist-ruled 2026-08-17 to correct independently of the mechanism, since it is a false claim whichever remedy wins. The docstring described REVIEWED-78/-81/-82 as "like-numbered rulings … concerning other matters" that had "falsely hidden" three items. Both halves are false. They are the AUTHORIZED rulings on PENDING-78/-81/-82 — same date, titles verbatim identical, and REVIEWED-81 names "PENDING-81" twice in its own body. They are like-numbered on purpose: REVIEWED-78's Notes say it was filed separately "for a mechanical reason: the closure rule in wake-digest.py matches a PENDING item to REVIEWED-<same number>." So the number→subject fix broke the three entries deliberately authored to satisfy the rule it replaced, then recorded their compliance as coincidence. Surfacing them was a regression; they have read open since 2026-07-28. The change proof could not see it because it measured a count (18→19) while the claim was each item's disposition — and the counts stay equal either way: removing 3 false-opens and restoring 3 false-closeds both leave 29. Superseded wording retained in the note rather than overwritten. Also filed as PENDING-142 ADDENDUM 3: the jurist ruling with its condition that (b)'s closing-verb enumeration must default to NOT CLOSED on unrecognized verbs; and the verified finding that governance-drift-check.py's subject is exactly one file (~/CLAUDE.md), so the scripts implementing governance checks make substrate claims nothing checks — one confirmed occupant, population unmeasured. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013Y6t6qx7cpaCu5xGdD36u4
This commit is contained in:
co-authored by
Claude Opus 5
parent
c2df868104
commit
aa745bcfb0
+23
@@ -3258,3 +3258,26 @@ The third is the sharpest: **both halves are in the same document**, so this is
|
|||||||
**Awaiting:** Steward authorization on the standing rule. The arrears above are already paid.
|
**Awaiting:** Steward authorization on the standing rule. The arrears above are already paid.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
## PENDING-142 — ADDENDUM 3: jurist ruling received; docstring corrected under it; and the drift-check's subject is one file
|
||||||
|
**Date:** 2026-08-17
|
||||||
|
**Tag:** [HARDENING]
|
||||||
|
**Summary:** The jurist has design-gated the parent item. Recorded here pending steward placement in `~/REVIEWED.md` — the executor does not write that file.
|
||||||
|
|
||||||
|
**Jurist ruling (2026-08-17), as received:**
|
||||||
|
- **(d) as the frame, with (a) and (b) inside it** — as recommended. Reasoning given: (d) is the only option that makes the tool report its own limit rather than guess, **and Class A is unfixable by (a) or (b)** — those two items can never be closed by any ruling, so `UNDETERMINED` is the only honest value for them.
|
||||||
|
- **CONDITION on (b):** the enumeration of closing verbs **must default to NOT CLOSED on any verb it does not recognize**, or it reproduces the gate-on-the-class trap. *(This is the ladder's "gate on the class, not the instances" applied to the remedy — the trap that produced the parent defect.)*
|
||||||
|
- **The docstring is to be ruled on separately and corrected without waiting for the mechanism**, since it is a false claim regardless of which option wins.
|
||||||
|
- ⚠ The jurist identifies **"the acceptance check may not be a count" as the load-bearing sentence of the parent item, not the option list.** Recorded so that a later implementer does not read the options as the substance.
|
||||||
|
- The jurist verified PENDING-142's body and REVIEWED-78's Notes **directly against the substrate rather than accepting the executor's report of them.** Both confirmed verbatim. Noted because it is the condition under which this ruling has any independent value — REVIEWED-116 pt 7's limit, closed by access.
|
||||||
|
|
||||||
|
**EXECUTED under the docstring half** (`[FIX]`, this session): `ruled_pendings`'s docstring no longer asserts that REVIEWED-78/-81/-82 are *"like-numbered rulings … concerning other matters"* that had *"falsely hidden"* three items. It now records the opposite, which is what the substrate says: they are the authorized rulings on those items, like-numbered **on purpose**, per REVIEWED-78's own quoted Notes — so surfacing them was a **regression, not a repair**, and they have read open since 2026-07-28. The superseded wording is retained in the note rather than overwritten.
|
||||||
|
|
||||||
|
**NEW FINDING, arising from the jurist's observation and verified: the instrument that reports drift is not itself instrumented.** `governance-drift-check.py`'s subject is exactly one file — `~/CLAUDE.md` (`CLAUDE_MD = HOME / "dotfiles" / "CLAUDE.md"`); nothing else is read for substrate-contradicted claims. But the scripts *implementing* the governance checks are dense with substrate claims of their own — docstrings citing measurements, provenance comments naming commits and rulings, inline notes asserting what a check does and does not establish. **None of it is checked by anything.** One confirmed instance today: `ruled_pendings`'s docstring carried a false claim about three live governance items for weeks and was found by a jurist relay, not by an instrument. That is the same class the drift-check was built for, one layer in, where the drift-check cannot see.
|
||||||
|
- **Not asserted:** how many other such claims exist. A census of factual claims in `scripts/` has not been run and its cost is unknown; the claim here is that the coverage gap is real and has one confirmed occupant, not that the population is large.
|
||||||
|
- **Options:** (i) extend the drift-check's subject to the scripts' docstrings — hard, prose claims are not machine-checkable in general; (ii) require any docstring making a *checkable* substrate claim to carry the check beside it, as the selftest already does for behaviour; (iii) accept the gap and record it, so a clean drift-check is never read as "no false claims in governance tooling."
|
||||||
|
- **Recommendation: (iii) now, (ii) as practice.** (i) is the trap this whole item is about — building a cleverer parser to infer truth from prose that was never constrained to carry it. ⚠ And whatever is done, the drift-check's clean line should say what it does **not** cover; today it reads as a verdict on governance state and is a verdict on one file.
|
||||||
|
|
||||||
|
**Steward decisions outstanding on this item:** the option ruling (jurist recommends (d)+(a)+(b) with the not-recognized-defaults-to-open condition); whether the drift-check-coverage finding stays folded here or is split into its own item; and **PENDING-121, which its own ruling holds open and the tool has hidden since REVIEWED-110** — the design-gate class is 3 items (121, 124, 128), of which only 121 is asserted; 124 and 128 remain flagged undetermined, not claimed.
|
||||||
|
**Awaiting:** Steward. The jurist ruling above needs placement in `~/REVIEWED.md` by the steward's hand.
|
||||||
|
|
||||||
|
---
|
||||||
|
|||||||
+29
-8
@@ -367,18 +367,39 @@ def ruled_pendings(reviewed_text):
|
|||||||
closing that item later produced no visible change because it had never been
|
closing that item later produced no visible change because it had never been
|
||||||
counted. Measured at the time: 9 suppressed, 8 correctly, 1 falsely.
|
counted. Measured at the time: 9 suppressed, 8 correctly, 1 falsely.
|
||||||
|
|
||||||
A ruling whose header names no PENDING (REVIEWED-78, -81, -82 …) suppresses
|
A ruling whose header names no PENDING suppresses nothing — which is the rule's
|
||||||
nothing.
|
correct behaviour in general and its FALSE-OPEN class in particular. See below.
|
||||||
|
|
||||||
The correction runs in BOTH directions, and an earlier draft of this docstring
|
The correction runs in BOTH directions, and an earlier draft of this docstring
|
||||||
claimed otherwise — that it could only ever surface more, never fewer. That was
|
claimed otherwise — that it could only ever surface more, never fewer. That was
|
||||||
an overclaim, caught by the change proof rather than by reading. Measured against
|
an overclaim, caught by the change proof rather than by reading. Measured against
|
||||||
the live files at the time of the fix: 3 items surfaced that had been falsely
|
the live files at the time of the fix: 3 items surfaced (PENDING-78, -81, -82),
|
||||||
hidden (PENDING-78, -81, -82 — like-numbered rulings exist, concerning other
|
and 2 stopped being shown that were genuinely ruled (PENDING-87 by REVIEWED-84,
|
||||||
matters), and 2 stopped being shown that were genuinely ruled (PENDING-87 by
|
PENDING-88 by REVIEWED-85 — no REVIEWED-87 or -88 exists, so the number-match had
|
||||||
REVIEWED-84, PENDING-88 by REVIEWED-85 — no REVIEWED-87 or -88 exists, so the
|
never suppressed them). Net 18 → 19 visible.
|
||||||
number-match had never suppressed them). Net 18 → 19 visible. Number-matching
|
|
||||||
was wrong in both directions; only subject-matching is right in either.
|
⚠ CORRECTED 2026-08-17 (PENDING-142; jurist-ruled to correct independently of the
|
||||||
|
mechanism). This docstring previously described those 3 as *"falsely hidden"* by
|
||||||
|
"like-numbered rulings … concerning other matters." **Both halves are false, and
|
||||||
|
the substrate says so in its own words.** REVIEWED-78/-81/-82 are the AUTHORIZED
|
||||||
|
rulings ON PENDING-78/-81/-82 — same date (2026-07-28), same titles verbatim, and
|
||||||
|
REVIEWED-81 names "PENDING-81" twice in its body. They are like-numbered ON
|
||||||
|
PURPOSE: REVIEWED-78's own Notes state it was filed as a separate entry
|
||||||
|
*"for a mechanical reason: the closure rule in `wake-digest.py` matches a PENDING
|
||||||
|
item to `REVIEWED-<same number>`, so a cross-numbered closure stated only in prose
|
||||||
|
would leave PENDING-78 listed as open at every wake."*
|
||||||
|
|
||||||
|
So the number→subject fix broke the three entries that had been deliberately
|
||||||
|
authored to satisfy the rule it replaced, and then recorded their compliance as
|
||||||
|
coincidence. Surfacing them was a REGRESSION, not a repair; they have read open
|
||||||
|
since 2026-07-28. The change proof could not see it because it measured a COUNT
|
||||||
|
(18 → 19) while the claim was about each item's disposition — and the counts stay
|
||||||
|
equal: removing 3 false-opens and restoring 3 false-closeds both leave 29.
|
||||||
|
|
||||||
|
Number-matching was wrong in both directions. Subject-matching is right in
|
||||||
|
neither until it matches on the SUBJECT — the title or the decision — rather than
|
||||||
|
on the presence of an id token in a header. Remedy is PENDING-142, unbuilt; this
|
||||||
|
note exists so the code does not keep asserting the opposite while it waits.
|
||||||
"""
|
"""
|
||||||
return set(re.findall(r"^## REVIEWED-\S+\s*—\s*PENDING-(\S+?)\s*—", reviewed_text, re.M))
|
return set(re.findall(r"^## REVIEWED-\S+\s*—\s*PENDING-(\S+?)\s*—", reviewed_text, re.M))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user