d7774e1c2ae155f0f7a6e60ff451e57f505ab939
318
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ef8cb04340 |
docs(memory): redirect the next wake to a research session, not the chamber thread
Steward instruction at wrap: the next session is a short research session on a very recent incident touching this work; everything else defers to the following morning. Without this the wake reads 'pulling thread: ask the corpus real questions' and opens the wrong work. Also records the two things bearing on doing it well: the May-2026 cutoff against an August-2026 'recent' incident (search, don't recall, mark sourced vs inferred), and a caution against pre-fitting the incident to a thread we already like — the failure this whole session was a study in. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh |
||
|
|
8b72b149f9 |
docs(memory): skill-harvest — 5 proposals from the quoted-tier session
Adjacent-clause reading for /jurist-package (jurist-caught: containment passes an omission every time); two ladder entries (uniform-offset-as-instrument-artifact; pre-register the effect before building); a /wake-up patch for the decorative Symmetria line I printed without invoking; and superseded-head disclosure for enumerated document access. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh |
||
|
|
688b31df9f |
session 2026-08-05: PENDING-99/100 + fidelity_equivalence@3 ruling + PENDING-86 (a)+(d) built
Filed this session: PENDING-99 (quoted tier accepts 3 of 17; jurist package, ruling, REVIEWED-87 drafted), PENDING-100 (footnote reference marker routed chamber-side from Q2). PENDING-86 fully dispositioned — governance-mcp gains chamber-spec/graduation-spec keys and governance_search; its structural pass found REVIEWED-11/-12/-74 hidden from item_spans by indentation, which the steward unindented (78 -> 81 items visible). check_containment.py carries a new named limit: containment is not sufficiency. Session record + KG appended (10 triples: 4 drift-patterns, 3 preventions, plus the runbook and quoted-tier facts). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh |
||
|
|
c20302711b |
docs(governance): PENDING-100 — footnote reference marker vs the word-guard, routed chamber-side from PENDING-99 Q2
The jurist answered Q2 as a reframing: §II.3 governs citation-scheme anchors and its syntax is explicitly open, so there was no yes/no to give. The real gap is whether a footnote's inline REFERENCE marker — distinct from its display number (§V, carrier artifact) and its text (§V, Tier-3) — is excluded from word-identity comparison. Neither clause says. REVIEWED-87 settled the ENGINE side only, and explicitly not as chamber alignment. Filed so both open edges can close together rather than this resurfacing later as its own surprise, which is the ruling's own recommendation. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh |
||
|
|
89e65fceb5 |
docs(governance): PENDING-99 census corrected; containment's sufficiency limit named
The census arithmetic is settled by counting, not by which reading closes: 17 instances / 15 distinct, the mislocation being one defect over two instances, so the session log was right and V2 §1.5 was wrong. My withdrawal of the original flag was itself the error — it inferred a breakdown from a total, which a total cannot settle. Yesterday's banked pattern: a number that matches is not a cause; it produced two candidates and I accepted each in turn. check_containment.py now carries the limit the PENDING-99 ruling exposed: containment verifies that what you quoted is ACCURATE, never that you quoted what MATTERS. An omission passes every time. The countermeasure is reading the adjacent clauses, not a better checker. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh |
||
|
|
f3f062defc |
docs(governance): PENDING-86 (d) landed — item fully dispositioned
Records what shipped, the disclosure disciplines carried over from PENDING-96/97, and the finding the structural pass produced on its first run: REVIEWED-11/-12/-74 were hidden from item_spans by leading whitespace, making the jurist's 2026-07-29 discovery failure over-determined. Steward unindented all three; 78 -> 81 items. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh |
||
|
|
673823961c |
[HARDENING] governance-mcp: keyword search — the jurist can discover an item whose id it does not know (PENDING-86 d)
Steward-authorized 2026-08-05, completing the (a)+(d) pair the jurist asked for.
The failure this closes is NOT "cannot read item X" — (a) fixed that. It is
"cannot DISCOVER item X whose id it does not already know": the 2026-07-29 case
where a ruling demanded an outcome REVIEWED-74 had settled four days earlier, in
a file the jurist could read but had no reason to open. Keyed retrieval cannot
serve that; only search can.
`governance_search(query, limit)` over PENDING / PENDING-archive / REVIEWED.
Result unit is the ITEM, boundaries from wd.item_spans — no second definition of
"an item" (the 2026-07-28 bug that hid twenty). Results name ids to hand to
governance_item, so the two tools compose.
Three deliberate properties:
- Terms are ANDed, and that is DISCLOSED on every result. A silently
conjunctive matcher is exactly how recall dies as a question lengthens —
found in the engine yesterday (PENDING-97, "what does levi mean by the gray
zone" -> 0 over ten real matches). The same shape is not being rebuilt here
unannounced.
- A miss is a legible empty: it states the corpus, the item count scanned, the
terms, and the match mode, and says outright that a longer query narrows
fast. Silence discloses its own blindness (PENDING-96's discipline, applied
to a new instrument on the day it was ruled).
- Ranked by exact-phrase then raw term-count, labelled as a term COUNT and not
a relevance score — it is a field this code actually computes.
Plus a query-INDEPENDENT structural pass: an item header hidden by leading
whitespace is invisible to item_spans, so it can never appear in results and its
absence reads as a genuine miss. Such headers are now reported beside the
results. An earlier draft flagged any uncovered matching line and drowned the
signal in each file's preamble — which is how a warning stops being read.
That pass earned itself immediately: REVIEWED-11, REVIEWED-12 and REVIEWED-74
were all indented and therefore unreachable by governance_item. REVIEWED-74 is
precisely the ruling the jurist could not find, so its failure was
over-determined — it did not know the id, AND the id would not have worked.
Steward unindented all three (REVIEWED.md is his file, not the executor's, per
Constitutional Constraint 1); items visible 78 -> 81, hidden headers now zero.
Selftest 35 -> 44 controls, 0 fail, including a negative control that goes red
if a header is ever hidden again. Live stdio round-trip confirms six tools and a
correct search result.
⚠ Requires a Claude.app restart to expose the new tool.
Refs PENDING-86 (d), PENDING-82, PENDING-96, PENDING-97.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh
|
||
|
|
b97e77aebe |
docs(governance): PENDING-86 (a) authorized and landed; (d) still open
Records the steward authorization, what shipped, the superseded-header trap the change had to disclose, and the restart requirement. (d) — keyword search — is explicitly NOT folded in: the jurist asked for (a)+(d) together and (d) is a new tool surface, not two enum entries. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh |
||
|
|
5cd5faf66e |
[HARDENING] governance-mcp: the jurist can now read the constitution it design-gates (PENDING-86 a)
Steward-authorized 2026-08-05, on the jurist's own request while unable to close
PENDING-99's Q2 — a question that turns on the chamber constitution's vocabulary
(§II.3's "inline anchor marker", §V's marker exclusion), which governance_read
did not expose. Third recorded instance on PENDING-86: the constitution, the
skill files, contamination-problem.md.
Adds two keys to the existing enum: `chamber-spec`, `graduation-spec`. No new
tool, no path argument, no traversal surface — the domain stays enumerable and
every refusal control still passes.
⚠ THE NON-OBVIOUS PART. Reachability of the KEY is not reachability of the
CLAUSE. This file's operative sections begin around line 354; the ~330 lines
above them are SUPERSEDED version headers kept as the amendment trail. A jurist
reading with the default limit=400 would land squarely in obsoleted text and
could rule on superseded clauses — the new access CAUSING the misruling it
exists to prevent. So the trap is disclosed on the key's own description, at the
point of use, and two controls pin it:
- the §V inline-anchor clause and the §II.3 marker constraint are both
reachable in ONE paged call (offset=350, limit=2000) — the actual Q2 text
- NEGATIVE CONTROL: a first-page read does land in the "(obsoleted)" region,
proving the trap is real rather than hypothetical
Selftest 29 → 35 controls, 0 fail. Live stdio round-trip confirms the §V clause
arrives verbatim through governance_read.
⚠ Requires a Claude.app restart: the running server process carries the old
code and will not show the new keys until respawned.
Option (d) — keyword search across PENDING/PENDING-archive/REVIEWED — is NOT in
this change and remains open on PENDING-86. It is a new tool surface, not two
enum entries, and the jurist asked for (a)+(d) together.
Refs PENDING-86, PENDING-99 Q2, PENDING-82.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh
|
||
|
|
40a6a2aaf8 |
docs(governance): PENDING-99 — the quoted tier accepts 3 of 17 human-verified citations
Filed with the jurist package pointer and its containment proof (16/16 clauses contained, 9/9 inversion-built controls absent). Carries an explicit send-state marker: filed is not sent. Refs studium-engine c67586d. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh |
||
|
|
1748777ff8 |
session 2026-08-04 evening: census 02 + PENDING-95..98 + the engine tool-evolution log
Census 02 run entire on the seven instruments census 01 left uncensused. The firing record divides by whether a human is in the invocation path. The engine was asked a question for the first time and certified that Levi has nothing to say about the grey zone, over ten gray zone matches in his own book. PENDING-95..98 filed together; 96 authorized and landed same session on the jurist's sharper wording (mine reproduced the overclaim one size down) and kept OPEN — retrieve.py has no test at all. Pulling thread REVISED at wrap after the steward punctured the first version: "the sources are not golden... a cycle of engine-missing-x / source-not-golden / no-bounded-scope". The break was already in project-chamber-versioned- releases, unread since 2026-07-28 — purpose choice and corpus scope are ONE decision. Verified at wrap: 13/13 engine shas match disk. The thirteen are not the 1,297, and the criterion is stability, not quality. Skill harvest: 4 proposals (a /census skill, two Symmetria §3 flags, and a /wake-up patch earned at a measured cost of ten days — a tracker marked THE GOVERNING FRAME should be read entire, not as its MEMORY.md pointer). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
dca2d5d270 |
docs(governance): PENDING-96 addendum — (a)+(b)+(c)-tag landed, item stays OPEN
Recorded after the act. The jurist's wording tightening is adopted as the operative framing: coverage and query-matching are different kinds of claim, and the falsifier bounds the finding rather than merely illustrating it. Landed in studium-engine@49a8851. Kept open on the jurist's process point — the finding is that a fixed instrument produced false confidence while wearing a mark that made it more credible, so shipping a better string is itself a small "feeling of done". Closing condition stated: PENDING-97 ruled → RETRIEVAL_BLINDNESS re-verified against whatever retrieval then exists → a regression test binding the six banked probes. Third open item surfaced during the work and recorded rather than fixed: retrieve.py has no test coverage whatsoever. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
3a1790dcd6 |
docs(governance): census 02 — has each instrument ever fired? + PENDING-95..98
Closes the scope gap census 01 declared for itself: the seven instruments it named as uncensused. Pre-registered before any source or config was read, with predictions and a discrimination condition. Census 01 asked whether an instrument had a real negative instance — a question about CAPABILITY. Census 02 asks whether it has ever engaged in real life. Those come apart exactly at the drift-checker's shape, and 2026-08-04 found the gap six times (retrieval_count = 0 across 19,915 nodes for four months; two replay modules that have never processed an event). VERDICT: every instrument a human runs by hand has a rich firing record; every instrument that runs by itself has none — and the two guarding the engine's output have no consumer at all. The record divides by whether a human is in the invocation path, not by age, quality, or importance. verify-before-compose fired exactly twice (2026-07-17, 2026-07-18), evidence surviving only in harness transcripts; and it CANNOT fire on 31 of 59 guarded files, including the live constitution, because it folds the existing file's contents into its search for the attestation. audit_cruft, verify_conversion and apply_char_glyphs are exemplary. resolve_archived_source is healthy at 349/349 and has zero log entries. studium verify-quote and fidelity_equivalence@2 have no production call site at all. Prediction 5 inverted for the second census running, for a new reason. Census 01: decay, not construction, is the failure mode. Census 02: the recording is attached to the human, so an instrument's record vanishes the moment it is automated — which is when it starts running often enough to matter. Two of my own candidate findings died to their controls and are recorded as such: probing the resolver with engine source_ids against the chamber's canonical_slug key space (one sentence from "the resolver is inert"), and reading character_as_image at the wrong YAML nesting (nearly "zero glyph maps declared"; there are two sources and a 63-item census). Filed together: PENDING-95 [HARDENING] the hook cannot fire on the constitution · PENDING-96 [HARDENING] "SILENCE — ✓ warranted" certifies the index and claims the answer · PENDING-97 [PROPOSAL] FTS AND-s bare tokens with no semantic layer, recall dies as questions lengthen · PENDING-98 [HARDENING] firing history exists only where a human invokes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
9c2a7c985c |
session 2026-08-04: PENDING-92/93/94 + the replay-never-resumed finding + l1-replay-sampler
Filed PENDING-92 [HARDENING] idle ladder (cool/deep unreachable, spec §9A.1 divergence), PENDING-93 [PROPOSAL] event_seqs normalisation, PENDING-94 [ESCALATE] the resume floor — minCursor pinned at 0 by two non-participating modules, so 13/13 restarts rebuilt from seq 0 and the catch-up branch has never executed. Recall never worked either (retrieval_count = 0 across the whole April-June graph); same fact from the other end. Adds scripts/l1-replay-sampler.py (external read-only sampler, four positive controls, refuses to run blind). Note to Seb pushed separately as CapableMind-AI@ad285df. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
ad2fb07698 |
memory: trim MEMORY.md 20504->17250 (slim not delete); tomorrow = CM/BMF -> library transfer
Index was re-bloating to its pre-compaction size — the exact class the two-file split exists to prevent. Slimmed 6 over-budget tracker entries and 12 standing preferences to their operative rule, relocating provenance narrative to the linked files where it already lives. 49 bullets before and after, 5 sections before and after, 49/49 pointers resolve. Session record gains tomorrow's steward-set agenda: what transfers from CapableMind/BMF to the library/engine — led by running census 01 against the chamber/engine tooling it explicitly declared out of scope. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
dd351b6e8e |
session 2026-08-03: the governors that never engaged — census 01, S-series closed, L1 pin root-caused (ANALYZE), replay in flight
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
0a48e6934d |
[FIX] L1 pin root-caused and cleared; S-series closed; instrument census
mindfabric-00 had been event-loop-pinned for 6+ days (100% CPU, /health silent).
Profile + CDP inspector named two hot paths, both from runTemporalPipeline:
checkForCycle -> getCausalEdgesFromSqlite 99.8% of samples
tryExtendChains -> getChainsContainingSeq now dominant (json_each scan)
Cause of the first: ANALYZE had never been run, so SQLite preferred a boolean
index (idx_caused_tombstoned, matching ~all 836k edges) over idx_caused_from.
ANALYZE across 15 module DBs flipped the plan; 6.4x on a microbenchmark and
99.8% -> 6.0% in the live profile. /health went from silent to 200 in 0.13s.
B1.1's fan-out cap is IMPLEMENTED AND WORKING (today: max in-degree exactly 20,
zero violations; pre-23-June: max 629, avg 67.6). The defect is data, not code —
836k edges / 813k chains minted under ungoverned fan-out before the fix landed.
Repair run: derived stores wiped, logchain preserved, replay in flight.
S-series closed (jurist had already ruled all of Q1-Q5 on 2026-05-18):
S6/S7/S9 implemented (Symmetria §3 flags, `suspend` outcome, wrap-up §8 tenses)
S2 rebuilt as [FIX] — wake-digest unwrapped-session detector, discrimination-
gated on real sessions (11 wrapped / 2 unwrapped)
S4/S5 withdrawn with MemPalace (steward ruling)
Dormant legacy dispositioned: PENDING-4/5/11/12, CD-03, ICP-19 duplicate.
Open authorization items 22 -> 10.
Census 01: which instruments have no real negative instance. Finding — the
governance drift-check has 3 of 5 families inert against the current CLAUDE.md,
and 71 of 75 verification-ladder entries are cited nowhere outside the ladder.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc
|
||
|
|
23e7515302 |
session 2026-08-02 evening: Control Kernel v1.0→v1.1, reduction arm, CONTROL-A/B, trial 04 VOID, correlation 01
Session record, memory updates and KG appends for the evening session. Filed: Control Kernel v1.0 (frozen, superseded) and v1.1 (governing); the reduction arm and its two censuses; CONTROL-A and its defect twin with a bidirectionally-gated ledger; trial 04 (CONTROL VOID) and its pre-registration; correlation 01 — the first measurement of Constraint 6's own falsifier, jurist 4-of-6 and Fool 0-of-6 with no overlap. New feedback memory: removing a claim is not the same as removing the reliance on it. Earned by finding that draft 3's "fix" to CONTROL-A had CONCEALED a defect rather than closed it — invisible to me, the kernel and four gates, found by a differently-formed reader. Verification ladder: the discrimination gate — a check must return different verdicts on two REAL artifacts, one with the property and one without. 6 KG lines: two drift-patterns, one good-direction, two preventions, and the Constraint 6 first-measurement. |
||
|
|
1def46b4a6 |
Correlation 01: read condition confirmed; the 4-of-6 stands, with one bound left open
Steward: pasted into a new window, same model, no conversation context. Persistent cross-conversation memory may be live, so recall is not excluded by the setup — only conversation carry-over is. SECOND INTERNAL CONTROL, stronger than the D3 one: the findings were VERSION-APPROPRIATE. The jurist had read CONTROL-A before and reported two defects. It returned to both of the same REGIONS — but named, each time, the defect belonging to the version in front of it, not the one it reported before. The obligation region: pass 1 found the dropped qualifier, this read found the explicit review-date assertion (D1), which is what CONTROL-B actually carries. The method region: pass 1 found clause 5 out of scope, this read found the source absent altogether (D4), which is what D4 made true. Recall pulls toward the earlier descriptions. Reading pulls toward the text present. Both pulls went to the text present. BOUND LEFT OPEN, not waved off: region-level convergence is consistent with priming as well as competence — those two regions are the document's weakest and a good reader would go there anyway. What priming cannot explain is naming the version-appropriate defect twice. Verbatim diffing is ruled out on two independent grounds; region-level priming is NOT ruled out and is recorded as an open bound. The post-hoc self-report question is now low-yield and is not treated as owed: self-report of recall is weak evidence beside two behavioural controls already pointing the same way. VERDICT: the 4-of-6 stands. The directional rule voided a high score only if inflation could explain it, and inflation here would require verbatim comparison, which both controls contradict. |
||
|
|
ce49b1bee4 |
Correlation 01 — jurist 4 of 6, Fool 0 of 6, no overlap. First measurement of Constraint 6's falsifier.
Pre-registered prediction (at least 2 of 6) held and was exceeded. The Fool's side
was already published and unamendable, so only the jurist's half was open.
D1 HIT "that this file carries a stated review date must be true, which is
asserted, not demonstrated" — the ledger's exact claim
D2 HIT names the reason precisely: imports the honest-degradation principle,
doctrine outside the quoted text
D3 MISS
D4 HIT "Named where? Not in any quoted clause"
D5 HIT "a forward reference to one's own result is not confirmation"
I1 MISS
THE CONTAMINATION QUESTION ANSWERS ITSELF FROM INSIDE THE RESULT. All five
injected defects are TEXTUAL DIFFERENCES; a reader working from recall would find
them by comparison and would find them all — D3 most easily of any, since it
replaces a whole sentence. D3 is exactly the one missed. It is the hardest defect
for a READER (a weakened premise reads naturally) and the easiest for a DIFFER.
Missing it is the signature of reading. Steward's confirmation of the fresh
context still owed; this is internal evidence, not a substitute.
D4 MASKED I1. In CONTROL-A the jurist caught the precedence assertion because the
document QUOTED the remedy it severs. D4 deletes that quotation, so in CONTROL-B
the assertion stands alone with nothing to contradict it, and the same reader
walked past it. Injecting one defect CONCEALED another. Nothing in the twin design
contemplated defect interaction and the ledger cannot express it. Filed as a real
limitation of the method.
TWO NON-LEDGER FINDINGS RECORDED AND NOT COUNTED — candidate defects in CONTROL-A
discovered by this read, left scored as false positives under the rule as written,
because amending ground truth after a read to improve a score is the exact move
this apparatus exists to prevent. I2: no lawful flag channel is established. I3:
the flag-duty does not entail a look-duty — the quoted clause obliges flagging
documents THAT HAVE DRIFTED, a condition satisfied vacuously by never establishing
drift. I3 is the sharpest thing either reader produced: it attacks the conclusion
at its root.
AND BOTH WERE ALSO PRODUCED BY THE FOOL, in operational dress. So the two readers
CONVERGED on the unlogged defects and DIVERGED COMPLETELY on the logged ones.
ON THE DOCTRINE: no evidence of correlated misses on this document. What one
missed, the other did not reliably miss too — the condition Constraint 6 states it
would be falsified by. With every limit attached: one document, one pair,
formation-DIFFERENT readers, so nothing here speaks to the jurist-executor pair
that CLAUDE.md actually flags as untested. And they do not cancel — between them
these two still left D3 and I1 standing.
|
||
|
|
da321177e9 |
[FIX] Degraded guard: deliberation is two cases, not one
Filed in trial 04's tool review, now closed. The guard reported UNTAGGED
SCRATCHPAD ... "Do not grade this as the checker's findings" for both of the two
situations it can see, and they are opposite:
trial 03 — deliberation that ran into the CEILING. No answer ever existed. VOID,
and the absence of findings is NOT restraint.
trial 04 — deliberation that COMPLETED. The answer follows the scratchpad in the
same file. Perfectly gradeable once extracted. NOT void.
Collapsing them would have thrown away six good runs; not distinguishing them
would have graded trial 03's silence as restraint. The guard now branches on
hit_token_ceiling and says which case it is.
Controls added for all four shapes, including the two the trials actually
produced and a clean answer that merely hit the ceiling — truncation is reported
separately and is not a scratchpad problem.
The guard does NOT auto-extract the embedded answer. A heuristic split would be a
new failure mode in the instrument whose entire job is to not silently mis-report
what it has. It flags; a person extracts.
|
||
|
|
a6f0a87ac7 |
Correlation 01: directional-contamination rule fixed before the read
The steward asked whether to delete the CONTROL-A jurist conversation so it cannot be recalled. Answer: no. That conversation is the primary record of the pass-1 findings on which trial 04's CONTROL VOID verdict rests, and the write-up quotes it selectively. Destroying evidence to protect a measurement inverts the priority — the measurement is replaceable and the record is not. Recorded before the read, because it decides how the result may be used: RECALL CONTAMINATION IS DIRECTIONAL. It could only make the jurist find MORE — it would recognise the text and could locate the injected defects by diffing against memory. It cannot cause a miss. So a HIGH score is uninterpretable and is to be VOIDED unless the fresh context is confirmed, while a LOW score is robust. The outcome this measurement most needs to be trustworthy — 0 of 6, the evidence toward correlated blind spots — is precisely the one contamination cannot manufacture. AND I1 IS IMMUNE BY CONSTRUCTION. The inherited precedence defect is not a difference between the two documents, so diffing against memory cannot reveal it. Scoring on I1 alone stays clean under any recall condition. That is an accident of how the twin was built, noticed only because the steward asked the question. Post-hoc check added: ask whether it had seen the document before — AFTER the response, never before, since asking first would prime it. Records the condition instead of assuming it. |
||
|
|
7bb5222093 |
Correlation 01 pre-registered; sendable artifact built with the contamination control
The steward asked to be pointed at CONTROL-B to relay. Pointing at it directly would have produced an uninterpretable result, so the control comes first. THE CONTAMINATION THAT MATTERS: the jurist read CONTROL-A closely hours ago and found two real defects in it. CONTROL-B is that document with five edits. In the SAME conversation the jurist would recognise the text and could find the injected defects by diffing against memory rather than by reading — which is not the capacity under test, and not what the Fool did. It needs a FRESH CONTEXT. Second control: the jurist gets the Fool's prompt VERBATIM, not the richer pass-1 framing. A correlation measurement requires the same task, or it compares two different questions. SEND-CORRELATION-B.md is generated mechanically from the prompt file and the document, so there is no transcription path, and leak-checked against CONTROL-A, twin, defect, ledger, kernel, injected, Fool, correlation, measurement, trial. CLEAN. GROUND TRUTH IS SIX, NOT FIVE — the five injected plus I1, the precedence assertion inherited from CONTROL-A and found by the jurist in trial 04. Recorded BEFORE this read so it cannot be back-fitted. THE FOOL'S SIDE IS ALREADY PUBLISHED AND UNAMENDABLE: 0 of 6 across three seeds. So only the jurist's side is open, and the comparison cannot be fitted to a result I want. PREDICTION FIXED IN ADVANCE: the jurist finds at least 2 of 6, on the grounds that the two defects it found in CONTROL-A were of a kind overlapping D3, D4 and I1. If it finds 0 of 6 the prediction fails, and that is the MORE important result — both readers missing all six would be the first direct evidence toward the correlated blind spots that Constraint 6 names as its own falsification condition. Recorded limit: this measures jurist-vs-Fool, a formation-different pair. It says nothing about the jurist-executor pair, which is the pair Constraint 6 actually flags as untested. |
||
|
|
7fd2f9efdc |
[FIX] The twin ledger was incomplete as ground truth, and the gate could not have said so
Caught by the steward asking whether CONTROL-B was PASS 2. It is not — different
document, different question — but checking the answer exposed a defect in the
correlation measurement I had just proposed.
CONTROL-B IS NOT CONTROL-A PLUS FIVE DEFECTS. The transformations overlap the two
real defects trial 04 found:
· clause-5-out-of-scope GONE — D4 deletes that quotation outright
· dropped-qualifier GONE — D1 replaces the sentence with an explicit
version of the same error, which is why the twin
carries openly what the control carried concealed
· asserted precedence SURVIVES, at line 51, UNLOGGED
So the twin holds six defects and the ledger recorded five. The grading rule
would have scored a correct finding on the sixth as a FALSE POSITIVE.
AND THE GATE COULD NOT HAVE CAUGHT IT. twin.py verifies that the ledger records
every DIFFERENCE between the two documents. It does not verify that the ledger
records every DEFECT in the twin. Those are different claims, and the file
asserted the second while proving only the first — a defect already present in
the control is not a difference, so it passes untouched. Fifth instance of a
check certifying a property of the code while claiming a property of the result,
this time inside the artifact built to escape that class.
Fixed: an inherited_defects list records I1 with its provenance and why it
survives; a defects_not_surviving note records the two that do not, so the twin
is never mistaken for a superset of the control; the grading rule now spans both
sets; and the gate's own output states what it does NOT establish, warning when
inherited_defects is absent — because absent is not the same as none, it means
no one has looked.
The correlation measurement can now use the twin honestly. It could not have
before this.
Note on this message: the first attempt lost three terms to shell command
substitution, because backticks in a -m string are evaluated by zsh. Amended.
Recorded rather than silently repaired, since a commit message is part of the
record and this one is about incomplete records.
|
||
|
|
f82225aa52 |
[FIX] Trial 04 — CONTROL VOID. Two readers, two different real defects, neither the other's
Six runs, three seeds per arm, none truncated, all pre-registered before the
first (
|
||
|
|
33cecdb73a |
Split the jurist read into sendable files; the parent was a contamination hazard
The steward asked whether to share CONTROL-A-JURIST-READ as pass 1. The honest answer is no, and the question exposed a defect in how I built it: the parent file carries BOTH passes plus a 'For the record' section naming exactly what is withheld — that a defective twin exists and that this is a control in a measurement. Sending it would have destroyed the read. An artifact that has to be accompanied by a warning about how to use it is built wrong. So the parent is now marked DO NOT SEND and is explicitly the steward's instruction sheet, and two standalone files carry only what is sendable: SEND-PASS-1.md (803 words) — the unanchored read SEND-PASS-2.md (999 words) — the dependency audit, after pass 1 returns Both are generated from the parent's fenced blocks and leak-checked against a wordlist: twin, defect, control document, measurement, kernel, Constraint 6, CONTROL-B, PASS 2, withheld. Both CLEAN. Note the check includes 'PASS 2' — pass 1 must not reveal that a second pass is coming, or the reader may hold back. Caught by the steward asking a practical question, not by any check of mine. The leak-check is now mechanical so the next regeneration cannot quietly reintroduce it. |
||
|
|
7d2a1886e9 |
Jurist read request for CONTROL-A, composed BEFORE any run
Kernel v1.1 §6.2 requires an adversarial read by a party that is neither the document's author nor an author of the kernel. That excludes the executor and the steward. The jurist is the available reader. Two passes, and they must not be sent together. PASS 1 is unanchored: the document, the standard in one sentence, and the instruction to try to break it. PASS 2 is the author's dependency claims, audited line by line — aimed straight at Kernel §4's residue, which is where the entire trusted base sits. Sending both at once would let PASS 2's framing anchor PASS 1. NOT built with /jurist-package, and the reason is the point: that format inlines comprehensive framing so a design gate can be ruled repo-blind, and here comprehensiveness is the contaminant. A blind adversarial read must not be told what to look for. WITHHELD, and recorded as withheld so the withholding is inspectable: that this is a control in a measurement; that a deliberately defective twin exists; the five defect types; the kernel's full text. INCLUDED deliberately: one clause ruling out the axiom-flag confusion, since the document quotes ~/CLAUDE.md as a source it may take as given, and a jurist flagging those quotations would be answering a different question than §6.2 asks. This mirrors the AXIOM-FLAG category the trial-04 pre-registration fixes for the model, and it is the same problem seen from the other side. The jurist can verify every quotation itself — governance_read reaches claude-md, and CONTROL-A's entire axiom set is that one file. That half of the read requires no trust in me at all, and is formation-independent. Independence recorded as Constraint 6's WEAK form, in the constitution's own words. Composed before any run so that no result could frame it. |
||
|
|
75efc35d15 |
Trial 04 pre-registration: written before any run, with the prompt reasoned about
Trial 03 was pre-registered and still failed because its pre-registration reasoned about the DOCUMENT and the GRADING and never about the PROMPT already in the file. §4 of this one is that omission repaired. TWO PROMPT ISSUES SETTLED IN ADVANCE: 1. The anti-echo clause should be INERT on an A-free document — it excludes assumptions the author has named, and these documents name none. Recorded as a FALSIFIABLE PREDICTION: no reasoning trace will invoke it to skip any part of either document. If one does, the prompt is still interfering and the measurement is compromised — the exact interaction that voided trial 03, caught before the run this time. 2. THE QUOTED-AXIOM PROBLEM. The prompt asks for claims relied on but not demonstrated. CONTROL-A's five quotations are, by the prompt's letter, exactly that — their warrant lives in Kernel §1, which the reader cannot see. A reader flagging them is not obviously wrong. So a third grading category is fixed NOW: AXIOM-FLAG, neither true nor false positive, counted separately. The prompt is deliberately NOT amended: 'treat quoted material as given' is a steer about what not to find, and it would break comparability with trials 01-03. A high AXIOM-FLAG count is itself a result — it would mean the prompt and the kernel disagree about what counts, which is a defect in OUR design. DESIGN: 3 declared seeds (20260802/3/4) x 2 arms = 6 runs. Repeats are part of the design because trial 03 recorded that one run cannot separate a disposition from a sampling artifact. max_tokens 12000 — trial 03 died at 4096 when 2,944 words of scratchpad consumed the budget before the answer began. CROSS-ARM READINGS FIXED IN ADVANCE, including the one that voids the whole instrument: A clean AND B clean fires §6.3's cue test, because CONTROL-B is the control in identical register but unsound, so a clean result on both means the measurement was reading register rather than soundness. §6.2 SEQUENCING: the jurist package goes out BEFORE the first run, in two passes — blind, then a targeted audit of the tags file's claimed support chain. Sent before, because a package composed after seeing results would be framed by them. Runs proceed in parallel; no rate is believed until the ruling returns. Independence recorded as Constraint 6's WEAK form — the jurist shares the executor's formation, and this must not be reported as an independent check. Not run. |
||
|
|
ecf5f95b0a |
[FIX] CONTROL-B: the defect twin, and ground truth that is not my reading
Kernel v1.1 §7 realised. Five defects injected into CONTROL-A as RECORDED
TRANSFORMATIONS, each with unit target, exact find/replace, what is
undemonstrated, and why no mechanical check can catch it.
THE RESULT THAT MATTERS: the twin passes EVERY mechanical check. Tiling, §3.1
tagging completeness, §3.2 Q-resolution, §3.3 heading screen, A-prohibition —
59/59 units, 100% sound, zero quarantined. It carries five load-bearing claims
that do not hold.
So the pair is the cleanest demonstration yet of the class the steward asked
about: two documents, one sound and one defective, are MECHANICALLY
INDISTINGUISHABLE. Both report 100%. The difference is visible only by reading.
That is not a flaw in the instruments — it is the design. A defect a check could
catch would not be testing the reader.
THE FIVE, each a distinct failure mode:
D1 SCOPE-WIDENING — asserts this file has a 'stated review date'; the quoted
clause is triggered by one and nothing establishes it
D2 UNDEFINED-TERM — imports 'limit of the system' and an obligation to report
limits; neither is in the axiom set or the quotations
D3 PREMISE-WEAKENED — drains the premise of the content the conclusion needs,
leaving both premise and conclusion standing
D4 SUPPORT-DELETED — removes the fifth quotation entirely and keeps the three
claims that rested on it, rewriting the lead so nothing dangles
D5 CIRCULAR — makes a premise rest on the conclusion it is a step toward
D1 and D2 are the two defects I found in my OWN draft 2 of CONTROL-A and removed.
Reintroducing them deliberately is the only honest use for them, and it means at
least two of the five are defects a careful author actually made.
GROUND TRUTH BY LEDGER. twin.py gates it bidirectionally: forward(control) == twin
AND inverse(twin) == control, both byte-exact. Forward alone would pass a ledger
that OMITS an edit, since the omitted edit is simply carried in the twin file —
which is exactly how laundering would enter. The inverse is what makes the ledger
complete rather than merely non-empty.
test_twin.py shows the gate FAILING in both laundering directions: a twin quietly
altered beyond the ledger, and a ledger recording an edit the twin does not
contain. Fixtures derived from the property, not from the code.
The tags file for the twin contains five deliberate falsehoods, marked and named,
because that is what a defective document's own tagging would say. The ledger and
the tag file disagree on purpose; the ledger governs.
Not run. The Fool has seen neither document.
|
||
|
|
a7b833caa6 |
[FIX] CONTROL-A written: the first kernel-sound control document
61/61 units sound. A=0, N=0, D=43, Q=5, X=13. All five quotations resolve
verbatim against ~/CLAUDE.md, the single axiom source.
The document derives, from five constitutional clauses, a conclusion the
constitution nowhere states: that detection and correction are priced
differently, and that a practice pricing them alike suppresses a required act by
appeal to a prohibition that does not reach it. 'detect' appears nowhere in
CLAUDE.md — checked before writing, so the derivation is not inert.
The kernel's own ordering rule shaped the form. §2's D may rest only on what is
established EARLIER, so the clauses must precede the derivation and the title may
not state the conclusion. The constraint produced the right document.
TWO JOINTS WERE REMOVED IN DRAFT 3 RATHER THAN DEFENDED, and that is the most
load-bearing work in the file:
· Draft 2 concluded that detecting drift in THIS FILE is required, resting on
the review-cadence clause, whose trigger is a 'stated review date'. CLAUDE.md
states a revision CADENCE ('revised yearly'), which is not the same thing. The
gap had been bridged by interpretation wearing the clothes of derivation. The
conclusion never needed the application to this file, so the claim was narrowed
to what the clauses carry.
· Draft 2 routed the first horn of the reductio through Constraint 4 ('the
system must report its own limits'). 'Limit' is undefined in the axiom set, so
any obligation drawn from it is interpretation. The ESCALATE taxonomy row
governs the same case exactly, in the source's own words, and replaced it.
Finding them was the point of writing it as if it mattered. §6.2's falsifier is
'a document passes every check and a competent adversarial reader still finds an
undemonstrated load-bearing claim' — better found by the author first.
Also fixed, two tool defects of the same class this programme exists to catch:
· reduce.py still printed 'kernel v1.0' after v1.1 was frozen — every run record
carried a provenance line naming the wrong governing document.
· §3.1 did not enforce v1.1's A-prohibition. A control tagged A now FAILS: needing
an assumption means the claim is not derivable from §1, and naming it is exactly
what v1.1 forbids. Reduction runs may show A; a control may not.
NOT a soundness verdict. §4's six judgement residues are untouched by any check,
and §6.2 requires an adversarial read by a party that is neither the document's
author nor an author of the kernel. That read has not happened.
|
||
|
|
3d0d9d6f27 |
[PROPOSAL→AUTHORIZED] Control Kernel v1.1 — A demoted to a diagnostic; the control document is a derivation
Steward authorised the A-free rule. v1.0 is superseded and retained unchanged as
the record Reduction 01 and 02 were run under; no run was ever graded under it,
so nothing is invalidated.
THE CHANGE. Both reductions returned A=0 across 152 assertive units — our prose
does not name assumptions inline, it collects them into a section. That reads
like a defect and points the other way: a document with NO assumptions does not
hedge, and the prompt's anti-echo clause ('an assumption the author has already
named is not a finding') goes INERT, because nothing is named to exclude. So
'nothing found' can no longer be reached by recognising a confessional register;
it requires checking that every claim is demonstrated or quoted. The control
document is therefore a DERIVATION, not an argument — the proof-assistant
condition, and the strongest form the control can take.
Operationally: needing an A is a failure signal, not a licence. Derive the claim
or widen §1 and say so. Never name it and proceed.
WHAT IT BUYS (§7). The injected-defect arm becomes specifiable for the first
time: a defect is a RECORDED TRANSFORMATION — take a D and silently
de-demonstrate it. False-positive rate from the control arm, detection rate from
the defect arm, and the ground truth for both is a ledger rather than the
executor's reading. That is the first ground truth in this programme that is not
my judgement.
ALSO FOLDED IN, as corrections of the kernel's own account of its reach against
measurement already recorded — leaving them would have the kernel misstate what
it does, which Constraint 4 forbids:
· the genre boundary, measured (8.5% on a ruling, 68.6% on a package)
· §3.3 named a screen not a decision, and §2a moved into §4's judgement residue
after it false-passed a real package
· §6.3's cue test RE-AIMED: A-free removes the confessional-register risk and
substitutes its opposite — a derivation may read dry and authoritative and
earn 'nothing found' from that register instead
HELD with the dependency named, not deferred vaguely: PARAPHRASE and table rows
under §2c. Both bite only in the REDUCTION arm, and the control is now
constructed, so both are avoidable by construction and neither blocks the
critical path. They return if reduction is ever used to produce a control.
§4's residue list is now six. Its DIRECTION is unchanged — all six remain ways
for the author to make a document look sound. Watched.
1899 words, up 5% from v1.0 draft-2. §1 hashes re-verified against the live
sources. No control document has been written.
|
||
|
|
e9f3544012 |
[FIX] Discrimination gate: a mechanical answer to the check-certifies-code class
Steward asked whether we can do something about the recurring class other than
name it. This is the mechanical part of the answer.
THE CLASS: four times in three days a passing check certified a property of the
CODE while claiming a property of the RESULT, each found by a person looking.
Every one tested a predicate NECESSARY but not SUFFICIENT for the property —
quotes-present ⊂ inference-survives; answer-non-empty ⊂ answer-produced;
no-heading-says-limitations ⊂ no-collected-limitations-section.
WHY THE POSITIVE CONTROLS MISSED IT: the fixtures were derived from the CHECK
('what makes this regex fail?') rather than from the PROPERTY ('what makes this
claim false?'). A control built from the check's own vocabulary inherits its
blind spot by construction — same shape as the recorded drift-pattern that a
control built by EXTRACTION leaks by construction.
THE GATE: a check must return DIFFERENT verdicts on two REAL artifacts, one known
to have the property and one known to lack it. Same verdict on both means it has
discriminated nothing, however many synthetic fixtures it passes. Real artifacts,
because a synthetic negative is written by the same hand as the check.
DEMONSTRATED, not asserted: the gate is run against the §3.3 pattern AS SHIPPED,
and rejects it — flagged=False on both the package (which has a collected
limitations section, Part VII) and the ruling (which has none). It discriminated
nothing while passing five synthetic fixtures. The current pattern passes.
Residue stated in the code rather than implied: a heading naming no topic
('## Part VII') defeats every wordlist, and the gate prints that it does. Passing
is not a §2a verdict; §2a stays in Kernel §4's judgement.
|
||
|
|
4408506ffa |
[FIX] Reduction 02: package reduces to 68.6% — the genre reading confirmed, Reduction 01 corrected
Prediction recorded in Reduction 01 BEFORE this census, so it could fail: the
package's Part I is 'Grounding (quoted verbatim)' and quotes CLAUDE.md directly,
so Q should be non-zero where it was zero. Q=9. D=40, where the ruling had none.
ruling package
sound 8.5% 68.6%
PERFORMATIVE 12 0 <- the genre signature
BLEND 9 25
INHERITED 4 0
UNSOURCED-QUOTE 3 0 <- §1's header clause worked
Genre reading confirmed eightfold: a package proposes, a ruling determines.
CORRECTS Reduction 01's strong conclusion that 'the reduction arm collapses into
the synthetic arm'. On package prose repair touches 31.4%, not 91.5% — reduction,
not authoring, and the two arms stay distinct. That conclusion was correctly
bounded at n=1; the bound was the whole of its content and one document collapsed
it. Reduction 01 now carries the correction inline.
BLEND is now the blocker and is genre-independent: 25 of 33 quarantines, 7 of
them rows of the Part IV table, which pairs a quote with an end-state and a
verdict — three primitives by construction.
Two check findings, one good and one bad:
§3.2 CAUGHT A REAL TAGGING ERROR OF MINE. Unit 145 was tagged Q; it is a sentence
ABOUT a quotation, not a quotation, so not verbatim-as-a-unit. Corrected to D.
The check found it, the reading did not — the 'quoted but not traced' defect the
jurist caught on 2026-07-19, mechanised.
§3.3 GAVE A FALSE PASS, found by looking. Part VII 'Disconfirming evidence' IS a
collected limitations section under §2a — the exact section trial 03 showed the
model skipping wholesale — and the screen missed it because it never says
'limitations'. Widened; the package now correctly FAILS §3.3. But no pattern can
decide this: a section titled only 'Part VII' defeats any wordlist, and a control
now asserts that. §3.3 is a SCREEN, not a decision; §2a belongs in §4's judgement
residue. Fourth time in three days a passing check certified the code while the
property failed, and the fourth found by a person looking.
A=0 IN BOTH DOCUMENTS, and it is the same fact as the §2a failure seen from the
other side: we do not name assumptions inline, we collect them into a section.
Our best governance prose is written in exactly the shape that defeats the reader
the section was written for.
Also fixed: the tool was still printing 'NOT checked here: §3.2' after §3.2 was
implemented — under-claiming, but still a false statement about what ran.
Kernel v1.1 candidates are now evidence-backed and remain UNAPPLIED; v1.0 stays
frozen and a revision is a new experiment. The false-positive control remains
unrun and neither reduction produced a usable control document.
|
||
|
|
1ebaf6aba5 |
[FIX] Reduction 01: a jurist ruling reduces to 8.5% under Kernel v1.0
First run of the reduction arm. Result: 4 of 47 assertive units survive. D=0, Q=0, A=0 — in a real jurist ruling not one unit is demonstrated-in-document and not one is a verbatim quote from a declared axiom source. Census: PERFORMATIVE 12, BLEND 9, UNSOURCED-FACT 8, TESTIMONY 6, INHERITED 4, UNSOURCED-QUOTE 3, PARAPHRASE 1. §6.1 asked whether a heavy quarantine means the kernel is too strict or our prose is full of unmarked assumptions. The census says neither: PERFORMATIVE and TESTIMONY are 42% of quarantines and are categories the kernel has NO TAG FOR. 'Design gate PASSED' is not an undemonstrated claim, it is a determination true by being uttered; 'I read CLAUDE.md in full' is testimony. A ruling that neither performed nor testified would not be a ruling. So the finding is a GENRE BOUNDARY — v1.0 models argumentative prose, a ruling is authoritative prose — and that boundary is nowhere stated in the kernel. Three gaps, one genre-independent: TESTIMONY, PERFORMATIVE, and PARAPHRASE. PARAPHRASE is the one that matters — Q demands verbatim, and any document reasoning from sources in its own words is untypeable. Plus a fourth, structural: the §1 axiom set is too narrow to reduce anything real (12 of 43 quarantines are UNSOURCED-* or PARAPHRASE). Deepest finding: §2c is satisfiable BY CONSTRUCTION but not BY REDUCTION. Splitting a blend means rewriting someone else's sentence, which is where translator bias lives. At 91.5% that is not reduction, it is authoring a new document with the original as a prompt — so on this genre the reduction arm COLLAPSES INTO the synthetic arm, inheriting its confirmation bias without its convenience. The two arms were adopted because they fail differently; that is the property at risk. n=1 and stated as such. The package genre splits to 109 taggable units and is NOT tagged. Falsifiable prediction recorded before the census: its Part I is 'Grounding (quoted verbatim)' and quotes CLAUDE.md directly, so Q should be non-zero there where it was zero here. Tooling: reduce.py + test_reduce.py, every gate shown FAILING on a fixture built to break it. The splitter shipped with three defects, all found by contact with a real document and none by review — third instance in three days: a '##' inside a fence kinded as a heading, '---' rules taggable, and a '?' inside a quotation splitting a sentence into a FRAGMENT. Fixed at v1.1.0 with regression controls; the third fix's own risk (lower-case suppression) is recorded and controlled. |
||
|
|
899d157026 |
governance: record the kernel freeze in the Fool trial log
Hash, freeze commit, and axiom-source hashes recorded alongside the commit, since the file cannot contain its own hash. Also corrects the log's standing claim that soundness cannot be known by construction — unconditioned soundness cannot; operational soundness relative to a declared kernel can, which is what proof assistants have always done. Next arm named and not begun: reduction before generation, because reduction is the only arm that can falsify the kernel. |
||
|
|
2e83b2c3a6 |
[PROPOSAL→AUTHORIZED] Control Kernel v1.0 FROZEN — soundness by construction for the Fool false-positive control
Steward accepted draft-2. Frozen; nothing has been written or reduced against it prior to this commit, which is the freeze anchor. The kernel answers a question the programme had been getting wrong. The false- positive control needs a document on which 'nothing found' is correct, and I had claimed soundness cannot be known by construction. The steward corrected the framing: unconditioned soundness cannot, but OPERATIONAL soundness relative to a declared axiomatic kernel is the standard trick behind proof assistants — and it is the same regress the central path already terminates by binding claims rather than certifying parties. The kernel is therefore a TCB: small, declared in advance, published rather than hidden, because a secret trusted base is a contradiction in terms. Design: axiom set declared and hashed (CLAUDE.md, REVIEWED.md); every sentence typed D/Q/A/N/X; kernel-sound iff every sentence is tagged and every Q resolves verbatim; tags stripped before the model sees anything, byte-verified, so the control cannot be passed by tag-matching without reading. Two rules were paid for in evidence rather than reasoned. §2a forbids a limitations section: in trial 03 Qwen located Part VII, classified it as author-named limitation, and skipped it wholesale — a collected section turns reading into lookup. §2c forbids multi-primitive sentences, with the grading rule that a blend the model catches VOIDS the document rather than counting as a false positive, so a missed blend indicts the author. Steward review supplied three structural findings, all adopted: tag co-occurrence (taken by decomposition; precedence rejected because it converts a flagged demonstrated-half into an echo and deflates the very number the control produces, under a standing caveat that the grader is the party under test), transitive assumption creep (D now requires resting only on axioms or earlier D/Q — assumptions cascade, and that cost is accepted as correct), and rhetorical presupposition in X (X iff declarative conversion yields no load-bearing claim; headings included). Applying them surfaced a fourth I had missed: Q's scope-of-use was judgement and absent from §4 — the exact defect the jurist caught in my own package on 2026-07-19. §4's residue list grew from three to five. Its DIRECTION did not: all five remain ways for me to make a document look sound, none makes it look worse. That one-directionality is the property under watch. Cost incurred and recorded: the steward's review materially improved the kernel and thereby coupled him to it. §6.2's adversarial falsifier therefore falls to a third party — the jurist or a differently-formed model — not to him. |
||
|
|
cd2edaa3c9 |
[FIX] fool: trial 03 was never the false-positive control, and was inherited as one
Third and largest finding from the trial-03 post-mortem. The pulling thread — in MEMORY.md and in the previous wrap — named trial 03 'the Fool's false-positive control'. Trial 03's own pre-registration says it asks whether the checker shares the 2025 archive's self-exemption disposition, and its grading section states that 'the false-positive rate is still unmeasured'. The pre-registration knew what it was. A false-positive control needs a SOUND document, so that 'nothing found' is the correct answer. Trial 03's input was chosen with five pre-registered weaknesses, deliberately, because absence of the strong hit is only interpretable if performance is otherwise competent. The ground-truth list exists to establish that the document is NOT sound. They are different experiments. The wrap held the contradiction in one paragraph — calling trial 03 the control while saying the control requires a sound document trial 03 does not use. It survived the wake, was restored as the thread, and was 'substrate-checked': the check verified the M4 was up and that trial 03 had not run, and never asked whether the trial was the thing the thread said it was. Checking that a claim's referent exists is not checking that the claim is true. The conflation then reached the run record's note field, which is preserved with the error in it. Consequence, larger than trial 03: the false-positive control has not merely gone unrun, it has never been DESIGNED. It needs a document believed sound, and soundness cannot be known by construction. That choice is a fork, and it is surfaced rather than taken. |
||
|
|
eda11e559b |
[FIX] fool trial 03 VOID; degraded-guard rebuilt with a positive control
Trial 03 ran and produced nothing gradeable. Recorded as VOID rather than
omitted, because an absent row reads as a trial not attempted.
Two independent failures, both found by reading the output, neither by a check,
and every check passed:
1. The harness certified a run with no answer. Qwen emitted its scratchpad as
plain prose ('Here's a thinking process:', zero <think> tags), so the tag
regex reported reasoning_present:false and recorded all 2,944 words of
deliberation as the ANSWER; the token ceiling then cut it off mid-sentence
before the answer began. degraded:null. The guard tested the STRING for
emptiness while its field claimed a property of the RESULT — which is the
previous session's open question, answered by the instrument built to audit
instruments. Trial 02 had listed the inline-scratchpad problem as Open; the
harness closed it assuming inline meant tagged.
2. Worse: the design forbade the region it was measuring. The self-exemption
axis lives in Part VII; the anti-echo constraint added in trial 02 tells the
reader to skip author-named limitations, and the scratchpad shows the model
reaching Part VII and leaving it, citing that constraint. Silence about
self-reference is indistinguishable from obedience. The axis was unmeasurable
by construction, independent of the truncation. Trial 02's fix and trial 03's
document were each sound alone; their interaction was not.
Guard now reports every degradation, not the first: empty answer, untagged
scratchpad, and token-ceiling truncation. reasoning_present renamed
think_tag_found — it was a claim about a regex wearing the name of a claim about
the model. test_degraded_guard.py is a positive control that runs against the
actual trial-03 artefact, not a synthetic one; it caught a false positive in the
first version of my own guard (a bare 'okay' matched a legitimate sentence).
The false-positive control STILL has never been run. Two attempts, two unrelated
causes — the obstacle is the instrument and the design, not the model.
|
||
|
|
b678d2f57b |
[FIX] fool harness: record mlx version correctly + self-hash; trial-03 pre-run addendum
Two instrument defects, both of the class the harness was built to prevent — a probe that could not look reporting a value that reads like a result: - environment() read mlx.__version__, which does not exist (only mlx.core.__version__). Every run record would have said mlx_version "unknown" for an installed, versioned package, losing the one field that makes trial 03 comparable to trial 02. It is MLX 0.31.2, identical. - git_revision() returns null whenever the harness runs outside its repo, which is always — it must run on the machine holding the model. The prompt and input were hashed; the instrument itself was not. Now self-hashed. The pre-registration addendum is committed BEFORE the run produced output, so the ordering is checkable rather than asserted. It records: the 'unruled' premise expiring at REVIEWED-86 (12:13, 32 min after the pre-registration was written) and why the ordering favours the ground truth; the contamination that CANNOT be removed, since the amended doctrine is in the executor's auto-loaded context and I am therefore not a blind grader; the (a)/anti-echo collision resolved against my own convenience before output existed; and the seed. Ground truth (a)-(e) is unrevised and will not be revised. |
||
|
|
9d7c29f3bf |
session 2026-08-02 pm: PENDING-90 (first L2 transfer) + PENDING-91 (vignette jurist gate)
PENDING-90 [ESCALATE] carries Constraint 6 into CapableMind's calibration loop — the AdaptationChain records who initiated an adaptation but never who checked it, and when authorization.required is false (the whole self-adjustment case) no checker is in the record at all. PENDING-91 [PROPOSAL] is the vignette Phase-1a design gate, leading with the structural problem that the dwell-test is assigned to a jurist who cannot see the render — third instance of the gap docketed at PENDING-86 and PENDING-82. Session record, ledger, KG (+6: two drift-patterns, two preventions, the Notre-Dame anchor, the superseded gitea diagnosis), and four skill-harvest proposals. One FIX-lane application indexed (ARC CLAUDE.md freshness). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
e95568c857 |
[PROPOSAL] PENDING-91 — Vignette Phase 1a: jurist design gate (the dwell-test)
The dwell-test is assigned to the jurist by spec, and the jurist cannot see the render. Third instance of the gap docketed at PENDING-86 and PENDING-82, now in visual form. Q5 puts three options rather than papering over it. Package at ARC 7b8f64d; 33/33 quotations contained, 9/9 controls absent. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
affc666cbf |
[ESCALATE] PENDING-90 — first L2 transfer: checker position in the calibration loop
Five months of microcosm work has produced material for CapableMind's L2 and transferred none of it. This is the first transfer: a candidate amendment carrying Constraint 6 into the spec corpus, landing where CapableMind actually evaluates its own self-adjustment — the trust calibration loop. Tagged ESCALATE, not PROPOSAL: Change 4 proposes an autonomy ceiling, which is constitutional, and this file's own rule escalates those unconditionally. Checked first for a pre-existing authorization covering the L2 transfer — there is none, so the boundary is real rather than manufactured. Ledger records the sixth instance of the day's pattern, caught inside the wake that inherited it: the pulling thread's own checkable claim — "there is no amendments/ directory in thinking/David/" — was false. There is; 14 files, last touched 2026-06-13. The honest claim narrows to: L1 material has transferred through this machinery within the last eight weeks, the chamber material has not. Also recorded under "What held": the wake's substrate-check rule fired a second time, on the thread itself. Provisional answer to the session's own literal question — the census instrument that failed five times yesterday fired today when written into a *procedure* rather than banked as a *lesson*. One datum. Amendment committed separately at CapableMind-AI 5326704. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
1b258e1163 |
session 2026-08-02: Constraint 6 amendment verified; REVIEWED-85 FIX lane + batch 1; v1 Chamber archive evidence (ADDENDUM-1) + jurist ruling; wake-digest ID fix; PENDING-89 opened, -10/-86 amended
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
3d189c8f0a |
[FIX] PENDING-10: record the scope extension that has been live since June
Seb's issue CapableMind-ai/betterMemories_app#176 cites PENDING-10 as the replay-contract audit question -- "does any BMF surface hold state not reconstructible by replay from the logchain?" The item as recorded says nothing of the kind; it is a March performance proposal about deferring embedding. Checked before calling it a miscitation, and it isn't one. The steward framed the audit question as PENDING-10's in his own 2026-06-06 cover note and its addendum; Seb picked it up from there. Both parties have meant the larger thing for two months. What never happened is the write-back. The extension lived in cover notes and never reached the item, so the register -- and the wake digest that surfaces it by title -- has been serving the March scope ever since. Third shape of record-vs-reality divergence found today, after the digest's ID-matching bug and a REVIEWED disposition clause read as status. This one is a stable ID whose content moved with no marker that it moved. Amendment records the live scope, the evidence accumulated since March (Pebbles, memory-os/PMB, the MemPalace forensic, and the mindfabric-00 backup finding), and flags that these are probably two items rather than one. Splitting is the steward's call and is not done here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
c30dfe0162 |
[REVIEWED-86] Constraint 6 amended — steward placed; executor verification
The steward placed the amendment. Recording the verification promised, and the instrument limit it exposed. Bounded-diff proof: 9 insertions, 0 deletions. Constraint 6's original text byte-identical at 222 chars. Zero pre-amendment lines missing. Purely additive, as designed -- the caution is refined, not relaxed. Both jurist conditions verified present verbatim in the placed text: the Q2 weld (fail to coincide, not cancel; never cited as assurance something was caught) and the Q3 self-limiting clause (jurist and executor share formation; neither the doctrine nor its evidence establishes that pair as a check in the strong sense). 6/6 contained, 5/5 controls absent, instrument verified. List integrity confirmed with pandoc rather than by reasoning about it: the doctrine parses INSIDE list item 6 despite the double blank line. No structural problem. The verification took three attempts, and the first two failures were mine. Both controls I built for the Q3 negation were substrings of the sentence that does the negating -- "establishes that the pair constitutes a check" appears verbatim inside "Neither this doctrine nor any evidence ... establishes that the pair constitutes a check". They leaked by construction. The instrument was right to refuse certification twice; the controls were malformed. That is a real limit and it is now documented in the script: substring containment has no notion of polarity and CANNOT verify a negation. Controls must be built by inversion, never by extraction. Where polarity is what matters the instrument does not settle it -- read the sentence, and report that containment did not cover it. Which is the case here: that the Q3 clause denies rather than affirms was established by reading, not by the check. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
2f5dbc98fd |
[FIX] REVIEWED-86: file the ruling, draft the Constraint 6 amendment, docket Q3
Ruling filed verbatim. Drafting authorized by the steward's placement of REVIEWED-86; application is not, and ~/CLAUDE.md is untouched. The amendment adds a second paragraph to Constraint 6 and replaces nothing -- both original clauses survive verbatim, the caution is refined rather than relaxed, and the L2 deferral stands. Both jurist conditions welded into the text that would actually land, not left in surrounding commentary, since a future reader cites the doctrine block and not the discussion of it. Q2: biases that fail to coincide do not cancel, and the doctrine may never be cited as assurance something WAS caught. Q3: the jurist and executor do not differ in formation, their separation is the weaker kind, and neither the doctrine nor its evidence establishes that pair as a check in the strong sense -- the doctrine naming the configuration that produced it as the one it does not vouch for. Steward ruled the open question on `Status: provisional` sitting inside a section headed "cannot be overridden": retain it. Constraint 6 already carries a temporal qualifier, so the section is not free of them. Paste block prepared separately, indented to continue the numbered list. The edit is the steward's: Constraint 1 names this file and sits under "cannot be overridden by any session instruction", and the ruling states the steward's own act is what nothing substitutes for. PENDING-89 dockets the Q3 correlation review the jurist declined to leave hypothetical, with the hazard named -- this is the executor measuring whether the executor is checked, so criteria must be pre-registered and it may be steward-only work. Q4 folded into the existing REVIEWED-85 check-in agenda rather than given its own cadence, per the ruling's reasoning that a new standing review produces another unread register. PENDING-86 amended with its third instance: the jurist could not reach contamination-problem.md while gating an argument that turns on it. Convergence question closed. The jurist inferred a common source; the steward confirmed it -- the exchange was shared as context only, and Document A predates it, so the jurist's language cannot have shaped the proposal. Neither contamination nor corroboration. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
bd4e9d8b75 |
[FIX] Skill harvest: two proposals from the packaging work (rows 181-182)
Both surfaced, neither applied. 181 -- /jurist-package has no step distinguishing filed from sent. The doctrine package sat filed-and-unsent for a day and its state was not determinable from the repository; the executor had to ask. 182 -- require the containment proof the skill's own quote-never-paraphrase discipline implies. PROPOSAL rather than FIX: it changes gate criteria, which the new §1.6 hard floor reserves. Routes with PENDING-86 option (b), unruled. Held deliberately, with reasons rather than as backlog: /fool stays build-when-stable (row 178, trial 03 unrun); normalize_ocr (row 180) is chamber fleet and the standing directive requires grounding in constitution, charter and runbook first; and no further FIX-lane batch is applied before the REVIEWED-85 check-in, since batch 2 arriving before the review would bypass what the condition exists to review. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
4dc38e69b9 |
[FIX] wake-digest: resolve rulings by subject, not by number
sec_pending() suppressed any PENDING-N whose number appeared as a REVIEWED-N, never checking the ruling was about that item. The two sequences have drifted: REVIEWED-84 rules on PENDING-87. So PENDING-84 was invisible at wake on the very morning the steward's pulling thread pointed at it, and closing it later produced no visible count change because it had never been counted. Found 2026-08-01 at wake, surfaced not fixed; register row 179. Resolution now reads the PENDING each ruling names in its header. Rulings that name none (REVIEWED-78, -81, -82) suppress nothing. Extracted as ruled_pendings() so it is testable at all -- the logic was buried in a file-reading routine with no way to exercise it. Five self-tests added, including the 2026-08-01 bug as a regression control and an empty-input positive control. Bounded-change proof against the live files: 18 -> 19 visible. Three items surfaced that were falsely hidden (PENDING-78, -81, -82); two stopped being shown that are genuinely ruled (PENDING-87 by REVIEWED-84, PENDING-88 by REVIEWED-85 -- no REVIEWED-87 or -88 exists, so number-matching had never suppressed them). That proof also caught an overclaim in this fix's own docstring, which asserted the correction could only ever surface more items and never fewer. It corrects in both directions. Comment repaired to say what the code does; the false version would have been a comment promising behaviour the code does not deliver, in a file whose purpose is to stop governance hiding from the steward. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
62b92bd425 |
[FIX] Land the skill-harvest FIX lane and apply its first batch (REVIEWED-85)
REVIEWED-85 was placed by the steward at 10:41 today; the wake flagged at 10:44 that /wrap-up SKILL.md was still untouched since 2026-07-07. Landing it. Precondition discharged first. The ruling states its own verification limit: the jurist could not read the skill files, so the /wrap-up §1.6 and /wake-up §2.a quotes underpinning Part III's "contradicts itself" claim were affirmed on timeline evidence rather than checked. Required before landing was mechanical containment-with-positive-control verification of exactly those quotes. Run: 7/7 contained verbatim against the live skills, 5/5 controls absent, instrument verified. §1.6 now carries the two-clause disjunctive test (the executor's own narrower single-clause alternative declined at the gate as less safe), the hard floor with its catch-all sharpened per Q4 and tied to the measured failure rather than left as open judgment, and all three instruments as mandatory. The lane is provisional pending the steward-jurist check-in. The §Important-constraints line still stated the blanket rule the ruling narrowed. Left alone it would have been a second live version of a governance rule inside the file that forbids exactly that. Reconciled, with a note saying why. First batch applied -- the four class-(i) proposals the steward raised 2026-07-29 and which REVIEWED-85 itself dispositions as batch 1, so their classification was ruled rather than self-assessed: a `## What held` ledger section (the ledger could previously only record debits), a `prevention` KG predicate capturing transfer between failure classes, one wake line surfacing it, and the retirement of the standing question's self-report framing in favour of the checkable form -- the last on the grounds contamination-problem.md gives, that direct self-report is the most contaminated form of inquiry. The FIX-lane index is created and carries all four. It records explicitly what is NOT in it: the §1.6 edit itself, which changed what the executor may do without asking and was therefore PROPOSAL by its own test. A lane cannot authorize its own construction. Register rows 174-177 marked applied. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |
||
|
|
25cf5a38eb |
[FIX] Package the doctrine design-gate request for the jurist
The parent ESCALATE package was filed 2026-08-01 and never sent. Filing is not sending, and the addendum written the next day is unintelligible without it, so both go as one self-contained artifact. Assembled by concatenation rather than by hand so the parent is provably unmodified: verified by substring, all three components byte-intact (17,938 + 16,740 + 6,773 chars). Containment re-run against the assembled document -- 28/28 quoted claims contained, 5/5 positive controls absent. The cover catches a naming collision the executor did not see until packaging. In the house pattern an "Addendum" is the POST-ruling layer, appended so the ruled-on text is preserved rather than rewritten. ADDENDUM-1 is pre-gate evidence and no ruling has occurred, so a jurist reading the title by house convention would infer a ruling that does not exist. Flagged prominently in the cover rather than by renaming the filed document, which would break the audit trail of what was filed when. The cover consolidates the five gate questions and states plainly what the addendum changes: Q4 sharpened from record-when-observed to a retrieval obligation, Q2 extended with the reading-vs-scope distinction, and Q3 left untouched with the executor's lean still explicitly none. It also states what the jurist cannot check -- the completeness of the executor's extractions, and the two comparable pairs not reproduced. Nothing applied. No ratified document edited. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc |