68 KiB
name, description, metadata, permalink
| name | description | metadata | permalink | ||||||
|---|---|---|---|---|---|---|---|---|---|
| skill-harvest-register-proposed-skills-awaiting-steward-authorization | Standing register of skill create/patch/retire proposals surfaced by /wrap-up §1.6, awaiting steward authorization. The governed analog of PENDING.md, turned on our own tooling — propose → authorize → build → record. Surfaced every wake via this MEMORY entry. |
|
claude-memory/skill-harvest-register |
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).
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.
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. - [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. - [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.
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). |
PROPOSED (trigger met; awaiting steward authorization for a dedicated pass) |
(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.)