Phase 5 close-out: Isabelle pass, doc sweep, SBOM, version bump (FABRIC-3.6.md tasks 5.1-5.4)
5.1: Isabelle/HOL pass (52 theories, clean) -- restated the boundary rather than just citing the green build: proof/ scope was already entirely outside this reshuffle's footprint (src/starkernel/, capsules/*.4th), so the boundary is unchanged, not moved. 5.2: Documentation sweep. CLAUDE.md's stale WIP banner and Tripod fleet description updated now that Phases 0-4 have actually landed (Hera/ Artemis/Hestia, no Hermes). MANIFEST.md rides the strip -- hermes/init.4th's block table replaced with a deletion note, init.4th/doe-campaign.4th/ hestia/init.4th entries corrected to match the post-strip live files. Confirmed the TRIPOD.md/0.1 contradiction was already resolved (2026-08-13). Settled the superseded-docs call explicitly: archive as-is, do not rewrite. Fixed experiments/bare_metal/README.md's block-size framing (still said 1024-byte budget; real rule is 64 chars x 16 lines). K-qualification checked clean against the two living documents; full retroactive sweep of the closed archival FABRIC corpus explicitly declined as disproportionate. 5.3: make sbom. Installed syft (user-local, approved). Found and fixed a real Makefile bug while at it -- the sbom target hardcoded --source-name StarForth, so DocumentName was wrong even after regenerating. 5.4: LITHOS_VERSION 2.0.0 -> 2.1.0, engine VERSION 3.1.0 -> 3.2.0 (minor, per the dictionary-visible-only rule). Replaced the stale version-comment block in Makefile.starkernel (had the odd/even LTS rule backwards) and docs/lithosananke/ROADMAP.md's retired versioning-policy section with the ratified ladder. Verified on all three architectures; riscv64's first pass hit a transient virtio_blk timeout during boot-time Zuse genesis mint, reported and confirmed non-reproducing on an immediate clean retry. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
3e201c82a5
commit
a4ad14aec6
@@ -7,34 +7,70 @@ longer exists here — see `.claude/CLAUDE.md`'s "On the branch topology" note)
|
||||
|
||||
---
|
||||
|
||||
## Release Versioning Policy (decided 2026-08-28)
|
||||
## Release Versioning Policy (ratified 2026-09-19, FABRIC-3.5.md §XXX — supersedes the
|
||||
2026-08-28 policy below)
|
||||
|
||||
This is the standing release-versioning policy for LithosAnanke. It is authoritative; the
|
||||
FABRIC documents track implementation against it, and any permanent change to the policy
|
||||
belongs here.
|
||||
|
||||
- **`X.0.0` — QEMU release.** A whole-number minor in the `X.0` position is the QEMU-only
|
||||
release: the point where the three-architecture (amd64/aarch64/riscv64) story under QEMU
|
||||
is complete and defensible on its own terms. Nothing real-hardware-only is required to cut
|
||||
an `X.0.0`.
|
||||
- **`X.5.0` — Hardware bare-metal release.** A `X.5` release is the real-hardware release:
|
||||
the point where the same story transfers to bare metal on real boards (SER5, RasPi 6,
|
||||
Milk-V, Zynq FPGA). Real-hardware-only work — the per-arch RNG drivers behind the unified
|
||||
entropy entry point, and real-board boot validation — gates `X.5.0`, not `X.0.0`.
|
||||
- **Even major numbers are LTS.** A release whose major number (`X`) is even is a
|
||||
Long-Term-Support release — maintained and supported long-term (bug fixes, security,
|
||||
backports) rather than a point-in-time cut. Odd major numbers are non-LTS development
|
||||
lines.
|
||||
**Superseded 2026-09-19.** The original 2026-08-28 policy (`X.0.0` = QEMU release, `X.5.0` =
|
||||
hardware bare-metal release, **even** major = LTS) used the minor field to carry a milestone
|
||||
meaning and had the LTS parity backwards relative to the ratified policy below. It is kept
|
||||
struck through immediately after this note for historical traceability, not as current rule.
|
||||
|
||||
Applied to the two planned releases: the **v2.0.0** cut (even major, so LTS) is the QEMU
|
||||
release; **v2.5.0** is the hardware bare-metal release that transfers v2.0.0's QEMU story to
|
||||
real boards. See `FABRIC-2.md` §G for the release-gate punch lists.
|
||||
- **Major: ODD = LTS line** (non-breaking fixes only — backports, never redesigns). **EVEN =
|
||||
working line** (breaking changes land here). The line you are on tells you whether breakage
|
||||
is possible at all — not the major number's parity signaling "supported vs. not" the way the
|
||||
retired policy read it.
|
||||
- **Minor** — release within that line. No longer carries a milestone meaning (`X.5.0` no
|
||||
longer means anything special) — milestones are roadmap entries now, not arithmetic.
|
||||
- **Patch** — working builds within a release.
|
||||
- **`LITHOS_VERSION` (kernel) and `VERSION` (embedded StarForth engine) are independent and do
|
||||
not auto-sync** — do not infer a relationship if they ever coincide.
|
||||
- **Engine `VERSION` bumps at tag time by what actually changed:** major = any
|
||||
FORTH-79-visible word semantics change; minor = words added/removed/relocated; patch =
|
||||
build-only, no dictionary-visible change.
|
||||
|
||||
```
|
||||
v1.0.x — serial-only production (released, historical encoding)
|
||||
v1.5.x — framebuffer VT100 console milestone (released, historical encoding)
|
||||
v2.0.0 — QEMU release: three-arch QEMU story complete (released)
|
||||
v2.0.1 — SER5 hardware-track line (historical; superseded by this policy)
|
||||
v2.1.0 — Tripod/kernel reshuffle: Hermes into the kernel, Tripod = Hera/Artemis/Hestia
|
||||
v2.2.0 — amd64 bare-metal bring-up (Beelink SER5)
|
||||
v2.x — further working releases; riscv64 / aarch64 board bring-up
|
||||
v3.0.0 — FIRST LTS, when and only when all 5 criteria below are met
|
||||
```
|
||||
|
||||
**LTS criteria (a tag may take an odd major only when all five hold):** real-hardware boot
|
||||
demonstrated on at least the amd64 reference board, logs committed as audit artifacts; no
|
||||
known-reproducible silent-failure defect open; ACL Phase 8 closed (or explicitly scoped out in
|
||||
writing); the `proof/` boundary restated and not contracted relative to the prior LTS; a soak —
|
||||
architecture unchanged for at least one full release cycle. The first tag meeting all five
|
||||
takes the odd major — no judgement call.
|
||||
|
||||
See `FABRIC-3.5.md` §XXX for the full ratified policy text and reasoning, and `FABRIC-2.md` §G
|
||||
for the release-gate punch lists this ladder replaced the arithmetic reading of.
|
||||
|
||||
<details>
|
||||
<summary>Historical: the retired 2026-08-28 policy (kept for traceability only)</summary>
|
||||
|
||||
- ~~`X.0.0` — QEMU release. A whole-number minor in the `X.0` position is the QEMU-only
|
||||
release: the point where the three-architecture (amd64/aarch64/riscv64) story under QEMU
|
||||
is complete and defensible on its own terms.~~
|
||||
- ~~`X.5.0` — Hardware bare-metal release. Real-hardware-only work gates `X.5.0`, not
|
||||
`X.0.0`.~~
|
||||
- ~~Even major numbers are LTS.~~ **Wrong — the ratified policy is odd = LTS.**
|
||||
|
||||
</details>
|
||||
|
||||
**Board-by-board hardware rollout, decided 2026-08-29 (extends the above as boards come
|
||||
online).** Real silicon is arriving incrementally (Beelink SER5 in hand now; RasPi 5 + Milk-V
|
||||
orderable around Mon 2026-08-31), so the hardware release is split per real board in hand,
|
||||
each its own even-minor cut on the same line (each `X.Y.0` here is an LTS point-in-time cut,
|
||||
not a separate dev line):
|
||||
online; corrected 2026-09-22 for the ratified §XXX policy — these are working-line minor
|
||||
releases, not LTS cuts, since v2.x is the even/working line).** Real silicon is arriving
|
||||
incrementally (Beelink SER5 in hand now; RasPi 5 + Milk-V orderable around Mon 2026-08-31), so
|
||||
the hardware release is split per real board in hand, each its own minor cut on the v2.x
|
||||
working line (v2.1.0, the Tripod/kernel reshuffle, landed first — see the ladder above):
|
||||
|
||||
- **v2.2.0 — amd64 bare metal.** Beelink SER5 (in hand). Gate: the generic GPT/FAT32
|
||||
thumbdrive image (`make -f Makefile.starkernel ARCH=amd64 thumbdrive`) flashes to and boots
|
||||
|
||||
Reference in New Issue
Block a user