Skip to content

Overnight swarm runbook — 2026-07-14 (10h, v0.1 RC punch list)

Mission (Chris, 2026-07-14 22:30): 10-hour looping overnight run to burn down the v0.1 RC punch list (docs/RELEASE-0.1.md) and surface anything new. Every loop iteration reads THIS file first, then the punch list, then acts.

  1. git pull --rebase before starting AND before every commit. On .git/index.lock — wait and retry, never delete, never leave files staged while waiting.
  2. Work off docs/RELEASE-0.1.md only. Feature freeze: bug fixes, QA tooling, docs, release tasks. Mark items ✅ DONE (commit X) in place. Anything new found goes ON the list first.
  3. Every code change runs the bh-dev-chunk ritual: TDD → full suite → scripts/check-test-count.sh → boot smoke → determinism check (read the literal pinned assertion in tests/test_determinism_survival.gd; re-pin via bh-determinism-repin ONLY when an rng-draw-order change genuinely explains it) → commit → push.
  4. UI-affecting change → scripts/ui-sweep.sh must pass (run it FOREGROUND — a backgrounded windowed godot gets App-Napped and crawls/dies). Re-bless only after eyeballing the diff.
  5. Sim-behaviour change → one scripts/soak.sh run must come back clean (no invariant failures).
  6. Concurrency: multiple agents in one iteration follow skill bh-sdd-concurrent (file-overlap check vs merge-base; watch shared singletons — BUILD number, determinism baseline, RELEASE-0.1.md itself). Serialize commits.
  • NO deploys (bh-deploy), NO App Store / TestFlight actions (bh-appstore-release), NO BUILD-number bumps — deploys are serialized and Chris-supervised; devices are asleep.
  • NO touching platform/tvos/ symlinks (never cp/rsync gameplay into it).
  • NO pulling §5 post-0.1 items into the RC and no new features.
  • NO re-pinning determinism to make a red test green without a written draw-order explanation in the commit message.
  • NO MetaStore.save_state paths in harnesses (the sweep/soak already guarantee this — keep it).
  • Do not action §3 (human playtests) — not automatable; leave for Chris + Toby.

A. §2 RC-blockers (agent-doable):

  1. Wyrm shared-HP pool: multiplied damage when one AoE hits several segments in one tick — TDD the fix (damage once per pool per source per tick, or per design decision in the code comments), soak + determinism.
  2. CLAUDE.md V01_LOCK_NETWORKED_MP ghost-flag doc fix (flag lives only in the MP worktree).
  3. Soak-telemetry balance evidence pack: run scripts/soak.sh sweeps across seeds/durations through the night (staggered, low-parallelism); aggregate per-weapon damage/kill shares, elite TTK, XP curve pacing; write findings + concrete const-change PROPOSALS (not applied) to docs/balance-evidence-2026-07-15.md for Chris’s §2 balance pass.
  4. Obsidian cruiser sprite: produce 2-3 real bake CANDIDATES via tools/ship_preview (windowed, foreground) into tools/ship_preview/out/ and note paths on the punch list — final pick + shop wiring is Chris’s.

B. §4 fix-if-cheap sweep (each = one small commit through the full ritual): input-handled marking in PauseMenu/ShipConfigPanel; dead _update_joy_debug_label(); co-op level-up chaining test; test_drone_rng_is_isolated made real; CLAUDE.md 4-RNG-streams fix; SOUND_MAP.md 7 new weapon rows; eye_laser.wav finish-or-remove; Boss2+Warden hand-edit into bible.json (NO re-export); Railgun "lance" kind rename; per-frame alloc trims (verify with before/after numbers); orbit-thresholds readability; docs-site/**/*.import gitignore; bible evolutions verify; Rusher/Zapper + frigate-niche + HUD-720p → analysis/proposal only.

C. §1 release-gate prep (report, don’t flip): flag audit report; a full green suite+count+soak+ui-sweep evidence line appended to the punch list. ADAPTIVE_QUALITY re-enable needs on-device verify — prep the change as a proposal, do not merge the flip overnight.

D. “What else can we come up with”: if A+B are exhausted, run overnight-review cycles (the docs/overnight-review-2026-07-08.md pattern: read a subsystem deeply, log findings). New findings go on RELEASE-0.1.md §2/§4/§5 per the standing rule; write the cycle log to docs/overnight-review-2026-07-15.md.

Each loop tick: pull → read punch list → pick the highest un-claimed item (claim it by committing a one-line ⏳ claimed (overnight swarm) edit on the list) → do it end-to-end through the ritual → tick it ✅ DONE (commit) → push. Small items batched 2-3 per tick are fine; never leave an item half-done at tick end — finish or un-claim.

Last iteration (or ~08:30): write docs/overnight-swarm-report-2026-07-15.md — items completed (commit SHAs), proposals awaiting Chris (balance pack, cruiser candidates, flag audit), anything claimed-but-unfinished (should be none), new findings added to the punch list, and the exact suite/soak/ui-sweep status of main at handoff.