Commit Graph
9 Commits
Author SHA1 Message Date
rajamesandClaude Opus 5.5 0fd7648a77 ci: acceptance.yml gates every PR into master; master only through an accepted PR
Build / Image RASPI (push) Successful in 4m19s
Build / Image PC (push) Successful in 4m14s
Build / Image MILKV (push) Successful in 4m30s
Build / v4 tests (32- and 64-bit cells) (push) Successful in 11m19s
Acceptance / Acceptance (pull_request) Successful in 16m48s
Captain Bob, 2026-11-06: what a developer runs, what CI runs and what
the nightly runs are one process, and "failures should not be allowed
to be merged to master".

acceptance.yml runs on every PR into master (opened, pushed to,
reopened): .claude/CLAUDE.md's acceptance protocol through the same
scripts/nightly.sh stages -- amd64, aarch64, riscv64 to [zuse@Hera]
ok>, the PC stick loaded high (and the three agree on dict_hash), then
make -C v4 test-32 -- one QEMU at a time, in one job. Its logs and DoE
CSVs are kept, pass or fail. master's branch protection requires it.

acceptance, nightly and release share the concurrency group qemu, so
the runner never runs two of them at once: CLAUDE.md's one-QEMU rule
holds in CI too. build.yml becomes the quick check on pushes only.

.claude/CLAUDE.md's Hard Rules: commit and push directly on the working
branch; master only through a PR that passed acceptance, no direct
pushes; no approval required while there is one developer. Named: the
Captain Bob method.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
2026-11-06 16:24:22 +00:00
rajamesandClaude Opus 5.5 6eadd2f56c ci: build.yml checks every push and PR; every job on Ubuntu 24.04 with Node (closes #18)
Build / Image RASPI (push) Successful in 4m20s
Build / Image PC (push) Successful in 3m56s
Build / Image MILKV (push) Successful in 4m2s
Build / v4 tests (32- and 64-bit cells) (push) Successful in 11m5s
Build / Image RASPI (pull_request) Successful in 4m33s
Build / Image PC (pull_request) Successful in 4m24s
Build / Image MILKV (pull_request) Successful in 5m4s
Build / v4 tests (32- and 64-bit cells) (pull_request) Successful in 11m54s
build.yml, as master had it, could not run here: it called
Makefile.starkernel and make T=<board> (the tree has kernel/Makefile
and TARGET=<board>), listed a Pi 4 with no port, published "releases"
under org/f18 on every push, installed Isabelle2024 (the proofs need
Isabelle2025-2) from a mirror that answered 503, and duplicated the
nightlies with its own 02:00 schedule. Now it is the check on every
push to master and StarForth-v4.0.0 and every PR into master: each
board's image (make boot_image TARGET=PC|RASPI|MILKV, xz'd, kept with
its SBOM) and make -C v4 test, both cell widths. It publishes nothing;
the nightlies and release.yml do.

Every job of every workflow now names its container,
gitea/runner-images:ubuntu-24.04-v26.11.03: the runner maps
ubuntu-latest to node:20-bullseye, Debian 11, where every job of PR
#30's runs failed at its first apt-get, and which has no
qemu-efi-riscv64 and a far older QEMU and compilers than the Ubuntu
24.04 all of this was tested on. Node is needed in the image:
actions/checkout and upload-artifact run inside the job's container.
The dated tag keeps a run from changing under an image update.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
2026-11-06 16:22:05 +00:00
rajames caad527e26 ci: add workflow_dispatch trigger for manual test runs
StarshipOS Build / milkv (push) Failing after 2m10s
StarshipOS Build / pc (push) Failing after 2m16s
StarshipOS Build / pi4 (push) Failing after 2m1s
StarshipOS Build / pi5 (push) Failing after 1m57s
StarshipOS Build / qemu (push) Failing after 1m56s
StarshipOS Build / Isabelle/HOL Proofs (push) Failing after 2m49s
StarshipOS Build / Documentation (push) Failing after 1m55s
2026-11-06 14:05:45 +00:00
rajamesandClaude Sonnet 4.6 02946a5318 ci: add nightly snapshot build (02:00 UTC schedule)
StarshipOS Build / milkv (push) Failing after 31s
StarshipOS Build / pc (push) Failing after 28s
StarshipOS Build / pi4 (push) Failing after 36s
StarshipOS Build / pi5 (push) Failing after 37s
StarshipOS Build / qemu (push) Failing after 25s
StarshipOS Build / Isabelle/HOL Proofs (push) Failing after 33s
StarshipOS Build / Documentation (push) Failing after 25s
Scheduled runs use -SNAPSHOT version suffix and publish to
starshipos-snapshots Nexus repo instead of starshipos-releases.
Push-to-master releases continue to use -<sha> suffix.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-11-06 04:28:38 +00:00
rajamesandClaude Sonnet 4.6 a6329fc0c5 ci: add documentation build job
StarshipOS Build / milkv (push) Failing after 35s
StarshipOS Build / pi4 (push) Failing after 36s
StarshipOS Build / pi5 (push) Failing after 38s
StarshipOS Build / qemu (push) Failing after 34s
StarshipOS Build / Documentation (push) Failing after 30s
StarshipOS Build / pc (push) Failing after 30s
StarshipOS Build / Isabelle/HOL Proofs (push) Failing after 35s
Runs api-docs (Doxygen → AsciiDoc), docs-latex (AsciiDoc → LaTeX via
asciidoctor), and math-companion (LaTeX → PDF) in a dedicated job
parallel to builds and Isabelle verification. Installs doxygen, Ruby +
asciidoctor-latex gem, and texlive. Uploads docs as a Gitea artifact
on every run regardless of pass/fail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-11-06 04:20:59 +00:00
rajamesandClaude Sonnet 4.6 08daef9971 ci: add Isabelle/HOL proof verification job
StarshipOS Build / milkv (push) Failing after 30s
StarshipOS Build / pc (push) Failing after 28s
StarshipOS Build / pi4 (push) Failing after 29s
StarshipOS Build / pi5 (push) Failing after 24s
StarshipOS Build / qemu (push) Failing after 32s
StarshipOS Build / Isabelle/HOL Proofs (push) Failing after 25s
Runs StarForth session (52 theories) in parallel with the board build
matrix. Caches the Isabelle2024 installation (~800MB) and the compiled
heaps keyed on proof/**/*.thy + ROOT, so only theory changes trigger a
full rebuild. Uploads the build log as an artifact on every run
(pass or fail) for audit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-11-06 04:20:00 +00:00
rajamesandClaude Sonnet 4.6 b191ace026 ci: board-matrix build pipeline with Nexus Maven publish
StarshipOS Build / pi4 (push) Failing after 27s
StarshipOS Build / pi5 (push) Failing after 40s
StarshipOS Build / milkv (push) Failing after 39s
StarshipOS Build / pc (push) Failing after 35s
StarshipOS Build / qemu (push) Failing after 21s
Builds all boards (qemu, pc, pi4, pi5, milkv) in parallel. Installs
cross-compilers (aarch64-linux-gnu, riscv64-linux-gnu) and clang-18
for the aarch64 loader. Packs ISO (amd64/aarch64) and GPT image (riscv64).

On master push, publishes to Nexus starshipos-releases using Maven
coordinates org.f18:kernel:<version>-<sha>:<board> and
org.f18:starforth:<version>-<sha>:<board>.

CROSS_COMPILE wired into StarForth Makefile via mk/boards.mk so
make T=pi4 picks up aarch64-linux-gnu-gcc automatically.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-11-06 04:17:12 +00:00
rajames db8a3e0fd9 ci: use upload-artifact@v3 (v4 protocol unsupported on this Gitea version) 2026-08-01 12:19:13 -04:00
rajames 2cafd02e29 ci: add Gitea Actions build workflow (amd64/aarch64 ISO, riscv64 disk image) 2026-08-01 12:11:41 -04:00