magicciv/.project/objectives/g2-12h-ai-layer-awareness-oos.md
Natalie 2de6051c5f chore(objectives): fix Game-1 owner integrity + flesh out underground (g2-12) cluster
Game-1 dashboard fix: reassign 5 objectives off specialist-agent names
onto valid team-leads so objectives-report.py regenerates (it aborts on
any owner lacking a .project/team-leads/<owner>.md identity):
  p1-61 game-data->terraformer, p1-57 game-systems->envoy,
  p2-73/p2-60/p2-74 godot-engine|godot-ui->wireguard.

Underground (Game 2, stays OOS): decompose g2-12 umbrella into 8 ordered
phase objectives g2-12a..h (data model+save, worldgen, excavation, cross-
layer movement+pathfinding, per-layer fog, collapse, layer UI, AI
awareness); g2-11 blocked_by tightened to [g2-12a, g2-12c].

Dashboard regenerated: 319 objectives, README.md + objectives.json.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:24:32 -07:00

2.4 KiB

id title priority status scope category owner created updated_at blocked_by follow_ups
g2-12h Underground — AI layer-awareness (Game 2) — OOS p3 oos game2 ai unassigned 2026-06-06 2026-06-06
g2-12a
g2-12c
g2-12d
g2-12e

Context

The AI (mc-ai) has zero layer concept today — its encoder and tactical search operate on the single surface grid. Once the layer stack exists, AI that never excavates, descends, or defends underground would be trivially exploitable (tunnel under it, bypass its territory, take undefended underground resources). This phase makes the Rust AI layer-aware — or, if deferred, records an explicit, tested surface-only limitation.

Acceptance (Game 2)

  • AI state encoder includes per-layer features (own/enemy presence per layer, excavated extent, connection points, deep ore veins) — extends the encoder in docs/ai-production.md.
  • Tactical search (mc-ai) can choose excavation, descent/ascent via connection points, and cross-layer movement; strategic layer evaluates underground expansion (deep ore veins, deep-warren city tiers) vs surface.
  • AI defends its underground (garrisons connection points / responds to enemy units detected on a non-surface layer) rather than ignoring it.
  • Fog fairness holds per layer: AI consumes the same per-(player,layer) projected vision a human gets (g2-12e) — no omniscient cross-layer sight (extends the p1-60 fairness contract).
  • Validation: AI-vs-AI batch on a layer-stack map shows non-zero excavation + cross-layer activity and no invariant violations; OR an explicit "AI is surface-only for vN" limitation documented + a regression test asserting AI never illegally acts off its layer.

Source-of-truth rails

  • Rust crate: mc-ai (encoder + tactical/strategic search), mc-player-api (per-layer projection feeding the controller). Rail 1: all AI decisions stay in Rust behind the controller registry.
  • JSON path: AI tuning via ai_personalities.json (underground appetite per clan).
  • mc-core wrapper: consumes LayerIndex-keyed state from earlier phases.

Out of scope (for any milestone)

  • Game 1 AI (surface-only) unchanged — this only applies when the layer stack ships.

References

  • docs/ai-production.md, docs/ai-roadmap.md
  • Related: p1-60 (AI fog fairness), controller registry (mc_player_api::controllers)
  • Parent: g2-12 · Blocked by: g2-12a, g2-12c, g2-12d, g2-12e