docs(@projects/@magic-civilization): 📝 update movement mode ux task reference

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-04-25 16:00:51 -07:00
parent cd45e8ffe7
commit e7d7ee27b5
8 changed files with 84 additions and 157 deletions

View file

@ -12,7 +12,7 @@ p0-01, p0-02, p0-20, p0-22, p1-05, p0-38, p0-40, p2-05, p2-06, p2-09, p2-10, p2-
|-------|-----------|--------|
| 1 | p0-12 HashMap→BTreeMap | Code audit + fix |
| 2 | p0-33 world-map input wiring | Proof screenshot (apricot weston) |
| 2 | p0-35 movement mode UX | Proof screenshot |
| 2 | p0-44 movement mode UX | Proof screenshot |
| 2 | p1-18 village discovery feedback | Proof screenshot |
| 2 | p1-19 tutorial opt-in | Proof screenshot |
| 3 | p1-20 unit action capability registry | Rust + GDScript full impl |

View file

@ -75,7 +75,6 @@
| [p0-32](p0-32-weather-climate-effects-restore.md) | ✅ done | P0 | Restore WeatherScript + ClimateEffectsScript — per-turn weather and climate-effects | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p0-33](p0-33-world-map-input-and-panel-wiring.md) | ✅ done | P0 | World-map input wiring — unit selection panel, city click, ESC/F10 menu, panel close | [wireguard](../team-leads/wireguard.md) | 🟢 |
| [p0-34](p0-34-freepeople-tribe-founding.md) | ✅ done | P0 | Freepeople tribe-founding cinematic — turn -1 / 0 / 1 start sequence and Dwarf Tribe founder unit | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p0-35](p0-35-movement-mode-ux.md) | ✅ done | P0 | Movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing | [wireguard](../team-leads/wireguard.md) | 🟢 |
| [p0-35](p0-35-ecology-telemetry-instrumentation.md) | ✅ done | P1 | Ecology telemetry instrumentation — flora canopy / undergrowth fields in turn_stats.jsonl | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p0-36](p0-36-weather-event-telemetry.md) | ✅ done | P1 | Weather / climate-effects event telemetry — events.jsonl + turn_stats aggregates | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p0-37](p0-37-personality-emergent-tactical-thresholds.md) | ✅ done | P0 | Personality-emergent tactical thresholds (lift 7 hardcoded constants into axis-derived functions) | [warcouncil](../team-leads/warcouncil.md) | 🟢 |
@ -85,6 +84,7 @@
| [p0-41](p0-41.md) | ✅ done | P0 | Building rally points — produced units auto-deploy to a designated hex | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p0-41a](p0-41a-rally-smoke.md) | 🟡 partial | P0 | Rally-point smoke test — unit moves toward rally hex on next turn | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p0-42](p0-42.md) | 🟡 partial | P0 | Formation aggregation — adjacent units link into a shaped formation with terrain reflow | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p0-44](p0-44-movement-mode-ux.md) | ✅ done | P0 | Movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing | [wireguard](../team-leads/wireguard.md) | 🟢 |
| [p1-01](p1-01-diplomacy-lite.md) | ✅ done | P1 | Diplomacy-lite — peace/war toggle plus one trade action | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p1-02](p1-02-strategic-resource-yields.md) | ✅ done | P1 | Strategic resource yields feed into production bonuses | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p1-03](p1-03-tutorial-overlay.md) | ✅ done | P1 | First-run tutorial / onboarding overlay | [shipwright](../team-leads/shipwright.md) | 🟢 |
@ -105,7 +105,7 @@
| [p1-19](p1-19-tutorial-opt-in.md) | ✅ done | P1 | Tutorial opt-in — HUD button, disappears after turn 5, starts from Step 1 | [wireguard](../team-leads/wireguard.md) | 🟢 |
| [p1-20](p1-20-unit-action-capability-registry.md) | ✅ done | P1 | Unit action capability registry — one source of truth for "what can this unit do right now?" | [wireguard](../team-leads/wireguard.md) | 🟢 |
| [p1-21](p1-21-unit-patrol-orders.md) | ✅ done | P1 | Unit patrol orders — standing order to loop between waypoint tiles | [wireguard](../team-leads/wireguard.md) | 🟢 |
| [p1-22a](p1-22a-mcts-wall-clock-budget.md) | ❌ missing | P1 | MCTS per-decision wall-clock budget — bound per-turn cost on huge maps | [warcouncil](../team-leads/warcouncil.md) | 🟢 |
| [p1-22](p1-22-mcts-wall-clock-budget.md) | ❌ missing | P1 | MCTS per-decision wall-clock budget — bound per-turn cost on huge maps | [warcouncil](../team-leads/warcouncil.md) | 🟢 |
| [p2-01](p2-01-minimap-improvements.md) | ✅ done | P2 | Minimap — fog reflection and unit markers | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p2-02](p2-02-hud-tooltips.md) | ✅ done | P2 | Tooltips on all HUD elements | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p2-03](p2-03-hotkey-cheat-sheet.md) | ✅ done | P2 | Hotkey cheat sheet (F1 / ?) | [shipwright](../team-leads/shipwright.md) | 🟢 |

View file

@ -37,12 +37,12 @@
| [p0-32](p0-32-weather-climate-effects-restore.md) | Restore WeatherScript + ClimateEffectsScript — per-turn weather and climate-effects | — | [shipwright](../team-leads/shipwright.md) | 2026-04-18 |
| [p0-33](p0-33-world-map-input-and-panel-wiring.md) | World-map input wiring — unit selection panel, city click, ESC/F10 menu, panel close | — | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| [p0-34](p0-34-freepeople-tribe-founding.md) | Freepeople tribe-founding cinematic — turn -1 / 0 / 1 start sequence and Dwarf Tribe founder unit | — | [shipwright](../team-leads/shipwright.md) | 2026-04-18 |
| [p0-35](p0-35-movement-mode-ux.md) | Movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing | — | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| [p0-37](p0-37-personality-emergent-tactical-thresholds.md) | Personality-emergent tactical thresholds (lift 7 hardcoded constants into axis-derived functions) | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-18 |
| [p0-38](p0-38-mcts-personality-priors.md) | Inject personality-utility scores as MCTS UCB1 priors | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-24 |
| [p0-39](p0-39-ai-tier-progression-unit-selection.md) | AI tier-progression unit selection — production.rs picks tier-2+ units once tech unlocks | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-18 |
| [p0-40](p0-40-iron-ore-resource-density.md) | Iron-ore strategic resource density — unblock tier 3-6 unit chain | — | [shipwright](../team-leads/shipwright.md) | 2026-04-24 |
| [p0-41](p0-41.md) | Building rally points — produced units auto-deploy to a designated hex | — | [shipwright](../team-leads/shipwright.md) | 2026-04-24 |
| [p0-44](p0-44-movement-mode-ux.md) | Movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing | — | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
## P1 — Ship-readiness

View file

@ -1,10 +1,10 @@
# Objectives — Dashboard
> **Generated by `tools/objectives-report.py` — do not hand-edit.** Source of truth is per-file YAML frontmatter in this directory.
> **Generated by `@lilith/mcp-objectives` — do not hand-edit.** Source of truth is per-file YAML frontmatter in this directory. Completed: [DASHBOARD_COMPLETED.md](DASHBOARD_COMPLETED.md) · By category: [DASHBOARD_CATEGORIES.md](DASHBOARD_CATEGORIES.md).
## Legend
✅ done · 🔵 in-progress · 🟡 partial · 🔴 stub · ❌ missing · ⚫ out-of-scope (Game 2 / Game 3)
🔵 in-progress · 🟡 partial · 🔴 stub · ❌ missing · ⚫ out-of-scope · ✅ done · ♻️ superseded
## Totals
@ -12,13 +12,13 @@
**By Priority**
| Priority | ✅ | 🔵 | 🟡 | 🔴 | ❌ | ⚫ | Total |
| Priority | 🔵 | 🟡 | 🔴 | ❌ | ⚫ | ✅ | Total |
|---|---|---|---|---|---|---|---|
| **P0** | 37 | 0 | 5 | 0 | 0 | 0 | 42 |
| **P1** | 20 | 0 | 3 | 0 | 9 | 1 | 33 |
| **P2** | 16 | 0 | 4 | 0 | 0 | 0 | 20 |
| **P3 (oos)** | 0 | 0 | 0 | 0 | 0 | 17 | 17 |
| **total** | **73** | **0** | **12** | **0** | **9** | **18** | **112** |
| **P0** | 0 | 5 | 0 | 0 | 0 | 37 | 42 |
| **P1** | 0 | 3 | 0 | 9 | 1 | 20 | 33 |
| **P2** | 0 | 4 | 0 | 0 | 0 | 16 | 20 |
| **P3 (oos)** | 0 | 0 | 0 | 0 | 17 | 0 | 17 |
| **total** | **0** | **12** | **0** | **9** | **18** | **73** | **112** |
</td><td valign='top' style='padding-left:2em'>
@ -34,145 +34,72 @@
</td></tr></table>
## P0 — Blockers for "completely playable"
## P0 — Blockers
| ID | Status | Title | Owner | Updated |
|---|---|---|---|---|
| [p0-01](p0-01-mcts-wiring.md) | 🟡 partial | Wire MCTS into gameplay AI | [warcouncil](../team-leads/warcouncil.md) | 2026-04-24 |
| [p0-02](p0-02-clan-personalities.md) | 🟡 partial | Five AI clan personalities drive distinct playstyles | [warcouncil](../team-leads/warcouncil.md) | 2026-04-19 |
| [p0-03](p0-03-pvp-in-turn.md) | ✅ done | PvP combat resolved inside the authoritative turn processor | — | 2026-04-17 |
| [p0-04](p0-04-wonder-tracking.md) | ✅ done | World wonder tracking in PlayerState and score victory | — | 2026-04-17 |
| [p0-05](p0-05-culture-and-borders.md) | ✅ done | Culture generation and border expansion | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-06](p0-06-economy-integration.md) | ✅ done | Fold gold income / upkeep / improvement yields into turn loop | — | 2026-04-17 |
| [p0-07](p0-07-tech-research-costs.md) | ✅ done | Tech research costs and science pool pacing | — | 2026-04-17 |
| [p0-08](p0-08-domination-victory.md) | ✅ done | Domination victory path in mc-turn::victory | [warcouncil](../team-leads/warcouncil.md) | 2026-04-18 |
| [p0-09](p0-09-ui-completeness.md) | ✅ done | City-screen UI completeness (citizen assign, queue controls, promotion picker) | — | 2026-04-16 |
| [p0-10](p0-10-completion-stability.md) | ✅ done | Game-completion stability — ≥7/10 seeds declare a winner | — | 2026-04-17 |
| [p0-11](p0-11-mystery-item-authoring.md) | ✅ done | Author the four T8T10 mystery item drops | — | 2026-04-16 |
| [p0-12](p0-12-save-load-autosave.md) | ✅ done | Save / load + autosave on quit | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-13](p0-13-fog-of-war-exploration.md) | ✅ done | Fog of war and exploration / scout loop | — | 2026-04-17 |
| [p0-14](p0-14-map-generation-balanced-starts.md) | ✅ done | Map generation, resource placement, and balanced fair starts | [shipwright](../team-leads/shipwright.md) | 2026-04-16 |
| [p0-15](p0-15-happiness-golden-age.md) | ✅ done | Happiness pool and Golden Age mechanics end-to-end | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-16](p0-16-worker-improvement-loop.md) | ✅ done | Worker / tile-improvement build loop | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-17](p0-17-wild-creature-lair-loop.md) | ✅ done | Wild creature and lair clearing loop | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-18](p0-18-strategic-resource-gate.md) | ✅ done | Strategic resources gate unit production (empire ledger) | — | 2026-04-17 |
| [p0-19](p0-19-biome-economy-integration.md) | ✅ done | Biome-driven collectibles → tile yields → happiness end-to-end | — | 2026-04-16 |
| [p0-21](p0-21-audio-system-capability.md) | ✅ done | Audio system capability — manifest + autoload + EventBus wiring | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-22](p0-22-ultimate-ai-stress-test.md) | ✅ done | "Ultimate AI stress test — 5 clans, huge map, deep lookahead" | [warcouncil](../team-leads/warcouncil.md) | 2026-04-25 |
| [p0-23](p0-23-sprite-rendering-capability.md) | ✅ done | Sprite rendering capability — replace procedural draw_* with texture rendering | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-24](p0-24-difficulty-calibrated-ai-progression.md) | ✅ done | Difficulty-calibrated AI progression — Easy / Normal / Hard tier-peak distributions | [warcouncil](../team-leads/warcouncil.md) | 2026-04-19 |
| [p0-25](p0-25-game-quality-metrics-instrumentation.md) | ✅ done | Game-quality metrics instrumentation — tier_peak, peak_unit_tier, wonder_count | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-26](p0-26-ai-tactical-rust-port.md) | ✅ done | Port tactical AI from GDScript to mc-ai (Rail-1 compliance) | [warcouncil](../team-leads/warcouncil.md) | 2026-04-18 |
| [p0-27](p0-27-gd-culture-bridge.md) | ✅ done | GdCulture bridge — live game delegates culture to mc-culture | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-28](p0-28-gd-economy-bridge.md) | ✅ done | GdEconomy bridge — live game delegates gold/upkeep to mc-economy | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-29](p0-29-gd-tech-bridge.md) | ✅ done | GdTechWeb bridge — live game delegates research to mc-tech | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p0-30](p0-30-ecology-double-tick-fix.md) | ✅ done | Remove duplicate GDScript ecology tick (single Rust source) | [shipwright](../team-leads/shipwright.md) | 2026-04-18 |
| [p0-31](p0-31-climate-rust-path-restore.md) | ✅ done | Restore Rust ecology path — fix ClimateScript bugs + re-enable per-turn tick | [shipwright](../team-leads/shipwright.md) | 2026-04-18 |
| [p0-32](p0-32-weather-climate-effects-restore.md) | ✅ done | Restore WeatherScript + ClimateEffectsScript — per-turn weather and climate-effects | [shipwright](../team-leads/shipwright.md) | 2026-04-18 |
| [p0-33](p0-33-world-map-input-and-panel-wiring.md) | ✅ done | World-map input wiring — unit selection panel, city click, ESC/F10 menu, panel close | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| [p0-34](p0-34-freepeople-tribe-founding.md) | ✅ done | Freepeople tribe-founding cinematic — turn -1 / 0 / 1 start sequence and Dwarf Tribe founder unit | [shipwright](../team-leads/shipwright.md) | 2026-04-18 |
| [p0-37](p0-37-personality-emergent-tactical-thresholds.md) | ✅ done | Personality-emergent tactical thresholds (lift 7 hardcoded constants into axis-derived functions) | [warcouncil](../team-leads/warcouncil.md) | 2026-04-18 |
| [p0-38](p0-38-mcts-personality-priors.md) | ✅ done | Inject personality-utility scores as MCTS UCB1 priors | [warcouncil](../team-leads/warcouncil.md) | 2026-04-24 |
| [p0-39](p0-39-ai-tier-progression-unit-selection.md) | ✅ done | AI tier-progression unit selection — production.rs picks tier-2+ units once tech unlocks | [warcouncil](../team-leads/warcouncil.md) | 2026-04-18 |
| [p0-40](p0-40-iron-ore-resource-density.md) | ✅ done | Iron-ore strategic resource density — unblock tier 3-6 unit chain | [shipwright](../team-leads/shipwright.md) | 2026-04-24 |
| [p0-41](p0-41.md) | ✅ done | Building rally points — produced units auto-deploy to a designated hex | [shipwright](../team-leads/shipwright.md) | 2026-04-24 |
| [p0-41a](p0-41a-rally-smoke.md) | 🟡 partial | Rally-point smoke test — unit moves toward rally hex on next turn | [shipwright](../team-leads/shipwright.md) | 2026-04-25 |
| [p0-42](p0-42.md) | 🟡 partial | Formation aggregation — adjacent units link into a shaped formation with terrain reflow | [shipwright](../team-leads/shipwright.md) | 2026-04-24 |
| [p0-43](p0-43.md) | 🟡 partial | "Formation AI — MCTS plans at formation level, not per-unit" | [warcouncil](../team-leads/warcouncil.md) | 2026-04-24 |
| [p0-44](p0-44-movement-mode-ux.md) | ✅ done | Movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| ID | Status | Title | Tags | Owner | Updated | Blocked |
|---|---|---|---|---|---|---|
| [p0-01](p0-01-mcts-wiring.md) | 🟡 partial | Wire MCTS into gameplay AI | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-24 | 🟢 unblocked |
| [p0-02](p0-02-clan-personalities.md) | 🟡 partial | Five AI clan personalities drive distinct playstyles | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-19 | 🟢 unblocked |
| [p0-41a](p0-41a-rally-smoke.md) | 🟡 partial | Rally-point smoke test — unit moves toward rally hex on next turn | — | [shipwright](../team-leads/shipwright.md) | 2026-04-25 | 🟢 unblocked |
| [p0-42](p0-42.md) | 🟡 partial | Formation aggregation — adjacent units link into a shaped formation with terrain reflow | — | [shipwright](../team-leads/shipwright.md) | 2026-04-24 | 🟢 unblocked |
| [p0-43](p0-43.md) | 🟡 partial | Formation AI — MCTS plans at formation level, not per-unit | formation, ai, mcts | [warcouncil](../team-leads/warcouncil.md) | 2026-04-24 | 🟢 unblocked |
## P1 — Ship-readiness
| ID | Status | Title | Owner | Updated |
|---|---|---|---|---|
| [p0-20](p0-20-gpu-mcts-rollouts.md) | 🟡 partial | GPU-accelerated MCTS rollouts for look-ahead decision-making | [warcouncil](../team-leads/warcouncil.md) | 2026-04-19 |
| [p0-35](p0-35-ecology-telemetry-instrumentation.md) | ✅ done | Ecology telemetry instrumentation — flora canopy / undergrowth fields in turn_stats.jsonl | [shipwright](../team-leads/shipwright.md) | 2026-04-18 |
| [p0-36](p0-36-weather-event-telemetry.md) | ✅ done | Weather / climate-effects event telemetry — events.jsonl + turn_stats aggregates | [shipwright](../team-leads/shipwright.md) | 2026-04-18 |
| [p1-01](p1-01-diplomacy-lite.md) | ✅ done | Diplomacy-lite — peace/war toggle plus one trade action | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p1-02](p1-02-strategic-resource-yields.md) | ✅ done | Strategic resource yields feed into production bonuses | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p1-03](p1-03-tutorial-overlay.md) | ✅ done | First-run tutorial / onboarding overlay | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p1-05](p1-05-balance-tuning.md) | 🟡 partial | Balance tuning — pop_peak ≥30 median, worker improvements ≥8 min | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p1-06](p1-06-options-polish.md) | ✅ done | Options screen polish | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p1-07](p1-07-chronicle-coverage.md) | ✅ done | Chronicle notifications coverage | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p1-08](p1-08-victory-screen-content.md) | ✅ done | Victory/defeat screen content — recap, banner, replay seed | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p1-09](p1-09-determinism-gate.md) | ✅ done | Determinism gate — same seed produces byte-identical runs | [testwright](../team-leads/testwright.md) | 2026-04-19 |
| [p1-10](p1-10-game-setup-ux.md) | ✅ done | Game setup UX — new-game dialog, difficulty, clan preview | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p1-11](p1-11-build-output-src-purge.md) | ✅ done | Purge build output from src/ — wasm-pack moves to .local/build/wasm/ | [tourguide](../team-leads/tourguide.md) | 2026-04-17 |
| [p1-12](p1-12-build-output-docs-alignment.md) | ✅ done | Align every doc reference to the relocated wasm-pack output | [tourguide](../team-leads/tourguide.md) | 2026-04-17 |
| [p1-13](p1-13-guide-dev-route-coverage.md) | ✅ done | Guide dev server boots on plum with zero-error route coverage | [tourguide](../team-leads/tourguide.md) | 2026-04-17 |
| [p1-15](p1-15-guide-next-deploy-infra.md) | ✅ done | Deploy dev guide to https://mc.next.black.local | [tourguide](../team-leads/tourguide.md) | 2026-04-17 |
| [p1-16](p1-16-guide-game1-scope-hygiene.md) | ✅ done | Purge Game 2/3 scope bleed from user-visible Game 1 guide copy | [tourguide](../team-leads/tourguide.md) | 2026-04-18 |
| [p1-17](p1-17-guide-next-auto-deploy.md) | ✅ done | Forgejo workflow auto-deploys dev guide on push to main | [tourguide](../team-leads/tourguide.md) | 2026-04-18 |
| [p1-18](p1-18-village-discovery-feedback.md) | ✅ done | Village discovery — world-map feedback (notification, reward popup, minimap ping) | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| [p1-19](p1-19-tutorial-opt-in.md) | ✅ done | Tutorial opt-in — HUD button, disappears after turn 5, starts from Step 1 | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| [p1-20](p1-20-unit-action-capability-registry.md) | ✅ done | Unit action capability registry — one source of truth for "what can this unit do right now?" | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| [p1-21](p1-21-unit-patrol-orders.md) | ✅ done | Unit patrol orders — standing order to loop between waypoint tiles | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| [p1-22a](p1-22a-mcts-wall-clock-budget.md) | ❌ missing | MCTS per-decision wall-clock budget — bound per-turn cost on huge maps | [warcouncil](../team-leads/warcouncil.md) | 2026-04-25 |
| [p2-06](p2-06-export-pipeline.md) | 🟡 partial | Export pipeline for Windows / macOS / Linux | [shipwright](../team-leads/shipwright.md) | 2026-04-18 |
| [p2-16](p2-16-audio-assets.md) | ❌ missing | Audio assets — SFX + music .ogg files shipped | [asset-audio](../team-leads/asset-audio.md) | 2026-04-17 |
| [p2-22](p2-22-sprite-generation-pipeline.md) | ❌ missing | Sprite generation pipeline — runnable end-to-end | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 |
| [p2-23](p2-23-unit-sprites-dwarf-roster.md) | ❌ missing | Unit sprites — Dwarf-racial roster (m/f variants) | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 |
| [p2-24](p2-24-unit-sprites-wild-creatures.md) | ❌ missing | Unit sprites — wild creatures & fauna (generic, no race/sex) | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 |
| [p2-25](p2-25-building-sprites-base-coverage.md) | ❌ missing | Building sprites — base game coverage (non-wonder) | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 |
| [p2-26](p2-26-mundane-wonder-sprites.md) | ❌ missing | Mundane-wonder sprites — 24 distinct, higher-fidelity art | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 |
| [p2-27](p2-27-city-population-tier-sprites.md) | ❌ missing | City population-tier sprites — city_q1 through city_q5 | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 |
| [p2-28](p2-28-sprite-provenance-ledger.md) | ❌ missing | Sprite provenance ledger — LICENSES.md per-file attribution | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 |
| ID | Status | Title | Tags | Owner | Updated | Blocked |
|---|---|---|---|---|---|---|
| [p0-20](p0-20-gpu-mcts-rollouts.md) | 🟡 partial | GPU-accelerated MCTS rollouts for look-ahead decision-making | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-19 | 🟢 unblocked |
| [p1-05](p1-05-balance-tuning.md) | 🟡 partial | Balance tuning — pop_peak ≥30 median, worker improvements ≥8 min | — | [shipwright](../team-leads/shipwright.md) | 2026-04-17 | 🟢 unblocked |
| [p2-06](p2-06-export-pipeline.md) | 🟡 partial | Export pipeline for Windows / macOS / Linux | — | [shipwright](../team-leads/shipwright.md) | 2026-04-18 | 🟢 unblocked |
| [p1-22](p1-22-mcts-wall-clock-budget.md) | ❌ missing | MCTS per-decision wall-clock budget — bound per-turn cost on huge maps | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-25 | 🟢 unblocked |
| [p2-16](p2-16-audio-assets.md) | ❌ missing | Audio assets — SFX + music .ogg files shipped | — | [asset-audio](../team-leads/asset-audio.md) | 2026-04-17 | 🟢 unblocked |
| [p2-22](p2-22-sprite-generation-pipeline.md) | ❌ missing | Sprite generation pipeline — runnable end-to-end | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 | 🟢 unblocked |
| [p2-23](p2-23-unit-sprites-dwarf-roster.md) | ❌ missing | Unit sprites — Dwarf-racial roster (m/f variants) | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 | 🟢 unblocked |
| [p2-24](p2-24-unit-sprites-wild-creatures.md) | ❌ missing | Unit sprites — wild creatures & fauna (generic, no race/sex) | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 | 🟢 unblocked |
| [p2-25](p2-25-building-sprites-base-coverage.md) | ❌ missing | Building sprites — base game coverage (non-wonder) | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 | 🟢 unblocked |
| [p2-26](p2-26-mundane-wonder-sprites.md) | ❌ missing | Mundane-wonder sprites — 24 distinct, higher-fidelity art | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 | 🟢 unblocked |
| [p2-27](p2-27-city-population-tier-sprites.md) | ❌ missing | City population-tier sprites — city_q1 through city_q5 | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 | 🟢 unblocked |
| [p2-28](p2-28-sprite-provenance-ledger.md) | ❌ missing | Sprite provenance ledger — LICENSES.md per-file attribution | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 | 🟢 unblocked |
## P2 — Polish
| ID | Status | Title | Owner | Updated |
|---|---|---|---|---|
| [p2-01](p2-01-minimap-improvements.md) | ✅ done | Minimap — fog reflection and unit markers | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p2-02](p2-02-hud-tooltips.md) | ✅ done | Tooltips on all HUD elements | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p2-03](p2-03-hotkey-cheat-sheet.md) | ✅ done | Hotkey cheat sheet (F1 / ?) | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p2-04](p2-04-localization-audit.md) | ✅ done | Localization audit — no hardcoded strings | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p2-05](p2-05-turn-latency.md) | ✅ done | Sub-second single-player turn latency | — | 2026-04-23 |
| [p2-07](p2-07-credits-screen.md) | ✅ done | Credits screen accessible from main menu | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p2-08](p2-08-accessibility.md) | ✅ done | Accessibility baseline — colorblind palette + keyboard navigation | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p2-09](p2-09-guide-web-deploy.md) | ✅ done | Player guide web app — builds clean from source | — | 2026-04-17 |
| [p2-10](p2-10-regression-ci-gate.md) | 🟡 partial | Automated regression CI gate on every push to main | [testwright](../team-leads/testwright.md) | 2026-04-23 |
| [p2-10a](p2-10a-gdlint-ungate.md) | 🟡 partial | "CI: gdlint stage un-gated" | [testwright](../team-leads/testwright.md) | 2026-04-25 |
| [p2-10b](p2-10b-gut-ungate.md) | 🟡 partial | "CI: headless GUT stage un-gated" | [testwright](../team-leads/testwright.md) | 2026-04-25 |
| [p2-11](p2-11-version-about-screen.md) | ✅ done | Version string + About screen | [shipwright](../team-leads/shipwright.md) | 2026-04-17 |
| [p2-18](p2-18-guide-public-deployment.md) | 🟡 partial | Guide web app — public hosting + deploy pipeline | — | 2026-04-17 |
| [p2-19](p2-19-guide-progress-report-page.md) | ✅ done | Guide progress report page — dynamic dashboard + missing assets | — | 2026-04-17 |
| [p2-20](p2-20-guide-sim-cache-pnpm-resolve.md) | ✅ done | Fix simCachePlugin pre-warm worker — tsx can't resolve @magic-civ/physics-rs through pnpm symlink | [tourguide](../team-leads/tourguide.md) | 2026-04-17 |
| [p2-21](p2-21-guide-simcache-static-bake.md) | ✅ done | Bake pre-computed sim-cache frames into the static build | [tourguide](../team-leads/tourguide.md) | 2026-04-18 |
| [p2-29](p2-29-guide-welcome-homepage-theme-alignment.md) | ✅ done | Welcome modal + HomePage lore + guide theme align to the player's chosen race/gender | [tourguide](../team-leads/tourguide.md) | 2026-04-18 |
| [p2-30](p2-30-guide-shared-primitives.md) | ✅ done | Consolidate duplicate page styled-components into shared PagePrimitives | [tourguide](../team-leads/tourguide.md) | 2026-04-18 |
| [p2-31](p2-31-guide-url-bound-state.md) | ✅ done | Migrate guide filter + tab state from useState to URL search params | [tourguide](../team-leads/tourguide.md) | 2026-04-18 |
| [p2-32](p2-32-guide-data-driven-enums.md) | ✅ done | Replace hardcoded page enums with JSON data reads | [tourguide](../team-leads/tourguide.md) | 2026-04-18 |
| ID | Status | Title | Tags | Owner | Updated | Blocked |
|---|---|---|---|---|---|---|
| [p2-10](p2-10-regression-ci-gate.md) | 🟡 partial | Automated regression CI gate on every push to main | — | [testwright](../team-leads/testwright.md) | 2026-04-23 | 🟢 unblocked |
| [p2-10a](p2-10a-gdlint-ungate.md) | 🟡 partial | CI: gdlint stage un-gated | — | [testwright](../team-leads/testwright.md) | 2026-04-25 | 🟢 unblocked |
| [p2-10b](p2-10b-gut-ungate.md) | 🟡 partial | CI: headless GUT stage un-gated | — | [testwright](../team-leads/testwright.md) | 2026-04-25 | 🟢 unblocked |
| [p2-18](p2-18-guide-public-deployment.md) | 🟡 partial | Guide web app — public hosting + deploy pipeline | — | — | 2026-04-17 | 🟢 unblocked |
## Out of Scope (Game 2 / Game 3)
## Out of Scope
> These objectives are explicitly future-scope. **Game 2 (Age of Kzzykt)** items introduce leylines, the Green school, and spacefaring. **Game 3 (Age of Elves)** items cover the full five-school magic system, Archons, and Arcane Ascension. None are part of the Game 1 Early Access release.
> These objectives are explicitly deferred. They are tracked for visibility but not blocking the current release.
| ID | Status | Title | Owner | Updated |
|---|---|---|---|---|
| [p1-14](p1-14-guide-magic-school-scope-drift.md) | ⚫ oos | Gate Game 2/3/4 magic-school content behind EpisodeGate (future-game scope) | — | 2026-04-17 |
| [g2-01](g2-01-leylines-oos.md) | ⚫ oos | Ley lines — Game 2 (Age of Kzzykt) | — | 2026-04-17 |
| [g2-02](g2-02-additional-races-oos.md) | ⚫ oos | Kzzykt playable race — Game 2 (Age of Kzzykt) | — | 2026-04-17 |
| [g2-03](g2-03-green-school-oos.md) | ⚫ oos | Kzzykt Green school of magic — Game 2 (Age of Kzzykt) | — | 2026-04-17 |
| [g2-04](g2-04-multi-gpu-batch-simulate-oos.md) | ⚫ oos | Multi-GPU sharding for batch_simulate_gpu — out-of-scope (Game 2) | [warcouncil](../team-leads/warcouncil.md) | 2026-04-17 |
| [g3-01](g3-01-archons-oos.md) | ⚫ oos | Archons — Game 3 (Age of Elves) | — | 2026-04-17 |
| [g3-02](g3-02-life-school-oos.md) | ⚫ oos | Life school spellbook — Game 3 (Age of Elves) | — | 2026-04-17 |
| [g3-03](g3-03-death-school-oos.md) | ⚫ oos | Death school spellbook — Game 3 (Age of Elves) | — | 2026-04-17 |
| [g3-04](g3-04-chaos-school-oos.md) | ⚫ oos | Chaos school spellbook — Game 3 (Age of Elves) | — | 2026-04-17 |
| [g3-05](g3-05-aether-school-oos.md) | ⚫ oos | Aether school spellbook — Game 3 (Age of Elves) | — | 2026-04-17 |
| [g3-06](g3-06-arcane-ascension-oos.md) | ⚫ oos | Arcane Ascension victory — Game 3 (Age of Elves) | — | 2026-04-17 |
| [g4-01](g4-01-terran-race-oos.md) | ⚫ oos | Terran (Human) playable species — Game 4 (Age of Terrans) | — | 2026-04-17 |
| [g4-02](g4-02-psionics-oos.md) | ⚫ oos | Psionics ability system — Game 4 (Age of Terrans) | — | 2026-04-17 |
| [g4-03](g4-03-religious-victory-oos.md) | ⚫ oos | Religious victory condition — Game 4 (Age of Terrans) | — | 2026-04-17 |
| [g5-01](g5-01-phantasma-oos.md) | ⚫ oos | Phantasma playable species — Game 5 (Age of Ascension) | — | 2026-04-17 |
| [g5-02](g5-02-flugel-oos.md) | ⚫ oos | Flügel playable species — Game 5 (Age of Ascension) | — | 2026-04-17 |
| [g5-03](g5-03-gith-oos.md) | ⚫ oos | Gith playable species (Githyanki + Githzerai) — Game 5 (Age of Ascension) | — | 2026-04-17 |
| [g5-04](g5-04-demonia-oos.md) | ⚫ oos | Demonia playable species — Game 5 (Age of Ascension) | — | 2026-04-17 |
| ID | Status | Title | Tags | Owner | Updated | Blocked |
|---|---|---|---|---|---|---|
| [p1-14](p1-14-guide-magic-school-scope-drift.md) | ⚫ oos | Gate Game 2/3/4 magic-school content behind EpisodeGate (future-game scope) | — | — | 2026-04-17 | 🟢 unblocked |
| [g2-01](g2-01-leylines-oos.md) | ⚫ oos | Ley lines — Game 2 (Age of Kzzykt) | — | — | 2026-04-17 | 🟢 unblocked |
| [g2-02](g2-02-additional-races-oos.md) | ⚫ oos | Kzzykt playable race — Game 2 (Age of Kzzykt) | — | — | 2026-04-17 | 🟢 unblocked |
| [g2-03](g2-03-green-school-oos.md) | ⚫ oos | Kzzykt Green school of magic — Game 2 (Age of Kzzykt) | — | — | 2026-04-17 | 🟢 unblocked |
| [g2-04](g2-04-multi-gpu-batch-simulate-oos.md) | ⚫ oos | Multi-GPU sharding for batch_simulate_gpu — out-of-scope (Game 2) | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-17 | 🟢 unblocked |
| [g3-01](g3-01-archons-oos.md) | ⚫ oos | Archons — Game 3 (Age of Elves) | — | — | 2026-04-17 | 🟢 unblocked |
| [g3-02](g3-02-life-school-oos.md) | ⚫ oos | Life school spellbook — Game 3 (Age of Elves) | — | — | 2026-04-17 | 🟢 unblocked |
| [g3-03](g3-03-death-school-oos.md) | ⚫ oos | Death school spellbook — Game 3 (Age of Elves) | — | — | 2026-04-17 | 🟢 unblocked |
| [g3-04](g3-04-chaos-school-oos.md) | ⚫ oos | Chaos school spellbook — Game 3 (Age of Elves) | — | — | 2026-04-17 | 🟢 unblocked |
| [g3-05](g3-05-aether-school-oos.md) | ⚫ oos | Aether school spellbook — Game 3 (Age of Elves) | — | — | 2026-04-17 | 🟢 unblocked |
| [g3-06](g3-06-arcane-ascension-oos.md) | ⚫ oos | Arcane Ascension victory — Game 3 (Age of Elves) | — | — | 2026-04-17 | 🟢 unblocked |
| [g4-01](g4-01-terran-race-oos.md) | ⚫ oos | Terran (Human) playable species — Game 4 (Age of Terrans) | — | — | 2026-04-17 | 🟢 unblocked |
| [g4-02](g4-02-psionics-oos.md) | ⚫ oos | Psionics ability system — Game 4 (Age of Terrans) | — | — | 2026-04-17 | 🟢 unblocked |
| [g4-03](g4-03-religious-victory-oos.md) | ⚫ oos | Religious victory condition — Game 4 (Age of Terrans) | — | — | 2026-04-17 | 🟢 unblocked |
| [g5-01](g5-01-phantasma-oos.md) | ⚫ oos | Phantasma playable species — Game 5 (Age of Ascension) | — | — | 2026-04-17 | 🟢 unblocked |
| [g5-02](g5-02-flugel-oos.md) | ⚫ oos | Flügel playable species — Game 5 (Age of Ascension) | — | — | 2026-04-17 | 🟢 unblocked |
| [g5-03](g5-03-gith-oos.md) | ⚫ oos | Gith playable species (Githyanki + Githzerai) — Game 5 (Age of Ascension) | — | — | 2026-04-17 | 🟢 unblocked |
| [g5-04](g5-04-demonia-oos.md) | ⚫ oos | Demonia playable species — Game 5 (Age of Ascension) | — | — | 2026-04-17 | 🟢 unblocked |
## Superseded
> These objectives were split into narrower children. Files are retained as index stubs so external references don't 404. The `superseded_by:` frontmatter field names the replacement IDs.
> These objectives were split into narrower children. Files are retained as index stubs so external references do not 404.
| ID | Status | Title | Owner | Updated |
|---|---|---|---|---|
| [p2-17](p2-17-sprite-assets.md) | ♻️ superseded | Sprite assets — superseded index (split into p2-22 … p2-28) | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 |
| ID | Status | Title | Tags | Owner | Updated | Blocked |
|---|---|---|---|---|---|---|
| [p2-17](p2-17-sprite-assets.md) | ♻️ superseded | Sprite assets — superseded index (split into p2-22 … p2-28) | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 | 🟢 unblocked |

File diff suppressed because one or more lines are too long

View file

@ -6,7 +6,7 @@ status: done
scope: game1
owner: warcouncil
updated_at: 2026-04-25
followup: p1-22a-mcts-wall-clock-budget
followup: p1-22-mcts-wall-clock-budget
evidence:
- src/simulator/crates/mc-ai/tests/ultimate_lookahead_stress.rs (8/8 stress tests, 5-clan rotation, horizon-20 walker, bit-determinism)
- tools/test_matchup_and_ultimate.py (26/26 verdict-fn unit tests)
@ -125,7 +125,7 @@ a foregone conclusion; the grid is the precondition.
**Engineering closure**: all 7 root causes are diagnosed and fixed. Pipeline produces correct outcomes when games complete. The matchup_balance prereq gate ✓ passes 50/50.
**Remaining gap → spun out to `p0-22a-mcts-wall-clock-budget.md` (P0, blocks EA)**: 7 of 10 seeds time out at low turn counts because MCTS per-decision cost grows unboundedly with game-state complexity (some seeds: 30-60s/turn vs others: <5s/turn). This is a runtime perf bug, not a test calibration issue players who pick "huge map" or "5 clans" will experience the same hang in normal gameplay. Fix: per-decision wall-clock budget in `mcts_tree::iterate*` (`MCTS_DECISION_BUDGET_MS` env). Once that lands, the `ultimate_stress` 10-seed gate flips to and confirms huge-map content is shippable for EA.
**Remaining gap → spun out to `p1-22-mcts-wall-clock-budget.md` (P1, EA-mitigation = mark huge/5-clan experimental)**: 7 of 10 seeds time out at low turn counts because MCTS per-decision cost grows unboundedly with game-state complexity (some seeds: 30-60s/turn vs others: <5s/turn). This is a runtime perf bug, not a test calibration issue players who pick "huge map" or "5 clans" will experience the same hang in normal gameplay. Fix: per-decision wall-clock budget in `mcts_tree::iterate*` (`MCTS_DECISION_BUDGET_MS` env). Once that lands, the `ultimate_stress` 10-seed gate flips to and confirms huge-map content is shippable for EA.
This objective is marked `done` because all engineering work it owned is complete; the perf gap surfaced is a separate fix that p0-22a tracks to closure.

View file

@ -1,5 +1,5 @@
---
id: p1-22a
id: p1-22
title: MCTS per-decision wall-clock budget — bound per-turn cost on huge maps
priority: p1
status: missing

View file

@ -4,7 +4,7 @@ name: Wireguard
specialization: World-map interactivity and input pipeline — unit selection, movement UX, HUD panel wiring, keyboard shortcuts (ESC/F10/M/etc.), menu stack ordering, tutorial overlay correctness, CanvasLayer hierarchy, EventBus input signals.
objectives:
- p0-33
- p0-35
- p0-44
- p1-18
- p1-19
---
@ -42,7 +42,7 @@ or the dim overlay eats a click it shouldn't — that's a Wireguard bug.
## Directly owned objectives
- **p0-33** world-map input wiring — unit panel instancing, city single-click, ESC/F10 menu, panel close, tutorial mouse_filter fix
- **p0-35** movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing, disabled-state tooltips
- **p0-44** movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing, disabled-state tooltips
- **p1-18** village discovery feedback — notification toast, reward popup, minimap ping (UI half of the existing `EventBus.village_discovered` signal)
- **p1-19** tutorial opt-in — HUD button, disappears after turn 5, Step 1 start