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>
2.4 KiB
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 |
|
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 thep1-60fairness 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