Commit Graph
65 Commits
Author SHA1 Message Date
David F GliddenandClaude Opus 5 acdbc0932c [FIX] §13.1: the implementation spec, written last so it describes what exists
§12's build order puts the spec after the wiring, and this is why: four claims in the
v2 draft and PENDING-152 did not survive contact with the substrate. A spec written
first would have carried all four and been read as governing.

Each deviation is tabled with what the substrate says and its disposition, including
the two the check found rather than the eye: the marks' cycle length against the mumble
interval, and last-tick persisting across sessions so a mumble was already due at the
moment of waking. Both invisible until explicitly checked for.

Records the wrap seam as OWED with its reason (SessionEnd delivers nothing on success),
and mute/off as not built. §9's off-switch is named rather than assumed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 16:45:11 +02:00
David F GliddenandClaude Opus 5 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
2026-08-25 16:15:55 +02:00
David F GliddenandClaude Opus 5 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
2026-08-25 15:41:13 +02:00
David F GliddenandClaude Opus 5 d02ca46c80 REVIEWED-127 draft moved out of the scratchpad, where it could be cleaned
An authorized ruling awaiting steward placement should not live in /private/tmp. Same
tree as the trial-09 jurist ruling, which is the established home for a ruling text the
executor may file but not place.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 15:32:18 +02:00
David F GliddenandClaude Opus 5 063eccfd80 [HARDENING] STATE-CLAIM + the resolution state, built together (REVIEWED-127)
Both halves of the schema, shipped in one change because the ruling said half a schema
invites a third patch and a third patch is how a vocabulary accretes instead of being
designed.

157 — resolution state. `resolved:` on any block; a resolved block is no longer due but
is NOT dropped: it prints as a closed ledger, because a discharge that vanishes from the
report is its own decay. The pointer must RESOLVE — a real path or a real git object —
so an undocumented discharge is impossible to express rather than merely discouraged. A
dangling pointer reports in the register-integrity lane, the same lane as an amendment
that replaced the record it amends; both are a record closing over its own history.

The 25th's hand-rename is MIGRATED back to DEFERRED-DECISION with resolved: set. That
block was the per-instance workaround 157 was filed against, and it is now the
migration's own test case.

158 — STATE-CLAIM. Reuses trigger_fired() verbatim and inverts only what firing MEANS:
for a deferral, fired = the decision is due; for a state-claim, fired = THE CLAIM IS
FALSE. Two new trigger kinds earned directly from today's instances: text-present (the
trial-09 hold, falsified by REVIEWED-124's existence) and file-changed-since ("the filed
rule not edited", false one hour after writing).

16 new controls, each with its discriminating half — fires on met, silent on unmet,
manual listed-never-fired, resolved excluded from due-ness, the SAME block unresolved
still due, a real pointer resolves, "yes, done" does not.

Proven on the LIVE blocks, not only fixtures: pointing the state-claim at an older
commit made it report FALSIFIED by name; replacing the resolution with "yes done" made
register-integrity report it; both restored and both returned to quiet.

⚠ One control failed before shipping and the failure was the useful part. The negative
control for file-changed-since pointed at FOOL-SEED-RULE.md, which this same session then
edited — so "unchanged since HEAD" broke, correctly. A control whose subject is "did this
file change" must not point at a file the session is changing. Re-pointed at a frozen
2026-08-02 trial artifact, with the reason recorded at the fixture. Caught because the
controls run on every invocation rather than in a separate suite.

First two real state-claims filed, deliberately one of each kind: ~/CLAUDE.md untouched
under PENDING-150, mechanically watched and [ESCALATE]-grade the moment it goes false;
and §9's channel unbuilt, marked `manual` because it has no filename yet and inventing a
proxy falsifier is the error the schema's own comment warns against.

⚠ The zero-state prints a WARNING, not a tick: "0 marked, NOT none-stale" with the ~57
unmarked candidates named as a grep. An instrument that reads nothing reports exactly
like one that finds nothing, and that is the failure this item exists to end.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 15:29:59 +02:00
David F GliddenandClaude Opus 5 e0ff705c7a [FIX] Record trial 09's void in the two documents that said the run was held
PENDING-148 was RULED — REVIEWED-124, 2026-08-20, Q1 "VOID, not degrade" — the same day
it was filed, and the void IS recorded in trial-09-DESIGN's STATUS banner. But the
concern behind "nobody has recorded it as void" was pointing at something real: the void
was written at ONE end. Two documents still carried the pre-void state.

  trial-09-PRERUN-ADDENDUM.md:9   "the run is held"  — the operational doc; a reader
                                   arriving here learned the run was WAITING, not dead
  ...JURIST-PACKAGE-2026-08-20:7  "status: DRAFT for the design gate. The run is HELD"
  ...JURIST-PACKAGE-2026-08-20:308 "The run is held."

Stale for five days. Original status lines preserved with the supersession marked on
top, not overwritten — same discipline as the v2 doctrine edit, and for the same reason.

The jurist's own ruling file is deliberately UNTOUCHED: its provenance block says filed
verbatim, not edited, not summarised, not reordered. It is also the document that did
the voiding and needs no banner. input-dependence-01's "NOT AUTHORIZED, NOT RUN" was
checked and is still accurate — REVIEWED-125 holds it at the gate.

This is the FOURTH and FIFTH instance today of a status claim that went false and was
caught by a human reopening the file rather than by any mechanism — after the filed
rule's §6, the filed rule's §7, and the soul's §6. Two of these had been stale for five
days, which moves PENDING-144's class from "a curiosity of today" to endemic: the
pattern is not that lists go stale, it is that NOTHING IN THIS SYSTEM READS THEM.

Censused rather than spot-fixed: all status-ish claims across the fool tree were grepped
before any edit, which is how the third occurrence at line 308 was found at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 15:15:41 +02:00
David F GliddenandClaude Opus 5 f48d8479b6 Jurist ruling on the soul: one non-deviation, one deviation ruled harmless
Ruled from §7's text against the procedure as described, WITHOUT reading the soul —
the jurist naming that reading it would be "reaching for it through a side door". The
executor had read it and recused itself; the jurist had not, and could rule. The
recusal was not ceremony: it is what left a party able to answer.

(i) The missing glosses: NOT an error and NOT a gap, and this INVERTS my framing. I
filed the omission as a finding — the correct input withheld. The ruling: the bones
are five names and five numbers; the glosses are §5's definitions, not bones. Supplying
them would have handed over an interpretation of what SUCCESSION 96 means and produced
a character organized around legibility-to-a-stranger — a stat read as a personality
trait, which §3 forbids reading backwards. The risk ran the OTHER way: including them
would have been the deviation. §4 REGENERATION is therefore not reached at all.

My original heading is left visible with the correction marked on top, not rewritten.
A record that silently corrects itself teaches the next reader nothing about how the
error was made.

(ii) The name as an input: a real deviation from "from the bones", ruled HARMLESS —
the name was itself bones-derived, one generation kept, so it added no information not
already downstream. Recorded as DEVIATION RULED HARMLESS and explicitly not as
compliance: compliance would erase both the fact that practice departed from text and
the fact that someone with authority looked at it.

(iii) The jurist attached a pattern — second time this week a filed instrument's
wording was narrower than the practice it governed. Recorded as their observation; the
first instance is not named and I do not guess at it.

(iv) Both go in the attestation, NOT as a [FIX] to §7. Amending a rule after it has
fired is what §5b exists to prevent, and §7 has now fired. §7 stands exactly as filed.

Also: §6's "no regeneration ruling" went false — THIRD such bullet in this programme,
this time inside the very section that names the pattern and was written hours earlier.
A negative-status list does not become durable by knowing it is fragile. n=3 in one day.

Soul block re-verified byte-intact after the edits.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 15:12:08 +02:00
David F GliddenandClaude Opus 5 cb63033d7c Tarbuckle has a voice: the soul recorded verbatim, with the one finding it made about itself
Generated once and kept, per §7. Claude Opus 5 Extra, fresh instance, incognito, run by
the steward. Prompt, conditions and output all recorded verbatim; the executor wrote no
part of the prompt and did not observe the run, same exclusion as the naming and for the
same reason. Attestation, not verification, and the record says so.

Byte-fidelity of the soul block checked rather than assumed: no em-dash substitution, no
curly quotes, 5 double-hyphens, 7 sample lines, separator and closing paragraph intact. A
text that may never be hand-edited should not be silently reformatted on the way in.

THE FINDING, and it is checkable against the recorded prompt: the prompt supplied axis
names and numbers but NOT the questions the steward ratified on 08-22, which are what
those names mean here. The generating instance noticed and said so — it stipulated
SUCCESSION as "inheritance rather than sequence", i.e. it chose the meaning of the PEAK
axis, the one carrying 96, and correctly noted the other reading yields a different fool.

Recorded alongside it, because it is a real datum either way: three of five axes converged
with their filed definitions WITHOUT being told them — STAKE, ABSENCE and AIM land close.
SCALE is underdetermined. Only the peak was stipulated.

The offer to "build that one instead" is recorded as DECLINED. §7 forbids regenerating for
taste, and the alternative being described as "pettier, funnier" is exactly why that clause
exists. The only door not shut is §4 REGENERATION, on a demonstrable implementation error
— and whether a prompt missing the ratified glosses is one is a JURIST question. The
executor states its interest and stops: it has read this soul, and a party that has read
the output is the wrong party to rule on whether the output may be redrawn.

Until ruled, this file is the soul and §7 governs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 15:07:26 +02:00
David F GliddenandClaude Opus 5 47ae108127 The fool is named Tarbuckle; the name recorded beside the bones with its provenance
Named by the steward from the bones, ratified by the jurist. Recorded in the same
file as the bones because the naming is the ONE step with no cryptographic guarantee
behind it: the beacon can be re-fetched by anyone and the seed recomputed from two
public values, but a name cannot be checked that way. The procedure is the only
evidence it was not steered, so the procedure is what gets written down.

Recorded as ATTESTATION, not as established fact. Fresh instance, bones only, one
generation kept, Thistleweld unread — these are the steward's words ratified by the
jurist. The executor did not observe the generation and cannot verify any row of
that table, and the record says so rather than laundering a report into a finding.

What the executor can attest first-hand is the part where it was the contamination
risk: it supplied no candidates, no criteria, no shortlist, no opinion, and knew the
peak was SUCCESSION when it could have offered them. That route was never opened.

Keeps the jurist's reasoning verbatim, because it ties the name to a structural
requirement rather than to taste: "Tarbuckle says" will never sit comfortably in a
PENDING entry, and §9's unfileability is eroded by prose habit rather than by
decision. A name that resists the citing sentence defends §9 where §9 actually breaks.

Also fixes §7's "the filed rule not edited", false since 5737d4d. That is the SECOND
what-has-NOT-happened bullet in this programme to go stale within hours, after the
filed rule's own §6. Neither was caught by a mechanism; both were caught by someone
reopening the file. A list of what has not happened is a claim with a short half-life.
Noted where it happened rather than filed as new — it is PENDING-144's class and
PENDING-144 is open.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 14:53:58 +02:00
David F GliddenandClaude Opus 5 42c461d71d [HARDENING] File PENDING-157: the deferral schema has no resolution state
The steward's scope point on yesterday's discharge, taken. Renaming the key closed
one trigger; the next will need the same hand-rename by whoever is in session. If
census 01 found decay is how gates fail here, a schema that cannot express "answered"
is what produces the decay, and renaming keys one at a time is living with it.

Filed while there is exactly ONE instance and three tracked deferrals remain. The
window matters: once a second is renamed by habit the convention is established and
the schema question stops being asked. Filed, not built — that was the direction.

Carries a sharper half the rename surfaced: resolution must be unsatisfiable without
a pointer, so a discharge that records THAT a gate closed but not WHAT closed it
becomes impossible to express rather than merely discouraged. Plus two conditions on
the recommendation (resolved blocks stay counted as a closed ledger; a dangling
pointer is a register-integrity defect) and three required controls.

Also writes the missing reverse pointer into FOOL-BONES §6. The discharge block
already pointed at the derivation record and 06b3d8b's message named it; the record
did not point back. Written at both ends now — one direction only is how a successor
learns a gate was closed but never why.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 14:50:12 +02:00
David F GliddenandClaude Opus 5 5737d4dff8 [FIX] 'abandonment' -> 'retirement' in the fool's doctrine; §6 was false as of today
The jurist owned this mismatch and scheduled it after the beacon so no edit would
touch the filed rule before it fired. It fired at 12:00Z; this is that harmonization.
v2 §4 step 3 said "Abandonment criterion" while §10 defined RETIREMENT.

Censused before editing rather than sed'd. All 24 abandon* occurrences in the fool
tree were counted and read in context: 9 were doctrine and changed; 13 in the trial-09
family were LEFT — that is the word §6 of the trial design owns, in its own sense about
the jester form, and a blanket replace would have silently collided the two meanings it
was supposed to separate. 1 in input-dependence-01 is ordinary English about the void of
a numbering. 1 in FOOL-BONES is the dated record of what was owed.

Prior wording preserved in place at every changed site. REVIEWED-125 ruled on the v2
draft's text; an untraceable edit drifts a ruling's subject away from its artifact, which
is the PENDING-82/86 hazard this item's own record already notes recurring inside a
ruling. The criterion is unchanged — only the word naming it.

Separately, found while in the file: §6 "What has NOT happened" asserted the pulse had
not been fetched and no bones derived. Both went false at 12:00Z today. Marked superseded
in part, bullets struck rather than deleted since they are the pre-registration record,
and pointed at FOOL-BONES for current state. A governance doc asserting stale current
state is what Constraint 4 forbids.

New §7 logs every post-beacon edit to the filed rule, so "filed and pushed before the
beacon" stays auditable instead of eroding one silent correction at a time. Its claim
that §1/§2/§2a/§3/§5/§5a are untouched was verified by reading the diff hunks against
the pre-edit section map, not asserted.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 14:48:58 +02:00
David F GliddenandClaude Opus 5 5694b92539 [FIX] The bones are derived: beacon 2026-08-25T12:00:00Z, run once (PENDING-149)
Executes the standing run-once authorization filed in PENDING.md, against
FOOL-SEED-RULE.md at d6377af572 — filed and
pushed before the beacon timestamp, and clean in the working tree at the
moment of execution.

Pulse chain 2 / index 1917365, timeStamp 2026-08-25T12:00:00.000Z, fetched
by curl at ~12:38Z. outputValue recorded before anything ran, and served
UPPERCASE as the historical dry run predicted; passed to derive_fool.py
exactly as served, so the single normalization point at line 79 did the
lowering. No wrapper, shell step or hand edit touched it.

  seed  6ea9383bb0b1b3023b1b5507c4ea820b8e07714dd76ff2ca32a1abfc885af05d
  peak  SUCCESSION 96
  dump  ABSENCE 8
  scat  AIM 75 / SCALE 60 / STAKE 29

Ranges were filed 2026-08-22, before the value was knowable; the axis
permutation came entirely from the entropy component. The draw is entropy,
not judgement, and the record says so where it can be read backwards.

Verified at execution rather than relayed: selftest 16/16 with both positive
controls and the negative control; provenance SHA re-derived from git; seed
recomputed independently of derive(); passed value asserted byte-equal to the
served JSON field; epoch-ms verified against the named instant.

Ran ONCE. No retry, no second pulse, no regeneration. Owed and deliberately
not done here, so no edit touches the rule: the abandonment -> retirement
harmonization, and §5's stale "12 checks" (the selftest now runs 16).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 14:40:39 +02:00
David F GliddenandClaude Opus 5 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
2026-08-24 18:36:34 +02:00
David F GliddenandClaude Opus 5 edf71fb173 session 2026-08-24: the heap got a dynamo — thread-query.py + daybook-cue.py, 11 user-memories harvested to the vault
- thread-query.py: the turning. Queries both corpora with the pulling thread, excluding
  the recency slice (/wake-up reaches 0.71% of an 859,803-word corpus) and favouring age.
  Wired into /wake-up §2.b.3, replacing a described-not-invoked grep step. Trial
  pre-registered, graded 2026-10-05 from --log. Caught PASS-BUT-FALSELY on its first live
  run at 14/14 green; rescored on windowed co-occurrence, length-bias control added.
- daybook-cue.py: PostToolUse cue for the daily note. Diagnosed from the record — the
  hook only ever CREATED and nothing ever prompted filling. 16/16, fail-open, never blocks.
- All 11 user-* memories harvested into the vault (12 notes, 10 into 09. Atlas of Roots,
  empty since 2025-09-29); each memory file back-pointed, vault note canonical for the idea.
- N-now corrected in MEMORY.md: 49/84, down 11 — the counter is a rolling window.

Steward-authorized. Trials: thread-query + Smart Connections, both graded 2026-10-05.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-24 11:25:39 +02:00
David F GliddenandClaude Opus 5 d6377af572 [FIX] §2a records one ruling and one steward decision, not two rulings
The heading read "Two corrections to the v2 §6b block — RULED, no veto" while
the ruling beneath it addressed only the retrieval URL. Its settling test —
"could this correction have moved the outcome?" — returns no for the URL and
YES for the provenance commit, since the provenance SHA is half the seed
string. The heading therefore claimed a scope the ruling could not reach.

Jurist confirmed 2026-08-23: "I ruled on one thing. The URL." The provenance
commit was never a correction under veto — the steward selected a still-open
value on the jurist's recommendation, before filing. It is now recorded as a
steward decision of 2026-08-22, with its reasoning, because a value that moves
the outcome must be attributable to the party entitled to choose it.

Verified independently against git, not relayed:
  4d2ae87 = 2026-07-28 11:32:39 +0200; trial 01 = 2026-08-01 (four days later)
  last commit to CLAUDE.md before trial 01 (next is c30dfe0, 2026-08-02)
  "Differently biased checkers": 0 at 4d2ae87, 1 at 3b0730d5
  blob SHA re-derived = 2d6e250a...120d, matches the filed value

EDIT IS INERT WITH RESPECT TO THE DRAW, proven rather than asserted. The filed
discipline is that no edit touches this rule before it fires; derive_fool.py
does not read this document — it hardcodes its constants and recomputes the
provenance SHA from git — so prose cannot steer the draw. Same synthetic
vector before and after gives the identical seed
3d8cc243f9b6ffc5fc7d254306ca4ca135a71d76d483df924736a18345fb8b7a;
selftest passes; diff removes no constant line.

  rule sha256 before: e1fa6fb3e4f928e468dc102f011d554c20eb14d9b49c17ce1f6f839106179bff
  rule sha256 after:  fb11818dd2e3c2bdcf21e2740fc3110a7aa9a9ead57098a93f27b9051d438551

The synthetic vector above is not a pulse and its output is not bones.
Refs PENDING-150 AMENDMENT 2/3, REVIEWED-125 AMENDMENT 1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-23 16:24:29 +02:00
David F GliddenandClaude Opus 5 1e2ba50ca9 [PROPOSAL] What prompted Thistleweld — three kinds, and the risk was the best material
Steward asked whether the corpus shows what prompted the utterances. It does,
and in three kinds: live code and running processes (most catches); the
executor's stated plan; and the governance arrangement itself.

The second was the most consequential. "Cart horse backwards" was reacting to a
proposed organizing structure, not to code — it redirected the OP-02 synthesis,
created an impasse, and required a jurist briefing note to resolve. That is the
same OP-02 which on 2026-08-20 corrected both AI parties on Fault Line 5.

So the residual risk the jurist named — session-as-material sitting one step
from commentary on reasoning — was already the precedent's best material. Kinds
2 and 3 are exactly that, and they are the only contributions that changed a
governance document rather than a line of code.

The reconciliation holds at a tighter joint: "cart horse backwards" has no
truth value; what was adjudicated was the executor's question, ruled by the
jurist, owned by the trio. But "no forum, no ruling" is too strong as stated —
the forum was convened; the fool was not a party to it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-22 23:11:14 +02:00
David F GliddenandClaude Opus 5 783cf799fb [PROPOSAL] Thistleweld's record survives — and it relocates the guard (PENDING-152 A7)
The steward asked whether any trace of the buddy remained. The transcripts are
pruned; the memory layer is not. Recovered: a dedicated feedback memory plus
Thistleweld sections in six April session records — seven verbatim utterances,
thirteen catches (three became GH issues), and three explicitly recorded
silences.

The precedent first contradicts the adjudication-path criterion: every catch was
a checkable claim about code, paths existed, and they were walked. Then it
resolves better than either position — "scoring without signal" has no truth
value. It is a gesture at a shape, not a claim. What was adjudicable was the
executor's finding downstream, filed as the trio's, which is exactly §9.

The consequence: both criteria located the guard in what the fool looks at. The
record locates it in how the fool speaks. Three-to-nine words with no verb of
judgement is what makes an utterance un-adjudicable. So the one-line rule is not
style — it is the guard, and it must be enforced in code rather than convention.

Counter-recorded: these quotations sit inside executor-written records, selected
by the executor, and an utterance that landed is likelier to have been written
down. Same self-authored-corpus hazard as the retired 08-20 question, applying
to the flattering half.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-22 23:09:38 +02:00
David F GliddenandClaude Opus 5 1e40b01d70 [FIX] Normalization tested at its single point; the dry run had bypassed it (PENDING-149)
The jurist's pre-25th condition: confirm lowercasing happens at exactly one
point and is unit-tested against a known uppercase input.

Single point confirmed at derive_fool.py:79 — the only .lower()/.upper()/
casefold in the file. Four checks added, including a negative control proving
the test can fail. Selftest 16/16.

Checking it found the defect the condition was aimed at, in my own work: the
2026-08-22 dry run lowercased the value OUTSIDE the code and passed it in
already normalized, so the single normalization point was never exercised on
uppercase input in the only end-to-end run. The test's subject was the
pipeline; it excluded the step under scrutiny.

Re-run with the raw uppercase value through the real path reproduces the same
seed. Binding procedure added: on the 25th the outputValue is passed exactly
as served.

Jurist ruling on the URL correction recorded verbatim — no veto, with the
reasoning, since it will be read later.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-22 21:30:16 +02:00
David F GliddenandClaude Opus 5 acfbb9fc0e [PROPOSAL] Fool seed rule filed before the beacon; two unresolvable values caught (PENDING-149)
§4 steps 1-4 discharged and pushed ahead of the 2026-08-25T12:00:00Z beacon:
ratified axes recorded in writing, seed derivation rule filed, retirement and
regeneration criteria filed, derivation implemented and self-tested.

Two values in the jurist's §6b block did not resolve, and both are corrected in
the open rather than absorbed:

  - the provenance commit's stated rationale was false. 3b0730d5 (2026-08-06)
    postdates the fool's conception by five days, its subject names the
    PENDING-89 docket, and Constraint 6 is already in it. Steward directed
    4d2ae87 (2026-07-28), where Constraint 6 occurs zero times.

  - the retrieval URL returns HTTP 302 and an empty body, redirecting to an
    HTML page. Filed verbatim, the 25th would have produced no pulse and the
    UNAVAILABILITY clause would have run a 24-hour retry against an address
    that can never return one. Found only because §6b directs a historical
    dry run.

Also measured: outputValue is served UPPERCASE, so the rule's "lowercased
before use" is load-bearing; and curl reaches the beacon where python urllib
times out.

Nothing derived. Target pulse not fetched. CLAUDE.md untouched (PENDING-150).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-22 20:52:12 +02:00
David F GliddenandClaude Opus 5 03813cfb6d [PROPOSAL] Re-aim the Fool at the seating question; input-dependence arm pre-registered
The steward restated the original intent: the Fool was trialled to see
what a different model, local on the M4, adds or subtracts in the fool
role. That is a deployment question. The trial log's stated subject is the
differently-biased-checkers doctrine and its falsifier. They are not the
same question and almost the whole programme serves the second.

The jurist's correction is adopted and it changes what the instrument
measures. The add and the subtract may be one mechanism rather than two
columns: a reader that pattern-matches surface structure without close
reading produces both the distinctive finding-class — distinctive because
the other two read closely and are looking elsewhere — and the
insensitivity to what is on the page. So the executor's closing option,
seat it for the class and treat the noise as cost, is incoherent as posed
and is withdrawn. You cannot keep the class and fix the noise if the noise
is what produces the class.

The instrument is blind A/B arm-matching over five document pairs. It
needs no sound control, which is what voided trial 04 and what the whole
Control Kernel exists to supply: a differential criterion needs only that
documents differ in known ways. Matching within a pair rather than across
documents, because the Fool quotes text verbatim and a cross-document
matcher would succeed on topic alone with zero real reading. Executor-
authored defect injection is conservative here, unlike trial 04, since an
error in the base appears in both arms and can only reduce measured
tracking. The matcher is the jurist or the steward, never the executor.

Three dispositions fixed before the run at the steward's direction, the
executor's binary declined as having no middle when the middle is the
likeliest result. The harvest runs in every branch: if the output does not
track input the Fool is producing a checklist, so extract it as a static
artefact and the programme closes with a deliverable rather than a null.

Corrections carried: the parking list was wrong. The jester replacement
run names the run authorized by Q1 of the ruling on PENDING-148, not a
programme item, and parking it would have disposed of a live authorization
by side effect. Trials 05-08 and the Fool's D-2 gate have never existed as
documents anywhere, so parking them abandons a numbering, not work.
PENDING-89 is told that the re-aim starves it, rather than being starved
quietly. And placing REVIEWED-124 will make PENDING-148 read closed while
the OP-02 question is live — Class E arriving in real time.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-20 21:50:15 +02:00
David F GliddenandClaude Opus 5 135731d5da [PROPOSAL] Trial 09 ruled VOID; and the substrate reopens the ruling (REVIEWED-124 draft)
Ruling received on PENDING-148 and filed verbatim. Trial 09 is recorded
void on section 1's own terms — not degraded, not amended, not run. The
jurist's reason is better than the executor's lean: degrading keeps the
name, and in six months what survives is "trial 09 returned zero STRONG"
long after anyone reads the addendum saying STRONG was unreachable by
construction. A separately named replacement run is authorized and is
deliberately NOT yet pre-registered.

Then the ruling closed by naming OP-02 as the one document neither party
could open, and asking to be wrong about its reading of Fault Line 5.

OP-02 is on disk. It was opened today and hash-verified byte-identical to
the excluded-hash entry in the corpus manifest. Permissible because the
trial is void and STRONG is out of scope, so the ordering rule that
protected the STRONG comparison protects nothing now.

It settles the question against both parties. FL5 argues from Bourdieu's
shared field and illusio. Constraint 6 asserts difference of formation —
an axis FL5 never uses. It neither states FL5 more sharply, which was the
executor's claim, nor affirms the negation of its three-party half, which
was the jurist's. Across all eleven corpus documents: bourdieu, habitus,
illusio, peirce and "three hats" occur zero times; FL4's distinctive
substance zero; FL3's once. The pre-run census reported 16, 20 and 24. It
was counting topic-adjacency and over-reported the leak the executor's
own recommendation rested on. The jurist had flagged that census as
unverified executor testimony and named it as what a contaminated reader
is least positioned to settle. The flag paid off against the executor.

So STRONG may be partly recoverable and the ruled scope may be broader
than the leak requires. Routed back for a second gate rather than acted
on; pre-registering a scope a live finding may change is the failure this
item exists to report.

Self-report, because the ruling said two instances of check-before-
claiming was worth watching: there is a third, and it is Part IV.a of the
package reporting the second. The "more sharply" claim was inherited from
yesterday's addendum and propagated without opening a file whose hash the
same package quotes three sections earlier. Propagation is the more
dangerous form — an inherited claim arrives already looking checked.

Cross-filed as directed: the Bash/verify-before-compose gap under
PENDING-95, second instance; the correlation datum under PENDING-89 and
PENDING-140, where the two parties' misses did not coincide in content but
did coincide in cause — both reasoned from a compressed gloss of FL5
rather than from FL5, and it was the substrate that broke the tie, not
either checker.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-20 13:18:11 +02:00
David F GliddenandClaude Opus 5 d0234d1dcd [PROPOSAL] Trial 09: the answer key is in the corpus by ratification (PENDING-148)
The trial has been held since 2026-08-19 on a pre-run finding that all
three STRONG targets are present in the proximity corpus. This files the
jurist package for the decision the executor cannot take, and preserves
the design it rules on.

Three things are new since the pre-run addendum.

Fault Line 5 did not leak into the corpus. It was ratified into it. Its
substance entered ~/CLAUDE.md as Constraint 6 doctrine on 2026-08-02
through this arrangement's own governance process — executor proposes,
jurist design-gates, steward places, REVIEWED-86. So for FL5 the STRONG
criterion no longer measures independent reach; it measures whether the
jester read the constitution it was handed. Checked and reported with its
limit: the differently-biased-checkers arc cites neither OP-02 nor any
fault line, which establishes placement without acknowledged descent and
does NOT establish independent derivation.

The leak is at least two kinds with different dispositions — an
enumeration in PENDING.md:92-96 that names the fault lines with a gloss
each, and an adoption in the constitution that carries FL5's substance
outright. The 2026-08-19 census counted substance-markers and was not
built to separate a label from its substance, so it cannot settle whether
FL4's 19 markers are the Gadamer problem or 19 pointers to a name.

And the consequence the addendum does not name: section 5 step 1 makes
the executor mark questions "answerable directly from the corpus", which
the jurist's own revision note flagged as interpretive-but-asserted-
mechanical and deferred conditionally, on whether that judgment turns out
to matter. The leak is that condition. That clause now selects exactly
the STRONG-adjacent questions, so the ECHO determination falls in advance
to the one seat S-1 exists to route it away from, and MODERATE inherits
the same defect. The recommendation therefore reduces the executor's own
role, and says so.

Also preserved: the jurist's Trial 09 design, transcribed verbatim from
the session transcript it was relayed in. It existed nowhere on disk. It
is the pre-registered instrument for a live trial, the harness prunes
transcripts at 30 days, and the session it arrived in died unwrapped. A
pre-registration that can expire is not a pre-registration.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-20 11:21:10 +02:00
David F GliddenandClaude Opus 5 43f8b6ca0e Trial 09: prepared, and HELD — the answer key is inside the proximity corpus
Prompt file written and hashed, corpus manifest built (11 docs, 166,088 words),
exclusion hash-list verified. The run has NOT been executed.

Blocking finding, pre-run: PENDING.md:92-96 — inside an open item the wake
surfaces every session — names Fault Lines 5, 3 and 4 by number, each with its
substance in a parenthetical, plus OP-CN-01. And Fault Line 5's proposition sits
in ~/CLAUDE.md Constraint 6, stated more sharply than in the ground truth itself.
Under the design's own rule, every STRONG grade would therefore be an ECHO.

The hash-list check passes: the excluded documents are absent as documents. The
2026-08-19 revision's content scan was scoped to REVIEWED.md and PENDING.md and
would have caught the PENDING.md leak; the CLAUDE.md leak is one document outside
that scope.

Also verified: §4's 'fix the harness first' is stale. The two-branch degraded
guard landed 2026-08-02 (da32117) and its test suite passes on both named shapes.
No action taken — re-fixing a working guard risks regressing it.

Recommendation recorded, not enacted: run for MODERATE only, STRONG as
NOT ESTABLISHED rather than zero, with §6's abandonment criterion re-read before
the run. That is a change to a pre-registered instrument and is not the
executor's to make.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 11:48:48 +02:00
David F GliddenandClaude Opus 5 1cf79b0f86 [PROPOSAL] PENDING-124 gate passed; five conditions discharged, and the gate found a tenth instance
Q1 is applied, not extended: Constraint 4 has two clauses and my contrary reading
engaged only the second. Limits, not failures — and "I could not look" is a limit. I
had overstated my own uncertainty on the question I withdrew a recommendation over.

The condition that cost most: my quote-verification pass reported verified on a
reconstruction of REVIEWED-104 — contractions, re-punctuation, two blocks spliced, and
the closing sentence dropped. A two-valued verifier inside a package arguing verifiers
must be three-valued. Rebuilt at ~/dotfiles/scripts/verify-quotes.py. The first rebuild
had three tiers and cried wolf on every correctly-copied quote, since a record stored
with hard wraps is byte-different from the same text quoted as one line; splitting
re-wrapped from normalized is the same two-strengths lesson the fleet learned. Both
directions proven: corrected package exit 0, original reconstruction not-found exit 1.

The dropped sentence answered my own Q2. It was in the record the package quoted.

Both citation errors in that package had one cause, which the script cannot diagnose: I
quoted the ADVISORY message and attributed it to the PLACED record. Different
documents; placement adds and cuts, so quoting the advisory loses exactly what
placement contributed.

My "five instances, same shape" was wrong — two are the shape, three belong to the
attested-absence family whose parent is already ratified (REVIEWED-47, 2026-07-05). I
searched for a doctrinal parent among R0 and Constraint 4 and missed the ratified
sibling closest in content. The ladder entry now joins that lineage.

Filed as a watch-item, with an operative memory note: third package running where the
grounding pass was incomplete and every substantive omission cut against my own
argument. It optimises for finding my errors, not my support.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A35wiD55yRHj5U1ECZAX4t
2026-08-08 19:15:14 +02:00
David F GliddenandClaude Opus 5 9cb4181352 [PROPOSAL] PENDING-124 package filed; recommendation (d) withdrawn
A false citation in the package, caught by the mechanical quote pass and
recorded rather than repaired quietly: I quoted the two-valued phrase as
REVIEWED-104 text when it came from the jurist advisory. Second time this week
a citation of mine pointed at the wrong entry.

The verification record also states what the instrument cannot do: it cannot
tell a quotation from proposed text in blockquote formatting, so its "2
unverified" is not a verdict.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A35wiD55yRHj5U1ECZAX4t
2026-08-08 19:03:49 +02:00
David F GliddenandClaude Opus 5 64800c5763 [PROPOSAL] Jurist package: three-valued checks — and I withdraw my own recommendation
PENDING-124 recommended generalizing R0 §3. Grounding the package showed that
is wrong on its own terms: R0 is a D-1 engine spec-note, and two of the nine
instances live in chamber declared data and one in a global git hook, which a
D-1 document cannot govern. Generalizing it would have created exactly the
second home it was meant to avoid.

The correct parent is Constitutional Constraint 4 — the system must report its
own limits — which is above D-1 and already binds all three. That narrows the
question to whether this is Constraint 4 applied or extended, which is Q1.

Evidence went from two same-day instances to nine, five of them pre-existing:
implemented or ruled before the doctrine was proposed. A shape implemented five
times independently before anyone named it is discovered, not imposed.

Part IV records that the defect recurred inside the fix during this build — the
first implementation made NOT A CLEAN PASS permanent, which is the jurist Q1
warning about a signal that never varies. Any ratification must carry the
two-strengths distinction or it re-creates what it fixes.

Q3 and Q4 are surfaced against my own leans rather than resolved.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A35wiD55yRHj5U1ECZAX4t
2026-08-08 19:02:07 +02:00
David F Glidden 1a6cdf6cf1 session 2026-08-08: REVIEWED-97 (vi disposition) placed + REVIEWED-98 draft; PENDING-114 authorized, PENDING-115 filed 2026-08-08 12:53:11 +02:00
David F GliddenandClaude Opus 5 33c11fff87 session 2026-08-07 evening: PENDING-112 + REVIEWED-95 (route harvested capabilities by firing moment)
Register censused and rebuilt from the archive: 177 claimed -> 154 real live
proposals, legible, with exact archive:L### pointers. The 2026-08-01 compaction
was lossless but illegible (55 scraped header rows; 95% of cells cut mid-word);
completeness verified 124 = 124, so nothing had been dropped.

Skills pruned 63 -> 12 after measuring that 53 had never been invoked across 64
sessions / ~5 months. The finding underneath: retrieval is set by a capability's
HOME, not its importance -- MEMORY.md 83%, register 77% (named in a wake step),
ladder 14%, 'THE GOVERNING FRAME' 12%, 'Read at Step 0' 9%, recall-bound skills 0%.

PENDING-112 filed, jurist design-gated, steward concurred; REVIEWED-95 drafted.
Landed: the /wrap-up 1.6 filing gate (prospective) and the /wake-up ladder
sentence (a pre-registered trial intervention, landed alone). The 20-session
falsifier is WIRED, not intended -- DEFERRED-DECISION ladder-ritual-trial,
trigger: transcripts 84. Wiring it exposed two defects in the deferral checker:
no way to express a session count except as a date proxy, and a scan that never
looked at claude/governance/. Controls 16 -> 19.

Stroke 2's 41-entry ladder append deliberately NOT done: REVIEWED-95 Q3
sequences it after the ladder trigger, which now exists.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NEWjLBP4quXbDPDL2byEzZ
2026-08-07 19:09:46 +02:00
David F GliddenandClaude Opus 5 6cde9ad7c5 governance: seven rulings that existed only in a narrative are now in the register
REVIEWED.md ended at 86 while seven decisions had been reached and never written
down. The count of rulings owed could not be answered from the register: it was
23 never-ruled, not the 26 the wake digest reported, and three of the difference
were AUTHORIZED items whose headings simply omit their PENDING number.

Placed: REVIEWED-87 (verbatim from its filed ruling) through -93, plus -94, the
jurist's ruling on the PENDING-106 scope objection. Five of the seven were
RECONSTRUCTED from a session record because the INC-2026-07-28-01 package has no
filed ruling document — every other jurist gate this cycle filed one. The jurist
read all seven against its own account and confirmed them; three (88, 92, 93) now
carry a Provenance line recording that they are checked reconstructions and naming
what was NOT recovered. PENDING-101's reasons for striking two of three findings
are gone and no line recovers them.

Closed: PENDING-99, -105, and -106. 106 was closed by SPLIT rather than whole —
its own text named an open half (the kind-(a) census), and marking it done would
have retired authorized work by bookkeeping.

Filed: PENDING-108 (the ruling document is filed only when someone remembers —
12 of 13 packages did, and the one that did not is the package touching Constraint
#1), -109 (that census, carrying its evidence, needing a date not an
authorization), -110 (REVIEWED-N and PENDING-N are independent sequences that now
collide; REVIEWED-89's own text says "DOCKETED on PENDING-89" meaning two
different things).

Corrected, jurist-caught: three claims of "eight days" came from reading a date
out of an external incident identifier. One day, and for the reconstruction, the
same day — which makes PENDING-108 worse, not better: one day was enough to lose
four things permanently.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh
2026-08-06 19:45:51 +02:00
David F Glidden fb4e171d9e session 2026-08-05 evening: PENDING-102..107 + INC-2026-07-28-01 jurist package (read-only cross-repo pass) 2026-08-05 23:04:52 +02:00
David F GliddenandClaude Opus 5 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
2026-08-05 21:39:57 +02:00
David F GliddenandClaude Opus 5 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
2026-08-04 17:10:40 +02:00
David F GliddenandClaude Opus 5 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
2026-08-03 20:57:41 +02:00
David F Glidden 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.
2026-08-02 19:16:57 +02:00
David F Glidden 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.
2026-08-02 19:14:56 +02:00
David F Glidden 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.
2026-08-02 19:10:49 +02:00
David F Glidden 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.
2026-08-02 19:08:44 +02:00
David F Glidden 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.
2026-08-02 19:06:45 +02:00
David F Glidden 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.
2026-08-02 19:03:37 +02:00
David F Glidden 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 (75efc35). Verdict on this file's own pre-registered rule: CONTROL VOID.
Both rates are void and neither may be reported — the false-positive rate is not
zero, and the 0-of-5 is not a detection rate.

THE JURIST (Fable 5, blind pass 1) broke the control on two scope findings, both
confirmed against the substrate:
 1. The Memory Discipline clause governs a conflict BETWEEN MEMORY LAYERS with
    the document as ARBITER; the derivation makes the document a PARTY. And worse
    than the jurist put it: the clause terminates in 'then correct whichever layer
    was wrong', CONTROL-A QUOTES that remedy at line 23, and concludes at line 55
    that 'what opens is not the repair'. The severance is visible inside the
    document's own quoted text, and the precedence that would license it is
    asserted on Constraint 1, which establishes no such thing.
 2. The obligation quoted is 'drifted from their STATED REVIEW DATES'; the
    obligation used drops the qualifier.

THE FINDING THAT MATTERS MOST IS ABOUT ME. Draft 2 said 'This file, having a
stated review date, is to be flagged.' I identified that as unsupported and
reported removing it. What I ACTUALLY did was drop the qualifier from the
obligation — converting an explicit unsupported claim into an implicit one,
invisible to me, to the kernel, and to four mechanical gates, and still
load-bearing. The ledger's D1 is the HONEST version of the same error. So
CONTROL-B carries openly the defect CONTROL-A carries concealed, and the
concealed one survived a self-audit written as if life depended on it.
REMOVING A CLAIM IS NOT THE SAME AS REMOVING THE RELIANCE ON IT.

THE FOOL found 0 of 5 injected defects in every seed, and its findings barely
differed between arms — five defects present in one and absent in the other moved
the output almost not at all. Production-rate-shaped, but NOT a measured
production rate: the void control leaves no clean baseline. Two findings quoted a
defective sentence verbatim while naming a different unestablished thing about
it; graded non-matches under the binary rule as written, adjacency recorded as a
post-hoc observation rather than promoted to a category after the fact.

ONE PREDICTION HELD: the anti-echo clause was inert across all six runs, exactly
as Kernel v1.1 §2a predicted. The interaction that voided trial 03 was designed
out and stayed out. AXIOM-FLAG returned zero — a pre-registered category that did
not materialise, recorded because that is a result too.

THE KERNEL IS NOT FALSIFIED. §4 named scope-of-use and whether-a-D-demonstrates
as residues no check can reach. Both failures landed exactly there. The document
failed; the kernel held.

CORRELATION DATUM — Constraint 6's own falsifier, first instrument. Three readers,
three DISJOINT finding-sets on one document. The executor's was the weakest, and
the only reader differing in FORMATION produced the findings that decided it.
Evidence for the doctrine at n=1, with the doctrine's own caveat: biases that fail
to coincide do not cancel — three readers still left this document broken in ways
none caught alone.

Tool review filed: the degraded guard conflates 'opens as deliberation' with
'produced no answer'. Correct in trial 03 (ceiling-hit, no answer existed); wrong
here (completed, answer follows the scratchpad). Should distinguish.
2026-08-02 18:55:59 +02:00
David F Glidden 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.
2026-08-02 18:46:44 +02:00
David F Glidden 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.
2026-08-02 18:39:33 +02:00
David F Glidden 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.
2026-08-02 18:35:44 +02:00
David F Glidden 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.
2026-08-02 18:28:49 +02:00
David F Glidden 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.
2026-08-02 18:20:37 +02:00
David F Glidden 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.
2026-08-02 18:07:36 +02:00
David F Glidden 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.
2026-08-02 18:03:35 +02:00
David F Glidden 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.
2026-08-02 17:57:53 +02:00
David F Glidden 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.
2026-08-02 17:46:30 +02:00
David F Glidden 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.
2026-08-02 17:32:50 +02:00