7d8d4bfe9cb79ce8323ae45c8c2a2709e14af992
5
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
063eccfd80 |
[HARDENING] STATE-CLAIM + the resolution state, built together (REVIEWED-127)
Both halves of the schema, shipped in one change because the ruling said half a schema
invites a third patch and a third patch is how a vocabulary accretes instead of being
designed.
157 — resolution state. `resolved:` on any block; a resolved block is no longer due but
is NOT dropped: it prints as a closed ledger, because a discharge that vanishes from the
report is its own decay. The pointer must RESOLVE — a real path or a real git object —
so an undocumented discharge is impossible to express rather than merely discouraged. A
dangling pointer reports in the register-integrity lane, the same lane as an amendment
that replaced the record it amends; both are a record closing over its own history.
The 25th's hand-rename is MIGRATED back to DEFERRED-DECISION with resolved: set. That
block was the per-instance workaround 157 was filed against, and it is now the
migration's own test case.
158 — STATE-CLAIM. Reuses trigger_fired() verbatim and inverts only what firing MEANS:
for a deferral, fired = the decision is due; for a state-claim, fired = THE CLAIM IS
FALSE. Two new trigger kinds earned directly from today's instances: text-present (the
trial-09 hold, falsified by REVIEWED-124's existence) and file-changed-since ("the filed
rule not edited", false one hour after writing).
16 new controls, each with its discriminating half — fires on met, silent on unmet,
manual listed-never-fired, resolved excluded from due-ness, the SAME block unresolved
still due, a real pointer resolves, "yes, done" does not.
Proven on the LIVE blocks, not only fixtures: pointing the state-claim at an older
commit made it report FALSIFIED by name; replacing the resolution with "yes done" made
register-integrity report it; both restored and both returned to quiet.
⚠ One control failed before shipping and the failure was the useful part. The negative
control for file-changed-since pointed at FOOL-SEED-RULE.md, which this same session then
edited — so "unchanged since HEAD" broke, correctly. A control whose subject is "did this
file change" must not point at a file the session is changing. Re-pointed at a frozen
2026-08-02 trial artifact, with the reason recorded at the fixture. Caught because the
controls run on every invocation rather than in a separate suite.
First two real state-claims filed, deliberately one of each kind: ~/CLAUDE.md untouched
under PENDING-150, mechanically watched and [ESCALATE]-grade the moment it goes false;
and §9's channel unbuilt, marked `manual` because it has no filename yet and inventing a
proxy falsifier is the error the schema's own comment warns against.
⚠ The zero-state prints a WARNING, not a tick: "0 marked, NOT none-stale" with the ~57
unmarked candidates named as a grep. An instrument that reads nothing reports exactly
like one that finds nothing, and that is the failure this item exists to end.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
|
||
|
|
5737d4dff8 |
[FIX] 'abandonment' -> 'retirement' in the fool's doctrine; §6 was false as of today
The jurist owned this mismatch and scheduled it after the beacon so no edit would touch the filed rule before it fired. It fired at 12:00Z; this is that harmonization. v2 §4 step 3 said "Abandonment criterion" while §10 defined RETIREMENT. Censused before editing rather than sed'd. All 24 abandon* occurrences in the fool tree were counted and read in context: 9 were doctrine and changed; 13 in the trial-09 family were LEFT — that is the word §6 of the trial design owns, in its own sense about the jester form, and a blanket replace would have silently collided the two meanings it was supposed to separate. 1 in input-dependence-01 is ordinary English about the void of a numbering. 1 in FOOL-BONES is the dated record of what was owed. Prior wording preserved in place at every changed site. REVIEWED-125 ruled on the v2 draft's text; an untraceable edit drifts a ruling's subject away from its artifact, which is the PENDING-82/86 hazard this item's own record already notes recurring inside a ruling. The criterion is unchanged — only the word naming it. Separately, found while in the file: §6 "What has NOT happened" asserted the pulse had not been fetched and no bones derived. Both went false at 12:00Z today. Marked superseded in part, bullets struck rather than deleted since they are the pre-registration record, and pointed at FOOL-BONES for current state. A governance doc asserting stale current state is what Constraint 4 forbids. New §7 logs every post-beacon edit to the filed rule, so "filed and pushed before the beacon" stays auditable instead of eroding one silent correction at a time. Its claim that §1/§2/§2a/§3/§5/§5a are untouched was verified by reading the diff hunks against the pre-edit section map, not asserted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf |
||
|
|
d6377af572 |
[FIX] §2a records one ruling and one steward decision, not two rulings
The heading read "Two corrections to the v2 §6b block — RULED, no veto" while the ruling beneath it addressed only the retrieval URL. Its settling test — "could this correction have moved the outcome?" — returns no for the URL and YES for the provenance commit, since the provenance SHA is half the seed string. The heading therefore claimed a scope the ruling could not reach. Jurist confirmed 2026-08-23: "I ruled on one thing. The URL." The provenance commit was never a correction under veto — the steward selected a still-open value on the jurist's recommendation, before filing. It is now recorded as a steward decision of 2026-08-22, with its reasoning, because a value that moves the outcome must be attributable to the party entitled to choose it. Verified independently against git, not relayed: |
||
|
|
1e40b01d70 |
[FIX] Normalization tested at its single point; the dry run had bypassed it (PENDING-149)
The jurist's pre-25th condition: confirm lowercasing happens at exactly one point and is unit-tested against a known uppercase input. Single point confirmed at derive_fool.py:79 — the only .lower()/.upper()/ casefold in the file. Four checks added, including a negative control proving the test can fail. Selftest 16/16. Checking it found the defect the condition was aimed at, in my own work: the 2026-08-22 dry run lowercased the value OUTSIDE the code and passed it in already normalized, so the single normalization point was never exercised on uppercase input in the only end-to-end run. The test's subject was the pipeline; it excluded the step under scrutiny. Re-run with the raw uppercase value through the real path reproduces the same seed. Binding procedure added: on the 25th the outputValue is passed exactly as served. Jurist ruling on the URL correction recorded verbatim — no veto, with the reasoning, since it will be read later. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T |
||
|
|
acfbb9fc0e |
[PROPOSAL] Fool seed rule filed before the beacon; two unresolvable values caught (PENDING-149)
§4 steps 1-4 discharged and pushed ahead of the 2026-08-25T12:00:00Z beacon: ratified axes recorded in writing, seed derivation rule filed, retirement and regeneration criteria filed, derivation implemented and self-tested. Two values in the jurist's §6b block did not resolve, and both are corrected in the open rather than absorbed: - the provenance commit's stated rationale was false. |