Purpose
The plan converts approved tactical vertical-slice requirements into small localized file:// HTML experiments. Each experiment isolates one risky runtime behavior and defines a compile contract.
This review page renders the tactical battle experiment roadmap directly in HTML so the plan can be approved, revised, or sent back with targeted section feedback before runtime experiments begin.
Status: review. The Markdown artifact already exists and this page asks whether the roadmap should stand as the approved experiment plan, whether the path and file-scope are acceptable, and whether the next route should begin with EXP-01.
Continuation command: $create-alignment-page research/unthinkable/tactical-battle-experiment-plan.md
Revision note: The sequence map was amended after section feedback to add Phase C losing-side command-post discount evaluation and to make anti-sandbagging threshold caveats explicit for both Phase B and Phase C.
The plan converts approved tactical vertical-slice requirements into small localized file:// HTML experiments. Each experiment isolates one risky runtime behavior and defines a compile contract.
Code promotes into playable-battle/ only after the source experiment meets acceptance and passes a local browser smoke test.
The plan keeps UK/Commonwealth 11th Armoured vs Soviet 2nd Guards Tank Army, Conquest of Helmstedt, browser-first RTS, fixed decks, command-post escalation, five capture points, cover, suppression, AI, save/reload, and performance evidence.
| Date | 2026-07-01 |
|---|---|
| Product path | unthinkable |
| Topic | tactical-battle |
| Status in source | active experiment roadmap |
| Prototype root | prototypes/unthinkable/tactical-battle/ |
| Review page path | alignment/tactical-battle-experiments.html |
The plan uses repo-local sources only. The review page preserves the distinction between observed prototype coverage and inferred implementation gaps.
| Source | Use In Plan |
|---|---|
research/unthinkable/tactical-vertical-slice-spec.md | Fixed battle contract, cover/suppression/capture rules, command-post unlocks, AI/save/performance/UI contracts, fixture scope, explicit deferrals, prototype acceptance checklist. |
research/unthinkable/game-prototype-test.md | Smallest valid playable scope, playtest script, observation checklist, success/concern/fail criteria, browser resilience and performance expectations. |
prototypes/unthinkable/tactical-battle/index.html | Current hub showing built Deployment Plan, Soviet Deployment Plan, Tactical Entry Demo, After Action Demo, and deferred sibling UX concepts. |
design/unthinkable/prototype-build-plan-tactical-battle.md | Confirms the current prototype ledger is pre-battle planning plus static in-battle examples, not a live tactical runtime. |
Current prototype files under prototypes/unthinkable/tactical-battle/ | Verified current coverage is file:// HTML, with deployment-plan data/queue work and static tactical-entry/after-action examples. |
The current gap is live runtime proof. Existing artifacts cover pre-battle planning and static example states, but not the integrated tactical simulation.
| Required Slice Behavior | Current Coverage | Status | Experiment Coverage |
|---|---|---|---|
| Player can complete one battle from start to win/loss. | No integrated battle runtime. Static entry and after-action demos imply stages but do not simulate a complete battle. | Missing | EXP-13, EXP-14 |
| Fixed UK and Soviet decks deploy Phase A/B/C units. | Planning data and queue exist for both decks; no runtime spawn adapter. | Partial | EXP-05, EXP-06, EXP-13, EXP-14 |
| Camera, unit selection, box select, and order intent support RTS control. | Not present in current hub or demos. | Missing | EXP-01 |
| Groups move across a tactical map with readable destination intent. | Static map markers only. | Missing | EXP-02 |
| Cover states alter infantry outcomes visibly. | Static labels mention light/heavy cover; no combat outcome model. | Partial | EXP-03, EXP-07 |
| Suppression states alter behavior visibly. | Static pinned Rifle Section example exists; no pressure state machine. | Partial | EXP-03, EXP-07 |
| Capture points affect resources and victory pressure. | Five points are shown in static examples; no ownership, contest, income, or command-score drain. | Partial | EXP-04 |
| Command-post construction gates deck availability. | Planning and static Motor Pool unlock examples exist; no build-progress runtime or phase events. | Partial | EXP-06 |
| Baseline AI captures, escalates, attacks, defends, preserves units, and can lose. | No tactical AI runtime. | Missing | EXP-08, EXP-13, EXP-14 |
| Tactical UI shows selected units, phase, command posts, resources, deployables, minimap/status. | Planning UI and static HUD examples exist; no read-only projection from runtime state. | Partial | EXP-09 |
| Pause, manual save, visibility autosave, reload, and restart preserve battle state. | Deployment-plan build-order string save exists; no battle-state serialization. | Partial | EXP-10 |
| Browser performance is measured against a declared unit ceiling. | No active battle performance probe. | Missing | EXP-11 |
| UK Centurion and Soviet IS-3 commitments are gated, telegraphed, and answerable. | Cards and static locks exist; no runtime prerequisites, warning, or activation. | Partial | EXP-12 |
| Fixture data maps cleanly to schema or records exceptions. | Unit schema and deck data exist; runtime UnitInstance and adapter exceptions are not proven. | Partial | EXP-05, EXP-13, EXP-14 |
| Moderator-ready 15-25 minute Conquest of Helmstedt playtest. | Test plan exists; no playable battle. | Missing | EXP-14 |
Every required item from the prototype-test plan maps to an experiment or explicit deferral.
| Prototype-Test Item | Mapping |
|---|---|
| One fixed map with five capture points. | EXP-04 proves capture ownership and score pressure; EXP-13 integrates; EXP-14 scales to the approved battle. |
| Open, light cover, heavy cover. | EXP-03 isolates cover; EXP-07 consumes cover in combat tick. |
| Normal, pressured, suppressed, pinned infantry states. | EXP-03 isolates the state machine; EXP-07 consumes it in combat. |
| Minimal vehicle shock equivalent. | EXP-07 adds a lightweight destroyed/retreat/shaken combat outcome if needed for artillery/air pressure. |
| Fixed UK and Soviet Phase A/B/C fixtures. | EXP-05 adapts existing planner data into runtime units; EXP-06 gates availability. |
| Command-post surfaces unlock Phase B, support, and Phase C. | EXP-06 isolates the unlock chain; EXP-13/EXP-14 integrate it. |
| One UK and one Soviet wonder candidate, telegraphed and gated. | EXP-12. |
| Baseline AI captures, contests, escalates, preserves units, and gates late powers honestly. | EXP-08, then EXP-13/EXP-14. |
| Pause, manual save, autosave, reload, restart. | EXP-10, then EXP-14 save/reload drill. |
| Lightweight instrumentation for completion, loss reason, build order, command-post timings, save/reload success, unit ceiling, frame time, and notes. | EXP-11 handles frame/unit/order/combat-pair logging; EXP-10 handles save/reload success; EXP-14 adds battle-level completion/loss/build-order timings. Interview notes remain a moderated playtest artifact, not an HTML mechanic. |
| Playtest script from opening to finish. | EXP-14 only; earlier experiments are localized proofs and should not be judged as full playtest builds. |
| Post-session interview and cohort pass/concern/fail criteria. | Explicitly deferred until EXP-14 produces a moderated-test candidate. Keep these in game-prototype-test.md; do not embed interview workflow in localized mechanic pages. |
prototypes/unthinkable/tactical-battle/experiments/{id}/index.html, except the compiled battle milestones, which use prototypes/unthinkable/tactical-battle/playable-battle/index.html.file:// browser smoke test.UnitInstance, command-post state, AI intent, and battle snapshots only when their contracts are stable enough for save/reload.Updated: The battle needs an approved player-visible macro flow before EXP-01 implementation begins. Default phase behavior: Phase B and Phase C arrive on timers with warnings, transition popups, and command-post catch-up discount evaluation for the losing side, but actual deployable unit availability remains gated by built command posts unless a later approval changes the core spec. The prototype discount policy must include an anti-sandbagging guard: being below the score threshold is not enough by itself if the side is in a dominant battlefield position, so EXP-06 should expose the score, capture/control, unit, and command-post-state inputs used to decide whether the discount is legitimate instead of gameable.
| Stage | Player-Visible Surfaces | Runtime State/Events | Experiment Coverage |
|---|---|---|---|
| Loading | Splash screen with map name, objective, asset/loading indicators, and player-state sync status. | Asset prep, map load, deck/deployment-state hydration, save/new-battle state selection, readiness event. | EXP-09 HUD/state projection, EXP-14 full assembly. |
| Deployment | Player is oriented on the tactical map; deployment zones, roads, air corridors, queued units, Deploy lock button, and timer fallback are visible. | Deployment plan is validated, units are placed or queued onto roads/air corridors, lock/timer emits a deployment commit event. | EXP-05 spawn adapter, EXP-09 HUD, EXP-13/EXP-14 integration. |
| Initial mobilization | Units arrive from off-map roads or air corridors and become controllable as soon as they enter the playable map. Movement defaults to Fast move, prefers roads, and cuts off-road only when needed. | Spawn adapter creates stable UnitInstance records with arrival routes, initial orders, road preference, and player-control transition. | EXP-05 spawn adapter, EXP-02 movement readability, EXP-09 HUD, EXP-13/EXP-14 integration. |
| Phase A combat | Player selects, moves, captures, fights, builds command posts, and reacts to AI pressure. | Core runtime owns orders, movement, cover/suppression, capture/resource/victory pressure, command-post progress, AI intent, combat events, and HUD projection. | EXP-01 through EXP-09, EXP-13 first compiled skirmish. |
| Phase B transition | Warning appears before the timer; transition popup declares Phase B; losing-side catch-up command-post discounts are evaluated with anti-sandbagging threshold caveats; availability still requires the relevant command post. | Phase timer event, warning event, popup acknowledgement, discount policy result with score-threshold plus battlefield-control guard, command-post-gated availability refresh. | EXP-06 command-post unlock chain, EXP-09 HUD, EXP-14 assembly. |
| Phase B combat | Expanded command-post options, support surfaces, deployments, AI pressure, and save/performance instrumentation continue under the same runtime. | Continued command-post build state, roster filter, resources, capture pressure, AI escalation, save snapshots, perf rows. | EXP-06, EXP-08, EXP-09, EXP-10, EXP-11, EXP-13/EXP-14. |
| Phase C transition/wonders | Warning and phase popup include losing-side catch-up command-post discount evaluation with the same anti-sandbagging threshold caveats, then lead into an all-player declaration popup showing brought wonder commitments, prerequisites, warning, and counterplay context. | Phase C event, discount policy result with score-threshold plus battlefield-control guard, wonder declaration event, prerequisite checklist, telegraph/counterplay state, command-post availability gate. | EXP-06 transition support, EXP-12 wonders, EXP-14 assembly. |
| Resolution | Victory/defeat banner with buttons to placeholder future Results Screen and Replay System. | Win/loss state, completion reason, local log finalization, results/replay placeholder handoff events. | EXP-13/EXP-14 placeholders only. |
The roadmap contains EXP-00 through EXP-14. EXP-00 is satisfied by the gap matrix in the artifact; EXP-01 through EXP-14 are implementation work.
| ID | Goal | Prototype Path | Inputs Reused | Isolated Mechanic | Compile Contract | Acceptance Criteria | What Not To Solve |
|---|---|---|---|---|---|---|---|
| EXP-00 Gap Matrix | Compare the approved vertical-slice spec, prototype-test plan, and current prototype hub; produce the required behavior coverage matrix. | prototypes/unthinkable/tactical-battle/experiments/exp-00-gap-matrix/index.html if a visual review page is needed; canonical matrix lives in this artifact. | research/unthinkable/tactical-vertical-slice-spec.md, research/unthinkable/game-prototype-test.md, prototypes/unthinkable/tactical-battle/index.html, design/unthinkable/prototype-build-plan-tactical-battle.md. | Planning coverage only: built, partial, missing, deferred. | The matrix maps each prototype-test acceptance item to one or more experiment IDs or to an explicit deferral. | Every tactical prototype-test acceptance item maps to at least one experiment or explicit deferral; current prototype coverage is classified without marking static examples as live runtime coverage. | Do not build runtime code, create UI polish, or change existing prototypes. |
| EXP-01 Camera And Selection Controls | Build a simple RTS map viewport with pan, zoom, unit selection, box select, and right-click move intent. | prototypes/unthinkable/tactical-battle/experiments/exp-01-camera-selection/index.html | Current tactical-entry map layout, game-prototype-test.md opening flow, RTS real-time pacing from docs. | Input and camera model only. | selectedUnitIds, cameraState, and append-only issuedOrders with order id, unit ids, order type, target point, and issued timestamp. | Player can pan and zoom without losing the battlefield, select one unit, box-select multiple units, and issue right-click move intent with a visible marker. | Do not solve pathfinding quality, combat, cover, capture logic, AI, save/reload, or final UI polish. |
| EXP-02 Unit Movement And Formation Readability | Prototype selected groups moving across a 2D/2.5D tactical map with collision-light spacing and destination markers. | prototypes/unthinkable/tactical-battle/experiments/exp-02-unit-movement-formation/index.html | EXP-01 input model, tactical-entry map landmarks, provisional unit roles from planner card data. | Movement interpolation, facing, order state, spacing, and destination readability. | UnitInstance runtime shape: id, side, card id, position, facing, speed, radius, current order, selected flag, and order progress. | Player can issue move orders to multiple units and understand where they are going; units separate enough to be readable and do not stack into one marker; default mobilization can show Fast move, road preference, and off-road cuts when needed without promising final pathfinding quality. | Do not solve combat, pathfinding optimality, full terrain costs, capture, AI, or transport mount/dismount. |
| EXP-03 Cover And Suppression Microfight | Build a small infantry firefight across open ground, light cover, and heavy cover with normal, pressured, suppressed, and pinned states. | prototypes/unthinkable/tactical-battle/experiments/exp-03-cover-suppression-microfight/index.html | Vertical-slice cover/suppression rules, current infantry card names, static pinned/cover examples from tactical-entry and after-action demos. | Cover query plus suppression state machine. | coverAt(point, facing?), suppressionTick(unit, incomingPressure, dt), and suppression states that alter movement/fire intent. | Cover visibly changes outcomes, and suppression changes behavior without requiring explanatory text; open-ground units break faster than covered units under the same fire. | Do not solve full weapon catalog, armor, capture, command posts, AI strategy, or final combat balance. |
| EXP-04 Capture Points And Score Pressure | Build five capture points with ownership, contesting, resource income, and command-score drain. | prototypes/unthinkable/tactical-battle/experiments/exp-04-capture-score-pressure/index.html | Five-point map contract from the spec, Conquest win condition, tactical-entry static point layout. | Capture-point state, contest math, income tick, and victory pressure. | CapturePointState, incomeTick(state, dt), and victoryPressureTick(state, dt) with command-score deltas. | Holding center matters, side points still matter, and the player can read ownership, contesting, income, and command-score pressure. | Do not solve combat detail, command-post construction, full AI, or final economy numbers. |
| EXP-05 Deployment Queue To Runtime Spawn | Convert a small subset of the existing Deployment Plan queue into Phase A runtime spawns, including deployment lock/timer commit and off-map road or air-corridor arrival seeds. | prototypes/unthinkable/tactical-battle/experiments/exp-05-deployment-spawn-adapter/index.html | deployment-plan-first/js/data.js, deployment-plan-soviet/js/data.js, queue encode/decode concepts, unit-data schema, Phase A card rows. | Adapter from planner card/queue data into runtime units. | spawnUnitsFromDeploymentPlan(plan, side, phase) returns stable UnitInstance ids, source card ids, deployment-zone placement or queued arrival route, initial positions, initial orders, and transport/passenger seed state where applicable. | At least 3 UK and 3 Soviet Phase A entries spawn with stable identity and initial orders; deployment lock/timer commit is represented; repeated spawn from the same input does not duplicate ids or mutate authored card data. | Do not solve full deck builder, all card rows, transport remount, combat, AI, or final deployment balance. |
| EXP-06 Command-Post Unlock Chain | Prototype Forward Command Post, Assembly Area, Motor Pool/Tank Park, Artillery/Air support surfaces, and Advance Command Post as visible build progress, timer phase transitions, warnings, popups, catch-up discount evaluation, and command-post-gated availability. | prototypes/unthinkable/tactical-battle/experiments/exp-06-command-post-unlock-chain/index.html | Vertical-slice command-post table, Deployment Plan unlock language, tactical-entry Motor Pool example, unit-data schema command-post/wonder-slot rules. | Command-post state, build queue, timer phase warning/transition events, catch-up discount policy, roster availability filter. | CommandPostState, buildCommandPost(kind), commandPostTick(dt), phaseUnlockEvents, phaseWarningEvents, catchUpDiscountState, and availableCards(deck, commandPostState). | Phase B/C transition warnings and popups are legible; losing-side catch-up discounts can be evaluated with score-threshold and battlefield-control inputs visible enough to avoid obvious sandbagging exploits; actual unit availability changes only through visible command-post progress; interrupted or damaged surfaces remain legible. | Do not solve base layout art, resource balance, AI attacks, full repair, or final catch-up discount values beyond prototype policy notes. |
| EXP-07 Basic Combat Resolution | Add simple weapon range, target selection, health, damage, suppression consumption, and destroyed/retreat states. | prototypes/unthinkable/tactical-battle/experiments/exp-07-basic-combat-resolution/index.html | EXP-02 units, EXP-03 cover/suppression, provisional weapon/card stats from planner data, vertical-slice combat expectations. | Combat tick API and visible casualty/loss explanation. | combatTick({ units, weapons, coverQuery, dt }) consumes unit state and returns damage, suppression, destroyed, retreat, and event-log deltas. | A small fight resolves consistently and explains losses through visible state such as range, cover, suppression, health, retreat, or destroyed markers. | Do not solve final penetration tables, complete weapon catalog, artillery/air realism, fog of war, AI strategy, or balance. |
| EXP-08 Baseline AI Loop | Script/score AI to capture near points, contest center, escalate command posts, attack, defend damaged surfaces, and preserve some units. | prototypes/unthinkable/tactical-battle/experiments/exp-08-baseline-ai-loop/index.html | EXP-02 movement, EXP-04 capture pressure, EXP-06 command-post state, EXP-07 combat events, baseline AI rules from the spec. | AI intent, scoring, and honest prerequisite use. | Serializable AiIntentState with current objective, target point, build plan step, group assignments, retreat/reposition flags, and cooldowns. | AI creates pressure without hidden cheats or untelegraphed late power; it captures, contests center, escalates, attacks, defends, retreats/repositions at least sometimes, and can lose. | Do not solve production-grade tactical AI, perfect pathfinding, hidden information modeling, multiplayer determinism, or final difficulty tuning. |
| EXP-09 Tactical UI HUD | Prototype the in-battle HUD and state projection: loading status, selected unit panel, deployment status, command-post progress, resources, phase state, deployable deck, alerts/popups, and minimap-lite/status strip. | prototypes/unthinkable/tactical-battle/experiments/exp-09-tactical-ui-hud/index.html | Deployment Plan card styling/data vocabulary, tactical UI contract, EXP-04 resources, EXP-06 phases, EXP-02/EXP-07 unit state. | Read-only UI projection from runtime state. | projectBattleUi(state) returns loading view, deployment view, selected-unit view, phase view, resource view, command-post view, deployable card view, capture/minimap view, and alerts. | Player can identify loading/deployment state, selected unit state, current phase, available deployments, command-post progress, capture/resource pressure, alerts, and save/pause status without opening a separate planner. | Do not solve final visual design, card-detail popover parity, drag/drop planner editing, or hidden AI state display. |
| EXP-10 Save/Pause/Reload | Save and restore battle runtime state: units, capture points, resources, command posts, build queues, AI intent, cooldowns, suppression, and orders. | prototypes/unthinkable/tactical-battle/experiments/exp-10-save-pause-reload/index.html | Runtime state contracts from EXP-02 through EXP-09, save/pause requirements from both canonical docs, existing build-order string discipline as a versioning reference. | Serialization, restore, pause semantics, autosave trigger, restart baseline. | serializeBattleState() and restoreBattleState(snapshot) with schema version, scenario id, deterministic entity ids, and validation errors. | Reload does not duplicate entities, lose unlocks, corrupt capture/resource state, reset AI intent incorrectly, or resume simulation while paused. | Do not solve cloud saves, cross-version migration, production storage, campaign persistence, or analytics backend. |
| EXP-11 Performance Ceiling Probe | Stress test active unit groups, movement orders, capture checks, combat ticks, UI updates, and save/restore overhead. | prototypes/unthinkable/tactical-battle/experiments/exp-11-performance-ceiling-probe/index.html | Runtime shells from EXP-02, EXP-04, EXP-07, EXP-09, EXP-10; browser performance gates from the spec. | Browser performance logging and ceiling discovery. | Local perf logger rows with timestamp, frame time, unit count, order count, combat-pair count, capture-check count, UI-update cost, save size, and spike label. | Records a browser unit ceiling target before expanding content; identifies worst frame-time spikes and the active system causing them. | Do not solve production observability, remote telemetry, Three.js asset budgets, final rendering, or packaging fallback decisions. |
| EXP-12 Wonder Telegraph And Counterplay | Prototype one UK Centurion commitment and one Soviet IS-3 commitment with all-player declaration, visible prerequisites, warning, activation, and counterplay windows. | prototypes/unthinkable/tactical-battle/experiments/exp-12-wonder-telegraph-counterplay/index.html | Wonder slot rules, Phase C deck rows, command-post state from EXP-06, capture pressure from EXP-04, combat/counter units from EXP-07. | Wonder declaration popup, prerequisite checklist, telegraph event, activation event, and answer window. | WonderState with brought commitment, prerequisites, source caveat, declaration event, warning event, activation event, cooldown/use count, arrival route, and counterplay status. | Late commitment feels earned, visible, and answerable; Centurion and IS-3 cannot appear before Advance Command Post and battlefield-control prerequisites. | Do not solve final wonder balance, production VFX/audio, every alternate wonder, or historical roster expansion. |
| EXP-13 First Compiled Skirmish Thread | Combine EXP-01 through EXP-08 into one 5-8 minute mini-battle. | prototypes/unthinkable/tactical-battle/playable-battle/index.html | Accepted compile contracts from EXP-01 through EXP-08. | One integrated runtime shell with controls, movement, capture, combat, command-post unlock, deployment spawn, and baseline AI. | Battle runtime root state that owns units, orders, capture points, command posts, resources, AI intent, combat events, and win/loss state. | Player can deploy, move, capture, fight, build one unlock, face AI pressure, and reach a win/loss state with a victory/defeat banner and placeholder Results Screen/Replay System buttons in a short skirmish. | Do not solve Phase C, full 15-25 minute pacing, save/reload drill, performance ceiling expansion, final HUD, or wonder commitments unless earlier experiments are already accepted. |
| EXP-14 Full Prototype Assembly | Extend the compiled thread to the approved 15-25 minute Conquest of Helmstedt target. | prototypes/unthinkable/tactical-battle/playable-battle/index.html | Accepted contracts from EXP-01 through EXP-13, plus EXP-09 HUD, EXP-10 save/reload, EXP-11 performance log, and EXP-12 wonders. | Moderator-ready complete battle assembly. | One integrated file:// battle build with loading, deployment, mobilization, setup, play, win/loss, local logs, save/reload, restart, reset controls, and placeholder Results Screen/Replay System handoff buttons. | Matches the prototype-test playtest script closely enough for moderated testing: loading, deployment, mobilization, Phase A/B/C timer transitions, five capture points, command-post gated unlocks, cover/suppression, AI pressure, one wonder declaration per side, save/reload drill, win/loss, and local performance log. | Do not solve campaign persistence, full deck builder, all factions, final balance, production art/audio, multiplayer, cloud saves, or analytics backend. |
file:// before marking it complete.playable-battle/, verify the promoted contract still works when copied away from experiment-only DOM and debug data.| Claim | Evidence | Inference | Confidence | Assumption Status | Decision Impact |
|---|---|---|---|---|---|
| The current gap is runtime proof, not pre-battle planning. | prototypes/unthinkable/tactical-battle/index.html lists Deployment Plan, Soviet Deployment Plan, Tactical Entry Demo, and After Action Demo; prototype-build-plan-tactical-battle.md frames the ledger as pre-battle plus static demos. | The next useful work is localized runtime experiments, not another static planning screen. | High | Evidence-backed repo observation. | Approve standalone runtime experiments and separate compiled battle path. |
| The roadmap must prove cover/suppression/capture/command-post/AI/save/performance together eventually. | tactical-vertical-slice-spec.md sections 5-14 and game-prototype-test.md sections 2-6 require these systems for the playable prototype. | Single-mechanic sandboxes are useful only if they compile into an integrated battle. | High | Evidence-backed canonical requirement. | Keep EXP-13 and EXP-14 as mandatory integration milestones. |
| The battle sequence can be covered by existing experiments without adding a new EXP. | The amended source artifact maps Loading, Deployment, Mobilization, Phase A/B/C transitions, wonders, and Resolution to EXP-02, EXP-05, EXP-06, EXP-09, EXP-12, EXP-13, and EXP-14. | The sequence adds macro-flow acceptance criteria, not a distinct isolated mechanic that needs its own standalone page. | High | Evidence-backed by the amended mapping; implementation remains unproven until experiments run. | Approve sequence coverage before starting EXP-01, or identify a stage that requires a separate proof. |
| File-first HTML remains the correct near-term format. | Current prototypes are static/file-first HTML and the plan explicitly rejects a Vite/app scaffold for this phase. | Experiments should minimize setup cost and preserve current review/deployment ergonomics. | High | Evidence-backed by current prototype shape; production format remains future. | Do not add build tooling during localized experiments. |
| EXP-00 acceptance is already met by this artifact. | The source artifact contains a gap matrix and maps every prototype-test item to an experiment or explicit deferral. | The first unchecked implementation task should be EXP-01. | High | Evidence-backed by artifact content. | Allow task checklist to mark EXP-00 complete. |
| Interview/cohort pass-fail criteria should wait for EXP-14. | game-prototype-test.md defines moderated-session questions, while the roadmap has no playable battle yet. | Embedding interview workflow in early mechanic pages would create false validation before the full thread exists. | Medium-high | Reasoned sequencing from approved test plan. | Approve explicit deferral of interview workflow until moderated-test candidate exists. |
| Item | Confidence | Status | What Would Change It |
|---|---|---|---|
| Approved battle premise should not reopen in this experiment plan. | High | Canonical spec and test plan already fix the premise. | User explicitly reopens the battle contract or final approval YAML rejects scope. |
| Localized experiments reduce risk better than jumping to full battle. | High | Plan maps many missing runtime systems to isolated contracts before integration. | EXP-01/02 reveal that shared runtime scaffolding is cheaper than isolated pages. |
| Current static examples should count as partial, not built runtime coverage. | High | Current HTML examples show states but do not simulate mechanics. | Discovery of an unlisted live runtime prototype under the same tree. |
| Existing deployment-plan data can seed runtime spawn experiments. | Medium | Planner data exists, but runtime identity and spawn adapter are unproven. | EXP-05 finds data shape mismatches that require a fixture adapter or schema revision. |
| Timer-announced Phase B/C transitions should coexist with command-post-gated unit availability and anti-sandbagging catch-up policy. | Medium-high | The sequence map treats timers as warnings/popups/discount triggers while command posts remain the actual availability gate, and it requires EXP-06 to expose score-threshold plus battlefield-control inputs before applying a losing-side discount. | Approval YAML changes the core phase model, rejects catch-up discounts, or later playtests show the combined timer/gate/discount model is unreadable or gameable. |
| Browser performance ceiling should be measured before content expansion. | Medium-high | Canonical docs require a unit ceiling and current prototype has no active stress probe. | Early movement/combat experiments already show performance constraints that force earlier EXP-11 work. |
file:// HTML prototype style.If approved, the next implementation step is EXP-01 under prototypes/unthinkable/tactical-battle/experiments/exp-01-camera-selection/index.html. The compiled battle remains empty until accepted experiment contracts are promoted into playable-battle/index.html, and sequence coverage remains a macro-flow gate for later EXP-13/EXP-14 integration.
| Path | Status | Purpose |
|---|---|---|
research/unthinkable/tactical-battle-experiment-plan.md | Existing source artifact amended | Canonical experiment roadmap under review, now including the tactical battle sequence map. |
tasks/todo.md | Existing checklist update | Executable EXP-00 through EXP-14 task list, with sequence responsibilities folded into existing rows. |
alignment/tactical-battle-experiments.html | Existing review page amended | This alignment page, updated with sequence coverage and a new sequence approval gate. |
docs/history/archive/2026-07-01/110341/alignment/tactical-battle-experiments.html | Earlier archive copy | Previous alignment page archived before the prior amendment. |
docs/history/archive/2026-07-01/140727/alignment/tactical-battle-experiments.html | Archive copy | Previous alignment page archived before this sequence-map amendment. |
scripts/alignment-tts-kokoro.js and scripts/alignment-question-nav.js | Alignment support assets | Portable Brief Me and unanswered-question navigation support. |
Approve whether the repo-local sources are sufficient to validate the roadmap as an experiment plan.
Approve whether the localized experiment sequence and active deferrals fit the intended tactical-battle work.
Approve whether EXP-00 through EXP-14 cover every required prototype-test item or identify any missing experiment.
Approve whether the mapped Loading-to-Resolution sequence is complete enough to govern EXP-01 through EXP-14 without adding a separate experiment.
Approve the durable artifact and review page paths.
Approve the limited file mutation scope for this alignment cycle.
Approve whether the next implementation route should begin with EXP-01.
The structured review sections above are the primary review surface and render the full artifact content. This supplemental block provides a compact source excerpt for orientation.
# Tactical Battle Experiment Plan Date: 2026-07-01 Product path: `unthinkable` Topic: `tactical-battle` Status: active experiment roadmap Prototype root: `prototypes/unthinkable/tactical-battle/` ## Purpose This plan converts the approved tactical vertical-slice requirements into small, localized `file://` HTML experiments. Each experiment isolates one risky runtime behavior, defines a compile contract, and only promotes proven code into the compiled battle at `prototypes/unthinkable/tactical-battle/playable-battle/index.html`. The tactical slice premise remains fixed: UK/Commonwealth 11th Armoured Division vs Soviet 2nd Guards Tank Army, Conquest of Helmstedt, browser-first RTS battle, fixed decks, command-post phase escalation, five capture points, cover, suppression, baseline AI, save/reload, and local performance evidence. Do not use this phase to reopen campaign design, full deck building, final balance, production art/audio, multiplayer, analytics infrastructure, or a Vite app scaffold. ## Sources Checked | Source | Use in this plan | |---|---| | `research/unthinkable/tactical-vertical-slice-spec.md` | Fixed battle contract, cover/suppression/capture rules, command-post unlocks, AI/save/performance/UI contracts, fixture scope, explicit deferrals, prototype acceptance checklist. | | `research/unthinkable/game-prototype-test.md` | Smallest valid playable scope, playtest script, observation checklist, success/concern/fail criteria, browser resilience and performance expectations. | | `prototypes/unthinkable/tactical-battle/index.html` | Current hub showing built Deployment Plan, Soviet Deployment Plan, Tactical Entry Demo, After Action Demo, and deferred sibling UX concepts. | | `design/unthinkable/prototype-build-plan-tactical-battle.md` | Confirms the current prototype ledger is pre-battle planning plus static in-battle examples, not a live tactical runtime. | | Current prototype files under `prototypes/unthinkable/tactical-battle/` | Verified current coverage is `file://` HTML, with deployment-plan data/queue work and static tactical-entry/after-action examples. | ## Current Gap The repository already has strong pre-battle planning artifacts: - `deployment-plan-first/` makes the fixed UK deck, phases, card details, transport/loadout choices, build order, and command-post prerequisites legible. - `deployment-plan-soviet/` exercises the same planning surface for Soviet deck data. - `tactical-entry-demo/` provides static examples for Tactical Entry, Motor Pool completion, and Recovery. - `after-action-demo/` provides an end-of-game summary and planned-vs-actual comparison. The missing proof is a live runtime that demonstrates the required systems together: selecting and ordering units, moving groups, cover and suppression, capture pressure, command-post escalation, deployment queue to runtime spawn, combat resolution, AI pressure, tactical HUD projection, save/reload, browser performance, wonder telegraph/counterplay, and final win/loss. ## Tactical Battle Sequence Map Default phase behavior: Phase B and Phase C arrive on timers with warnings, transition popups, and command-post catch-up discount evaluation for the losing side, but actual deployable unit availability remains gated by built command posts unless a later approval changes the core spec. The prototype discount policy must include an anti-sandbagging guard: being below the score threshold is not enough by itself if the side is in a dominant battlefield position. Stage timeline: Loading -> Deployment -> Mobilization -> Phase A Combat -> Phase B Transition -> Phase B Combat -> Phase C Transition/Wonders -> Resolution. ## Gap Matrix The full structured matrix, sequence map, and roadmap are rendered above in the primary review sections. The canonical source remains `research/unthinkable/tactical-battle-experiment-plan.md`.
Answer any gate question or select section feedback, then compile YAML to send back to the agent. Complete approval requires every gate answered with no unresolved negative or clarification feedback.