magicciv/.project/objectives/DASHBOARD_CATEGORIES.md
Natalie 0349a4e8fd chore(@projects/@magic-civilization): 🔧 .local→.lan mesh hosts + objectives dashboard sync
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 05:30:29 -05:00

68 KiB
Raw Blame History

Objectives — By Tag

Generated by @lilith/mcp-objectives — do not hand-edit. Active work is in README.md.

ai

ID Status Priority Title Owner Blocked
p0-26b 🟡 partial P1 Port _pick_research from GDScript into mc-ai (finish Rail-1 for the AI decision surface) warcouncil 🟢
p0-43 done P0 Formation AI — MCTS plans at formation level, not per-unit warcouncil 🟢
p1-29b done P1 AI tech tier gap — structural research path quality (low-pop AI fails to reach t1+) warcouncil 🟢
p1-29c done P1 Sole-city research path — lift trailing AI from tier_peak=1 to ≥2 warcouncil 🟢
p1-29e-rl-divergence-mining 🟡 partial P1 RL-policy divergence mining → sole-city economy break-out (production, not science) warcouncil 🟢
p1-29f done P1 learned:* controller bridge — make the trained RL policy playable in-engine simulator-infra 🟢
p1-29g 🟡 partial P1 Re-verify Game-1 AI quality gates trained-vs-scripted (and trained-vs-trained) warcouncil 🔒 p1-29k
p1-29k 🟡 partial P1 Drive learned:* controllers on the autoplay (auto_play.gd) gate surface simulator-infra 🟢

architecture

ID Status Priority Title Owner Blocked
p2-83 missing P2 Phase/round state machine + speculative parallel simulation of player-action-independent turn work simulator-infra 🟢

balance

ID Status Priority Title Owner Blocked
p1-29 done P1 Anti-early-domination: lift game-balance gates that p0-01 v1 measured combat-dev 🟢
p1-29a done P1 Last-stand defense — combat-strength multiplier when defender is at last city combat-dev 🟢
p1-29b done P1 AI tech tier gap — structural research path quality (low-pop AI fails to reach t1+) warcouncil 🟢
p1-29c done P1 Sole-city research path — lift trailing AI from tier_peak=1 to ≥2 warcouncil 🟢
p1-29e-rl-divergence-mining 🟡 partial P1 RL-policy divergence mining → sole-city economy break-out (production, not science) warcouncil 🟢
p1-29g 🟡 partial P1 Re-verify Game-1 AI quality gates trained-vs-scripted (and trained-vs-trained) warcouncil 🔒 p1-29k

batch

ID Status Priority Title Owner Blocked
p1-45 done P1 Batch binary freshness: rebuild GDExt before every autoplay batch simulator-infra 🟢

bridge

ID Status Priority Title Owner Blocked
p1-29k 🟡 partial P1 Drive learned:* controllers on the autoplay (auto_play.gd) gate surface simulator-infra 🟢

ci

ID Status Priority Title Owner Blocked
p1-45 done P1 Batch binary freshness: rebuild GDExt before every autoplay batch simulator-infra 🟢

combat

ID Status Priority Title Owner Blocked
p1-29a done P1 Last-stand defense — combat-strength multiplier when defender is at last city combat-dev 🟢

controller

ID Status Priority Title Owner Blocked
p1-29f done P1 learned:* controller bridge — make the trained RL policy playable in-engine simulator-infra 🟢
p1-29k 🟡 partial P1 Drive learned:* controllers on the autoplay (auto_play.gd) gate surface simulator-infra 🟢

determinism

ID Status Priority Title Owner Blocked
p2-83 missing P2 Phase/round state machine + speculative parallel simulation of player-action-independent turn work simulator-infra 🟢

dev-only

ID Status Priority Title Owner Blocked
p2-84 missing P2 Dev-only compute profiling — per-feature CPU/RAM/GPU cost over time, trigger-attributed, zero-cost in release simulator-infra 🟢

formation

ID Status Priority Title Owner Blocked
p0-43 done P0 Formation AI — MCTS plans at formation level, not per-unit warcouncil 🟢

gdext

ID Status Priority Title Owner Blocked
p1-45 done P1 Batch binary freshness: rebuild GDExt before every autoplay batch simulator-infra 🟢

infra

ID Status Priority Title Owner Blocked
p1-29f done P1 learned:* controller bridge — make the trained RL policy playable in-engine simulator-infra 🟢
p1-29k 🟡 partial P1 Drive learned:* controllers on the autoplay (auto_play.gd) gate surface simulator-infra 🟢

mcts

ID Status Priority Title Owner Blocked
p0-43 done P0 Formation AI — MCTS plans at formation level, not per-unit warcouncil 🟢

pacing

ID Status Priority Title Owner Blocked
p1-29 done P1 Anti-early-domination: lift game-balance gates that p0-01 v1 measured combat-dev 🟢
p1-29a done P1 Last-stand defense — combat-strength multiplier when defender is at last city combat-dev 🟢

perf

ID Status Priority Title Owner Blocked
p1-30 done P1 Optimize _build_tactical_state — 8000-tile GDScript dict-build per AI turn blocks p1-22 huge-map gate warcouncil 🟢

performance

ID Status Priority Title Owner Blocked
p2-83 missing P2 Phase/round state machine + speculative parallel simulation of player-action-independent turn work simulator-infra 🟢
p2-84 missing P2 Dev-only compute profiling — per-feature CPU/RAM/GPU cost over time, trigger-attributed, zero-cost in release simulator-infra 🟢

production

ID Status Priority Title Owner Blocked
p1-29e-rl-divergence-mining 🟡 partial P1 RL-policy divergence mining → sole-city economy break-out (production, not science) warcouncil 🟢

profiling

ID Status Priority Title Owner Blocked
p2-84 missing P2 Dev-only compute profiling — per-feature CPU/RAM/GPU cost over time, trigger-attributed, zero-cost in release simulator-infra 🟢

rail-1

ID Status Priority Title Owner Blocked
p0-26b 🟡 partial P1 Port _pick_research from GDScript into mc-ai (finish Rail-1 for the AI decision surface) warcouncil 🟢
p1-39 done P1 Port per-yield difficulty multipliers from GDScript into Rust crates (Rail-1) — research + culture warcouncil 🟢

rl

ID Status Priority Title Owner Blocked
p1-29e-rl-divergence-mining 🟡 partial P1 RL-policy divergence mining → sole-city economy break-out (production, not science) warcouncil 🟢
p1-29f done P1 learned:* controller bridge — make the trained RL policy playable in-engine simulator-infra 🟢
p1-29g 🟡 partial P1 Re-verify Game-1 AI quality gates trained-vs-scripted (and trained-vs-trained) warcouncil 🔒 p1-29k
p1-29k 🟡 partial P1 Drive learned:* controllers on the autoplay (auto_play.gd) gate surface simulator-infra 🟢

rust

ID Status Priority Title Owner Blocked
p0-26b 🟡 partial P1 Port _pick_research from GDScript into mc-ai (finish Rail-1 for the AI decision surface) warcouncil 🟢

rust-source-of-truth

ID Status Priority Title Owner Blocked
p1-39 done P1 Port per-yield difficulty multipliers from GDScript into Rust crates (Rail-1) — research + culture warcouncil 🟢

tactical-ai

ID Status Priority Title Owner Blocked
p1-30 done P1 Optimize _build_tactical_state — 8000-tile GDScript dict-build per AI turn blocks p1-22 huge-map gate warcouncil 🟢

tech

ID Status Priority Title Owner Blocked
p1-29b done P1 AI tech tier gap — structural research path quality (low-pop AI fails to reach t1+) warcouncil 🟢
p1-29c done P1 Sole-city research path — lift trailing AI from tier_peak=1 to ≥2 warcouncil 🟢
p1-29e-rl-divergence-mining 🟡 partial P1 RL-policy divergence mining → sole-city economy break-out (production, not science) warcouncil 🟢

tech-debt

ID Status Priority Title Owner Blocked
p0-26b 🟡 partial P1 Port _pick_research from GDScript into mc-ai (finish Rail-1 for the AI decision surface) warcouncil 🟢

telemetry

ID Status Priority Title Owner Blocked
p2-84 missing P2 Dev-only compute profiling — per-feature CPU/RAM/GPU cost over time, trigger-attributed, zero-cost in release simulator-infra 🟢

tooling

ID Status Priority Title Owner Blocked
p1-45 done P1 Batch binary freshness: rebuild GDExt before every autoplay batch simulator-infra 🟢
p2-84 missing P2 Dev-only compute profiling — per-feature CPU/RAM/GPU cost over time, trigger-attributed, zero-cost in release simulator-infra 🟢

turn-phasing

ID Status Priority Title Owner Blocked
p2-83 missing P2 Phase/round state machine + speculative parallel simulation of player-action-independent turn work simulator-infra 🟢

verification

ID Status Priority Title Owner Blocked
p1-29g 🟡 partial P1 Re-verify Game-1 AI quality gates trained-vs-scripted (and trained-vs-trained) warcouncil 🔒 p1-29k

worldsim

ID Status Priority Title Owner Blocked
p2-83 missing P2 Phase/round state machine + speculative parallel simulation of player-action-independent turn work simulator-infra 🟢

(untagged)

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