`tools/objectives-report.py --check` was failing (README/objectives.json stale vs per-objective frontmatter after recent objective edits). Regenerated both. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
55 KiB
55 KiB
Objectives — Dashboard
Generated by
tools/objectives-report.py— do not hand-edit. Source of truth is per-file YAML frontmatter in this directory.
Legend
✅ done · 🔵 in-progress · 🟡 partial · 🔴 stub · ❌ missing · ⚫ out-of-scope (Game 2 / Game 3)
Totals
|
By Priority
|
Left To Do by Lead
|
P0 — Blockers for "completely playable"
| ID | Status | Title | Owner | Updated |
|---|---|---|---|---|
| p0-01 | ✅ done | Wire MCTS into gameplay AI | warcouncil | 2026-04-26 |
| p0-02 | ✅ done | Five AI clan personalities drive distinct playstyles | warcouncil | 2026-04-26 |
| p0-03 | ✅ done | PvP combat resolved inside the authoritative turn processor | — | 2026-04-17 |
| p0-04 | ✅ done | World wonder tracking in PlayerState and score victory | — | 2026-04-17 |
| p0-05 | ✅ done | Culture generation and border expansion | shipwright | 2026-04-17 |
| p0-06 | ✅ done | Fold gold income / upkeep / improvement yields into turn loop | — | 2026-04-17 |
| p0-07 | ✅ done | Tech research costs and science pool pacing | — | 2026-04-17 |
| p0-08 | ✅ done | Domination victory path in mc-turn::victory | warcouncil | 2026-04-18 |
| p0-09 | ✅ done | City-screen UI completeness (citizen assign, queue controls, promotion picker) | — | 2026-04-16 |
| p0-10 | ✅ done | Game-completion stability — ≥7/10 seeds declare a winner | — | 2026-04-17 |
| p0-11 | ✅ done | Author the four T8–T10 mystery item drops | — | 2026-04-16 |
| p0-12 | ✅ done | Save / load + autosave on quit | shipwright | 2026-04-17 |
| p0-13 | ✅ done | Fog of war and exploration / scout loop | — | 2026-04-17 |
| p0-14 | ✅ done | Map generation, resource placement, and balanced fair starts | shipwright | 2026-04-16 |
| p0-15 | ✅ done | Happiness pool and Golden Age mechanics end-to-end | shipwright | 2026-04-17 |
| p0-16 | ✅ done | Worker / tile-improvement build loop | shipwright | 2026-04-17 |
| p0-17 | ✅ done | Wild creature and lair clearing loop | shipwright | 2026-04-17 |
| p0-18 | ✅ done | Strategic resources gate unit production (empire ledger) | — | 2026-04-17 |
| p0-19 | ✅ done | Biome-driven collectibles → tile yields → happiness end-to-end | — | 2026-04-16 |
| p0-21 | ✅ done | Audio system capability — manifest + autoload + EventBus wiring | shipwright | 2026-04-17 |
| p0-22 | ✅ done | "Ultimate AI stress test — 5 clans, huge map, deep lookahead" | warcouncil | 2026-04-25 |
| p0-23 | ✅ done | Sprite rendering capability — replace procedural draw_* with texture rendering | shipwright | 2026-04-17 |
| p0-24 | ✅ done | Difficulty-calibrated AI progression — Easy / Normal / Hard tier-peak distributions | warcouncil | 2026-04-19 |
| p0-25 | ✅ done | Game-quality metrics instrumentation — tier_peak, peak_unit_tier, wonder_count | shipwright | 2026-04-17 |
| p0-26 | ✅ done | Port tactical AI from GDScript to mc-ai (Rail-1 compliance) | warcouncil | 2026-04-18 |
| p0-27 | ✅ done | GdCulture bridge — live game delegates culture to mc-culture | shipwright | 2026-04-17 |
| p0-28 | ✅ done | GdEconomy bridge — live game delegates gold/upkeep to mc-economy | shipwright | 2026-04-17 |
| p0-29 | ✅ done | GdTechWeb bridge — live game delegates research to mc-tech | shipwright | 2026-04-17 |
| p0-30 | ✅ done | Remove duplicate GDScript ecology tick (single Rust source) | shipwright | 2026-04-18 |
| p0-31 | ✅ done | Restore Rust ecology path — fix ClimateScript bugs + re-enable per-turn tick | shipwright | 2026-04-18 |
| p0-32 | ✅ done | Restore WeatherScript + ClimateEffectsScript — per-turn weather and climate-effects | shipwright | 2026-04-18 |
| p0-33 | ✅ done | World-map input wiring — unit selection panel, city click, ESC/F10 menu, panel close | wireguard | 2026-04-19 |
| p0-34 | ✅ done | Freepeople tribe-founding cinematic — turn -1 / 0 / 1 start sequence and Dwarf Tribe founder unit | shipwright | 2026-04-18 |
| p0-37 | ✅ done | Personality-emergent tactical thresholds (lift 7 hardcoded constants into axis-derived functions) | warcouncil | 2026-04-18 |
| p0-38 | ✅ done | Inject personality-utility scores as MCTS UCB1 priors | warcouncil | 2026-04-24 |
| p0-39 | ✅ done | AI tier-progression unit selection — production.rs picks tier-2+ units once tech unlocks | warcouncil | 2026-04-18 |
| p0-40 | ✅ done | Iron-ore strategic resource density — unblock tier 3-6 unit chain | shipwright | 2026-04-24 |
| p0-41 | ✅ done | Building rally points — produced units auto-deploy to a designated hex | shipwright | 2026-04-24 |
| p0-41a | ✅ done | Rally-point smoke — produced unit gets PatrolOrder toward rally hex | shipwright | 2026-04-25 |
| p0-42 | ✅ done | Formation aggregation — adjacent units link into a shaped formation with terrain reflow | shipwright | 2026-04-25 |
| p0-42a | ✅ done | Formation aggregation smoke — formations form and evolve at runtime | shipwright | 2026-04-25 |
| p0-43 | ✅ done | "Formation AI — MCTS plans at formation level, not per-unit" | warcouncil | 2026-04-25 |
| p0-44 | ✅ done | Movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing | wireguard | 2026-04-19 |
| p0-45 | ✅ done | Turn processor consolidation — entities/ duplicate caused T1 SCRIPT ERROR halt | shipwright | 2026-05-04 |
P1 — Ship-readiness
| ID | Status | Title | Owner | Updated |
|---|---|---|---|---|
| g2-07 | ✅ done | Flora succession — wire the existing flora lifecycle engine into the playable turn | — | 2026-06-09 |
| p0-20 | ✅ done | GPU-accelerated MCTS rollouts for look-ahead decision-making | warcouncil | 2026-05-05 |
| p0-26b | ✅ done | Port _pick_research from GDScript into mc-ai (finish Rail-1 for the AI decision surface) | warcouncil | 2026-06-23 |
| p0-35 | ✅ done | Ecology telemetry instrumentation — flora canopy / undergrowth fields in turn_stats.jsonl | shipwright | 2026-04-18 |
| p0-36 | ✅ done | Weather / climate-effects event telemetry — events.jsonl + turn_stats aggregates | shipwright | 2026-04-18 |
| p1-01 | ✅ done | Diplomacy-lite — peace/war toggle plus one trade action | shipwright | 2026-04-17 |
| p1-02 | ✅ done | Strategic resource yields feed into production bonuses | shipwright | 2026-04-17 |
| p1-03 | ✅ done | First-run tutorial / onboarding overlay | shipwright | 2026-04-17 |
| p1-05 | ✅ done | Balance tuning — pop_peak ≥30 median, worker improvements ≥8 min | shipwright | 2026-05-14 |
| p1-06 | ✅ done | Options screen polish | shipwright | 2026-04-17 |
| p1-07 | ✅ done | Chronicle notifications coverage | shipwright | 2026-04-17 |
| p1-08 | ✅ done | Victory/defeat screen content — recap, banner, replay seed | shipwright | 2026-04-17 |
| p1-09 | ✅ done | Determinism gate — same seed produces byte-identical runs | testwright | 2026-04-19 |
| p1-10 | ✅ done | Game setup UX — new-game dialog, difficulty, clan preview | shipwright | 2026-04-17 |
| p1-11 | ✅ done | Purge build output from src/ — wasm-pack moves to .local/build/wasm/ | tourguide | 2026-04-17 |
| p1-12 | ✅ done | Align every doc reference to the relocated wasm-pack output | tourguide | 2026-04-17 |
| p1-13 | ✅ done | Guide dev server boots on plum with zero-error route coverage | tourguide | 2026-04-17 |
| p1-15 | ✅ done | Deploy dev guide to https://mc.next.black.lan | tourguide | 2026-04-17 |
| p1-16 | ✅ done | Purge Game 2/3 scope bleed from user-visible Game 1 guide copy | tourguide | 2026-04-18 |
| p1-17 | ✅ done | Forgejo workflow auto-deploys dev guide on push to main | tourguide | 2026-04-18 |
| p1-18 | ✅ done | Village discovery — world-map feedback (notification, reward popup, minimap ping) | wireguard | 2026-04-19 |
| p1-19 | ✅ done | Tutorial opt-in — HUD button, disappears after turn 5, starts from Step 1 | wireguard | 2026-04-19 |
| p1-20 | ✅ done | Unit action capability registry — one source of truth for "what can this unit do right now?" | wireguard | 2026-04-19 |
| p1-21 | ✅ done | Unit patrol orders — standing order to loop between waypoint tiles | wireguard | 2026-04-19 |
| p1-22 | ✅ done | MCTS per-decision wall-clock budget — bound per-turn cost on huge maps | warcouncil | 2026-05-14 |
| p1-22a | ✅ done | Huge-map AI quality — close the 4/10 → ≥5/10 decisive-game gate | warcouncil | 2026-05-17 |
| p1-23 | ✅ done | Restore StatsTracker — demographics overview broken in shipped builds | shipwright | 2026-04-25 |
| p1-24 | ✅ done | ai_personalities.json fails to load from packed builds (all platforms) — pass JSON contents not path | shipwright | 2026-04-25 |
| p1-25 | ✅ done | Eliminate parse-error spam in export logs (Unit dup decl + SaveManager stray) | shipwright | 2026-04-25 |
| p1-26 | ✅ done | "Tile-placement UX with effect preview — Civ7-style \"where does this go and what changes\"" | shipwright | 2026-04-26 |
| p1-27 | ✅ done | Extract GPU MCTS into a standalone service/client (model-boss-shaped, magic-civ-only) | warcouncil | 2026-05-14 |
| p1-27a | ✅ done | MCTS service telemetry + parity test + huge-map wiring | warcouncil | 2026-05-16 |
| p1-28 | ✅ done | "Culture research tree — real graph, bridge, UI" | shipwright | 2026-04-26 |
| p1-29 | ✅ done | "Anti-early-domination: lift game-balance gates that p0-01 v1 measured" | combat-dev | 2026-05-14 |
| p1-29a | ✅ done | Last-stand defense — combat-strength multiplier when defender is at last city | combat-dev | 2026-05-14 |
| p1-29b | ✅ done | "AI tech tier gap — structural research path quality (low-pop AI fails to reach t1+)" | warcouncil | 2026-05-07 |
| p1-29c | ✅ done | "Sole-city research path — lift trailing AI from tier_peak=1 to ≥2" | warcouncil | 2026-05-27 |
| p1-29c-followup-empty-params-json-regression | ✅ done | "GdEconomy::process_turn fails — _build_params_json produces empty string for autoplay seeds" |
shipwright | 2026-05-15 |
| p1-29d-p1-survival | ✅ done | P1 (trailing AI) eliminated or stalled before T100 in 10/10 seeds — upstream of action priority | warcouncil | 2026-06-23 |
| p1-29e-rl-divergence-mining | ✅ done | "RL-policy divergence mining → sole-city economy break-out (production, not science)" | warcouncil | 2026-06-23 |
| p1-29f | ✅ done | "learned:* controller bridge — make the trained RL policy playable in-engine" | simulator-infra | 2026-06-03 |
| p1-29g | ✅ done | Re-verify Game-1 AI quality gates trained-vs-scripted (and trained-vs-trained) | warcouncil | 2026-06-23 |
| p1-29h-stateful-tactical-decisiveness | ✅ done | Stateful tactical decisiveness — army target-lock + commitment hysteresis + press-on-capture in mc-ai | warcouncil | 2026-06-23 |
| p1-29i-refound-suppression | ✅ done | Refound-suppression / capture-stickiness lever — convert captures into eliminations | warcouncil | 2026-06-23 |
| p1-29j-autoplay-rust-action-application | ✅ done | "Route autoplay action-application (city-founding / capture) through Rust mc_turn::processor" | warcouncil | 2026-06-23 |
| p1-29k | ✅ done | "Drive learned:* controllers on the autoplay (auto_play.gd) gate surface" | simulator-infra | 2026-06-23 |
| p1-30 | ✅ done | "Optimize _build_tactical_state — 8000-tile GDScript dict-build per AI turn blocks p1-22 huge-map gate" |
warcouncil | 2026-05-04 |
| p1-31 | ✅ done | Split bundled resources/buildings/<category>.json into per-file pattern matching resources/units/ |
— | 2026-04-27 |
| p1-32 | ✅ done | Author the two missing food/processing buildings (sawmill, herbalist) | — | 2026-05-03 |
| p1-33 | ✅ done | Wire naval/aerial unit gates to the harbor and airfield buildings | — | 2026-05-03 |
| p1-34 | ✅ done | "Unit metadata expansion — flavor, archetype, promotion_tree, clan_affinity fields" | shipwright | 2026-04-27 |
| p1-35 | ✅ done | "Per-unit lore paragraphs — historical/cultural context for the dwarven roster" | shipwright | 2026-04-27 |
| p1-36 | ✅ done | "AI personalities — T1–T10 build order coverage + clan_affinity routing" | warcouncil | 2026-05-03 |
| p1-37 | ✅ done | "mc-ai clan_affinity routing — Rust AI reads unit clan_affinity at build-decision time" | warcouncil | 2026-05-01 |
| p1-38 | ✅ done | "Biome → economy coupling — population & luxury driven by live ecology" | shipwright | 2026-05-14 |
| p1-39 | ✅ done | Port per-yield difficulty multipliers from GDScript into Rust crates (Rail-1) — research + culture | warcouncil | 2026-05-05 |
| p1-40 | ✅ done | Collapse data// override layer into single source of truth at resources/ | — | 2026-04-29 |
| p1-41 | ✅ done | Game-pack subscription manifest + loader filter (Phase B of resources/ unification) | — | 2026-04-29 |
| p1-42 | ✅ done | "AI must consider the full 155-building catalog, not the hardcoded 8-id ladder" | — | 2026-05-14 |
| p1-43 | ✅ done | Building stacking — per-category upgrade chains (military / science / culture / production / etc.) | — | 2026-05-14 |
| p1-43b | ✅ done | Deep chain authoring — fill T6/T7/T8/T9/T10 building tiers across the 5 short chains | — | 2026-05-05 |
| p1-43c | ✅ done | "p1-43 follow-ups — chain ladder authoring, AI stack scoring, city UI upgrade surface, GUT bridge test" | — | 2026-05-14 |
| p1-43c-gdext-upgrade-target | ✅ done | "api-gdext bridge — GdBuildingRegistry::get_upgrade_target for city UI upgrade surface" | — | 2026-05-14 |
| p1-44 | ✅ done | "Buildings produce units, not the city center — per-building production queues" | — | 2026-05-14 |
| p1-44c | ✅ done | "p1-44 follow-ups — UI, AI per-building emission, themed roster, GUT, batch" | — | 2026-05-14 |
| p1-45 | ✅ done | "Batch binary freshness: rebuild GDExt before every autoplay batch" | simulator-infra | 2026-05-03 |
| p1-46 | ✅ done | Terrain Dimensions Lab — fix ridginess, bind 149 flora species, add Whittaker plot | terraformer | 2026-05-01 |
| p1-47 | ✅ done | River hydrology — D6 flow analysis, hydraulic erosion, multi-hex lakes, cross-tile rivers | terraformer | 2026-05-01 |
| p1-48 | ✅ done | Flora species renderer — bind 149 species to world-map tile rendering (single source of truth) | terraformer | 2026-05-01 |
| p1-49 | ✅ done | Fauna species renderer — 61 Game-1 species visible on encounter and lair tiles | terraformer | 2026-05-01 |
| p1-50 | ✅ done | Tectonic prepass — voronoi plates + boundary classification seeding elevation | terraformer | 2026-05-01 |
| p1-51 | ✅ done | Worldgen canonical design docs — author the spec before any Rust | terraformer | 2026-04-30 |
| p1-52 | ✅ done | api-wasm build fix — unblock WASM bundle for design-lab WASM consumption | terraformer | 2026-05-01 |
| p1-53 | ✅ done | "Worldgen layer pages — one playground per canonical doc, mirroring the layered Earth model" | terraformer | 2026-05-01 |
| p1-54 | ✅ done | Hex direction-index translation — Rust pointy-top axial vs design-app flat-top canvas | terraformer | 2026-05-01 |
| p1-55 | ✅ done | "Tech & Culture domain field — propagate categorization through Rust, Godot UI, and player analysis" | simulator-infra | 2026-05-07 |
| p1-56 | ✅ done | "Civics buildings, Great Works, Specialists, Great People — wire authored data into Rust + Godot" | simulator-infra | 2026-05-14T20:05Z |
| p1-57 | ✅ done | "Diplomacy: tribute, treaty lifecycle, magical-terrain episode gating" | envoy | 2026-06-06 |
| p1-58 | ✅ done | "Ecology cognition: terrain affinity, food web, grudge memory, apex tier-10 fauna/flora" | simulator-infra | 2026-05-07 |
| p1-59 | ✅ done | "Hybrid merged structures — war_academy, assault_citadel, cavalry_corps, gunnery_corps" | — | 2026-05-07 |
| p1-60 | ✅ done | "Fog-of-war end-to-end test coverage + AI fairness fix" | simulator-infra | 2026-05-18 |
| p1-61 | ✅ done | "Ecology content gap fill: sparse biomes + lineage tier holes (P1 actions from ecology-audit-gaps.md)" | terraformer | 2026-06-06 |
| p2-06 | ✅ done | Export pipeline for Windows / macOS / Linux | shipwright | 2026-04-25 |
| p2-16 | ✅ done | Audio assets — in-theme OSS launch pack + source ledger | asset-audio | 2026-06-22 |
| p2-22 | ✅ done | Sprite generation pipeline — runnable end-to-end | asset-sprite | 2026-06-10 |
| p2-28 | ✅ done | Sprite provenance ledger — LICENSES.md per-file attribution | asset-sprite | 2026-04-25 |
| p2-33 | ✅ done | "Sound system extension — categorical fallback, variant pools, per-entity routing" | asset-audio | 2026-04-27 |
| p2-80 | ✅ done | mc-worldsim orchestration crate — drive the existing worldsim engines in the playable turn | — | 2026-06-09 |
P2 — Polish
| ID | Status | Title | Owner | Updated |
|---|---|---|---|---|
| g2-05 | ✅ done | Tectonics + lithology — extend the existing prepass/terrain-evolution into a lithology axis | — | 2026-06-23 |
| g2-06 | ✅ done | Soil derivation layer — emergent soil order from rock + climate + slope (the one unbuilt worldsim engine) | — | 2026-06-23 |
| g2-08 | ✅ done | Fauna population dynamics — confirm the existing LV engine ticks in the playable turn | — | 2026-06-23 |
| g2-09 | ✅ done | Flora tolerance-driven selection — extend the existing flora_select engine with tolerance gating | — | 2026-06-23 |
| g2-10 | ✅ done | Fauna migration — wire the existing apply_migrations engine into the per-turn step | — | 2026-06-23 |
| p1-05-followup-shipwright-batch | ✅ done | Shipwright autoplay-batch sign-off — luxury variance + personality win balance | shipwright | 2026-06-23 |
| p1-38-followup-shipwright-batch | ✅ done | p1-38 follow-up — Shipwright coupled-mode 10-seed regression batch + sign-off | shipwright | 2026-06-23 |
| p1-42a | ✅ done | "Reconcile capture_scoring.rs ↔ PersonalityPriors — building_priors field location" | warcouncil | 2026-05-14 |
| p1-42b | ✅ done | "Plumb per-personality building_category_weights + wonder_priorities through mc-turn PlayerState + GDScript bridge" | warcouncil | 2026-05-14 |
| p2-01 | ✅ done | Minimap — fog reflection and unit markers | shipwright | 2026-04-17 |
| p2-02 | ✅ done | Tooltips on all HUD elements | shipwright | 2026-04-17 |
| p2-03 | ✅ done | Hotkey cheat sheet (F1 / ?) | shipwright | 2026-04-17 |
| p2-04 | ✅ done | Localization audit — no hardcoded strings | shipwright | 2026-04-17 |
| p2-05 | ✅ done | Sub-second single-player turn latency | — | 2026-04-23 |
| p2-06b | ✅ done | Cross-compile Windows .exe + .dll from Linux via cargo-xwin (no Windows host) | shipwright | 2026-04-25 |
| p2-07 | ✅ done | Credits screen accessible from main menu | shipwright | 2026-04-17 |
| p2-08 | ✅ done | Accessibility baseline — colorblind palette + keyboard navigation | shipwright | 2026-04-17 |
| p2-09 | ✅ done | Player guide web app — builds clean from source | — | 2026-04-17 |
| p2-10 | ✅ done | Automated regression CI gate on every push to main | testwright | 2026-05-14 |
| p2-10a | ✅ done | "CI: gdlint stage un-gated" | testwright | 2026-04-25 |
| p2-10b | ✅ done | "CI: headless GUT stage un-gated" | testwright | 2026-04-26 |
| p2-10c | ✅ done | "Diplomacy: implement _collect_unique_luxury_ids() in happiness.gd" | — | 2026-04-26 |
| p2-10d | ✅ done | "Data: strip legacy flags/can_found_city/can_build_improvements from unit JSON" | — | 2026-04-26 |
| p2-10e | ✅ done | "Data: resolve duplicate IDs and dangling unlock refs in game data" | — | 2026-04-26 |
| p2-10f | ✅ done | "SaveManager: fix typed array property assignment on Player/Unit deserialization" | — | 2026-04-26 |
| p2-10g | ✅ done | "CityBridge: add production_cost field to items JSON fixture" | — | 2026-04-26 |
| p2-10h | ✅ done | "UnitRenderer: implement _build_sprite_key() helper and fix cache key test" | — | 2026-04-26 |
| p2-10i | ✅ done | "TileTooltip: fix scene node name mismatches and collectibles text formatting" | — | 2026-04-26 |
| p2-10j | ✅ done | "FogOfWar: fix recalculate_vision to not re-reveal already-seen tiles on move" | — | 2026-04-26 |
| p2-10k | ✅ done | "CI: fix 51 gdlint violations so Stage 3 is hard-green" | testwright | 2026-05-14 |
| p2-10k-followup | ✅ done | "Workflow policy decision: how to clear the 10 max-file-lines gdlint violations" | testwright | 2026-06-23 |
| p2-10l | ✅ done | "CI: fix 15 GUT regressions so Stage 5 is hard-green" | testwright | 2026-05-14 |
| p2-10l-followup-gdai-set-map | ✅ done | "GdAiController::set_map — wire map into tactical state_json" | simulator-infra | 2026-05-15 |
| p2-10l-followup-update-tile-negative-axial | ✅ done | "GdAiController::update_tile rejects negative axial coordinates" | simulator-infra | 2026-05-15 |
| p2-11 | ✅ done | Version string + About screen | shipwright | 2026-04-17 |
| p2-11a | ✅ done | "SaveManager: add Unit.serialize/deserialize and City.production_queue serialize path" | — | 2026-05-04 |
| p2-12 | ✅ done | Install weston on apricot RUN host — unblock display-server smoke tests | shipwright | 2026-04-25 |
| p2-18 | ✅ done | Guide web app — public hosting + deploy pipeline | — | 2026-06-23 |
| p2-19 | ✅ done | Guide progress report page — dynamic dashboard + missing assets | — | 2026-04-17 |
| p2-20 | ✅ done | Fix simCachePlugin pre-warm worker — tsx can't resolve @magic-civ/physics-rs through pnpm symlink | tourguide | 2026-04-17 |
| p2-21 | ✅ done | Bake pre-computed sim-cache frames into the static build | tourguide | 2026-04-18 |
| p2-29 | ✅ done | Welcome modal + HomePage lore + guide theme align to the player's chosen race/gender | tourguide | 2026-04-18 |
| p2-30 | ✅ done | Consolidate duplicate page styled-components into shared PagePrimitives | tourguide | 2026-04-18 |
| p2-31 | ✅ done | Migrate guide filter + tab state from useState to URL search params | tourguide | 2026-04-18 |
| p2-32 | ✅ done | Replace hardcoded page enums with JSON data reads | tourguide | 2026-04-18 |
| p2-35 | ✅ done | Palace evolution system — longhouse → great_hall → citadel → grand_citadel + function-shedding | — | 2026-05-04 |
| p2-36 | ✅ done | Reconcile the 14 building IDs defined in both resources/buildings/ and data/buildings/ |
— | 2026-04-29 |
| p2-37 | ✅ done | "React calculator UI — surface flavor, lore, clan_affinity, archetype filter" | tourguide | 2026-04-27 |
| p2-38 | ✅ done | "Unit audio_cues stub strings — selection/move/attack lines for the dwarven roster" | asset-audio | 2026-04-27 |
| p2-39 | ✅ done | Resolve chronicle_hall phantom unlock in chronicle_keeping culture tech |
— | 2026-04-27 |
| p2-43 | ✅ done | "Culture research live-game pipeline — per-turn GDExt bridge + culture_researched emit" |
— | 2026-05-07 |
| p2-44 | ✅ done | AI promotion selection — auto-pick + emit unit_promoted for AI units | — | 2026-05-06 |
| p2-44a | ✅ done | "DataLoader path mismatch — get_promotion(\"trees\") returns empty" |
unassigned | 2026-05-06 |
| p2-44b | ✅ done | AI promotion dispatch — instrumentation pass to identify the silent gate | unassigned | 2026-05-06 |
| p2-45 | ✅ done | "Player elimination reconciliation — emit player_eliminated on every transition" |
— | 2026-04-30 |
| p2-46 | ✅ done | "Past-games archive & replay viewer — mc-replay crate, on-disk archive, projection-based playback" |
shipwright | 2026-05-07 |
| p2-47 | ✅ done | In-game statistics screens — Civ-style 5-tab modal (Demographics / Graphs / Rankings / Replay / Histories) | shipwright | 2026-06-23 |
| p2-48 | ✅ done | "End-of-game summary screen — outcome banner, standings, score graph, awards, timeline, footer actions" | shipwright | 2026-06-23 |
| p2-48a | ✅ done | End-of-game summary — GUT tests + headless proof scene | shipwright | 2026-06-22 |
| p2-49 | ✅ done | Climate axes refactor — latitude + continentality + zonal winds as first-class per-hex inputs | terraformer | 2026-04-30 |
| p2-50 | ✅ done | Deterministic RNG + seed-derivation pin across mc-mapgen / mc-climate / mc-ecology | terraformer | 2026-05-01 |
| p2-51 | ✅ done | Player-facing world-shape parameters on new-game screen | terraformer | 2026-05-01 |
| p2-52 | ✅ done | Split terrain enum into substrate × flora-cover layers (resolve biome ontology) | terraformer | 2026-05-01 |
| p2-53 | ✅ done | Action vocabulary — gap analysis between design page and shipped Rust/Godot game | wireguard | 2026-05-03 |
| p2-53a | ✅ done | Sentry/Guard ActionKind — add Sentry/Unsentry to mc-core with wake-on-vision | wireguard | 2026-05-01 |
| p2-53b | ✅ done | Building action registry — BuildingActionKind, building_actions.json, GdBuildingActions bridge |
simulator-infra | 2026-05-01 |
| p2-53c | ✅ done | Rally vocabulary expansion — Hold / Fortify / JoinFormation + two-waypoint Patrol | shipwright | 2026-05-01 |
| p2-53d | ✅ done | Building specifics — Garrison, Repair, Toggle Active + 18 archetype-specific actions | shipwright | 2026-05-03 |
| p2-53e | ✅ done | Siege handlers (Pack/Deploy/Bombard) + Pillage UI wiring + Embark/Disembark handlers | combat-dev | 2026-05-03 |
| p2-53f | ✅ done | Infantry specifics — Shield Wall, Brace, Shove, Rage, Cleave, War Cry | combat-dev | 2026-05-01 |
| p2-53g | ✅ done | Ranged specifics — Volley, Aimed Shot, Fire Arrows | combat-dev | 2026-05-03 |
| p2-53h | ✅ done | Cavalry specifics — Charge, Pursue, Wheel | combat-dev | 2026-05-03 |
| p2-53i | ✅ done | Support specifics — Engineer, Pioneer, Medic, Scout | shipwright | 2026-05-03 |
| p2-54 | ✅ done | Resource visibility — three-axis (visibility/yield_gate/improvement_gate) refactor | terraformer | 2026-05-02 |
| p2-54a | ✅ done | Migrate deposits/*.json to three-axis visibility schema | terraformer | 2026-05-01 |
| p2-54b | ✅ done | Per-player tile observation cache — flora/fauna last-observed state | terraformer | 2026-05-01 |
| p2-54c | ✅ done | Renderer reads observations + indicator decorations for tech-gated resources | terraformer | 2026-05-01 |
| p2-54d | ✅ done | AI tech-priority bias from visible-but-gated luxuries + indicator decorations | terraformer | 2026-05-01 |
| p2-55 | ✅ done | "Civilian Capture / Destroy / Ransom" | combat-dev | 2026-05-14 |
| p2-55a | ✅ done | "Engineer (Great Person) capture mechanics" | combat-dev | 2026-05-14 |
| p2-55b | ✅ done | "Caravan master capture mechanics" | combat-dev | 2026-05-14 |
| p2-55d | ✅ done | "AI ransom accept/refuse hook in mc-turn start-of-turn" | — | 2026-05-14 |
| p2-55e | ✅ done | "UnitRansomAccepted / UnitRansomExpired events on TurnResult" | — | 2026-05-03 |
| p2-56 | ✅ done | "Worker categories (Sustenance/Construction/Wealth) + 5-tier expertise + Master/Grandmaster auras + idle decay" | unassigned | 2026-06-03 |
| p2-56a | ✅ done | Worker category types — Sustenance / Construction / Wealth taxonomy | unassigned | 2026-05-04 |
| p2-56b | ✅ done | Expertise tier progression — 5-tier specialist XP ladder | simulator-infra | 2026-05-04 |
| p2-56c | ✅ done | Master / Grandmaster auras — adjacent-slot yield propagation | unassigned | 2026-05-07 |
| p2-57 | ✅ done | "Production-chain typed resources — raw → processed pipelines wired into mc-city" | unassigned | 2026-05-14 |
| p2-57a | ✅ done | Typed resource stockpile — raw vs processed taxonomy | unassigned | 2026-05-07 |
| p2-57b | ✅ done | Building consume/produce edges — stockpile coupled to unit quality | unassigned | 2026-06-23 |
| p2-57c-mc-units-quality-consumer | ✅ done | mc-units quality consumer — turn QualityTier into unit stat deltas (gives quality_chain a contract) | simulator-infra | 2026-06-23 |
| p2-58 | ✅ done | Ambient encounter rolls per tile moved — fauna_density × ecology_tier | unassigned | 2026-05-07 |
| p2-58a | ✅ done | "TileState fauna fields — fauna_density + fauna_index for AmbientTileCtx" | shipwright | 2026-05-07 |
| p2-58b | ✅ done | "Ambient encounter hook — mc-turn::movement calls roll_ambient_encounter per tile step" | unassigned | 2026-05-07 |
| p2-59 | ✅ done | Pioneer escort mechanic — protection rules vs ambient encounters | combat-dev | 2026-06-03 |
| p2-60 | ✅ done | "Weather / observation lens switcher in the Godot HUD" | wireguard | 2026-06-06 |
| p2-61 | ✅ done | "Bind mc-observation gate_bits to player tech state — recording gates per-field" | simulator-infra | 2026-05-14 |
| p2-62 | ✅ done | Procedural unit/building renderer — alpha-only visual substitute | asset-sprite | 2026-05-04 |
| p2-63 | ✅ done | "mc-flora generation: migrate biome filter to substrate_climate-aware path" | simulator-infra | 2026-05-13 |
| p2-64 | ✅ done | Apricot async batch protocol — launch / status / fetch decoupling | simulator-infra | 2026-05-07 |
| p2-65 | ✅ done | "Extract GameState and pending-queue data types into a dedicated mc-state crate" |
simulator-infra | 2026-06-23 |
| p2-66 | ✅ done | "World-map visual proof scene that actually renders" | terraformer | 2026-05-13 |
| p2-67 | ✅ done | "Claude-driven player API — programmatic player + Agent-SDK adapter" | simulator-infra | 2026-05-14 |
| p2-67-followup-legal-actions | ✅ done | "PlayerView.legal_actions — populate full per-unit / per-city / empire-level legal-action enumerators" | simulator-infra | 2026-05-11 |
| p2-67-followup-mcts-tactical-state-impl | ✅ done | "TreeState impl for TacticalState — wire real MCTS into the AI decision path" | simulator-infra | 2026-06-04 |
| p2-68 | ✅ done | "mc-ai headless turn driver — GameState projector/applicator + run_ai_turn" | simulator-infra | 2026-05-11 |
| p2-69 | ✅ done | "Port GdMcTreeController to mc-player-api AI driver (DRY consolidation)" | simulator-infra | 2026-05-11 |
| p2-70 | ✅ done | "mc-vision — per-player tile visibility producer (Rust)" | simulator-infra | 2026-05-11 |
| p2-71 | ✅ done | "Bench projector enrichment — make MCTS see a real tactical surface" | simulator-infra | 2026-05-11 |
| p2-71b | ✅ done | "Militarist starter widening — add a settler/founder unit so FoundCity fires" | simulator-infra | 2026-05-11 |
| p2-72 | ✅ done | GdPlayerApi → render bridge (visualise the API-held game world) | simulator-infra | 2026-06-23 |
| p2-72-option-b | ✅ done | "Option B render bridge — proof scene rehydrates GDScript from GdPlayerApi each turn" | simulator-infra | 2026-05-12 |
| p2-72a | ✅ done | "Make GdGameState the canonical render source" |
simulator-infra | 2026-06-23 |
| p2-72a-building-entity-port | ✅ done | Port NPC Building entity (lairs/villages/ruins) into Rust | simulator-infra | 2026-06-23 |
| p2-72a-pre-strip | ✅ done | "Strip Game 2/3 magic/ascension/ley fields from Game 1 runtime" | simulator-infra | 2026-05-12 |
| p2-72a-save-format-migration | ✅ done | Decouple save format from GDScript-class shape | simulator-infra | 2026-06-23 |
| p2-72b-promote-playerstate-cities-to-city | ✅ done | "Parallel-field cities synthesis at Godot bridge (Option C)" | simulator-infra | 2026-06-08 |
| p2-73-ui-theme-token-pipeline | ✅ done | "UI theme pipeline — generate ui_theme.tres from design-tokens.json + apply globally" | wireguard | 2026-06-06 |
| p2-74-ui-dehardcode-to-tokens | ✅ done | De-hardcode the Godot UI — route 45 scene scripts off raw Color() onto theme/tokens | wireguard | 2026-06-23 |
| p2-75 | ✅ done | Improvement-completion effects subsystem in Rust — move completion side-effects out of GDScript | — | 2026-06-23 |
| p2-76 | ✅ done | Bunker improvement — deposit-destroying fortified subterranean chamber | — | 2026-06-10 |
| p2-77 | ✅ done | Deposit-destruction environmental taxonomy — destruction_effect classes + contamination engine | — | 2026-06-23 |
| p2-78 | ✅ done | Runtime localized hydrology re-solve — in-game flow/basin-fill triggered by terraforming | — | 2026-06-23 |
| p2-79 | ✅ done | Environmental cascade integration — bunker → dam → flood/parch → flora dieback → fauna migration | — | 2026-06-23 |
| p2-81 | ✅ done | Improvement effects authored-but-unwired — move moisture/wind/erosion/movement to Rust | — | 2026-06-23 |
| p2-82 | ✅ done | Climate-input save-fidelity — persist (or re-derive) worldgen-static grid inputs across save/load | — | 2026-06-09 |
| p2-83 | ✅ done | Phase/round state machine + speculative parallel simulation of player-action-independent turn work | simulator-infra | 2026-06-23 |
| p2-84 | ✅ done | "Dev-only compute profiling — per-feature CPU/RAM/GPU cost over time, trigger-attributed, zero-cost in release" | simulator-infra | 2026-06-23 |
| p2-86 | ✅ done | Claude-player MCP — rendered driver mode (drive UI + capture screenshots) | simulator-infra | 2026-06-23 |
| p2-87-single-color-system-sot | ✅ done | "Single game-wide colour system — one source of truth, layered tokens, every consumer derives from it" | wireguard | 2026-06-23 |
Out of Scope (Game 2 / Game 3)
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.
| ID | Status | Title | Owner | Updated |
|---|---|---|---|---|
| p1-14 | ⚫ oos | Gate Game 2/3/4 magic-school content behind EpisodeGate (future-game scope) | — | 2026-04-17 |
| p2-55c | ⚫ oos | "Freepeople capture mechanics" | combat-dev | 2026-05-14 |
| g2-01 | ⚫ oos | Ley lines — Game 2 (Age of Kzzykt) | — | 2026-04-17 |
| g2-02 | ⚫ oos | Kzzykt playable race — Game 2 (Age of Kzzykt) | — | 2026-04-17 |
| g2-03 | ⚫ oos | Kzzykt Green school of magic — Game 2 (Age of Kzzykt) | — | 2026-04-17 |
| g2-04 | ⚫ oos | Multi-GPU sharding for batch_simulate_gpu — out-of-scope (Game 2) | warcouncil | 2026-04-17 |
| g2-11 | ⚫ oos | "Vertical city floor stack (Game 2) — OOS" | unassigned | 2026-06-06 |
| g2-12 | ⚫ oos | "Underground layer stack (Game 2) — OOS" | unassigned | 2026-06-06 |
| g2-12a | ⚫ oos | "Underground — N-layer data model + save format (Game 2) — OOS" | unassigned | 2026-06-06 |
| g2-12b | ⚫ oos | "Underground — worldgen for L1/L2/L3 + cavern terrain (Game 2) — OOS" | unassigned | 2026-06-06 |
| g2-12c | ⚫ oos | "Underground — excavation action + cavern lifecycle (Game 2) — OOS" | unassigned | 2026-06-06 |
| g2-12d | ⚫ oos | "Underground — cross-layer movement, connection points + pathfinding (Game 2) — OOS" | unassigned | 2026-06-06 |
| g2-12e | ⚫ oos | "Underground — per-layer fog of war + vision (Game 2) — OOS" | unassigned | 2026-06-06 |
| g2-12f | ⚫ oos | "Underground — structural integrity + cross-layer collapse (Game 2) — OOS" | unassigned | 2026-06-06 |
| g2-12g | ⚫ oos | "Underground — layer rendering + layer-switch UI (Game 2) — OOS" | unassigned | 2026-06-06 |
| g2-12h | ⚫ oos | "Underground — AI layer-awareness (Game 2) — OOS" | unassigned | 2026-06-06 |
| g3-01 | ⚫ oos | Archons — Game 3 (Age of Elves) | — | 2026-04-17 |
| g3-02 | ⚫ oos | Life school spellbook — Game 3 (Age of Elves) | — | 2026-04-17 |
| g3-03 | ⚫ oos | Death school spellbook — Game 3 (Age of Elves) | — | 2026-04-17 |
| g3-04 | ⚫ oos | Chaos school spellbook — Game 3 (Age of Elves) | — | 2026-04-17 |
| g3-05 | ⚫ oos | Aether school spellbook — Game 3 (Age of Elves) | — | 2026-04-17 |
| g3-06 | ⚫ oos | Arcane Ascension victory — Game 3 (Age of Elves) | — | 2026-04-17 |
| g4-01 | ⚫ oos | Terran (Human) playable species — Game 4 (Age of Terrans) | — | 2026-04-17 |
| g4-02 | ⚫ oos | Psionics ability system — Game 4 (Age of Terrans) | — | 2026-04-17 |
| g4-03 | ⚫ oos | Religious victory condition — Game 4 (Age of Terrans) | — | 2026-04-17 |
| g5-01 | ⚫ oos | Phantasma playable species — Game 5 (Age of Ascension) | — | 2026-04-17 |
| g5-02 | ⚫ oos | Flügel playable species — Game 5 (Age of Ascension) | — | 2026-04-17 |
| g5-03 | ⚫ oos | Gith playable species (Githyanki + Githzerai) — Game 5 (Age of Ascension) | — | 2026-04-17 |
| g5-04 | ⚫ oos | Demonia playable species — Game 5 (Age of Ascension) | — | 2026-04-17 |
| g6-01 | ⚫ oos | Naval combat — out-of-scope (post-v10) | — | 2026-04-26 |
| g6-02 | ⚫ oos | Caravan trade routes — out-of-scope (post-v10) | — | 2026-04-26 |
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.
| ID | Status | Title | Owner | Updated |
|---|---|---|---|---|
| p0-20d | ♻️ superseded | GPU MCTS wall-time gate — measure on real-discrete-GPU test host | warcouncil | 2026-05-05 |
| p1-30b | ♻️ superseded | "Parallel MCTS rollouts for huge-map decisive games (closes p1-22's huge-map sub-gate)" | warcouncil | 2026-05-05 |
| p2-23 | ♻️ superseded | Unit sprites — Dwarf-racial roster (m/f variants) | asset-sprite | 2026-06-23 |
| p2-24 | ♻️ superseded | "Unit sprites — wild creatures & fauna (generic, no race/sex)" | asset-sprite | 2026-06-23 |
| p2-25 | ♻️ superseded | Building sprites — base game coverage (non-wonder) | asset-sprite | 2026-06-23 |
| p2-26 | ♻️ superseded | "Mundane-wonder sprites — 24 distinct, higher-fidelity art" | asset-sprite | 2026-06-23 |
| p2-27 | ♻️ superseded | City population-tier sprites — city_q1 through city_q5 | asset-sprite | 2026-06-23 |
| p1-27d | ♻️ superseded | Add value_estimate_abstract GdMcTreeController method — non-lossy MCTS service caller |
warcouncil | 2026-04-25 |
| p2-17 | ♻️ superseded | Sprite assets — superseded index (split into p2-22 … p2-28) | asset-sprite | 2026-04-17 |
| p2-85 | ♻️ superseded | POI sprites + hover tooltips — lairs (and resources) legible on the map | asset-sprite | 2026-06-23 |