review document tier revised 2026-07-01

Tactical Battle Experiments Review

Alignment date: 2026-07-01 · Product path: unthinkable · Source artifact: research/unthinkable/tactical-battle-experiment-plan.md

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.

Review Status

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.

Artifact Overview

source artifact

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.

promotion rule

Compile Discipline

Code promotes into playable-battle/ only after the source experiment meets acceptance and passes a local browser smoke test.

fixed premise

Battle Boundary

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.

Date2026-07-01
Product pathunthinkable
Topictactical-battle
Status in sourceactive experiment roadmap
Prototype rootprototypes/unthinkable/tactical-battle/
Review page pathalignment/tactical-battle-experiments.html

Source Coverage

The plan uses repo-local sources only. The review page preserves the distinction between observed prototype coverage and inferred implementation gaps.

SourceUse In Plan
research/unthinkable/tactical-vertical-slice-spec.mdFixed 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.mdSmallest valid playable scope, playtest script, observation checklist, success/concern/fail criteria, browser resilience and performance expectations.
prototypes/unthinkable/tactical-battle/index.htmlCurrent 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.mdConfirms 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.

Gap Matrix

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 BehaviorCurrent CoverageStatusExperiment 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.MissingEXP-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.PartialEXP-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.MissingEXP-01
Groups move across a tactical map with readable destination intent.Static map markers only.MissingEXP-02
Cover states alter infantry outcomes visibly.Static labels mention light/heavy cover; no combat outcome model.PartialEXP-03, EXP-07
Suppression states alter behavior visibly.Static pinned Rifle Section example exists; no pressure state machine.PartialEXP-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.PartialEXP-04
Command-post construction gates deck availability.Planning and static Motor Pool unlock examples exist; no build-progress runtime or phase events.PartialEXP-06
Baseline AI captures, escalates, attacks, defends, preserves units, and can lose.No tactical AI runtime.MissingEXP-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.PartialEXP-09
Pause, manual save, visibility autosave, reload, and restart preserve battle state.Deployment-plan build-order string save exists; no battle-state serialization.PartialEXP-10
Browser performance is measured against a declared unit ceiling.No active battle performance probe.MissingEXP-11
UK Centurion and Soviet IS-3 commitments are gated, telegraphed, and answerable.Cards and static locks exist; no runtime prerequisites, warning, or activation.PartialEXP-12
Fixture data maps cleanly to schema or records exceptions.Unit schema and deck data exist; runtime UnitInstance and adapter exceptions are not proven.PartialEXP-05, EXP-13, EXP-14
Moderator-ready 15-25 minute Conquest of Helmstedt playtest.Test plan exists; no playable battle.MissingEXP-14

Prototype-Test Acceptance Mapping

Every required item from the prototype-test plan maps to an experiment or explicit deferral.

Prototype-Test ItemMapping
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.

Experiment Rules

Tactical Battle Sequence Map

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.

Compact stage list: Loading -> Deployment -> Mobilization -> Phase A Combat -> Phase B Transition -> Phase B Combat -> Phase C Transition/Wonders -> Resolution.

StagePlayer-Visible SurfacesRuntime State/EventsExperiment Coverage
LoadingSplash 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.
DeploymentPlayer 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 mobilizationUnits 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 combatPlayer 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 transitionWarning 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 combatExpanded 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/wondersWarning 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.
ResolutionVictory/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.

Experiment Roadmap

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.

IDGoalPrototype PathInputs ReusedIsolated MechanicCompile ContractAcceptance CriteriaWhat Not To Solve
EXP-00 Gap MatrixCompare 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 ControlsBuild 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.htmlCurrent 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 ReadabilityPrototype 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.htmlEXP-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 MicrofightBuild 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.htmlVertical-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 PressureBuild five capture points with ownership, contesting, resource income, and command-score drain.prototypes/unthinkable/tactical-battle/experiments/exp-04-capture-score-pressure/index.htmlFive-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 SpawnConvert 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.htmldeployment-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 ChainPrototype 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.htmlVertical-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 ResolutionAdd simple weapon range, target selection, health, damage, suppression consumption, and destroyed/retreat states.prototypes/unthinkable/tactical-battle/experiments/exp-07-basic-combat-resolution/index.htmlEXP-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 LoopScript/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.htmlEXP-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 HUDPrototype 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.htmlDeployment 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/ReloadSave 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.htmlRuntime 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 ProbeStress 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.htmlRuntime 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 CounterplayPrototype 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.htmlWonder 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 ThreadCombine EXP-01 through EXP-08 into one 5-8 minute mini-battle.prototypes/unthinkable/tactical-battle/playable-battle/index.htmlAccepted 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 AssemblyExtend the compiled thread to the approved 15-25 minute Conquest of Helmstedt target.prototypes/unthinkable/tactical-battle/playable-battle/index.htmlAccepted 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.

Test Plan And Promotion Order

Test Plan

  • For every HTML experiment, smoke test through file:// before marking it complete.
  • For adapters and state contracts, add lightweight Node checks where possible without introducing a build system.
  • Before promoting an experiment to playable-battle/, verify the promoted contract still works when copied away from experiment-only DOM and debug data.
  • For compiled battle milestones, verify start-to-win/loss, command-post-gated phase unlocks, capture/resource/score pressure, visible cover/suppression effects, AI capture/escalation/attack/defense/loss, save/reload preservation, and performance log output.

Promotion Order

  1. Prove input and movement first: EXP-01, EXP-02.
  2. Prove tactical cause/effect: EXP-03, EXP-04, EXP-07.
  3. Prove deck/runtime bridge and escalation: EXP-05, EXP-06.
  4. Prove opponent pressure: EXP-08.
  5. Compile the short skirmish: EXP-13.
  6. Add battle UI, save/reload, performance, and wonders: EXP-09 through EXP-12.
  7. Assemble the moderated-test candidate: EXP-14.

Evidence Matrix

ClaimEvidenceInferenceConfidenceAssumption StatusDecision 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.HighEvidence-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.HighEvidence-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.HighEvidence-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.HighEvidence-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.HighEvidence-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-highReasoned sequencing from approved test plan.Approve explicit deferral of interview workflow until moderated-test candidate exists.

Confidence And Assumption Register

ItemConfidenceStatusWhat Would Change It
Approved battle premise should not reopen in this experiment plan.HighCanonical 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.HighPlan 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.HighCurrent 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.MediumPlanner 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-highThe 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-highCanonical 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.

Alternatives, Source Gaps, And Deferrals

Alternatives Considered

  • Build the full 15-25 minute battle immediately. Rejected because too many unproven systems would fail together without local diagnosis.
  • Create another static review/demo page first. Rejected because the current gap is live tactical runtime behavior.
  • Start a Vite/app scaffold now. Rejected for this phase to preserve the current file:// HTML prototype style.

Source Coverage Gaps

  • No browser smoke tests exist yet for the future experiment pages because they are not implemented.
  • No performance ceiling data exists yet; EXP-11 is intentionally a measurement task.
  • No runtime adapter has proven that planner cards and queue state can become stable battle entities; EXP-05 owns that risk.
  • No runtime sequence shell exists yet; the sequence map is a coverage contract that EXP-13/EXP-14 must prove.

Active Deferrals From The Plan

Downstream Implications

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.

Proposed File Changes

PathStatusPurpose
research/unthinkable/tactical-battle-experiment-plan.mdExisting source artifact amendedCanonical experiment roadmap under review, now including the tactical battle sequence map.
tasks/todo.mdExisting checklist updateExecutable EXP-00 through EXP-14 task list, with sequence responsibilities folded into existing rows.
alignment/tactical-battle-experiments.htmlExisting review page amendedThis alignment page, updated with sequence coverage and a new sequence approval gate.
docs/history/archive/2026-07-01/110341/alignment/tactical-battle-experiments.htmlEarlier archive copyPrevious alignment page archived before the prior amendment.
docs/history/archive/2026-07-01/140727/alignment/tactical-battle-experiments.htmlArchive copyPrevious alignment page archived before this sequence-map amendment.
scripts/alignment-tts-kokoro.js and scripts/alignment-question-nav.jsAlignment support assetsPortable Brief Me and unanswered-question navigation support.

Approval Gates

Evidence Coverage

Approve whether the repo-local sources are sufficient to validate the roadmap as an experiment plan.

Is the source coverage sufficient for this roadmap?

Scope And Non-Goals

Approve whether the localized experiment sequence and active deferrals fit the intended tactical-battle work.

Approve the experiment scope and deferrals?

Coverage Checkpoint

Approve whether EXP-00 through EXP-14 cover every required prototype-test item or identify any missing experiment.

Is the experiment coverage complete enough to proceed?

Tactical Battle Sequence Coverage

Approve whether the mapped Loading-to-Resolution sequence is complete enough to govern EXP-01 through EXP-14 without adding a separate experiment.

Approve tactical battle sequence coverage?

Artifact Destination

Approve the durable artifact and review page paths.

Approve the artifact and alignment paths?

Proposed File Changes

Approve the limited file mutation scope for this alignment cycle.

Approve the file-change scope?

Post-Approval Route

Approve whether the next implementation route should begin with EXP-01.

Approve EXP-01 as the next implementation task after confirmation?

Supplemental Source Markdown

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.

Show source excerpt
# 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`.

Compile Responses

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.