[HARDENING] Close PENDING-82 and -118; mark 119/120/123 BUILT

82 is discharged by events. Its 2026-07-28 substrate check said there was no
mcpServers key; today the config carries mcpServers: governance, and the jurist
used the tools in three consecutive rulings — opening graduation-spec directly
and refusing to rule from my summary, which is the capability the item existed
to create. Two residuals carried, not buried: the read enum reaches neither the
runbook nor the R0 contract, and the installed surface has 8 keys and a search
tool the description does not name.

118 is built, and building it REFUTED the option I had recommended. I wrote that
the checker already parses the archive format. It does not — the marker is an
HTML comment and there are zero in either register file; their deferrals are
prose, 53 and 26. Widening alone would have scanned two more files, found
nothing and reported clean: a silent net built to close a blind spot, which is
the failure the item was filed to describe.

So the widening ships with its limit in its own output — prose deferrals counted
and reported un-machine-readable, never as absent, with counting explicitly not
classifying. The census stays owed.

119/120/123 marked BUILT with their commits so the built-vs-ruled checker sees
them; all three were already ruled, so this closes a reporting gap, not an
authorization one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A35wiD55yRHj5U1ECZAX4t
This commit is contained in:
David F Glidden
2026-08-08 21:05:15 +02:00
co-authored by Claude Opus 5
parent d78c14dd0a
commit 90dc0f7373
3 changed files with 331 additions and 6 deletions
+32
View File
@@ -335,6 +335,21 @@ def trigger_fired(d: dict) -> bool | None:
_scan_targets = [(r, "*/docs/**/*.md") for r in SCAN_ROOTS] + EXTRA_SCAN_GLOBS
# PENDING-118, and the item's own option (1) is REFUTED by building it.
# The item said "widen the scan to ~/PENDING-archive.md — the checker already parses
# that exact format." It does not. The structured marker is an HTML comment
# <!-- DEFERRED-DECISION: slug ... -->, and there are ZERO of those in PENDING.md or in
# the archive. Their deferrals are PROSE — measured 2026-08-08: 53 and 26 occurrences of
# "defer*". Widening alone would scan two more files, find nothing, and report clean:
# a silent net built to close a blind spot, which is the failure this item describes.
#
# So the widening ships WITH its own honest limit. Structured blocks anywhere are now
# found; prose deferrals are COUNTED and reported as un-machine-readable, never as
# absent. Counting is not classifying — how many of those conditions have fired is a
# READING task, and it is reported as owed rather than silently skipped.
_scan_targets += [(HOME / "dotfiles", "PENDING.md"), (HOME / "dotfiles", "PENDING-archive.md")]
PROSE_DEFERRAL_RE = re.compile(r"defer(?:red|ral)", re.I)
_seen_files: set = set()
for root, pattern in _scan_targets:
if not root.is_dir():
@@ -381,6 +396,17 @@ control("trigger evaluator does NOT fire on an unmet condition "
_p_wait and trigger_fired(_p_wait[0]) is False)
control("deferred-decision scan surface is reachable",
any(r.is_dir() for r in SCAN_ROOTS))
# Prose-deferral census: counted, never classified, and never read as absence.
prose_counts = {}
for _f in (HOME / "dotfiles" / "PENDING.md", HOME / "dotfiles" / "PENDING-archive.md"):
if _f.exists():
prose_counts[_f.name] = len(PROSE_DEFERRAL_RE.findall(_f.read_text(errors="replace")))
control("prose-deferral counter finds a known-present phrase",
PROSE_DEFERRAL_RE.search("this was deferred pending recurrence") is not None)
control("prose-deferral counter does not fire on unrelated text",
PROSE_DEFERRAL_RE.search("the fleet is green") is None)
control("register files are inside the widened deferral scan",
any(str(t[1]).endswith("PENDING-archive.md") for t in _scan_targets))
# ------------------------------------------ 9. built without a ruling in the register
@@ -532,5 +558,11 @@ if deferrals:
waiting = len(deferrals) - len(manual)
print(f"✓ deferred decisions: {len(deferrals)} tracked, none due "
f"({waiting} checkable, {len(manual)} manual-only)")
if prose_counts:
_tot = sum(prose_counts.values())
print(f" ⚠ plus {_tot} PROSE deferral mention(s) in the register "
f"({', '.join(f'{k} {v}' for k, v in prose_counts.items())}) — these carry no")
print(" DEFERRED-DECISION block, so NO trigger is machine-checkable for any of them.")
print(" Counted, not classified. Whether any condition has fired is unestablished.")
sys.exit(0)