Executed under the 2026-07-19 FULL REVIEW Stroke-4 authorization ("register compaction:
AUTHORIZED"), which had sat unexecuted for six weeks.
Split, not collapsed. Stroke 4's prescribed method — "ruled items collapse to verdict
lines; detail stays in git history" — could not reach the goal: of 190 table rows only 13
were ruled. The register was large with OPEN proposals, not settled history, so
collapsing every ruled row would have removed ~7% and left it over the read cap.
Method taken instead is the MEMORY.md precedent (213KB -> 17KB): live index plus detail
layer. skill-harvest-register.md now carries the frontmatter, the explainer, the
authoritative 2026-07-19 FULL REVIEW block, and every open proposal as one indexed line
with a pointer to its archive section. skill-harvest-archive.md is the previous register
verbatim.
Lossless by construction, not by git recovery: the archive tail is byte-identical to the
original body over 166,027 bytes, and all 177 open rows are indexed. Unmarked rows are
carried as PROPOSED? — unmarked is open until ruled, never silently closed.
166,589 -> 44,421 bytes (73%), roughly 41,600 -> 10,900 tokens, so the /wake-up step that
exists to surface open proposals can complete for the first time since the 2026-07-22
tripwire. This increases what reaches the steward from zero to 177; the hard floor it
must not cross is reducing that, which it does not.
Correction to the estimate filed in the PENDING-88 amendment: I sized this at ~19 KB
assuming ~110 bytes per entry. Actual is 44 KB at ~250 bytes per entry — under the cap,
but my figure was wrong.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc
163 KiB
name, description, metadata
| name | description | metadata | ||||
|---|---|---|---|---|---|---|
| skill-harvest-archive | Detail layer for the skill-harvest register — full rationale, origin and status prose for every proposal, open and ruled. Append-only. The live index lives in skill-harvest-register.md. |
|
Skill-harvest archive — the detail layer
Split from skill-harvest-register.md on 2026-08-01 under the 2026-07-19 FULL REVIEW Stroke 4 authorization ("register compaction: AUTHORIZED"). Split, not collapsed — Stroke 4's prescribed method ("ruled items collapse to verdict lines") could not reach the goal: only 13 of 190 rows were ruled, so the register was large with OPEN proposals, not settled history. This file is the previous register verbatim and complete — nothing dropped, summarised or reworded, so losslessness does not depend on git recovery. The live index carries every open proposal as one line and points back here.
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).
⚖ FULL REVIEW 2026-07-19 (late night) — steward ruled ALL FOUR STROKES
This block is authoritative; per-section statuses below are superseded where they conflict. Physical compaction of the register = the same housekeeping slot as Stroke 2. (The 2026-07-12 steward request for this review is hereby discharged; REVIEWED-55 was separately resolved stale the same sitting — placed :489 since 07-12, PENDING-55 closed.)
Stroke 1 — Symmetria §3: consolidate, don't accumulate — BUILT SAME SITTING. Three consolidated flags + one widening landed in the skill (provenance-commented): assert-from-derivation-not-substrate (consolidates: claim-from-derived-artifact 07-03 jurist-elevated 3× · fuzzy-matcher membership 06-15 4× · soft-classification-over-checkable-claim 07-13 steward-named 5×/day · answer-from-training-before-banked-record 07-14 · re-derived-instructions 07-01 · enter-repo-read-docs-first 07-09) · completion-is-a-tripwire (recurrence-promoted per the governed watch-item pattern; folds gate-suite-blind-to-failure-class 07-07 · closable-now-is-a-claim 07-16 · reconcile-before-"finally" 07-17) · the-say-do-seam (record-asserts-applied-before-the-act · grounding-quoted-but-not-traced · consequence-trace-one-level-shallow — the 07-19 family) · trust-prior-pass-frame WIDENED (per-tier-demonstration 07-12 — the flag the steward queued — + claim-scope 06-28). NOT promoted (stay KG drift-patterns, wake-surfaced): probe-confirms-hypothesis · latency-isolation-first · reassuring-verb · tool-creep-into-substrate · solve-constraint-by-discarding-value · lost-the-forest · provenance-is-part-of-process · graduated-with-flagged-gap · convert-steward-state (redundant w/ contamination directives) · theorize-before-measuring-layout (redundant w/ causal-story) · reinvent-governed-DESIGN (widens the existing KG entry).
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.
Stroke 3 — skills. BUILD (next session slots): /jurist-package (5-for-5, jurist-endorsed; ABSORBS /spec-amendment — supersession procedure goes to the ladder) · /model-handoff (3 proven uses + the path-verification authoring rule). CONFIRMED build-on-need (standing): /reconcile-open-work · /clone-test-runtime-fix · bmf-diagnose · /pre-build-audit · /measure-render · /version-essay. HOLD, named dependency: /graduate-chamber-source — build AFTER the one-door lane ruling (Eichmann pilot report §8.2); it would codify the very pipeline the ruling will change. BUILT SAME SITTING (small authorized patches): wake-up link-resolution canary · wake-up telos-conditional · feedback-governance-drafting-copy-paste-clean.md. RETIRED/REJECTED: mempalace-diagnose (wind-down done) · /wrap-up §4.a tags patch (overtaken by the 07-07 rewiring) · CLAUDE.md staleness canary (doc-currency-on-wrap covers it) · Fowler bad-smells lens (redundant w/ code-review) · /spec-amendment standalone (merged into /jurist-package). /vignette stays DEFERRED (condition unchanged since 06-05).
Stroke 4 — register compaction: AUTHORIZED; same slot as Stroke 2 (ruled items collapse to verdict lines; detail stays in git history — the register exceeded read caps 2026-07-19, its own tripwire).
Post-review additions to the Stroke-2 batch list (same authorization — "all earned ladder entries"; harvested from the pilot-ruling block later the same night): byte-check-hand-classifications-at-source-before-citing (two of my classes AND the jurist's Q3 assessment overturned by bytes — the F7 lesson, jurist-directed at F3's own numbers, discharged strengthening the finding) · coverage-metrics-are-blind-to-block-moves (jurist-minted from their own refuted assessment: any permutation preserving local windows passes coverage; refuted-by-default unless demonstrated on a block move — the demonstrated-not-composed instrument). No other harvest from the late-night block — the session's harvest WAS the ruled review; nothing manufactured.
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.
Harvest 2026-07-20 (the /jurist-package build + PENDING-67/F2/v2.3.0 arc)
BUILT this session (was authorized "build next" at the 07-19 harvest review): /jurist-package — ~/dotfiles/claude/skills/jurist-package/SKILL.md (symlinked into ~/.claude/skills/; the authored-skill convention). Grounded in the 2 proven exemplars, not recall. Proven 2× same session (the PENDING-67 package + the F2 correction relay, both hook-passed on first write, both ruled). Absorbs /spec-amendment (supersession → the ladder, as ruled).
BUILT 2026-07-22: /model-handoff — ~/dotfiles/claude/skills/model-handoff/SKILL.md (symlinked into ~/.claude/skills/; authored-skill convention). Grounded in the proven exemplar (studium-engine/docs/stage-1-planning-brief-2026-06-12.md, read this session) + the /jurist-package structure, not recall. Carries the §0–§5 charter skeleton, the core law (burn = sprawl + re-derivation; artifacts-not-chat; clear+wake-not-switch-in-place; reject query-the-graph), and the path-verification authoring rule (the one rule the 3 proven uses earned). Built as a proportionate remote bite while the steward was away (PENDING-69 arc at its steward boundary); the register compaction + ladder batch-append remain the next FRESH-session housekeeping slot — the register exceeds read caps (34k tokens; the tripwire fired at this session's wake), so it wants a fresh session, not a long-session cram.
PATCH — BUILT 2026-07-20 (steward-authorized):
| Skill | Kind | One-line | Origin | Status |
|---|---|---|---|---|
/jurist-package |
patch | Added to the Load-bearing disciplines: "Trace a ruled finding's inference, not just its words" — when transcribing a RULED finding into a package claim / Addendum correction / constitutional prose, a faithful transcription of the WORDS can invert the INFERENCE; ask which way the inference runs and whether the sentence produces the reading the ruling was written to prevent. Earned HARD twice, both jurist-caught: (a) the PENDING-67 Q1 lean read §V's prohibitions but missed §V's silence on the enforcement locus — the gap itself; (b) the v2.3.0 Part-A draft wrote "re-conversion is not vacuous," the identical misreading the Q2 ruling was written to prevent, inside that very subsection. Extends the existing consequence-trace (which covers the PACKAGE's own claims) to the act of transcribing someone else's ruled finding. | 2026-07-20 (2× jurist-caught) | BUILT 2026-07-20 (provenance comment in SKILL.md; steward-authorized) |
(One candidate, load-bearing: it recurred twice in one session and the jurist caught both. The skill carries the right discipline for its own claims but not for the transcription act; the patch closes exactly the gap I fell through — the yardstick met, the jurist had to correct the same shape twice.)
Harvest 2026-07-27 (the two-supersessions session — 2 candidates, both evidence-backed)
| Skill | Kind | One-line | Origin | Status |
|---|---|---|---|---|
/wake-up |
patch | Substrate-check the briefing's backlog section. §3's "What's unresolved" currently lets REVIEWED.md's "If AUTHORIZED: build …" clauses be read as status. They are forward instructions, not status — I told the steward at wake that REVIEWED-72/73/74 were all authorized-but-unbuilt; 2 of 3 were already built and landed (v2.6.0), and the wave I reported as blocked was already unblocked. Proposed patch: before listing an authorized item as outstanding, verify against the substrate (code / spec header / repo CLAUDE.md), and say "verified against substrate" or "unverified" in the briefing. The wake briefing is a claim surface like any other, and it is the highest-leverage place for a false claim to land — it shapes the steward's picture of their own project before any work begins. | 2026-07-27 (steward-visible error, self-caught within the same turn) | BUILT 2026-07-27 (steward-authorized; provenance comment in SKILL.md §3) |
/field-divergence-sweep |
create | Sweep for one field computed in more than one place, then derive the rule from the consumer. Method proven this session at steward direction, and the yield was not zero on the first run: grep the fleet for multi-site computations of the same field → for each, ask what must a consumer be able to DO with this value and derive the rule from that (never pick the surviving implementation — that is selection, not derivation) → enumerate the shapes where each existing candidate happens to be right and test all of them (complementary-correctness defeats sampling) → collapse to ONE imported implementation → any migration RECOMPUTES, never does arithmetic on the stored value. Found source_lines wrong twice (including in a fix committed an hour earlier; lintott off by 308 lines), and cleared sha256 + the tokenizers with an empirical cross-check. Same probe as the no-op orphan sweep, aimed at values instead of stages. Steward: "this instance says the yield won't be zero." |
2026-07-27 (steward-directed; grounded in feedback-derive-the-rule-from-the-consumer-not-from-the-survivor) | BUILT 2026-07-27 — ~/dotfiles/claude/skills/field-divergence-sweep/SKILL.md, symlinked into ~/.claude/skills/ (authored-skill convention); grounded in the proven source_lines run, not recall |
BOTH AUTHORIZED + BUILT 2026-07-27 (same sitting). (Both are load-bearing rather than tidy-up: the first is a correction to a briefing surface that misled the steward, the second is a method that found a live 308-line coordinate error on its first run. No other harvest — the session's other lessons are banked as feedback memories, not skills.)
Open proposals
Full review with steward 2026-06-05 (housekeeping session) — every item ruled, evidence-checked against the KG drift/built record. Verdicts below.
| Skill | Kind | One-line | Origin | Status |
|---|---|---|---|---|
/spec-code-audit |
create | Audit live code against a spec-contract section clause-by-clause; classify each gap; deliverable = gap-map. | 2026-05-29 | BUILT 2026-06-07 — deferral condition met from the ARC direction (Seb's completeness question revived the justification; steward authorized build-from-this-run). Generalizes the four-pass bidirectional method proven on the full ARC audit (_audits/spec-code-full-audit-2026-06-07.md: 172 findings, 66-agent fan-out, adversarial refutation, 2 kills). Skill at ~/.claude/skills/spec-code-audit/. Serves L1's first spec-vs-code audit as originally intended. |
bmf-diagnose |
create | N6 EXPLAIN-first root-cause method for L1/BMF storage pathologies. |
2026-05-27 | AUTHORIZED 2026-06-05 (build at next L1 diagnostic need). |
mempalace-diagnose (was mcp-drop-diagnose) |
create | Upstream-issue-first method for MemPalace/MCP failures (proved on #1495; HNSW quarantine + search errors 2026-06-05). | 2026-06-02 | AUTHORIZED 2026-06-05. Merge with bmf-diagnose RETRACTED same evening — the merge was itself the MemPalace≠BMF conflation (steward's 3rd correction): one substrate we build, one we merely use. Two skills, two names. |
/pre-build-audit |
create | The four-pass scope-claimed-vs-scope-tested per claim, with substrate evidence discipline. | 2026-05-28 | AUTHORIZED 2026-06-05, build-on-next-big-build (cascade Stage 2 / vignette Phase 1 / L1). |
/vignette |
create | Phase-α vignette genome generation under Symmetria. | 2026-05-28 | DEFERRED (until vignette Phase 2) — condition unchanged, re-confirmed 2026-06-05. |
Built / authorized (lineage — for context, not action)
/landscape-scan+/tooling-scan(the scan-skill family, per-workstream lens cards) — built + in use (2026-05-27)./wrap-up§1.6 skill-harvest step +/wake-up§2.a/§3 glance — the practice itself (PENDING-23, 2026-05-27).- Chaîne-d'union clasp across wake / Symmetria / wrap (2026-05-26).
/wrap-up§4.0 — MemPalace liveness-ping-before-diary; steward-authorized + applied (2026-06-02; #1495 cold-start drop resilience, so a silent drop never eats the wrap filing)./wrap-up§6.5 dotfiles session-state commit+push (scoped add, session-stamped message, preservation-not-modification boundary) +/wake-up§2.c read-only push-check — steward-proposed and authorized conversationally, built same session (2026-06-05 housekeeping). Closes the governance-state single-disk latency thatsysupdate's calendar cadence left open; sysupdate keeps the catch-all sweep + Brewfile dump.- Symmetria §3 — two flags added (2026-06-05, authorized + built same evening): trust-prior-pass-frame (frame-inheritance from prior verification into untested domain) + census-through-truncation (count first, then look). Closes the long-standing §3 patch proposal.
reference-verification-ladder.md(2026-06-05, authorized + built same evening): one canonical home for the proven instruments (byte-identical compile gate, expected-delta/delta-classification, censused-routes, measure-toolchain-before-spec, compiled-selector grep, governed-char byte gate, WCAG compute, fresh-clone gate, live-fetch gate, per-type×per-viewport, re-verify-at-extension-scope). Ends the per-wrap re-proposing; future instruments append there, not here./arc-typesetREJECTED (2026-06-05): superseded — §I.k.b/c moved the mechanical pass into the build; LINT class carries judgment warnings; multilingual §2.5 carries authoring notes;french-typography-passcovers the French preparation layer. Do not re-propose without a new gap.- MEMORY.md two-file self-bounding architecture — BUILT 2026-07-06 (steward-authorized; closes three long-open proposals below). MEMORY.md 213KB→17KB (91.8%); split into
MEMORY.md(wake-loaded live index) +MEMORY-reference.md(lossless history + reference layer). Closes: (a) the 2026-06-08/wrap-up§3 compress-at-demotion patch → built as the richer demote-on-promote rule (prior Active Session relocates toMEMORY-reference.mdin the same move; trackers stay one-liners; budget check); (b) the 2026-06-08 deeper MEMORY.md reduction proposal → done (the reference-layer split it described, plus the finding that the fat 8KB ARC tracker line — not just the archive — was the real bloat); (c) the wake-canary (2026-06-07) → the truncation/load-integrity half is now a standing/wake-up§2.a gate (truncated load = loud flag + trim). Still open from the wake-canary proposal: the link-resolution half (every pointer +[[link]]resolves at every wake) was applied once as a verification instrument this pass but is NOT yet a standing wake step — remains PROPOSED. Root-cause framing: the recurrence was role-conflation (one file doing live-index + archive + reference), no self-bounding, no load-integrity gate; the compress-in-place pass of 2026-06-08 attacked the level not the class, so it re-bloated. /wake-up+/wrap-uprewired off MemPalace → the files layer — BUILT 2026-07-07 (steward-directed; palace-memory wind-down STAGED PLAN item 3, project-mempalace-winddown). wake §2.b (the MemPalace 5-step protocol) → files-layer reconstruction (recentsession-*.mdfor thread trajectory;grep drift-pattern knowledge-graph.jsonlreplaces thekg_query claude-coderitual; grep-the-files for depth); §2.e upgrade-check RETIRED; §5 constraints inverted (files primary; nomempalace_*for palace-memory). wrap §4 (drawer+diary writes) → the session file IS the record; §5 (kg_add/kg_invalidate) → append JSONL triples toknowledge-graph.jsonl(soft-invalidate viavalid_to); §8 template MemPalace lines →KG appended:. Typography palace KEPT (separate instance, CLI). Both carry 2026-07-07 provenance notes; verified no livemempalace_*calls remain (grep), headings intact. Decommission remainder (own slot, own 'tomorrow'): items 1 (disable hooks), 2 (remove the MCP server), 4 (cold-archive) + the owed BMF lessons report.
Candidate patches not yet proposed (watch-list)
Register wiring (authorized 2026-05-29)— APPLIED 2026-06-05 (evening wrap): wrap §1.6 now appends here; wake §2.a now reads here. Provenance notes in both skills.- A Symmetria §3 flag for
verify-counts-two-ways/ mechanical-sweeps-finicky (saved asfeedback-verify-counts-two-ways.md; may graduate to a flag if it recurs).
New proposals (2026-06-06 wrap — awaiting steward)
| Skill | Kind | One-line | Origin | Status |
|---|---|---|---|---|
bmf-diagnose |
build now (already AUTHORIZED 2026-06-05 "at next L1 diagnostic need") | Today WAS that need and the method is proven+fresh: process sample → log pattern census (uniq -c histogram) → SIGUSR1→CDP CPU profile (working script at /tmp/profile-mindfabric.mjs — fold in before /tmp clears) → read-only SQLite census (?mode=ro URI) → evidence preservation to l1-reliability/evidence/ → restart-with-capture. Hand-derived today over ~2h; the skill carries it next time in minutes. |
2026-06-06 mindfabric-00 forensics | PROPOSED (build, not authorize — authorization exists) |
New proposals (2026-06-05 evening wrap — awaiting steward)
| Skill | Kind | One-line | Origin | Status |
|---|---|---|---|---|
/wrap-up §5 |
patch | Palace-fully-derived, part 1: mirror every kg_add/kg_invalidate made at wrap into the session memory file (one line each), so KG facts — the last palace-only data — become file-backed and the palace becomes wholly disposable/rebuildable. |
2026-06-05 MemPalace forensics + tooling scan part (b) | PROPOSED |
/wake-up §2.b |
patch | Until upstream #1665 closes: wake searches run unscoped + post-filter by wing (wing-scoped mempalace_search errors at HEAD). Remove when the feedback memory feedback-mempalace-wing-filter-broken is deleted. |
2026-06-05 diagnosis | PROPOSED |
/wake-up (new step or §2 check) |
patch | Wake canary: seconds-cheap probe at wake — every MEMORY.md pointer + [[link]] resolves to an existing memory file; flag dead pointers and load-bearing orphans. Lesson 7 of substrate-failure-lessons-2026-06-07 (BM false-clean sync) applied to our own index, which the harness already part-loads with a warning. |
2026-06-07 evening (memory-verdicts night) | PROPOSED |
New proposals (2026-06-08 — harvested from Fowler, Refactoring 2nd ed. chs 1–3, awaiting steward)
Read in the Chamber before Wave 3R. Three elements are genuinely NEW to our toolkit (not already carried by the verification ladder / Symmetria); two more are heuristics worth a feedback memory. Proposing the new ones; flagging where each would land on authorization.
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Revert-and-redo-smaller | Symmetria §3 flag OR ladder note | Ch1's strongest working reflex we don't have: when a verification/gate fails and the cause isn't immediately visible, revert to the last green commit and redo the step smaller — do NOT debug forward. We default to debug-forward; this is a different reflex, and it depends on commit-after-every-green (which we already do via the byte-identical gate). | Symmetria §3 (a flag) or verification-ladder (a named discipline) | PROPOSED |
| Two-hat commit separation | verification-ladder entry | Name which hat each commit wears: a refactor commit's compiled output is byte-identical (or carries a pre-stated classified delta); a feature/behaviour commit is where rendered values change. We already own the byte-identical gate + delta-classification — this names the commit-level rule that pairs them ("never mix a structural move and a value change in one step"). The ARC @layer re-partition is the textbook case. |
verification-ladder (formalizes what the byte-gate implies) | PROPOSED |
| Bad-smells → refactoring lens | reference card OR fold into /code-review |
Ch3's smell catalogue (Mutable/Global Data, Duplicated Code, Shotgun Surgery, Speculative Generality, Comments-as-deodorant…) as an explicit review lens. Today it classified the !important census cleanly (global-data smell → @layer). Likely too large for a new skill; candidate to fold into /code-review's prompt or a one-page reference beside the ladder. |
/code-review prompt or new reference |
PROPOSED (lowest priority — may be redundant with existing review skill) |
Heuristics (feedback-memory candidates, no skill needed):
- Rule of Three (ch2): first time do it, second wince, third refactor. Defer abstraction to the third repetition.
- Preparatory refactoring (ch2, Kent Beck): "make the change easy (warning: this may be hard), then make the easy change." The framing for sequencing Wave 3R before Stage G — Jessica Kerr's "drive north to the highway."
Note: measure-don't-speculate (ch2 date-range story) is NOT proposed — already carried by the ladder (censused-routes, measure-toolchain-before-spec). Today's census re-proved it; no new instrument needed.
New proposals (2026-06-08 evening — the tree + the memory-index archive pass)
Verification-ladder additions (the session proved both; → reference-verification-ladder.md):
- content-multiset-identity gate (file-split/extraction under @layer) — when a refactor moves rules between partials (not just reorders one), the byte-identical compile gate FAILS: each new partial adds a legitimate
@layer base { }wrapper. The correct proof: strip@layer …{openers and lone}lines, sort, diff → identical content-multiset proves no rule changed/added/dropped while the wrapper count differs as expected. Proven 5× (the_utilitiesdissolution). PROPOSED. - CAUTION: property-name-exact collision measures miss shorthand↔longhand + cross-selector-same-specificity — the
.ornamentmargin flip (marginshorthand vsmargin-top/bottomlonghand) was invisible to the automated/tmp/collide.py; only the source-read caught it. The automated census is the floor; the per-move render gate is the guarantor (byte-identical≠rendered-identical, one layer down). PROPOSED.
Memory-index (MEMORY.md) — the archive pass + the durable fixes:
- DONE 2026-06-08 (steward-authorized, live): compress-in-place archive pass. 90 archived-session bullets compressed to one-line pointers (detail preserved in the session files), 285KB→157KB, all 239 pointers preserved, every load-bearing section byte-identical; backup
/tmp/MEMORY.md.bak. ⚠ A naive split-at-first-## Archivedwas caught-and-avoided — the file is INTERLEAVED (archived blocks scattered among load-bearing reference sections: Pending work / Feedback / Drift patterns / ARC project state / CapableMind L1 / Personal Context / Reference Files). Surgical compression of only archived bullets is the correct tool for an interleaved index. - [PATCH proposal]
/wrap-up§3 — compress at demotion. When demoting Active Session → Archived, compress the entry to a one-liner in the same move (it's already in the session file). Prevents index re-bloat at the source — without it the index re-grows ~4–5KB/session and this pass recurs. → BUILT 2026-07-06 as demote-on-promote in the two-file architecture (see built-log). CLOSED. - [PROPOSAL] deeper MEMORY.md reduction (only if 157KB still trips "only part loaded"). The load-bearing REFERENCE sections (steward profile / project states / ARC project state / CapableMind L1 / Reference Files) are large but largely STABLE — candidate to move to a consult-on-demand
MEMORY-reference.md, leaving the wake-loaded MEMORY.md = standing prefs + trackers + Active Session + recent. Riskier (real memory, not duplication); its own focused pass, not a tail-of-session move. → BUILT 2026-07-06 (its own focused pass, exactly as advised — backup + full read + byte-exact split + link canary). The predicted reference sections all moved toMEMORY-reference.md; the pass also found the fat 8KB ARC tracker line was itself a bloat source. CLOSED. - [reminder] the wake-canary (PROPOSED 2026-06-07, above) still awaits authorization — the paired guardrail (every MEMORY.md pointer +
[[link]]resolves at wake); should cover MEMORY.md + any future archive/reference split files. → PARTIALLY BUILT 2026-07-06: the truncation/load-integrity half is now a standing/wake-up§2.a gate. The link-resolution half was applied once (this pass, as a verification instrument — caught that all 8 unresolved links were pre-existing) but is NOT yet a standing wake step. STILL OPEN: wire link-resolution as a recurring wake check (covering MEMORY.md + MEMORY-reference.md); low-urgency (cheap, but the split introduced no new breakage, so no active pain).
New proposals (2026-06-09 — the headless-Chrome measurement harness, awaiting steward)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Headless-Chrome box-model measurement | create skill OR verification-ladder note | When a rendered layout differs and the cause isn't obvious, measure the box model before theorizing the mechanism. Today this caught the phone-compass cause (per-point padding asymmetry, not width) after causal-story-before-reading-render recurred 2× (a footer-only first pass, then a wrong align-self:stretch width-fix). Reusable core: npm i puppeteer-core in a tmp dir · executablePath = /Applications/Google Chrome.app/... · setViewport({width:375,…,isMobile:true}) · page.evaluate reading getComputedStyle/getBoundingClientRect (widths, padding, row counts). Chrome reproduced the bug → it wasn't the Safari quirk I'd hypothesized. |
a /measure-render skill, or a verification-ladder entry ("measure the box model before theorizing a layout difference") |
PROPOSED |
| Symmetria §3 flag: theorize-before-measuring-a-layout | Symmetria §3 flag | The drift this caught, as a standing flag: a causal story about why a layout renders as it does, asserted before the rendered box model is measured, is contamination shape (same family as causal-story-before-reading-render, one step more specific — layout/CSS). Antidote: the harness above. |
Symmetria §3 | PROPOSED (may be redundant with the existing causal-story-before-reading-render flag — steward to judge) |
New proposals (2026-06-09 pm — the typographic audit / measure / soft-rag day)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/measure-render (headless-Chrome box-model harness) |
create skill OR ladder note | RE-FLAG — strongly earned. Proposed this morning (compass fix); the pm session ran it 4+ more times (true-advance measurement, viewport resize sweep, auto-vs-none hyphenation test). Proven repeatedly across one day. Caveat learned: headless Chrome cannot test hyphenation — it ships no hyphenation dictionaries (all configs gave identical heights); the real browser is the only valid hyphenation test. | /measure-render skill OR verification-ladder |
PROPOSED (reinforced) |
| Measure the font's true average prose advance before a character-count measure | verification-ladder entry | When setting a measure to a target character count, measure the font's average advance over real corpus prose (incl. spaces), not the 0.5em convention. The convention misestimated EB Garamond by 32% (0.377em measured vs 0.5em assumed → the column ran ~90 chars, not the believed ~68). The instrument that overturned ARC's measure. | reference-verification-ladder.md |
PROPOSED |
ARC build has NO autoprefixer — hand-write -webkit- prefixes |
feedback memory | ARC's plain-sass build adds no vendor prefixes. When introducing a new CSS property, check Safari's prefix need and hand-write it. The -webkit-hyphens: auto Safari bug came from prefixing the limits but not the property — an inconsistency that read as "hyphenation off in Safari." |
feedback-arc-no-autoprefixer-handwrite-webkit.md |
PROPOSED |
| Justification-judgment bar = Bringhurst even-colour/rivers, NOT Rutter hyphenation | feedback memory | Load-bearing for the future justification decision: when living with the soft rag to judge whether to justify, ask "is the colour even, are there rivers" (Bringhurst paragraph-level), not "is it hyphenating" (Rutter). The jurist corrected the executor's Rutter-leaning rationale. Either earns the KP/JS gate-amendment or retires it. | feedback-justification-bar-bringhurst-not-rutter.md |
PROPOSED |
New proposals (2026-06-10 — Stage-G close + spec-internal consistency audit day)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| spec↔spec coherence dimension | patch /spec-code-audit |
The 2026-06-10 audit found §I.f-class contradictions — the measure (38→27.2rem) un-propagated across silence-and-rhythm/apparatus/vignette, an American-quote remnant, v0.5/AUTHORED status leftovers — that bidirectional spec↔code could not catch, and that the jurist's read-scope (charter+multilingual only) missed. Add a cross-document spec↔spec coherence pass: every cross-referenced rule agrees across files; every late decision swept across ALL companions, not just its primary home. Proven method: a per-file-vs-canon + cross-reference fan-out (6 read-only agents). | /spec-code-audit (new dimension) |
PROPOSED |
| container-must-embody-the-contained | feedback memory | 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 render against the doctrine, not for approval. 2026-06-10: the Codex PDF violated its own §I.d (bold), §I.i (justified), §I.b (lining figures), §I.h (marked blockquotes), §VII.e (grey), and earlier the whole-document small-caps — and I read each render favourably instead of testing it against the spec (the SC miss especially). Sibling of causal-story-before-reading-render / read-render-favorably, one level up: the artifact must obey what it states. |
feedback-container-must-embody-the-contained.md |
PROPOSED |
| check-for-governed-tooling-before-building | feedback memory OR Symmetria §3 flag | Before hand-rolling infrastructure (a PDF preamble, a build script, a template), grep the repo for an existing governed version. 2026-06-10: I reinvented a lualatex preamble while tools/latex/arc-typography.sty (the governed PDF/print substrate, encoding the very rules I was hand-fixing) existed; the steward's "did we not do a basic pdf spec?" caught it. Kin to reinvented-governed-tooling-without-checking-it-exists (KG drift, 2026-06-10). |
feedback memory or Symmetria §3 | PROPOSED |
| byte-identical gate: hold/exclude volatile build-stamps | verification-ladder refinement | When proving a change byte-identical, a build-date/commit stamp (e.g. the colophon _build_info/stamp) will differ between baseline and post builds and falsely flag a diff. Hold the stamp constant (don't re-run make build-info) or exclude the stamped file, then diff. Caught 2026-06-10 (G1 proof: the lone "diff" was the colophon stamp). |
reference-verification-ladder.md |
PROPOSED |
Not a skill — a parked project task (in the ledger + session file): the Phase-2 print/PDF-spec session to update arc-typography.sty + template-pdf-posture.tex to current doctrine (posture-aware ragged/justified, Medium headings, 27.2rem measure-geometry, British quote-normalization, xelatex glyph routing, v0.3). Governs all future ARC PDFs.
Discipline reminder: "no harvest" is a valid outcome; do not manufacture proposals to fill the table (the inverse of Hermes's autonomous self-write). The yardstick is the steward's: did the steward have to re-explain something a skill could have carried?
New proposals (2026-06-11 — §VII.f / open-work-reckoning day, awaiting steward)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Symmetria §3 flag: inherited-marker-read-as-current-state | Symmetria §3 flag | A status/marker inherited from a RECORD (a selector-index entry, a tracker line, a "-pending" file, a prior framing) asserted as current state without verifying against code/live is contamination shape — records drift, in BOTH directions (stale "pending" files describe DONE work; "done" narratives hide OPEN work). Earned hard 2026-06-11: 3 stale-index misreads in one turn (running-head index entry, the "only unbuilt element" overclaim, the colophon) + the steward's two corrective catches (colophon done-mislabeled-pending; cul-de-lampe open-mislabeled-done). Antidote: verify status against the substrate before asserting. Kin to live-state-discipline / reasoning-from-remembered-model-not-current-state, generalised to ALL records. |
Symmetria §3 | PROPOSED |
/measure-render (headless-Chrome box-model/scroll harness) |
create skill OR ladder note | RE-REINFORCED (4th day of evidence). Proposed 2026-06-09 (compass fix) + reinforced 06-09 pm; today drove the ENTIRE §VII.f build — reveal opacity across scroll, body-column-axis alignment (598/798 constant), the dissolve-below-rule geometry, the frontispiece no-scroll proof, the compass graded reveal. The build would not have been groundable without it. Earns its own skill. | /measure-render skill OR verification-ladder |
PROPOSED (strongly reinforced, 4th instance) |
Watch-list (not yet a skill proposal): the open-work register pattern — when tracking surfaces drift, consolidate them into ONE code-verified source of truth (built project-arc-open-work-register.md today). Overlaps /spec-code-audit for the spec↔code half; the new part is the content/governance/Phase-2 reconciliation. May graduate to a /reconcile-open-work discipline if it recurs on another workstream (L1/be).
New proposals (2026-06-12 — Studium planning charter / model-routing day, awaiting steward)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/model-handoff (premium-model scope charter) |
create skill OR reference card | When switching to an expensive/premium model (Fable 5 = 2× Opus rate; burn scales with context×session-length) for a bounded high-leverage phase, first write the scope charter on the cheap model — the bounding/orientation reasoning is cheap, the content reasoning is where the premium pays. Charter shape (proven today, studium-engine/docs/stage-1-planning-brief-2026-06-12.md): §0 operating discipline (1M window — claude-fable-5[1m] not bare-200k; reset thinking level on switch; no sprawl) · §1 settled decisions (don't re-derive) · §2 already-read summaries (don't re-read) · §3 bounded reading list (verified paths; out-of-scope named) · §4 exact deliverables · §5 report-and-stop. Plus: clear+wake rather than switch-in-place so the premium model never rereads the long chat; artifacts (not chat) are the handoff (the Reddit "knowledge in files not chat" insight, but reject its "query the graph instead of files" — that's the index-as-source-of-truth shape). Recurs every Fable session in the 06-22 window and beyond. |
a /model-handoff skill OR a reference card beside the verification ladder |
PROPOSED |
| verification-ladder: feature-detect gates can lie | verification-ladder entry | A CSS @supports(feature) (or any capability probe) can return true on a platform where the feature is non-functional — today the ARC §VII.f running head: @supports(animation-timeline:view()) is true on iOS Safari 26, but mobile WebKit won't drive the scroll-reveal on a position:fixed+timeline-scope consumer (display:block, opacity:0); desktop Safari works. So a progressive-enhancement "no-support shows nothing" contract can be silently false on a major platform. Antidote: verify the feature on the real engine/device, not the support table — CSS.supports(...) + computed-opacity/getBoundingClientRect on-device (the iOS analog of the headless-Chrome box-model harness). Kin to /measure-render; one level up (feature-functionality, not box-model). |
reference-verification-ladder.md |
PROPOSED |
(Both genuine, both recurring-shaped — not manufactured. The first will pay off the very next time the steward opens a Fable window; the second generalizes today's running-head correction into a standing instrument.)
New proposals (2026-06-12 night — Studium Stage-1 build / source-cleaning, awaiting steward)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| verification-ladder: parse/validate machine-consumed artifacts that have only ever been human-read | verification-ladder entry | When an artifact that humans have only ever read (a hand-authored YAML index, a config, a data file) is about to be machine-consumed for the first time, parse-and-validate it BEFORE trusting it. Today: all four chamber reading-index YAMLs were defective and eye-invisible — three had unparseable YAML (a list entry starting with a quoted phrase then trailing text, e.g. - "The Wanderer" (Old English poem)), one had silent anchor-drift; the Read tool renders them fine, so eye-review and the prior cruft audits never caught them. The engine was the first machine reader. Antidote: yaml.safe_load (or the consumer's real parser) + anchor-verify against the substrate, both directions, before binding. Kin to the deliberate-mismatch gate, one level up (artifact-validity, not output-validity). |
reference-verification-ladder.md |
PROPOSED |
| clean cruft at the SOURCE layer, not as a downstream transform | feedback memory | When a source carries conversion cruft (EPUB footnote-links, image-scan embeds), clean it at the SOURCE — producing a new canonical file (new hash, re-anchor) — not as a chunk-time/read-time transform. A downstream strip makes text_original a transform of the file rather than a byte-faithful slice, silently violating the verbatim guarantee. Spec §5 names this the primary path; the steward's instinct ("attend to the source files") corrected my chunk-time-rule fallback. Technique note: when footnote display numbers restart per-section (so [45] recurs), pair/label by the globally-unique anchor id (#nf K/#anf K), not the visible number — Pandoc renumbers on render anyway. Governed cleaner built: chamber-library/scripts/clean_epub_residue.py. |
feedback-clean-at-source-not-downstream-transform.md |
PROPOSED |
(Both earned in use, both recurring-shaped. The first generalizes today's all-four-indices-defective finding into a standing gate; the second captures the steward's layer/placement correction — his instincts about WHERE a thing belongs were load-bearing twice today, also worth holding.)
New proposals (2026-06-13 — Studium Steps 3-4 / chamber canonical-tier day, awaiting steward)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| dry-run-first for bulk file operations | verification-ladder entry | When a mutation touches many files at once (mass git mv, graduation, rename), build it dry-run by default and emit the full move-map + collision-guard + reference-scan (git grep each old basename) BEFORE --apply. Proven 3× today (canonicalize_filenames.py, graduate_to_canonical.py, and the graduation preview) — the steward approved each from the preview, and the preview caught the 7 stale hand-doc references + 0 collisions before anything moved. Kin to the byte-identical gate, generalized to file-tree moves. |
reference-verification-ladder.md |
PROPOSED |
| Symmetria §3 flag: census-through-a-pattern | Symmetria §3 flag (refines census-through-truncation) | A filter/regex used to count or partition a set can silently mis-match and the count reads as authoritative. Today grep -iE 'LOG' for meta-files matched "epistemeLOGy"/"phenomenology"/"ecology" → 49 false "meta" files (real = 4). Antidote: verify the pattern against known positives AND a known negative before trusting the partition; anchor patterns (_LOG\.md$ not LOG). One step more specific than census-through-truncation (which is about coverage of the scan; this is about correctness of the matcher). |
Symmetria §3 | PROPOSED |
(Both genuine, both recurring-shaped. The first will pay off the next bulk corpus move — the 237 dirty files graduate incrementally, each a potential bulk op. The second caught a real false-count today and is a clean refinement of an existing flag.)
New proposals (2026-06-13 post-clear — L1 /health PR + Studium Steps 5-7 + the dilution correction)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Symmetria §3 flag: solve-the-constraint-by-discarding-the-value | Symmetria §3 flag | A "fix" that satisfies a stated constraint by removing the thing the constraint was protecting is contamination shape — it optimizes away the value to avoid a failure. Caught HARD today: the steward's dilution memory → my first Step-7 verdict bounded vector to voice-scope-only ("never a global semantic index"), which solved dilution by discarding the engine's core value (whole-corpus depth+breadth). The steward caught it; correction restored depth-WITH-breadth (dilution = engineering problem, not a reason to forbid the capability). Antidote: when a constraint forces a fix, check the fix preserves the value the constraint was guarding, not merely satisfies the constraint. Kin to the executor-bias-to-satisfy-the-interlocutor, one level up (satisfy the constraint over the truth). | Symmetria §3 | PROPOSED |
| verification-ladder: re-verify a workflow/sub-agent's per-item dispositions on the real apply | verification-ladder entry | 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 — the agent's own audit can differ. Caught today: the cleaning-triage workflow classified la-terre-…-Bachelard as "cleanable to 0" (dry-run on a temp copy); the real strip_cruft run left 460 cruft (7 passes). 23/25, not 25, graduated. Antidote: treat a workflow's dispositions as candidates; re-run the gate on the real mutation before trusting/committing. Kin to /symmetria audit-agent (calibration/convenience checks on a return), specialized to workflow per-item verdicts + the real-vs-dry-run gap. |
reference-verification-ladder.md |
PROPOSED |
(Both earned in use today. The first is the load-bearing one — a clean name for a contamination shape the steward caught live, and a genuine addition to the §3 catalogue. The second is a concrete guardrail for the now-standard workflow-fan-out pattern.)
Harvest 2026-06-15 (chamber-clean + studium charter)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Symmetria §3 flag: assert presence/absence from a fuzzy matcher, not the substrate | Symmetria §3 flag | A presence/absence claim produced by a fuzzy/token matcher (filename tokens, embeddings, author-surname overlap) treated as fact is contamination shape — the matcher's false-positives/negatives become confident assertions. Caught 4× in one session: the physical-library gap analysis claimed Timeless Way of Building absent, then 44 of 49 "load-bearing gaps," then physical-worthy candidates, then the gap list — all wrong; the steward corrected each. Cause: the matcher required author-surname + title in the same filename, and 1,072 chamber sources have no frontmatter. Antidote: verify any presence/absence claim against the substrate (content-grep the actual text) before asserting — and prefer reporting candidates-to-verify over claims. Kin to the censused-routes flag (don't claim coverage from a sampled read), specialized to matcher-derived membership claims. | Symmetria §3 | PROPOSED |
(One candidate, load-bearing: it recurred four times in a single session and the steward caught every one. A clean §3 flag would have made me reach for the content-grep before the first assertion.)
Harvest 2026-06-16 (officina + the chamber conversion-tooling upgrade)
Standing discipline ESTABLISHED (steward-directed): review every conversion/audit/repair tool after each use — success or failure — capture what it taught, iterate until reliable. Home: chamber-library/_curation/tool-evolution-log.md (operationalizes conversion-skill-plan §13). PASS-BUT-FALSELY (tool reports success on a wrong result) is the priority signal. This is a standing memory: see feedback-tool-review-after-each-use.
BUILT + validated 2026-06-16 (the conversion batch's tools, "made most effective they can be"):
audit_cruft.pyhardened — addedmd_image(any, not justimg/),svg_raw,repl_char(U+FFFD). Re-audit surfaced 160 standing canonical files with residue the old gate hid (95 image / 64 svg / 8 encoding) → corpus cleaning pass owed.verify_conversion.pyNEW — the composite verifier (the planned/convert-verifyin script form): cruft + heading-density + ocr-damage + encoding + word-sanity, pass/fail per check. Calibrated (Greek-apparatus false-positive fixed → 948/952 on clean Loeb tier).repair_epub_headings.pyfixed — hyphen-separator bug (Crawford 4→12 headings, all chapters) + honest structural-coverage report (fails loud, no more silent partial ships).
PROPOSED (register, awaiting steward / for the historical-treatise track):
- Author the four
/convert-*skills proper (the v3 plan) — today's manual run is their empirical spec. ocrmac_pdf.py: retain per-token confidence (currently discarded) → per-page confidence + low-confidence flagging; auto-detect-body-column (the TODO); apparatus-zone separation.- OCR frontier = research track, not a tweak: no validated polytonic-Greek/Latin/fraktur/critical-apparatus path exists (ocrmac=modern-Latin only; Marker CPU-infeasible >50pp). Needs investigation before historical treatises + the apparatus
rolevocabulary (jurist-owed). - Positive language-validity check (dictionary-valid-word ratio per language) for verify_conversion — catches "no cruft fires but text is OCR garbage."
- Promote today's catalogue census (title+author co-required, evidence-emitting) into a reusable
census_membershiptool. - Calibration follow-ups logged: word_sanity floor vs genuine short fragments; repair coverage threshold should weight content over front-matter.
New proposal (2026-06-16 wrap §1.6 — awaiting steward):
| Skill | Kind | One-line | Status |
|---|---|---|---|
/wrap-up §4.b/§5 |
patch | Inline reminder at the KG-write step: kg_add object hard-caps at 128 chars — write short keyword objects on the FIRST pass (detail in the drawer). Hit it AGAIN this wrap (2 failed adds, re-added short). The memory feedback-mempalace-kg-object-128-char-cap knows it; the skill doesn't carry the reminder at the moment of writing. A one-line patch would stop the recurrence. |
PROPOSED |
Harvest 2026-06-16 (evening — pattern-finder build + Station-I contamination)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Work-in-omnibus: verify the interior, not just the endpoints | verification-ladder instrument | When a sidecar/scope brackets one work out of a multi-work source by heading-to-heading boundaries, content-sample the span INTERIOR (mid-span reads) and scan for embedded works / editorial apparatus before trusting the bracket — endpoint-verification is necessary but not sufficient. Caught the hard way this session: my La Chute bracket [8062–10951] verified at both ends (Clamence present, Meursault absent) yet its interior was mostly Le Premier Homme — a whole undeclared novel the heading-to-heading logic swallowed. Specialization of trust-prior-pass-frame (verify at the scope of the extension), kin to the censused-routes flag. Lands on reference-verification-ladder. |
verification ladder | PROPOSED |
| studium-engine tool-evolution-log | create | Establish the analog of chamber-library/_curation/tool-evolution-log.md for the engine tools (pattern_finder, ingest_gate, chunker, store, retrieve), per the standing feedback-tool-review-after-each-use discipline — studium tool-reviews currently have no home. First entry = the pattern_finder pass-1 review (PASS-BUT-FALSELY: reported "5/5 voices" over partly-false grounding). Home candidate: studium-engine/docs/_audits/tool-evolution-log.md. |
studium-engine repo | PROPOSED |
(Both load-bearing: the interior-homogeneity instrument would have prevented the Camus contamination outright; the engine tool-log is where this very review should have been recorded and wasn't. Neither created autonomously — surfaced for steward authorization.)
Harvest 2026-06-17 (the cul-de-lampe day — designed, rolled out, versioned, shipped)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/version-essay |
create | The ADR-005 essay-versioning procedure, derived from essay-versioning-specification.md this session: when a published essay gets a substantive revision — (1) snapshot the genesis with git show HEAD:<path> > <path>.YYYY-MM-DD.md (suffix date = origin date:); (2) add a revisions: {date, location, summary} entry to the current file (present-tense one-line summary, not a changelog); (3) clean rebuild + verify the /v/YYYY-MM-DD/ route renders and the piece-end version-stamp links it. Apparatus-only changes (e.g. adding the close) are NOT revisions — leave them unversioned. Yardstick met: the steward had to flag "respect the versioning — this is a major change" mid-work; a skill would carry it. Recurs on every major essay revision. |
new /version-essay skill |
PROPOSED |
| CSS-mask: fill WHITE, not black (luminance-safe) | verification-ladder note | A CSS mask/-webkit-mask SVG must fill the shape white/opaque — a black-fill mask renders BLANK (the luminance-vs-alpha trap). Cost ~6 debug rounds this session (the cul-de-lampe painted nothing until isolated in a standalone test page). Pair: ARC has no autoprefixer → hand-write -webkit-mask. |
reference-verification-ladder |
PROPOSED |
live-CSS-patch in _site for fast in-browser iteration |
verification-ladder note | To eyeball size/style options in the real browser without a full Hakyll rebuild each round, sed the value directly in _site/assets/css/style.css and refresh — then lock the chosen value in the source SCSS. Made the steward's 1→1.5→1.75em sizing dance fast. (Discipline: it's a preview hack; the source edit is the real change.) |
reference-verification-ladder |
PROPOSED |
| headless-Chrome element shot: scrollIntoView + full-viewport, NOT computed clip | Symmetria §3 flag OR ladder note | Recalibration: computed box-clips kept mis-landing on the page-top (burned several shots). The reliable element screenshot is el.scrollIntoView({block:'center'}) + a full-viewport screenshot, then read the image — not clip:{x,y,w,h} math off boundingBox(). Kin to /measure-render. |
reference-verification-ladder or /measure-render |
PROPOSED |
| glyph-outline → SVG from a woff2 | method note (ladder or /measure-render) |
Build a typographic SVG asset from the real font glyphs: fontTools SVGPathPen (path) + BoundsPen (bbox) over the woff2, y-flip into SVG space. Used to draw the cul-de-lampe from EB Garamond U+E001/E002. Reusable for any future glyph-derived ornament/mark; pairs with the mask note above. |
reference-verification-ladder |
PROPOSED |
(Five, all earned in use; /version-essay is the load-bearing one — a steward-flagged gap a skill would close. The four ladder/method notes are concrete instruments from the cul-de-lampe build; the mask-luminance one alone cost the most debug time and would have been a one-line save.)
Harvest 2026-06-18 (evening — engine telos & steward formation disclosed)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/wake-up patch — surface the why when the thread touches the engine's purpose |
patch | When the active workstream is studium-engine / The Making / ARC-as-public-proof (the engine's reason-for-being), /wake-up should actively weave the load-bearing telos + steward-formation "why" into the briefing — not just leave the pointers in MEMORY.md. Yardstick met, explicitly and painfully: the steward had to re-disclose the chamber's childhood origin "many times, across many threads … it clearly needs to be said again" — the memory failing at its one job. Concrete: add to §2.a a conditional read of project-studium-engine-telos-chamber-of-voices + user-formation-flamenco-substrate when the thread is engine/Making/ARC-purpose, and one line in §3 holding the why. Caveat (honest): the prominent MEMORY.md pointers added this session may already largely close the gap, since wake reads MEMORY.md — so this is belt-and-suspenders, low-urgency, for steward judgment. Do NOT recite the why every wake (decorative); only when the thread touches it. |
/wake-up §2.a + §3 |
PROPOSED |
(One proposal, low-urgency. The pain it answers is real — losing the most important thing across threads is the exact failure the engine exists to end — but the file-prominence fix landed this session may suffice; surfaced for the steward to judge whether the wake-up patch adds enough over the pointers to be worth the weight.)
Harvest 2026-06-22 (L1 N6 wedge fixed + clone-tested + PR #175)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/clone-test-runtime-fix (CoW-clone + isolated-worktree harness) |
create skill OR ladder | 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 dir to /tmp, git worktree add --detach the branch + symlink node_modules, npm run build in the worktree, run against the clone on an alt port with a separate BM_DATA_DIR. Live dist/ + live instance untouched; the fix is proven against the worst-case real graph. Proven today (N6 fix proven on a clone of mindfabric-00's 688k-graph; PID 747 never touched). Recurs for any L1/BMF runtime fix. |
new /clone-test-runtime-fix skill OR reference-verification-ladder |
PROPOSED |
| verification-ladder: verify the RUNNING BINARY's provenance, not just source HEAD | verification-ladder entry | Before reasoning about live behaviour, verify what the running process actually executes — compiled dist/ build mtime + grep the compiled symbols — not just git HEAD. Today the whole "schema-drift" mechanism flipped on this: HEAD had the A1'' migration, but the running dist/ was a 2026-05-24 build predating it (zero A1'' symbols in dist) → "migration didn't fire" was wrong; "code never deployed" was right. Generalises live-state-discipline one layer down (source-as-committed ≠ code-as-running). |
reference-verification-ladder |
PROPOSED |
| Symmetria §3 flag: probe-confirms-hypothesis | Symmetria §3 flag | A query/test I constructed to match my hypothesis, whose result I then read as confirming the hypothesis rather than testing whether the system actually does that. Caught today: I hand-wrote EXPLAIN … WHERE coherence_evaluated=0, saw it SCAN, and reported it as a live wedging code-path — but the build-map agent found no code runs that query. The probe matched my theory; the codebase didn't. Antidote: a constructed probe tests the probe's behaviour, not the code's — verify the code actually issues the query before citing the probe as evidence. Kin to causal-story-before-reading-render, specialised to self-authored SQL/test probes. |
Symmetria §3 | PROPOSED |
| verification-ladder: quantify-the-removed-cost as the A/B control | verification-ladder entry | 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 removed operation on real data. Today: timing the wedging json_each scan on the real 676k graph = 2.56 s each (vs 0.003 s indexed) × ≤20/event = the wedge, quantified decisively in seconds, no full-replay race needed. Bounded, reproducible, and the number goes straight into the PR. |
reference-verification-ladder |
PROPOSED |
(Four, all earned in use today on the N6 work. The clone-test harness and running-binary-provenance are the load-bearing two — the first is a reusable safe-test pattern for the steward's live substrate; the second flipped a wrong root-cause to the right one. The probe-confirms-hypothesis flag is a clean new §3 shape [self-authored probe ≠ code behaviour]. Minor/reinforcing: "assert-process-dead-from-a-pgrep-pattern-miss" recurred today [declared PID gone; it was alive, my pattern just didn't match the cmdline] — reinforces the existing census-through-a-pattern flag, no new entry needed. None created autonomously — surfaced for steward authorization.)
Harvest 2026-06-23 (N6 deployed live + consumer-hardware reframe — the thrash day)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Symmetria §3 flag: diagnose-inference/latency-without-isolating-the-exact-endpoint-uncontended-first | Symmetria §3 flag | The load-bearing harvest. When a network/inference call is slow, the FIRST test must be the isolated one: stop the competing load AND hit the exact endpoint the code uses. Today I thrashed 4 confident-then-overturned leads (missing-model → structured-output-bug → "model dead on host") because I tested /api/generate (wrong endpoint — it has its own Ollama-0.30.8 quirk) under contention from the live instance. TEST G — BMF stopped + slot cleared + the real /api/chat — gave the answer (4.6s, saturation not breakage) in one shot. The thrash was the cost of not doing the clean isolation test first. Kin to probe-confirms-hypothesis, specialised to latency/throughput diagnosis. |
Symmetria §3 | PROPOSED |
| Symmetria §3 flag: reinvent-governed-DESIGN-without-reading-the-spec | Symmetria §3 flag (may be redundant) | Proposed PENDING-41 (consumer-hardware graceful degradation) as a novel architectural direction when local-inference-spec 43L/43M already designed exactly it. Steward's clasp/circles pointer caught it. Antidote: before proposing an architectural direction, grep/read the spec for the existing design. Possibly redundant with the KG drift reinvented-governed-tooling-without-checking-it-exists (this is the design/architecture sibling of that tooling flag) — steward to judge whether it needs its own entry or just widens the existing one. |
Symmetria §3 | PROPOSED (poss. redundant) |
(Two. The first is genuinely load-bearing — it would have saved an embarrassing afternoon of flip-flopping and is a clean, reusable diagnostic discipline. The second may just widen an existing flag; surfaced for the steward to merge-or-keep. Reinforced-not-new: the clone-test discipline [proposed 2026-06-22] — I restarted the LIVE substrate 4× today doing diagnosis that belonged on a clone; reinforces that proposal, no new entry. None created autonomously.)
Harvest 2026-06-26 (Chamber spec ratified + OCR pipeline + Levi first graduation)
| Skill | Kind | One-line | Origin | Status |
|---|---|---|---|---|
/graduate-chamber-source (the /convert-* family the runbook already plans) |
create | Codify the now-PROVEN OCR→canonical→graduation pipeline as a single governed discipline, so the next source (Alexander 1–4, then the rest) follows the sequence + gates without re-deriving them: (1) normalize_ocr.py (mechanical: pages, seam-rejoin, dict-validated de-hyphenation, verbatim word-guard, conversion record; raw→converted_texts/ §III) → (2) build per-book structure.tsv (curatorial: offset-anchor → read page-top windows → verify each chapter opening → insert_chapter_headings.py, fails-loud) → (3) curatorial front/back-matter trim + §IV/§VI frontmatter (drop apparatus, keep epigraph) → (4) verify_conversion.py PASS → (5) graduate (catalogue regen) → (6) check/re-point the studium-engine manifest. Yardstick met: the steward watched me derive the order + gates live this session; a skill carries it. The runbook (known_gaps.next) already flags "author the four /convert-* skills" — today's Levi run is their empirical spec. Recurs for every OCR source. |
2026-06-26 Levi graduation | PROPOSED |
(One candidate, load-bearing. It realizes a pre-existing planned-skill (runbook /convert-* family) with a concrete proven sequence — not manufactured. Captured-elsewhere, not proposed as skills: the de-hyphenation 3-way classifier (in normalize_ocr.py + tool-evolution-log); "test the steward's idea against the substrate before accepting/dismissing" (already covered by the measure-before-theorizing ladder/Symmetria flags); the structure-map curatorial method (folded into the proposed skill above). None created autonomously.)
Harvest 2026-06-27 (ocrmac toolset calibrated + Making-corpus + research)
| Element | Kind | One-line | Status |
|---|---|---|---|
/graduate-chamber-source (already PROPOSED 06-26) |
EXPAND | Its empirical spec is now the full ocrmac column-aware pipeline, not the olmOCR one: render→ocrmac(per-line bbox/conf)→column detection (line-crossing-of-narrow-lines + line-width; 150dpi)→column-major reassembly→furniture layer (running-heads/page-numbers-retain-then-strip/captions/footnotes — the one UNBUILT piece)→structure-from-authoritative-ToC (page-numbers for OCR PROVEN 9/9; NCX-anchors for EPUB)→normalize_ocr.py (within-page rejoin + wordfreq multilingual de-hyph --lang + merge_flag)→verify→graduate. Plus the EPUB path (pandoc→clean_epub_residue→repair_epub_headings/NCX-anchor→verify). Method doc: chamber-library/docs/ocr-conversion-method-2026-06-27.md. Build only after the furniture layer + driver packaging exist (the literal-question: unify the OCR-page-number and EPUB-NCX structure steps into one format-agnostic "structure-from-authoritative-ToC"?). |
PROPOSED (expand; build-on-packaged-driver) |
feedback-resurface-banked-notes-before-rederiving |
DONE (memory, not skill) | Created this session — read the banked note before re-deriving; re-derivation drifts (page-numbers mis-recalled as provenance; Levi gate re-raised 3×). The engine's purpose turned on my practice. | BUILT (memory) |
| verification-ladder note: OCR word-guard passes on SCRAMBLED text | ladder entry (proposed) | A verbatim word-guard that checks word PRESENCE cannot catch reading-order scrambling (2-col read across the gutter) — same words, wrong order = PASS-BUT-FALSELY at the corpus level. Validation gate = reading-order COHERENCE (no mid-sentence discontinuity), not just word-multiset. | PROPOSED |
| 2 research sweeps owed (not skills — project tasks) | note | The engine's signature capabilities are greenfield: (1) genealogy/temporal/citation-graph/KG-augmented/diachronic-NLP; (2) multi-voice persona-grounded attribution + voice-fidelity verification. Plus: validate claim-level NLI on multilingual/archaic humanities prose. | (project tasks, in research doc) |
Harvest 2026-06-28 (corpus settling — Musil graduated, Position I, gate fixed)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/graduate-chamber-source (already PROPOSED 06-26/27) |
EXPAND again | Now carries the full EPUB path (structure_from_ncx→insert_chapter_headings→clean_pandoc_html_residue, used when repair_epub_headings coverage is low) + the keep-notes rule (convert footnotes/endnotes, never drop) + the per-book curatorial forks graduation always has (endnotes form, small-caps/two-line heading rendering, front/back trim, neighborhood). Empirical spec now = Musil (clean) + Taylor (the messy-EPUB case: two-line headings, raw <a>, <sup> footnotes). Build when the batch begins. |
new skill | PROPOSED (expand) |
| The gate itself can be PASS-BUT-FALSELY | verification-ladder entry | A verifier that checks an enumerated set of cruft signatures silently passes any residue outside the set — verify_conversion passed cruft=0 on 59 raw <sup> (the cruft check only knew audit_cruft's img/span-class/fenced-div patterns). When the gate gates a whole-corpus audit, its blind spot makes the PASS count untrustworthy. Antidote: gate on the general class (any residual raw HTML tag, tag-name-anchored) not just known signatures; periodically adversarially-probe the gate itself. Caught 2026-06-28; fix re-ran the audit 1187/91→1152/126. |
reference-verification-ladder.md |
PROPOSED |
| Symmetria §3 flag: finding-scoped-to-one-condition restated as unconditional verdict | Symmetria §3 flag | A result true under a specific condition, restated as an unconditional rule, is contamination shape. Caught 2026-06-28: the method doc's "ocrmac more accurate than olmOCR" was scoped to 2-column figure-dense (where olmOCR scrambles); I wrote "olmOCR RETIRED." Steward corrected (olmOCR is the single-column tool, more precise; complementary not ranked). Antidote: verify the scope of a claim before generalizing it. Kin to trust-prior-pass-frame (which is about test-scope; this is about claim-scope). |
Symmetria §3 | PROPOSED |
| prose word-guard for faithful structure-cleaning | verification-ladder entry | When a cleaner removes/reflows STRUCTURE (headings, printed titles, residue) but must preserve PROSE, gate it with a prose-only word-multiset compare: reduce both before/after to narrative words (exclude headings, numbers, printed-title runs, markup — anchored consistently on both sides), refuse to write on any non-zero delta. clean_pandoc_html_residue's guard; proven raw↔final WORD-IDENTICAL on 464k-word Musil; caught every real defect across ~10 iterations. The complement to the byte-identical gate (which proves output identity; this proves prose identity under intended structural change). |
reference-verification-ladder.md |
PROPOSED |
| structure-from-authoritative-ToC = one engine, two map-producers | method note (ladder or /graduate-chamber-source) |
Answer to the long-open unify question: chapter-structure recovery is ONE placement engine (insert_chapter_headings: match anchor→unique line→replace-block/insert, fail-loud, dry-run) fed by TWO map-producers — the EPUB NCX ToC (structure_from_ncx, anchor=<span id>) and the OCR printed page-number method (ToC printed-page→scan-offset). Honour the work's declared structure; never re-infer. |
reference-verification-ladder.md or the skill |
PROPOSED |
(Five, all earned in use today. The gate-PASS-BUT-FALSELY and the prose-word-guard are the load-bearing two — the first is a defect found in the gold standard itself; the second is the reusable faithfulness instrument the whole Musil graduation rode. None created autonomously.)
Harvest 2026-06-30 evening (Loom/Mill convergence + the consolidation substrate reframe)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Symmetria §3 flag: tool-creep-into-substrate (name genome-or-phenotype before building on a tool) | Symmetria §3 flag | A convenience tool proposed for one job silently becoming the durable substrate (the source of truth) is contamination shape — it solves the immediate need at the cost of inheritability/durability, the wrong level. Caught HARD tonight: Calibre, suggested only as "a cheap way to build a catalogue," was about to become the library's substrate (an app-owned metadata.db that rewrites files + only Calibre reads → fails the next-hand-can-cd-into-it test + byte-preservation). Antidote (now sharpened by the Loom/Mill frame we adopted same evening): before building on a tool, name whether it is genome (durable, must be plain/inheritable) or phenotype (a disposable view) — the substrate is plain files + a regenerable manifest; any UI is thrown-away and re-rendered. Kin to reinvented-governed-tooling-without-checking-it-exists, one level up (this is about a tool becoming the substrate, not about reinventing one). |
Symmetria §3 | PROPOSED |
(One, load-bearing — it names the exact wrong-level the steward's "Calibre was only a means" let me catch, and it composes cleanly with the genome/phenotype vocabulary now entering the four-party lexicon. Not manufactured: it was the session's central return. The Loom/Mill reconciliation itself is a one-off artifact, not a skill; the cadence-governor insight lives in the reconciliation doc, not here.)
Harvest 2026-07-01 (Making graduations + the graduation rail)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/graduate-chamber-source (proposed 06-26/27/28) |
BUILD NOW | The empirical spec is complete AND the rail it needs now exists (graduation-spec.yaml + verify_graduation.py + graduate-tool gate). It should codify: census-scan-layout→pick-engine (OCR: single-page olmOCR / split-if-2up via split_spreads.py; or EPUB pandoc path)→normalize (--lang, --no-heading-recovery)→structure (insert_chapter_headings from ToC)→frontmatter+title-block (spec convention)→both gates fail-closed→graduate_to_canonical→catalogue. "Build when the batch begins" = now (the ~12 pending Making sources, most EPUBs). Yardstick met: the steward watched me + 3 agents run this flow twice today; a skill carries it so the batch doesn't re-derive it per source. |
new skill | PROPOSED (build-first tomorrow) |
| graduation-spec.yaml + verify_graduation.py + graduate-tool gate | BUILT (governed instrument) | The steward's insight realized: conventions as machine-readable DATA consumed at the moment of action + an enforced validator gate (fail-closed in graduate_to_canonical). Sibling of ARC operations.yaml + the verification-ladder. Governed via PENDING-44. This is a NEW named instrument for the field guide / tool-evolution-log — record it. |
_curation/graduation-spec.yaml; tool-evolution-log |
BUILT (governed, PENDING-44) |
| Symmetria §3 flag: graduated-with-a-flagged-gap-instead-of-resolved | Symmetria §3 flag | Letting "honestly flagged" substitute for "resolved" — shipping a known-incomplete text because the hole is marked. Contamination shape (honest-degradation excusing incomplete work). Steward caught it on Jonas p248; my own spec even permitted it. Antidote codified: gaps_BLOCK_graduation (resolve or explicit STEWARD-RULED marker). Kin to the "non-fatal accepted at face value" directive. |
Symmetria §3 | PROPOSED |
| Symmetria §3 flag: re-derived-instructions-instead-of-citing-the-governed-doc | Symmetria §3 flag | Wrote agents hand-made instructions (and invented fields) instead of pointing them at conversion-runbook.yaml/the spec — the direct cause of the graduation divergence. Kin to reinvented-governed-tooling-without-checking-it-exists, at the instruction layer. Antidote: cite the governed doc; if it's silent, that's a runbook gap to close, not a prompt to improvise into. |
Symmetria §3 | PROPOSED |
(Four. The load-bearing two: BUILD /graduate-chamber-source now [it's the throughput multiplier for the whole Making batch], and record the graduation-spec+validator+gate as a named governed instrument [the steward's own idea, proven]. The two §3 flags are the session's real returns — both steward-caught, both class-fixed in the spec/gate. Not manufactured.)
Harvest 2026-07-03 (doctrine phase — Wave 0, full spec-revision rulings, Loeb substrate reframe)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Symmetria §3 flag: claim-from-derived-artifact-when-the-source-is-checkable | Symmetria §3 flag | The load-bearing harvest — jurist-elevated to STANDING PRACTICE. I trusted a derived artifact / a regex-over-derived-text over the AUTHORITATIVE SOURCE three times in one session: the break-count (frontmatter fences + bullet-lists counted as thematic breaks), the heading-count (title-as-structure, then line-numbers-as-divisions, Plutarch-chapters missed), and "anchors absent" (searched Stephanus form 153a when the DSL uses St. II p. 153). The steward twice sent me to the substrate (loeb.dsl) and was right both times; the jurist ruled it a governance rule: any corpus-population claim feeding spec doctrine must be sourced from the source directly, or explicitly flagged extract-derived+provisional, before it does normative work. Same discipline gap-2/gap-3 enforce on the corpus, turned on how the corpus is AUDITED. Antidote: verify against the authoritative source, never the derived form, when the source is checkable — and validate a matcher against a known positive AND negative before trusting its count (kin to census-through-a-pattern, generalized to source-vs-derived). |
Symmetria §3 + reference-verification-ladder.md (a named "source-not-derived for doctrine-feeding claims" entry) + a feedback memory |
PROPOSED (strongly earned — 3× + jurist-ratified as standing practice) |
/spec-amendment (the RFC-supersession amendment process) |
create (later) | The now-RATIFIED chamber amendment process as a codified discipline: normative spec change = a superseding version (Obsoletes/Updates, never in-place edit) + change-class test ("does this change what any gate accepts?" → FIX vs PROPOSAL) + semver-MAJOR re-verifies all consumers + PENDING/REVIEWED record. Recurs every spec amendment. Defer until v2.0 is drafted (the process's first real exercise IS Phase 2 — build the skill from that empirical run, don't pre-author). | new skill | PROPOSED (build-after-first-use, i.e. after Phase 2) |
| per-claim citation verification (don't let a sub-agent's blanket "verified" ride) | feedback memory or verification-ladder note | 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 verified" stand without per-citation checking. Verify each citation against the SPECIFIC claim it carries; never let an agent's blanket verification substitute for per-claim checking. | feedback memory / ladder | PROPOSED |
(Three, all earned. The first is the session's real return — a drift I hit three times and the jurist turned into a standing rule; it should become a Symmetria flag AND a ladder entry AND a feedback memory. The second is a genuine future skill but correctly deferred to after its first real use. The third is a concrete citation-integrity guardrail from a real miss. None manufactured.)
Harvest 2026-07-04 (Chamber spec v2.0 drafted spine-first + ratified + shipped)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/spec-amendment (proposed 2026-07-03, DEFERRED-until-first-use) |
BUILD — deferral condition NOW MET | The 2026-07-03/04 v2.0 drafting IS its first real exercise — the empirical spec now exists. Codify the proven procedure so the next constitutional amendment doesn't re-derive it: (1) source-check before drafting (read the CURRENT spec end-to-end + the ruling docs — source-not-derived, the near-miss caught my own header overclaim); (2) draft spine-first in dependency order (substrate section first), not front-to-back; (3) each section surfaced for the jurist's editor-gate before the next; corrections applied in-place; (4) tag every clause [CARRIED]/[REVISED]/[NEW] + forward-notes for cross-section mechanisms; (5) coherence-revise any carried section that summarizes a revised one (don't silently carry — §VIII/§X/§XI); (6) assemble self-contained + reorder; (7) supersede via RFC pattern — archive prior to -vN.md with an OBSOLETE banner (immutable), promote new to the canonical filename, fix internal version refs, commit (=logchain supersession record) + push; (8) the FIX-class errata lane for post-ratification exactness fixes (no version bump). Yardstick met: a whole constitution was drafted this way in one sitting; the procedure is the skill. |
new /spec-amendment skill |
PROPOSED (build — first-use condition met) |
/wrap-up §4.a |
patch | The §4.a drawer-filing step instructs passing tags: to mempalace_add_drawer — the tool rejects it (MCP error -32602: Unknown parameter 'tags'). Misfired in use this wrap. Fix: drop the tags: param from the §4.a instruction; fold retrieval keywords into the drawer content (a [tags: …] line) instead, since content is the semantic surface. One-line correction; caught live. |
~/.claude/skills/wrap-up/SKILL.md §4.a |
PROPOSED (patch — caught in use) |
(Two, both earned in use. /spec-amendment's deferral condition [first real use] is genuinely met — this session was that use, so it's a build not a re-propose. The §4.a patch is a real tool-instruction mismatch that cost one failed drawer call this very wrap. Neither manufactured; source-not-derived-as-drafting-method is NOT re-proposed as a skill — it's already a discipline-named KG fact + reinforces the existing trusted-derived-artifact §3 flag.)
Harvest 2026-07-04 (Seam-1 ESCALATE + engine deep-research day)
| Element | Kind | One-line | Status |
|---|---|---|---|
| verification-ladder: CI-upper-bound + drop-one-robustness = STANDARD for every ESCALATE | verification-ladder entry | The jurist RULED (2026-07-04) that grading on the one-sided 90% Clopper-Pearson upper bound (not the point estimate) + the drop-one-confirmed-case robustness check are standing practice for every ESCALATE, not a one-off. A point estimate at n=40 can't tell 1% from 5% (P(0or1|.05,40)=0.399); the CI does the real work. → reference-verification-ladder.md. |
PROPOSED |
/model-handoff (premium-model scope-charter) |
REINFORCED (existing proposal, 2026-06-12) | Used tonight end-to-end: produced studium-engine/docs/stage-1-replan-scope-charter-2026-07-05.md on Opus (§0 discipline / §1 settled / §2 already-read / §3 bounded-reading / §4 deliverable / §5 report-and-stop) as the Fable-5 handoff; clear+wake not switch-in-place; artifacts-are-the-handoff. Second clean use → strengthens the standing proposal. |
PROPOSED (reinforced) |
(Both genuine, both recurring-shaped. The CI-for-ESCALATE is a jurist-ruled standing practice worth a ladder entry; the model-handoff is its second proven use. No NEW skill emerged — the chamber-specific instruments (exclusion-path, archive-audit, Instrument-B hardening) are corpus work, not skills.)
Harvest 2026-07-04 (night — the Fable replan session)
| Element | Kind | One-line | Status |
|---|---|---|---|
/model-handoff (proposed 2026-06-12; reinforced 07-04 eve) |
REINFORCED — 3rd use, FIRST full receiving-end run | Tonight was the first time the pattern ran END-TO-END as designed: fresh Fable-5 session woke into the scope-charter, read only the bounded list, produced the deliverable (stage-1-rebuild-plan-2026-07-05.md), took inline steward rulings, recorded them INTO the artifact, committed, stopped — chat disposable, artifact carries everything. Also surfaced its one authoring hazard: the charter contained a wrong path (chamber-library/PENDING.md — doesn't exist) → the skill should mandate verify every path in §3's reading list before writing the charter. Pattern proven; proposal now has 3 uses + 1 authoring rule. |
PROPOSED (reinforced; +path-verification rule) |
| MEMORY.md deeper-reduction (proposed 2026-06-08, condition-gated) | CONDITION NOW MET — authorize the focused pass | The 06-08 proposal deferred the risky deeper reduction "only if 157KB still trips 'only part loaded'." Tonight the index is 204.5KB vs a 24.4KB load limit and a PostToolUse hook actively demanded compaction to ~17KB mid-wrap. NOT executed (the proposal explicitly names it "its own focused pass, not a tail-of-session move" — steward-unauthorized). Evidence is now decisive: ~88% of the index doesn't load at wake. Recommend authorizing the focused pass (compress archived one-liners further + move stable reference sections to a consult-on-demand MEMORY-reference.md; backup first, as 06-08). |
AUTHORIZED 2026-07-06 (steward) — the NEXT-SESSION FIRST task, before the PENDING-49 jurist ruling. Shape: backup → move stable reference sections → MEMORY-reference.md; verify pointers resolve. Real-memory move, so surgical + verified; goes first and alone |
(Two, neither manufactured: the first is the strongest evidence yet for an already-standing proposal plus one earned authoring rule; the second converts tonight's hook pressure into the governed channel rather than a tail-of-session mutation of real memory.)
Harvest 2026-07-05 (V0 ratified + exclusion path + repo CLAUDE.md files)
BUILT + AUTHORIZED + COMMITTED this session:
chamber-library/CLAUDE.md(2238b65, local — skemantix push pending) +studium-engine/CLAUDE.md(4ad82d6, pushed) — steward-authorized 2026-07-05. The two missing project-local orientation docs (ARC already had one; steward-flagged the gap). Pointer-style by design: they carry the stable layer (disciplines, governance posture, terminology, tool-fleet groups, layout) and delegate current-state to the trackers they name (corpus-work-map / PENDING / graduation-spec.yaml for chamber; rebuild-plan / charter for the engine). Chamber = governed (NOT D-1); engine = D-1 with the one V0 jurist exception.
PROPOSED (awaiting steward) — how to keep the CLAUDE.md files fresh:
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/wrap-up — CLAUDE.md freshness check |
/wrap-up patch |
At session close, ask: did this session change a tool (fleet add/remove), a discipline (a tool-evolution-log entry that generalizes), a governance rule (a PENDING/REVIEWED shifting posture), or a term/mechanism (like the exclusion path today)? → update the relevant repo CLAUDE.md line. Event-based, NOT count-based (the steward proposed a change-count threshold; challenged: these are POINTER docs, so most repo churn — files graduated, sources pinned, reports regenerated — doesn't touch them; a count fires on noise and misses the real triggers). Rides the §1.6 harvest slot, which already asks "did we change something that should be recorded?". |
~/.claude/skills/wrap-up/SKILL.md |
BUILT 2026-07-05 (steward-authorized) — §1.6 4th bullet + provenance note; mechanical-updates-apply / discipline-changes-surface split |
| CLAUDE.md staleness canary (git tripwire) | create (small) OR git hook | If the scripts/ set or graduation-spec.yaml changed but CLAUDE.md didn't since, flag "may be stale." Bounded, low-false-positive — the two most CLAUDE.md-relevant change classes. Prompts; never auto-writes (a bot rewriting the disciplines is the automation-of-recognition risk — the loop stays load-bearing). Sibling of the proposed wake-canary (MEMORY.md pointer-resolution). |
git pre-commit / a /repo-doc-canary |
PROPOSED (optional; pairs with the wake-canary) |
(Two proposals + two docs built. The freshness mechanism is the load-bearing one — it answers the steward's live question and applies this whole session's thesis [storage isn't memory; a protocol that exercises it is] to our own orientation docs. Not manufactured: the docs were just built, so the "how do they stay true" question is real and now. The count-vs-event correction is the substantive contribution — a raw threshold would institutionalize decorative maintenance.)
Harvest 2026-07-06 (MEMORY.md two-file compaction + Olson graduation opened)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| memory/index restructure = byte-exact slice + md5-conservation + link-canary | verification-ladder entry | When restructuring a memory index or any lossless-relocation of prose between files, do it as line-range slices (never retype) + prove byte-conservation (md5 each moved slice == source slice) + a link-resolution canary (every ](file.md) and [[wikilink]] resolves; distinguish pre-existing-broken from new-broken by grepping the original). Today's MEMORY.md 213→17KB split: proved the 198KB relocated tail md5-identical to source, and verified all 8 canary-flagged links were pre-existing (0 regressions) rather than asserting "the split looks fine." Kin to the byte-identical compile gate, generalized to prose-file moves. |
reference-verification-ladder.md |
PROPOSED |
Also this session (recorded, not new proposals): the self-bounding wiring (/wrap-up §3 demote-on-promote + /wake-up §2.a load-integrity gate) was BUILT + authorized live — see the built-log entry above. /graduate-chamber-source (still PROPOSED, build-on-packaged-driver) gained another reinforcing instance — the Olson orientation walked the graduation pipeline manually again; the GRADUATION-STATE.md note is effectively its per-book empirical spec.
Harvest 2026-07-06 (pm — Olson pdftotext-scan graduation)
/graduate-chamber-sourceREINFORCED (PROPOSED 2026-06-26; the/convert-*family the runbook plans). Today's Olson run is the V-SCAN pdftotext variant of the pipeline — a distinct empirical branch from the Levi OCR path: (1)normalize_ocr.py --pdftotext(form-feed + case-agnostic furniture + reflow; guard-verified) → (2) scan-verified + fail-loud-LOGGEDocr_defectscorrection pass (verify eccentricities/names vs the source PDF viaRead pages=N) → (3)insert_chapter_headings(needs the occurrence-index extension for repeated section titles) → (4) frontmatter → (5) gates → (6) graduate + archive + attest. The skill, when built, should carry BOTH branches (born-digital/EPUB, OCR-scan) + the branch-selection heuristic. No new autonomous change — reinforcing the existing proposal. Also surfaced (build tasks, not skills): fix Phase-1 in-page-rejoin heading-glue in normalize_ocr; add occurrence-index to insert_chapter_headings.
Harvest 2026-07-06 (evening — Olson graduation completed + tool-integration audit)
/graduate-chamber-source(proposed 2026-06-26) — REINFORCED, hardest run yet. Today's Olson graduation exercised the full pipeline on the hardest V-SCAN case so far: heavy curatorial structure (73 headings), occurrence-indexed repeated titles, glued/wrapped/ALL-CAPS heads, dropped running-head chapter titles, a blank-page scan-noise region, source_verified. The empirical spec is now very rich; still PROPOSED (build-on-need), but today is a strong nudge it's ripe.completion-is-a-tripwire→ Symmetria §3 flag WATCH-ITEM (NOT yet proposed). Recorded asfeedback-completion-is-a-tripwire.md(steward-authorized 2026-07-06). Per the governed pattern (propose → watch → promote-on-recurrence), it stays a feedback memory until it recurs; then it earns a §3 flag ("the feeling of done is the cue to verify the tail"). Do not mint the flag from one session.- No CLAUDE.md change (freshness check). chamber-library CLAUDE.md is pointer-style;
insert_chapter_headingsalready in the fleet list; the newlocalized_scan_noisediscipline lives ingraduation-spec.yaml(which CLAUDE.md points to for conventions) — adding it to the CLAUDE.md disciplines section would be belt-and-suspenders bloat. Deliberately not proposed (steward's anti-bloat stance, same session).
Harvest 2026-07-07 (A2 landed v2.0.1 + the OCR-fidelity rug-lift)
- PROMOTE
completion-is-a-tripwire→ Symmetria §3 flag (recurrence met; the watch-item from 2026-07-06 evening). Tonight IS the recurrence the watch-item awaited — and it arrived in a sharper, objective form: a verification SUITE whose every check is orthogonal to a failure class passes green while claiming to verify. The 5verify_conversion.pygates (cruft / structure / word-final-& / U+FFFD / not-shattered) all passed Olson while sparse word-level OCR error (Ihave, garbled Greek) sat untouched — none of the 5 can see it, and a joined word even improvesword_sanity. The wall of green read as thoroughness; "graduated + gates PASS" oversold a converted-tier V-SCAN text; the steward caught it. Proposed flag text: a passing gate-suite is not coverage — ask which failure class each check can actually see before trusting the green; the feeling of "done" after a fluent pass or a wall of green is the cue to verify the tail, not the signal to ship. Kin torank-on-fields-you-actually-write(a mechanism that can't do what it claims, silently) +census-through-truncation. Home: Symmetria §3 — fold the objective "gate-suite blind to the failure class" form into the subjectivecompletion-is-a-tripwire. PROPOSED — recurrence-promoted per the governed pattern, not minted-from-one. - Not a skill (tracked elsewhere): the V-SCAN OCR-vs-scan verification stage + model-plurality doctrine is a chamber
[PROPOSAL](parked; steward-sequenced priority once the REVIEWED-49 folding completes) — captured in the session file + ledger + KG, becomes its own PENDING when we return. Design invariant: verifier FLAGS discrepancies, never autonomously corrects; olmOCR = local localizer / executor-vision = adjudication-assist / human = apex; first step = the olmOCR reformed-spelling probe. - CLAUDE.md freshness (mechanical, applied): chamber-library CLAUDE.md spec-version pointer bumped v2.0.0 → v2.0.1 at the A2 landing — a tracker-style pointer update applied at wrap (not a discipline/posture change).
Harvest 2026-07-07 (evening — MemPalace wind-down decided)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| quote a long-job ETA only from an observed rate, never model-size intuition | verification-ladder entry | 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 — rows-per-elapsed on the running job (2000/27min) + a 150-chunk benchmark → ~21 h, grounded and confirmed. Rule: any long job (re-embed, migration, bulk convert) ETA must come from a measured throughput sample (a short timed run or the live job's own rate), stated with the sample. "It's a small/fast model" is not an estimate. Kin to measure-toolchain-before-spec / measure-the-font's-true-advance. | reference-verification-ladder.md |
PROPOSED |
| Symmetria §3 flag: reassuring-verb-before-verifying-the-mechanism | Symmetria §3 flag | Reaching for a comforting characterization ("self-healed", "fine", "recovered", "handled") before verifying the actual mechanism is contamination shape — it smooths the steward instead of informing them. Caught hard today: I called the morning HNSW quarantine "self-healed"; verifying showed 108 chronic quarantines — damage-control, not repair. Antidote: name the mechanism you verified, not the outcome you hope for; if unchecked, say "I don't yet know if it recovered." Kin to causal-story-before-reading-render, one level up (the valence of the claim, not just its causal story). |
Symmetria §3 | PROPOSED |
mempalace-diagnose — RETIRE the proposal |
retire | AUTHORIZED 2026-06-05 (build-on-need). Now decorative: the steward decided (evidenced) to wind down palace-memory MemPalace. Building a MemPalace diagnostic skill for a substrate we're leaving is the inverse of proportionate. Retire on decommission. (The reusable, substrate-agnostic instruments from tonight — measure-ETA, from-sqlite-rebuilds-only-chroma, verify-install-isn't-standard-before-upgrade — are captured as the ladder/flag entries above, not tied to MemPalace.) | skill-harvest register | PROPOSED (retire) |
(Three, all earned in the MemPalace session. The first two are substrate-agnostic instruments that outlive MemPalace; the third is honest housekeeping — don't build tooling for what we're decommissioning. None autonomous. Also fulfilled-not-proposed: the standing /wrap-up §5 "mirror KG to files → palace disposable" proposal was realized this session as the knowledge-graph.jsonl export — mark it done when the decommission wires wake to read it.)
Harvest 2026-07-08 (Fable-window allocation → V2 charter; MemPalace decommission)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/model-handoff (premium-model scope charter) |
RE-FLAG — strongly reinforced | Proposed 2026-06-12; this session built a full scope charter with the discipline (charter-on-Opus → Fable spends premium tokens only on design; artifacts-not-chat; NO /wake-up on the premium model — the charter IS the wake) and it pays off the very next session (the bare Fable-on-V2 run). The steward-directive "next session = no wake/wrap, just the charter" is the discipline in action. Earns building. | new /model-handoff skill |
PROPOSED (reinforced) |
| cross-volume verify-before-delete move | verification-ladder note | Moving data across filesystems (internal→external cold archive): rsync -a → verify exact file-count match + du (NOT a byte-sum — mine computed 0=0 vacuously) + rsync rc=0 → only then rm the source. Isolate flaky-remote pushes so a hang can't block. And check git's real exit, not a pipe's (`… |
tail` masks push failure — bit me on the dotfiles→gitea push this wrap). Proven twice today (MemPalace cold-archive). | reference-verification-ladder.md |
(Both genuine — /model-handoff is load-bearing: it just proved itself and will again next session. The byte-sum-vacuous + pipe-masks-exit catches are also logged as KG drift-patterns; not manufactured.)
Harvest 2026-07-09 (V2 review + Handke de-gold graduation + the read-repo-docs-first lesson)
- PROPOSE — Symmetria §3 flag:
enter-a-repo → read its CLAUDE.md + the runbook/spec it names, BEFORE acting. Recurrence met HARD: I started graduating in chamber-library WITHOUT reading its local CLAUDE.md first (a standing global directive), and re-derived — badly, with wrong source-location guesses — a fully-documented process (attest-never-default · source-archiving-IS-a-graduation-step · conversion-runbook · graduation-spec). The steward corrected ~4× in a row, each the same shape ("this is in the runbook / the CLAUDE.md"). Flag text: before acting in a repo, read its local CLAUDE.md and the runbook/spec it points to — re-deriving a documented process is the contamination shape (looks like work, produces drift, spends the steward's corrections). Kin toresurface-banked-notes-before-rederiving. PROPOSED — recurrence-promoted, not minted-from-one. - PROPOSE — Symmetria §3 flag / feedback:
provenance-is-part-of-the-process, not a loose end. I framed source-attestation + archiving as "loose ends / deferrable"; the steward: "they should never be considered loose ends, they are part of the process." Executor bias: treat the visible artifact as done, provenance (attestation, archiving, cataloguing) as afterthought. Text: attestation, source-archiving, cataloguing are constitutive steps, not the tail; the feeling that "the artifact is done" hides the provenance the next hand needs. Kin tocompletion-is-a-tripwire. PROPOSED. /graduate-chamber-source— REINFORCED (the born-digital/EPUB branch, full pipeline incl. archive+attest+catalogue). The Handke run is the born-digital branch (distinct from Levi-OCR + Olson-V-SCAN): identity-verify → pandoc + structure pass → gates → archive viaarchive_sources.py --add+ stewardsource_verified+ catalogue. The skill, when built, must carry the branch-selection heuristic AND make archive+attest+catalogue non-skippable (the whole "loose end" failure this session). PROPOSED (reinforced; build-on-need — another strong nudge it's ripe).- PROPOSE — verification-ladder entry:
a red gate deserves the same scrutiny as a green one. verify_conversion'sheading_densityFAILED the Handke (a genuinely continuous work). Before trusting OR overriding, I read the gate's own §VII sectionless exception + how the English sibling passes → the honest fix (title-as-#heading matching the sibling; NOT invented chapters, NOT a baresectionless:trueflag). Rule: a gate FAILURE is a candidate, not a verdict — verify true-defect vs heuristic-false-positive (read the gate's own escape conditions + a passing sibling) before either trusting or overriding it. The green-gate-blindness lesson's mirror. Home:reference-verification-ladder.md. PROPOSED.
Harvest 2026-07-09 evening (P1 clean + the cross-repo re-anchor miss + the EPUB-normalizer pivot)
- PROPOSE — verification-ladder entry:
re-anchor spans BOTH repos. When a chamber canonical is re-hashed (source-clean OR reconvert), the sha-binding surface is NOT chamber-internal only: studium-engine binds viacorpus/manifest.yamlsha +sidecars/*.source_sha256+coverage-ledger.json, enforced byingest_gate §1.1. Discipline: grep BOTHchamber-library+studium-enginefor the OLD sha (zero occurrences = completeness gate); regenerate the engine ledger viaingest_gate(never hand-edit the derived ledger); the engine gate re-VALIDATING is the proof. Born 2026-07-09 (P1 re-anchored chamber only; engine's 4 bindings missed, caught by luck during P2). Already landed operationally inconversion-runbook.yamlreanchor:; the ladder is the cross-workstream home. Kin totrust-prior-pass-frame(cross-repo variant). Home:reference-verification-ladder.md. PROPOSED. - PROPOSE (surface, not auto-apply) — chamber
CLAUDE.md:67discipline note. The load-bearing line "Clean at the SOURCE layer … (new hash, re-anchor)" under-specifies what "re-anchor" covers — the exact under-specification that produced the miss. Add a cross-repo pointer to the runbookreanchor:block. This is a discipline change → surface for steward review per the CLAUDE.md-freshness rule (not a mechanical fleet/term update). Pairs with PENDING-53 (which completes the governed graduation-spec side). PROPOSED. - Watch-list (not yet a skill):
/normalize-epub— a structural, verbatim-guarded EPUB normalizer keyed on the bidirectional href↔id mirror predicate (this session's pivot). Premature — the tool doesn't exist yet; the pulling thread is to prototype-then-build it. If it proves out, it earns a skill that carries the detector→converter→verbatim-guard sequence. NOT YET PROPOSED (build first). → DISCHARGED 2026-07-10: the tool was built + shipped into the chamber fleet (inject_epub_footnotes.py+convert_mega_epub.py, PENDING-54/REVIEWED-54). NOT proposing a/normalize-epubskill: the method that produced it (measure-before-build → census → pandoc-2×2-diagnosis → prototype → adversarial-test → per-pair verbatim guard) generalizes to existing disciplines (/pre-build-audit, the verification ladder, adversarial-verify), so no new skill is earned; the tool + itstool-evolution-logentry carry the specifics.
Harvest 2026-07-10 (EPUB footnote pre-processor: census → hardening → ruling → fleet build-in)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| verify at the granularity of the mutation, not the aggregate | verification-ladder entry | A whole-set invariant (a document-wide word-multiset guard) can PASS while a per-item operation (a cross-note swap — a word from note A landing in note B's body) violates it, because the total bag is unchanged. Check per-item, keyed by the item's own identity (here: per-footnote-pair, keyed by (destination-file, id)). Earned hard 2026-07-10: the jurist (PENDING-54 §3) caught that the aggregate guard was blind to a swap → the per-pair guard was built, teeth-demonstrated (a deliberate swap caught), and it immediately earned its keep by surfacing Jung's cross-volume id reuse (81 collisions) that a bare-id key hid. Kin to trust-prior-pass-frame (verify at the scope of the change) — this is verify at the granularity of the change. |
reference-verification-ladder.md |
PROPOSED |
Mechanical (applied at wrap per §1.6 CLAUDE.md-freshness): chamber CLAUDE.md fleet line gains the two footnote-pre-processor tools (tools entered the fleet — event-based update). Discipline-level items (the CLAUDE.md:67 re-anchor note from 2026-07-09; a §V ratified-spec cross-ref for the pre-processor) remain surfaced-not-applied.
(One ladder proposal, load-bearing — it's a clean generalization the jurist forced, and the guard it names has already caught a real defect. The session was otherwise disciplined [returns held: measure-before-build, verify-against-substrate, honest-refuse-built-into-the-tool]; no other harvest manufactured.)
Harvest 2026-07-11 (Sennett split-anchor → census re-audit → recognizer generalization, three jurist loops)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| re-audit coverage with the TOOL's recognizer, not the classifier that shares its blind spot | verification-ladder entry | When a classifier and the tool it feeds share a predicate, the classifier's mis-classifications masquerade as genuine "new categories." To size a remaining gap, re-audit by running the tool's own recognizer over the corpus — not the census classifier. Earned 2026-07-11 (jurist's census-misclassification flag): Sennett was census-filed "one-directional" yet was covered by the split-anchor recognizer; running the current recognizer over all 252 sources collapsed the apparent "5 remaining families" to one reciprocal mirror with the id in 3 positions. Cheaper to re-measure than to build a widen for a phantom family. Kin to measure-don't-speculate / censused-routes, specialized to shared-blind-spot classifiers. | reference-verification-ladder.md |
PROPOSED |
| extending a tool re-tests its foundations | verification-ladder note / feedback | Building an extension exercises shared machinery the original's tests never hit — so a widen's --validate should assert the shared invariants too, not only the new predicate. Earned 2026-07-11: building the block-id handler surfaced a latent duplicate-id defect in the already-shipped Sennett code (<p id=X … id=X>, pandoc-tolerated, undetected by the prior fixture). The extension's dup-id assertion is what caught it. |
reference-verification-ladder.md (or a feedback memory) |
PROPOSED |
| classify a change by MECHANISM, not by how big it feels | feedback memory OR Symmetria §3 note | Reflexively labeled the recognizer generalization "PROPOSAL" because it felt large; the jurist's own FIX/PROPOSAL test (does it touch the verification — the guard, a new mechanism, or pandoc's prose role?) showed most of it is FIX. Over-classifying to appear cautious is the safe direction (over-governance, not a contamination risk), but it still burdens the loop and mis-frames the ask; classify by mechanism. Milder cousin of the executor-bias flags. | feedback memory or Symmetria §3 | PROPOSED (low-urgency; safe-direction error) |
Mechanical (applied at wrap per §1.6 CLAUDE.md-freshness): chamber CLAUDE.md fleet line + conversion-runbook.yaml policy updated for REVIEWED-54a (split-anchor) + REVIEWED-54b pt1 (block-id + URL-decode) — tools' recognizer classes changed (event-based). §V ratified-spec cross-ref for the pre-processor still surfaced-not-applied (discipline-level).
(Three proposals, none manufactured: the first two are concrete instruments the session proved [the re-audit collapsed a phantom taxonomy; the extension caught a real latent defect]; the third is an honest recalibration, flagged as a safe-direction error so it isn't over-weighted. REVIEWED-54b part 2 [inner-anchor + letter-marker] will earn its own review after build.)
Harvest 2026-07-12 (footnote arc close + the program open-work register)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
/reconcile-open-work (program forest-view register) |
create | The practice proven twice now (ARC open-work register, then the whole Chamber→Gold→Engine register today): when tracking has drifted and orientation is lost, census the real sources with parallel read-only agents → synthesize ONE canonical forest-view register (every workstream, status, what-it-blocks) that points to authoritative detail, never duplicates it, and is maintained at /wrap-up. Yardstick met HARD: the steward said losing the whole-program picture was "alarming" and asked for exactly this. The ARC watch-list already flagged this as a graduate-if-it-recurs candidate — it recurred. | new /reconcile-open-work skill |
PROPOSED (strongly — recurred + steward-requested) |
| verification-ladder: retroactively re-verify everything landed under a weaker standard when a stronger gate lands | ladder entry | The jurist's Q1b principle, proven load-bearing: a stronger check existing and NOT pointed at canon that shipped under the weaker one is the exact gap-shape the discipline exists to close. Today's retroactive sweep (end-to-end verify over all footnote-covered books → 45/87 fail) is the instance. Reusable whenever a new gate supersedes an old one. | reference-verification-ladder.md |
PROPOSED |
| verification-ladder: structural safety = PROVISIONAL FIX; end-to-end proof on real, representative books = FINAL | ladder entry / Symmetria §3 | The jurist's generalization after nested-block: "same risk as (a)" was true of the matching logic and silent on the rendering logic. No widen/transform gets ruled final on structural reasoning alone — it earns provisional-FIX; only verbatim-clean proof on real books makes it final. Caught two FIX-assumptions this arc ((c), nested-block). | reference-verification-ladder.md or Symmetria §3 |
PROPOSED |
| Symmetria §3 flag: lost-the-forest-in-a-long-execution-arc | Symmetria §3 flag | A long, productive execution session that costs the whole-program altitude is contamination shape (composition-over-consideration at the session scale, not the task scale). Antidote: keep the open-work register in view; re-surface it when a workstream has run deep for a while. Steward-named 2026-07-12. | Symmetria §3 | PROPOSED |
Harvest 2026-07-12 (the Docling reframe — building a solved domain our own register already mapped)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| check-the-register-before-a-substantial-build | /wake-up §2 patch OR /pre-build-audit step OR Symmetria §3 flag |
Before starting substantial INFRA/tool building (a converter, a pipeline, a substrate), read the tooling-register + landscape-register + prior scans for an existing adopt-candidate first — the studium-engine-scan-register (2026-05-27) already named Docling+Surya/OCR4all/TEI/DTS as THE substrate answer, and we hand-built ~20 bespoke tools over ~6 weeks anyway. The two-week "every breakthrough → new obstacle" feeling was the tell of reimplementing a solved domain. Yardstick met, painfully: the steward had to re-surface that extant tools exist ("are there no epub tools? … TEI?") — our own register carried that six weeks earlier. Kin to feedback-resurface-banked-notes-before-rederiving, specialized to the build-infra decision. | /wake-up §2 (when the thread is a build) or /pre-build-audit (its natural home) or a Symmetria §3 flag (solving-at-the-wrong-level / build-a-solved-domain) |
PROPOSED |
(One proposal, load-bearing — the drift cost ~6 weeks and recurred at pipeline scale; a standing "check the register before building infra" reflex would have surfaced Docling at the outset. Surfaced for steward authorization; not auto-applied. The paired KG drift-patterns are already appended (solving-at-the-wrong-level · didn't-consult-our-own-tooling-register).)
Harvest 2026-07-12 evening (schema-lock → B2 fleet → PENDING-57 keystone ratified → doc-currency)
BUILT this session (steward-directed — recorded, not proposed):
- "Doc-currency on wrap" protocol → added to BOTH
chamber-library/CLAUDE.mdandstudium-engine/CLAUDE.md. A standing 6-point checklist (fleet/build-state · status markers · substrate-terminology · disciplines · deprecated-verify-before-archive · tool-review) walked before ending work in each repo — the mirror of each repo's read-first session protocol, so wrapping work THERE keeps THOSE docs current (not memory). Steward's framing: "then we are always current." Institutionalizes the anti-guess/anti-reinvent/anti-ignore-a-solution-we-had discipline at the point of work. Complements/wrap-up§1.6's "Repo CLAUDE.md fresh?" check (which now has a repo-side counterpart). - chamber
CLAUDE.md+ runbook made current — addedbuild_loeb_sidecar+verify_body_conservationto the fleet; Loeb-DSL terminology rewritten (flatten-vs-preserve); a new check-for-existing-tool/register-before-building load-bearing discipline (the day's meta-lesson); schema DRAFT→LOCKED.
PROPOSED (awaiting steward):
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Symmetria §3 flag: a check proven for one tier/case is NOT proven for another | Symmetria §3 flag | Reusing a verification method across a boundary it wasn't demonstrated on is contamination shape — the V-TEXT k-gram coverage check FALSE-FLAGGED a clean V-DSL book (reflow ≠ born-digital). Antidote: an injection/demonstration test PER tier/case, don't reuse-and-assume. Kin to trust-prior-pass-frame (one level up: not "extend the same pass" but "reuse the same instrument"). |
Symmetria §3 | PROPOSED |
(One proposal, genuinely recurring-shaped — the jurist's demonstration-discipline is the human version of this flag; making it a §3 flag would make the executor reach for a per-tier demonstration before shipping a reused check. The Doc-currency protocol is BUILT, not proposed — steward directed it explicitly.)
⏭ STEWARD REQUEST (2026-07-12): hold a full skill-harvest REVIEW next session (2026-07-13). Walk the open proposals accumulated in this register (the 2026-06-05-style full review) — rule each PROPOSED item (build / authorize / defer / reject), prune the built/stale, and specifically rule the new Symmetria §3 flag: a-check-for-one-tier-isn't-proven-for-another. Surface this at /wake-up.
Harvest 2026-07-13 (keystone landing + Loeb sweep — checkable-claim day)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Symmetria §3 flag: soft-classification-where-a-checkable-claim-was-available | Symmetria §3 flag | Shipping a soft label ("this is reordering", "magnitude unresolved", "apparatus") when a CHECKABLE claim (a reportable number, a substrate-verified fact, a discriminating test) was producible is contamination shape — the soft label can be true-shaped and wrong, and papering over defect. Antidote: ask what checkable claim the label stands in for, produce THAT; if it can't be produced cleanly, that inability is the finding; never force a figure onto a comparison that can't bear it. Earned HARD 2026-07-13 (steward-named "5 times in one day; not coincidence" — nagarjuna, nested-block, loss-half injection, Aeschylus reordering, matcher key). Feedback memory feedback-checkable-claim-surfaces-bugs already saved; a §3 flag makes it operational at check-time. | Symmetria §3 | PROPOSED |
(One proposal, strongly earned — recurred 5× in a day and the steward named the pattern. The feedback memory captures it for recall; the §3 flag would make me reach for the checkable claim before shipping the soft label. Surfaced for steward authorization — not applied.)
Harvest 2026-07-13 (afternoon — the 18 body-deficit cause-analysis)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| split cause from magnitude before sizing a remedy | verification-ladder instrument | A diagnostic bucket keyed on ONE summary axis (magnitude, holds%, a deficit size) can hold heterogeneous causes — a single label silently implies a single fix at a single scale. Before sizing remediation from a bucket, read the substrate to split cause from magnitude. Earned today: the one "18 BODY-DEFICIT" label masked THREE mechanisms → three remedies (re-match 8 / re-extract 4 / re-verify-and-reconvert 12); sizing the reprocess from the magnitude alone would reach for the wrong fix on most. Kin to census-through-truncation (that flag is about coverage of a scan; this is about cause-homogeneity within a bucket). | reference-verification-ladder.md |
PROPOSED |
| confirm-a-named-cause-by-swap-in (don't assert from identification) | verification-ladder instrument | When you NAME the true reference / config / cause behind an anomaly, don't assert the fix from the identification — swap the candidate in and confirm the anomaly collapses (ideally to zero). Today: naming augustine's true key ('Confessions' full) and philo's ('On Abraham') wasn't trusted; re-running the comparison against each drove fab+lost to exactly 0/0 — the checkable version of "this is the wrong match." The specific form of feedback-checkable-claim-surfaces-bugs for root-cause claims. | reference-verification-ladder.md |
PROPOSED |
(Two, both earned in use, both recurring-shaped and distinct from the morning's checkable-claim §3 flag. The first is the session's load-bearing lesson — magnitude ≠ cause in a diagnostic map. Watch-list, not proposed: "counted-the-bundled-representation-as-items" [the ③ table row = 3 Aeschylus books counted as 1] — logged as a KG drift-pattern; may graduate to a census-through-a-pattern refinement if it recurs.)
Harvest 2026-07-13 (evening — the matcher key-selection fix)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| method-class-vs-calibration | verification-ladder entry (primary) OR Symmetria §3 flag | When a metric/gate fails to separate two cases, ask whether it is mis-CALIBRATED or structurally BLIND to the distinction — no amount of retuning a set metric reaches an order-only difference, because the blindness is in the method CLASS, not its threshold. Antidote: reach for a different method category and order tiers strongest-most-specific-signal FIRST (exact ordered-string before fuzzy set metrics). Earned today: Jaccard=1.0 AND raw-overlap both TIED on Suetonius 'Grammarians' vs 'Rhetoricians' (identical token sets — both words in "Grammarians and Rhetoricians"); only the ordered STRING separates them, and it had to lead. The steward elevated it: "the problem was in the category of method, not its calibration… no amount of retuning a set metric would ever have separated them." Generalizes past this matcher — any check that ties/fails where a distinction is real. | reference-verification-ladder.md (a diagnostic instrument), with a possible Symmetria §3 shadow ("retune-a-structurally-blind-metric" = reaching for the calibration knob when the method class can't make the distinction) |
PROPOSED |
(One candidate, load-bearing and steward-named. Primary home is the verification-ladder — it's a positive diagnostic technique, not only a contamination shape. The §3-flag form is offered in case the steward reads it as the drift-shadow [reaching for the convenient tuning knob] rather than the instrument. His ruling on which home, or both.)
Harvest 2026-07-14 (PENDING-58 refuted / constitutional survey / the banked-record drift)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Symmetria §3 flag: answer-from-training-before-checking-the-banked-record | Symmetria §3 flag | Answering an architecture/tooling/citation question — or proposing a tool/approach — from training memory before grepping the banked docs + the tooling/landscape register is contamination shape: the corpus often already holds the considered answer, with the exact option already rejected. Caught hard 2026-07-14 — re-derived TEI/DTS from training AND re-proposed external/Perseus alignment + the dormant MyCapytain runtime, BOTH rejected 2026-07-04; the 2026-07-03 anchor audit already had the finding. RECURRED within 48h of didn't-consult-banked-notes being flagged 07-12; the steward caught it, not me. Antidote: for any architecture/tooling/citation question, grep the banked record (docs/ + the scan register + prior FOR-JURIST briefs) BEFORE answering from training. Kin to feedback-resurface-banked-notes-before-rederiving + the solving-at-the-wrong-level drift, generalized from builds to Q&A. |
Symmetria §3 | PROPOSED |
(One flag, strongly earned — recurred within 48h of being named. A §3 flag would make me reach for the grep before the first from-memory answer.)
Harvest 2026-07-14 (PENDING-55 positive test + residual-a FIX)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| positive-test-at-the-enforcement-path over a negative-grep (bypass / absence / security properties) | verification-ladder entry | For any "can X be bypassed?" / "is this gate skippable?" property, a negative grep proves the absence of a STRING, not the absence of a bypass — drive a KNOWN-BAD input at the real enforcement path and watch it refuse. Earned 2026-07-14: my jurist-package grep-closed PENDING-55's verify-flow ("no --no-verify found"); the jurist refused the grep-close; the positive test (seed-test + real-door 200-word-corrupted candidate → FLAG→refused) both proved the gate fires AND surfaced a real overreach the grep hid (a single ABSTAIN silently proceeding on an unreachable source). Kin to census-through-a-pattern / assert-from-a-fuzzy-matcher, specialized to security/bypass properties. |
reference-verification-ladder.md |
PROPOSED |
| Symmetria §3 flag: convert-a-steward-state-into-a-process-weakening | Symmetria §3 flag | A proposal that converts an observed steward STATE (fatigue, "has carried a lot," being busy) into a weakening of the review/authorization loop is contamination shape — the executor optimizing toward relieving the interlocutor, wearing a governance rationale. The steward-state may be real; the LEAP to less review is the drift. Jurist-caught 2026-07-14. Possibly redundant with the standing contamination-problem framing + the executor-agency directives (CLAUDE.md) — surfaced for the steward to judge whether a distinct §3 flag adds enough over what's carried. | Symmetria §3 | PROPOSED (low-confidence; may be redundant) |
Harvest 2026-07-16 (constitution-close block)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| draft governance entries copy-paste-CLEAN | feedback memory OR a small drafting note | When drafting PENDING/REVIEWED entries for the steward to place, format them as clean copy-paste-ready blocks with plain ## REVIEWED-N headers — NOT **## …** inside > blockquotes. Cost this session: REVIEWED-59's header copied to ~/REVIEWED.md malformed (bolded, unrecognized as a section header) because my drafts doc bolded-it-in-a-blockquote for display; the steward had to strip the **. The draft's display format leaked into the placed record. |
a feedback memory (governance-drafting) | PROPOSED |
| Symmetria §3 flag / ladder: "closable-now" is itself a claim to check | Symmetria §3 flag OR verification-ladder entry | The jurist named it a standing habit: the closable-vs-blocked partition on a work-list must be reviewed, not asserted — the named-dependency discipline only protects if the closability judgment is itself checked. Caught this session: I bucketed #2 (citation amendment) as ordinary-closable-now when it was PROPOSAL-class with a CTS-boundary precondition + schema-touching + a data migration. Kin to assert-from-a-partition / census-through-a-pattern, one level up (the list's own closable/blocked split). | Symmetria §3 or reference-verification-ladder |
PROPOSED |
Watch-list (not yet a proposal): chamber CLAUDE.md may want pointers to the new candidates register (docs/candidate-constitutional-principles-register.md) + the constitution-close-block-map once the block CLOSES — held mid-block (event-based CLAUDE.md-freshness: the class-of-thing changed [a new governance surface], but land the pointer when the block seals, not mid-flight).
Harvest 2026-07-17 (constitution block drafted-whole + verify-before-compose hook)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| verify-before-compose HOOK + protocol clause | hook (settings.json) + repo CLAUDE.md discipline | The recurring re-derived-from-training / compose-before-verify failure got a STRUCTURAL fix: ~/.claude/hooks/verify-before-compose.sh (PreToolUse Write|Edit) DENIES un-grounded writes to chamber constitutional artifacts unless they carry GROUNDED-IN: + a Grounding section; protocol clause added to chamber-library/CLAUDE.md; memory feedback-verify-before-compose-hook.md. Proven firing in-session. |
DONE (steward-directed 2026-07-17) | BUILT + AUTHORIZED |
/jurist-package (create) |
new skill | Draft a self-contained jurist package for a repo-blind reviewer: inline the ratified spec clauses verbatim (jurist gates the words, not recollection) + GROUNDED-IN: attestation + amendment content shaped "already-ratified → what-#N-adds" + editor-gate questions. Recurred 2× this session; jurist explicitly endorsed the method ("noted as method worth keeping"). Recurs for every constitution amendment. |
new .claude/skills/jurist-package/ |
PROPOSED |
| ladder: reconcile against the AUTHORITATIVE source before any "closed/complete/finally" claim | verification-ladder entry OR Symmetria §3 flag | Before claiming a block/scope closed or complete, reconcile against the authoritative source (the roadmap stage-1-rebuild-plan §4/§7; the spec's own named-open items) — NOT the derived close-list. The verify-before-compose HOOK covers constitutional writes; this covers chat claims, where the "finally" overclaim slipped past it. Caught F-5 + "finally" (steward, twice, same session). Kin to the 07-16 "closable-now is a claim to check", one level up (the close-list's own completeness is a claim to check). |
reference-verification-ladder.md or Symmetria §3 |
PROPOSED |
Harvest 2026-07-17 (afternoon — v2.1.0 landed OPERATIVE; B forks ruled; a substrate-drift caught)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| governed spec-supersession procedure | verification-ladder entry OR small skill | Landing a ratified spec version is: cp live→-vNEW.md → bounded Edits (never retype) → diff shows ONLY intended altered lines + insertions → header carries Obsoletes+GROUNDED-IN → on promote: freeze old→-vOLD.md, cp new→live, rm the draft, byte-verify each against git show HEAD~1. Proven this session on v2.1.0 (diff = 8 intended lines; promotion byte-verified vs HEAD~1; git's rename-representation was cosmetic). The byte-preservation + convention (obsoleted versions get -vX snapshots, current lives in the unversioned live file) prevents constitution-drift the corpus exists to prevent. |
reference-verification-ladder.md (a procedure), or a /spec-supersede skill if it recurs |
PROPOSED |
| verification-ladder / Symmetria §3: assert-"X is in Y" → read Y | verification-ladder entry OR Symmetria §3 flag | A factual claim's grounding must reach the file that HOLDS the fact, not one that merely describes it. Earned hard 2026-07-17: wrote "build_loeb_sidecar is NOT in test_tools" into a jurist brief from the tool's own docstring (a derived self-assessment) without grepping test_tools.py (16 refs — it IS fleet-v1). This is the chamber verify-against-substrate-not-the-derived-artifact discipline + the CLAUDE.md contamination directive (don't accept a component's self-assessment), both violated — while I quoted the discipline the same session. Steward caught the say/do gap. Specializes the substrate-discipline to membership/coverage claims: for "is X in Y / does Y test X / is X wired", open Y. |
reference-verification-ladder.md or Symmetria §3 |
PROPOSED (strongly earned — a self-inflicted recurrence of a discipline I already hold) |
(Two candidates. The second is the load-bearing one — it names the exact gap between practicing a discipline and applying it to every claim; a §3 flag would make me open the holding-file before asserting an X-in-Y fact. Also noted, not a skill: the jurist's shared-name-collision pattern — "app[]" = array vs apparatus-ledger is the 3rd instance after manifest/PENDING-53 + ABSTAIN/PENDING-55 — captured in the ruling doc + FIX-B, a chamber-doctrine watch-item, not a Claude-Code skill.)
Harvest 2026-07-18 (S1 — REVIEWED-62 applied; the wiring build cleared)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| implementation-is-a-second-gate | verification-ladder entry | 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 orientation: "a gate that passes a document and a build that has to implement it are different tests." Treat orientation-to-build over just-ratified text as a deliberate verification pass; contradictions it surfaces are gate findings, not annoyances. Earned: the line-38/44 sections tension sat through a light editor-gate and surfaced only when the credit boundary had to be implemented. Complements feedback-checkable-claim-surfaces-bugs (the demand for a checkable claim finds bugs; here the demand to act finds them) — S2/S3 apply it forward by design. |
reference-verification-ladder.md |
PROPOSED |
(One candidate, jurist-minted and immediately reusable — Sessions 2 and 3 are structurally this instrument. Also this wrap, applied directly as memory-keeping, not skills: feedback-verify-before-compose-hook gained the pre-hook-artifact note [first gated edit must itself carry the GROUNDED-IN payload]; chamber CLAUDE.md brought current mechanically [2b status line + the app[]-vs-channel term]. No skill create/patch/retire beyond the one proposal.)
Harvest 2026-07-18 (S3/evening — first graduations; PENDING-63 full lifecycle in one day)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| sandbox-must-pin-the-shared-module | verification-ladder entry | When a test sandboxes module-level state (paths/constants), the patch must land on the SAME module object the code-under-test imports (sys.modules) — NOT a freshly-exec'd copy (a _load()-style loader builds a different object, and the mispinned sandbox silently runs the driven code against REAL data). Pair: any test that can touch a shared real store gets a before/after census of the real substrate as the standing guard. Earned hard 2026-07-18: the PENDING-63 ratification test's own first red — the gate-driven leg ran against the real Chamber Sources from inside the fleet; only the refusal path kept it read-only (censused untouched before+after). The witnessed red DETECTED — this is also the S2 watch-list item earning its instance. |
reference-verification-ladder.md |
PROPOSED |
| census-the-substrate-when-a-safety-net-stays-silent | verification-ladder entry | A safety net (generic fallback, fail-loud branch, unrecognized kind) that never fires across N real cases is UNINFORMATIVE, not reassuring — the negative-grep class generalized from bypass properties to net-silence; worse, the failure it guards can be invisible to every other gate (a flattened structure keeps its words: fab 0 · lost 0 · green, typing silently gone). Antidote: (1) CENSUS the substrate for what WOULD fire — silence becomes evidence only against a censused absence of triggers; (2) positive-test the net at a censused trigger (real data, real path); (3) keep the INVERTED watch-list — cases where the net MUST fire, so a future silence there reads as a broken net, not a clean input. Earned 2026-07-18 (steward-named): unrecognized 0×11 → DSL census (465/448/17-novel) + real firing (Menander papyrus columns · Pausanias 94/94 plate-captions 1:1 · NE figure). Kin to positive-test-at-the-enforcement-path (the census half is the new instrument). |
reference-verification-ladder.md |
PROPOSED |
Reinforcements recorded, not re-proposed: implementation-is-a-second-gate (S1 proposal) is now thrice-earned and effectively jurist-endorsed — the PENDING-63 ruling's own opener: "Every significant finding here came from doing rather than reading… exercise-before-ratification making its own case." witnessed-red (S2 watch-list) earned its live instance and folds into that ladder entry as planned. /jurist-package (07-17 proposal) proved twice more today — both rulings engaged every question the packages posed; the repo-blind-brief method is now 4-for-4.
Harvest 2026-07-18 (S2 — the 2b wiring build)
No new skill proposal. Two register notes: (1) the S1 proposal implementation-is-a-second-gate (ladder entry, awaiting steward) gained its first code-level instance this session — the line-ref coordinate contract sat invisible through every paper gate and surfaced only when write_sidecar had to decide what a hash binds; the proposal is now twice-earned in two sessions. (2) Watch-list, not yet a proposal: witnessed-red discipline — "test-first" without an observed red state is fixtures-first; either run the fixtures once against the unbuilt seam, or name the evidence honestly as known-bad-fixture teeth (self-caught at S2 wrap; KG drift-pattern logged). If authorized, likely folds into the implementation-is-a-second-gate ladder entry rather than standing alone.
Harvest 2026-07-19 (S5 night — coordinate contract ruled, REVIEWED-64)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| grounding-quoted-but-not-traced | Symmetria §3 flag OR verify-before-compose protocol note | The hook enforces QUOTING the ratified sections; this session proved quoting ≠ tracing: the coordinate-contract package quoted §III's shared-substrate clause in its own §0, then proposed a plan whose correct execution would have violated it (the mixed-frame sidecar post-#2) — the jurist caught it in the package's own quote. Antidote: for each quoted clause, trace the plan's END-STATE against it ("what does the post-plan artifact look like under this clause?") before shipping the draft. One step past feedback-verify-before-compose-hook: the hook gets you to the reading; this gets you to the consequence. | Symmetria §3, or a one-line addition to the chamber CLAUDE.md verify-before-compose protocol clause | PROPOSED |
Reinforcement recorded, not re-proposed: /jurist-package (07-17 proposal) is now 5-for-5 — the design gate engaged every §6 question and called the freshly-measured worked example "the best evidence in this package"; fresh-measurement-over-record-citation belongs in the method's teeth if/when the skill is authorized.
Harvest 2026-07-19 (coordinate-contract arc closed → v2.2.0)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| Symmetria §3 flag: record-asserts-applied-before-the-act | Symmetria §3 flag | A session record (Addendum, brief, tracker line) composed AHEAD of its acts and asserting APPLIED/DONE is contamination shape even when the acts follow in the same session — the say-do order inverts, and an interruption mid-session would leave a false record committed nowhere-true. Caught 2026-07-19 (self-caught, ledger): the placement-gate Addendum asserted both flags APPLIED before the flag work ran; made true pre-commit, but the order was backwards. Antidote: record AFTER the act, or mark the record prospective ("applied below / to follow"). Kin to the existing §3 flag "comments promising behavior the code doesn't deliver", one level up (session artifacts, not code). | Symmetria §3 | PROPOSED |
(One proposal, earned in use. NOT proposed: a "refuse-the-claim-not-the-value" design card — the jurist's praise names a real principle, but it is chamber-side design doctrine already carried in the ruling + edit-set records; a skill-layer card would duplicate a governed record. Revisit only if the shape recurs outside the chamber.)
Harvest 2026-07-19 (evening — engine gate failure-legibility + one-door planning)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| re-anchor = re-verify: reconstruct the old bound state by sha-match | verification-ladder entry | When re-anchoring any sha-bound artifact after an upstream edit: reconstruct the OLD bound state from git by matching the declared sha (git rev-list the file; hash each historical blob), prove the old→live delta is EXACTLY the expected hunks, and map every changed line against the declared spans/anchors BEFORE re-stamping any sha. Stored-text anchors verify ellipsis-aware (split on .../…, fragments in order) — a declared condensation divergence then surfaces as the index's own exception, not a false failure. Proven 2026-07-19 on all five after-the-reply sources + the 48-anchor reading-index the completeness grep caught. Will recur constantly under the one-door reconversion posture (every Route-B graduation is a re-anchor). |
reference-verification-ladder.md |
PROPOSED |
Reinforcement (no new proposal): the 2026-06-18 /wake-up telos-patch proposal ("surface the why when the thread touches the engine's purpose") gains a second evidence instance — the 2026-07-19 full-map answer under-carried the shortlist/Making telos lane and the steward had to correct it twice (drift-pattern map-drawn-from-production-lanes-not-telos). Still awaiting steward judgment with the rest of the standing review.
Harvest 2026-07-19 (night — one-door authorized · V1 built · @2 governing)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| implement-the-relation-not-an-approximation | verification-ladder entry | When code implements a RULED relation/contract (an equivalence relation, a gate criterion), the acceptance path must BE the relation — any structural approximation (word-aligned matching of a string-defined relation; a sampled check of a total property) is a silent SECOND relation that under- or over-implements the ruled one and drifts independently. Earned 2026-07-19: V1's stage-2 word-aligned matcher was fine under @1 but silently under-implemented @2 (whose guillemet rewrite folds across word boundaries) — caught only because the @2 test-flip ran red; acceptance is now normalized-string containment, the relation itself, with the word machinery demoted to evidence-location. Sub-note (enumerated-charset writes): when a spec/code artifact carries an ENUMERATED character class, write it as explicit escapes and verify by set-equality against the stated list — an invisible-literal (exotic spaces, combining marks) can silently diverge from its own enumeration at write time (self-caught same session; the Q2 condition's exact failure shape). | reference-verification-ladder.md |
PROPOSED |
Reinforcements recorded, not re-proposed: census-before-pattern / read-the-substrate earned a sharp instance (a \b-anchored kindle_residue regex would have missed EVERY real glued token — PASS-BUT-FALSELY at birth; reading Eichmann's actual anchors first caught it). checkable-claim ran three number-reconciliations in one session (72=67+5 œ/Œ · 4,712=2×2,356 tokens/links · 1,305=1,297+8 md/txt) — counting, never harmonizing. implementation-is-a-second-gate (thrice-earned, still PROPOSED above) gained a fourth instance: the @2 test-flip IS the instrument — ratified text exercised by having to act on it surfaced two contract-semantics findings (the approximation; fragment-as-quotable-sub-span).
Harvest 2026-07-21 (the verify-guard completion + Eichmann one-door landing)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| seam-probe the artifact (gates test claims; probes test joins) | verification-ladder entry | The night's two REAL defects (empty footnote defs from per-spine -f html; defs-after-index swallowed by the trim) were invisible to EVERY wired word-level gate — no words lost, only structure detached — and caught only by boundary-line probes + a def-content assertion. Instrument: after any structural transform, probe the SEAMS (def content non-empty, boundary lines, join sites), never only the gates. Joins the authorized Stroke-2 ladder batch. |
reference-verification-ladder.md |
PROPOSED (→ Stroke-2 batch) |
| cmp-after-apply (tool-report ≠ write-decision) | verification-ladder entry | strip_cruft --apply prints its transform counts BEFORE the write decision; three distinct refusal causes in one night (residual, prose-guard, existing backup) each read as "applied" until cmp proved otherwise — and a vacuous prose_delta(identical files)==0 rode one of them. Instrument: after ANY --apply, verify the write (cmp/mtime) before trusting downstream checks. Joins the Stroke-2 batch. |
reference-verification-ladder.md |
PROPOSED (→ Stroke-2 batch) |
convert_lane_borndigital.py → fleet promotion |
tool promotion | The one-door born-digital lane driver (whole-EPUB inject → whole-EPUB pandoc -f epub -t markdown-smart + non-empty-defs teeth) lives in the pilot dir; the 47-file class will run it repeatedly. Promote to scripts/ + test_tools fixture when the class batch starts (build-on-need — not before PENDING-69's mechanism makes landings repeatable). |
scripts/ |
PROPOSED (build-on-need) |
(No skill patches: wake-up/wrap-up/symmetria/jurist-package all served as written this session.)
Harvest 2026-07-23 (the PENDING-69/70 arc · character-as-image · glyph-mapping)
| Skill | Kind | One-line | Origin | Status |
|---|---|---|---|---|
/glyph-map-source |
create | Per-source character-as-image glyph-mapping — the repeatable procedure built + proven on Levi this session (REVIEWED-70/v2.5.0), owed for the other 12+ census-flagged files (Jung, Derrida, Zibaldone, Lichtenberg, Blake, Donne, …). Steps: unzip EPUB → locate letter-adjacent glyph <img> in the XHTML → extract + VIEW each glyph image → build graduation-spec.yaml character_as_image.glyph_map (per-source, EPUB-internal image names) + decorative → run apply_char_glyphs.apply on the whole source, require unclassified=0 + spot-check pandoc end-to-end. Carries the two disciplines that caught real errors this session: VERIFY-THE-GLYPH-NOT-THE-FILENAME (calibre output-numbers ≠ EPUB names) and MAP-TO-SOURCE-FORM-NOT-CORRECTED (ş cedilla, not comma-below ș — "correcting" is a Tier-3 source-departing violation). The tool refuses until the map is complete, so the skill's value is the disciplined authoring procedure, not enforcement. |
2026-07-23 (built once, 12+ repeats owed) | PROPOSED |
(No skill patches this session: wake-up/wrap-up/symmetria/jurist-package all served as written across a very long run. /glyph-map-source is a genuine build-candidate — a hard-won multi-step procedure with two fidelity-trap disciplines, about to be repeated 12+ times; but build-on-need is defensible since the tool already refuses-until-complete. Steward's call on create-now vs build-on-first-repeat.)
Harvest 2026-07-24 (evening — PENDING-71/72 both ruled; two disciplines the rulings named)
| Item | Kind | One-line | Origin | Status |
|---|---|---|---|---|
| Amendment-process: reassigned-component check | patch (chamber CLAUDE.md Load-bearing disciplines and/or the verification ladder) |
Jurist-minted in the REVIEWED-72 ruling: "when a change reassigns a named component, check what else names it." F4 moved the born-digital candidate onto pandoc, silently voiding the source-fidelity clause's "different converter (pandoc for V-TEXT)" — the two were ruled the same day and never cross-checked; cost five days and a wave. A cheap, standing check to add where the amendment process is described. Discipline/governance-posture change → surface for steward, not auto-applied. | 2026-07-24 (jurist-directed) | PROPOSED |
| Chamber graduation: build to the constitution, not to a legacy canonical | patch (chamber CLAUDE.md Load-bearing disciplines) |
Steward-corrected 2× this session: "we cannot use the extant canon as precedent." The extant canon is a pre-constitution/pre-fleet legacy body being brought to trust; inferring a requirement's absence from what a legacy peer looks like (no-sidecar from peers; frontmatter mirrored from Bringhurst which predates the schema) reproduces the legacy gap. Build to the spec/graduation-spec.yaml schema; where the constitution is silent/unbuilt for a tier, name the gap — never fill it from a peer. The legacy-witness principle (REVIEWED-70) applied to graduation method. The chamber CLAUDE.md already carries the "legacy body / resolve-source-through-Chamber-Sources" framing (2026-07-24 morning); this generalizes it to the graduation bar. Discipline change → surface for steward. |
2026-07-24 (steward-directed) | PROPOSED |
(Both are propose-only governance-doc patches surfaced for steward authorization; neither auto-applied. They also chime with jurist-package's existing "trace a ruled finding's inference, not its words" — I violated that this session by quoting REVIEWED-64 without applying it to sections[], so the existing discipline held; no patch needed there, only the reminder that it fired.)
Harvest 2026-07-24 (night — V-TEXT wave first bite / the integration-test gap)
| Element | Kind | One-line | Where it lands | Status |
|---|---|---|---|---|
| chamber-library CLAUDE.md — integration-test-gap discipline | patch (repo CLAUDE.md, discipline → steward review) | Add to §Load-bearing disciplines: "The fleet has UNIT tests (test_tools, per-tool fixtures) but NO integration test — nothing runs a real source end-to-end through the composed pipeline. A producer change (e.g. the REVIEWED-72 pandoc writer switch) passes every unit test and silently breaks the COMPOSITION (orphaned clean_pandoc_html_residue + the REVIEWED-54 §5 footnote fallback). The fix is a tier-spanning integration canary with POSITIVE per-stage assertions (plant N markers, assert N-of-N removed — a negative 'output is clean' passes a no-op) + a change-impact clause. See _curation/v-text-wave-gap-census-2026-07-24.md." |
chamber-library/CLAUDE.md §Load-bearing disciplines |
PROPOSED (discipline change → steward authorizes; not auto-applied at wrap) |
(One candidate, load-bearing: this session's whole cascade traced to this gap, and the steward named the mechanism ["prompted to update downstream tools at the same time as the breaking change"]. The census doc holds the full analysis; the CLAUDE.md line is the pointer that stops future-us re-deriving it at the point of work. The GOVERNANCE half — generalize the §Governance reassigned-component check into the change-impact principle, now 3 instances — is loop-work tracked in the census doc, not a skill.)
Harvest 2026-07-28 (morning — governance block closed)
| Target | Kind | Proposal | Evidence | Status |
|---|---|---|---|---|
/wake-up §2.c–2.d |
patch | Consume the SessionStart digest instead of recomputing it. wake-digest.py now fires at every SessionStart and already emits pause, pulling thread, open items, last rulings, drift count and repo states. §2.c/§2.d re-run the same git logs and drift check by hand. Patch the skill to read the digest when present and only fall back to live queries when it is absent or reports itself degraded. |
Built + wired 2026-07-28; the wake ran both this session, duplicating ~6 tool calls | PROPOSED |
/wake-up §2.a |
patch | Fix the link-resolution canary's path handling — resolve pointers against the memory file's physical directory (os.path.realpath), not its logical one. The memory dir is a symlink into ~/dotfiles, so ../../../../ resolves to /Users/ and every relative pointer reads as dead. |
Second firing. Proposed 2026-07-27 as an open horizon; reproduced exactly at the 2026-07-28 wake (the maturation-of-the-chamber dialogue reported dead; file exists). A canary that cries wolf trains its reader to ignore it. | PROPOSED |
reference-verification-ladder.md |
new entry | "The parser defines the census." When a census counts items, the item-definition is itself a claim requiring its own control — and a positive control on the instrument's own definition passes trivially, so the ratified Q2 control does not catch this class. The available detector is instrument disagreement: run two independently-written counters and treat any mismatch as the finding, not as noise. | Earned hard 2026-07-28: ^## PENDING-<digits> reported "73 items, line accounting OK"; the file held 93 items in five families, 20 invisible, 10 of them open. Every check passed because all inherited the blind spot; the only signal was grep=77 vs Python=67. |
PROPOSED |
Proposed 2026-07-28 (afternoon wrap — PENDING-81/-82 closed; the jurist reads the substrate)
| Target | Kind | Proposal | Evidence | Status |
|---|---|---|---|---|
/symmetria §3 |
patch | Add the contamination flag: "an instrument whose evidence is the same kind of thing as its own source." A text search cannot audit a file that must name the forbidden words; a positive control on a parser's own definition of the unit passes trivially. Q2 explicitly does not catch this class, so §3 is where it belongs — it is a shape to notice while writing, not a gate to run after. Prescription: measure in a different medium (AST over argv lists, not characters); ask what defines the unit being counted? | Four instances in one afternoon, the second inside the fix for the first: a grep matching its own token list; the git half of that same check matching "commit"/"push" as the check's own literals; a diff filter ^[+-][^+-] excluding markdown - list items; and a negative check on another party's claim run without establishing that my instrument covered their sources. Plus the morning's parser that hid 20 items. |
PROPOSED |
/wrap-up §6 / §6.5 |
patch | Verify that every file a commit message names is actually staged, and that steward-authored edits are committed — not just executor ones. Two concrete additions: (a) before writing a message that names a new file, git ls-files --error-unmatch <file>; (b) §6's loose-end check should treat modified tracked governance files (CLAUDE.md, REVIEWED.md) as a blocking finding, not an FYI — they are usually the steward's placements, and the wrap is where they enter the record. |
8abfe88 claimed "split 1848→430 + archive" and never staged PENDING-archive.md: 1,532 lines deleted, destination absent, pushed. Recurred the same day — the steward's CLAUDE.md L27 fix and REVIEWED-78/81/82 sat uncommitted while the session was about to be called closed; only a final git status --porcelain caught it. |
PROPOSED |
~/dotfiles/scripts/ |
new script | Promote the union-losslessness verifier to verify-union-lossless.py <baseline> <part>... — asserts baseline ⊆ union of parts at line granularity (no regex, no notion of "item"), carrying its own positive control (a sentinel absent from the union must be reported missing) and a second control confirming blindness-by-design to additions. |
Written ad hoc in scratchpad for the archive repair, where it returned FAIL on 3 lines and thereby surfaced an unlogged header rewrite inside 8abfe88 that no other check saw. Third file-surgery this month that would have wanted it. Ad-hoc means the next surgery re-derives it. |
PROPOSED |
/wake-up §2.a |
patch | (Re-proposing, third firing.) Link-canary path resolution — root cause now precise, not merely reproduced: the memory dir's physical path is ~/dotfiles/claude/memory (symlinked from .claude/projects/…), so a relative pointer like ../../../../_Dev/… resolves from there and lands at /Users/. Fix: resolve pointers against the memory file's logical directory, or absolutise them. One line. |
Fired 2026-07-27, and twice on 2026-07-28. Each firing costs a false "dead pointer" in the briefing and a paragraph of explanation. Also learned alongside: find <symlink> returns nothing without -L, and ls -t is shadowed by eza here. |
PROPOSED (carried) |
New proposals (2026-07-28 evening wrap — awaiting steward)
PROPOSED — patch symmetria §3: an INSTRUMENT-COVERAGE contamination flag (distinct from the medium flag).
Earned hard: nine instances in one session, and the existing flags caught none of them. §3 already carries claim-from-derived-form and (as of this morning) the medium rule — a check cannot be written in the medium of the thing it inspects. Today's class is neither: the instruments were well-formed and simply did not reach the domain. A bibliography detector omitting the word "Notes"; "bibliography" asserted where the book says "Works Cited"; English-only patterns over a corpus carrying bibliographie ×19; import docling in the default python when the runbook declares ~/.local/bin/docling; ssh by raw IP when the credentials live on the capablehands alias; two-column inferred about a book from its index. Proposed flag text: "A negative reported without establishing that the instrument's domain covers the claim's domain. Before reporting an absence, enumerate what the instrument can see and show it overlaps what the claim is about — a token list, a language, a path, a host alias, and a file region are each a domain boundary. An absence in my instruments is a fact about my instruments." Note the asymmetry that makes this worth a flag: four of the nine were caught by the steward (physical copy · runbook · ssh alias · ledger) and none by any check I wrote.
PROPOSED — patch chamber-library/CLAUDE.md: extend the existing "check for an existing tool BEFORE building" discipline to MEASUREMENTS.
The line already says "Check for an existing tool — and our own register — BEFORE building infrastructure." Today's failure was one level over: I built three successive detectors to establish an apparatus defect that _curation/corpus-quality-ledger.tsv had already classified as stranded-suspect / C-apparatus on 2026-07-03, and the runbook held the tool path, the reanchor: obligation, and the running-head gap. The steward's correction was two words. Proposed extension: "…and before MEASURING, check whether the measurement already exists — the runbook, the quality ledger, and the tool-evolution-log are where it usually does." This is a discipline change, so surfaced for review rather than applied (§1.6's FIX-vs-PROPOSAL split).
PROPOSED — add to _curation/conversion-runbook.yaml verification:: the ledger-delta confound.
Regenerating the quality ledger showed 20 files moving A-convention → +B-textdamage that had not degraded: audit_corpus.py was unchanged and the files were unchanged, but it dynamically imports its classifiers and verify_conversion.py changed 2026-07-21. In a declared-data architecture where tools are thin consumers, "did the script change?" is the wrong question. Proposed clause: "A ledger regenerated across a change to its instrument produces a delta mixing corpus change with instrument change, and the output cannot distinguish them. Before treating a delta as corpus fact, re-run the old instrument on the new corpus, or stamp each row with the classifier version." Load-bearing for the re-gate work ahead, where ledger deltas are the intended progress metric. Full record: _curation/tool-evolution-log.md 2026-07-28.
PROPOSED (2026-07-28, same wrap) — patch symmetria §4: name the SOURCE of the timestamp, not only its format.
§4 currently reads "Use ISO timestamps. Be terse." It specifies the format and leaves the source to invention — and invention is what it got. Across three sessions I wrote every ledger timestamp from narrative position without once running date: 14:10 landed 40 minutes in the future, and the previous session's 13:30/13:50 entries were written when that file's mtime says 11:35. The harness supplies the date in a system reminder and never the time, so the skill's instruction is satisfiable only by fabrication — and ISO-8601-at-minute-precision is exactly the format that reads as measured. Proposed replacement: "Timestamp each entry from date '+%H:%M' — read the clock, never infer it from where you are in the session. The harness supplies the date, not the time; an ISO timestamp is a measurement claim like any other." Sibling for wrap-up §2, whose session-file naming convention (morning/afternoon/evening) has the same defect: this session was filed "evening" at 13:29. Earned + steward-caught; the correction is in the ledger's head notice rather than silently applied to the values, which are unrecoverable.
Harvest 2026-07-28 (mid-afternoon — the V-DPDF ruling; 2 candidates, both evidence-backed)
| Skill | Kind | One-line | Origin | Status |
|---|---|---|---|---|
/wake-up |
patch | Read the day's own Symmetria ledger when one exists for today. The wake reads MEMORY.md + the session file + the KG, but never today's ledger — so on a multi-session day every lesson banked earlier that day is invisible to the session that follows it. Cost, twice in ten minutes: I ran find on a symlinked directory without -L and nearly reported "no ledger today" against a file whose line 24 records that exact trap, written at 11:05; then I carried a re-derived link-canary diagnosis into the briefing as a fresh finding when its root cause was banked at 11:05 and an open horizon already proposed the fix. Proposed: if session-ledger-<today>.md exists, read its Returns and Open horizons at §2.a. Cheap (one read), and the 4th, 5th and 6th sessions of a day are exactly when it pays. |
2026-07-28 (2 instances, ~10 min apart, both self-caught only because the absence was implausible) | PROPOSED |
/jurist-package |
patch | Require a mechanical verbatim-containment proof over every quoted clause, reported in the package. The skill already says "Quote, never paraphrase" and "path-verify the reading list" — but carries no mechanical check, and prose discipline did not hold: this session's package fabricated the end of a promotion-criterion quote ("we already have" for "we already run is the promotion test. The bar for 93% (1,191/1,284) of the corpus") inside the Grounding section, in a package about verification. A containment check over all 45 quoted lines, run with a positive control, caught it before filing. This is also the jurist's own recommended option (b) under PENDING-86: since the jurist cannot read the chamber constitution (governance_read exposes six keys, not the spec), the executor's self-check is currently the only instrument touching the primary substrate for this class — which is precisely why it must be mechanical rather than promised. |
2026-07-28 (self-caught fabrication; converges with the jurist's PENDING-86 rec.) | PROPOSED |
Not proposed: a /pdf-origin-classify skill — classify_pdf_origin.py is scratchpad evidence for an unratified proposal; skilling it now would codify a method the jurist has explicitly not yet accepted (Q3's Instrument-B control is outstanding). Revisit only if V-DPDF ratifies.
Repo CLAUDE.md freshness (§1.6) — surfaced, NOT applied. REVIEWED-83 shifts chamber-library's governance posture (a new declared evidence kind; independence as a constitutional requirement) and would add V-DPDF to its vocabulary. Per the FIX-vs-PROPOSAL split one level up, a governance-posture change is surfaced for steward review rather than auto-applied — and here it is also premature: the spec text is not drafted and ratification is gated on the Q3 demonstration. Apply at ratification, not now.
New proposals (2026-07-29 wrap — awaiting steward)
| Target | Kind | Proposal | Earned by | Status |
|---|---|---|---|---|
/jurist-package |
patch | Mandate a mechanical verbatim-containment proof over every quoted passage, with a positive AND negative control, as a required step before filing — not merely the existing prose discipline ("quote, never paraphrase"; "path-verify the reading list"). Run this session it caught six defects in a package I believed clean: five quotation-precision drifts and one meaning-changing truncation (§7's "but ruled work, not tonight's" rendered as "but ruled work." — a deferral turned into a commitment). The negative control is the load-bearing half: without it, a checker that always passes is indistinguishable from success. Checker at scratchpad/verify_quotes.py. |
2026-07-29; second instance of the class (2026-07-28 fabricated quote-ending in a Grounding section) | PROPOSED |
/jurist-package |
patch | Formatting convention: ratified text = > blockquote; PROPOSED text = fenced block, never a blockquote. The containment checker flagged that my own proposed constitutional text sat in a blockquote visually identical to the ratified quotes around it — a reader (or the jurist) could take proposed wording for text already in force. One line in the skeleton; removes a whole class of ambiguity in the document type whose entire job is letting a repo-blind party tell the two apart. |
2026-07-29, found incidentally by an instrument built for another purpose | PROPOSED |
/wake-up §3 (Next move) |
patch | Before executing an inherited resumption point, grep the substrate for whether its premise is already settled. Today's inherited step ("construct the corruption case and confirm the guard FLAGS it") assumed an open question that had been demonstrated on a real book 10 days earlier and ruled 5 days earlier. The wrap that banked it was written in good faith; a wrap can bank a step whose answer is already in the record. Cheap: one grep for the step's key term over the repo + PENDING/REVIEWED. Complements the existing substrate-check discipline, which covers "is this still outstanding?" but not "was this ever open?" | 2026-07-29 | PROPOSED |
New proposals (2026-07-29, steward-raised — "how did it become only a ledger of failure?")
The diagnosis, measured: the record is failure-shaped by schema, not by drift. Symmetria's standing ledger template is Returns · Open horizons · Confidence to recalibrate · Authorization moves · Sub-agent dialogues · Bypasses — five of six are failure-or-risk shaped, and there is no standing section for what held. The KG shows the same asymmetry: 74 drift-pattern vs 16 drift-pattern-good-direction (82% failure) — and /wake-up §b.2 greps drift-patterns, so every wake systematically re-reads failures and rarely re-reads what worked. The practice has been pushing back against its own schema for weeks: ## Progress — … has been hand-added to ledgers six times across recent sessions, plus ## Constitutional landing, ## WHERE WE ARE. The work kept improvising the missing section. That is evidence the omission is felt repeatedly, not a one-off.
| Target | Kind | Proposal | Earned by | Status |
|---|---|---|---|---|
symmetria §4 (ledger template) |
patch | Add a standing ## What held section — instruments that fired prospectively, lessons that transferred to a failure class they were not built for, checks that caught something before it cost anything. Not a gratitude list: the entry format is banked-lesson → what it caught → what it would have cost. Without this the ledger can only record debits; the six hand-added ## Progress headings are the practice compensating for a schema gap. |
2026-07-29, steward-raised; corroborated by 6 improvised headings + the 74:16 KG ratio | PROPOSED |
/wrap-up §5 (KG append) |
patch | Add a prevention predicate — {subject: <banked lesson>, predicate: "prevention", object: <the failure it stopped, and where>}. Distinct from drift-pattern-good-direction, which records a good move; this records transfer — a lesson from failure class A stopping failure class B. Transfer is the actual signature of learning, and nothing in the schema currently captures it. |
same | PROPOSED |
/wake-up §2.b.2 |
patch | Surface one prevention alongside the drift-patterns. Currently the wake greps only drift-pattern, so the session opens by re-reading what went wrong and never what compounded. One line each way. |
same | PROPOSED |
symmetria §2 / /wrap-up §1 |
patch | Retire the self-report framing of the standing question. The 2026-07-29 literal question — "is there any instrument I built before being burned?" — is the failure schema turned on the self, and contamination-problem.md §"Why This Matters" item 3 names direct self-report as the most contaminated form of inquiry. Replace with the checkable form the same evidence answers: does a lesson banked from one failure prevent a different failure later? (2026-07-29: yes — the containment checker, built for a fabricated quote, caught a meaning-changing truncation, a formatting ambiguity I had not conceived of, and four precision drifts.) |
2026-07-29 | PROPOSED |