FABRIC-3.5.md §XXVI: the close protocol, and this document's close condition
Captain Bob, 2026-09-19: documentation sweep and SBOM/SPDX before making it master's head and tagging, and that is when FABRIC-3.5.md closes. The tail of the sequence is now fixed and the document has a defined end. Consolidates item 20 into a real checklist rather than a hunt. CLAUDE.md alone accumulated four traced errors during this design pass: 23 theory files against an actual 52, LITHOS_VERSION 2.0.1 against an actual 2.0.0 that FABRIC-3 §I.2 corrected down and CLAUDE.md never followed, the three-way ACL-pinning contradiction, and the stale 1024-byte mkcapsule framing. Plus the Tripod membership itself. MANIFEST corrections ride the strip so the manifest never describes a file that no longer exists, and the superseded subsystem docs need a deliberate update-or-archive call rather than a silent edit. SBOM is a real syft target in the hosted Makefile, so the step is run and commit -- but the committed output is dated 2026-07-24 and its DocumentName says StarForth rather than LithosAnanke, plausibly a monorepo-split artifact. A bill of materials naming the wrong product is read literally by exactly the audiences it exists for. Flags that the version for this work is a real decision and that 2.0.1 is not available for it. Per §I.2 the policy is semantic: 2.0.0 is the QEMU line, 2.0.1 is the SER5 hardware track, and §I.2 rolled the version back precisely because claiming 2.0.1 implies hardware verification that is still FABRIC-3's open topic. This reshuffle is QEMU-only work. Reports two pieces of unexpected remote state without acting on either. refs/heads/v2.0.1 still exists although §I.2 records deleting it and concludes master is the only branch; and refs/pull/1/head exists against this branch although this session opened no pull request and the repo's workflow forbids them unless asked. Records how the close is written: FABRIC-2's dated CLOSED/ARCHIVAL form, naming the tag, creating no successor since this document is not in the carry-forward chain, and leaving FABRIC-3 open and authoritative for its own topic. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VkM1zHGvBerLF6aqkHPweP
This commit is contained in:
+150
@@ -2418,3 +2418,153 @@ which is precisely the kind of claim that survives formalization.
|
||||
- ⬜ **Item 18** (§XVI.7) — the empty-floor halt. **Still the last undecided design item.**
|
||||
- Sequence otherwise unchanged (§XXIII.6): surgical strip first, build, formal re-verification
|
||||
last.
|
||||
|
||||
---
|
||||
|
||||
## XXVI. The close protocol: doc sweep → SBOM → master HEAD → tag → close this document (Captain Bob, 2026-09-19)
|
||||
|
||||
**Captain Bob, verbatim:** "and documentation sweep, SBOM + spdx before we make it masters head
|
||||
and tag it. That's when FABRIC-3.5.md is closed."
|
||||
|
||||
So the tail of the sequence is fixed, and this document now has a defined close condition:
|
||||
|
||||
1. Build work (§XXIII.6), ending with the Isabelle/HOL pass (§XXV.2).
|
||||
2. **Documentation sweep** (§XXVI.1).
|
||||
3. **SBOM + SPDX regeneration** (§XXVI.2).
|
||||
4. **Merge to `master` HEAD** (§XXVI.4).
|
||||
5. **Tag** (§XXVI.3).
|
||||
6. **Close `FABRIC-3.5.md`** (§XXVI.5).
|
||||
|
||||
### XXVI.1 — The documentation sweep, inventoried
|
||||
|
||||
Item 20 has been accumulating known-stale claims throughout this document. Consolidated, so the
|
||||
sweep is a checklist rather than a hunt. **Every entry below was traced, not recalled:**
|
||||
|
||||
**`.claude/CLAUDE.md`** — four separate errors found during this design pass:
|
||||
- "23 Isabelle/HOL theory files (18 core + 5 ACL)" → **52**, all in `proof/ROOT` (§XXV.2).
|
||||
- `LITHOS_VERSION` "currently `2.0.1`" → **`2.0.0`** (`Makefile.starkernel:83`); `FABRIC-3.md`
|
||||
§I.2 corrected it down on 2026-09-04 and CLAUDE.md never followed.
|
||||
- The ACL-pinning three-way contradiction (§XXIV.4) — its own hard rule vs. its own later
|
||||
advice vs. `ACL.4th`/`kernel_main.c`'s live behaviour.
|
||||
- `mkcapsule`'s "1024-byte-per-block" framing → the real constraints are block range
|
||||
`[2048, 5120)` and a **16-content-line** cap (§XVIII.4, per §XXXII.2's own correction, still
|
||||
outstanding).
|
||||
- Plus, after this reshuffle: the Tripod described as "(Hera the Mama VM, two Hermes instances,
|
||||
Artemis)" becomes **Hera / Artemis / Hestia**, and the superseded-subsystem note must add
|
||||
`FABRIC-3.5.md`.
|
||||
|
||||
**`capsules/MANIFEST.md`** (§XIII.2) — block 4055's "immutable ABI" claim that `FABRIC-2.md:2773`
|
||||
already declared stale, and block 2049's wrong contents list. Correct **as the files they
|
||||
describe are stripped** (§XXII.5), so the manifest never describes a file that no longer exists.
|
||||
|
||||
**Superseded subsystem docs** — `.claude/TRIPOD.md`, `HERMES.md`, `ARTEMIS.md`, `CONSOLE.md`
|
||||
already carry superseded headers, but after this reshuffle they describe a fleet that no longer
|
||||
exists. Same for `docs/03-architecture/tripod/{TRIPOD,HERMES,ARTEMIS,README}.md`, which
|
||||
`.claude/CLAUDE.md` still lists as current for Tripod. **Decide deliberately: update, or mark
|
||||
archival and point at `FABRIC-3.5.md`.** Not a silent edit either way.
|
||||
|
||||
**Also in scope:** `capsules/README.md` (lists `hermes/init.4th` as a live personality),
|
||||
`ROADMAP.md` / `docs/lithosananke/ROADMAP.md`, `CHANGELOG.md`, `README.md`,
|
||||
`docs/lithosananke/SYSTEM_ARCHITECTURE.md` and `M7.1.md`, and `proof/COVERAGE.md` (after the
|
||||
§XXV pass — and per §XXV.3 its *boundary* statement matters more than its file count).
|
||||
`capsules/BLOCK_MAP.md` is a generated artifact; regenerate, don't hand-edit.
|
||||
|
||||
### XXVI.2 — SBOM: a real target, and currently stale
|
||||
|
||||
**`make sbom`** (`Makefile:740-752`) runs **syft**:
|
||||
`syft dir:. -o spdx-json=sbom.spdx.json -o spdx=sbom.spdx`. Reproducible, not hand-maintained —
|
||||
so this step is "run the target and commit the output," provided `syft` is available.
|
||||
|
||||
Two things to check rather than assume:
|
||||
- **The committed SBOM was generated 2026-07-24** (`sbom.spdx`'s own `Created:` field) —
|
||||
roughly two months stale before this reshuffle adds or removes a single file.
|
||||
- **`DocumentName: StarForth`**, not LithosAnanke — plausibly an artifact of the monorepo split,
|
||||
since `syft` derives it from the directory name. Worth a look during the sweep; a bill of
|
||||
materials naming the wrong product is exactly the kind of thing a licensee or patent reviewer
|
||||
reads literally.
|
||||
- The target lives in the **hosted `Makefile`**, not `Makefile.starkernel`.
|
||||
|
||||
### XXVI.3 — The tag: version semantics here are real, and `2.0.1` is not available
|
||||
|
||||
**Tags are sacred ground** (`.claude/CLAUDE.md`) — "each tag has logs attached proving its
|
||||
state." And this project has already corrected itself once on exactly this, so the policy must
|
||||
be read before choosing, not after.
|
||||
|
||||
Per `FABRIC-3.md` §I.2 (2026-09-04), `Makefile.starkernel`'s own versioning policy is
|
||||
**semantic, not sequential**:
|
||||
- **`v2.0.0`** = the QEMU release line, even-major/LTS.
|
||||
- **`v2.0.1`** = the SER5 **hardware-track** line (RDRAND backend + thumbdrive image goal).
|
||||
|
||||
§I.2 rolled `LITHOS_VERSION` *back* from 2.0.1 to 2.0.0 precisely because "claiming `2.0.1`
|
||||
implies hardware-track progress that was never actually verified on real hardware." **That
|
||||
verification is still `FABRIC-3.md`'s open topic.** This reshuffle is QEMU-only work.
|
||||
|
||||
**So `2.0.1` must not be used for this**, and the version for the reshuffle is a genuine
|
||||
decision — **Captain Bob's, not this document's.** The shape of it: a structural Tripod change
|
||||
on the QEMU line reads as a minor bump (`v2.1.0`) rather than a patch, and `VERSION` (the
|
||||
embedded engine, currently `3.1.0`) likely moves too, since `BIRTH` registration, the new
|
||||
Hera-only word and the messaging layer all change. Both are hand-edited in
|
||||
`Makefile.starkernel` — the `bump-z`/`bump-y` targets were removed 2026-08-15 as non-functional
|
||||
and must not be resurrected from memory.
|
||||
|
||||
### XXVI.4 — Unexpected remote state, to investigate before the merge — not to clean up
|
||||
|
||||
Traced 2026-09-19 against `origin`. **Reported, not acted on**, per the standing rule about
|
||||
unfamiliar state:
|
||||
|
||||
- **`refs/heads/v2.0.1` still exists** at `fcba5282`. `FABRIC-3.md` §I.2 item 5 records that
|
||||
branch as deleted "local and `origin`" on 2026-09-04, having first confirmed it a strict
|
||||
ancestor, and concludes "`master` is the repo's only branch from here on." **It is not.**
|
||||
Either the deletion did not take or the branch was recreated. Worth resolving before a tag is
|
||||
cut, since the whole point of §I.2 was that the `v2.0.1` *name* carries a claim.
|
||||
- **`refs/pull/1/head` exists** at `bcf41e5` — this document's own §XIII commit. A pull request
|
||||
was opened against this branch at some point; this session did not create one, and
|
||||
`.claude/CLAUDE.md`'s subversion-like workflow says "no pull requests unless explicitly
|
||||
requested." Check what it is before merging, in case the intended path is through it.
|
||||
|
||||
### XXVI.5 — How this document closes
|
||||
|
||||
`FABRIC-3.5.md` closes when the tag exists. The close is a dated header in the form
|
||||
`FABRIC-2.md` uses — **"Status: CLOSED/ARCHIVAL as of `<date>`"** — stating what the document
|
||||
produced and naming the tag it closed at.
|
||||
|
||||
**Two things the close must get right**, both established in this document's own opening:
|
||||
|
||||
1. **It does not trigger the carry-forward chain.** The `FABRIC-0 → -1 → -2 → -3` discipline
|
||||
triggers on *closing* a document and hands its open items to a successor. This document is
|
||||
not in that chain — it is a standalone topic document — so **closing it creates no
|
||||
successor and hands nothing forward.**
|
||||
2. **`FABRIC-3.md` remains open, living and authoritative for its own topic** (bare metal
|
||||
boot). Nothing here supersedes it, and closing this document does not close that one.
|
||||
|
||||
Any item still open at close time is either carried into `FABRIC-3.md` explicitly (if it has
|
||||
become bare-metal-boot work) or recorded in the close header as deliberately unfinished — never
|
||||
silently dropped.
|
||||
|
||||
### XXVI.6 — Punch list, complete
|
||||
|
||||
**Design phase: complete.** One item (18) still carries an unmade decision; the rest is
|
||||
execution.
|
||||
|
||||
| # | Item | § |
|
||||
|---|---|---|
|
||||
| 1 | **Surgical strip — Category A.** Precedes everything | §XXII.6 |
|
||||
| 2 | Hestia: relocate `fabric.4th` + `font.4th`; move `PLOT`/`FB-*` registration | §XVIII.9 |
|
||||
| 3 | Hestia's block range vs. `capsule-reserved.txt`, avoiding 4997 | §XVIII.4 |
|
||||
| 4 | Hestia into `is_fleet_foundation`; birth at `kernel_main.c:865`; switch registration | §XIX.6 |
|
||||
| 5 | §XVIII.6's headless invariant stated in the implementation | §XVIII.6 |
|
||||
| 6 | Kernel-Hermes; the sinking latch; `SOS` type 10 | §III, §XXI, §XXIII |
|
||||
| 7 | `BIRTH` generalization + ACL/DNA inheritance | §VI, §XV.1 |
|
||||
| 8 | The Hera-only suicide word (`SCUTTLE` recommended); pin beside `BIRTH` | §XXIV |
|
||||
| 9 | **⬜ DECIDE: item 18** — the empty-floor halt when Hera is already gone | §XVI.7 |
|
||||
| 10 | Teardown paths reach `STADIUM-EVICT`; verify via `fleet_conserved` | §XV.4 |
|
||||
| 11 | Category B strips, each as coding proves the item dead | §XXII.4 |
|
||||
| 12 | Isabelle/HOL pass — deliverable is the restated boundary | §XXV |
|
||||
| 13 | Documentation sweep | §XXVI.1 |
|
||||
| 14 | `make sbom`; check `Created:` and `DocumentName` | §XXVI.2 |
|
||||
| 15 | Resolve the stray `v2.0.1` branch and PR #1 | §XXVI.4 |
|
||||
| 16 | **⬜ DECIDE: version**, then merge to `master` and tag | §XXVI.3 |
|
||||
| 17 | Close this document | §XXVI.5 |
|
||||
|
||||
**No code is authorized by this document.** Per Captain Bob's Law, nothing on this list starts
|
||||
without an explicit instruction.
|
||||
|
||||
Reference in New Issue
Block a user