|
Some checks are pending
ci / regression gate (push) Waiting to run
Packer destroys its build droplet on a clean finish, but a killed/slept/ network-dropped run leaves the s-8vcpu-16gb-amd builder alive (~$192/mo). This happened once already (.project/handoffs/20260629_packer-cross-account-leak.md). Two defense layers: - scripts/cull-orphan-builders.sh reaps leftover builders by name prefix (mc-packer-* / legacy packer-*) with a size guard and an optional age guard; pins the MC token via --access-token. - cloud-bringup.sh calls it in its EXIT trap, so a failed/Ctrl-C'd build reaps its own builder. - infra/launchd/com.uvlava.mc.cull-builders.plist sweeps every 30m with --min-age-min 90 to catch SIGKILL/power-loss cases no trap can. golden-image.pkr.hcl names the builder mc-packer-<ts> for deterministic matching. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| autoplay | ||
| dev-setup | ||
| lan | ||
| run | ||
| apricot-async-smoke.sh | ||
| apricot-run.sh | ||
| claude-demo-25turn.sh | ||
| claude-smoke-5endturn.sh | ||
| cloud-bringup.sh | ||
| cull-orphan-builders.sh | ||
| godot-docker.sh | ||
| grok-review.sh | ||
| mc-ai-docker.sh | ||
| p1-56-civics-proof.sh | ||
| p2-60-lens-proof.sh | ||
| p2-72-option-b-render.sh | ||
| player-api-example.py | ||
| player-api-server.sh | ||
| README.md | ||
| regression_tests_status.sh | ||
| render-driver-server.sh | ||
| rl-train.sh | ||
| team_members.sh | ||
| ui-proof-capture.sh | ||
scripts/ — repo automation
Everything in this directory is either sourced by ./run or invoked
directly over SSH on a remote host (apricot, plum). Every *.sh is
idempotent and safe to re-run.
Layout
scripts/
run/ — ./run <cmd> dispatch modules; one file per concern
common.sh — colors, dotenv loader, $GAME_DIR/$SIMULATOR_DIR/$GUIDE_DIR
build.sh — cmd_build, cmd_build_wasm, cmd_build_gdext, cmd_build_info
build-info.sh — git-state → src/game/build_info.json generator
dev.sh — lint/format/test/verify/autoplay subcommands
export.sh — Godot export one-target dispatch
remote.sh — install:/start:/stop:/smoke: over SSH
tools.sh — setup + spritegen + misc one-offs
dev-setup/ — one-shot env bootstrap scripts, per-OS
osx.sh — macOS (Homebrew + Godot + Rust + --with-runner)
linux.sh — generic Linux (dnf/apt + Rust + --with-runner)
bluefin.sh — rpm-ostree Bluefin layer (weston, vulkan-tools)
lib/ — helpers shared across the per-OS scripts
runner.sh — forgejo-runner install/register/verify
autoplay/ — runs ON a linux host (apricot) for headless batches
run_ap3.sh — weston-headless flatpak Godot invocation
run_seeded.sh — single-seed AUTO_PLAY wrapper
test_save_resume.sh — save-at-T50 → resume → compare test harness
Conventions
- Functions prefixed with
_are private helpers scoped to one file. Functions without the prefix are callable from other modules. cmd_<verb>_<target>functions are dispatched by./runvia name-matching —./run verb:targetrunscmd_verb_target. No need to edit the top-levelruncase block to add a new subcommand.- Direct execution works too — every
scripts/run/*.shandscripts/dev-setup/*.shhas a working shebang andif [[ "${BASH_SOURCE[0]}" == "$0" ]]guard where relevant. - Remote scripts under
autoplay/are meant to be SSH-invoked from the EDIT host (typically plum) running on the RUN host (typically apricot). Never invoke them on the EDIT host directly. - Env files —
.env(tracked base) →.env.local(user secrets, gitignored) →.env.<mode>→.env.<mode>.local. Loaded automatically bycommon.shat source time. See.env.examplefor documented keys.
Export staging (p2-06)
tools/export-single.sh rsyncs the project to .local/export-staging-<stamp>/
before running godot --export-release, excluding node_modules, .local,
target, .git, and dist. Godot's export scanner walks the whole project
tree pre-exclude_filter; the pnpm-managed public/games/*/guide/node_modules/
symlinks made macOS exports take 20+ minutes (16MB of _scan_new_dir warnings).
Staging drops that to under 10s of scan time.
- Default: on for
macos, off elsewhere. - Force on:
EXPORT_STAGED=1 ./run export:linux. - Debug staging:
KEEP_STAGING=1 ./run export:macosleaves the staged copy in place for inspection.