Purpose
Build tactical AI as authored doctrine plus planner, utility, micro, and compact adaptation layers while keeping runtime behavior deterministic and explainable.
This page reviews the roadmap for making Omega War's tactical AI a doctrine-constrained commander system with explainable adaptation, offline-only neural exploration, and deterministic browser runtime behavior.
Status: review. The Markdown artifact has been written and the tactical experiment plan has been amended so EXP-08 targets a doctrine-aware Soviet commander contract instead of a larger one-off FSM.
Continuation command: $create-alignment-page research/unthinkable/doctrine-aware-ai-roadmap.md
Implementation boundary: this is architecture and experiment planning. Runtime neural networks, cloud player modeling, and automatic promotion of offline-discovered behavior remain deferred.
Build tactical AI as authored doctrine plus planner, utility, micro, and compact adaptation layers while keeping runtime behavior deterministic and explainable.
Offline ML/simulation may tune weights and discover candidates, but the browser runtime consumes distilled rules and data tables only.
EXP-08 should upgrade the Soviet opponent first, then reuse the framework for UK spectator AI and later campaign commanders.
| Date | 2026-07-02 |
|---|---|
| Product path | unthinkable |
| Topic | doctrine-aware-ai |
| Status in source | active architecture roadmap |
| Primary prototype target | prototypes/unthinkable/tactical-battle/playable-battle/ |
| Review page path | alignment/doctrine-aware-ai-roadmap.html |
The roadmap uses repo-local design, prototype, and test artifacts. It treats the current FSM-style AI as useful baseline evidence, not the final architecture.
| Source | Use In Roadmap |
|---|---|
research/unthinkable/tactical-vertical-slice-spec.md | First playable battle target, baseline AI obligations, save/pause requirement, and browser prototype boundary. |
research/unthinkable/tactical-battle-experiment-plan.md | EXP-08, EXP-10, EXP-13, and EXP-14 implementation route. |
prototypes/unthinkable/tactical-battle/playable-battle/js/spectator-ai.js | Current explainable declarative-FSM commander baseline. |
prototypes/unthinkable/tactical-battle/playable-battle/tests/headless-sim.js | Headless safety, determinism, AI log projection, save/reload, and AI-vs-AI expectations. |
research/unthinkable/divisions-1945.md and research/unthinkable/proposed-divisions-and-decks-roster.md | Force identity and roster context for Soviet 2nd Guards and UK 11th Armoured doctrine profiles. |
The runtime AI should be layered: doctrine profile, general personality, difficulty profile, commander planner, tactical utility layer, and unit micro layer. Doctrine is the boundary: the AI may improve within doctrine, but it must not converge into generic optimal RTS behavior.
Prefers mass, echelon pressure, armor exploitation, artillery preparation, and shock commitment. Penalizes early unsupported shock, hidden-vision counters, unsupported armor trickles, and repeated one-lane failures.
Prefers combined arms, recon, deliberate armor commitment, artillery observation, and air support. Penalizes blind armor rushes, static camping under capture pressure, and perfect reactions to unseen concentrations.
The roadmap introduces three serializable contracts: AiCommanderProfile, AiIntentState, and AiDoctrineProfile. These must survive save/reload and support deterministic AI-vs-AI tests.
| Contract | Required Content | Why It Matters |
|---|---|---|
AiCommanderProfile | side, forceId, doctrineId, personalityId, difficultyId, planWeights, riskKnobs, adaptationSettings, seed. | Defines who the commander is and which bounded adaptations are legal. |
AiIntentState | Current plan, plan reason, target objectives, build step, group assignments, known player habits, adaptation memory, last adaptation reason, cooldowns, and log. | Extends the current AI log model into saveable commander state. |
AiDoctrineProfile | Allowed plans, preferred categories, phase priorities, historical bias weights, risk limits, forbidden behaviors, penalized behaviors, fallback behaviors, and adaptation boundaries. | Prevents learning and utility scoring from violating faction identity. |
Runtime learning memory stores compact labels such as player overuses center rush, ignores flank, delays anti-armor, punishes unsupported armor, or AI artillery fired with poor effect. Each signal carries count, confidence, last observed time, decay/cooldown, and a short evidence note.
Every adaptive change must emit a readable log entry. The player should be able to inspect why the commander shifted plan or timing without seeing hidden omniscience.
| Difficulty | Behavior Contract |
|---|---|
| Easy | Slower reactions, conservative attacks, weaker adaptation memory, more readable telegraphs, forgiving retreat and reserve behavior. |
| Normal | Doctrine-faithful plan switching, fair scouting, moderate retreats, basic counter-adaptation, honest command-post and phase gating. |
| Hard | Better timing, stronger grouping, better target priority, faster recovery, richer player-habit counters, but still no impossible economy or unbounded hidden vision. |
No difficulty level grants unbounded hidden vision, impossible economy, instant perfect counters, invisible late powers, or hidden prerequisite skips.
AiCommanderProfile, AiDoctrineProfile, AiIntentState, and adaptation logs.| Experiment | Required AI-Roadmap Implication |
|---|---|
| EXP-08 Baseline AI Loop | Upgrade scope to doctrine-aware commander contract for the Soviet opponent. |
| EXP-10 Save/Pause/Reload | Include commander profile, intent state, adaptation memory, and cooldowns in battle snapshots. |
| EXP-11 Performance Ceiling Probe | Track AI think cost, group-assignment cost, and utility-evaluation count. |
| EXP-13 First Compiled Skirmish Thread | Use the doctrine-aware Soviet profile if accepted; otherwise keep the old FSM as fallback and log the gap. |
| EXP-14 Full Prototype Assembly | Validate difficulty, adaptation, doctrine constraints, and anti-oppression guardrails. |
| Claim | Evidence | Inference | Confidence | Decision Impact |
|---|---|---|---|---|
| AI must remain explainable and saveable. | Vertical-slice spec requires save/pause; headless tests assert deterministic runs, save/reload, and AI log projection. | Opaque runtime learning would undermine current prototype constraints. | High | Use serializable profiles, intent state, logs, and compact memory. |
| A flat FSM is useful but insufficient long-term. | spectator-ai.js uses declarative FSM states and logs. | The current style is debuggable, but doctrine/personality/difficulty/adaptation are not separated as stable contracts. | Medium-high | Promote the explainable parts into layered contracts. |
| Doctrine must bound adaptation. | Roster and division docs establish distinct Soviet and UK force identity; user intent explicitly rejects generic optimal cheese. | Self-improvement without constraints risks erasing faction identity and historical boundedness. | High | Author AiDoctrineProfile before broad adaptation. |
| Offline ML is acceptable only as distilled data. | Browser-first prototype and determinism expectations make runtime neural behavior unnecessary and risky. | Simulation can help tune values without shipping opaque models. | Medium-high | Defer runtime neural networks and require human-reviewed distilled outputs. |
| Path | Status | Purpose |
|---|---|---|
research/unthinkable/doctrine-aware-ai-roadmap.md | New source artifact | Canonical doctrine-aware AI architecture roadmap. |
alignment/doctrine-aware-ai-roadmap.html | New review page | This review surface with gates and full source rendering. |
research/unthinkable/tactical-battle-experiment-plan.md | Existing source amended | EXP-08 now points at the doctrine-aware commander contract. |
tasks/todo.md | Existing checklist amended | EXP-08 and EXP-10 implementation notes now include AI roadmap contracts. |
alignment/index.html | Existing index amended | Adds this review page to the central alignment index. |
Approve whether the roadmap should treat AI as doctrine profile plus planner, utility, micro, and compact memory layers.
Approve whether runtime learning should be limited to compact explainable signals and offline ML should ship only as distilled data.
Approve whether EXP-08 should be amended to implement the first Soviet doctrine-aware commander contract.
The structured review sections above render the decision-relevant content. The full source artifact is included below verbatim so the page contains the complete deliverable.
# Doctrine-Aware Self-Improving AI Roadmap Date: 2026-07-02 Product path: `unthinkable` Topic: `doctrine-aware-ai` Status: active architecture roadmap Primary prototype target: `prototypes/unthinkable/tactical-battle/playable-battle/` ## Purpose Omega War should build tactical AI as a doctrine-constrained commander system, not as a runtime neural network and not as a larger flat finite-state machine. The runtime AI must remain deterministic, serializable, explainable, and bounded by authored faction-era doctrine. Neural-network or reinforcement-learning work is allowed only offline for now. Offline simulations may discover useful weights, plan timings, counter-rules, build orders, difficulty curves, and failure cases. Shipped browser runtime behavior should consume distilled data tables, utility weights, and authored rules. ## Current Gap The current tactical AI direction is explainable, but too flat. A single commander FSM can capture scripted pressure and readable logs, yet it does not separate doctrine, general personality, difficulty, player adaptation, plan selection, tactical utility, and unit micro. ## Architecture Direction Runtime AI should be layered: doctrine profile, general personality, difficulty profile, commander planner, tactical utility layer, and unit micro layer. Doctrine is the boundary, not flavor text. AI may improve within doctrine; it must not converge into generic optimal RTS cheese. ## Doctrine Baselines Soviet 2nd Guards should prefer mass, echelon pressure, armor exploitation, artillery preparation, and shock commitment. UK 11th Armoured should prefer combined arms, recon, deliberate armor commitment, artillery observation, and air support. ## Serializable Runtime Contracts `AiCommanderProfile` stores side, force id, doctrine id, personality id, difficulty id, plan weights, risk knobs, adaptation settings, and seed. `AiIntentState` stores current plan, plan reason, target objectives, build step, group assignments, known player habits, adaptation memory, last adaptation reason, cooldowns, and log. `AiDoctrineProfile` stores allowed plans, preferred unit categories, phase priorities, historical bias weights, risk limits, forbidden behaviors, penalized behaviors, fallback behaviors, and adaptation boundaries. ## Learning Memory Runtime learning memory stores only compact, explainable signals: player overuses center rush, player ignores flank, player delays anti-armor, player punishes unsupported armor, AI lost too many units during probes, artillery fired with poor effect, command-post defense arrived too late, or reserve budget was too low after Phase B. Every adaptive change must emit a log entry. ## Self-Improvement Modes Mode 1: doctrine-bounded tuning. Mode 2: player-specific adaptation. Mode 3: offline open-ended exploration distilled into data. ## Difficulty And Fun Rules Difficulty tunes competence, not cheating. Easy slows reactions and weakens adaptation. Normal uses doctrine-faithful plan switching and fair scouting. Hard improves timing, grouping, target priority, recovery, and player-habit counters without hidden omniscience or impossible economy. ## Implementation Path Phase 0 amends EXP-08 around the AI contracts. Phase 1 upgrades the Soviet opponent. Phase 2 reuses the framework for UK spectator AI. Phase 3 adds an offline tuning harness. ## Test Plan Create AI-vs-script and AI-vs-AI scenario tests for near-point capture, center contest, honest escalation, damaged-unit retreats, command-surface defense, repeated center-rush adaptation, repeated flank-play adaptation, and doctrine constraint enforcement. ## Acceptance Criteria AI feels less exploitable after repeated play. AI decisions remain explainable in logs. AI still looks like its faction and commander. AI can lose without collapsing into one-lane stupidity. Difficulty increases competence without hidden omniscience or impossible economy. No runtime neural model is required for the browser prototype. Save/reload preserves commander profile, intent state, adaptation memory, cooldowns, and log context.
Answer any gate question, then compile YAML to send back to the agent. Complete approval requires every gate answered with no unresolved negative or clarification feedback.