tests/battle/Dockerfile.install-test — ubuntu:24.04 + deps (git, curl, ca-certificates, build-essential, jq, pandoc, rustup) tests/battle/battle-entry.sh — ENTRYPOINT: runs install.sh with $PROFILE (default minimal), then verify.sh tests/battle/verify.sh — POSIX sh gate: blocks >= 79, skills >= 39, top hooks >= 10, _lib hooks >= 2, test-gate.sh exits 0, settings.json valid JSON tests/battle/README.md — build + run docs SHIP-BLOCKER FOUND (for follow-up fix commit): kei-artifact crate fails to compile on fresh install because install/lib-primitives.sh::copy_rust_primitive copies only Cargo.toml + src/ + tests/. Crate has sibling schemas/ dir with 5 JSON files that src/schemas.rs include_str!s at compile time. Missing → cargo build error, install exits 0 (soft-fail design) but full profile only produces 6/25 binaries instead of 25/25. Real stdout verified: minimal: 80 blocks, 39 skills, 10 hooks, 3 _lib — exit 0 ✓ dev: same counts — exit 0 ✓ BUT 3/8 binaries (kei-artifact fail) full: same counts — exit 0 ✓ BUT 6/25 binaries Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| battle-entry.sh | ||
| Dockerfile.install-test | ||
| README.md | ||
| verify.sh | ||
tests/battle — Clean-Ubuntu Install Test
Validates install.sh on a fresh ubuntu:24.04 container. CI only runs
--no-execute dry-runs; this battle-test actually executes the installer.
Run
From repo root:
docker build -t keisei-battle:latest -f tests/battle/Dockerfile.install-test .
docker run --rm keisei-battle:latest # minimal
docker run --rm -e PROFILE=core keisei-battle:latest
docker run --rm -e PROFILE=dev keisei-battle:latest
docker run --rm -e PROFILE=full keisei-battle:latest
Container exits 0 = green. Any other code = investigate stdout.
What it asserts (verify.sh)
~/.claude/agents/_blocks≥ 79~/.claude/skills≥ 39~/.claude/hooks/*.sh≥ 10 top-level~/.claude/hooks/_lib/*.sh≥ 2 (gate.sh + test-gate.sh, v0.17)hooks/_lib/test-gate.shself-test passes (11/11)settings.json(if created) parses as valid JSON
Known quirks (2026-04-22)
kei-artifactcrate fails ondev/full:copy_rust_primitive(install/lib-primitives.sh) copiessrc/+tests/only — misses siblingschemas/, soinclude_str!("../schemas/*.json")breaks. Install still exits 0 (build is soft-fail); primitive binary count drops (6/25on full). Fix: copy every sibling dir the crate ships.- Ubuntu 24.04 rustc is 1.75 — too old for
edition = "2024". Dockerfile installs rustup stable;apt install rustcis NOT enough. - Apple Silicon hosts: image builds linux/arm64 natively; binaries produced inside won't run on x86_64 hosts.