CLAUDE.md: correct four stale claims, add reshuffle pointer; record as FABRIC-3.5 §XLIV

Authorized by Captain Bob. Each claim re-verified against source
immediately before editing rather than from this session's notes.

Theory files: 23 becomes 52, all listed in proof/ROOT, with a pointer to
COVERAGE.md's own statement that the deliverable is the verified boundary
rather than a green build. LITHOS_VERSION: 2.0.1 becomes 2.0.0, noting
§I.2 rolled it back because 2.0.1 names the SER5 hardware-track line and
claims progress not yet verified, and that the policy is semantic rather
than sequential.

ACL pinning carried two mutually inconsistent rules, neither matching the
code: policy never in C with no vm_find_word plus field assignment, and
separately that kernel-only words should be pinned in a kernel-specific
capsule. kernel_main.c:771-782 pins BIRTH and CAPSULE-BIRTH exactly the
forbidden way, deliberately, and ACL.4th's block-4005 comment explains
why -- so ACL.4th stays host-portable. Now stated as the rule plus its
one sanctioned exception.

The mkcapsule block rule was described as a 1024-byte budget verified
with wc -c. Reading tools/mkcapsule.c shows validate_forth_blocks
enforces 64 chars by 16 lines and a block number in [2048,5120). 64 times
16 is 1024, which is where the figure came from, but the enforcement is
per-line: eight lines of 128 chars is 1024 bytes and still fails. Note
that FABRIC-3 §XXXII.2's own correction of this claim was itself
incomplete, fixing the number while missing the line-length rule.

Adds a WORK IN PROGRESS pointer directing a fresh session to
FABRIC-3.6.md's START HERE, since CLAUDE.md is what auto-loads. It states
no reshuffle code exists and that the file's current Tripod descriptions
stay correct until the reshuffle lands, deliberately not pre-writing the
post-reshuffle state.

FABRIC-3.6.md: trap 5 rewritten, since it told a fresh session to
distrust four claims that are now fixed; it now names MANIFEST.md and
FABRIC-0 §25.7 as the documents that still drift. Also removes a quoted
commit id from the handoff that will always be stale.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VkM1zHGvBerLF6aqkHPweP
This commit is contained in:
Claude
2026-09-19 14:47:35 +00:00
parent 6233dcaef5
commit 89d886b7f7
3 changed files with 86 additions and 17 deletions
+45
View File
@@ -4620,3 +4620,48 @@ lock and no new state.
**Phase 3's design blocker is cleared. What remains before it is buildable are two decisions,
neither of which requires further investigation:** channels (one membership or negotiation), and
the switch-slot ceiling. **The reshuffle has no undesigned mechanism left.**
---
## XLIV. `.claude/CLAUDE.md` corrected (authorized 2026-09-19)
Item 20's four known-stale claims, plus a discoverability pointer, applied to `.claude/CLAUDE.md`
under explicit authorization. **Each was verified against source immediately before editing, not
from this document's own notes.**
| Claim | Was | Now | Evidence |
|---|---|---|---|
| Theory files | 23 (18 core + 5 ACL) | **52** (47 `StarForth_*` + 5 `ACL_*`), all in `proof/ROOT` | direct count; `COVERAGE.md` agreed all along |
| `LITHOS_VERSION` | `2.0.1` | **`2.0.0`** | `Makefile.starkernel:83`; §I.2 rolled it back 2026-09-04 |
| ACL pinning | "never in C… no `vm_find_word` + field assignment", *and separately* "pin it in a kernel-specific capsule" | **the rule, plus its one live exception** | `kernel_main.c:771-782` does exactly that, deliberately; `ACL.4th` block 4005 explains why |
| `mkcapsule` blocks | "1024-byte limit… verify with `wc -c`" | **64 chars × 16 lines, range `[2048,5120)`; verify with `--lint`** | `mkcapsule.c:344-345`, `:408-409`, `:430` |
**Also added:** a `WORK IN PROGRESS` pointer at the top directing a fresh session to
`FABRIC-3.6.md`'s `START HERE`, since `.claude/CLAUDE.md` is what auto-loads and this document
is not. It states explicitly that no reshuffle code exists yet, and that the file's existing
Tripod descriptions remain correct until the reshuffle lands — **deliberately not pre-writing
the post-reshuffle state as though it were current.**
### XLIV.1 — A finding: §XXXII.2's own correction was incomplete
`FABRIC-3.md` §XXXII.2 corrected the `mkcapsule` framing to "block range `[2048, 5120)` and a
hard 16-content-line-per-block cap." **Reading the tool directly shows a third constraint it
missed: line length ≤ 64 characters** (`mkcapsule.c:344-345`, `:430` — `validate_forth_blocks`
enforces a "64-char × 16-line block format").
**And it explains where the wrong figure came from: 64 × 16 = 1024.** The old "1024-byte limit"
was arithmetically right and operationally wrong — **8 lines of 128 characters is 1024 bytes and
still fails.** A correction that fixes a number while leaving the wrong *kind* of rule in place
is the subtler version of the same error, and §XXXII.2 made it.
**Recorded rather than propagated:** `FABRIC-3.md` is a living document for another topic and is
not edited from here. `.claude/CLAUDE.md` now carries the full 64×16 rule.
### XLIV.2 — Punch list
- ✅ **Item 20 — CLOSED**: all four `.claude/CLAUDE.md` errors corrected, with the pointer added.
- ⬜ **Item 42** (qualify "K"/"conservation", §XXXIX.6) and the `MANIFEST.md` corrections
(§XIII.2) remain — they belong to the files they describe, not to `CLAUDE.md`, and
`MANIFEST.md`'s ride the strip per §XXII.5.
- ⬜ **Item 45, NEW** — carry §XLIV.1's 64-char line limit into the `experiments/bare_metal/README.md`
capsule guidance if it repeats the byte framing. **Not checked; flagged.**