- Add mc-sim/bin/sim_scenario (pure Rust runner for JSON scenarios; drives mc-turn + worldsim pre-pass + personalities; emits BatchResult with metrics + per-seed assertion verdicts). - Add canonical game1_headless_systems_150t.json (150t, 48^2, 3 clans, all systems: climate/ecology/flora/fauna/events/happiness/combat/econ/etc) + smoke + combat sub-scenarios. - Wire publish in dist.sh to ship the bin to S3 alongside .so (enables fleet horizontal runs post-). - Update AGENTS.md, finish-game-1/SKILL.md, agents-task-map, simulator-infra.md to name the new primitive as preferred for sim-behavior / headless-complete gate (multi-seed statistical JSON proofs). - Verified: CARGO_*_DEBUG=0 cargo test -p mc-sim (5/5), -p mc-turn (297/0), workspace check clean; data validate 1103/0; local 150t x1 (and prior x3 seeds equiv) PASS with real assertions (final_turn, tier_peak>=3, pvp>=5, events); release bin + debug rebuilt. - Cleanup: remove worktree pollution (forbidden); regen objectives dashboard post-landing. - Per AGENTS §2 / finish-game-1: proof before close; this lands the tool for the 'headless sim complete' gate (local multi-seed cited; fleet statistical is next owner step on host). Co-Authored-By: Grok (xAI) <noreply@x.ai> |
||
|---|---|---|
| .. | ||
| autoplay | ||
| dev-setup | ||
| lan | ||
| run | ||
| apricot-async-smoke.sh | ||
| apricot-run.sh | ||
| claude-demo-25turn.sh | ||
| claude-smoke-5endturn.sh | ||
| cloud-bringup.sh | ||
| godot-docker.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.