LithosAnanke v4.0.0-alpha.1: the first alpha release #127

Merged
rajames merged 21 commits from StarForth-v4.0.0 into master 2026-11-07 17:46:02 +00:00
Owner

What and why

LithosAnanke v4.0.0-alpha.1, the first alpha release (Captain Bob, 2026-11-07: "Kernel is 4.0.0. This is our first alpha release"). After this merges, master's merge commit is tagged v4.0.0-alpha.1, which starts release.yml.

  • Version: LITHOS_VERSION 2.1.0 → 4.0.0-alpha.1; the engine (VERSION) stays 3.2.0. The versioning policy in kernel/Makefile records the ruling: 4.x is a working line, v3.0.0 is no longer the next number.
  • The StarshipOS CA (FABRIC-3 XLVI): ci/pki/make-ca.sh, run on the CI box; capsules/pki/starshipos-intermediate.der (StarshipOS Capsule Signing, issued by the StarshipOS Root CA) in place of the snakeoil intermediate; mkcapsule refuses a key that is not the certificate's; CI signs with the secret CAPSULE_SIGN_KEY. This PR's acceptance run is the first to sign the capsules.
  • CI: the runner image fetches HOL-Library prebuilt (the server cannot build it); build.yml ignores site/-only commits.
  • Websites: site/ -- the .com from the design canvas, the .org landing page and dashboards, inquiries (master/detail, admin-only), the StarshipOS banner, the design's colours over the wikis' high-contrast theme.
  • Records: FABRIC-3 XLVI and XLVII, CHANGELOG.

Part of #120, #17. Not the v4.0.0 milestone: its nine open issues are what 4.0.0 itself will be.

Acceptance

The Acceptance check runs on this pull request, with the signing key. By hand, in a session with 15 GiB, on the tree this PR carries:

  • Logs from runs made by hand are committed in logs/: amd64 20261107-165611, aarch64 -165817, riscv64 -170149 (POST 538/538, dict_hash=0xfec8c47cfc6f437f on all three), the stick loaded high -170326, test-32 (39 programs, 0 failures), the Isabelle/HOL proofs -171020
  • Hardware this was tried on, if any: none

The record

  • docs/fabric/FABRIC-3.md has the ruling and what was built (XLVI, XLVII)
  • CHANGELOG.md (2026-11-07, v4.0.0-alpha.1)
  • Nothing in this PR is a fix nobody asked for (.claude/CLAUDE.md, Hard Rules)

🤖 Generated with Claude Code

https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2

## What and why **LithosAnanke v4.0.0-alpha.1, the first alpha release** (Captain Bob, 2026-11-07: "Kernel is 4.0.0. This is our first alpha release"). After this merges, master's merge commit is tagged `v4.0.0-alpha.1`, which starts `release.yml`. - **Version:** `LITHOS_VERSION` 2.1.0 → `4.0.0-alpha.1`; the engine (`VERSION`) stays 3.2.0. The versioning policy in `kernel/Makefile` records the ruling: 4.x is a working line, v3.0.0 is no longer the next number. - **The StarshipOS CA** (FABRIC-3 XLVI): `ci/pki/make-ca.sh`, run on the CI box; `capsules/pki/starshipos-intermediate.der` (StarshipOS Capsule Signing, issued by the StarshipOS Root CA) in place of the snakeoil intermediate; `mkcapsule` refuses a key that is not the certificate's; CI signs with the secret `CAPSULE_SIGN_KEY`. **This PR's acceptance run is the first to sign the capsules.** - **CI:** the runner image fetches HOL-Library prebuilt (the server cannot build it); `build.yml` ignores `site/`-only commits. - **Websites:** `site/` -- the .com from the design canvas, the .org landing page and dashboards, inquiries (master/detail, admin-only), the StarshipOS banner, the design's colours over the wikis' high-contrast theme. - **Records:** FABRIC-3 XLVI and XLVII, CHANGELOG. Part of #120, #17. Not the v4.0.0 milestone: its nine open issues are what 4.0.0 itself will be. ## Acceptance The **Acceptance** check runs on this pull request, with the signing key. By hand, in a session with 15 GiB, on the tree this PR carries: - [x] Logs from runs made by hand are committed in `logs/`: amd64 `20261107-165611`, aarch64 `-165817`, riscv64 `-170149` (POST 538/538, `dict_hash=0xfec8c47cfc6f437f` on all three), the stick loaded high `-170326`, `test-32` (39 programs, 0 failures), the Isabelle/HOL proofs `-171020` - [ ] Hardware this was tried on, if any: none ## The record - [x] `docs/fabric/FABRIC-3.md` has the ruling and what was built (XLVI, XLVII) - [x] `CHANGELOG.md` (2026-11-07, v4.0.0-alpha.1) - [x] Nothing in this PR is a fix nobody asked for (`.claude/CLAUDE.md`, Hard Rules) 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
rajames added 20 commits 2026-11-07 17:16:13 +00:00
ci: the nightly's proofs run last, and cannot hold back the images
Build / Image RASPI (push) Successful in 3m46s
Build / Image PC (push) Successful in 3m4s
Build / Image MILKV (push) Successful in 2m21s
Build / v4 tests (32- and 64-bit cells) (push) Successful in 8m51s
5690d2980b
Nightly 174 passed acceptance, then Isabelle was killed building HOL-Library
(exit 137, out of memory on the runner), and the images were never built or
published. The proofs check the theories, not the images: they now run after
the publish, whatever happened before them, and a failure still turns the run
red. Their log stays in the run's logs artifact. A release still runs them
before it publishes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
ci: HOL-Library built into the runner image
Build / Image RASPI (push) Successful in 2m12s
Build / Image PC (push) Successful in 2m34s
Build / Image MILKV (push) Successful in 2m25s
Build / v4 tests (32- and 64-bit cells) (push) Successful in 8m58s
4ae1f759d5
Measured here (Isabelle2025-2, one thread): HOL-Library from scratch takes
~11 minutes and peaks at ~5.3 GiB -- what nightly 174 was killed doing; the
StarForth session on a built HOL-Library takes under a minute and ~2.2 GiB.
The image builds HOL-Library once into Isabelle's own heaps, so every job
finds it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
pki: the StarshipOS CA, made on the CI box; capsules signed in CI
Build / Image RASPI (push) Successful in 2m17s
Build / Image PC (push) Successful in 2m31s
Build / Image MILKV (push) Successful in 2m20s
Build / v4 tests (32- and 64-bit cells) (push) Successful in 8m51s
03027f9769
Ruled by Captain Bob, 2026-11-07: "New root CA on the CI box. Valid
StarshipOS rather than snake oil intermediate."

- ci/pki/make-ca.sh makes the StarshipOS Root CA (its key stays on the CI
  box) and the StarshipOS Capsule Signing intermediate it issues, and
  stores the signing key as the secret CAPSULE_SIGN_KEY.
- The kernel finds the signing certificate by one name,
  CAPSULE_SIGNING_CERT_NAME = pki:starshipos-intermediate.der. The
  certificate itself lands once make-ca.sh has run; until then the
  snakeoil intermediate is in the tree under its old name and the
  capsules check as "no root key" (a warning, as "missing" was).
- mkcapsule refuses a signing key that is not that certificate's.
- SIGN_KEY has no default; acceptance, build, nightly and release set it
  from the secret.

FABRIC-3.md XLVI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
site/org: the .org wiki's landing page and its two dashboards
Build / Image RASPI (push) Successful in 2m18s
Build / Image PC (push) Successful in 2m54s
Build / Image MILKV (push) Successful in 2m29s
Build / v4 tests (32- and 64-bit cells) (push) Successful in 10m23s
51dd4a8391
Ruled by Captain Bob, 2026-11-07: a generic landing page for anonymous
visitors, a login-protected admin dashboard for him, and a protected
contributors' dashboard. Main.WebHome (everyone), Admin.WebHome
(XWiki.rajames alone), Contributors.WebHome (XWiki.StarshipContributors
and the administrator); CI shown as Gitea's live workflow badges.
install.sh puts them on the wiki through XWiki's REST API, with the group
and the space rights, and checks a guest's view. Not yet run: the .org
XWiki answers 503.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
site/org: the .org pages in the starshipos-f18.com look
Build / v4 tests (32- and 64-bit cells) (push) Successful in 13m44s
Build / Image RASPI (push) Successful in 2m43s
Build / Image PC (push) Successful in 2m55s
Build / Image MILKV (push) Successful in 2m55s
6f14d8d6bc
Captain Bob, 2026-11-07: style .org like the StarshipOS.com design canvas.
build.py makes the three pages from one source, as {{html}} blocks in the
canvas's look (navy, orange accent, JetBrains Mono and Exo 2), and the same
pages as the canvas's .org artboards.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
Merge remote-tracking branch 'origin/master' into StarForth-v4.0.0
Build / Image RASPI (push) Successful in 5m30s
Build / Image PC (push) Successful in 3m44s
Build / Image MILKV (push) Successful in 2m59s
Build / v4 tests (32- and 64-bit cells) (push) Successful in 9m50s
911b1529cc
site/com: the .com pages from the design canvas, installed
Build / Image RASPI (push) Successful in 3m1s
Build / Image PC (push) Successful in 3m39s
Build / Image MILKV (push) Successful in 4m27s
Build / v4 tests (32- and 64-bit cells) (push) Successful in 11m56s
8918951482
Captain Bob, 2026-11-07: build the .com from the StarshipOS.com canvas.
canvas/ holds the artboards as drawn; build.py makes Main, Inquiries and
TryIt as {{html}} pages (the wiki's links and domains, the images as
attachments, the real console in Try it, the forms by e-mail); install.sh
puts them on the wiki and checks a guest's view. Installed on
starshipos-f18.com: every page and image reads 200 as a guest, and renders
without a macro error.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
site/org: installed; rights before pages; objects as XML
Build / Image RASPI (push) Successful in 2m17s
Build / Image MILKV (push) Canceled after 0s
Build / v4 tests (32- and 64-bit cells) (push) Canceled after 0s
Build / Image PC (push) Canceled after 1m3s
7d9dd4e4a9
The first run on starshipos-f18.org created the dashboards, then XWiki
refused the group and rights objects: a form-encoded POST needs XWiki's
form token (CSRF), an XML one does not. For about two minutes Admin.WebHome
and Contributors.WebHome were readable by guests (links and the names of
secrets, no values). Objects now go as XML, and the spaces' rights are made
before the pages, so a failed run cannot leave a dashboard open. Installed:
Main 200, Admin and Contributors 401 as a guest, 200 as rajames; a second
run changes nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
site: the design's colours over the wikis' high-contrast theme; .org inquiries
Build / Image MILKV (push) Canceled after 0s
Build / Image PC (push) Canceled after 0s
Build / Image RASPI (push) Canceled after 0s
Build / v4 tests (32- and 64-bit cells) (push) Canceled after 0s
c2ff10015f
- site/colorlock.py: both XWikis force black and white with !important (a
  HIGH CONTRAST DARK THEME block in the skin's cssVariablesInit.css). On our
  pages only, the design's colours win: each inline colour made !important,
  and a stylesheet scoped to the page root (.ssos) for the rest. Used by
  site/com/build.py and site/org/build.py; the .com reinstalled with it.
- site/org/inquiries (Captain Bob, 2026-11-07): the .com's inquiries go to an
  admin-only master/detail on the .org -- Inquiries.WebHome (Live Data
  table), one page per inquiry under Inquiries.Entries with a sheet and a
  status, PublicInquiry (public) filing them with its author's rights and
  echoing nothing a visitor sends; a hidden trap field for robots. The .com
  form posts there. Installed and tested: a guest's inquiry filed and
  deleted; one whose name and message were script macros was stored as
  text, nothing ran.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
site: no Python caches
Build / Image MILKV (push) Canceled after 0s
Build / v4 tests (32- and 64-bit cells) (push) Canceled after 0s
Build / Image PC (push) Canceled after 0s
Build / Image RASPI (push) Canceled after 13s
dca3ea56b9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
site: visitors see the design alone, not XWiki's chrome
Build / Image MILKV (push) Canceled after 0s
Build / Image PC (push) Canceled after 0s
Build / Image RASPI (push) Canceled after 0s
Build / v4 tests (32- and 64-bit cells) (push) Canceled after 0s
038556bb3e
Captain Bob, 2026-11-07: "Menu bar". For guests only, the .com pages and
the .org landing page hide XWiki's top bar, breadcrumb, title block, page
menu, panels, footer and tour, and the design runs the full width (a
velocity check on $isGuest; the stylesheet in a literal block). Logged in,
the wiki is all there. Checked on a phone and a desktop: the chrome is
hidden on Main, Inquiries and TryIt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
Five website commits queued five Build runs (183-187), ~17 minutes of image
builds each on the server both wikis run on; the .org stopped answering.
build.yml now ignores pushes whose changes are all under site/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
Captain Bob, 2026-11-07: "The banner XWiki should not say that." Both
wikis now have a colour theme of their own, FlamingoThemes.StarshipOS (the
stock Iceberg, copied, with the starshipOS wordmark as its logo; Iceberg
untouched), and the browser tab's title ends "- StarshipOS". Installed on
both; checked as a guest on each (logo and title), and the .org's top bar
seen logged in.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
Captain Bob, 2026-11-07: "Kernel is 4.0.0. This is our first alpha
release." LITHOS_VERSION 2.1.0 -> 4.0.0-alpha.1; the engine (VERSION)
stays 3.2.0. The 4.x line is a working line (even major); v3.0.0 is no
longer the next number, and an LTS line takes the next odd major when
FABRIC-3.5.md XXX.5's criteria are met. Recorded in kernel/Makefile's
versioning policy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
The acceptance protocol on b7534107 (LithosAnanke v4.0.0-alpha.1), in this
session, one QEMU at a time in the foreground:
- amd64 logs/20261107-150809, aarch64 -151023, riscv64 -151359: [zuse@Hera]
  ok>, PARITY:V4_POST tests=538 pass=538 fail=0, POST: PASSED,
  dict_hash=0xfec8c47cfc6f437f on all three
- the PC stick loaded high, logs/20261107-151539: the same, no fault
- make -C v4 test-32: 39 programs, 0 failures
- Isabelle/HOL proofs, logs/20261107-152312/isabelle: Finished StarForth

CHANGELOG and FABRIC-3.md XLVII: the ruling, what was verified, and what
an alpha leaves open (the v4.0.0 milestone; unsigned capsules until the
StarshipOS CA).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
pki: the StarshipOS CA, made on the CI box (Captain Bob, 2026-11-07)
Build / Image RASPI (push) Successful in 3m44s
Build / Image PC (push) Successful in 2m53s
Build / Image MILKV (push) Successful in 2m37s
Build / v4 tests (32- and 64-bit cells) (push) Successful in 9m8s
c589d3d5b7
Made on the CI box by ci/pki/make-ca.sh (2026-11-07 16:50 UTC): subject
O=StarshipOS, CN=StarshipOS Capsule Signing; issuer O=StarshipOS,
CN=StarshipOS Root CA; 2026-11-07 to 2036-11-06; CA:TRUE, pathlen:0;
Ed25519. SHA-256 of the DER
13a28dda4098ef4f11cba42823a30a9898fdaffdf0c15130126fd2fe029b9a6c. Its key
is the repository secret CAPSULE_SIGN_KEY; the root's stays on the box.
The snakeoil intermediate leaves the tree (its history is in git).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
The protocol on 4ca935d8: three boots (POST 538/538, one dict_hash), the
stick loaded high, test-32 (39 programs, 0 failures), the proofs. Every
capsule logs 'missing (unsigned)': the kernel reads the new certificate;
CI signs with CAPSULE_SIGN_KEY. FABRIC-3.md XLVII.3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
ci: the runner image fetches HOL-Library, prebuilt, instead of building it
Build / Image MILKV (push) Successful in 2m18s
Build / v4 tests (32- and 64-bit cells) (push) Successful in 8m45s
Build / Image RASPI (push) Successful in 2m13s
Build / Image PC (push) Successful in 2m29s
Acceptance / Acceptance (pull_request) Canceled after 0s
2580a40e1d
The server cannot build it (5.3 GiB from scratch; capped, still 2.6-3.3
GiB against ~2.3 GiB free). The heap built here by the same Isabelle2025-2
is a generic package in this repository's registry (45 MB, SHA-256
bb247846...e999cb339e); the Dockerfile fetches it into Isabelle's system
heaps with the checksum pinned, the token a build secret. Portable: a
fresh Isabelle home with only this heap checks StarForth without
rebuilding HOL-Library. FABRIC-3.md XLVII.4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
rajames added 1 commit 2026-11-07 17:17:13 +00:00
ci: one concurrency group for every workflow; a runner-image rebuild blocks the rest
Build / v4 tests (32- and 64-bit cells) (push) Canceled after 0s
Acceptance / Acceptance (pull_request) Successful in 13m6s
Build / Image RASPI (push) Canceled after 0s
Build / Image PC (push) Canceled after 0s
Build / Image MILKV (push) Canceled after 0s
da020a430d
Captain Bob, 2026-11-07: "I also want that rebuilds block other jobs
always." acceptance, nightly and release shared the group qemu; now
runner-image, build and nightly-docs do too, so a rebuild of the runner
image (on the host's Docker daemon) never overlaps another job, whatever
the runner's capacity (#121). On this server every CI run is then one at a
time.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
rajames merged commit 4f675c8b75 into master 2026-11-07 17:46:02 +00:00
Sign in to join this conversation.