9fba331e3eea9430cee951052378cb96e99c04b8
9
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
c150bdff17 |
[HARDENING] The mumble discriminator fails its own must-detect gate; repairs stopped at the gate (PENDING-179)
The 2026-09-03 repair plan rested on one claim: that human_turns() is an
existing, controlled discriminator, and wiring it into four transcript
consumer sites was plumbing rather than classifier-building.
Tested against ground truth taken from the fool's own prompt text — not from
the function under test — the claim is false. 24 known mumbles, 41 known
non-mumbles, out of 65 transcripts:
must-detect 22/24 two mumbles read as human-attended
must-not-flag 35/41 and one "failure" is correct — b7e7eb39 is the
unattended session of 2026-08-31, which genuinely
has no human turn
human_turns() == 0 never meant "mumble". It means "nobody spoke", which is
equally true of an unattended real session. A mumble embeds the previous
session's text and so inherits its slash-command markers; it is excluded
only when the session it quoted happened to contain one. The two leaks are
exactly the two marker-free mumbles. Coincidence, not design.
No repair was made at any site, and no replacement discriminator was built.
Three controls passed and a fourth broke: all three test the question the
function was built for, none could see the question it was being reused for.
A successor written now inherits whatever made the first set look sufficient.
Also here, per the 2026-09-03 handover:
- step 0 preservation ran: 76 transcripts, read-back PASS, 11 of them
already pruned at source and surviving only in the archive
- gate 2b: the composition claim in PENDING-178 stands (11 mumbles,
~a fifth, on 08-31). Two terms do not close and are reported as an open
disagreement, not a correction — the reconstruction is a demonstrated
lower bound and -178 enumerated live
- gate 2c: five sites in four files; -178's [HARDENING] scope holds
- MEMORY.md record-only arithmetic correction: N-now 44 -> 65 measured,
composition 41 real + 24 mumble added, direction reversed (it is rising,
not shedding), stale :331 pointer corrected to :513
Filed as an item rather than a PENDING-178 addendum on PENDING-145's
mechanism: a ruling claims a number, so an addendum would be suppressed the
moment -178 is ruled. The undecided filing moratorium is disclosed inside
the item.
governance-drift-check.py:513 excluded on receipt and not examined.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X3L79vgAnt1x2kxvf23Qt7
|
||
|
|
2171d9127e |
[FIX] MEMORY.md load-integrity breach: relocate workstream state to its trackers
The wake reported MEMORY.md at 26,803 bytes against a 24,986-byte budget, so the
index was being silently truncated at load — the failure the two-file split exists
to prevent, on the one file every session reads first.
The cause was not bulk. It was an inversion the file's own Index discipline section
forbids: "Canonical Trackers as one-line pointers — chronological detail lives in
the linked tracker files, not here." Five tracker entries had grown into paragraphs,
and for three of them the index had become the SOLE custodian of live state:
- Studium Engine: the tracker's chronological log stopped at 2026-08-13 while the
index carried engine state through 2026-09-01 (REVIEWED-133, 496cd7e, the
deleted undisclosed_days_in_force). Relocated verbatim as a dated log entry.
- The Fool (Tarbuckle): the only linked target was a SEALED seed, which is not a
place state may be appended, so there was nowhere for it to go. Tracker
established (project-fool-tarbuckle.md); index line relocated verbatim.
- L1 reliability: the tracker records that replay is "not resumable" but neither
the mechanism (minCursor is a minimum over 11 modules, two never participate, so
it is pinned at 0 by construction) nor the completion criterion (uninterrupted
run length, not rate). Both appended.
Cut only where the file's own rule says to cut. "Rules that fire silently" was left
untouched by design — those entries keep their rule inline precisely because I would
not know to look them up, and gutting them is the one cut that would do real harm.
The frozen verification-ladder pointer (REVIEWED-123) and the skill-harvest hold
(PENDING-141) were likewise not touched.
Lossless-relocation gate applied: line-range slices, never retyping; md5 per slice;
token-conservation check over all five originals against the trimmed index and the
relocation targets — 0 unconserved after the L1 append. Link canary: 406 pointers,
0 dead, 0 mis-authored; 32 wikilinks clean.
26,803 -> 23,714 bytes. Headroom is only 1.3 KB; the Active Session block still
carries ~5.5 KB that the wrap rotates.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X3L79vgAnt1x2kxvf23Qt7
|
||
|
|
9838ffe86b |
[HARDENING] PENDING-178: the ladder trial counts the fool's chatter as sessions
The trial's session counter globs one project directory, which since 2026-08-25 also receives one transcript per Tarbuckle mumble. Enumerated today: 54 files = 43 real sessions + 11 mumbles. A mumble cannot reach the verification ladder and can only enter the denominator, so REVIEWED-123's bounded hold would lift on a count part machine chatter. Distinct from PENDING-147, which names the window and the perishability. This is the unit, and it runs opposite to -147's finding (1): the trigger stops being unsatisfiable and becomes satisfiable for the wrong reason. Three figures asserted earlier in the session are withdrawn in the item rather than quietly dropped — a "wiring day" attribution and an "~8/day" rate (both corrected by the steward) and a "197 reached the generator" (the steward observed the numbers did not close; tarbuckle-draws.jsonl mixes routing hand-offs and terminal outcomes in one field). Records one DECLINED finding with its argument: TRANSCRIPTS is scoped to one of eight project directories, which is PENDING-171's predicate class at a second site, and is benign here because 43 of the 44 real sessions ever recorded are in that directory. Not filed, so it is not rediscovered as a defect. REVIEWED.md is left untouched and uncommitted — steward's file, edited at 08:45 outside this session. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017vKkg2EJF1rGwdFdBogwqx |
||
|
|
a1028772f4 |
chore: thread-query-log entry for the 2026-08-31 wake
Written by the wake hook at session start; committed so the tree is clean and the thread's continuity is on the record with the prior two entries. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RmFYCUeAaPqbpJMj6uGokk |
||
|
|
aec342f385 |
session 2026-08-27: the block ruled NOT PASSED; the answer key finally exists
The jurist design-gated the six-item record-keeping block and returned it not
passed, on three counts, all now discharged:
1. The package's frontmatter asserted the jurist has NO repository access.
False — PENDING-161 (open, [ESCALATE]) had said so two days earlier, and
the false premise generated the package's whole relay architecture.
2. Cluster membership was set by relay; the root was never run back across
the register. PENDING-143 states 145's mechanism in the same words.
3. Part V's argument for not drafting the answer key does not survive: a
hand-read key cannot pass by construction, and a block-keyed key collapses
safely into an id-keyed one under the opposite ruling.
Ruling filed verbatim BEFORE any act under it — PENDING-108 (c)'s ordering,
first adoption. Its own 10-package clock now starts on that package.
Filed: PENDING-166 (mumble legibility), -167 (seam cap 12, provenance stated so
it is not laundered), -168 (condition 3's structural remedy + the fourth-instance
doctrine, explicitly NOT added to the frozen ladder), -169 (the steward's standing
Tarbuckle dispositions, recorded because they existed nowhere else), -170 (the
built-vs-ruled tags cannot be armed while REVIEWED-128's header names no PENDING).
Amended PENDING-162 (the fortnight is compromised for the seam limit only),
PENDING-89 (the fool is not a fourth checker, by ruling as well as construction),
PENDING-104 ADDENDUM 1, PENDING-165 (option (c)'s blocker discharged),
PENDING-142 (the key's hash), PENDING-131 ADDENDUM 4 (Move 2 dispositioned).
PENDING-104 ADDENDUM 1 resolves an anomaly the jurist reported and declined to
explain: two of its tools disagreed on line numbers by exactly 23, because the
executor inserted a 23-line note while it was reading. The executor's filing
silently corrupted the checker's view of the executor's filing.
Two of the steward's eight asks were already discharged (PENDING-160, the §9
strike) and were reported rather than duplicated.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RmFYCUeAaPqbpJMj6uGokk
|
||
|
|
718ba77b61 |
session 2026-08-26: PENDING-163/164/165 + five amendments; prior-art search built
Session record: the record did not contain the decision. Filed: PENDING-163 (+3 amendments), PENDING-164 (jurist-drafted, placed verbatim, + executor addendum and build record), PENDING-165 (+1 amendment). Rulings REVIEWED-130 and REVIEWED-131 placed by the steward. Built: preserve-transcripts.py (PENDING-147 (i), 43 transcripts read-back proved), two pre-commit fixes, the hook-directory allowlist in governance-drift-check.py, and prior-art.py + the prior_art MCP tool (PENDING-164 (c)+(d)). The finding: a steward decision that rewrote seventeen commits of history (chamber-library 0677e8a, retiring LFS) is absent from the entire authorization record, so both AI parties independently recommended adopting the mechanism it retired. governance_search over 313 items returns one hit; grep over the raw files returns zero before today. Six self-referential instrument failures and three false zeroes, one of which was caught before it was believed — and the only reason was that the jurist pre-specified what the instrument had to return. MEMORY.md rotated (prior Active Session demoted verbatim, checked for carried claims first). 6 KG lines incl. one genuine transfer: the 2026-08-25 lesson about declaring a limit rather than manufacturing a column fired unprompted on a different instrument in a different item. One skill-harvest proposal, whose subject is that today's own build ignored the routing table measurement it had open. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NvZAKSf9aqratbqHbU9LK5 |
||
|
|
6f0ccde4c6 |
[FIX] Tarbuckle's body: the status line wired, and refreshInterval's real semantics
Tier 1 of §8's three. The body renders the name and one mark, every turn.
Verified against the substrate rather than assumed, because §13.2 gates §8 on it:
the statusLine schema is {type, command, padding?, refreshInterval?}, seconds, min 1.
The first name-match found was refreshIntervalMs, which belongs to the certificate
watcher — reading the context rather than trusting the match is what separated them.
⚠ One clause of PENDING-152 does not survive that read. It says the 20-minute tick is
"a counter over refreshes rather than over events" and that "no event-gating remains
within a session". refreshInterval re-runs the command every N seconds IN ADDITION TO
event-driven updates, so invocations burst with activity and a per-invocation counter
would be event-keyed — the v1 defect §8 exists to remove. The conclusion survives; the
mechanism named does not. The tick therefore consults the CLOCK, and the reasoning is
written into the script rather than left in this message.
The binding constraint — the variation must not correlate with anything — is carried by
render()'s signature: it takes the minute and nothing else, so a function that cannot
see the session cannot leak it. C3 asserts that structurally (argcount, co_names) and
C3n proves the assertion can fail by feeding it a deliberately leaky fixture. C4 asserts
len(MARKS) is coprime with the mumble interval, so the mark visible when a mumble lands
walks the whole cycle instead of announcing it; C4n catches a commensurate cycle.
16/16 controls, positive and negative, written before first execution.
Also placed: a STATE-CLAIM marker on the false "STEWARD OWES: place REVIEWED-127" line.
Steward-directed to defer the correction itself to the next session; this makes the
deferral machine-checked rather than remembered. It could NOT be placed beside the claim
— governance-drift-check.py scans */docs/**, claude/governance/**, PENDING.md and the
archive, and claude/memory/MEMORY.md matches none of them. The file read at the start of
every session is the one governance surface the checker cannot see.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
|
||
|
|
2676a7ec69 |
session 2026-08-25: the beacon fired, Tarbuckle named and voiced, STATE-CLAIM built
Session state, memory index, KG and the Symmetria ledger. Carries the steward's own placement of REVIEWED-127 off-disk — preservation, not modification: it was found staged during the wrap by §6.5's own guard, which is exactly the case that clause exists to catch, and the answer was benign. Verified rather than assumed at placement: the placed ruling is byte-identical to the executor's draft, 3,523 bytes both sides. No drift between a ruling's subject and its artifact — the PENDING-82/86 class, checked because it is cheap and because this record already notes that class recurring inside a ruling. The draft file is SUPERSEDED IN PLACE rather than deleted: it is now a parallel version of a canonical record, and an unmarked parallel version is the context-rot failure. It points at REVIEWED.md and says not to edit it. Both PENDING items updated from "drafted for steward placement" to placed — a line that went false the moment the steward acted. MEMORY.md 22,368 bytes, prior Active Session demoted verbatim into MEMORY-reference.md on promote. Fool tracker rewritten: it named a superseded workstream (trial 09, re-aim) and now names Tarbuckle, the sealed artifacts, and the honest state that NOTHING IS WIRED. N-now 51. KG +6: three drift-patterns (vigilance did not prevent the failure it was vigilant about; filed a non-defect as a defect twice in one direction; a control fixture pointing at a file the session was editing) and two preventions (recusal preserved the only party able to answer; censusing 24 occurrences stopped a blanket replace from destroying the distinction the fix existed to create). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf |
||
|
|
3e828fe3f2 |
Session 2026-08-24: grounding gates ruled, daybook rule changed, two censuses run
PENDING-95: Amendment 2 (jurist ruling — (a) rejected, (d) discharged, (b)/(c) deferred) plus the (b)/(c) census that discharges the deferral's condition. 60 guarded / 32 marked (record said 59/31); date 75%, sections 97%, quoting 47%. Date broadly present => the jurist's cheaper third form is the live option. PENDING-156 opened (kind (c): mechanisms off the path the work takes) and its option (b) census run the same session. PENDING-109 prior confirmed by direct read. PENDING-89: two docket entries, one same-direction miss and one cross-direction catch, filed the same day and at the same speed. Mechanisms: daybook-cue.py rewritten on steward ruling — the daily note must be appended to until end of day, so the trigger is staleness, not note size, and the matcher now includes Bash (it had never fired once). daybook-ensure.py and /wrap-up 7.5 gain a standing Corrections slot per REVIEWED-126. governance-mcp.py gains two read-only keys so the jurist can read the artifacts it rules on; the doctrine that read-surface changes should arrive as rulings is adopted, and the next key is proposed rather than added. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T |