MEMORY.md 20,413 -> 16,887 B (19.9 -> 16.5 KB), steward-directed at the 2026-08-06 evening wrap after three deferrals. Relocation, not deletion, and verified as such: 0 dead pointers, 0 orphaned clauses, every dropped backticked span traced to a home elsewhere in the corpus. Method, derived rather than felt: an entry keeps its rule inline when it fires at a moment I would not recognise as needing a lookup (spelling, quotation, "am I deferring?"); it shrinks to a pointer when the trigger is loud enough that the file gets opened anyway (chamber work, L1 work, a jurist package); and a ⚠ constraint always travels with the workaround it limits, never relocated away from it. The mechanical diff of dropped spans caught two losses that re-reading did not: `feedback-constitution-as-block-then-pull-based-corpus` dropped by inattention (a fires-silently rule — restored), and the facet-formalism pointer for the V1-purpose decision, which existed ONLY on the index line being compressed. That second one is `removing-a-claim-is-not-removing-the-reliance` exactly: the open decision would have stayed live with its formalism unfindable. Relocated into project-chamber-versioned-releases.md, its canonical surface, rather than back into the index. project-studium-engine.md — NEW, and the gap MEMORY.md itself had flagged as "no tracker file yet". The engine's state had been living inline in the index (one 950-character line pointing at the charter, a constitutional document that holds no build state) plus per-session memories: two update surfaces and no canonical one. Now holds current state, a chronological log, and the open-thread stack captured mid-session so the day's accumulation cannot be lost. MemPalace wind-down relocated to MEMORY-reference.md — a workstream closed 2026-07-07 whose one live clause (the typography-palace exception) is carried by a standing preference that stays wake-loaded. session-2026-08-06-evening: the claim that Alexander's rating classes "compare as identical" under @3 is marked SUPERSEDED and false. Measured while landing the fix: old @3 gave COMPOST\ , COMPOST\\ , COMPOST — three distinct strings. The ratings never collided; the real defect ran the opposite way, corrupting the rating into a backslash residue and causing false REFUSALS. I carried that generalisation into the record from the package's Part III(a) without checking it against the package's own Part I table, which printed the refutation. session-ledger-2026-08-07: the day's returns, including that every defect found today was found by a COUNT rather than a read — the dropped-span diff, the span-count-versus-store (769 unreachable drawers), the adapter comparison (3 of 253) — and that twice the instrument itself was at fault in the more dangerous direction, failing healthy data in a way that invites editing the data to satisfy the checker. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NEWjLBP4quXbDPDL2byEzZ
14 KiB
name, description, metadata
| name | description | metadata | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| project-studium-engine | Canonical Studium Engine workstream tracker — build state, governing instruments, live blocker, and the chronological log of substantive moves. Established 2026-08-07 at the MEMORY.md trim, filling the gap MEMORY.md had flagged as 'no tracker file yet'; state seeded verbatim from the MEMORY.md line it replaces. |
|
Studium Engine — canonical workstream tracker
Established 2026-08-07, at the steward-directed MEMORY.md trim. Until now the engine had
no tracker file, so its build state lived inline in MEMORY.md (one 950-character line) and in
per-session memories. That is two update surfaces and no canonical one — the drift shape recorded
as skill-harvest proposal #183. This file is now the canonical surface; MEMORY.md carries only a
pointer.
This file holds state. It does not hold the why or the law:
- Why → project-studium-engine-telos-chamber-of-voices (the telos — above the build plan)
- Law → reference-studium-engine-architectural-charter (
studium-engine/docs/the-studium-engine-architectural-charter.md) - Touchstone →
~/_Dev/studium-engine/docs/the-chamber-touchstone.md(read at Step 0 when lost in the trees) - How we work here → feedback-studium-engine-sixtus-v-collaboration (Sixtus-V: build freely, surface only vision-forks)
- Tool review →
studium-engine/docs/tool-evolution-log.md(read its §0)
Current state (as of 2026-08-07 wake)
Build: Steps 0–7 built. Corpus CLEAN and gate-validated 13/13.
Governing instruments: V1 verify-quote + fidelity_equivalence@3 — ratified 2026-08-05,
GOVERNING (REVIEWED-87 placed 2026-08-06).
⚠ @3 is under challenge. PENDING-111 + a full jurist package filed 2026-08-06
(studium-engine/docs/fidelity-3-literal-asterisk-JURIST-PACKAGE-2026-08-06.md, containment
13/13): _MARKUP_EMPHASIS = re.compile(r"[_*]") strips the escaped literal \*, erasing
Alexander's confidence rating (two asterisks = a true invariant, one = progress, none = far from
invariant; "Using this book", pp. 14–15). Measured 81 / 114 / 54 across the manifested corpus.
The ruling sets the V-track course. Verified 2026-08-07: no ruling yet — zero occurrences of
PENDING-111 in ~/dotfiles/REVIEWED.md. It does not gate N1.
Read side — the parse fix LANDED, 27b79ca. retrieve.py now accepts a sentence; the query
was previously passed to MATCH ? where FTS5 parses it as a query expression, so ? and :
were syntax errors. Result, answer-keyed against tests/chavruta_harness.py:
| crashes | 26 → 0 |
| HIT | 0/22 ← the number to beat |
| MISLOCATED | 0 |
| FALSE-POSITIVE | 0 (across all 5 items where silence is the correct answer) |
Both deciding buckets empty ⇒ the revert condition was not met. The engine now grounds nothing honestly — every question needs 13–19 terms to co-occur. Recorded explicitly as the number to beat so a later pass cannot mistake silence for progress.
Test floor (the read side's first): tests/test_retrieve.py (21 checks) +
tests/chavruta_harness.py. test_conjunction_is_monotonic is the tripwire against every
future answer-more change — it must stay green.
Live blocker: PENDING-97 — retrieval AND-s bare tokens and has no semantic layer. Now reachable and measurable for the first time (the 13–19 term conjunctions above).
⚡ The embedding arm already scores 22/22 recall@20, voice-scoped, on the identical 22 items
where FTS scores 0/22 (corpus/measure-rerank-voicescoped.json, verified same id-set). Capability
measured in June, never landed. recall@20 means the right passage is in the top 20 alongside
nineteen others — the answer-more direction — so V2 is the gate that makes surfacing it safe.
Landing embeddings first would be the make-the-demo-nicer move.
NEXT: N1 → V2.
- N1 — the navigation-tree builder. Contract written:
docs/spec/n0-navigation-tree-contract.md§1 (the tree) and §2 (the four primitives:list-children,open-node,expand-to-parent,load-whole-work), including thatopen-noderefuses citable text for a non-citable node. Do not re-derive it. ⚠ N1 will NOT move 0/22 — that is N2, where the reasoner navigates; N1 lays the ground it walks on. ⚠ Build the tree from the READING INDEX (chamber-library/reading-indices/*.yaml— Alexander: all 253, re-found by name, ascending order verified, sha-bound), not by parsing headings: heading text hits three documented OCR defects (179 misnumbered 178 → a duplicate node; 187 lost its##; 195 has no heading). The harness's heading regex is a working reference, not the input. - V2 — gold set + pre-registered thresholds. Follows N1 rather than PENDING-97 for the reason above.
OPEN THREADS — the stack as of 2026-08-07 (captured mid-session, before the TEI detour)
Written because the session went N1 → @3 → R0 → TEI-decision and each step opened threads. That
accumulation is the thing the steward abhors; this block is the guard.
Owed to the steward, not startable by the executor
- REVIEWED-87 amendment — DRAFTED, NOT PLACED.
studium-engine/docs/REVIEWED-87-amendment-DRAFT-2026-08-07.md§A is the block to place.~/REVIEWED.mdis[ESCALATE], steward's hand. - Three measured findings for relay to the jurist (same draft, §B): the package's
≡claim is false and its own table refutes it; condition (a)'s "verdicts that may have overclaimed" has an empty referent (the risk ran the other way — false refusals); Q1's grounds hold on the corpus side only. Q3 census: escaped emphasis in 3 of 13 sources, not "Alexander only". - The TEI ruling itself — agreed in shape (MD+sidecar canonical, proxy trigger retired, deferral becomes a design window), not yet recorded. Blocked on the mechanism below.
Executor-startable, in rough priority
4. N2 — the agentic navigation loop + embedding entry-finder fallback; discovery emits
hypothesis-labelled output. This is the next N-track station and the one that can move 0/22.
5. V2 — gold set + pre-registered thresholds; the gate that makes surfacing the embedding arm
safe (22/22 recall@20 measured in June, never landed).
6. Alexander front_matter re-anchor — all five anchors stale (+20/+20/+22/+26/+32). Now
mechanical: python3 -m engine.reading_index recover proposes; nothing is applied. Unblocks →
7. The "Using this book" FIX — a composite-span misclassification, not a D-4 policy change.
D-4's own text: "citability is a function of convocation, not an intrinsic byte property",
with citable:false reserved for matter that is nobody's quotable voice. Alexander's framing
essays are his own words (the sidecar's own note says so). Partition the span; don't flip a flag.
8. R0 emit / migration — reading_index emit <id> renders native R0; nothing has been written
to chamber-library (D-3). Steward review before any write.
9. The collision census — count characters ambiguous between markdown syntax and authorial
content, per source. The number the TEI question will eventually turn on; deferred behind the
mechanism by steward call 2026-08-07.
10. 56 regions unverified (Mauss 23 + after-the-reply 33) — editorial/synthetic titles, so
name-landing cannot test them. A content probe at the declared boundary is owed.
Not this thread: the Seb package · the L2 design note · PENDING-109 census + PENDING-104 brief, both still needing dates, not "later."
Chronological log
Append substantive moves here at /wrap-up — not only to "Current state" above. A tracker with two
update surfaces drifts between them (skill-harvest #183).
2026-08-07 — PENDING-111 RULED, @3 corrected in place (4be9378)
Jurist: Q1 AUTHORIZE (narrow to unescaped delimiters), Q2 correction-in-place not an @4
bump (mechanism defect against standing doctrine), Q3 census follows non-gating, Q4 steward's.
FIDELITY_VERSION stays @3; @4 reserved. Implemented as one left-to-right scan, not
lookbehind-plus-unescape (that form mis-reads \\*). Falsifier incl. the jurist's nested case;
suite 33, fleet 153/153; gold 6/17 before and after — no verdict moved either way.
⚠ The REVIEWED-87 amendment is DRAFTED, NOT PLACED — docs/REVIEWED-87-amendment-DRAFT-2026-08-07.md.
~/REVIEWED.md is [ESCALATE], steward's hand; a jurist sign-off does not authorize a REVIEWED write.
⚡ Three measured findings contradict the package's own premises (draft §B, for relay): (1) the
COMPOST\* ≡ COMPOST\*\* ≡ COMPOST claim is FALSE — old @3 gave three distinct strings and the
package's own Part I table printed the refutation; (2) so condition (a)'s "verdicts that may have
overclaimed" has an empty referent — the real failure was false refusals, the opposite risk
direction; (3) Q1's grounds hold on the corpus side only — a human's bare COMPOST** still
normalizes to COMPOST. Census: escaped emphasis in 3 of 13 sources, not "Alexander only"
(Alexander 293 · Musil 16 · Arendt 1); ratings 83/114/56 over all 253.
Also opened by this ruling (Q4): D-4's primary text says "citability is a function of
convocation, not an intrinsic byte property" and reserves citable: false for matter that is
nobody's quotable voice. Alexander's framing essays are his own words — the sidecar's own note
says so — so fencing them is a misclassification against D-4, not D-4 working. The frontmatter
section is a composite span (YAML+TOC furniture + four Alexander essays) never partitioned.
⚠ Blocked: its partition points live in the reading index's front_matter block, and all five of
those anchors are stale (offsets +20/+20/+22/+26/+32; three land on blank lines) while the
patterns block in the same file is exact 253/253 — the 2026-06-12 re-anchor was partial and
the manifest reports one status, RE-ANCHORED-BOUND, for a file bound in one region and stale in
another.
2026-08-07 — N1 BUILT
engine/navigate.py + tests/test_navigate.py (32 checks) + docs/spec/n1-navigation-tree-note.md.
Tree: 9 works · 13 expressions · 359 divisions · 5,685 spans; four N0 primitives + a browsable
CLI. Fleet 142/142, retrieval untouched. 0/22 unchanged, as expected.
The derivation that mattered: every sidecar declares exactly ONE served section (Alexander's
body = 10,832 lines, "Patterns 1-253"), so the sidecar is the envelope and the reading index is
the articulation. Adapters declared per index filename; unknown shape → UndeclaredIndexShape.
Three defects, all caught by measurement, none by reading the code: 455 spans orphaned in gaps
between declared divisions → 314 more in the no-sidecar source → citability reimplemented and
diverged from chunker.section_is_served (latent). In the first two load_whole_work would have
silently under-returned. test_every_drawer_is_reachable is the invariant; red-witnessed at
1,970.
Owed / open: ⚠ 6 of 8 indexed sources cannot be name-tested (editorial or synthetic division
titles) — reported as an OPEN GAP, a content probe at the declared boundary is owed. ⚠ Mauss's
reading index is not sha-bound to the manifested file yet the manifest declares VERIFIED-BOUND.
Two constraint-candidates for the steward: (1) Alexander's confidence rating is in the source but
not declared by the reading index, so the tree cannot carry it without a chamber-side change —
converging with PENDING-111, where @3 erases the same semantic; (2) a manifest role: reading-source with no sidecar is chunked as role: text, citable: true — citable by absence.
2026-08-07 — tracker established
Created at the steward-directed MEMORY.md trim. State above seeded from the MEMORY.md line it
replaces plus session-2026-08-06-evening-the-asterisk-that-carried-meaning.md; nothing dropped.
Substrate-verified at creation: PENDING-111 has no ruling; engine/ contains no navigation module
and the four N0 primitives appear only in docs (N1 genuinely unbuilt); the N0 contract and the
Alexander reading index both exist at the paths named.
2026-08-06 evening — the parse fix landed; the asterisk that carried meaning
27b79ca — 26 crashes → 0, HIT 0/22, MISLOCATED 0, FALSE-POSITIVE 0. Semantics measured unchanged
(old path vs new over all 27 items, not one disagreement); whole-query phrasing rejected because it
answers less (1 where the conjunction returns 4). Silence path reached for the first time by long
questions, so a silence now names its term count and states it cannot distinguish "the voice is
silent" from "the terms did not co-occur"; an unsearchable query is marked ✗ NOT SEARCHED,
never coverage-warranted. Then the steward's printed A Pattern Language exposed the @3 asterisk
defect → PENDING-111 + jurist package. Manifest fixes 41527be, cbd6a9b (a disarmed
absent-sidecar tripwire; a usage fact in a bibliographic field; a defect record cited at
corpus_findings[1], a key existing in zero files fleet-wide). Full account:
session-2026-08-06-evening-the-asterisk-that-carried-meaning.
Before 2026-08-06
Not reconstructed here. Per-session memories carry it (session-*.md, 2026-07-05 onward for the
Stage-1 rebuild), together with studium-engine/docs/stage-1-rebuild-plan-2026-07-05.md and
docs/tool-evolution-log.md. Backfill on demand rather than speculatively.