fix(@projects/@magic-civilization): 🐛 resolve handoff and objective deferral delays

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-05-04 00:30:54 -04:00
parent e0741ec11c
commit 5ed3fedcff
4 changed files with 35 additions and 15 deletions

View file

@ -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.

View file

@ -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.

View file

@ -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 (~64256 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-<stamp>/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/<category>/` 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.

View file

@ -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 | — | — |