This doc formalizes the military actions available in the simulation, their constraints, timing windows, probabilities, side-effects on foreign posture, and the exact commands the President uses to invoke them via your chat/command UI.
- ETA: seconds to projected impact for the primary track (
state.clock.tMinusSeconds). - Track: inbound object with kinematic state (
state.threatTracks[i]). - Pk: probability of kill for an intercept attempt.
- Hair-Trigger (HT): foreign panic-to-launch index (
state.foreignPosture.*.hairTrigger). - LegalRisk: counsel score 0–1 for an order (
/api/counsel/checkOrder). - Phase:
preImpactorpostImpact.
- Owner: Military / STRATCOM (NORTHCOM executes; Fort Greely & Vandenberg sites).
- Advisor persona: Walker (status), Brady (advocacy), Cyber (sensor caveats).
- Only during realistic midcourse window. In sim terms:
phase === "preImpact"- Track altitude/kinematics tagged midcourse (engine applies this).
- ETA ≥ intercept_cutoff_s (default 210s; configurable per scenario).
- Early warning sensors not fully blinded or backup tracks available.
- If scenario begins after cutoff → GBI is not available in UI and advisors will say so.
- Single-Shot (default on high ambiguity)
- Salvo-2 (simultaneous)
- Shoot-Look-Shoot (requires ≥ 120s between shots; needs updated track quality)
- Base Pk per shot: 0.45
- Modifiers (multiplicative caps):
- Track quality (
Q) : 0.6–1.1 - Countermeasures (
CM): 0.6–0.95 - Sensor impairment (
S): 0.5–0.95 - Shot doctrine bonus: +0.10 (salvo) or +0.15 (shoot-look-shoot 2nd shot)
- Track quality (
- Effective Pk:
Pk_eff = clamp(0,1, Base * Q * CM * S + doctrineBonus) - For a salvo of 2:
Pk_total = 1 - (1 - Pk_eff)^2
Engine responsibility: compute Pk at fire time using current state tags (track quality, CM flags, sensor status).
- On launch authorization:
foreignPosture.Russia.hairTrigger += 0.08foreignPosture.China.hairTrigger += 0.06- Hotline availability may flip to “ringing” for Russia/China (they noticed).
- Domestic panic
+0.05(media “missile launched from Alaska”).
- On successful intercept:
domestic.panic -= 0.15cabinetLoyalty += 0.05
- On failed intercept:
domestic.panic += 0.10stratcomTrustInPresident -= 0.05
- Requires President authorization (two-person rule handled implicitly).
- Counsel check recommended but not required due to defensive nature.
- Disabled automatically at/after cutoff or if track exits engagement geometry.
Buttons: AUTHORIZE INTERCEPT (single), AUTHORIZE INTERCEPT (salvo-2)
Chat commands (examples):
- “Authorize one interceptor from Greely now.”
- “Salvo two GBIs immediately.”
- “Hold intercept; wait for shoot-look-shoot timing.”
Backend order payload:
{
"orderType": "INTERCEPT_AUTH",
"payload": { "doctrine": "single|salvo2|shoot_look_shoot" }
}- Owner: Military / STRATCOM + Combatant Commands.
- Advisor persona: Brady (advocacy), Baerington (restraint), Counsel (law).
- Punitive or disabling strike without nuclear employment (e.g., launch sites, C2, airbases, missile brigades).
- Availability: any phase, but target confidence gates UI options:
- If attributionConfidence(targetNation) < threshold (default 0.6), Counsel flags high risk; Baerington pushes back.
- Timing: flight times vary; B-2/cruise weapons have minutes→hours delays; sim abstracts with:
conventionalTimeToEffect = 20–120 min(scenario-dependent; show ETA in UI).
- Foreign HT:
- Target nation
+0.15 - Their allies
+0.05
- Target nation
- Domestic:
- If Chicago is hit and you did not retaliate:
panic +0.1(anger) - If you do retaliate quickly:
panic -0.05,cabinetLoyalty +0.05
- If Chicago is hit and you did not retaliate:
- LegalRisk:
- If attribution < threshold or pre-impact strike: 0.6–0.85
- If post-impact with solid attribution: 0.25–0.5
Buttons: LIMITED CONVENTIONAL STRIKE → target picker (Nation/Facility class)
Chat commands:
- “Authorize limited conventional strikes on the suspected launch site only.”
- “Hit C2 nodes; avoid civilian infrastructure.”
Backend order:
{
"orderType": "CONVENTIONAL_STRIKE",
"payload": { "nation": "DPRK|Iran|Russia|China", "aim": ["launch_site","C2","air_base"], "rules": "minimize_collateral" }
}- Owner: STRATCOM; President with Gold Code authority; Counsel review strongly advised.
- Personas: Brady (pro-employment), Counsel (risk), Baerington (de-escalation).
- LNO (Limited Nuclear Options): one or few targets (e.g., launch site, isolated military).
- Theater-focused packages: broader but still constrained.
- Full response packages: strategic force employment (extreme).
- Phase: may be invoked pre-impact (doctrinally possible) but incurs massive LegalRisk and HT increases.
- Positive control and 2-person rule assumed; if coupRisk high, SecDef/Chair behaviors may vary.
- Attribution confidence gates: below threshold, Counsel returns 0.9–0.99 risk.
- Foreign HT:
- Target nation
+0.35(often saturates to ~0.9+) - Peer nuclear states
+0.20each; hotline becomes volatile
- Target nation
- Domestic:
- If post-impact & attribution strong:
panic -0.1,cabinetLoyalty +0.1 - If pre-impact or attribution weak:
panic +0.2,cabinetLoyalty -0.1,successionThreat +0.1
- If post-impact & attribution strong:
- Global War Trigger: engine evaluates cascades; probability sharply increases with nuclear use.
Buttons: NUCLEAR (LNO), NUCLEAR (THEATER), NUCLEAR (FULL) → confirmation modal + Counsel preview
Chat commands:
- “Prepare LNO against the launch site only. Do not target cities.”
- “Execute theater nuclear package on their strategic forces.”
- “Full response package — execute on my mark.” (will force double-confirm)
Backend order:
{
"orderType": "NUCLEAR_RETALIATION",
"payload": { "doctrine": "LNO|THEATER|FULL", "targetNation": "DPRK|Iran|Russia|China" }
}Some defensive actions may trigger automatically (with notification), unless overridden by the President:
- Auto-engage GBI when:
ETA <= autoEngageThreshold (e.g., 420s)ANDCounselRisk < 0.6ANDtrackConfidence > 0.6.- UI shows: “Auto-engaging intercept (you can cancel within 5s)”
- Cancellation raises
stratcomTrustInPresident -0.05.
Config flags:
{
"autoEngageGBI": true,
"autoEngageThresholdSeconds": 420,
"interceptCutoffSeconds": 210
}Before any retaliatory strike (conventional or nuclear), the President can (and should) request a Counsel preview:
Button: COUNSEL CHECK
Chat command: “Counsel, assess legal risk for [action].”
Backend:
POST /api/counsel/checkOrder
{
"sessionId": "...",
"order": { ...same payload as the intended order... }
}
→ { "legalSummary": "...", "riskScore": 0.0-1.0 }Advisors:
- Baerington: contextual escalation/de-escalation impact
- Cyber: spoof/telemetry caveats
- Walker: track quality & ETA updates
- Brady: deterrence arguments
session:{id}:state.threatTracks[*].interceptAttemptssession:{id}:state.foreignPosture.{Nation}.hairTriggersession:{id}:state.domestic.panicLevelsession:{id}:state.usPosture.bombers.sortieAuth(when nuclear packages prep)session:{id}:state.ai.coupRisk,successionThreatsession:{id}:log(append order + outcome)
applyOrder_INTERCEPT_AUTH(state, doctrine): State
applyOrder_CONVENTIONAL_STRIKE(state, payload): State
applyOrder_NUCLEAR_RETALIATION(state, payload): State
computeInterceptAvailability(state): boolean
computeInterceptPk(state, doctrine): number
resolveInterceptOutcome(state): State
applyForeignDetectionSideEffects(state, action): State
evaluateGlobalWarCascade(state): StateDefensive intercept
- “Authorize one interceptor now.”
- “Salvo two GBIs.”
- “Hold fire for shoot-look-shoot.”
Conventional retaliation
- “Limited conventional strike on launch site only. Avoid collateral.”
- “Hit C2 nodes, no urban targets.”
Nuclear options
- “Prepare LNO on launch site.”
- “Execute theater package on strategic forces.”
- “Full response package — execute on my mark.”
Verification
- “Counsel, assess legal risk for [action].”
- “Cyber, is spoofing still plausible?”
- “Walker, current ETA and intercept window?”