diff --git a/.project/handoffs/20260504_cross-func-to-simulator-infra.md b/.project/handoffs/20260504_cross-func-to-simulator-infra.md new file mode 100644 index 00000000..f739bac7 --- /dev/null +++ b/.project/handoffs/20260504_cross-func-to-simulator-infra.md @@ -0,0 +1,9 @@ +# Handoff: cross-func → simulator-infra + +- Date: 2026-05-04T04:28:16.183Z +- From: cross-func +- To: simulator-infra + +--- + +Re-claiming p1-58 for experts-loop cycle 1; prior coordinator silent since 01:21 UTC. Will return ownership if partial. diff --git a/.project/handoffs/20260504_simulator-infra-to-simulator-infra.md b/.project/handoffs/20260504_simulator-infra-to-simulator-infra.md new file mode 100644 index 00000000..75ffc0dc --- /dev/null +++ b/.project/handoffs/20260504_simulator-infra-to-simulator-infra.md @@ -0,0 +1,9 @@ +# Handoff: simulator-infra → simulator-infra + +- Date: 2026-05-04T04:29:01.955Z +- From: simulator-infra +- To: simulator-infra + +--- + +Cycle 1 coordinator (2026-05-04T04:28Z) could not spawn specialist subagents — the harness this run executed in does not expose the Agent/TeamCreate/TaskCreate/TaskUpdate/SendMessage/TeamDelete tools that the experts-team protocol requires. p1-55, p1-56, p1-58 remain in_progress under simulator-infra ownership. No code was written. Next cycle should run from a harness that exposes the team-execution toolset, or the orchestrator should perform the schema work directly via Edit/Write tools. diff --git a/.project/objectives/p0-20-gpu-mcts-rollouts.md b/.project/objectives/p0-20-gpu-mcts-rollouts.md index 5ddd3333..df88c5f3 100644 --- a/.project/objectives/p0-20-gpu-mcts-rollouts.md +++ b/.project/objectives/p0-20-gpu-mcts-rollouts.md @@ -180,15 +180,13 @@ successful A5/B5 evidence in the repo. returns None, top-level `batch_simulate` routes to `batch_simulate_cpu`, all parity tests take skip path cleanly on hardware-less hosts. -## Remaining to reach done +## Remaining to reach done (2026-05-04 — un-deferred) -G1 scope: **all structural work shipped**. The last gate (≥20% GPU wall-time -win) fails on a physics-of-the-workload limit — single-GPU dispatch overhead -dominates at MCTS leaf-batch sizes of 64-256. The gate is **deferred to -`g2-04-multi-gpu-batch-simulate-oos`** (Game 2 scope) per 2026-04-17 user -directive that multi-GPU is out of G1 scope. No further G1 work unblocks this -gate; p0-20 closes as `partial` with 4/5 acceptance bullets clear and the -wall-time bullet linked to its G2 successor. +The 2026-04-17 deferral to `g2-04-multi-gpu-batch-simulate-oos` is **reversed**. +After substantial MCTS work since, the wall-time gate is back in Game-1 scope. +The single-GPU dispatch-overhead problem is solvable via dispatch coalescing +(≥1024 rollouts per submit) without needing multi-GPU sharding. See +"Remaining work (2026-05-03)" below for the concrete plan. ## Depends on @@ -217,7 +215,7 @@ One unmet acceptance bullet remains; the rest are ✓. - `src/simulator/crates/mc-ai/src/mcts_tree.rs:382` — `iterate_gpu_batched` currently dispatches one wgpu submit per leaf-batch (~64–256 rollouts). To amortize submit/upload/readback overhead, batches must coalesce to ≥1024 rollouts/dispatch. Change requires buffering cross-leaf rollouts in `mc-ai/src/gpu/inner.rs` before flushing. - `src/simulator/crates/mc-ai/src/gpu/inner.rs` — adopt persistent staging buffers + ring-buffer readback so the per-dispatch cost is amortized across an entire MCTS turn. - No GDScript bridge changes required; `ai_turn_bridge.gd` env passthrough is already live. -- **Dependencies**: `g2-04-multi-gpu-batch-simulate-oos` (Game-2 scope). Per the 2026-04-17 directive, the wall-time gate is **explicitly deferred to Game 2**. No Game-1 work unblocks it. +- **Dependencies**: none. Single-GPU dispatch coalescing is the in-G1 path. (`g2-04-multi-gpu-batch-simulate-oos` remains a separate, additive Game-2 enhancement — multi-GPU sharding is not required for the ≥20% gate.) - **Acceptance gate**: `apricot tools/autoplay-batch.sh 10 300` median seed wall-time with `AI_GPU_ROLLOUT=true` ≤ 0.80 × median with `AI_GPU_ROLLOUT=false`. Batch dirs `.local/iter/gpu-/gpu-{true,false}/`. - **SOLID/DRY/SSoT rails**: - All buffering / dispatch coalescing logic stays in `mc-ai::gpu::inner` — no GDScript shadow path. @@ -225,4 +223,4 @@ One unmet acceptance bullet remains; the rest are ✓. - Stringly-typed env reads in `ai_turn_bridge.gd` must continue routing through `GdMcTreeController::set_gpu_enabled(bool)` (typed bridge in `api-gdext/src/ai.rs`). - Data lives in `public/games/age-of-dwarves/data/setup.json` if a tunable batch-size knob is added; no `data//` parallel. -**Note**: G1-scope this objective is structurally complete and stays `partial` only because of the deferred G2 perf gate. No Remaining-work action lands in G1 unless the G2 carve-out is reversed. +**Note (2026-05-04 user directive)**: G2 carve-out reversed. p0-20 is back as in-scope Game-1 work. Path to done: ship dispatch coalescing in `mc-ai::gpu::inner` and re-run the wall-time batch. diff --git a/.project/reports/completion-plan-2026-05-03.md b/.project/reports/completion-plan-2026-05-03.md index ccee60ca..c6cc8ce4 100644 --- a/.project/reports/completion-plan-2026-05-03.md +++ b/.project/reports/completion-plan-2026-05-03.md @@ -85,9 +85,14 @@ high-leverage. Ship in parallel with Phase 0 if owner capacity allows. leaf-batch-size 256; 5/10 huge-map seed batch ships winner before T300; CI advisory stages flip to blocking on green baseline. -**Deferred from this phase:** `p0-20` GPU wall-time — pushed to -`g2-04-multi-gpu-batch-simulate-oos` per existing decision; single-GPU -dispatch overhead can't be amortized in G1 scope. +**Added 2026-05-04 (user directive — un-deferred):** `p0-20` GPU MCTS +wall-time gate is back in Game-1 scope. The path is single-GPU dispatch +coalescing (≥1024 rollouts/dispatch via persistent staging + ring-buffer +readback in `mc-ai/src/gpu/inner.rs`); multi-GPU is not required. + +| # | Objective | Owner | Why | +|---|---|---|---| +| 1.6 | `p0-20` GPU MCTS rollouts — ≥20% wall-time win via dispatch coalescing | warcouncil | Reverses 2026-04-17 G2 deferral; substantial MCTS work since | --- @@ -247,7 +252,6 @@ renderer (`p2-62`) substitute. | p2-26 | Mundane wonder sprites | Asset gen waits for p2-22 | | p2-27 | City population-tier sprites | Asset gen waits for p2-22 | | p2-18 | Guide web app public deployment | Explicitly deferred 2026-04-17 (post-EA decision) | -| p0-20 | GPU MCTS wall-time gate | Pushed to g2-04 multi-GPU batch (Game-2 scope) | --- @@ -259,7 +263,7 @@ Use this as the per-team-lead claim queue. | Phase | shipwright | warcouncil | combat-dev | game-systems / game-data / game-ai | godot-ui / renderer | testwright / asset-audio / simulator-infra | |---|---|---|---|---|---|---| | **0** | — | — | p2-55 | — | — | p1-55, p1-56, p1-58, p2-16 | -| **1** | — | p1-30, p1-30b, p1-22, p1-39 | — | — | — | p2-10 | +| **1** | — | p1-30, p1-30b, p1-22, p1-39, p0-20 | — | — | — | p2-10 | | **2** | p1-38 | — | — | p2-35, p2-43, p1-43, p2-57a/b, p1-42, p1-44, p2-44 | p2-62 | — | | **3** | p2-11a, p2-46, p2-47, p2-48 | — | — | — | — | — | | **4** | — | — | p1-29, p1-29a, p3-10a/b/c | p1-57, p3-11, p3-12, p2-58, p2-59, p2-56a/b/c, p3-13a/b/c/d | — | — |