Six commits from StarForth-v4.0.0, plus an empty head commit so acceptance runs:
Release machinery (#126):scripts/nightly.sh builds the PC stick image (pc-stick.img.xz), publishes it to Nexus (classifier pc-stick), and has a new gitea-release <tag> stage. release.yml runs it after the Nexus publish, using the RELEASE_TOKEN secret. The stage creates the Gitea release (a pre-release for -alpha tags) and attaches the ISO, the three images, SHA256SUMS, the docs PDFs and the root CA certificate.
PKI (#126):ci/pki/starshipos-root-ca.pem, the StarshipOS Root CA (public; valid to 2046; issued StarshipOS Capsule Signing, which openssl verify accepts), and its SHA-256 fingerprint in ci/pki/starshipos-root-ca.sha256.
Demo (#116):CPUQuota=150% in starshipos-demo.service, as set on the server.
site/com (#146): "Read the paper" links to the SSRN abstract.
FABRIC-3: XLVIII.6 (#131 closed: QEMU's capture doubled a byte; the kernel didn't) and XLVIII.7 (Downloads, the PC stick, the Gitea release, #92 into alpha.4).
No kernel source changes.
Test plan
Acceptance (.gitea/workflows/acceptance.yml): amd64/aarch64/riscv64 boots to [zuse@Hera] ok> with PARITY:V4_POST ... fail=0 and the same dict_hash, qemu-stick-high, make -C v4 test-32
gitea-release itself is first exercised by the alpha.4 tag
## Summary
Six commits from `StarForth-v4.0.0`, plus an empty head commit so acceptance runs:
- **Release machinery (#126):** `scripts/nightly.sh` builds the PC stick image (`pc-stick.img.xz`), publishes it to Nexus (classifier `pc-stick`), and has a new `gitea-release <tag>` stage. `release.yml` runs it after the Nexus publish, using the `RELEASE_TOKEN` secret. The stage creates the Gitea release (a pre-release for `-alpha` tags) and attaches the ISO, the three images, `SHA256SUMS`, the docs PDFs and the root CA certificate.
- **PKI (#126):** `ci/pki/starshipos-root-ca.pem`, the StarshipOS Root CA (public; valid to 2046; issued StarshipOS Capsule Signing, which `openssl verify` accepts), and its SHA-256 fingerprint in `ci/pki/starshipos-root-ca.sha256`.
- **Demo (#116):** `CPUQuota=150%` in `starshipos-demo.service`, as set on the server.
- **site/com (#146):** "Read the paper" links to the SSRN abstract.
- **FABRIC-3:** XLVIII.6 (#131 closed: QEMU's capture doubled a byte; the kernel didn't) and XLVIII.7 (Downloads, the PC stick, the Gitea release, #92 into alpha.4).
No kernel source changes.
## Test plan
- [ ] Acceptance (`.gitea/workflows/acceptance.yml`): amd64/aarch64/riscv64 boots to `[zuse@Hera] ok> ` with `PARITY:V4_POST ... fail=0` and the same `dict_hash`, `qemu-stick-high`, `make -C v4 test-32`
- [ ] `gitea-release` itself is first exercised by the alpha.4 tag
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
Since #151 an idle guest halts (1% of a core at the prompt), so the cap no
longer has to hold back spinning sessions. Captain Bob set 1.5 cores for
all sessions together on the server (2026-11-08): one busy visitor a full
core, half a core always left to the wikis and Gitea. Confirmed on the
server with a live session idle for 3 minutes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
- scripts/nightly.sh images builds the PC's USB stick too (make boot_image
TARGET=PC -> pc-stick.img.xz, in SHA256SUMS); publish sends it to Nexus
as classifier pc-stick. pc stays the ISO QEMU boots.
- scripts/nightly.sh gitea-release <tag>: the tag as a Gitea release -- a
pre-release for -alpha.N and the like -- notes from the tag's message with
the checksums, the images, SHA256SUMS, the documents and the StarshipOS
Root CA's certificate attached; run again, it adds only what is missing.
release.yml runs it after the Nexus publish, with the secret RELEASE_TOKEN.
Tested here: images builds pc-stick.img.xz (785 KB); gitea-release against
a stand-in Gitea API made a pre-release with the notes and ten files, and a
second run added nothing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
ci/pki/starshipos-root-ca.pem, made on the CI box by make-ca.sh
(2026-11-07, Ed25519, to 2046-11-07; Captain Bob), and its SHA-256
DA:A7:40:56:65:41:1A:FE:E6:08:85:3F:6E:AD:83:3A:38:30:83:E6:F0:6D:69:A6:A8:9E:92:BD:85:93:39:81
in starshipos-root-ca.sha256. Verified: self-signed, CA:TRUE, and it issued
capsules/pki/starshipos-intermediate.der (openssl verify: OK). Every
release attaches it (gitea-release), and the Downloads page shows its
fingerprint; it is also the anchor #139 would build into the kernel.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Six commits from
StarForth-v4.0.0, plus an empty head commit so acceptance runs:scripts/nightly.shbuilds the PC stick image (pc-stick.img.xz), publishes it to Nexus (classifierpc-stick), and has a newgitea-release <tag>stage.release.ymlruns it after the Nexus publish, using theRELEASE_TOKENsecret. The stage creates the Gitea release (a pre-release for-alphatags) and attaches the ISO, the three images,SHA256SUMS, the docs PDFs and the root CA certificate.ci/pki/starshipos-root-ca.pem, the StarshipOS Root CA (public; valid to 2046; issued StarshipOS Capsule Signing, whichopenssl verifyaccepts), and its SHA-256 fingerprint inci/pki/starshipos-root-ca.sha256.CPUQuota=150%instarshipos-demo.service, as set on the server.No kernel source changes.
Test plan
.gitea/workflows/acceptance.yml): amd64/aarch64/riscv64 boots to[zuse@Hera] ok>withPARITY:V4_POST ... fail=0and the samedict_hash,qemu-stick-high,make -C v4 test-32gitea-releaseitself is first exercised by the alpha.4 tag🤖 Generated with Claude Code
https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2