docs: ledger, registers and standing ruling S-36 for the part-2 instruction/memory work (R-229)
gates / gates (push) Successful in 8s
gates / gates (push) Successful in 8s
R-229 legs (a) and (c) CLOSED. R-230 opened for what this deliberately left -- the ruling owed on auto-written staleness, the symlink decision, the spec-as-failing-test pilot. R-231 opened for /opt/backup/scripts/ being unversioned host state, found while adding the memory store to the backup set: the same class this task was closing, inside the fix for it. S-36: the auto-memory store is backed up, never committed; no memory file is ever deleted; a rule file created mid-session is NOT live in that session. Second session in this repo, so REPORT-<topic>.md per CLAUDE.md; shared REPORT.md untouched.
This commit is contained in:
+30
@@ -17,6 +17,36 @@
|
||||
|
||||
## Standing rulings
|
||||
|
||||
**S-36 — THE AUTO-MEMORY STORE IS BACKED UP, NOT COMMITTED; AND THE WORKSPACE IS INSTALLABLE
|
||||
(2026-08-06, R-229 part 2).**
|
||||
|
||||
1. **`.claude-memory/` is never committed.** It is **auto-written** — Claude writes it, so nobody
|
||||
reviews it before it lands — and may name hosts, paths and out-of-band secret locations that the
|
||||
secrets rule keeps out of committed files. A scan on 2026-08-06 found no credential *values* (535
|
||||
keyword mentions across 104 files, one `key: value`-shaped hit that was prose, zero private-key
|
||||
blocks), but "no secrets today" is not a property a directory keeps on its own when a machine
|
||||
writes to it unattended. It is protected by `dooplex-backup.service` instead
|
||||
(`CLAUDE_MEMORY_DIR`). **Reversing this needs a passing secrets scan first.**
|
||||
2. **No memory file is ever deleted.** Set-aside means **moved** to `.claude-memory/archive/`. The
|
||||
part-2 reconciliation moved 40 and indexed 4, with the file count identical before and after.
|
||||
3. **`MEMORY.md` is the index, and the index is what loads.** Topic files are read on demand, so
|
||||
detail belongs in them, not in the index. `instructions_gate` check 6 now enforces the limits —
|
||||
over-limit FAILS (auto-memory drops content past the limit with no error), an orphan WARNS (the
|
||||
store is outside git), an absent store PASSES **while printing its reason**.
|
||||
4. **Correcting auto-written content is NOT yet ruled on.** The part-2 session diagnosed 21 lines
|
||||
carrying version literals, 5 carrying host addresses, and an entry still asserting a fact whose
|
||||
hand-written twin was deleted as expired — and **changed none of them**. R-230(a).
|
||||
5. **The workspace is installable.** `scripts/install_workspace.py` lays down the workspace-root
|
||||
`CLAUDE.md` and the `InstructionsLoaded` hook from versioned copies. Its targets are **live
|
||||
configuration**, not disposable like the skills: it backs up before every write, **merges**
|
||||
`settings.json` owning exactly one key, and **refuses** an unparseable settings file rather than
|
||||
overwriting it. `documentation/runbooks/workspace-CLAUDE.md` remains the canonical source — a copy
|
||||
under `workspace/` would be a third copy of a file whose problem is that copies drift.
|
||||
6. **A rule file created mid-session is NOT live in that session.** A directory whose instructions
|
||||
were already seeded is not re-scanned. Proven the hard way: after writing four rule files, reads
|
||||
that should have matched them produced no hook line at all. Verify new rules from a fresh session
|
||||
(`claude -p`), never from the frontmatter.
|
||||
|
||||
**S-35 — INSTRUCTION FILES ARE A SHORT CORE PLUS PATH-SCOPED RULES (2026-08-06, R-229).**
|
||||
|
||||
Decided while rightsizing the four `CLAUDE.md` files. The mechanisms were verified before being
|
||||
|
||||
Reference in New Issue
Block a user