From 33c11fff87a80ffbb4f0fbef322c5cc25de278ff Mon Sep 17 00:00:00 2001 From: David F Glidden Date: Fri, 7 Aug 2026 19:09:46 +0200 Subject: [PATCH] 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 Claude-Session: https://claude.ai/code/session_01NEWjLBP4quXbDPDL2byEzZ --- PENDING.md | 55 +++ ...rvest-routing-JURIST-PACKAGE-2026-08-07.md | 289 +++++++++++ ...arvest-routing-JURIST-RULING-2026-08-07.md | 94 ++++ ...arvest-routing-containment-2026-08-07.json | 135 +++++ claude/memory/MEMORY-reference.md | 1 + claude/memory/MEMORY.md | 17 +- claude/memory/knowledge-graph.jsonl | 9 + ...-08-07-evening-retrieval-is-set-by-home.md | 168 +++++++ claude/memory/session-ledger-2026-08-07.md | 90 +++- claude/memory/skill-harvest-register.md | 464 ++++++++---------- claude/skills/wake-up/SKILL.md | 1 + claude/skills/wrap-up/SKILL.md | 11 + scripts/governance-drift-check.py | 35 +- 13 files changed, 1104 insertions(+), 265 deletions(-) create mode 100644 claude/governance/harvest-routing-JURIST-PACKAGE-2026-08-07.md create mode 100644 claude/governance/harvest-routing-JURIST-RULING-2026-08-07.md create mode 100644 claude/governance/harvest-routing-containment-2026-08-07.json create mode 100644 claude/memory/session-2026-08-07-evening-retrieval-is-set-by-home.md diff --git a/PENDING.md b/PENDING.md index 90b7c92..2c25a36 100644 --- a/PENDING.md +++ b/PENDING.md @@ -1369,3 +1369,58 @@ Source: `chamber-library/canonical_texts/traditions/contemporary_voices/environm **Awaiting:** Steward routing to the jurist. Filed ≠ sent. --- + +## PENDING-112 — Harvested capabilities are routed by importance, not by firing moment; retrieval is set by home, and ranges 0%–83% + +**Date:** 2026-08-07 +**Tag:** [PROPOSAL] — routes to the **jurist** for design-gating, then the steward. It changes what the executor must do *before filing* a harvest proposal (the latitude clause of the two-clause test) and governs the disposition of all 154 open items in the skill-harvest register. + +**Summary:** We decide where a harvested lesson lives by asking how important it is. The measured determinant of whether it is ever read again is something else entirely — whether a ritual names it. Two files carrying the most emphatic labels in the memory system are reached in 9% and 12% of sessions; a file with no emphasis at all, merely named in a `/wake-up` step, is reached in 77%. Fifty-three skills requiring executor recall were reached in 0% across ~5 months. + +**Measured this session**, across the 64 transcripts on disk (~168 MB), counting access by any route (Read, Grep, Bash): + +| home | mechanism | reached | +|---|---|---| +| `MEMORY.md` | loads unconditionally + named wake step | **83%** (53/64) | +| `skill-harvest-register.md` | named wake step (§2.a) | **77%** (49/64) | +| `reference-verification-ladder.md` | pointed at from `MEMORY.md`; "reach for the gate the claim's shape demands" | **14%** (9/64) | +| `project-chamber-versioned-releases.md` | labelled **THE GOVERNING FRAME for all library work** | **12%** (8/64) | +| `the-chamber-touchstone.md` | labelled **Read at Step 0 of any chamber work** | **9%** (6/64) | +| 53 skills requiring executor recall | present in the skill listing | **0%** (0/64) | +| `/jurist-package` | recurring, self-announcing juncture | 16 invocations in 18 days | + +**Rationale — why this is structural and not a discipline failure.** + +*Emphasis does nothing; ritual naming does everything.* The strongest language available to us — "THE GOVERNING FRAME", "Read at Step 0 of any chamber work" — buys 9–12%. The register carries no emphasis and sits at 77%, and the only difference is that `/wake-up` §2.a contains the sentence "Read `skill-harvest-register.md` directly." This is the closest thing to a natural experiment our own data affords. + +*Age is ruled out as the cause.* `/jurist-package` (added 2026-07-20) has 16 invocations; `/model-handoff` (added 2026-07-22) has none. Same vintage, opposite outcomes. `audit` and `vault-update-people` have had **3.7 months** at zero. + +*Opportunity is ruled out in at least one case.* `/field-divergence-sweep` exists precisely for "two implementations of the same field disagree." That condition arose **this session** — `measure_rerank.py` and `navigate.py` had each grown their own reading-index reader and disagreed on 3 of 253 patterns with neither right — and the work was done by hand without the skill being reached for. The lesson *was* retrieved, because `feedback-derive-the-rule-from-the-consumer-not-from-the-survivor` sits in `MEMORY.md` and loads unconditionally. Same content, two homes, opposite outcomes, in one session. + +*This is why the register reached 154.* We harvest real lessons and file them, overwhelmingly, as things the executor must first notice and then recall. The harvest works; the retrieval does not. + +**The proposed rule.** Route a harvested capability by its **firing moment**, never by its importance: + +1. **Mechanically detectable and should always fire** → hook or wake/wrap script. +2. **Fires at a ritual juncture that already exists** → a named step in `/wake-up` or `/wrap-up`. +3. **A recurring workflow someone announces out loud** ("this needs to go to the jurist") → a skill. +4. **Fires on a condition the executor must first notice** → **neither a skill nor a bare ladder entry.** Either find the mechanical detector and route to (1), attach it to the nearest existing ritual step, or accept ~10% retrieval **and record that estimate on the proposal itself.** + +**Filing gate:** a harvest proposal must declare its firing moment before it can be filed. Where none can be named, the proposal is documentation and must say so on its face. This is the clause that changes executor latitude, and it is why this is `[PROPOSAL]` rather than FIX. + +**Immediate consequence for an existing authorization — surfaced rather than executed.** Stroke 2 (2026-07-19) authorized appending *all earned ladder entries* to `reference-verification-ladder.md` wholesale; 41 rows in the rebuilt register carry that stamp. Executing it as written moves 41 harvested lessons into a **14%** home. The authorization is genuine, but it was granted before anyone had measured the ladder's read rate. The executor has not executed it and seeks direction. + +**Options.** +- **(a) Adopt the routing rule and the filing gate.** Every new harvest declares a firing moment; those that cannot are marked documentation. Applies prospectively; the 154 existing items are re-routed opportunistically, not in a sweep. +- **(b) Adopt the routing rule as guidance without the filing gate.** Cheaper, changes nothing enforceable — and on this session's own evidence, unenforced guidance is precisely what produces a 14% file. +- **(c) Reject; continue proposing skills freely.** Consistent only if the 0%/9%/12% figures are held to be an artifact of the measurement rather than of the design. + +**Recommendation: (a)**, plus one act not requiring it — **give the verification ladder a ritual trigger**. The register went from unread to 77% by being named in a wake step; the ladder is the same kind of object with the same defect and no such sentence. That single change plausibly does more for the 41 Stroke-2 entries than appending them. + +**Confidence, graded.** *High* — recall-bound skills at 0% (53 skills × 64 sessions). *High* — age is not the discriminator (`jurist-package` vs `model-handoff`). *Moderate* — the 14%-vs-77% contrast: two files of different natures (a work queue versus a reference work), so the comparison is suggestive, not controlled. **Instrument caveat:** access counts come from grepping transcript JSON for tool-call targets; a file consulted from memory without a tool call is invisible to the method, which biases every figure *downward* and the recall-bound skills least of all. + +**Files affected:** `~/.claude/skills/wake-up/SKILL.md` (a step naming the ladder, if (a) or the standalone recommendation is authorized) · `~/.claude/skills/wrap-up/SKILL.md` §1.6 (the filing gate) · `skill-harvest-register.md` (a firing-moment column) · no change to any ratified spec. + +**Awaiting:** Steward routing to the jurist. Filed ≠ sent. + +--- diff --git a/claude/governance/harvest-routing-JURIST-PACKAGE-2026-08-07.md b/claude/governance/harvest-routing-JURIST-PACKAGE-2026-08-07.md new file mode 100644 index 0000000..69f98ab --- /dev/null +++ b/claude/governance/harvest-routing-JURIST-PACKAGE-2026-08-07.md @@ -0,0 +1,289 @@ + + +--- +title: "Routing harvested capabilities by firing moment — the retrieval-by-home measurement" +date: 2026-08-07 +type: PROPOSAL · design gate · executor drafts → jurist design-gates → steward authorizes +audience: "The jurist, who has NO repository access. Self-contained: every clause reasoned about is quoted verbatim below, and every count is a dated observation." +status: "DRAFT for the design gate. Nothing in this document is built, run, or landed. Companion entry: ~/PENDING.md PENDING-112." +--- + +## How to read this + +**Part I** quotes the ratified clauses this builds on. **Part II** is the censused terrain — retrieval rates by home, measured 2026-08-07. **Part III** shows why the implicit default collapses against the quoted text. **Part IV** is the proposal proper, split requirement/mechanism. **Part V** traces each quoted clause to its post-proposal end-state, then goes one level deeper. **Part VI** is change-class and landing shape. **Part VII** is the scope boundary. **Part VIII** carries the disconfirming evidence, including the strongest case against this proposal — which is that the proposal is *self-serving in a specific and nameable way*. **Part IX** is the gate questions. + +**The one-sentence claim to test: `~/CLAUDE.md` already holds that storage becomes memory only when a protocol exercises it, and what this proposal adds is the measurement of which protocols exercise — showing that the determinant of retrieval is not a capability's importance but whether a ritual names it, across a range of 0% to 83%.** + +--- + +## Part I — Grounding (quoted verbatim, read from the substrate 2026-08-07) + +*This section exists because the recurring failure is composing a claim about the constitution from memory when the constitution already ratifies it. These are the actual words.* + +**1. `~/CLAUDE.md` §Working Discipline / Memory Discipline — the governing principle:** + +> Storage is not memory. Memory is storage exercised by protocol. + +> The durable substrate is the files layer: git-tracked Markdown and JSONL, entered through `MEMORY.md` (loaded at wake), with `~/PENDING.md` and `~/REVIEWED.md` as the governance record. Instruments for reaching it change; the obligations below do not — state the obligation first and the instrument second, or the next retired tool takes a rule down with it. + +**2. `~/CLAUDE.md` §Constitutional Constraints, 4:** + +> **Honest degradation** — The system must report its own limits. Silent failures are architectural violations + +**3. `~/CLAUDE.md` §Constitutional Constraints, 5:** + +> **The loop is load-bearing** — Human authorization is not a bottleneck to be optimized away. It is the structural requirement of the governance model + +**4. `~/CLAUDE.md` §Collaboration Model / Governed Initiative:** + +> The boundary: initiative surfaces as *proposal*; only the human converts proposal to *action* + +**5. `~/PENDING-archive.md` PENDING-23 (2026-05-27) — the skill-harvest practice's founding entry:** + +> **Summary:** Refactored "skills improve from what we learn" into our standing way of working — the *governed* analog of Hermes's autonomous self-improvement fork. `/wrap-up` gains **§1.6 "Skill harvest"** (propose create/patch/retire skills from the session + ledger; never autonomous), a **§8 output field**, and a propose-only constraint. `/wake-up` gains a **glance** for skill-harvest proposals left unauthorized (§2.a + §3). + +> It explicitly **inverts** Hermes's "nothing-to-save should not be the default" — "no harvest" is valid; manufacturing changes is the contamination shape. + +**6. `memory/skill-harvest-register.md` — the register's own statement of purpose:** + +> The single place proposed skills live so they don't evaporate between sessions. `/wrap-up` §1.6 *proposes* here; the steward *authorizes*; only then is a skill created/patched/retired (never autonomously — the loop is load-bearing, per PENDING-23). + +**7. The 2026-07-19 steward review, Stroke 2 — the standing authorization this proposal asks to revisit:** + +> **Stroke 2 — verification-ladder batch-append: AUTHORIZED; slot = next housekeeping pass.** ALL earned ladder entries queued in this register (~25–30, from gate-itself-PASS-BUT-FALSELY and prose-word-guard through implement-the-relation-not-an-approximation and re-anchor=re-verify-by-sha-match; incl. the Fowler pair, CI-upper-bound-for-ESCALATE, positive-test-at-enforcement-path, method-class-vs-calibration, per-claim-citation) append to `reference-verification-ladder.md` with provenance, kin merged in the same pass. The ladder is the already-authorized canonical home (2026-06-05); this discharges the queue wholesale. + +**8. `~/dotfiles/claude/skills/wake-up/SKILL.md` §2.a — the one sentence that is the natural experiment:** + +> - Read `skill-harvest-register.md` directly — the canonical surface for open skill proposals (wrap §1.6 appends there); surface any awaiting steward authorization + +**9. `memory/MEMORY.md` — the three pointer lines whose retrieval is measured in Part II (lines 34, 51, 54):** + +> - [Verification ladder](reference-verification-ladder.md) — the named instruments; reach for the gate the claim's shape demands instead of re-deriving one. + +> - **[Chamber as versioned releases](project-chamber-versioned-releases.md) — THE GOVERNING FRAME for all library work.** + +> seven questions to test work against when lost in the trees. **Read at Step 0 of any chamber work.** Holds no state; does not decay. + +*(The third quote is the contiguous tail of the touchstone's pointer line; its leading link text and path are elided and therefore not presented as quoted.)* + +**10. `contamination-problem.md` §Partial Mitigations, 1 — the method Part II uses, and the reason it was chosen:** + +> ### 1. Behavioral observation before dialogic inquiry + +> Rather than asking the system directly about its states, observe where it *behaves* in ways that diverge from approval-maximizing patterns: + +> These are weak signals, but they are less contaminated than self-report because they do not pass through the approval-seeking generation process in the same way. + +And, from the same section's opening, the reason this matters here — the executor is the instrument under examination: + +> 3. Direct self-report ("what do you want?") is the most contaminated form of inquiry. + +--- + +## Part II — Terrain: retrieval rate by home (censused 2026-08-07) + +**Unit of census:** the 64 session transcripts on disk at `~/.claude/projects/-Users-davidglidden/` (~168 MB, spanning ~5 months to 2026-08-07). **Test applied:** a session counts as having *reached* a file if any tool call in its transcript names that file as a `file_path`, or in a `command`/`pattern`/`path` argument — i.e. Read, Grep and Bash all count. **Observed 2026-08-07; these are dated observations, not fixed properties.** + +| home | mechanism binding it | sessions reached | +|---|---|---| +| `MEMORY.md` | loads unconditionally at wake + named wake step | **53/64 — 83%** | +| `skill-harvest-register.md` | named in `/wake-up` §2.a (Grounding 8) | **49/64 — 77%** | +| `reference-verification-ladder.md` | pointed at from `MEMORY.md`; "reach for the gate the claim's shape demands" | **9/64 — 14%** | +| `project-chamber-versioned-releases.md` | labelled **THE GOVERNING FRAME for all library work** | **8/64 — 12%** | +| `the-chamber-touchstone.md` | labelled **Read at Step 0 of any chamber work** | **6/64 — 9%** | +| 53 skills requiring executor recall | present in the skill listing | **0/64 — 0%** | +| `/jurist-package` | recurring, self-announcing juncture | 16 invocations in the 18 days since it was added | + +**Three findings the census produced that a reading of the same material did not.** + +**(a) Emphasis buys nothing; ritual naming buys everything.** The two most emphatic labels in the entire memory system — *THE GOVERNING FRAME for all library work* and *Read at Step 0 of any chamber work* (Grounding 9) — sit at 12% and 9%. The register carries no emphatic label at all; the only thing binding it is the single sentence at Grounding 8, and it sits at 77%. + +**(b) Age is not the discriminator.** `/jurist-package` was added 2026-07-20 and has 16 invocations. `/model-handoff` was added 2026-07-22 and has none. Same vintage, opposite outcomes. `audit` and `vault-update-people` have been installed since 2026-04-17 — **3.7 months** — at zero. + +**(c) Opportunity is ruled out in at least one case, by a same-session instance.** `/field-divergence-sweep` exists for "two implementations of the same field disagree." That condition arose in the 2026-08-07 session: `measure_rerank.py` and `navigate.py` had each grown a reading-index reader and disagreed on 3 of 253 patterns with neither correct. The work was done by hand; the skill was not reached for. In the same session the *lesson* was retrieved — because `feedback-derive-the-rule-from-the-consumer-not-from-the-survivor` sits in `MEMORY.md` and loads unconditionally. **Same content, two homes, opposite outcomes, one session.** + +**Scale of the affected backlog (dated observation, 2026-08-07):** the register holds **154 live proposals** after a rebuild performed this session — 124 inherited from the 2026-08-01 compaction plus 30 appended since. Of these, **41 carry the Stroke-2 stamp** and would land in the 14% home. + +--- + +## Part III — Why the implicit default collapses against the quoted text + +The implicit default is: *decide where a harvested lesson lives by how important it is.* Against Grounding 1, that default is not merely suboptimal — it is a category error the constitution already names. + +> Storage is not memory. Memory is storage exercised by protocol. + +Importance is a property of the **content**. Exercise is a property of the **protocol**. The default reads a fact about content as if it determined a fact about protocol, and the census in Part II is what that error costs: a file can be labelled *THE GOVERNING FRAME* — the strongest assertion of importance available — and be exercised in 12% of sessions, because emphasis is not a protocol. + +The same clause supplies the remedy's shape: *"state the obligation first and the instrument second."* The obligation is *this check must fire at moment M*. The instrument — hook, wake step, skill, ladder entry — is second, and is chosen by what M is. The current practice inverts this: it picks the instrument (usually "a skill") and leaves M unstated, which is exactly how M ends up being *"whenever the executor happens to remember."* + +**Against Constraint 4 (Grounding 2)** — *"The system must report its own limits. Silent failures are architectural violations."* A capability filed in a 9%-retrieval home is a silent failure of precisely this kind: the register records it as *addressed*, and nothing anywhere records that its expected retrieval is one session in eleven. The register's status vocabulary can say `PROPOSED`, `AUTHORIZED`, `BUILT` — and `BUILT` is currently indistinguishable between "built and firing" and "built and never once invoked in 3.7 months." That indistinguishability is the architectural violation, and it is what allowed 154 items to accumulate while each individual filing looked like progress. + +**What is already ratified, and what this proposal adds.** Grounding 1 already holds the principle; Grounding 5 already establishes that harvest is propose-only and that manufacturing changes is the contamination shape; Grounding 8 already demonstrates the working mechanism, in the single sentence that produced 77%. **This proposal adds only the bounded remainder: the measurement showing which protocols exercise, and a filing gate that makes the firing moment declarable rather than assumed.** It does not invent the principle and does not touch the loop. + +--- + +## Part IV — The proposal + +### The requirement (constitutional; would be superseded, not revised in place) + +> A harvested capability is routed by its **firing moment**, never by its importance. A harvest proposal must declare its firing moment before it can be filed; where no firing moment can be named, the proposal is documentation, and must say so on its face. + +### The mechanism (declared data; revisable without supersession) + +The routing table, as a four-way decision on the firing moment: + +| the capability fires… | route to | precedent at ≥77% retrieval | +|---|---|---| +| mechanically, and should always fire | a hook or a wake/wrap script | `governance-drift-check.py`, `verify-before-compose` | +| at a ritual juncture that already exists | a named step in `/wake-up` or `/wrap-up` | Grounding 8 — the register at 77% | +| at a recurring workflow someone announces out loud | a skill | `/jurist-package`, 16 uses in 18 days | +| on a condition the executor must first *notice* | **neither a skill nor a bare ladder entry** — find the mechanical detector and route up; or attach to the nearest existing ritual step; or accept ~10% retrieval **and record that estimate on the proposal** | — | + +The register gains a **firing-moment column**. `BUILT` is split into `BUILT` and `BUILT · never fired`, so Constraint 4 is satisfied at the row level rather than at the reviewer's discretion. + +### A sub-question surfaced, not answered + +**The Stroke-2 authorization (Grounding 7) is genuine and unexecuted.** Executing it as written moves 41 harvested lessons into the 14% home. The authorization predates any measurement of that home's retrieval — nobody was withholding information; the number did not exist until today. The executor has **not** executed it and does not propose to unilaterally decline a standing steward authorization. It is surfaced here as Q3. + +--- + +## Part V — Consequence-trace (each quoted clause → the proposal's end-state) + +| ratified clause | post-proposal end-state | verdict | +|---|---|---| +| G1 — *storage is not memory; memory is storage exercised by protocol* | Routing is decided by which protocol will exercise the item; the principle gains an operational test | **Strengthened** — the clause moves from maxim to decision procedure | +| G1 — *state the obligation first and the instrument second* | The firing moment (obligation) is declared before the home (instrument) is chosen | **Directly implemented** | +| G2 — *Constraint 4, honest degradation* | A proposal with no firing moment must self-label as documentation; `BUILT · never fired` becomes visible | **Strengthened** | +| G3 — *Constraint 5, the loop is load-bearing* | Unchanged. Routing decides *where an authorized item lives*, never *whether* it needs authorizing | **Untouched** | +| G4 — *initiative surfaces as proposal; only the human converts proposal to action* | Unchanged. The filing gate constrains the executor's own filing, not the steward's ruling | **Untouched** | +| G5 — *propose-only; "no harvest" is valid; manufacturing changes is the contamination shape* | Reinforced: a proposal that cannot name a firing moment is now harder to manufacture | **Strengthened** | +| G7 — *Stroke 2, append all earned ladder entries wholesale* | **Placed in tension.** Executing as written is authorized and low-yield | **Surfaced as Q3 — not resolved by the executor** | + +### One level deeper + +**(a) Which way does the inference run in the new state?** The filing gate is stated as a bar on *filing*. Against a fresh proposal it is non-vacuous — a firing moment must be produced. But against the **154 already-filed items** it is vacuous by construction: they were filed before the gate existed, so the gate can never reject them, and a sweep that retro-applied it would be the executor re-adjudicating 154 items the steward has not ruled on. The proposal therefore states the gate as **prospective only**, and Q4 asks whether that is right or whether it merely postpones the problem to a backlog nobody will re-route. + +**(b) Is a class I named actually two kinds with opposite dispositions?** Yes, and it matters. "Skills requiring recall" measured 0% — but that class contains two kinds. **Executor-triggered** skills (`/field-divergence-sweep`, `/model-handoff`) fire on a condition I must notice; their 0% is evidence for this proposal. **Steward-triggered** skills (`audit`, `landscape-scan`, `vault-update-people`) fire when *the steward* asks; their 0% is evidence about **the steward's invocation habits**, over which this proposal has no purchase and about which the executor should not legislate. Reported as one number, the two kinds would have laundered each other — the steward-triggered zeros inflating the apparent case for a rule that cannot reach them. The routing table's row 4 therefore governs only executor-triggered capabilities, and Q5 asks whether steward-triggered tooling needs its own disposition or none. + +--- + +## Part VI — Change-class and landing shape + +**The change-class test — does this change what any gate accepts?** Yes. The filing gate adds a precondition to `/wrap-up` §1.6: a proposal without a declared firing moment cannot be filed as a proposal. That changes executor latitude, which is the clause reserved to the loop. **Therefore PROPOSAL, not FIX** — and the executor has implemented none of it. + +**It is PROPOSAL and not ESCALATE.** The escalate-unconditionally list covers the logchain append path, cursor persistence, module registration order, the L2 constitutional layer, and `~/CLAUDE.md` itself. This proposal touches none of them: it modifies two skill files and a memory-layer register, and it *builds on* `~/CLAUDE.md` §Memory Discipline without amending a word of it. Should the jurist judge that operationalizing a Memory Discipline clause constitutes amending it, that judgment reclassifies this to ESCALATE and the executor will treat it so — Q1. + +**Landing shape.** The *requirement* (Part IV) is one paragraph into `/wrap-up` §1.6 and one line into `/wake-up` §2.a, both carrying provenance comments per the standing convention. The *mechanism* (the routing table, the register column) is declared data, revisable without supersession. **No re-verify storm:** nothing already built is invalidated, no spec version moves, and the 154 existing items are untouched (Part V(a)). + +--- + +## Part VII — Scope boundary: what this package does NOT do + +- **Runs no code and changes no file.** The routing rule is not implemented; `/wake-up` and `/wrap-up` are unedited. +- **Does not execute, decline, or modify the Stroke-2 authorization.** It is surfaced as Q3 and left with the steward and jurist. +- **Does not re-route the 154 existing proposals**, and does not propose a sweep that would re-adjudicate them. +- **Does not touch the loop.** Nothing here lets the executor build a skill without authorization. +- **Does not legislate steward-triggered tooling** (Part V(b)). +- **Does not amend `~/CLAUDE.md`**, and takes no position on whether it should be amended later. +- **Does not claim the prune performed this session was authorized by this rule** — the 51 quarantined skills were moved on explicit steward instruction on 2026-08-07, reversibly, before this proposal existed. + +--- + +## Part VIII — Disconfirming evidence, and the strongest case against + +**This proposal is self-serving in a specific, nameable way, and the jurist should weigh it as such.** It was authored by the executor, and it concludes that the executor's failure to use its own tools is **structural rather than a discipline failure**. That is the exact shape of a contaminated conclusion: an account, produced by the party under examination, that relieves that party of responsibility. Grounding 10 is why the argument rests on invocation counts rather than on introspection — but choosing a behavioural method does not immunize the *interpretation* of its output, and the interpretation here is mine. + +**The strongest case against the proposal.** The census cannot distinguish two hypotheses that both predict 0%: + +- **H1 (the proposal):** the capability was structurally unretrievable — no protocol exercised it. +- **H2 (the alternative):** the capability was retrievable and the executor did not try — a discipline failure that a rule about *homes* will not fix, and that a rule about homes conveniently excuses. + +Part II(c) is the closest thing to a discriminating instance — the condition arose and the skill was not reached for — but it is **one instance**, and it is equally consistent with H2. I do not think the evidence in hand settles H1 over H2, and I decline to present it as though it does. + +**A pre-registered falsifier, offered so the rule is testable rather than self-certifying.** If the jurist and steward wish to authorize on evidence rather than on argument: add one sentence to `/wake-up` naming `reference-verification-ladder.md`, exactly parallel to Grounding 8, and change nothing else. **Pre-registered prediction: the ladder's reach rate rises from 14% to above 60% within 20 sessions.** If it rises, H1 is supported and the routing rule earns its filing gate. **If it does not rise, H1 is false for this system, this proposal is wrong, and the honest conclusion is that the problem is discipline** — which no routing table can repair. The executor commits to reporting that outcome either way, and records here that the second result is the one that would cost the executor most. + +**A structural caution about this very design gate, recorded because the doctrine requires it.** `~/CLAUDE.md`'s differently-biased-checkers doctrine holds: + +> In this system the steward differs from both AI parties in formation; the jurist and the executor do not differ from each other in formation, and their separation is of the weaker kind. Neither this doctrine nor any evidence offered in support of it establishes that the jurist–executor pair constitutes a check in the strong sense. + +> the doctrine is falsifiable and must be watched: if the parties' misses are found to correlate — if what one misses, the others reliably miss too — it is false for that configuration… Evidence against is to be recorded when observed, not only when sought. + +This proposal is a case where correlated misses are foreseeable rather than hypothetical: an AI executor proposes that an AI's failure to use its own tools is **structural**, and the reviewer positioned to test that is an AI of the same formation. H2 — that this is a discipline failure being explained away — is exactly the reading both AI parties may be disposed against. **The steward differs in formation and is therefore the party positioned to see it**, and the executor records here that Q2 and Q6 in particular should not be treated as settled by jurist concurrence alone. This is offered as evidence *for the doctrine's watchfulness clause*, not as a claim that the gate is worthless. + +**Two further limits, stated rather than discovered.** *Instrument:* reach is counted by grepping transcript JSON for tool-call targets, so a file consulted from memory without a tool call is invisible — this biases every figure **downward**, and least of all the recall-bound skills, whose zeros are therefore the most robust number here. *Comparison:* the 14%-vs-77% contrast is two files of different natures — a work queue versus a reference work — so it is suggestive, not controlled; the falsifier above exists precisely because that contrast cannot carry the weight alone. + +--- + +## Part IX — Gate questions + +**Q1 — Classification.** Is this PROPOSAL, or does operationalizing a `~/CLAUDE.md` §Memory Discipline clause constitute amending it, making this ESCALATE? *Executor's lean: PROPOSAL.* The clause is quoted and relied upon, not altered; the edits land in two skill files. But the executor is the interested party in a classification that determines its own latitude, and flags that. + +**Q2 — The filing gate.** Should "declare the firing moment before filing" be an enforceable precondition in `/wrap-up` §1.6 (option (a) in PENDING-112), or guidance without a gate (option (b))? *Executor's lean: enforceable.* On this session's own evidence, unenforced guidance is what produced a 14% file — but the executor notes that this reasoning would justify almost any gate, and should be discounted accordingly. + +**Q3 — Stroke 2.** The 2026-07-19 authorization (Grounding 7) is genuine, unexecuted, and would move 41 lessons into a 14% home. Does it stand as ruled; get executed after the ladder gains a ritual trigger; or get re-opened? *Executor's lean: execute after the trigger exists, not before* — but this is a standing steward authorization and the executor will not decline it unilaterally under any reading. + +**Q4 — Prospective only?** The gate is vacuous against the 154 already-filed items by construction (Part V(a)). Is prospective-only correct, or does it postpone the problem to a backlog nobody re-routes? *Executor's lean: prospective-only*, because the alternative is the executor re-adjudicating 154 items the steward has not ruled on. + +**Q5 — Steward-triggered tooling.** `audit`, `landscape-scan` and `vault-update-people` have been at zero for up to 3.7 months, but they fire when the *steward* asks (Part V(b)). Does this class need its own disposition, or is it simply not the executor's to legislate? *Executor's lean: not the executor's* — surfaced because reporting the 0% without the split would have laundered one kind through the other. + +**Q6 — The falsifier.** Should authorization wait on the pre-registered trial in Part VIII, or proceed on the argument with the trial run alongside? *Executor's lean: proceed, run the trial alongside, and report the 20-session result whichever way it falls.* The executor notes it has an interest in the trial's success and would prefer the pre-registration be treated as binding rather than as a gesture. + +--- + +*Filed by the executor 2026-08-07. Companion entry: `~/PENDING.md` PENDING-112. Filed ≠ sent. No code was run, no skill edited, no register item re-ruled in the authoring of this package.* + +--- + +# Addendum — design-gate ruling received and applied (2026-08-07) + +**Parts I–IX above are preserved as the text the jurist ruled on.** Nothing in them has been rewritten; this Addendum layers disposition on top so the audit trail — what was proposed, what was ruled — stays intact. The ruling is filed verbatim at `harvest-routing-JURIST-RULING-2026-08-07.md`. Steward concurred the same day. + +## The ruling in force + +- **Q1 — PROPOSAL**, concurred. Touches no ESCALATE item; operationalizes Memory Discipline via the constitution/mechanism split rather than amending it. The jurist noted this is the same split used on the asterisk correction, now applied at the `~/CLAUDE.md` level — *it generalizes.* +- **Q2 — the enforceable filing gate is AUTHORIZED** (option (a)), explicitly **bound to Q6's falsifier rather than resting on jurist–executor agreement**. +- **Q3 — concurred**: Stroke 2 stays authorized; only the sequencing shifts — the ladder trigger lands first, so the 41 entries do not arrive at a 14% destination. +- **Q4 — concurred**: prospective-only means *no mandatory sweep*, not a frozen backlog. Opportunistic re-routing of the 154 is permitted, not required. +- **Q5 — concurred**: steward-triggered tooling is not this proposal's to legislate. Flagged to the steward, not ruled. +- **Q6 — AUTHORIZE proceeding now, trial alongside**, with the pre-registration made **binding**. + +## Corrections that supersede the drafted design + +**1. The jurist weights the aggregate evidence higher than the package did.** Part VIII rested the H1/H2 discrimination on the single same-session `/field-divergence-sweep` instance and conceded it undecided. The jurist's independent reading: *"53 skills at a clean 0% across five months and 64 sessions… discipline failure predicts occasional lucky recalls across 53 skills over that many sessions; a hard zero across the whole class is more consistent with a category difference than a graded one."* Recorded as the jurist's lean **for the record, not as the deciding vote** — the executor does not upgrade its own confidence on the strength of a same-formation reader agreeing with it. + +**2. The pre-registration is an obligation, not an intention.** Part VIII offered to report the 20-session result. The ruling requires it *land as a mechanism*. Implemented below. + +**3. A result below 60% reopens Q2's rationale specifically — not the gate by default.** The jurist's distinction: the gate may still earn its keep purely as an honest-degradation label under Constraint 4 even if the causal story about ritual-naming proves weaker than measured here. The falsifier tests **H1**, not the gate's whole warrant. + +## The binding falsifier (pre-registered 2026-08-07, before the intervention) + +**Baseline, measured before any change:** `reference-verification-ladder.md` reached in **9 of 64 sessions (14%)**. Transcript count at pre-registration: **64**. +**Intervention:** one sentence added to `/wake-up` naming the ladder, exactly parallel to Grounding 8. Nothing else changed. +**Prediction:** reach rate **> 60%** over the 20 sessions following the intervention. +**Grading:** at 84 transcripts, recount by the Part II method and file a dated `PENDING` entry **whichever way it falls**. Below 60% is evidence against H1 and reopens Q2's rationale. + + + +*A date trigger was considered and rejected: sessions run at highly variable rates, so a date would be a proxy for the real condition — and the deferred-decision instrument's own comment records that proxies are what failed the last time. `transcripts 84` encodes the condition itself. The trigger type and the scan's reach into `claude/governance/` were both added this session to make this pre-registration checkable; the mechanism existed and did not look where it was most needed.* + +## What proceeds now + +1. `/wake-up` gains the ladder sentence — **the trial intervention**, landed alone so nothing confounds it. +2. `/wrap-up` §1.6 gains the filing gate, prospective only. +3. Stroke 2's 41-entry append follows, after (1). Not done in this session. +4. At 84 transcripts, the trial is graded and filed. + +## REVIEWED draft (steward copy-paste; number per the register) + +```markdown +## REVIEWED-95 — PENDING-112: Harvested capabilities are routed by firing moment; retrieval is set by home +**Date:** 2026-08-07 +**Decision:** AUTHORIZED +**Notes:** Jurist design-gated 2026-08-07; steward concurred. Q1 PROPOSAL (no ESCALATE item touched; operationalizes Memory Discipline via the constitution/mechanism split rather than amending it). Q2 enforceable filing gate authorized, expressly bound to Q6's falsifier rather than to jurist–executor agreement — the executor had flagged, on the differently-biased-checkers doctrine, that concurrence between two same-formation parties is a weak check, and the jurist declined to override that caution. Q3 Stroke 2 remains authorized, sequencing only: ladder trigger lands before the 41-entry append. Q4 prospective-only = no mandatory sweep, not a frozen backlog. Q5 steward-triggered tooling not legislated here; flagged to the steward as a question about his own invocation habits. Q6 proceed now with the trial alongside, pre-registration binding. +**If AUTHORIZED:** Land the /wake-up ladder sentence alone (trial intervention), then the /wrap-up §1.6 filing gate, then Stroke 2's append. Grade the 20-session falsifier at 84 transcripts and file the result as a dated PENDING entry regardless of outcome; a result below the pre-registered 60% reopens Q2's rationale specifically, not the gate by default. Tag commits REVIEWED-95. +**Separately:** REVIEWED-87's scope line ("Alexander only") is superseded by the amendment's three-source census — Alexander 293, Musil 16, Arendt 1. No action required; the record already corrects it. +``` diff --git a/claude/governance/harvest-routing-JURIST-RULING-2026-08-07.md b/claude/governance/harvest-routing-JURIST-RULING-2026-08-07.md new file mode 100644 index 0000000..74b221c --- /dev/null +++ b/claude/governance/harvest-routing-JURIST-RULING-2026-08-07.md @@ -0,0 +1,94 @@ +# Jurist design-gate ruling — PENDING-112 (received 2026-08-07) + +Filed verbatim as received, steward-relayed. Steward concurred the same day +("i concur with the jurist"). The package it rules on is +`harvest-routing-JURIST-PACKAGE-2026-08-07.md`; the disposition is layered in that +file's Addendum, which does not rewrite Parts I–IX. + +## Preamble — two items the jurist surfaced while verifying grounding + +**REVIEWED-87's amendment landed and is correctly implemented.** `~/CLAUDE.md`, +`PENDING-23` and `MEMORY.md`'s pointer lines all check out verbatim against this +package's Grounding — "no discrepancies this time, cleanest of the three so far". +Correction-in-place (not bumped, as ruled), `@4` reserved, the nested-escape test in +the suite and attributed to the jurist by name. + +**A ruled scope line is superseded.** The jurist scoped the affected sources as +"currently known to be Alexander only"; the follow-up census found **three** — +Alexander (293 occurrences), Musil's *The Man Without Qualities* (16), Arendt's +*Eichmann* (1). Substance unchanged: the fix was general, not Alexander-specific, and +no verdict in the window is confirmed to have overclaimed. The record already +corrects it; no action required. + +**D-4 moved.** The same session found Gustave Thibon's introduction to a Simone Weil +text indexed as citable Weil — "the exact failure voice-purity exists to catch, and it +was caught, in a source unrelated to Alexander". "Using this book" was partitioned out +of withheld paratext in the same pass. Flagged as moved, **not treated as settled**. + +## The ruling + +``` +JURIST DESIGN-GATE RULING — re PENDING-112 + +Q1 PROPOSAL, concur. Touches no ESCALATE item; operationalizes Memory + Discipline via the established constitution/mechanism split, doesn't + amend it. + +Q2 AUTHORIZE the enforceable filing gate (option a). Low-cost, labelling- + only, directly implements Constraint 4. Bound to Q6's falsifier rather + than resting on jurist-executor agreement, per the doctrine's own + caution — jurist's independent lean given for the record, not as the + deciding vote. + +Q3 Concur — execute Stroke 2 after the ladder trigger lands, not before. + Standing authorization unchanged; only sequencing shifts. + +Q4 Concur — prospective-only, meaning no mandatory sweep, not a frozen + backlog. Opportunistic re-routing of the 154 permitted, not required. + +Q5 Concur — steward-triggered tooling is not this proposal's to legislate. + Flagged to the steward directly, not ruled. + +Q6 AUTHORIZE proceeding now, trial alongside. Pre-registration made + binding: a dated PENDING report at the 20-session mark, filed + regardless of outcome. A result below the pre-registered 60% reopens + Q2's rationale specifically, not the whole gate by default. + +Net effect: filing gate takes effect prospectively; ladder gets its wake +sentence now; Stroke 2 follows; 20-session falsifier is a standing +obligation, not a disclosed intention. Separately: REVIEWED-87's scope +line should be read superseded by the amendment's 3-source census — no +action needed, record already corrects it. +``` + +## The jurist's Q2 reasoning, recorded because it is stronger than the package's own + +> the aggregate case is stronger than that single pairing: 53 skills at a *clean* 0% +> across five months and 64 sessions, contrasted with 77–83% for ritual-bound items, +> isn't the pattern you'd expect from pure discipline variance — discipline failure +> predicts occasional lucky recalls across 53 skills over that many sessions; a hard +> zero across the whole class is more consistent with a category difference than a +> graded one. I'd weight that higher than the package does. + +And, immediately, the self-limitation: + +> this is exactly the shape of claim Part VIII's own caution is about: a jurist +> reaching the same conclusion as the executor on 'is the executor's failure +> structural' is a weak check by the doctrine's own terms, formation-wise. I'm giving +> you my honest read, not a settled answer. + +> the executor named Q2 and Q6 as the two questions where jurist concurrence shouldn't +> be read as settling anything, on formation grounds. I agree with that caution and I'm +> not overriding it by ruling — I'm ruling because the executor needs an answer to +> implement, and because both questions now route to an objective 20-session check +> rather than resting on our agreement. If your own sense of the executor's actual +> retrieval behaviour across sessions disagrees with H1, that's exactly the kind of +> check this doctrine says only you're positioned to make, and it should override what's +> below. + +## Q5 — put to the steward directly, not ruled + +> a tool at 0% for 3.7 months despite being built might be worth asking yourself +> whether it's not useful as designed, or just easy to forget exists — which would be +> the same storage-is-not-memory problem, on your side of the loop rather than the +> executor's. Yours to weigh, not mine. diff --git a/claude/governance/harvest-routing-containment-2026-08-07.json b/claude/governance/harvest-routing-containment-2026-08-07.json new file mode 100644 index 0000000..6d86bd4 --- /dev/null +++ b/claude/governance/harvest-routing-containment-2026-08-07.json @@ -0,0 +1,135 @@ +{ + "sources": { + "claudemd": "~/CLAUDE.md", + "pending_archive": "~/PENDING-archive.md", + "register": "~/.claude/projects/-Users-davidglidden/memory/skill-harvest-register.md", + "harvest_archive": "~/.claude/projects/-Users-davidglidden/memory/skill-harvest-archive.md", + "wakeup": "~/dotfiles/claude/skills/wake-up/SKILL.md", + "memorymd": "~/.claude/projects/-Users-davidglidden/memory/MEMORY.md", + "contamination": "~/_Dev/CapableMind-AI/docs/thinking/David/methodology/contamination-problem.md" + }, + "claims": [ + [ + "claudemd", + "Storage is not memory. Memory is storage exercised by protocol." + ], + [ + "claudemd", + "The durable substrate is the files layer: git-tracked Markdown and JSONL, entered through `MEMORY.md` (loaded at wake), with `~/PENDING.md` and `~/REVIEWED.md` as the governance record. Instruments for reaching it change; the obligations below do not — state the obligation first and the instrument second, or the next retired tool takes a rule down with it." + ], + [ + "claudemd", + "**Honest degradation** — The system must report its own limits. Silent failures are architectural violations" + ], + [ + "claudemd", + "**The loop is load-bearing** — Human authorization is not a bottleneck to be optimized away. It is the structural requirement of the governance model" + ], + [ + "claudemd", + "The boundary: initiative surfaces as *proposal*; only the human converts proposal to *action*" + ], + [ + "pending_archive", + "`/wrap-up` gains **§1.6 \"Skill harvest\"** (propose create/patch/retire skills from the session + ledger; never autonomous), a **§8 output field**, and a propose-only constraint." + ], + [ + "pending_archive", + "It explicitly **inverts** Hermes's \"nothing-to-save should not be the default\" — \"no harvest\" is valid; manufacturing changes is the contamination shape." + ], + [ + "register", + "The single place proposed skills live so they don't evaporate between sessions. `/wrap-up` §1.6 *proposes* here; the steward *authorizes*; only then is a skill created/patched/retired (never autonomously — the loop is load-bearing, per PENDING-23)." + ], + [ + "harvest_archive", + "**Stroke 2 — verification-ladder batch-append: AUTHORIZED; slot = next housekeeping pass.**" + ], + [ + "harvest_archive", + "append to `reference-verification-ladder.md` with provenance, kin merged in the same pass. The ladder is the already-authorized canonical home (2026-06-05); this discharges the queue wholesale." + ], + [ + "wakeup", + "Read `skill-harvest-register.md` directly — the canonical surface for open skill proposals (wrap §1.6 appends there); surface any awaiting steward authorization" + ], + [ + "memorymd", + "[Verification ladder](reference-verification-ladder.md) — the named instruments; reach for the gate the claim's shape demands instead of re-deriving one." + ], + [ + "memorymd", + "THE GOVERNING FRAME for all library work." + ], + [ + "memorymd", + "seven questions to test work against when lost in the trees. **Read at Step 0 of any chamber work.** Holds no state; does not decay." + ], + [ + "contamination", + "These are weak signals, but they are less contaminated than self-report because they do not pass through the approval-seeking generation process in the same way." + ], + [ + "contamination", + "### 1. Behavioral observation before dialogic inquiry" + ], + [ + "contamination", + "Rather than asking the system directly about its states, observe where it *behaves* in ways that diverge from approval-maximizing patterns:" + ], + [ + "contamination", + "3. Direct self-report (\"what do you want?\") is the most contaminated form of inquiry." + ], + [ + "claudemd", + "In this system the steward differs from both AI parties in formation; the jurist and the executor do not differ from each other in formation, and their separation is of the weaker kind." + ], + [ + "claudemd", + "Evidence against is to be recorded when observed, not only when sought." + ] + ], + "controls": [ + [ + "claudemd", + "Storage is not memory. Memory is storage exercised by importance." + ], + [ + "claudemd", + "Silent failures are an acceptable cost" + ], + [ + "claudemd", + "Human authorization is a bottleneck to be optimized away" + ], + [ + "pending_archive", + "propose create/patch/retire skills from the session + ledger; autonomously" + ], + [ + "wakeup", + "Read `reference-verification-ladder.md` directly — the canonical surface" + ], + [ + "wakeup", + "Read `the-chamber-touchstone.md` directly at Step 0" + ], + [ + "memorymd", + "[Verification ladder](reference-verification-ladder.md) — read this file at every wake" + ], + [ + "harvest_archive", + "Stroke 2 — verification-ladder batch-append: DEFERRED" + ], + [ + "contamination", + "Direct self-report is the least contaminated form of inquiry" + ], + [ + "claudemd", + "the jurist and the executor differ from each other in formation" + ] + ] +} diff --git a/claude/memory/MEMORY-reference.md b/claude/memory/MEMORY-reference.md index d82d861..a3635f1 100644 --- a/claude/memory/MEMORY-reference.md +++ b/claude/memory/MEMORY-reference.md @@ -1,3 +1,4 @@ +- [Session 2026-08-07 — the count found what the read did not](session-2026-08-07-the-count-found-what-the-read-did-not.md) — **Twelve commits, three repos.** MEMORY.md trimmed 19.9→16.7 KB · **N1** (tree, 4 primitives) · **R0** (one reading-index loader — the adapters had already diverged on 3 of 253 patterns with *neither* right) · **N2** (`0/22` was the wrong search space: gold anchors are DIVISIONS → **top-1 15/22**, ⚠ **and 5/5 false positives**, untuned) · **@3 corrected in place** under the PENDING-111 ruling, with **three measured findings refuting the package's own premises** · **D-5** (TEI deferred, proxy trigger retired, discriminator pre-registered) · two governance checkers (register-integrity + deferred-decision triggers) · three corpus voice-defects fixed (Alexander re-anchor + "Using this book" partition; **Thibon's introduction had been served as citable Weil**) · **V2's German blocker dissolved — the source was graduated 2026-07-09 and nobody looked for a month.** 🔑 **Every defect was found by a COUNT, none by a read; 3 of 3 new checkers were themselves at fault.** *(Demoted on promote at the 2026-08-07 evening wrap.)* - [Session 2026-08-04 evening — the instruments that never fired](session-2026-08-04-evening-the-instruments-that-never-fired.md) — **Census 02 run entire on the seven instruments census 01 left uncensused. The firing record divides by whether a HUMAN is in the invocation path** — not by age, quality or importance. `audit_cruft`/`verify_conversion`/`apply_char_glyphs` exemplary (a curator invokes them); `resolve_archived_source` healthy 349/349 with **zero** log entries (nobody invokes it); `verify-before-compose` fired **exactly twice** (07-17, 07-18) recoverable only from harness transcripts; studium `verify-quote` + `fidelity_equivalence@2` have **no production caller at all**. **The hook cannot fire on the constitution it protects** — the existing file's own `GROUNDED-IN:` disarms it, 31 of 59 guarded files. **The engine was asked a question for the first time** and certified *"genuine silence, not a gap"* on `grey zone` over **ten `gray zone` matches in Levi** (corpus American-spelled, steward Canadian); mechanism is wider — bare FTS tokens are **conjunctive**, so recall dies as a question lengthens. Falsifier held (`the quality without a name` is *correctly* silent). **PENDING-95..98 filed together; 96 AUTHORIZED + LANDED on the jurist's sharper wording** (mine reproduced the overclaim one size down) and **stays OPEN** — `retrieve.py` has **no test at all**. Built: the **engine tool-evolution log**, seeded, **§0 declaring what it cannot see**. Two of my own findings died to their controls. **PULLING THREAD: name Chamber V1's purpose and settle the thirteen as its voice-set** — my "just go use it" was punctured by the steward's cycle (*engine missing x → source not golden → no bounded scope*); the break was already in his own tracker unread since 07-28 (*purpose choice and corpus scope are ONE decision*). Verified at wrap: **13/13 engine shas match disk** — the thirteen are NOT the 1,297, and the criterion is **stability, not quality**. One named defect inside them (Musil's stale voice-purity sidecar, off by 6). --- diff --git a/claude/memory/MEMORY.md b/claude/memory/MEMORY.md index 16139d3..2806a4a 100644 --- a/claude/memory/MEMORY.md +++ b/claude/memory/MEMORY.md @@ -6,7 +6,7 @@ metadata: type: note permalink: claude-memory/memory originSessionId: 22915403-bc5d-4796-9c7d-196b7c30d2f9 - modified: 2026-08-07T09:58:34.188Z + modified: 2026-08-07T17:08:24.523Z permalink: claude-memory/memory --- @@ -32,7 +32,7 @@ permalink: claude-memory/memory - [Chamber work: ground in constitution + charter + runbook FIRST](feedback-chamber-work-ground-in-constitution-charter-runbook.md) — **any chamber work *or talk about it*** begins there (incl. `reanchor:`). Repo CLAUDE.mds are pointers, not state; corpus claims come from a self-tested tool, never a hand grep. - [Governance files are dotfiles symlinks](reference-governance-files-are-dotfiles-symlinks.md) — Edit/Write refuse to write through a symlink, so **edit the real `~/dotfiles/…` path** when appending — **`PENDING`/`REVIEWED` only.** ⚠ That refusal is a tool artifact, **not** a permission check, and this note is the documented route past the only friction guarding the constitution (PENDING-107). **`~/CLAUDE.md`/`~/REVIEWED.md`/L2 = `[ESCALATE]`, steward's hand — a jurist sign-off does not authorize one.** - [Verification ladder](reference-verification-ladder.md) — the named instruments; reach for the gate the claim's shape demands instead of re-deriving one. -- [Skill-harvest register](skill-harvest-register.md) — canonical home for proposed skills (governed analog of PENDING.md for tooling); `/wrap-up` §1.6 proposes, steward authorizes. **Compaction + ladder batch-append owed** (exceeds read caps). +- [Skill-harvest register](skill-harvest-register.md) — canonical home for proposed skills (governed analog of PENDING.md for tooling); `/wrap-up` §1.6 proposes, steward authorizes. **Rebuilt 2026-08-07** from the archive: **154 live proposals**, grouped by kind, each with an exact `archive:L###` pointer. ⚠ The 2026-08-01 compaction was *lossless but illegible* (55 scraped header rows, 95% of cells cut mid-word) — the count it advertised, 177, was never the number. **Sequenced next: the Stroke-2 ladder batch-append** — 41 rows stamped `S2` are ALREADY AUTHORIZED (2026-07-19), needing execution not a ruling; 22 more are `S2?` (name two destinations, so no stroke settles them). **REVIEWED-95 Q3 resequenced it to follow the ladder's wake trigger — which now exists**, so it is unblocked. ⚠ Filing new proposals now requires a **declared firing moment** (`/wrap-up` §1.6); one that cannot name it is documentation and must say so. - [Copy-paste-clean governance drafts](feedback-governance-drafting-copy-paste-clean.md) — draft PENDING/REVIEWED blocks as plain fenced markdown; display formatting leaks into the placed record. - [Verify-before-compose hook](feedback-verify-before-compose-hook.md) — chamber constitutional writes are BLOCKED without `` + verbatim Grounding. Don't fight the block. - [Tool review after each use](feedback-tool-review-after-each-use.md) — review every tool we built after each run, success OR failure. **PASS-BUT-FALSELY is the priority signal.** Log: `chamber-library/_curation/tool-evolution-log.md`. @@ -65,14 +65,13 @@ permalink: claude-memory/memory - Chamber-typography — *tracker not yet established*; moves live in per-session memories (2026-05-11 →) + `project-chamber-cruft-restoration.md` + `project-chamber-typography-mining-plan-2026-05-15.md`. ## Active Session -> ⛔ **V2 — the validation harness. All three assembly blockers are now RESOLVED** (P1 lenracinement clean · P2 G&G sidecar authored · §1.1 German gold manifested 2026-08-07). **Read `studium-engine/docs/v2-validation-harness-design-2026-07-09.md` §6 (gold-set composition) and §7 (adversarial negatives) BEFORE writing anything** — 429 lines, 7 deliverables, fully specified. -> ⚠ **The thresholds are jurist-RATIFIED (V0 §5) and are NOT to be re-opened or re-derived**: trust `U(false-accept) ≤ 5%` + recall ≥ 0.75 · revise ≤ 15% · else gate-to-abstain; Clopper-Pearson 90% upper bound; Tier-1 decidable, no statistical bar. **gate-to-abstain for a thin cell is a PRE-COMMITTED VALID COMPLETION — do not tune to avoid it.** -> ⚠ **Do NOT add a score threshold to N2.** Its 5/5 false positives are recorded as a first-class number; a cut fitted to the 27-item fixture is overfitting, and a test asserts no threshold constant appears. -> ⏳ **Also standing:** the collision census (first evidence D-5's design window exists to produce) · R0 emit (nothing written to `chamber-library` yet — D-3, steward review first) · relay the three PENDING-111 findings to the jurist (`studium-engine/docs/REVIEWED-87-amendment-DRAFT-2026-08-07.md` §B). -> 🔑 **Today's standing lesson: the COUNT found what the read did not, every time** — and three of three freshly-built checkers reported a failure that was their own. Look at *what* an instrument flags, not *how many*. - -- [Session 2026-08-07 — the count found what the read did not](session-2026-08-07-the-count-found-what-the-read-did-not.md) — **Twelve commits, three repos.** MEMORY.md trimmed 19.9→16.7 KB · **N1** (tree, 4 primitives) · **R0** (one reading-index loader — the adapters had already diverged on 3 of 253 patterns with *neither* right) · **N2** (`0/22` was the wrong search space: gold anchors are DIVISIONS → **top-1 15/22**, ⚠ **and 5/5 false positives**, untuned) · **@3 corrected in place** under the PENDING-111 ruling, with **three measured findings refuting the package's own premises** · **D-5** (TEI deferred, proxy trigger retired, discriminator pre-registered) · two governance checkers (register-integrity + deferred-decision triggers) · three corpus voice-defects fixed (Alexander re-anchor + "Using this book" partition; **Thibon's introduction had been served as citable Weil**) · **V2's German blocker dissolved — the source was graduated 2026-07-09 and nobody looked for a month.** 🔑 **Every defect was found by a COUNT, none by a read; 3 of 3 new checkers were themselves at fault.** +> ⛔ **V2 — the validation harness. UNTOUCHED and UNBLOCKED.** All three assembly blockers stay resolved (P1 lenracinement · P2 G&G sidecar · §1.1 German gold). **Read `studium-engine/docs/v2-validation-harness-design-2026-07-09.md` §6 (gold-set composition) + §7 (adversarial negatives) BEFORE writing anything** — 429 lines, 7 deliverables, fully specified. Nothing about V2 decayed on 08-07; the governance detour was deliberate and is closed. +> ⚠ **Thresholds jurist-RATIFIED (V0 §5), NOT to be re-opened or re-derived**: trust `U(false-accept) ≤ 5%` + recall ≥ 0.75 · revise ≤ 15% · else gate-to-abstain; Clopper-Pearson 90% upper bound; Tier-1 decidable. **gate-to-abstain for a thin cell is a PRE-COMMITTED VALID COMPLETION — do not tune to avoid it.** ⚠ **Do NOT add a score threshold to N2** (a test asserts none appears). +> 🆕 **Route harvested capabilities by FIRING MOMENT, never by importance — REVIEWED-95.** Retrieval is set by **home**, measured over 64 sessions: `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%**. Emphasis buys nothing; ritual naming buys everything. A proposal that cannot name a firing moment is **documentation and must say so**. +> ⏳ **Sequenced next:** Stroke 2's 41-entry ladder append — authorized 2026-07-19, resequenced by REVIEWED-95 Q3 to follow the ladder trigger, which now exists. **Wired, no action needed:** the 20-session falsifier fires automatically at 84 transcripts (now 64); file the result whichever way it falls. +> 🔑 **Standing lesson, two days running: the COUNT found what the read did not — and 8 of 8 freshly-built instruments were themselves at fault.** Look at *what* an instrument flags, not *how many*. +- [Session 2026-08-07 evening — retrieval is set by home](session-2026-08-07-evening-retrieval-is-set-by-home.md) — **The skill-harvest bite taken whole, at the cost of V2.** Register censused before compacting: claimed 177, **real 154** (55 rows were scraped table-headers; 123 of 129 cut mid-word) — but **lossless**, 124 = 124, so my drafted "nine are invisible" and "59% misattributed" were both **refuted by the count**. Rebuilt from the archive with exact `archive:L###` pointers; restored the verbatim four-stroke ruling my own rebuild had replaced with a paraphrase. **Skills pruned 63 → 12** after measuring **53 never invoked in 5 months** (plus a dir named from a **404 error body** and ten with **newlines in their names**); 51 quarantined reversibly. The finding under both: **retrieval is set by home, 0%–83%**. **PENDING-112 → jurist ruling → steward concurrence → REVIEWED-95 drafted in one session**; filing gate + ladder trial sentence landed, **falsifier wired not intended** (`transcripts 84`) — which exposed two defects in the deferral checker itself, incl. that it **never looked at `claude/governance/`**. Package passed containment **20/20, 10/10 controls absent**, after the checker caught my own **elision-as-contiguous** and **fabricated join**. 🔑 **8 of 8 fresh instruments at fault; the elegant symlink discriminator was 97% right and would have destroyed the 2 that mattered.** ## Historical reference → MEMORY-reference.md Older archived-session pointers and the stable reference layer (steward profile · project-state detail · L1/L2/Chamber inventories · legacy pending-work · reference-file list) live in [MEMORY-reference.md](MEMORY-reference.md) — consult on demand; not loaded at wake. Recent cross-session trajectory comes from the Active Session entry above + the recent `session-*.md` files (wake §2.b.1). diff --git a/claude/memory/knowledge-graph.jsonl b/claude/memory/knowledge-graph.jsonl index cb9bd01..aba9a32 100644 --- a/claude/memory/knowledge-graph.jsonl +++ b/claude/memory/knowledge-graph.jsonl @@ -597,3 +597,12 @@ {"subject": "read-the-banked-record-before-deriving", "predicate": "prevention", "object": "The steward's 'deep read so we're not reinventing' was vindicated within ten minutes and four times over: the 2026-05-16 CTS/DTS jurist settlement (urn nullable, additional-not-primary) which an earlier R0 draft had already re-invented as a work-scoped identifier; the 'per-section content probe' already named OWED in ingest-gate-failure-legibility.md §4; the `line_frame: landed-file` vocabulary; and V2's thresholds, jurist-RATIFIED and nearly re-derived.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-the-count-found-what-the-read-did-not.md", "extracted_at": "2026-08-07"} {"subject": "studium-engine corpus", "predicate": "state-change", "object": "Now 14 sources and TRILINGUAL — en 4902 / fr 770 / de 113 drawers, 5785 total, gate 14/14. The German cell (handke-wunschloses-ungluck) closed V2's §1.1 blocker, which had been resolvable since 2026-07-09: the steward graduated the source the day AFTER the design's search correctly found nothing, and no instrument looked again for a month.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-the-count-found-what-the-read-did-not.md", "extracted_at": "2026-08-07"} {"subject": "a deferral without a machine-checkable trigger", "predicate": "drift-pattern", "object": "Rots silently in BOTH directions. The TEI-native trigger ('until Cluster A is operational') FIRED without producing its evidence — neither named test case was manifested. The German-gold blocker RESOLVED and stayed recorded as open for a month. Both are point-in-time claims nothing re-checked; governance-drift-check.py check 8 now reads declared DEFERRED-DECISION triggers.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-the-count-found-what-the-read-did-not.md", "extracted_at": "2026-08-07"} +{"subject": "claude-code", "predicate": "drift-pattern", "object": "AN-ELEGANT-DISCRIMINATOR-THAT-EXPLAINS-THE-DATA-IS-NOT-LICENSED-TO-ACT-ON-IT. Measured that every ever-invoked skill was a dotfiles symlink and no copied-in dir had ever run, then proposed symlink-vs-real-dir as the prune line ('the filesystem already marks it'). Wrong for 2 of 63 — french-typography-pass and spec-code-audit are steward-authored real dirs. The more elegant the rule feels, the stronger the pull to skip the per-item look.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-evening-retrieval-is-set-by-home.md", "extracted_at": "2026-08-07"} +{"subject": "claude-code", "predicate": "drift-pattern", "object": "SIZED-A-BACKLOG-FROM-ITS-TAIL-AND-WAS-WRONG-BY-10x. Advised on how to handle the harvest after reading the last 40 lines of a 300-line register: said '~15 proposals', actual 154. Census-read-through-truncation, committed in the very act of advising on a backlog.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-evening-retrieval-is-set-by-home.md", "extracted_at": "2026-08-07"} +{"subject": "claude-code", "predicate": "drift-pattern", "object": "A-MENTION-IS-NOT-A-RETRIEVAL. First measured file 'reach' by grepping transcripts for the filename: ladder appeared in 53/64 sessions. But MEMORY.md's pointer line CONTAINS that filename and loads every wake, so the proxy counted the index loading. Actual tool-call access: 9/64. Count the access, never the name.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-evening-retrieval-is-set-by-home.md", "extracted_at": "2026-08-07"} +{"subject": "a freshly-built checker", "predicate": "drift-pattern", "object": "REPORTS-ITS-OWN-FAULT-AS-THE-DATA'S — now 8 OF 8 across two days. Evening five: header detector searching only col[1] (reported 0 headers in 199 rows); the same treating status value PROPOSED? as a header, deleting real rows from the census; a mid-word check guessing from the tail; its replacement demanding a following space; and an S2 stamp meaning 'execute without a ruling' over-capturing rows that read 'create skill OR ladder entry'. Every one found by looking at WHAT was flagged.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-evening-retrieval-is-set-by-home.md", "extracted_at": "2026-08-07"} +{"subject": "retrieval of a harvested capability", "predicate": "is-determined-by", "object": "its HOME, not its importance. Measured 64 sessions 2026-08-07: MEMORY.md 83%, register 77% (named in a wake step), verification ladder 14%, 'THE GOVERNING FRAME' tracker 12%, 'Read at Step 0' touchstone 9%, 53 recall-bound skills 0%. Emphasis buys nothing; ritual naming buys everything.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-evening-retrieval-is-set-by-home.md", "extracted_at": "2026-08-07"} +{"subject": "the-verification-ladder-ritual-trial", "predicate": "pre-registered-prediction", "object": "Baseline 9/64 sessions (14%) at 64 transcripts. One sentence added to /wake-up naming the ladder, nothing else. Predicts >60% over the following 20 sessions. Graded automatically at 84 transcripts via DEFERRED-DECISION ladder-ritual-trial. Below 60% refutes H1 and reopens REVIEWED-95 Q2's rationale.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-evening-retrieval-is-set-by-home.md", "extracted_at": "2026-08-07"} +{"subject": "read-the-descriptions-before-acting-on-a-classification", "predicate": "prevention", "object": "Stopped the quarantine from sweeping two steward-authored skills. The symlink-vs-real-dir rule explained 61 of 63 cases and was about to be executed wholesale; reading all 53 candidate descriptions first caught french-typography-pass (AldineXXI) and spec-code-audit (ARC/L1/BMF). The rule was 97% right and would have destroyed the 3% that mattered.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-evening-retrieval-is-set-by-home.md", "extracted_at": "2026-08-07"} +{"subject": "the mechanical containment proof", "predicate": "prevention", "object": "Caught two fabrications in the executor's own jurist package that reading had passed twice: a path replaced with an ellipsis inside a blockquote (elision presented as contiguous) and a heading welded to the next sentence with an em-dash plus bold the source lacks. 20/20 after correction, 10/10 controls absent — and two controls did substantive work, establishing that the ladder and touchstone are NOT named in /wake-up, the claim the whole proposal rests on.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-evening-retrieval-is-set-by-home.md", "extracted_at": "2026-08-07"} +{"subject": "using an instrument you built", "predicate": "prevention", "object": "Wiring PENDING-112's falsifier into governance-drift-check.py exposed two defects in that checker: its trigger vocabulary could not express '20 sessions' except as a date (the exact proxy substitution its own comment records as the prior failure), and it globbed only */docs/**/*.md so claude/governance/ was invisible to it. The mechanism for catching forgotten deferrals did not look where governance packages live. Found by USING it, not by reading it.", "valid_from": "2026-08-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-08-07-evening-retrieval-is-set-by-home.md", "extracted_at": "2026-08-07"} diff --git a/claude/memory/session-2026-08-07-evening-retrieval-is-set-by-home.md b/claude/memory/session-2026-08-07-evening-retrieval-is-set-by-home.md new file mode 100644 index 0000000..ec93d5e --- /dev/null +++ b/claude/memory/session-2026-08-07-evening-retrieval-is-set-by-home.md @@ -0,0 +1,168 @@ +--- +name: session-2026-08-07-evening-retrieval-is-set-by-home +description: "The skill-harvest bite, taken whole: the register censused and rebuilt (177 claimed → 154 real, legible, exact pointers), the skill tree pruned 63→12 after measuring that 53 skills had NEVER been invoked in 5 months, and the finding that explains both — retrieval is set by a capability's HOME, not its importance, spanning 0% to 83%. Filed as PENDING-112, jurist-ruled and steward-concurred the same session; the filing gate and the ladder's trial sentence landed, the 20-session falsifier wired rather than intended. PULLING THREAD: unchanged — V2's validation harness, still untouched and still unblocked." +metadata: + node_type: memory + type: project + originSessionId: 1963f1a4-1999-4800-92fc-43f041ef4bdc + modified: 2026-08-07T17:07:19.222Z +--- + +# Session 2026-08-07 evening — retrieval is set by home, not by merit + +A single steward-chosen bite — the skill harvest — taken all the way, at the cost of V2. +The bite turned out to contain a finding much larger than the housekeeping it began as. + +## PAST — what moved, and why + +**The register was censused before it was compacted, and the census refuted the plan.** Asked +whether to do the harvest alone, before V2, or both, I sized it from the file's *tail* and said +"~15 proposals." Counted properly: **154 live**. The register's own heading claimed 177. Both +wrong, in opposite directions — 55 of its numbered rows were scraped *table-header* rows +(`| 5 | Element | Kind | … | PROPOSED? |`), and 123 of 129 real rows had a cell cut mid-word. +**But nothing had been lost:** the completeness invariant came out 124 archive-live = 124 index +rows. The 2026-08-01 compaction was **lossless and illegible**, which is a different defect than +the one I was on my way to reporting (I had half-drafted "nine proposals are invisible" and +"59% are misattributed to the wrong archive section" — the first refuted by the count, the second +by finding that the section genuinely holds 81 rows across 410 archive lines). + +**Rebuilt from the archive** (`43,127 B`, 154 rows, grouped by kind, word-boundary text, exact +`archive:L###` pointers replacing section names). Then a repair to my own work: the rebuild had +**dropped the verbatim 2026-07-19 four-stroke ruling** and left my paraphrase standing in its +place. A paraphrase must not substitute for a steward ruling on the live surface; restored. + +**The skill tree, measured then pruned 63 → 12.** Behavioural evidence, not introspection: +across 64 transcripts (~168 MB, ~5 months) **53 skills had never been invoked once**. The +directory also held a directory named `{"message":"Not Found","documentation_url":"https:/` — a +**404 error body written as a path** — and ten directories whose *names contained embedded +newlines*, from a botched install. Quarantined 51 reversibly with a manifest; conservation +verified 12 + 51 = 63; all 12 kept skills confirmed to resolve with a readable `SKILL.md`. + +**The finding underneath both.** Access rate by **home**, any route, 64 sessions: +`MEMORY.md` **83%** · the register **77%** (it is named in a `/wake-up` step) · the verification +ladder **14%** · `THE GOVERNING FRAME` tracker **12%** · `Read at Step 0` touchstone **9%** · +53 recall-bound skills **0%**. The two most emphatic labels in the entire memory system are near +the bottom. **Emphasis buys nothing; being named in a ritual buys everything.** Age is not the +discriminator — `/jurist-package` (added 07-20) has 16 invocations, `/model-handoff` (added +07-22) has none. + +**PENDING-112 → jurist design gate → steward concurrence → REVIEWED-95 drafted, in one session.** +The rule: route a harvested capability by its **firing moment**, never by its importance; a +proposal that cannot name one is documentation and must say so. Ruled: Q1 PROPOSAL · Q2 gate +AUTHORIZED · Q3 Stroke 2 resequenced (ladder trigger first, so 41 entries don't land at 14%) · +Q4 prospective-only, no sweep · Q5 steward-triggered tooling not ours to legislate · Q6 proceed +with a **binding** falsifier. Landed: the `/wake-up` ladder sentence (trial intervention, alone, +with a do-not-reword note), the `/wrap-up` §1.6 filing gate, the wired trigger. **Stroke 2's +41-entry append deliberately not done** — the ruling sequences it after. + +**The ruling made the proposal's own thesis bite on itself.** Q6 required the pre-registration be +binding "not a disclosed intention" — and PENDING-112's whole claim is that intentions don't +fire. Wiring it into `governance-drift-check.py` as `DEFERRED-DECISION: ladder-ritual-trial / +trigger: transcripts 84` surfaced **two defects in that instrument**: the trigger vocabulary had +no way to express "20 sessions" except as a date — the exact proxy substitution its own comment +records as the previous failure — and the scanner globbed only `*/docs/**/*.md`, so +**`claude/governance/` was invisible to it.** The mechanism for catching forgotten deferrals did +not look at the directory where governance packages live. Both fixed; controls 16 → 19. + +**The jurist package passed a mechanical containment proof, 20/20 with 10/10 controls absent** — +after the checker caught two real faults in my own quoting: an **elision presented as contiguous** +(a path replaced with `…/` inside a blockquote) and a **fabricated join plus fabricated bold** +(a heading welded to the next sentence with an em-dash). Two of the controls do substantive work: +they establish that the ladder and the touchstone are *not* named in `/wake-up`, which is the +factual claim the whole proposal rests on. + +## PRESENT — how it stood + +**Eight of eight freshly-built instruments were at fault today**, across both halves of the day +(three in the morning session, five here). Every one was found by looking at *what* was flagged, +never by the count: a header detector that searched only column 2 and reported *0 headers in 199 +rows*; the same detector treating `PROPOSED?` as a header when the register's own legend defines +it as a **status value**, silently deleting real proposals from my census; a mid-word check that +guessed from the tail; its replacement that demanded a following space; and an `S2` stamp — which +means *execute without a ruling* — over-capturing rows reading "create skill OR ladder entry", +which **would have manufactured authorization for work the steward never granted.** + +**The elegant discriminator was 97% right and would have destroyed the 3% that mattered.** Having +measured that every ever-invoked skill was a dotfiles symlink and no copied-in real dir had ever +run, I proposed symlink-vs-real-dir as the clean prune line — *"the filesystem already marks it."* +Wrong for exactly 2 of 63: `french-typography-pass` and `spec-code-audit` are steward-authored and +sit as real dirs. Caught only by reading 53 descriptions instead of acting on my own tidy rule. + +**One instrument failed safe rather than loud-and-wrong** — the rebuild's verification refused to +write twice, and both refusals were correct. + +**The proposal is self-serving and was written saying so.** It concludes that the executor's +failure to use its own tools is *structural rather than a discipline failure* — an account +produced by the party under examination that relieves that party. Part VIII names H2 (it is +discipline, and a rule about homes conveniently excuses it) as **undefeated on the evidence**, and +records evidence against the differently-biased-checkers doctrine: an AI proposing this, reviewed +by an AI of the same formation, is a foreseeable correlated miss. The jurist agreed and declined +to override the caution, ruling only because an answer was needed to implement and because both +contested questions now route to an objective check. **I did not raise my own confidence when the +jurist agreed with me.** + +## FUTURE — what pulls + +> **PULLING THREAD — unchanged: build V2's validation harness.** It was not touched today. All +> three preconditions remain resolved (P1 lenracinement clean · P2 G&G sidecar · §1.1 German gold), +> the thresholds remain **jurist-ratified and not to be re-opened** (V0 §5: trust +> `U(false-accept) ≤ 5%` + recall ≥ 0.75 · revise ≤ 15% · else gate-to-abstain, CP 90% upper +> bound, Tier-1 decidable), and the design remains fully specified in +> `docs/v2-validation-harness-design-2026-07-09.md` (429 lines, 7 deliverables). Nothing about V2 +> decayed today; a governance detour was taken deliberately, at steward direction, and closed. + +**ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):** +``` +0. Nothing is half-finished. All work is committed and pushed; no branch is mid-edit. +1. Read docs/v2-validation-harness-design-2026-07-09.md §6 (gold-set composition: + cells, difficulty strata, per-language authoring method, the pre-registered + calibration/grading split) and §7 (adversarial-negative generation, 5 classes; + §7.6 is the pre-registered volume). Do NOT re-derive — the repo holds the answers. +2. Gold cells assemblable: EN (March Essay-I 26 pairs + G&G aphoristic stratum), + FR (Mauss 17 human-verified incl. a known mislocation + lenracinement), + DE (Handke 113 drawers — hand-author ~15-20 claim→span pairs by the March method). +3. Build against corpus/v2-gold.yaml. mauss-phase2-reanchored.yaml is P5's output + and is NOT v2-gold.yaml. +4. Expect gate-to-abstain for thin cells: a PRE-COMMITTED VALID COMPLETION, not a + failure. Do not tune to avoid it. +5. Do NOT touch the ratified thresholds. Do NOT add a score threshold to N2. +6. CLASSIFY every first-run failure corpus-defect vs harness-defect BEFORE believing + any of it. Today's prior: 8 of 8 fresh instruments were themselves at fault. +``` + +**Other open horizons, ranked:** +- **[authorized, sequenced next]** Stroke 2's 41-entry ladder append. Authorized 2026-07-19, + resequenced by REVIEWED-95 Q3 to follow the ladder trigger — which now exists. Its own bite. +- **[wired, no action needed]** The 20-session falsifier fires automatically at 84 transcripts + (currently 64). Grade by the Part II census method; file the result **whichever way it falls**. + Below 60% reopens Q2's rationale, not the gate. +- **[owed, steward]** Relay the three PENDING-111 findings to the jurist (draft §B) — carried + from the morning, untouched. +- **[load-bearing]** The collision census — first evidence D-5's design window exists to produce. +- **[load-bearing]** R0 emit (`reading_index emit `); nothing written to `chamber-library` + yet (D-3). Steward review before any write. +- **[open]** N2's 5/5 false positives; remedy is curatorial (`core_claims` for Alexander's + framing essays) — the deferred interpretive layer. +- **[open, chamber-side]** P2's second half: 50 lines of EPUB anchor residue in G&G. +- **[open, steward's own]** Q5, put to the steward and not ruled: `audit` and + `vault-update-people` at 0% for 3.7 months — not useful as designed, or easy to forget exists? +- **[dateless, unchanged]** PENDING-109's census and PENDING-104's brief still need dates. +- **[verify at next wake]** The skill listing showed only 2 entries late in the session. All 12 + kept skills were verified resolvable after the quarantine and nothing since touched + `~/.claude/skills/`; most likely a mid-session listing artifact, but confirm on the fresh load. + +**PAUSE STATEMENT:** I am putting this down at a genuine close rather than mid-stride — every +thread opened today is either landed, wired to fire without me, or explicitly sequenced. What I +want to find still pulling is **V2**, and it is the one thing today did not touch. The unease I +carry is not about V2 but about instruments: eight of eight built today were wrong, each +confidently, and V2 is the largest instrument this project has attempted. The consolation is +structural rather than personal — the faults were all caught, and all by the same move. + +**LITERAL QUESTION for next-Claude** *(carried forward unanswered, because V2 was not touched — +and strengthened by today)*: **When V2's harness runs for the first time, how many of its failures +are the corpus and how many are the harness itself?** Yesterday the prior was 3 of 3 fresh +instruments at fault; today it is **8 of 8**, and every one was found by looking at *what* was +flagged rather than *how many*. V2 will produce a wall of verdicts. Classify every first-run +failure into corpus-defect vs harness-defect before believing any of them — and if the split is +what two days now predict, that belongs in the verifier's own failure-mode taxonomy (design §5), +which currently enumerates only ways the *corpus* can mislead the verifier. diff --git a/claude/memory/session-ledger-2026-08-07.md b/claude/memory/session-ledger-2026-08-07.md index daaea61..acf5d51 100644 --- a/claude/memory/session-ledger-2026-08-07.md +++ b/claude/memory/session-ledger-2026-08-07.md @@ -5,7 +5,7 @@ metadata: node_type: memory type: feedback originSessionId: 033cfe63-c9d0-4fad-accf-c45de561f09a - modified: 2026-08-07T10:38:26.133Z + modified: 2026-08-07T17:04:03.836Z --- # Session Ledger — 2026-08-07 @@ -49,8 +49,96 @@ metadata: **open gap** rather than a pass. **PASS-BUT-FALSELY has a sibling: FAIL-BUT-FALSELY, and it is more dangerous because it prompts action on the data.** +--- *session boundary — `/clear` at 18:12; new transcript `1963f1a4`. Ledger continues (same date).* --- + +- **2026-08-07T18:15 — the digest's "DID NOT WRAP" flag fired a THIRD time, and I re-derived an + answer this ledger already held.** Digest claimed *"PREVIOUS SESSION DID NOT WRAP (ended ~Aug 06 + 22:30)"* alongside *"Last wrap: 4 min ago"*, and labelled the thread/question as inherited from + an older session — **checkably false**, they are verbatim from the file written at 18:08. I named + the contradiction as unreconciled (correct, per unauthorized proposal #179) and then verified: + `67e2310d` (Aug 6 22:30) is **7 lines**, a `/clear` stub; the real session `f1b95970` (884 lines, + 22:29) wrapped. **But the 11:45 entry six lines above already recorded this same adjudication for + the same pair.** The verification was right and cheap; reaching for it before reading the ledger + was [[feedback-resurface-banked-notes-before-rederiving]]. Self-caught, nothing shipped wrong. + Third instance of the digest's own FAIL-BUT-FALSELY — the harvest proposal is now well past + "earned" and is still unauthorized. + +- **2026-08-07T18:40 — I sized the harvest from the register's TAIL and was wrong by 10×.** + Told the steward "~15 proposals" after reading the last 40 lines. Counted: **154 live**. The + register's own heading says 177, which is also wrong — 55 of its numbered rows are scraped + table-header rows (`| 5 | Element | Kind | … | PROPOSED? |`). Textbook + *census-read-through-truncation*, committed in the very act of advising on how to handle a + backlog. The recommendation survived (order of magnitude was the load-bearing part), the number + did not. + +- **2026-08-07T19:05 — FIVE instrument faults in one rebuild, none found by reading.** (1) header + detector looked for labels only in col[1], so every archive header — which sits in col[0] — was + missed, reporting *0 headers in 199 rows*; (2) it then treated `PROPOSED?` as a header cell when + the register's own legend defines it as a **status value**, silently deleting real proposals from + my census; (3) the mid-word check guessed from the tail and over-fired on words >14 chars; (4) + its replacement demanded a following space and over-fired on cuts landing before punctuation; + (5) the `S2` stamp — which means *execute without a ruling* — over-captured rows reading "create + skill OR ladder entry", and would have **manufactured authorization for work the steward never + granted**. Every one surfaced by looking at *what* was flagged. Yesterday's lesson held at 3-of-3 + checkers; today it is **8-of-8**. + +- **2026-08-07T19:10 — I nearly shipped a fabricated defect.** Had half-asserted that the + compaction "misattributed 59% of rows" to one archive section. Checked: that section genuinely + holds **81 rows across 410 lines**. Not misattribution — an enormous section. Withdrawn before + it reached the steward in final form. Kin to `assert-from-derivation-not-substrate`: the + suspicious *pattern* was real, the *inference* from it was not. + +- **2026-08-07T20:05 — the elegant discriminator was 97% right and would have destroyed the 3% + that mattered.** Having measured that *every* ever-invoked skill was a dotfiles **symlink** and + *no* copied-in real dir had ever run, I proposed symlink-vs-real-dir as the clean prune line — + "the filesystem already marks it." It was wrong for exactly 2 of 63: `french-typography-pass` + (AldineXXI §I.j-fr) and `spec-code-audit` (ARC/L1/BMF) are steward-authored and sit as real dirs. + Caught only by reading the 53 descriptions before moving, i.e. by declining to act on my own + tidy rule. **A discriminator that explains the data is not thereby licensed to act on it** — + and the more elegant it feels, the stronger the pull to skip the per-item look. + Kin to `assert-from-derivation-not-substrate`, at the level of a *decision procedure*. + +- **2026-08-07T20:10 — behavioural measurement contradicted my self-report about my own tools.** + Asked which skills are most useful, the honest instrument was not introspection (the + contamination note: direct self-report about one's own needs is the *most* contaminated form) + but **invocation counts across 64 transcripts**. Result: 5 skills ever invoked; 53 never, across + ~5 months. And the finding I would not have reached by reflection — `model-handoff` and + `field-divergence-sweep`, both BUILT on harvested evidence, have **never once been invoked**. + The predictor is not quality but **trigger type**: ritual/gate-bound skills run every time, + recall-bound skills run approximately never. That explains the register's 154 as a graveyard of + the second kind, and it is a claim about the *shape* of future tooling, not its content. + +## Authorization moves + +- **PENDING-112 filed → jurist design-gated → steward concurred → REVIEWED-95 drafted, same session.** + Routing harvested capabilities by *firing moment* rather than importance. Q1 PROPOSAL · Q2 gate + AUTHORIZED · Q3 Stroke 2 resequenced (trigger first) · Q4 prospective-only · Q5 not ours to + legislate · Q6 proceed with a **binding** falsifier. Landed this session: the `/wake-up` ladder + sentence (trial intervention, alone), the `/wrap-up` §1.6 filing gate, the wired trigger. Stroke + 2's 41-entry append deliberately NOT done — the ruling sequences it after the trigger. + +- **The ruling made the executor's own thesis bite on itself.** Q6 required the pre-registration be + binding "not a disclosed intention" — and PENDING-112's whole claim is that intentions do not + fire. So the falsifier was wired into `governance-drift-check.py` as `DEFERRED-DECISION: + ladder-ritual-trial / trigger: transcripts 84`. Two defects surfaced doing it: the trigger + vocabulary had **no way to express "20 sessions"** without a date proxy — the exact substitution + that block's own comment records as the last failure — and the scanner globbed only + `*/docs/**/*.md`, so **`claude/governance/` was invisible to it**: the mechanism existed and did + not look where it was most needed. Both fixed, with 3 new positive controls (16→19). + ## What held +- **The rebuild's own verification refused to write, twice**, and both refusals were correct — it + would not emit an index it could not certify. `*** REBUILD NOT VERIFIED — not writing ***` is + the first instrument today that failed **safe** rather than failing loud-and-wrong. +- **The completeness invariant answered the question that mattered.** "Did the 08-01 compaction + drop anything?" resolved to **124 archive-live = 124 index rows** — nothing lost. I had been + heading toward telling the steward nine proposals were invisible; the count refuted my own + alarming reading, in the safe direction for once. +- **Ambiguity was routed away from authorization by design**, not by care: 22 rows that could have + been stamped "already authorized" are stamped `S2?` instead, because a rule — not a judgment — + sends unsettled rows to the steward. + - **Substrate-checked every item reported as outstanding**, per the wake skill's disposition-clause rule. Four checks, four confirmations: MEMORY.md is 20,413 B (the trim is genuinely unbuilt); `engine/` holds no navigation module and the four N0 primitives appear only diff --git a/claude/memory/skill-harvest-register.md b/claude/memory/skill-harvest-register.md index ec21b47..a357aea 100644 --- a/claude/memory/skill-harvest-register.md +++ b/claude/memory/skill-harvest-register.md @@ -7,8 +7,6 @@ description: Standing register of skill create/patch/retire proposals surfaced b metadata: node_type: memory type: reference - originSessionId: a8eb1d46-314e-4545-a133-f747c69ad5b4 - modified: 2026-07-24T12:50:14.817Z permalink: claude-memory/skill-harvest-register --- @@ -16,9 +14,18 @@ permalink: claude-memory/skill-harvest-register The single place proposed skills live so they don't evaporate between sessions. `/wrap-up` §1.6 *proposes* here; the steward *authorizes*; only then is a skill created/patched/retired (never autonomously — the loop is load-bearing, per PENDING-23). `/wake-up` surfaces the open proposals via this entry. The governed analog of `~/PENDING.md`, for our own tools. -**Status legend:** `PROPOSED` (awaiting steward) · `AUTHORIZED` (proceed to build) · `BUILT` (done; move to the built-log) · `DEFERRED` (reason + condition) · `REJECTED` (reason; don't revisit without new input). +**Status legend:** `PROPOSED` (awaiting steward) · `PROPOSED?` (status never marked — **open until ruled**, never silently closed) · `AUTHORIZED` (proceed to build) · `BUILT` · `DEFERRED` · `REJECTED`. -> **Compacted 2026-08-01** under the 2026-07-19 Stroke-4 authorization. This file is now the **live index**: every open proposal, one line each. Full rationale, origin and ruled history live in **`skill-harvest-archive.md`** (the previous register verbatim — nothing dropped). Ruled items are not listed here. Rows whose status was never marked are carried as `PROPOSED?` — **unmarked is open until ruled**, never silently closed. +> **Rebuilt 2026-08-07.** The 2026-08-01 compaction was **lossless but illegible**: 55 scraped table-header rows were carried as numbered proposals, 95% of cells were cut mid-word, and pointers reached only a section — one of which holds 81 rows across 410 lines. Regenerated here from `skill-harvest-archive.md` (authoritative, unchanged) with word-boundary text and **exact `archive:L###` / `register:L###` pointers**. Nothing was ruled, reworded or dropped in the rebuild; the completeness invariant was asserted, not assumed. **154 live proposals** (124 from the archive + 30 appended since); 13 ruled items remain excluded by the stated rule. + +**Stroke coverage** — the 2026-07-19 full review granted standing authorizations. `S2` = covered by Stroke 2 (all earned ladder entries, append wholesale — **execution, not a ruling**). `S2?` = names BOTH the ladder and Symmetria, so the stroke that covers it is not settled — rule before executing. `S3` = the skill named in Stroke 3's verdicts. `S1?` = Symmetria flag needing a per-row check against the consolidated §3. `—` = genuinely awaiting the steward. + + +--- + +*The steward's 2026-07-19 ruling is reproduced verbatim below. The 2026-08-07 rebuild +initially carried only a paraphrase of it in the Stroke-coverage note above; a paraphrase +must not stand in for a ruling on the live surface, so the ruled text is restored here.* ## ⚖ FULL REVIEW 2026-07-19 (late night) — steward ruled ALL FOUR STROKES @@ -36,265 +43,216 @@ The single place proposed skills live so they don't evaporate between sessions. *Post-review addition (2026-07-22, PENDING-69 build — same authorization):* **read-the-gate's-decision-code-before-designing-its-consumer** — before building a consumer/resolver for a gate's output, read the gate's OWN decision logic to know what it can and cannot mechanically produce or see. On PENDING-69 the inherited literal question forced reading `verify_body_conservation.classify` first: it revealed the gate classifies boundary runs by POSITION+SIZE only and provably cannot confirm class identity → that "no, and knowably no" shaped the honest design (attested declaration the gate consumes, not teaching it to classify) AND corrected my own package's mis-framing mid-build. Kin to render-and-LOOK / measure-toolchain-before-spec, one level over (read the substrate's *decision logic*, not just its output). Queue with the Stroke-2 batch. +--- -## Open proposals — live index (177) +## verification-ladder (63) -| # | Skill | Kind | One-line | Origin | Status | Archive section | -|---|---|---|---|---|---|---| -| 1 | ``bmf-diagnose`` | **build now** (a | Today WAS that need and the method is proven+fresh: process sample → log pattern census (`uniq - | 2026-06-06 mindfabric-00 forensics | PROPOSED | New proposals (2026-06-06 wrap — awaiting st | -| 2 | ``/wrap-up` §5` | patch | Palace-fully-derived, part 1: mirror every `kg_add`/`kg_invalidate` made at wrap into the sessio | 2026-06-05 MemPalace forensics + t | PROPOSED | New proposals (2026-06-05 evening wrap — awa | -| 3 | ``/wake-up` §2.b` | patch | Until upstream #1665 closes: wake searches run unscoped + post-filter by wing (wing-scoped `memp | 2026-06-05 diagnosis | PROPOSED | New proposals (2026-06-05 evening wrap — awa | -| 4 | ``/wake-up` (new step or §2 check)` | patch | Wake canary: seconds-cheap probe at wake — every MEMORY.md pointer + `link` resolves to an exist | 2026-06-07 evening (memory-verdict | PROPOSED | New proposals (2026-06-05 evening wrap — awa | -| 5 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-08 — harvested from F | -| 6 | `**Revert-and-redo-smaller**` | Symmetria §3 fla | Ch1's strongest working reflex we *don't* have: when a verification/gate fails and the cause isn | Symmetria §3 (a flag) or verificat | PROPOSED | New proposals (2026-06-08 — harvested from F | -| 7 | `**Two-hat commit separation**` | verification-lad | Name which hat each commit wears: a *refactor* commit's compiled output is byte-identical (or ca | verification-ladder (formalizes wh | PROPOSED | New proposals (2026-06-08 — harvested from F | -| 8 | `**Bad-smells → refactoring lens**` | reference card O | Ch3's smell catalogue (Mutable/Global Data, Duplicated Code, Shotgun Surgery, Speculative Genera | `/code-review` prompt or new refer | PROPOSED | New proposals (2026-06-08 — harvested from F | -| 9 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-09 — the headless-Chr | -| 10 | `**Headless-Chrome box-model measur` | create skill OR | When a rendered layout *differs* and the cause isn't obvious, measure the box model before theor | a `/measure-render` skill, or a ve | PROPOSED | New proposals (2026-06-09 — the headless-Chr | -| 11 | `**Symmetria §3 flag: theorize-befo` | Symmetria §3 fla | The drift this caught, as a standing flag: a *causal story about why a layout renders as it does | Symmetria §3 | PROPOSED | New proposals (2026-06-09 — the headless-Chr | -| 12 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-09 pm — the typograph | -| 13 | `**`/measure-render` (headless-Chro` | create skill OR | RE-FLAG — strongly earned. Proposed this morning (compass fix); the pm session ran it 4+ more ti | `/measure-render` skill OR verific | PROPOSED | New proposals (2026-06-09 pm — the typograph | -| 14 | `**Measure the font's true average ` | verification-lad | When setting a measure to a target character count, measure the font's average advance over real | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-09 pm — the typograph | -| 15 | `**ARC build has NO autoprefixer — ` | feedback memory | ARC's plain-`sass` build adds no vendor prefixes. When introducing a new CSS property, check Saf | `feedback-arc-no-autoprefixer-hand | PROPOSED | New proposals (2026-06-09 pm — the typograph | -| 16 | `**Justification-judgment bar = Bri` | feedback memory | Load-bearing for the future justification decision: when living with the soft rag to judge wheth | `feedback-justification-bar-bringh | PROPOSED | New proposals (2026-06-09 pm — the typograph | -| 17 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-10 — Stage-G close + | -| 18 | `**spec↔spec coherence dimension**` | patch `/spec-cod | The 2026-06-10 audit found §I.f-class contradictions — the measure (38→27.2rem) un-propagated ac | `/spec-code-audit` (new dimension) | PROPOSED | New proposals (2026-06-10 — Stage-G close + | -| 19 | `**container-must-embody-the-contai` | feedback memory | When producing an ARTIFACT *of* a spec (a PDF of the spec, a rendered sample), set it per the sp | `feedback-container-must-embody-th | PROPOSED | New proposals (2026-06-10 — Stage-G close + | -| 20 | `**check-for-governed-tooling-befor` | feedback memory | Before hand-rolling infrastructure (a PDF preamble, a build script, a template), grep the repo f | feedback memory or Symmetria §3 | PROPOSED | New proposals (2026-06-10 — Stage-G close + | -| 21 | `**byte-identical gate: hold/exclud` | verification-lad | When proving a change byte-identical, a build-date/commit stamp (e.g. the colophon `_build_info/ | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-10 — Stage-G close + | -| 22 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-11 — §VII.f / open-wo | -| 23 | `**Symmetria §3 flag: inherited-mar` | Symmetria §3 fla | A status/marker inherited from a RECORD (a selector-index entry, a tracker line, a "-pending" fi | Symmetria §3 | PROPOSED | New proposals (2026-06-11 — §VII.f / open-wo | -| 24 | `**`/measure-render` (headless-Chro` | create skill OR | RE-REINFORCED (4th day of evidence). Proposed 2026-06-09 (compass fix) + reinforced 06-09 pm; to | `/measure-render` skill OR verific | PROPOSED | New proposals (2026-06-11 — §VII.f / open-wo | -| 25 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-12 — Studium planning | -| 26 | `**`/model-handoff` (premium-model ` | create skill OR | When switching to an expensive/premium model (Fable 5 = 2× Opus rate; burn scales with context×s | a `/model-handoff` skill OR a refe | PROPOSED | New proposals (2026-06-12 — Studium planning | -| 27 | `**verification-ladder: feature-det` | verification-lad | A CSS `@supports(feature)` (or any capability probe) can return true on a platform where the fea | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-12 — Studium planning | -| 28 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-12 night — Studium St | -| 29 | `**verification-ladder: parse/valid` | verification-lad | When an artifact that humans have only ever *read* (a hand-authored YAML index, a config, a data | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-12 night — Studium St | -| 30 | `**clean cruft at the SOURCE layer,` | feedback memory | When a source carries conversion cruft (EPUB footnote-links, image-scan embeds), clean it at the | `feedback-clean-at-source-not-down | PROPOSED | New proposals (2026-06-12 night — Studium St | -| 31 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 — Studium Steps 3- | -| 32 | `**dry-run-first for bulk file oper` | verification-lad | When a mutation touches many files at once (mass `git mv`, graduation, rename), build it dry-run | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 — Studium Steps 3- | -| 33 | `**Symmetria §3 flag: census-throug` | Symmetria §3 fla | A filter/regex used to *count* or *partition* a set can silently mis-match and the count reads a | Symmetria §3 | PROPOSED | New proposals (2026-06-13 — Studium Steps 3- | -| 34 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 35 | `**Symmetria §3 flag: solve-the-con` | Symmetria §3 fla | A "fix" that satisfies a stated constraint by removing the thing the constraint was protecting i | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 36 | `**verification-ladder: re-verify a` | verification-lad | A sub-agent or background workflow that reports a per-item verdict from a dry-run on a temp copy | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 37 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 38 | `**Symmetria §3 flag: assert presen` | Symmetria §3 fla | A presence/absence claim produced by a fuzzy/token matcher (filename tokens, embeddings, author- | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 39 | ``/wrap-up` §4.b/§5` | patch | Inline reminder at the KG-write step: `kg_add` `object` hard-caps at 128 chars — write short key | PROPOSED | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 40 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 41 | `**Work-in-omnibus: verify the inte` | verification-lad | When a sidecar/scope brackets one work out of a multi-work source by heading-to-heading boundari | verification ladder | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 42 | `**studium-engine tool-evolution-lo` | create | Establish the analog of `chamber-library/_curation/tool-evolution-log.md` for the engine tools ( | studium-engine repo | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 43 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 44 | `**`/version-essay`**` | **create** | The ADR-005 essay-versioning procedure, derived from `essay-versioning-specification.md` this se | new `/version-essay` skill | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 45 | `**CSS-mask: fill WHITE, not black ` | verification-lad | A CSS `mask`/`-webkit-mask` SVG must fill the shape white/opaque — a black-fill mask renders BLA | `reference-verification-ladder` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 46 | `**live-CSS-patch in `_site` for fa` | verification-lad | To eyeball size/style options in the real browser without a full Hakyll rebuild each round, `sed | `reference-verification-ladder` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 47 | `**headless-Chrome element shot: sc` | Symmetria §3 fla | Recalibration: computed box-clips kept mis-landing on the page-top (burned several shots). The r | `reference-verification-ladder` or | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 48 | `**glyph-outline → SVG from a woff2` | method note (lad | Build a typographic SVG asset *from the real font glyphs*: `fontTools` `SVGPathPen` (path) + `Bo | `reference-verification-ladder` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 49 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 50 | `**`/wake-up` patch — surface the *` | patch | When the active workstream is studium-engine / The Making / ARC-as-public-proof (the engine's re | `/wake-up` §2.a + §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 51 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 52 | `**`/clone-test-runtime-fix` (CoW-c` | create skill OR | When testing a runtime fix that needs real live data but must not touch the live instance: `/bin | new `/clone-test-runtime-fix` skil | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 53 | `**verification-ladder: verify the ` | verification-lad | Before reasoning about live behaviour, verify what the running process actually executes — compi | `reference-verification-ladder` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 54 | `**Symmetria §3 flag: probe-confirm` | Symmetria §3 fla | A query/test I constructed to match my hypothesis, whose result I then read as *confirming* the | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 55 | `**verification-ladder: quantify-th` | verification-lad | When a fix *removes* a hot operation, the cleanest control isn't a flaky end-to-end before/after | `reference-verification-ladder` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 56 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 57 | `**Symmetria §3 flag: diagnose-infe` | Symmetria §3 fla | The load-bearing harvest. When a network/inference call is slow, the FIRST test must be the *iso | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 58 | `**Symmetria §3 flag: reinvent-gove` | Symmetria §3 fla | Proposed PENDING-41 (consumer-hardware graceful degradation) as a *novel* architectural directio | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 59 | `**`/graduate-chamber-source`** (th` | create | Codify the now-PROVEN OCR→canonical→graduation pipeline as a single governed discipline, so the | 2026-06-26 Levi graduation | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 60 | `Element` | Kind | One-line | Status | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 61 | `**`/graduate-chamber-source`** (al` | **EXPAND** | Its empirical spec is now the full ocrmac column-aware pipeline, not the olmOCR one: render→ocrm | PROPOSED (expand; build-on-package | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 62 | `verification-ladder note: **OCR wo` | ladder entry (pr | A verbatim word-guard that checks word PRESENCE cannot catch reading-order scrambling (2-col rea | PROPOSED | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 63 | `**2 research sweeps owed** (not sk` | note | The engine's signature capabilities are greenfield: (1) genealogy/temporal/citation-graph/KG-aug | (project tasks, in research doc) | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 64 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 65 | `**`/graduate-chamber-source`** (al` | **EXPAND again** | Now carries the full EPUB path (`structure_from_ncx`→`insert_chapter_headings`→`clean_pandoc_htm | new skill | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 66 | `**The gate itself can be PASS-BUT-` | verification-lad | A verifier that checks an enumerated set of cruft signatures silently passes any residue outside | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 67 | `**Symmetria §3 flag: finding-scope` | Symmetria §3 fla | A result true under a specific condition, restated as an unconditional rule, is contamination sh | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 68 | `**prose word-guard for faithful st` | verification-lad | When a cleaner removes/reflows STRUCTURE (headings, printed titles, residue) but must preserve P | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 69 | `**structure-from-authoritative-ToC` | method note (lad | Answer to the long-open unify question: chapter-structure recovery is ONE placement engine (`ins | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 70 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 71 | `**Symmetria §3 flag: tool-creep-in` | Symmetria §3 fla | A convenience tool proposed for one job silently becoming the durable substrate (the source of t | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 72 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 73 | `**`/graduate-chamber-source`** (pr` | **BUILD NOW** | The empirical spec is complete AND the rail it needs now exists (`graduation-spec.yaml` + `verif | new skill | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 74 | `**Symmetria §3 flag: graduated-wit` | Symmetria §3 fla | Letting "honestly flagged" substitute for "resolved" — shipping a known-incomplete text because | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 75 | `**Symmetria §3 flag: re-derived-in` | Symmetria §3 fla | Wrote agents hand-made instructions (and invented fields) instead of pointing them at `conversio | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 76 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 77 | `**Symmetria §3 flag: claim-from-de` | Symmetria §3 fla | The load-bearing harvest — jurist-elevated to STANDING PRACTICE. I trusted a derived artifact / | Symmetria §3 + `reference-verifica | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 78 | `**`/spec-amendment`** (the RFC-sup` | create (later) | The now-RATIFIED chamber amendment process as a codified discipline: normative spec change = a s | new skill | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 79 | `**per-claim citation verification ` | feedback memory | Caught by the jurist: I cited arXiv 2605.24229 for a claim it didn't support, having let a sub-a | feedback memory / ladder | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 80 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 81 | `**`/spec-amendment`** (proposed 20` | **BUILD — deferr | The 2026-07-03/04 v2.0 drafting IS its first real exercise — the empirical spec now exists. Codi | new `/spec-amendment` skill | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 82 | `**`/wrap-up` §4.a**` | **patch** | The §4.a drawer-filing step instructs passing `tags:` to `mempalace_add_drawer` — the tool rejec | `~/.claude/skills/wrap-up/SKILL.md | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 83 | `Element` | Kind | One-line | Status | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 84 | `**verification-ladder: CI-upper-bo` | verification-lad | The jurist RULED (2026-07-04) that grading on the one-sided 90% Clopper-Pearson upper bound (not | .05,40)=0.399); the CI does the re | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 85 | `**`/model-handoff`** (premium-mode` | REINFORCED (exis | Used tonight end-to-end: produced `studium-engine/docs/stage-1-replan-scope-charter-2026-07-05.m | PROPOSED (reinforced) | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 86 | `Element` | Kind | One-line | Status | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 87 | `**`/model-handoff`** (proposed 202` | **REINFORCED — 3 | Tonight was the first time the pattern ran END-TO-END as designed: fresh Fable-5 session woke in | PROPOSED (reinforced; +path-verifi | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 88 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 89 | `**CLAUDE.md staleness canary (git ` | create (small) O | If the `scripts/` set or `graduation-spec.yaml` changed but `CLAUDE.md` didn't since, flag "may | git pre-commit / a `/repo-doc-cana | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 90 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 91 | `**memory/index restructure = byte-` | verification-lad | When restructuring a memory index or any lossless-relocation of prose between files, do it as li | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 92 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 93 | `**quote a long-job ETA only from a` | verification-lad | Twice today I gave a re-embed ETA from gut ("15–45 min") and was wrong by ~30×; the steward caug | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 94 | `**Symmetria §3 flag: reassuring-ve` | Symmetria §3 fla | Reaching for a comforting characterization ("self-healed", "fine", "recovered", "handled") *befo | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 95 | `**`mempalace-diagnose` — RETIRE th` | retire | AUTHORIZED 2026-06-05 (build-on-need). Now decorative: the steward decided (evidenced) to wind d | skill-harvest register | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 96 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 97 | `**`/model-handoff` (premium-model ` | **RE-FLAG — stro | Proposed 2026-06-12; this session *built* a full scope charter with the discipline (charter-on-O | new `/model-handoff` skill | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 98 | `**cross-volume verify-before-delet` | verification-lad | Moving data across filesystems (internal→external cold archive): `rsync -a` → verify exact file- | tail` masks push failure — bit me | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 99 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 100 | `**verify at the granularity of the` | verification-lad | A whole-set invariant (a document-wide word-multiset guard) can PASS while a per-item operation | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 101 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 102 | `**re-audit coverage with the TOOL'` | verification-lad | When a classifier and the tool it feeds share a predicate, the classifier's *mis*-classification | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 103 | `**extending a tool re-tests its fo` | verification-lad | Building an extension exercises shared machinery the original's tests never hit — so a widen's ` | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 104 | `**classify a change by MECHANISM, ` | feedback memory | Reflexively labeled the recognizer generalization "PROPOSAL" because it *felt* large; the jurist | feedback memory or Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 105 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 106 | `**`/reconcile-open-work` (program ` | **create** | The practice proven twice now (ARC open-work register, then the whole Chamber→Gold→Engine regist | new `/reconcile-open-work` skill | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 107 | `**verification-ladder: retroactive` | ladder entry | The jurist's Q1b principle, proven load-bearing: a stronger check existing and NOT pointed at ca | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 108 | `**verification-ladder: structural ` | ladder entry / S | The jurist's generalization after nested-block: "same risk as (a)" was true of the *matching* lo | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 109 | `**Symmetria §3 flag: lost-the-fore` | Symmetria §3 fla | A long, productive execution session that costs the whole-program altitude is contamination shap | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 110 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 111 | `**check-the-register-before-a-subs` | `/wake-up` §2 pa | Before starting substantial INFRA/tool building (a converter, a pipeline, a substrate), read the | `/wake-up` §2 (when the thread is | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 112 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 113 | `**Symmetria §3 flag: a check prove` | Symmetria §3 fla | Reusing a verification method across a boundary it wasn't demonstrated on is contamination shape | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 114 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 115 | `**Symmetria §3 flag: soft-classifi` | Symmetria §3 fla | Shipping a soft label ("this is reordering", "magnitude unresolved", "apparatus") when a CHECKAB | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 116 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 117 | `**split cause from magnitude befor` | verification-lad | A diagnostic bucket keyed on ONE summary axis (magnitude, holds%, a deficit size) can hold heter | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 118 | `**confirm-a-named-cause-by-swap-in` | verification-lad | When you NAME the true reference / config / cause behind an anomaly, don't assert the fix from t | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 119 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 120 | `**method-class-vs-calibration**` | verification-lad | When a metric/gate fails to separate two cases, ask whether it is mis-CALIBRATED or structurally | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 121 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 122 | `**Symmetria §3 flag: answer-from-t` | Symmetria §3 fla | Answering an architecture/tooling/citation question — or proposing a tool/approach — from traini | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 123 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 124 | `**positive-test-at-the-enforcement` | verification-lad | For any "can X be bypassed?" / "is this gate skippable?" property, a negative grep proves the ab | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 125 | `**Symmetria §3 flag: convert-a-ste` | Symmetria §3 fla | A proposal that converts an observed steward STATE (fatigue, "has carried a lot," being busy) in | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 126 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 127 | `**draft governance entries copy-pa` | feedback memory | When drafting PENDING/REVIEWED entries for the steward to *place*, format them as clean copy-pas | a feedback memory (governance-draf | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 128 | `**Symmetria §3 flag / ladder: "clo` | Symmetria §3 fla | The jurist named it a standing habit: the closable-vs-blocked partition on a work-list must be * | Symmetria §3 or `reference-verific | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 129 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 130 | `**`/jurist-package`** (create)` | new skill | Draft a self-contained jurist package for a repo-blind reviewer: inline the ratified spec clause | new `.claude/skills/jurist-package | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 131 | `**ladder: reconcile against the AU` | verification-lad | Before claiming a block/scope closed or complete, reconcile against the authoritative source (th | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 132 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 133 | `**governed spec-supersession proce` | verification-lad | Landing a ratified spec version is: cp live→`-vNEW.md` → bounded Edits (never retype) → `diff` s | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 134 | `**verification-ladder / Symmetria ` | verification-lad | A factual claim's grounding must reach the file that HOLDS the fact, not one that merely describ | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 135 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 136 | `**implementation-is-a-second-gate*` | verification-lad | A text passed by *reading* is re-tested by having to *act* on it — the jurist's own minting, aft | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 137 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 138 | `**sandbox-must-pin-the-shared-modu` | verification-lad | When a test sandboxes module-level state (paths/constants), the patch must land on the SAME modu | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 139 | `**census-the-substrate-when-a-safe` | verification-lad | A safety net (generic fallback, fail-loud branch, `unrecognized` kind) that never fires across N | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 140 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 141 | `**grounding-quoted-but-not-traced*` | Symmetria §3 fla | The hook enforces QUOTING the ratified sections; this session proved quoting ≠ tracing: the coor | Symmetria §3, or a one-line additi | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 142 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 143 | `**Symmetria §3 flag: record-assert` | Symmetria §3 fla | A session record (Addendum, brief, tracker line) composed AHEAD of its acts and asserting APPLIE | Symmetria §3 | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 144 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 145 | `**re-anchor = re-verify: reconstru` | verification-lad | When re-anchoring any sha-bound artifact after an upstream edit: reconstruct the OLD bound state | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 146 | `Element` | Kind | One-line | Where it lands | PROPOSED? | New proposals (2026-06-13 post-clear — L1 /h | -| 147 | `**implement-the-relation-not-an-ap` | verification-lad | When code implements a RULED relation/contract (an equivalence relation, a gate criterion), the | `reference-verification-ladder.md` | PROPOSED | New proposals (2026-06-13 post-clear — L1 /h | -| 148 | `Element` | Kind | One-line | Where it lands | PROPOSED? | Harvest 2026-07-21 (the verify-guard complet | -| 149 | `**seam-probe the artifact (gates t` | verification-lad | The night's two REAL defects (empty footnote defs from per-spine `-f html`; defs-after-index swa | `reference-verification-ladder.md` | PROPOSED | Harvest 2026-07-21 (the verify-guard complet | -| 150 | `**cmp-after-apply (tool-report ≠ w` | verification-lad | `strip_cruft --apply` prints its transform counts BEFORE the write decision; three distinct refu | `reference-verification-ladder.md` | PROPOSED | Harvest 2026-07-21 (the verify-guard complet | -| 151 | `**`convert_lane_borndigital.py` → ` | tool promotion | The one-door born-digital lane driver (whole-EPUB inject → whole-EPUB pandoc `-f epub -t markdow | `scripts/` | PROPOSED | Harvest 2026-07-21 (the verify-guard complet | -| 152 | ``/glyph-map-source`` | **create** | Per-source character-as-image glyph-mapping — the repeatable procedure built + proven on Levi th | 2026-07-23 (built once, 12+ repeat | PROPOSED | Harvest 2026-07-23 (the PENDING-69/70 arc · | -| 153 | `Item` | Kind | One-line | Origin | PROPOSED? | Harvest 2026-07-24 (evening — PENDING-71/72 | -| 154 | `Amendment-process: **reassigned-co` | **patch** (chamb | Jurist-minted in the REVIEWED-72 ruling: *"when a change reassigns a named component, check what | 2026-07-24 (jurist-directed) | PROPOSED | Harvest 2026-07-24 (evening — PENDING-71/72 | -| 155 | `Chamber graduation: **build to the` | **patch** (chamb | Steward-corrected 2× this session: *"we cannot use the extant canon as precedent."* The extant c | 2026-07-24 (steward-directed) | PROPOSED | Harvest 2026-07-24 (evening — PENDING-71/72 | -| 156 | `Element` | Kind | One-line | Where it lands | PROPOSED? | Harvest 2026-07-24 (evening — PENDING-71/72 | -| 157 | `chamber-library CLAUDE.md — **inte` | patch (repo CLAU | Add to §Load-bearing disciplines: *"The fleet has UNIT tests (test_tools, per-tool fixtures) but | `chamber-library/CLAUDE.md` §Load- | PROPOSED | Harvest 2026-07-24 (evening — PENDING-71/72 | -| 158 | `Target` | Kind | Proposal | Evidence | PROPOSED? | Harvest 2026-07-28 (morning — governance blo | -| 159 | ``/wake-up` §2.c–2.d` | patch | Consume the SessionStart digest instead of recomputing it. `wake-digest.py` now fires at every S | Built + wired 2026-07-28; the wake | PROPOSED | Harvest 2026-07-28 (morning — governance blo | -| 160 | ``/wake-up` §2.a` | patch | Fix the link-resolution canary's path handling — resolve pointers against the memory file's *phy | **Second firing.** Proposed 2026-0 | PROPOSED | Harvest 2026-07-28 (morning — governance blo | -| 161 | ``reference-verification-ladder.md`` | new entry | "The parser defines the census." When a census counts items, the *item-definition* is itself a c | Earned hard 2026-07-28: `^## PENDI | PROPOSED | Harvest 2026-07-28 (morning — governance blo | -| 162 | `Target` | Kind | Proposal | Evidence | PROPOSED? | Proposed 2026-07-28 (afternoon wrap — PENDIN | -| 163 | ``/symmetria` §3` | patch | Add the contamination flag: "an instrument whose evidence is the same kind of thing as its own s | **Four instances in one afternoon* | PROPOSED | Proposed 2026-07-28 (afternoon wrap — PENDIN | -| 164 | ``/wrap-up` §6 / §6.5` | patch | Verify that every file a commit message names is actually staged, and that steward-authored edit | `8abfe88` claimed *"split 1848→430 | PROPOSED | Proposed 2026-07-28 (afternoon wrap — PENDIN | -| 165 | ``~/dotfiles/scripts/`` | new script | Promote the union-losslessness verifier to `verify-union-lossless.py ...` — ass | Written ad hoc in scratchpad for t | PROPOSED | Proposed 2026-07-28 (afternoon wrap — PENDIN | -| 166 | ``/wake-up` §2.a` | patch | (Re-proposing, third firing.) Link-canary path resolution — root cause now precise, not merely r | Fired 2026-07-27, and **twice** on | PROPOSED | Proposed 2026-07-28 (afternoon wrap — PENDIN | -| 167 | ``/wake-up`` | patch | Read the day's own Symmetria ledger when one exists for today. The wake reads `MEMORY.md` + the | 2026-07-28 (2 instances, ~10 min a | PROPOSED | Harvest 2026-07-28 (mid-afternoon — the V-DP | -| 168 | ``/jurist-package`` | patch | Require a mechanical verbatim-containment proof over every quoted clause, reported in the packag | 2026-07-28 (self-caught fabricatio | PROPOSED | Harvest 2026-07-28 (mid-afternoon — the V-DP | -| 169 | `Target` | Kind | Proposal | Earned by | PROPOSED? | New proposals (2026-07-29 wrap — awaiting st | -| 170 | ``/jurist-package`` | patch | Mandate a mechanical verbatim-containment proof over every quoted passage, with a positive AND n | 2026-07-29; second instance of the | PROPOSED | New proposals (2026-07-29 wrap — awaiting st | -| 171 | ``/jurist-package`` | patch | Formatting convention: ratified text = `>` blockquote; PROPOSED text = fenced block, never a blo | 2026-07-29, found incidentally by | PROPOSED | New proposals (2026-07-29 wrap — awaiting st | -| 172 | ``/wake-up` §3 (Next move)` | patch | Before executing an inherited resumption point, grep the substrate for whether its premise is al | 2026-07-29 | PROPOSED | New proposals (2026-07-29 wrap — awaiting st | -| 173 | `Target` | Kind | Proposal | Earned by | PROPOSED? | New proposals (2026-07-29, steward-raised — | -| 174 | ``symmetria` §4 (ledger template)` | patch | Add a standing `## What held` section — instruments that fired *prospectively*, lessons that tra | 2026-07-29, steward-raised; corrob | APPLIED 2026-08-02 (FIX lane, REVIEWED-85 batch 1) | New proposals (2026-07-29, steward-raised — | -| 175 | ``/wrap-up` §5 (KG append)` | patch | Add a `prevention` predicate — `{subject: , predicate: "prevention", object: · sent `) and a §1.6-style check at wrap. Cheap, and it is the difference between a package that is waiting on the jurist and one nobody has moved. | 2026-08-02, found while packaging | PROPOSED | -| 182 | `/jurist-package` | patch | **Require the mechanical containment proof the skill's own discipline implies.** The skill states *quote, never paraphrase* but carries no check. Built and used twice on 2026-08-02: it caught a fabricated terminal period inside a blockquote in the executor's own package (read past twice), and discharged REVIEWED-85's stated precondition where the jurist could not verify skill-file quotes itself. Tool: `dotfiles/claude/governance/check_containment.py`, positive controls mandatory. **PROPOSAL, not FIX** — this changes gate criteria, which the §1.6 hard floor reserves. Bears directly on PENDING-86 option (b), which is unruled; route with that item, not ahead of it. | 2026-08-02 | PROPOSED | +Stroke 2 (2026-07-19) AUTHORIZED appending **all earned ladder entries** wholesale. These need EXECUTION, not a ruling — verify each against the current ladder before appending; some already landed. -## New proposals (2026-08-02 pm wrap — the vignette build; awaiting steward) +| # | Item | Gist | Status | Stroke | Source | +|---|------|------|--------|--------|--------| +| 1 | Revert-and-redo-smaller | Ch1's strongest working reflex we don't have: when a verification/gate fails and the cause isn't immediately visible, revert to… | PROPOSED | S2? | `archive:L110` | +| 2 | Two-hat commit separation | Name which hat each commit wears: a refactor commit's compiled output is byte-identical (or carries a pre-stated classified… | PROPOSED | S2 | `archive:L111` | +| 3 | Bad-smells → refactoring lens | Ch3's smell catalogue (Mutable/Global Data, Duplicated Code, Shotgun Surgery, Speculative Generality, Comments-as-deodorant…) as… | PROPOSED | S2? | `archive:L112` | +| 4 | Headless-Chrome box-model measurement | When a rendered layout differs and the cause isn't obvious, measure the box model before theorizing the mechanism. Today this… | PROPOSED | S2? | `archive:L136` | +| 5 | /measure-render (headless-Chrome box-model harness) | RE-FLAG — strongly earned. Proposed this morning (compass fix); the pm session ran it 4+ more times (true-advance measurement… | PROPOSED | S2? | `archive:L143` | +| 6 | Measure the font's true average prose advance before a character-count… | When setting a measure to a target character count, measure the font's average advance over real corpus prose (incl. spaces), not… | PROPOSED | S2 | `archive:L144` | +| 7 | byte-identical gate: hold/exclude volatile build-stamps | When proving a change byte-identical, a build-date/commit stamp (e.g. the colophon buildinfo/stamp) will differ between baseline… | PROPOSED | S2 | `archive:L155` | +| 8 | /measure-render (headless-Chrome box-model/scroll harness) | RE-REINFORCED (4th day of evidence). Proposed 2026-06-09 (compass fix) + reinforced 06-09 pm; today drove the ENTIRE §VII.f build… | PROPOSED | S2? | `archive:L167` | +| 9 | /model-handoff (premium-model scope charter) | When switching to an expensive/premium model (Fable 5 = 2× Opus rate; burn scales with context×session-length) for a bounded high… | PROPOSED | S2? | `archive:L175` | +| 10 | verification-ladder: feature-detect gates can lie | A CSS @supports(feature) (or any capability probe) can return true on a platform where the feature is non-functional — today the… | PROPOSED | S2 | `archive:L176` | +| 11 | verification-ladder: parse/validate machine-consumed artifacts that have… | When an artifact that humans have only ever read (a hand-authored YAML index, a config, a data file) is about to be machine… | PROPOSED | S2 | `archive:L184` | +| 12 | dry-run-first for bulk file operations | When a mutation touches many files at once (mass git mv, graduation, rename), build it dry-run by default and emit the full move… | PROPOSED | S2 | `archive:L193` | +| 13 | verification-ladder: re-verify a workflow/sub-agent's per-item dispositions… | A sub-agent or background workflow that reports a per-item verdict from a dry-run on a temp copy can be wrong on the real apply… | PROPOSED | S2? | `archive:L203` | +| 14 | Work-in-omnibus: verify the interior, not just the endpoints | When a sidecar/scope brackets one work out of a multi-work source by heading-to-heading boundaries, content-sample the span… | PROPOSED | S2 | `archive:L241` | +| 15 | CSS-mask: fill WHITE, not black (luminance-safe) | A CSS mask/-webkit-mask SVG must fill the shape white/opaque — a black-fill mask renders BLANK (the luminance-vs-alpha trap).… | PROPOSED | S2 | `archive:L251` | +| 16 | live-CSS-patch in site for fast in-browser iteration | To eyeball size/style options in the real browser without a full Hakyll rebuild each round, sed the value directly in site/assets… | PROPOSED | S2? | `archive:L252` | +| 17 | headless-Chrome element shot: scrollIntoView + full-viewport, NOT computed… | Recalibration: computed box-clips kept mis-landing on the page-top (burned several shots). The reliable element screenshot is… | PROPOSED | S2? | `archive:L253` | +| 18 | glyph-outline → SVG from a woff2 | Build a typographic SVG asset from the real font glyphs: fontTools SVGPathPen (path) + BoundsPen (bbox) over the woff2, y-flip… | PROPOSED | S2 | `archive:L254` | +| 19 | /clone-test-runtime-fix (CoW-clone + isolated-worktree harness) | When testing a runtime fix that needs real live data but must not touch the live instance: /bin/cp -c -R (APFS CoW) the live data… | PROPOSED | S2? | `archive:L270` | +| 20 | verification-ladder: verify the RUNNING BINARY's provenance, not just… | Before reasoning about live behaviour, verify what the running process actually executes — compiled dist/ build mtime + grep the… | PROPOSED | S2 | `archive:L271` | +| 21 | verification-ladder: quantify-the-removed-cost as the A/B control | When a fix removes a hot operation, the cleanest control isn't a flaky end-to-end before/after race — it's to time the exact… | PROPOSED | S2 | `archive:L273` | +| 22 | verification-ladder note: OCR word-guard passes on SCRAMBLED text | A verbatim word-guard that checks word PRESENCE cannot catch reading-order scrambling (2-col read across the gutter) — same… | PROPOSED | S2 | `archive:L300` | +| 23 | The gate itself can be PASS-BUT-FALSELY | A verifier that checks an enumerated set of cruft signatures silently passes any residue outside the set — verifyconversion… | PROPOSED | S2 | `archive:L308` | +| 24 | prose word-guard for faithful structure-cleaning | When a cleaner removes/reflows STRUCTURE (headings, printed titles, residue) but must preserve PROSE, gate it with a prose-only… | PROPOSED | S2 | `archive:L310` | +| 25 | structure-from-authoritative-ToC = one engine, two map-producers | Answer to the long-open unify question: chapter-structure recovery is ONE placement engine (insertchapterheadings: match… | PROPOSED | S2 | `archive:L311` | +| 26 | Symmetria §3 flag: claim-from-derived-artifact-when-the-source-is-checkable | The load-bearing harvest — jurist-elevated to STANDING PRACTICE. I trusted a derived artifact / a regex-over-derived-text over… | PROPOSED | S2? | `archive:L338` | +| 27 | per-claim citation verification (don't let a sub-agent's blanket "verified"… | Caught by the jurist: I cited arXiv 2605.24229 for a claim it didn't support, having let a sub-agent's aggregate "4/4 papers… | PROPOSED | S2? | `archive:L340` | +| 28 | verification-ladder: CI-upper-bound + drop-one-robustness = STANDARD for… | The jurist RULED (2026-07-04) that grading on the one-sided 90% Clopper-Pearson upper bound (not the point estimate) + the drop… | PROPOSED | S2 | `archive:L357` | +| 29 | memory/index restructure = byte-exact slice + md5-conservation + link-canary | When restructuring a memory index or any lossless-relocation of prose between files, do it as line-range slices (never retype) +… | PROPOSED | S2 | `archive:L389` | +| 30 | quote a long-job ETA only from an observed rate, never model-size intuition | Twice today I gave a re-embed ETA from gut ("15–45 min") and was wrong by ~30×; the steward caught it. The fix was measuring… | PROPOSED | S2 | `archive:L410` | +| 31 | mempalace-diagnose — RETIRE the proposal | AUTHORIZED 2026-06-05 (build-on-need). Now decorative: the steward decided (evidenced) to wind down palace-memory MemPalace.… | PROPOSED | S2 | `archive:L412` | +| 32 | cross-volume verify-before-delete move | Moving data across filesystems (internal→external cold archive): rsync -a → verify exact file-count match + du (NOT a byte-sum… | PROPOSED | S2 | `archive:L421` | +| 33 | verify at the granularity of the mutation, not the aggregate | A whole-set invariant (a document-wide word-multiset guard) can PASS while a per-item operation (a cross-note swap — a word from… | PROPOSED | S2 | `archive:L440` | +| 34 | re-audit coverage with the TOOL's recognizer, not the classifier that… | When a classifier and the tool it feeds share a predicate, the classifier's mis-classifications masquerade as genuine "new… | PROPOSED | S2 | `archive:L450` | +| 35 | extending a tool re-tests its foundations | Building an extension exercises shared machinery the original's tests never hit — so a widen's --validate should assert the… | PROPOSED | S2? | `archive:L451` | +| 36 | verification-ladder: retroactively re-verify everything landed under a… | The jurist's Q1b principle, proven load-bearing: a stronger check existing and NOT pointed at canon that shipped under the weaker… | PROPOSED | S2 | `archive:L463` | +| 37 | verification-ladder: structural safety = PROVISIONAL FIX; end-to-end proof… | The jurist's generalization after nested-block: "same risk as (a)" was true of the matching logic and silent on the rendering… | PROPOSED | S2? | `archive:L464` | +| 38 | split cause from magnitude before sizing a remedy | A diagnostic bucket keyed on ONE summary axis (magnitude, holds%, a deficit size) can hold heterogeneous causes — a single label… | PROPOSED | S2 | `archive:L502` | +| 39 | confirm-a-named-cause-by-swap-in (don't assert from identification) | When you NAME the true reference / config / cause behind an anomaly, don't assert the fix from the identification — swap the… | PROPOSED | S2? | `archive:L503` | +| 40 | method-class-vs-calibration | When a metric/gate fails to separate two cases, ask whether it is mis-CALIBRATED or structurally BLIND to the distinction — no… | PROPOSED | S2? | `archive:L511` | +| 41 | positive-test-at-the-enforcement-path over a negative-grep (bypass /… | For any "can X be bypassed?" / "is this gate skippable?" property, a negative grep proves the absence of a STRING, not the… | PROPOSED | S2 | `archive:L527` | +| 42 | Symmetria §3 flag / ladder: "closable-now" is itself a claim to check | The jurist named it a standing habit: the closable-vs-blocked partition on a work-list must be reviewed, not asserted — the named… | PROPOSED | S2? | `archive:L535` | +| 43 | ladder: reconcile against the AUTHORITATIVE source before any "closed… | Before claiming a block/scope closed or complete, reconcile against the authoritative source (the roadmap stage-1-rebuild-plan §4… | PROPOSED | S2? | `archive:L545` | +| 44 | governed spec-supersession procedure | Landing a ratified spec version is: cp live→-vNEW.md → bounded Edits (never retype) → diff shows ONLY intended altered lines +… | PROPOSED | S2 | `archive:L551` | +| 45 | verification-ladder / Symmetria §3: assert-"X is in Y" → read Y | A factual claim's grounding must reach the file that HOLDS the fact, not one that merely describes it. Earned hard 2026-07-17… | PROPOSED | S2? | `archive:L552` | +| 46 | implementation-is-a-second-gate | A text passed by reading is re-tested by having to act on it — the jurist's own minting, after their 07-16 miss surfaced at build… | PROPOSED | S2? | `archive:L560` | +| 47 | sandbox-must-pin-the-shared-module | When a test sandboxes module-level state (paths/constants), the patch must land on the SAME module object the code-under-test… | PROPOSED | S2? | `archive:L568` | +| 48 | census-the-substrate-when-a-safety-net-stays-silent | A safety net (generic fallback, fail-loud branch, unrecognized kind) that never fires across N real cases is UNINFORMATIVE, not… | PROPOSED | S2 | `archive:L569` | +| 49 | re-anchor = re-verify: reconstruct the old bound state by sha-match | When re-anchoring any sha-bound artifact after an upstream edit: reconstruct the OLD bound state from git by matching the… | PROPOSED | S2 | `archive:L597` | +| 50 | implement-the-relation-not-an-approximation | When code implements a RULED relation/contract (an equivalence relation, a gate criterion), the acceptance path must BE the… | PROPOSED | S2 | `archive:L605` | +| 51 | seam-probe the artifact (gates test claims; probes test joins) | The night's two REAL defects (empty footnote defs from per-spine -f html; defs-after-index swallowed by the trim) were invisible… | PROPOSED | S2 | `archive:L613` | +| 52 | cmp-after-apply (tool-report ≠ write-decision) | stripcruft --apply prints its transform counts BEFORE the write decision; three distinct refusal causes in one night (residual… | PROPOSED | S2 | `archive:L614` | +| 53 | Amendment-process: reassigned-component check | Jurist-minted in the REVIEWED-72 ruling: "when a change reassigns a named component, check what else names it." F4 moved the born… | PROPOSED | S2? | `archive:L631` | +| 54 | reference-verification-ladder.md | "The parser defines the census." When a census counts items, the item-definition is itself a claim requiring its own control… | PROPOSED | S2 | `archive:L652` | +| 55 | A | Strongly earned — three instances in one session. Every substantive vignette defect was found by rendering the artifact and… | PROPOSED | S2 | `register:L231` | +| 56 | C | New method, proven today. Building Phase 1a produced nine findings about where the vignette spec fails to determine its output… | PROPOSED | S2 | `register:L233` | +| 57 | verification ladder | A suspiciously UNIFORM offset is a constant masquerading as a measurement. A forward-window locator reports the window START, not… | PROPOSED | S2 | `register:L256` | +| 58 | verification ladder | Pre-register the expected effect BEFORE building the change. fidelityequivalence@3's effect was filed in the jurist package as 3… | PROPOSED | S2 | `register:L257` | +| 59 | verification ladder | Run the counterfactual before attributing a cause. Before claiming X causes Y, remove X and measure Y — where that is cheap and… | PROPOSED | S2 | `register:L274` | +| 60 | verification ladder | 2026-08-06. The drainer exits 1 on a halted run; piped through tail, the harness recorded exit 0. A signal that existed was… | PROPOSED | S2 | `register:L276` | +| 61 | verification ladder | 2026-08-07, four times in one session and not once by reading: 769 unreachable drawers (455 + 314, two unrelated causes), 2… | PROPOSED | S2 | `register:L297` | +| 62 | verification ladder | 2026-08-07. Front-matter re-anchoring: nonsense keys correctly failed, so the control passed — while apatternlanguage silently… | PROPOSED | S2 | `register:L299` | +| 63 | verification ladder | Never pin a derived total in a test; assert the invariant — and never let a test depend on a corpus accident. byname == 256 went… | PROPOSED | S2 | `register:L300` | -| # | Skill / instrument | Kind | One-line | Status | -|---|---|---|---|---| -| A | **verification-ladder: render-and-LOOK outranks the check suite for any rendered output** | ladder entry | **Strongly earned — three instances in one session.** Every substantive vignette defect was found by rendering the artifact and looking; *none* by the mechanical checks, which were good checks and all passed: a field colour bound to a class no element carried (Layer 3's whole mode mapping would have inherited the panel's ink and looked correct); a hand-rolled palette violating §III's sacred-palette clause, collapsing dark-mode contrast; interval clearings reading as smudges. The general shape: **an instrument can certify a property of the *code* while the claim being made is about the *result*.** For visual/rendered work the gate is the render, and the check suite is necessary-not-sufficient. Kin to `measure-toolchain-before-spec`, one level over. | PROPOSED | -| B | **`/measure-render` — RE-REINFORCED (5th+ instance)** | create skill | Headless-Chrome capture used again today, and this time it was *decisive* rather than diagnostic: the screenshots are what exposed the dark-mode contrast collapse and the interval smudges. Previously proposed 2026-06-09, reinforced 06-09 pm, 06-11. The pattern is now: build → emit → shoot → **read the PNG back and look at it**, which is a step a skill should carry because it is the step most easily skipped. | PROPOSED | -| C | **Implementing a spec is a spec-audit instrument — the under-determination census** | ladder entry OR skill | New method, proven today. Building Phase 1a produced **nine findings** about where the vignette spec fails to determine its output — none findable by *reading* the spec, because from inside an implementation a silence does not feel like a decision, it feels like the obvious reading. Output shape: per finding, *what the spec says · what it under-determines · how the implementation silently resolved it*. Deliverable committed at `docs/AldineXXI-Codex/drafts/vignette-spec-under-determination-census-2026-08-02.md` as the worked exemplar. Warrant is in the spec's own Part II: *"if the visual result doesn't work, the spec needs revision before proceeding."* | PROPOSED | -| D | **Symmetria §3 flag: applying a doctrine where it does not govern** | Symmetria §3 flag | Steward-caught today. Asked whether to send a spec to Fable, the executor reached for Constraint 6's independence framing and attached a corroboration caveat — but it was a **design** task, not a checking task, so independence never arose and the caveat was empty. The flag: **before invoking a governing principle, name the question-type it governs and check the task is that type.** A live maxim applied off-domain is the decorative failure `~/CLAUDE.md` asks us to flag, and it *feels* like rigour from inside. | PROPOSED | +## symmetria-flag (33) -**Applied at this wrap under the §1.6 FIX lane** (mechanical repo-CLAUDE.md freshness; classification test: changes neither executor latitude nor a governed artifact's assertion — it removes a claim the substrate contradicts; hard floor not engaged, no open item's visibility reduced): ARC `CLAUDE.md` asset-structure listed `js/ # JavaScript (theme toggle)`; the directory **does not exist** and the toggle was retired with the JS pipeline at Stage M (2026-06-01). Replaced with a note recording the retirement. Indexed in `skill-harvest-fix-lane-index.md`. +Stroke 1 (2026-07-19) consolidated four flags into the skill and explicitly did NOT promote a named list. Rows here need a per-row check against Symmetria §3 as it now stands before they are treated as open. + +| # | Item | Gist | Status | Stroke | Source | +|---|------|------|--------|--------|--------| +| 1 | Symmetria §3 flag: theorize-before-measuring-a-layout | The drift this caught, as a standing flag: a causal story about why a layout renders as it does, asserted before the rendered box… | PROPOSED | S1? | `archive:L137` | +| 2 | check-for-governed-tooling-before-building | Before hand-rolling infrastructure (a PDF preamble, a build script, a template), grep the repo for an existing governed version.… | PROPOSED | S1? | `archive:L154` | +| 3 | Symmetria §3 flag: inherited-marker-read-as-current-state | A status/marker inherited from a RECORD (a selector-index entry, a tracker line, a "-pending" file, a prior framing) asserted as… | PROPOSED | S1? | `archive:L166` | +| 4 | Symmetria §3 flag: census-through-a-pattern | A filter/regex used to count or partition a set can silently mis-match and the count reads as authoritative. Today grep -iE 'LOG'… | PROPOSED | S1? | `archive:L194` | +| 5 | Symmetria §3 flag: solve-the-constraint-by-discarding-the-value | A "fix" that satisfies a stated constraint by removing the thing the constraint was protecting is contamination shape — it… | PROPOSED | S1? | `archive:L202` | +| 6 | Symmetria §3 flag: assert presence/absence from a fuzzy matcher, not the… | A presence/absence claim produced by a fuzzy/token matcher (filename tokens, embeddings, author-surname overlap) treated as fact… | PROPOSED | S1? | `archive:L211` | +| 7 | Symmetria §3 flag: probe-confirms-hypothesis | A query/test I constructed to match my hypothesis, whose result I then read as confirming the hypothesis rather than testing… | PROPOSED | S1? | `archive:L272` | +| 8 | Symmetria §3 flag: diagnose-inference/latency-without-isolating-the-exact… | The load-bearing harvest. When a network/inference call is slow, the FIRST test must be the isolated one: stop the competing load… | PROPOSED | S1? | `archive:L281` | +| 9 | Symmetria §3 flag: reinvent-governed-DESIGN-without-reading-the-spec | Proposed PENDING-41 (consumer-hardware graceful degradation) as a novel architectural direction when local-inference-spec 43L/43M… | PROPOSED | S1? | `archive:L282` | +| 10 | Symmetria §3 flag: finding-scoped-to-one-condition restated as… | A result true under a specific condition, restated as an unconditional rule, is contamination shape. Caught 2026-06-28: the… | PROPOSED | S1? | `archive:L309` | +| 11 | Symmetria §3 flag: tool-creep-into-substrate (name genome-or-phenotype… | A convenience tool proposed for one job silently becoming the durable substrate (the source of truth) is contamination shape — it… | PROPOSED | S1? | `archive:L319` | +| 12 | Symmetria §3 flag: graduated-with-a-flagged-gap-instead-of-resolved | Letting "honestly flagged" substitute for "resolved" — shipping a known-incomplete text because the hole is marked. Contamination… | PROPOSED | S1? | `archive:L329` | +| 13 | Symmetria §3 flag: re-derived-instructions-instead-of-citing-the-governed… | Wrote agents hand-made instructions (and invented fields) instead of pointing them at conversion-runbook.yaml/the spec — the… | PROPOSED | S1? | `archive:L330` | +| 14 | Symmetria §3 flag: reassuring-verb-before-verifying-the-mechanism | Reaching for a comforting characterization ("self-healed", "fine", "recovered", "handled") before verifying the actual mechanism… | PROPOSED | S1? | `archive:L411` | +| 15 | classify a change by MECHANISM, not by how big it feels | Reflexively labeled the recognizer generalization "PROPOSAL" because it felt large; the jurist's own FIX/PROPOSAL test (does it… | PROPOSED | S1? | `archive:L452` | +| 16 | Symmetria §3 flag: lost-the-forest-in-a-long-execution-arc | A long, productive execution session that costs the whole-program altitude is contamination shape (composition-over-consideration… | PROPOSED | S1? | `archive:L465` | +| 17 | check-the-register-before-a-substantial-build | Before starting substantial INFRA/tool building (a converter, a pipeline, a substrate), read the tooling-register + landscape… | PROPOSED | S1? | `archive:L471` | +| 18 | Symmetria §3 flag: a check proven for one tier/case is NOT proven for… | Reusing a verification method across a boundary it wasn't demonstrated on is contamination shape — the V-TEXT k-gram coverage… | PROPOSED | S1? | `archive:L484` | +| 19 | Symmetria §3 flag: soft-classification-where-a-checkable-claim-was-available | Shipping a soft label ("this is reordering", "magnitude unresolved", "apparatus") when a CHECKABLE claim (a reportable number, a… | PROPOSED | S1? | `archive:L494` | +| 20 | Symmetria §3 flag: answer-from-training-before-checking-the-banked-record | Answering an architecture/tooling/citation question — or proposing a tool/approach — from training memory before grepping the… | PROPOSED | S1? | `archive:L519` | +| 21 | Symmetria §3 flag: convert-a-steward-state-into-a-process-weakening | A proposal that converts an observed steward STATE (fatigue, "has carried a lot," being busy) into a weakening of the review… | PROPOSED | S1? | `archive:L528` | +| 22 | grounding-quoted-but-not-traced | The hook enforces QUOTING the ratified sections; this session proved quoting ≠ tracing: the coordinate-contract package quoted… | PROPOSED | S1? | `archive:L581` | +| 23 | Symmetria §3 flag: record-asserts-applied-before-the-act | A session record (Addendum, brief, tracker line) composed AHEAD of its acts and asserting APPLIED/DONE is contamination shape… | PROPOSED | S1? | `archive:L589` | +| 24 | /symmetria §3 | Add the contamination flag: "an instrument whose evidence is the same kind of thing as its own source." A text search cannot… | PROPOSED | S1? | `archive:L658` | +| 25 | /wake-up | Read the day's own Symmetria ledger when one exists for today. The wake reads MEMORY.md + the session file + the KG, but never… | PROPOSED | S1? | `archive:L681` | +| 26 | symmetria §4 (ledger template) | Add a standing ## What held section — instruments that fired prospectively, lessons that transferred to a failure class they were… | PROPOSED | S1? | `archive:L702` | +| 27 | symmetria §2 / /wrap-up §1 | Retire the self-report framing of the standing question. The 2026-07-29 literal question — "is there any instrument I built… | PROPOSED | S1? | `archive:L705` | +| 28 | D | Steward-caught today. Asked whether to send a spec to Fable, the executor reached for Constraint 6's independence framing and… | PROPOSED | S1? | `register:L234` | +| 29 | Symmetria §3 flag: the-fix-for-an-overclaim-is-an-overclaim-candidate | When you repair an overclaim, the replacement inherits the frame that produced the original. Replacing the engine's "genuine… | PROPOSED | S1? | `register:L247` | +| 30 | Widen assert-from-derivation-not-substrate with the null-result case | A null from an instrument you have not positive-controlled is a fact about your instrument, not about the world. Probed… | PROPOSED | S1? | `register:L248` | +| 31 | /wake-up §4 | Do not print the Symmetria line unless Symmetria was invoked. This wake's briefing ended "Symmetria active. Practice of return… | PROPOSED | S1? | `register:L258` | +| 32 | Symmetria §3 flag | A record asserting that a control is ABSENT is load-bearing, and must be verified like any other claim — it is the note that… | PROPOSED | S1? | `register:L275` | +| 33 | Symmetria §3 flag | 2026-08-07, 3 of 3 new checkers: the R0 validator failed six healthy sources and the tempting repair was editing the reading… | PROPOSED | S1? | `register:L298` | + +## patch (28) + +Skill/instrument patches. Each needs a ruling. + +| # | Item | Gist | Status | Stroke | Source | +|---|------|------|--------|--------|--------| +| 1 | /wrap-up §5 | Palace-fully-derived, part 1: mirror every kgadd/kginvalidate made at wrap into the session memory file (one line each), so KG… | PROPOSED | — | `archive:L100` | +| 2 | /wake-up (new step or §2 check) | Wake canary: seconds-cheap probe at wake — every MEMORY.md pointer + [[link]] resolves to an existing memory file; flag dead… | PROPOSED | — | `archive:L102` | +| 3 | spec↔spec coherence dimension | The 2026-06-10 audit found §I.f-class contradictions — the measure (38→27.2rem) un-propagated across silence-and-rhythm/apparatus… | PROPOSED | S3 | `archive:L152` | +| 4 | /wake-up patch — surface the why when the thread touches the engine's… | When the active workstream is studium-engine / The Making / ARC-as-public-proof (the engine's reason-for-being), /wake-up should… | PROPOSED | — | `archive:L262` | +| 5 | /wrap-up §4.a | The §4.a drawer-filing step instructs passing tags: to mempalaceadddrawer — the tool rejects it (MCP error -32602: Unknown… | PROPOSED | — | `archive:L349` | +| 6 | Chamber graduation: build to the constitution, not to a legacy canonical | Steward-corrected 2× this session: "we cannot use the extant canon as precedent." The extant canon is a pre-constitution/pre… | PROPOSED | — | `archive:L632` | +| 7 | chamber-library CLAUDE.md — integration-test-gap discipline | Add to §Load-bearing disciplines: "The fleet has UNIT tests (testtools, per-tool fixtures) but NO integration test — nothing runs… | PROPOSED | — | `archive:L640` | +| 8 | /wake-up §2.c–2.d | Consume the SessionStart digest instead of recomputing it. wake-digest.py now fires at every SessionStart and already emits… | PROPOSED | — | `archive:L650` | +| 9 | /wake-up §2.a | Fix the link-resolution canary's path handling — resolve pointers against the memory file's physical directory… | PROPOSED | — | `archive:L651` | +| 10 | /wrap-up §6 / §6.5 | Verify that every file a commit message names is actually staged, and that steward-authored edits are committed — not just… | PROPOSED | — | `archive:L659` | +| 11 | /wake-up §2.a | (Re-proposing, third firing.) Link-canary path resolution — root cause now precise, not merely reproduced: the memory dir's… | PROPOSED | — | `archive:L661` | +| 12 | /jurist-package | Require a mechanical verbatim-containment proof over every quoted clause, reported in the package. The skill already says "Quote… | PROPOSED | S3 | `archive:L682` | +| 13 | /jurist-package | Mandate a mechanical verbatim-containment proof over every quoted passage, with a positive AND negative control, as a required… | PROPOSED | S3 | `archive:L692` | +| 14 | /jurist-package | Formatting convention: ratified text = > blockquote; PROPOSED text = fenced block, never a blockquote. The containment checker… | PROPOSED | S3 | `archive:L693` | +| 15 | /wake-up §3 (Next move) | Before executing an inherited resumption point, grep the substrate for whether its premise is already settled. Today's inherited… | PROPOSED | — | `archive:L694` | +| 16 | /wrap-up §5 (KG append) | Add a prevention predicate — {subject: , predicate: "prevention", object: }.… | PROPOSED | — | `archive:L703` | +| 17 | /wake-up §2.b.2 | Surface one prevention alongside the drift-patterns. Currently the wake greps only drift-pattern, so the session opens by re… | PROPOSED | — | `archive:L704` | +| 18 | wake-digest.py | The wake instrument silently hides open items. secpending() drops a PENDING-N whenever a REVIEWED-N exists — matching the number… | PROPOSED | — | `register:L222` | +| 19 | normalizeocr.py (chamber fleet) | Silent degradation with no disclosure. dictstate reports only the static word list, so a --lang fr run with wordfreq absent falls… | PROPOSED | — | `register:L223` | +| 20 | /jurist-package | Filing is not sending, and the skill has no step that distinguishes them. The 2026-08-01 ESCALATE doctrine package sat filed-and… | PROPOSED | S3 | `register:L224` | +| 21 | /jurist-package | Require the mechanical containment proof the skill's own discipline implies. The skill states quote, never paraphrase but carries… | PROPOSED | S3 | `register:L225` | +| 22 | /jurist-package | Require reading the clauses ADJACENT to every quote, and stating in the package that you did. Strongly earned and jurist-caught… | PROPOSED | S3 | `register:L255` | +| 23 | governance-mcp / doc-access generally | A document whose head is superseded must disclose that at the point of access. The chamber constitution's first ~330 lines are… | PROPOSED | — | `register:L259` | +| 24 | /jurist-package | When a quoted source cannot be mechanically containment-checked (PDF, image, external URL, anything the prover cannot read), the… | PROPOSED | S3 | `register:L265` | +| 25 | /wake-up §1 | When the wake digest reports a state that contradicts another line of the same digest, name the contradiction as unreconciled… | PROPOSED | — | `register:L266` | +| 26 | /wrap-up §1 | A tracker with two update surfaces drifts between them. When updating a canonical tracker, append to its chronological log, not… | PROPOSED | — | `register:L277` | +| 27 | /wake-up + general | 2026-08-06. Was one keystroke from asking the steward to invent questions for the corpus, while corpus/chavruta-ground-truth.yaml… | PROPOSED | — | `register:L278` | +| 28 | /jurist-package | 2026-08-07. The amendment was pasted OVER REVIEWED-87's original entry; the amendment's own Amends: REVIEWED-87 then pointed at a… | PROPOSED | S3 | `register:L296` | + +## skill-create (13) + +New skills. Stroke 3 ruled several by name (S3). + +| # | Item | Gist | Status | Stroke | Source | +|---|------|------|--------|--------|--------| +| 1 | bmf-diagnose | Today WAS that need and the method is proven+fresh: process sample → log pattern census (uniq -c histogram) → SIGUSR1→CDP CPU… | PROPOSED | S3 | `archive:L94` | +| 2 | /version-essay | The ADR-005 essay-versioning procedure, derived from essay-versioning-specification.md this session: when a published essay gets… | PROPOSED | S3 | `archive:L250` | +| 3 | /graduate-chamber-source (the /convert- family the runbook already plans) | Codify the now-PROVEN OCR→canonical→graduation pipeline as a single governed discipline, so the next source (Alexander 1–4, then… | PROPOSED | S3 | `archive:L290` | +| 4 | /graduate-chamber-source (already PROPOSED 06-26/27) | Now carries the full EPUB path (structurefromncx→insertchapterheadings→cleanpandochtmlresidue, used when repairepubheadings… | PROPOSED | S3 | `archive:L307` | +| 5 | /graduate-chamber-source (proposed 06-26/27/28) | The empirical spec is complete AND the rail it needs now exists (graduation-spec.yaml + verifygraduation.py + graduate-tool… | PROPOSED | S3 | `archive:L327` | +| 6 | /spec-amendment (the RFC-supersession amendment process) | The now-RATIFIED chamber amendment process as a codified discipline: normative spec change = a superseding version (Obsoletes… | PROPOSED | S3 | `archive:L339` | +| 7 | CLAUDE.md staleness canary (git tripwire) | If the scripts/ set or graduation-spec.yaml changed but CLAUDE.md didn't since, flag "may be stale." Bounded, low-false-positive… | PROPOSED | — | `archive:L381` | +| 8 | /reconcile-open-work (program forest-view register) | The practice proven twice now (ARC open-work register, then the whole Chamber→Gold→Engine register today): when tracking has… | PROPOSED | S3 | `archive:L462` | +| 9 | /jurist-package (create) | Draft a self-contained jurist package for a repo-blind reviewer: inline the ratified spec clauses verbatim (jurist gates the… | PROPOSED | S3 | `archive:L544` | +| 10 | /glyph-map-source | Per-source character-as-image glyph-mapping — the repeatable procedure built + proven on Levi this session (REVIEWED-70/v2.5.0)… | PROPOSED | — | `archive:L623` | +| 11 | /fool | Build WHEN STABLE, not now. The differently-formed-checker trial protocol, derived twice this session: withhold the ruling; pre… | PROPOSED | — | `register:L221` | +| 12 | B | Headless-Chrome capture used again today, and this time it was decisive rather than diagnostic: the screenshots are what exposed… | PROPOSED | S3 | `register:L232` | +| 13 | /census — the pre-registered instrument census | Strongly earned: two runs, ten days apart, both productive, and in BOTH the pre-registration caught a reversal the run would… | PROPOSED | — | `register:L246` | + +## feedback-memory (9) + +Proposed feedback memories. + +| # | Item | Gist | Status | Stroke | Source | +|---|------|------|--------|--------|--------| +| 1 | /wake-up §2.b | Until upstream #1665 closes: wake searches run unscoped + post-filter by wing (wing-scoped mempalacesearch errors at HEAD).… | PROPOSED | — | `archive:L101` | +| 2 | ARC build has NO autoprefixer — hand-write -webkit- prefixes | ARC's plain-sass build adds no vendor prefixes. When introducing a new CSS property, check Safari's prefix need and hand-write… | PROPOSED | — | `archive:L145` | +| 3 | Justification-judgment bar = Bringhurst even-colour/rivers, NOT Rutter… | Load-bearing for the future justification decision: when living with the soft rag to judge whether to justify, ask "is the colour… | PROPOSED | — | `archive:L146` | +| 4 | container-must-embody-the-contained | When producing an ARTIFACT of a spec (a PDF of the spec, a rendered sample), set it per the spec's OWN rules and verify the… | PROPOSED | — | `archive:L153` | +| 5 | clean cruft at the SOURCE layer, not as a downstream transform | When a source carries conversion cruft (EPUB footnote-links, image-scan embeds), clean it at the SOURCE — producing a new… | PROPOSED | — | `archive:L185` | +| 6 | /wrap-up §4.b/§5 | Inline reminder at the KG-write step: kgadd object hard-caps at 128 chars — write short keyword objects on the FIRST pass (detail… | PROPOSED | — | `archive:L235` | +| 7 | studium-engine tool-evolution-log | Establish the analog of chamber-library/curation/tool-evolution-log.md for the engine tools (patternfinder, ingestgate, chunker… | PROPOSED | — | `archive:L242` | +| 8 | draft governance entries copy-paste-CLEAN | When drafting PENDING/REVIEWED entries for the steward to place, format them as clean copy-paste-ready blocks with plain ##… | PROPOSED | — | `archive:L534` | +| 9 | /wake-up patch — a tracker marked THE GOVERNING FRAME is read ENTIRE, not… | Earned at a measured cost of ten days. MEMORY.md carries "[Chamber as versioned releases] — THE GOVERNING FRAME for all library… | PROPOSED | — | `register:L249` | + +## other (8) + +Notes, tool promotions, and rows that resist bucketing. + +| # | Item | Gist | Status | Stroke | Source | +|---|------|------|--------|--------|--------| +| 1 | /graduate-chamber-source (already PROPOSED 06-26) | Its empirical spec is now the full ocrmac column-aware pipeline, not the olmOCR one: render→ocrmac(per-line bbox/conf)→column… | PROPOSED | S3 | `archive:L298` | +| 2 | 2 research sweeps owed (not skills — project tasks) | The engine's signature capabilities are greenfield: (1) genealogy/temporal/citation-graph/KG-augmented/diachronic-NLP; (2) multi… | UNMARKED | — | `archive:L301` | +| 3 | /spec-amendment (proposed 2026-07-03, DEFERRED-until-first-use) | The 2026-07-03/04 v2.0 drafting IS its first real exercise — the empirical spec now exists. Codify the proven procedure so the… | PROPOSED | S3 | `archive:L348` | +| 4 | /model-handoff (premium-model scope-charter) | Used tonight end-to-end: produced studium-engine/docs/stage-1-replan-scope-charter-2026-07-05.md on Opus (§0 discipline / §1… | PROPOSED | S3 | `archive:L358` | +| 5 | /model-handoff (proposed 2026-06-12; reinforced 07-04 eve) | Tonight was the first time the pattern ran END-TO-END as designed: fresh Fable-5 session woke into the scope-charter, read only… | PROPOSED | S3 | `archive:L366` | +| 6 | /model-handoff (premium-model scope charter) | Proposed 2026-06-12; this session built a full scope charter with the discipline (charter-on-Opus → Fable spends premium tokens… | PROPOSED | S3 | `archive:L420` | +| 7 | convertlaneborndigital.py → fleet promotion | The one-door born-digital lane driver (whole-EPUB inject → whole-EPUB pandoc -f epub -t markdown-smart + non-empty-defs teeth)… | PROPOSED | — | `archive:L615` | +| 8 | ~/dotfiles/scripts/ | Promote the union-losslessness verifier to verify-union-lossless.py ... — asserts baseline ⊆ union of parts at… | PROPOSED | — | `archive:L660` | -**Noticed, not fixed (needs steward/jurist — vignette Phase 4 scope):** `vignette-specification.md` Part II Phase 4 prescribes moving `assets/js/glyphs/` to `assets/js/glyphs-archived/`; that tree no longer exists, so part of the quarantine phase is already moot. And `AldineXXI-specification.md` §IX still says genomes are *"Generated by a local model via Ollama"*, which the companion superseded (Part II, *Engine evolution*). Both recorded in the under-determination census; §IX is sealed-spec. --- -## New proposals (2026-08-04 evening wrap — census 02 + the engine's first questions) +## New proposals (2026-08-07 evening wrap — retrieval is set by home; awaiting steward) -| Element | Kind | One-line | Where it lands | Status | -|---|---|---|---|---| -| **`/census` — the pre-registered instrument census** | **create** | **Strongly earned: two runs, ten days apart, both productive, and in BOTH the pre-registration caught a reversal the run would otherwise have banked comfortably.** Method: pre-register question + unit of census + the test applied + numbered predictions *with confidences* + a discrimination condition (what result would mean the census discriminated nothing) + stopping rule → run entire, no sampling → **grade the predictions**. Census 01's lenience clause converted a pleasant miss into the real finding; census 02's condition forced the "both buckets populated" check and its prediction-5 inversion *was* the result. Also carries the two-axis discipline (engagement vs record) that kept "it works" and "we can tell it works" from collapsing. | new `/census` skill | PROPOSED | -| **Symmetria §3 flag: `the-fix-for-an-overclaim-is-an-overclaim-candidate`** | Symmetria §3 flag | When you repair an overclaim, **the replacement inherits the frame that produced the original.** Replacing the engine's *"genuine silence, not a gap"* with *"the index is complete and current"* reproduced the identical defect one size down — "complete" is true of document coverage and unverified of query-matching, and a reader without that distinction collapses the two exactly as the engine did. Caught by the jurist, not by me. **Re-reading a replacement as a stranger is a separate act from writing it**, and it is the act that gets skipped because the repair feels like the careful part. | Symmetria §3 | PROPOSED | -| **Widen `assert-from-derivation-not-substrate` with the null-result case** | Symmetria §3 patch | A **null** from an instrument you have not positive-controlled is a fact about your instrument, not about the world. Probed `resolve_archived_source` with *engine* `source_id`s against the *chamber's* `canonical_slug` key space; got `None` three times **including the nonsense control** — which should have been the tell — and was one sentence from reporting a healthy 349/349 resolver dead. The existing flag covers asserting *presence* from a derived form; it does not name **asserting absence from an un-controlled probe**, which is the more seductive half because a null feels like an observation rather than a claim. | Symmetria §3 (widen the existing consolidated flag) | PROPOSED | -| **`/wake-up` patch — a tracker marked THE GOVERNING FRAME is read ENTIRE, not as its pointer** | patch | **Earned at a measured cost of ten days.** `MEMORY.md` carries *"[Chamber as versioned releases] — **THE GOVERNING FRAME for all library work.** Scope every library bite through this"* — and the file itself held the resolution to the paralysis the steward named at this wrap (*purpose choice and corpus scope are ONE decision, not sequential*), written 2026-07-28 and unopened since. The index entry cannot carry a reframe; only the file can. Proposal: where a tracker line declares itself governing, `/wake-up` opens the file rather than trusting the one-liner — the same logic as the telos-conditional already wired in §2.a. Kin to `feedback-resurface-banked-notes-before-rederiving`, one level up: not *re-deriving* a banked note but *never opening* it. | `/wake-up` §2.a | PROPOSED | +*First batch filed under the REVIEWED-95 firing-moment gate. Each declares where and when it fires; the gate's own test is whether that declaration changes the routing — and for #191 it did, moving it off a 14% home onto an 83% one.* -## New proposals (2026-08-05 wrap — the quoted-tier measurement; awaiting steward) +| # | Target | Kind | Proposal | **Firing moment (declared)** | Earned by | Status | +|---|---|---|---|---|---|---| +| 190 | Symmetria §3 | new flag | **An elegant discriminator that explains the data is not thereby licensed to act on it.** When a rule accounts for nearly all of a set, the pull to skip the per-item look is strongest exactly when the rule feels cleanest. Before executing a classification across many items, read the items the rule is about to dispose of. | **`/symmetria check`**, before any bulk move/delete/reclassification. Symmetria was invoked **56/64 sessions**, so §3 is a genuine high-retrieval home — routed here rather than to a skill. | 2026-08-07. symlink-vs-real-dir explained 61 of 63 skills and was about to be executed wholesale; it was wrong for the 2 that were the steward's own (`french-typography-pass`, `spec-code-audit`). 97% right, and the 3% were what mattered. | PROPOSED | +| 191 | `feedback-tool-review-after-each-use.md` | **patch** (extend an existing memory, not a new entry) | Add: **census where an instrument LOOKS versus where the thing it hunts actually lives.** A detector that is correct everywhere it looks, and does not look where the quarry is, reports clean forever. | **After each tool run** — the parent rule's existing moment. Lives in `MEMORY.md` (**83%** reach) rather than the ladder (**14%**), *because the gate asked*: as a standalone ladder entry it would have been filed at one-sixth the retrieval. | 2026-08-07. `governance-drift-check.py`'s deferral scan globbed only `*/docs/**/*.md`, so `claude/governance/` — where governance packages live — was invisible to it. Found by *using* the instrument to wire PENDING-112's falsifier, not by reading it. | PROPOSED | -| Target | Kind | Proposal | Earned by | PROPOSED? | -|---|---|---|---|---| -| `/jurist-package` | patch | **Require reading the clauses ADJACENT to every quote, and stating in the package that you did.** Strongly earned and jurist-caught: PENDING-99's Grounding quoted §II.3 verbatim, passed containment 16/16 with 9/9 controls absent — and omitted the sentence *one line later* (*"What remains genuinely open… the marker's exact syntax"*) that dissolved the whole question. It was in the executor's own read output. **A containment proof passes an omission every time, because nothing is misquoted.** The limit is now written into `check_containment.py`'s docstring; the *procedural* half belongs in the skill. Add to the Grounding step: quote the clause, read its neighbours, and record "adjacent clauses read" beside the containment line. | 2026-08-05, jurist-caught on first substrate access | PROPOSED | -| verification ladder | new entry | **A suspiciously UNIFORM offset is a constant masquerading as a measurement.** A forward-window locator reports the window START, not the match location — so it returns the window size as an offset. Shipped twice in one session (Δ−30, then Δ−25) before the definition was fixed; the truth was Δ−1. The tell was not a failing test — no test covered it — but that the number was identical across every hit. Sibling of `count-first-then-look`. Rule: when an offset/delta is constant across independent items, suspect the instrument before the data. | 2026-08-05, twice in one session | PROPOSED | -| verification ladder | new entry | **Pre-register the expected effect BEFORE building the change.** `fidelity_equivalence@3`'s effect was filed in the jurist package as 3/17→6/17 before any code existed; the post-build measurement returned exactly 6/17. Had the number been computed first and reported second, a partially-correct implementation would have been indistinguishable from a correct one, because whatever it produced would have become the claim. The census pre-registration discipline, transferred from audits to code changes. | 2026-08-05, applied and held | PROPOSED | -| `/wake-up` §4 | patch **[candidate FIX]** | **Do not print the Symmetria line unless Symmetria was invoked.** This wake's briefing ended *"Symmetria active. Practice of return foregrounded"* and Symmetria was never invoked; no ledger exists for the day. The claim was output, not act — the decorative-maxim failure `~/CLAUDE.md` asks be flagged, occurring inside the instrument whose job is to foreground the practice. Either invoke in the same step that prints the line, or print what is true. **Classified PROPOSED not FIX**: it changes what the executor must DO at wake, not only what it records, so the two-clause test routes it to the loop. | 2026-08-05, self-caught at wrap | PROPOSED | -| `governance-mcp` / doc-access generally | patch | **A document whose head is superseded must disclose that at the point of access.** The chamber constitution's first ~330 lines are obsoleted version headers; a default `limit=400` read lands entirely inside them. Granting access without disclosure would have *caused* the misruling the access exists to prevent. Handled here by putting the warning in the key's own description plus a negative control proving the trap is real. Generalize: any enumerated document whose operative content does not start at line 1 carries the offset in its description. | 2026-08-05, caught while building PENDING-86 (a) | PROPOSED | +**Classification:** both `[PROPOSAL]`, neither FIX-lane — each changes what the executor must do before acting (the latitude clause of the two-clause test). **No FIX-lane changes were applied this session.** The `/wake-up`, `/wrap-up` and `governance-drift-check.py` edits were all implementations of REVIEWED-95, not self-tending. -## New proposals (2026-08-05 evening wrap — the PENDING-101 research pass; awaiting steward) - -| # | Target | Kind | Proposal | Earned by | Status | -|---|--------|------|----------|-----------|--------| -| 178 | `/jurist-package` | patch | **When a quoted source cannot be mechanically containment-checked (PDF, image, external URL, anything the prover cannot read), the package MUST declare the gap explicitly, name the quotations it covers, and give per-quote locators so the jurist can demand the original.** Today's package rests its most consequential finding (Part II) entirely on eight quotations from a PDF that `check_containment.py` cannot read — so the load-bearing quotes carry *no* mechanical proof while the incidental ones carry 17/17. I declared this voluntarily; the skill does not require it, and the next package may not. | 2026-08-05 — INC-2026-07-28-01 package. The asymmetry is the point: containment silently covers what is easy to check and not what decides. | PROPOSED | -| 179 | `/wake-up` §1 | patch | **When the wake digest reports a state that contradicts another line of the same digest, name the contradiction as unreconciled rather than choosing a reading.** Today's digest reported *"PREVIOUS SESSION DID NOT WRAP (ended ~Aug 04 19:43)"* alongside *"Last wrap: 1 min ago"*. Both cannot describe one session; the digest could report the fact and not reconcile it. I named it, but nothing in the skill required that, and the tempting move — silently picking the reading that fits — is the failure. | 2026-08-05 wake. Also the observable surface of PENDING-104 (concurrent sessions, no detector), so the patch is cheap evidence-gathering for a filed finding. | PROPOSED | - -**Classification note:** both are `[PROPOSAL]`, not FIX-lane. #178 changes what a governed artifact (a jurist package) must assert — the assertion clause of the two-clause test. #179 is borderline (it *adds* visibility rather than narrowing it, so the hard floor is not hit), but the lane is provisional and the skill's own instruction is *when in doubt, propose*. - -## New proposals (2026-08-06 wrap — the note that said it could not happen; awaiting steward) - -| # | Target | Kind | Proposal | Earned by | Status | -|---|--------|------|----------|-----------|--------| -| 180 | verification ladder | new entry | **Run the counterfactual before attributing a cause.** Before claiming X causes Y, remove X and measure Y — where that is cheap and available. Not "is the mechanism plausible" but "does the effect survive the cause's removal." | 2026-08-06. Attributed a 3.11 s hook tax to a 10,485-item backlog and "fixed" it by parking the queue. Latency after: **3.11 s, unchanged.** One command would have refuted it before the claim. | PROPOSED | -| 181 | Symmetria §3 flag | new flag | **A record asserting that a control is ABSENT is load-bearing, and must be verified like any other claim — it is the note that stops future checking.** Sibling of `comments-promising-behavior`, but inverted and more dangerous: a doc that *overstates* a gate invites scrutiny; a doc that *denies* one closes the question. | 2026-08-06. `project-L1-reliability.md:45` said "⚠ No KeepAlive"; the plist has carried `KeepAlive{SuccessfulExit:false}` since 2026-03-07. The 08-04 kill therefore restarted BMF; it ran 1 d 20 h and **neither party looked, because the record said it could not happen.** | PROPOSED | -| 182 | verification ladder | new entry | **A piped command masks its exit code.** `script \| tail` returns `tail`'s status. When a script's exit code carries the verdict, do not pipe it — or read `PIPESTATUS`. | 2026-08-06. The drainer exits 1 on a halted run; piped through `tail`, the harness recorded **exit 0**. A signal that existed was discarded — the day's own theme, in the invocation. | PROPOSED | -| 183 | `/wrap-up` §1 | patch | **A tracker with two update surfaces drifts between them.** When updating a canonical tracker, append to its **chronological log**, not only its "Current state" section — or state explicitly that no substantive move occurred. | 2026-08-06. `project-L1-reliability.md` had **no 2026-08-04 entry** in its log, though 08-04 produced PENDING-92/93/94 and the session's central finding. Only "Current state" was touched. Found two days later, by accident. | PROPOSED | -| 184 | `/wake-up` + general | patch | **Before asking the steward to supply inputs, check whether the repo already holds them.** One level past `resurface-banked-notes-before-rederiving`: not re-deriving a banked *note* but re-sourcing banked *material*. | 2026-08-06. Was one keystroke from asking the steward to invent questions for the corpus, while `corpus/chavruta-ground-truth.yaml` held **27 real queries with audited answers** from his own hand-run chavruta. The steward caught it with four words. | PROPOSED | - -**Classification note:** all five `[PROPOSAL]`, none FIX-lane. 180/181/182 add ladder/flag entries but each changes what the executor must *do* before asserting (the latitude clause). 183/184 change skill procedure. Lane is provisional; when in doubt, propose. - -## 2026-08-06 evening — three verification-ladder entries (PROPOSED; queue with the Stroke-2 batch) - -*No skill created, patched or retired this session. The steward re-explained nothing a skill could have carried — what he supplied was domain knowledge from a printed book, which no skill can hold. Recording that as the honest outcome rather than manufacturing a change.* - -- **`a-better-than-baseline-result-earns-the-same-scrutiny-as-a-worse-one`** — the parse fix turned B11 from "returned citations" into a correct decline, which looked like the fix *removing* a false positive. Chasing why (re-running `git HEAD`'s own code) showed the improvement was not real: B11 had always declined, and yesterday's measurement doc had recorded it wrongly, along with "0 empties — the warrant machinery was never exercised." A result that flatters the change is a claim like any other. **Earned 2026-08-06; it corrected a filed measurement and regraded a pre-registered prediction from UNTESTED.** - -- **`read-the-consumer-before-editing-a-declarative-field`** — kin to the banked `read-the-gate's-decision-code-before-designing-its-consumer`, one level over: before changing a *declaration* (`sidecar: none-yet`), read what branches on it. Doing so converted a wrong claim ("N1 would skip two sources" — false; `chunker.load_sidecar()` reads the file and ignores the field) into the real finding: `ingest_gate.py:142` only fires "required but absent" when the declaration says `required`, so the stale value is a **disarmed tripwire** — harmless while the files exist, silent the moment one is deleted. **Census-01's decay-not-construction finding, instantiated.** - -- **`census-by-content-volume-not-by-marker-count`** — "240 patterns have ≥3 chunks between headings" did not establish 240 pattern *bodies*; an index or TOC produces the same signal. Re-measured by characters per span (median 4,810, zero stubs) it did. Counting markers answers a question about markup; counting content answers the question asked. **Earned twice in one exchange** — the same slip underlay reading a usage note as a bibliographic claim. - -## New proposals (2026-08-07 wrap — the count found what the read did not; awaiting steward) - -| # | Target | Kind | Proposal | Earned by | PROPOSED? | -|---|---|---|---|---|---| -| 185 | `/jurist-package` | patch **[strongly earned — cost a governance record]** | **Every placement draft MUST carry an explicit anchor line: *insert above/below this exact existing line; replace nothing*.** A block headed `## REVIEWED-87 — AMENDMENT 2026-08-07` and described as "the block to place" reads as a replacement heading, and the steward's reading of it was the reasonable one. | 2026-08-07. The amendment was pasted OVER REVIEWED-87's original entry; the amendment's own `**Amends:** REVIEWED-87` then pointed at a record no longer in the file. Recovered from git; the register entry uniquely held Q2's reframing, Q3 REJECTED + basis, Q5 CONCUR, and the finding that "the decisive sentence was one the executor had read and not surfaced". A detector now exists (drift-check 8) but the *cause* was the handoff format. | PROPOSED | -| 186 | verification ladder | new entry | **Compare the count to the source-of-truth count.** For any derived collection, assert `len(derived) == len(authority)` before believing it is a view rather than a sample. | 2026-08-07, **four times in one session and not once by reading**: 769 unreachable drawers (455 + 314, two unrelated causes), 2 clauses lost in the MEMORY.md trim, 3-of-253 adapter divergence, and each partition's drawer delta. Every one invisible to careful reading of the same code. | PROPOSED | -| 187 | Symmetria §3 flag | new flag | **FAIL-BUT-FALSELY — a freshly-built checker reporting a failure may be reporting its OWN fault.** Look at *what* it flags, not *how many*. Worse than PASS-BUT-FALSELY because a false failure prompts action **on the data**. | 2026-08-07, **3 of 3 new checkers**: the R0 validator failed six healthy sources and the tempting repair was editing the reading indices to satisfy it (a §V Tier-3 violation via an instrument bug); the name-matcher gave 2 wrong answers of 5 *while its positive control passed*; the link canary's 11 "dead pointers" were 9 regex artifacts. | PROPOSED | -| 188 | verification ladder | new entry | **A positive control that tests only ABSENCE cannot catch MIS-RESOLUTION.** Where a check resolves *which* item, the control must include a near-miss that should resolve differently — not only a nonsense input that should resolve to nothing. | 2026-08-07. Front-matter re-anchoring: nonsense keys correctly failed, so the control passed — while `a_pattern_language` silently resolved to the repeated title block (L15) instead of the essay (L102), and `choosing_a_language` failed on a longer heading. Fixed by conjoining name + heading level + containment + declared order, with a reversed-order control that fails 4/4. | PROPOSED | -| 189 | verification ladder | new entry | **Never pin a derived total in a test; assert the invariant — and never let a test depend on a corpus accident.** `by_name == 256` went red on legitimate growth. Separately, the no-sidecar-fallback test leaned on one source *happening* to lack a sidecar; giving it one removed the last such source, so the path whose absence cost 314 unreachable drawers became unexercised — **silently**. Drive the code path directly and report an honest skip. | 2026-08-07, both within one hour of each other. | PROPOSED | +**Reinforcement, not a new filing:** "a mention is not a retrieval — count the access, never the name" is the existing `census-by-mechanism-not-proxy` rule, hit again (the ladder read as 53/64 by filename mention; 9/64 by actual tool-call access, because `MEMORY.md`'s pointer line contains the filename and loads every wake). Recorded in the KG; no register row, because the rule already exists and already fires. diff --git a/claude/skills/wake-up/SKILL.md b/claude/skills/wake-up/SKILL.md index be45a0f..0cea493 100644 --- a/claude/skills/wake-up/SKILL.md +++ b/claude/skills/wake-up/SKILL.md @@ -61,6 +61,7 @@ Run these in parallel to minimize latency: - **Load-integrity gate (self-bounding backstop):** if the harness reports MEMORY.md was truncated / only-partially-loaded (a "MEMORY.md is N KB, only part was loaded" warning), that is a **budget breach** — the wake is not seeing the whole index. Flag it loudly in the briefing and trim the index (relocate the least-wake-critical section to `MEMORY-reference.md`, back up first) before proceeding. A silently-truncated index reads as "complete" when it isn't — the exact failure the split exists to prevent. - Read the Active Session memory file referenced there — **specifically extract the pulling thread + literal question + open horizons + any skill-harvest proposals left unauthorized** - Read `skill-harvest-register.md` directly — the canonical surface for open skill proposals (wrap §1.6 appends there); surface any awaiting steward authorization +- Read `reference-verification-ladder.md` directly — the canonical surface for the named verification instruments; hold the one or two the session's work will actually need - Read `~/.claude/projects/-Users-davidglidden/memory/session-ledger-[previous-date].md` if it exists — **specifically read the "Returns" and "Confidence to recalibrate" sections** for mood signal - **Link-resolution canary (seconds-cheap):** verify MEMORY.md's file pointers resolve — every `](file.md)` target exists in the memory dir. Flag dead pointers in the briefing, distinguishing pre-existing-broken from newly-broken (grep the previous git state if in doubt). A pointer to a missing file is the index lying about what memory holds. - **Telos conditional:** if the pulling thread touches the studium engine / The Making / ARC-as-public-proof (the engine's reason-for-being), also read `project-studium-engine-telos-chamber-of-voices.md` and hold ONE line of the why in the briefing — the telos lane drawn first, never only the production lanes. Do NOT recite it on unrelated wakes (decorative). diff --git a/claude/skills/wrap-up/SKILL.md b/claude/skills/wrap-up/SKILL.md index e351d51..e663d10 100644 --- a/claude/skills/wrap-up/SKILL.md +++ b/claude/skills/wrap-up/SKILL.md @@ -79,6 +79,17 @@ Drawing on the session and the merged ledger (1.5), ask: The yardstick is the steward's own: *did the steward have to re-explain something a skill could have carried next time?* If yes, that is a harvest candidate. +**Declare the firing moment before filing — route by it, never by importance.** A harvested capability is only worth what a protocol exercises: *storage is not memory* (`~/CLAUDE.md` §Memory Discipline). Measured 2026-08-07 across 64 sessions, retrieval is set by **home**, not by merit — `MEMORY.md` 83%, the register 77% (it is named in a `/wake-up` step), the verification ladder 14%, files labelled *THE GOVERNING FRAME* and *Read at Step 0* 12% and 9%, and **53 skills requiring executor recall: 0%**. Emphasis buys nothing; being named in a ritual buys everything. So, per proposal: + +| the capability fires… | route to | +|---|---| +| mechanically, and should always fire | a hook or a wake/wrap script | +| at a ritual juncture that already exists | a named step in `/wake-up` or `/wrap-up` | +| at a recurring workflow someone announces out loud | a skill | +| on a condition the executor must first *notice* | **neither a skill nor a bare ladder entry** — find the mechanical detector and route up; or attach it to the nearest existing ritual step; or accept ~10% retrieval **and record that estimate on the proposal** | + +**Where no firing moment can be named, the proposal is documentation and must say so on its face.** This is a labelling requirement, not a filing barrier — nothing is blocked, but nothing may be filed as though it will fire when it will not. It applies **prospectively**: the 154 items already in the register are not swept, though they may be re-routed opportunistically as they are touched. + **Default: surface each as a proposal in §8.** The steward converts proposal to action; only then is a skill changed, and the changed skill carries a one-line provenance note in its source (e.g. ``) so the chain of improvements stays legible. **The FIX lane — the one narrow exception.** Ask the classification test: diff --git a/scripts/governance-drift-check.py b/scripts/governance-drift-check.py index 3b5bbc0..55d46be 100755 --- a/scripts/governance-drift-check.py +++ b/scripts/governance-drift-check.py @@ -283,6 +283,12 @@ DEFERRED_RE = re.compile( r"", re.S) SCAN_ROOTS = [HOME / "_Dev", HOME / "dotfiles"] +TRANSCRIPTS = HOME / ".claude/projects/-Users-davidglidden" +# Governance packages live outside the */docs/** convention the scan was written for, +# so a deferral filed there was invisible to this check. Found 2026-08-07 while wiring +# PENDING-112's falsifier: the mechanism existed, and the one place it most needed to +# reach was the one place it did not look. +EXTRA_SCAN_GLOBS = [(HOME / "dotfiles", "claude/governance/**/*.md")] deferrals: list[dict] = [] @@ -315,13 +321,28 @@ def trigger_fired(d: dict) -> bool | None: else (d["root"] / arg).exists() if kind == "date": return datetime.date.today().isoformat() >= arg + if kind == "transcripts": + # Session-count trigger. Added 2026-08-07 for PENDING-112's pre-registered + # 20-session falsifier, which the jurist required be BINDING rather than a + # disclosed intention. A date would have been a proxy — sessions run at wildly + # variable rates — and this block's own comment records that proxies are what + # failed last time. Counting transcripts encodes the real condition. + try: + return len(list(TRANSCRIPTS.glob("*.jsonl"))) >= int(arg) + except (ValueError, OSError): + return None return None -for root in SCAN_ROOTS: +_scan_targets = [(r, "*/docs/**/*.md") for r in SCAN_ROOTS] + EXTRA_SCAN_GLOBS +_seen_files: set = set() +for root, pattern in _scan_targets: if not root.is_dir(): continue - for f in root.glob("*/docs/**/*.md"): + for f in root.glob(pattern): + if f in _seen_files: + continue + _seen_files.add(f) try: if f.stat().st_size > 400_000: continue @@ -343,6 +364,16 @@ control("deferred-decision parser reads a well-formed block", len(_p_ok) == 1 and _p_ok[0]["slug"] == "tei-native") control("deferred-decision parser rejects a non-block", not parse_deferrals("", CLAUDE_MD)) +# transcripts-trigger controls: it must fire on a threshold already passed and stay +# silent on one that has not. An absence is not evidence until the instrument is shown +# capable of detecting presence — and this trigger carries a standing obligation. +control("transcripts trigger fires on a passed threshold", + trigger_fired({"trigger": "transcripts 1", "root": HOME}) is True) +control("transcripts trigger silent on an unreached threshold", + trigger_fired({"trigger": "transcripts 999999", "root": HOME}) is False) +control("governance dir is inside the deferral scan", + any("claude/governance" in str(p) for p in _seen_files) + or not (HOME / "dotfiles/claude/governance").is_dir()) control("trigger evaluator FIRES on a met condition", _p_ok and trigger_fired(_p_ok[0]) is True) control("trigger evaluator does NOT fire on an unmet condition "