[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:
co-authored by
Claude Opus 5
parent
d78c14dd0a
commit
90dc0f7373
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user