Development Log¶
Rolling record of implementation decisions, changes, and lessons learned across all phases of Stochastic Warfare development.
Phases¶
| Phase | Focus | Status | Log |
|---|---|---|---|
| 0 | Project Scaffolding | Complete | phase-0.md |
| 1 | Terrain & Environment Foundation | Complete | phase-1.md |
| 2 | Entity System & Movement | Complete | phase-2.md |
| 3 | Detection & Intelligence | Complete | phase-3.md |
| 4 | Combat Resolution & Morale | Complete | phase-4.md |
| 5 | C2 Infrastructure | Complete | phase-5.md |
| 6 | Logistics & Supply | Complete | phase-6.md |
| 7 | Engagement Validation | Complete | phase-7.md |
| 8 | AI & Planning | Complete | phase-8.md |
| 9 | Simulation Orchestration | Complete | phase-9.md |
| 10 | Campaign Validation | Complete | phase-10.md |
| 11 | Core Fidelity Fixes | Complete | phase-11.md |
| 12 | Deep Systems Rework | Complete | phase-12.md |
| 13 | Performance Optimization | Complete | phase-13.md |
| 14 | Tooling & Developer Experience | Complete | phase-14.md |
| 15 | Real-World Terrain & Data Pipeline | Complete | phase-15.md |
| 16 | Electronic Warfare | Complete | phase-16.md |
| 17 | Space & Satellite Domain | Complete | phase-17.md |
| 18 | NBC/CBRN Effects | Complete | phase-18.md |
| 19 | Doctrinal AI Schools | Complete | phase-19.md |
| 20 | WW2 Era | Complete | phase-20.md |
| 21 | WW1 Era | Complete | phase-21.md |
| 22 | Napoleonic Era | Complete | phase-22.md |
| 23 | Ancient & Medieval Era | Complete | phase-23.md |
| 24 | Unconventional & Prohibited Warfare | Complete | phase-24.md |
| 25 | Engine Wiring & Integration Sprint | Complete | phase-25.md |
| 26 | Core Polish & Configuration | Complete | phase-26.md |
| 27 | Combat System Completeness | Complete | phase-27.md |
| 28 | Modern Era Data Package | Complete | phase-28.md |
| 28.5 | Directed Energy Weapons | Complete | phase-28.5.md |
| 29 | Historical Era Data Expansion | Complete | phase-29.md |
| 30 | Scenario & Campaign Library | Complete | phase-30.md |
| 31 | Documentation Site (GitHub Pages) | Complete | phase-31.md |
| 32 | API & Service Foundation | Complete | phase-32.md |
| 33 | Frontend Foundation & Scenario Browser | Complete | phase-33.md |
| 34 | Run Results & Analysis Dashboard | Complete | phase-34.md |
| 35 | Tactical Map & Spatial Visualization | Complete | phase-35.md |
| 36 | Scenario Tweaker & Polish | Complete | phase-36.md |
| 37 | Integration Fixes & E2E Validation | Complete | phase-37.md |
| 38 | Map & Chart Enhancements | Complete | phase-38.md |
| 39 | Quality, Performance & Packaging | Complete | phase-39.md |
| 40 | Battle Loop Foundation | Complete | phase-40.md |
| 41 | Combat Depth | Complete | phase-41.md |
| 42 | Tactical Behavior | Complete | phase-42.md |
| 43 | Domain-Specific Resolution | Complete | phase-43.md |
| 44 | Environmental & Subsystem Integration | Complete | phase-44.md |
| 45 | Mathematical Model Audit & Hardening | Complete | phase-45.md |
| 46 | Scenario Data Cleanup & Expansion | Complete | phase-46.md |
| 47 | Full Recalibration & Validation | Complete | phase-47.md |
| 48 | Block 5 Deficit Resolution | Complete | phase-48.md |
| 49 | Calibration Schema Hardening | Complete | phase-49.md |
| 50 | Combat Fidelity Polish | Complete | phase-50.md |
| 51 | Naval Combat Completeness | Complete | phase-51.md |
| 52 | Environmental Continuity | Complete | phase-52.md |
| 53 | C2 & AI Completeness | Complete | phase-53.md |
| 54 | Era-Specific & Domain Sub-Engine Wiring | Complete | phase-54.md |
| 55 | Resolution & Scenario Migration | Complete | phase-55.md |
| 56 | Performance & Logistics | Complete | phase-56.md |
| 57 | Full Validation & Regression | Complete | phase-57.md |
| 58 | Structural Verification & Core Combat Wiring | Complete | phase-58.md |
| 59 | Atmospheric & Ground Environment Wiring | Complete | phase-59.md |
| 60 | Obscurants, Fire, & Visual Environment | Complete | phase-60.md |
| 61 | Maritime, Acoustic, & EM Environment | Complete | phase-61.md |
| 62 | Human Factors, CBRN, & Air Combat Environment | Complete | phase-62.md |
| 63 | Cross-Module Feedback Loops | Complete | phase-63.md |
| 64 | C2 Friction & Command Delay | Complete | phase-64.md |
| 65 | Space & EW Sub-Engine Activation | Complete | phase-65.md |
| 66 | Unconventional, Naval, & Cleanup | Complete | phase-66.md |
| 67 | Integration Validation & Recalibration | Complete | phase-67.md |
| Block 8: Consequence Enforcement & Scenario Expansion | |||
| 68 | Consequence Enforcement | Complete | phase-68.md |
| 69 | C2 Depth | Complete | phase-69.md |
| 70 | Performance Optimization | Complete | phase-70.md |
| 71 | Missile & Carrier Ops Completion | Complete | phase-71.md |
| 72 | Checkpoint & State Completeness | Complete | phase-72.md |
| 73 | Historical Scenario Correctness | Complete | phase-73.md |
| 74 | Combat Engine Unit Tests | Complete | phase-74.md |
| 75 | Simulation Core & Domain Unit Tests | Complete | phase-75.md |
| 76 | API Robustness | Complete | phase-76.md |
| 77 | Frontend Accessibility | Complete | phase-77.md |
| 78 | P2 Environment Wiring | Complete | phase-78.md |
| 79 | CI/CD & Packaging | Complete | phase-79.md |
| 80 | API & Frontend Sync | Complete | phase-80.md |
| 81 | Recalibration & Validation | Complete | phase-81.md |
| 82 | Block 8 Postmortem & Documentation | Complete | phase-82.md |
| Block 9: Performance at Scale | |||
| 83 | Profiling Infrastructure | Complete | phase-83.md |
| 84 | Spatial Culling & Scan Scheduling | Complete | phase-84.md |
| 85 | LOD & Aggregation | Complete | phase-85.md |
| 86 | Engagement & Calibration Optimization | Complete | phase-86.md |
| 87 | Expanded Numba JIT | Complete | phase-87.md |
| 88 | SoA Data Layer | Complete | phase-88.md |
| 89 | Per-Side Parallelism | Complete | phase-89.md |
| 90 | Validation & Benchmarking | Complete | phase-90.md |
| 91 | Scenario Recalibration & Regression | Complete | phase-91.md |
| Block 10: UI Depth & Engine Exposure | |||
| 92 | API Analytics & Frame Enrichment | Complete | phase-92.md |
| 93 | Results Dashboard Depth | Complete | phase-93.md |
| 94 | Tactical Map Enrichment | Complete | phase-94.md |
| 95 | Calibration & Scenario Editor Depth | Complete | phase-95.md |
| 96 | Analysis & Event Interaction | Complete | phase-96.md |
| 97 | Data Catalog & Block 10 Validation | Complete | phase-97.md |
Post-MVP Refinement Index¶
Known limitations and deferred improvements logged during implementation. Review these after MVP is functional.
| Phase | Item | Section |
|---|---|---|
| 0 | phase-0.md — Open Questions | |
| 3 | phase-3.md — Known Limitations | |
| 3 | Environment data threading (caller responsibility) (accepted limitation — explicit coupling is simpler than implicit dependency injection) | phase-3.md — Known Limitations |
| 3 | phase-3.md — Known Limitations | |
| 3 | phase-3.md — Known Limitations | |
| 3 | phase-3.md — Known Limitations | |
| 3 | phase-3.md — Known Limitations | |
| 4 | phase-4.md — Known Limitations | |
| 4 | phase-4.md — Known Limitations | |
| 4 | HEAT penetration is range-independent (accepted limitation — physically correct for shaped charge jets) | phase-4.md — Known Limitations |
| 4 | phase-4.md — Known Limitations | |
| 4 | phase-4.md — Known Limitations | |
| 4 | Carrier ops deck management abstracted (no individual spot tracking) (accepted limitation — below simulation granularity) | phase-4.md — Known Limitations |
| 4 | phase-4.md — Known Limitations | |
| 4 | phase-4.md — Known Limitations | |
| 4 | phase-4.md — Known Limitations | |
| 4 | phase-4.md — Known Limitations | |
| 4 | phase-4.md — Known Limitations | |
| 5 | phase-5.md — Known Limitations | |
| 5 | phase-5.md — Known Limitations | |
| 5 | phase-5.md — Known Limitations | |
| 5 | phase-5.md — Known Limitations | |
| 5 | phase-5.md — Known Limitations | |
| 5 | Messenger comm type has no terrain traversal or intercept risk (accepted limitation — courier engine handles Napoleonic era; modern MESSENGER is niche) | phase-5.md — Known Limitations |
| 6 | phase-6.md — Known Limitations | |
| 6 | phase-6.md — Known Limitations | |
| 6 | phase-6.md — Known Limitations | |
| 6 | phase-6.md — Known Limitations | |
| 6 | phase-6.md — Known Limitations | |
| 6 | phase-6.md — Known Limitations | |
| 6 | phase-6.md — Known Limitations | |
| 6 | Captured supply efficiency flat 50% (no compatibility check) (dormant capability — implemented and tested but no game mechanic triggers depot capture; reserved for future campaign planning work) | phase-6.md — Known Limitations |
| 6 | No local water procurement (always from rear depots) (accepted limitation — below simulation granularity) | phase-6.md — Known Limitations |
| 6 | No ammunition production (scenario-defined depots only) (accepted limitation — scenarios define initial supply levels) | phase-6.md — Known Limitations |
| 6 | phase-6.md — Known Limitations | |
| 7 | phase-7.md — Known Limitations | |
| 7 | phase-7.md — Known Limitations | |
| 7 | phase-7.md — Known Limitations | |
| 7 | phase-7.md — Known Limitations | |
| 7 | phase-7.md — Known Limitations | |
| 7 | phase-7.md — Known Limitations | |
| 7 | phase-7.md — Known Limitations | |
| 7 | No logistics in validation scenarios (short engagements) (accepted limitation — deliberately short engagements) | phase-7.md — Known Limitations |
| 7 | No C2 propagation in validation (direct behavior, no order chain) (accepted limitation — deliberately short engagements) | phase-7.md — Known Limitations |
| 7 | phase-7.md — Known Limitations | |
| 8 | phase-8.md — Known Limitations | |
| 8 | COA wargaming is analytical (Lanchester), not full nested simulation (accepted limitation — Lanchester captures key force-ratio dynamics) | phase-8.md — Known Limitations |
| 8 | No terrain-specific COA generation (e.g., no river crossing planning detail) (accepted limitation — COA operates at force-ratio level) | phase-8.md — Known Limitations |
| 8 | Implied task tables are simplified (not full FM 5-0 comprehensive list) (accepted limitation — captures key task categories) | phase-8.md — Known Limitations |
| 8 | No multi-echelon simultaneous planning (each commander plans independently) (accepted limitation — by design; avoids coordination complexity) | phase-8.md — Known Limitations |
| 8 | Estimates update periodically, not reactively to every event (accepted limitation — event-driven updates not needed at current tick resolution) | phase-8.md — Known Limitations |
| 8 | Stratagems are opportunity-evaluated, not proactively planned in COA (accepted limitation — by design; see Phase 53c wiring) | phase-8.md — Known Limitations |
| 8 | phase-8.md — Known Limitations | |
| 9 | phase-9.md — Known Limitations | |
| 9 | Single-threaded simulation loop (required for deterministic PRNG replay) (accepted limitation — required for deterministic reproducibility) | phase-9.md — Known Limitations |
| 9 | phase-9.md — Known Limitations | |
| 9 | Simplified strategic movement (no detailed operational pathfinding) (accepted limitation — campaign-scale abstraction) | phase-9.md — Known Limitations |
| 9 | Fixed reinforcement schedule (no Poisson/stochastic arrivals) (accepted limitation — scenario-defined determinism) | phase-9.md — Known Limitations |
| 9 | phase-9.md — Known Limitations | |
| 9 | phase-9.md — Known Limitations | |
| 9 | phase-9.md — Known Limitations | |
| 9 | phase-9.md — Known Limitations | |
| 9 | phase-9.md — Known Limitations | |
| 9 | phase-9.md — Known Limitations | |
| 10 | phase-10.md — Known Limitations | |
| 10 | phase-10.md — Known Limitations | |
| 10 | Campaign AI decisions coarse — OODA at echelon timing, may not produce tactical posture changes in short runs (accepted limitation — OODA timing is by design) | phase-10.md — Known Limitations |
| 10 | phase-10.md — Known Limitations | |
| 10 | phase-10.md — Known Limitations | |
| 9/10 | (duplicate of Phase 9 fixed reinforcement entry above — consolidated) | |
| 10 | phase-10.md — Known Limitations | |
| 10 | AI expectation matching approximate — string-based posture detection (accepted limitation — sufficient for posture change validation) | phase-10.md — Known Limitations |
| 10 | Campaign metrics proxy territory control via survival fraction not spatial (accepted limitation — survival fraction captures campaign outcomes) | phase-10.md — Known Limitations |
| 11 | phase-11.md — Known Limitations | |
| 11 | Wave assignments are manual (no AI auto-assignment) (accepted limitation — explicit is better than implicit) | phase-11.md — Known Limitations |
| 11 | phase-11.md — Known Limitations | |
| 11 | phase-11.md — Known Limitations | |
| 16 | phase-16.md — Known Limitations | |
| 16 | No DRFM detailed waveform modeling (simplified effectiveness parameter) (accepted limitation — captures key jamming effects without specialist depth) | phase-16.md — Known Limitations |
| 16 | TDOA geolocation uses simplified centroid-shift algorithm (accepted limitation — captures geolocation accuracy without DSP complexity) | phase-16.md — Known Limitations |
| 16 | No cooperative jamming between multiple platforms (accepted limitation — single-jammer model captures key dynamics) | phase-16.md — Known Limitations |
| 16 | phase-16.md — Known Limitations | |
| 17 | Simplified Keplerian orbits (no SGP4/TLE, no atmospheric drag for LEO decay) (accepted limitation — captures pass timing and coverage gaps) | phase-17.md — Known Limitations |
| 17 | No detailed satellite bus modeling (power, thermal, attitude control) (accepted limitation — below simulation granularity) | phase-17.md — Known Limitations |
| 17 | phase-17.md — Known Limitations | |
| 17 | Debris cascade model is statistical (no individual fragment tracking) (accepted limitation — below simulation granularity) | phase-17.md — Known Limitations |
| 17 | No satellite maneuvering or station-keeping fuel limits (accepted limitation — captures orbital mechanics without propulsion modeling) | phase-17.md — Known Limitations |
| 17 | No space weather effects (solar flares, radiation belt variations) (accepted limitation — below simulation granularity) | phase-17.md — Known Limitations |
| 17 | EMEnvironment GPS accuracy is not per-side (uses worst-case aggregation) (accepted limitation — worst-case aggregation is conservative) | phase-17.md — Postmortem |
| 16/17 | phase-17.md — Postmortem | |
| 16/17/18 | phase-18.md — Postmortem | |
| 18 | mopp_speed_factor parameter exists in movement engine but never passed from battle loop |
phase-18.md — Postmortem |
| 18 | phase-18.md — Postmortem | |
| 18 | phase-18.md — Postmortem | |
| 18 | phase-18.md — Postmortem | |
| 19 | phase-19.md — Known Limitations | |
| 19 | phase-19.md — Known Limitations | |
| 16/17/18/19 | phase-19.md — Known Limitations | |
| 19 | get_coa_score_weight_overrides() hook not called in battle loopget_stratagem_affinity() still deferred |
phase-19.md — Postmortem |
| 19 | CommanderPersonality.school_id field defined but never read — schools assigned via SchoolRegistry instead |
phase-19.md — Postmortem |
| 20 | Convoy engine does not model individual escort positions (abstract effectiveness parameter) (accepted limitation — campaign-scale abstraction) | phase-20.md — Known Limitations |
| 20 | Strategic bombing target regeneration is linear (no industrial interdependency graph) (accepted limitation — captures key targeting dynamics) | phase-20.md — Known Limitations |
| 20 | Fighter escort in strategic bombing is probability modifier, not full air combat sub-simulation (accepted limitation — campaign-scale abstraction) | phase-20.md — Known Limitations |
| 16/17/18/19/20 | phase-20.md — Postmortem | |
| 21 | phase-21.md — Known Limitations | |
| 21 | phase-21.md — Known Limitations | |
| 21 | Trench system has no wire-cutting mechanic (wire is a query attribute only, not a movement blocker) (accepted limitation — wire as defensive query attribute is sufficient) | phase-21.md — Known Limitations |
| 16/17/18/19/20/21 | phase-21.md — Known Limitations | |
| 21 | phase-21.md — Postmortem | |
| 21 | phase-21.md — Postmortem | |
| 16/17/18/19/20/21/22 | phase-22.md — Known Limitations | |
| 22 | phase-22.md — Known Limitations | |
| 22 | phase-22.md — Known Limitations | |
| 22 | phase-22.md — Known Limitations | |
| 22 | phase-22.md — Known Limitations | |
| 16/17/18/19/20/21/22/23 | phase-23.md — Postmortem | |
| 28.5 | phase-28.5.md — Postmortem | |
| 28.5 | phase-28.5.md — Postmortem | |
| 28.5 | phase-28.5.md — Postmortem | |
| 28.5 | ADUnitType.DEW not handled in air defense engagement logic (enum exists but no routing) (accepted limitation — DEW routes via weapon category, functionally complete) | phase-28.5.md — Postmortem |
| 28.5 | phase-28.5.md — Postmortem | |
| 32 | config_overrides accepted and stored but not applied to engine (calibration_overrides not injected before ScenarioLoader.load) |
phase-32.md — Postmortem |
| 32 | GET /api/meta/terrain-types returns hardcoded list instead of deriving from TerrainConfig or data |
phase-32.md — Postmortem |
| 34 | useBatchProgress hook has no dedicated test file |
phase-34.md — Postmortem |
| 34 | phase-34.md — Postmortem | |
| 34 | Record<string, unknown>) — compare/sweep return free-form dicts |
phase-34.md — Postmortem |
| 34 | phase-34.md — Postmortem | |
| 34 | phase-34.md — Postmortem | |
| 35 | Frame data uses compact keys in storage but API expands to full names — slight redundancy (accepted limitation — cosmetic, no impact on functionality) | phase-35.md — Known Limitations |
| 35 | terrain_json and frames_json stored as TEXT blobs — no indexing, large runs may produce 2MB+ frames (accepted limitation — sufficient for current scenario sizes) |
phase-35.md — Known Limitations |
| 35 | useViewportControls hook has no dedicated test file (exercised indirectly via TacticalMap) |
phase-35.md — Known Limitations |
| 35 | ForceStrengthChart shows the tick sync marker line — other charts don't |
phase-35.md — Known Limitations |
| 35 | phase-35.md — Known Limitations | |
| 35 | No keyboard shortcuts for playback (deferred to Phase 36) (accepted limitation — cosmetic) | phase-35.md — Known Limitations |
| 37 | phase-37.md — Known Limitations | |
| 37 | phase-37.md — Known Limitations | |
| 38 | Plotly charts don't use plotly_dark template when dark mode is active (cosmetic) (accepted limitation — cosmetic) |
phase-38.md — Known Limitations |
| 38 | No separate dark terrain color palette (elevation shading brightness modulation covers the need) (accepted limitation — cosmetic; brightness modulation covers the need) | phase-38.md — Known Limitations |
| 40 | phase-40.md — Known Limitations | |
| 40 | phase-40.md — Known Limitations | |
| 41 | phase-41.md — Known Limitations | |
| 42 | phase-42.md — Known Limitations | |
| 42 | phase-42.md — Known Limitations | |
| 42 | phase-42.md — Known Limitations | |
| 47 | _route_naval_engagement() don't exist) |
phase-47.md — Known Remaining Issues |
| 47 | _check_morale_collapsed ignores cond.params (reads global config only) |
phase-47.md — Postmortem |
| 47 | _route_naval_engagement() (torpedo_pk=0.4, attacker_pk=0.7) |
phase-47.md — Postmortem |
| 47 | phase-47.md — Known Remaining Issues | |
| 48 | advance_speed calibration key dead data — 7 historical scenarios declare it, no Python code reads it |
phase-48.md — Postmortem |
| 48 | dig_in_ticks consumed by battle.py but zero scenarios use it — untested calibration point |
phase-48.md — Postmortem |
| 48 | wave_interval_s consumed by battle.py but zero scenarios use it — untested calibration point |
phase-48.md — Postmortem |
| 48 | target_selection_mode consumed by battle.py, always defaults to threat-scored, no scenario overrides |
phase-48.md — Postmortem |
| 48 | roe_level only in 2 of ~37 scenarios; other candidates (COIN, peacekeeping) missing |
phase-48.md — Postmortem |
| 48 | phase-48.md — Postmortem | |
| 48 | victory_weights consumed by engine.py but no scenario uses it — composite victory scoring untested |
phase-48.md — Postmortem |
| 48 | sead_effectivenessiads_degradation_ratesead_arm_effectivenessdrone_provocation_prob |
phase-48.md — Postmortem |
| 48 | phase-48.md — Postmortem | |
| 51 | phase-51.md — Known Limitations | |
| 51 | phase-51.md — Known Limitations | |
| 51 | No scenarios exercise VLS magazine_capacity or mine encounters end-to-end (accepted limitation — structurally wired; unit tests verify code paths) | phase-51.md — Known Limitations |
| 48 | advance_speed in _EXTERNAL_KEYS but it's not consumed — false pass |
phase-48.md — Postmortem |
| 48 | calibration_overrides is free-form dict[str, Any] — no schema validation, mistyped keys pass silently |
phase-48.md — Postmortem |
| 53 | sead_arm_effectiveness defined on IadsConfig but never consumed in any code path |
phase-53.md — Postmortem |
| 53 | drone_provocation_prob in CalibrationSchema but never consumed by any engine |
phase-53.md — Postmortem |
| 54 | phase-54.md — Postmortem | |
| 54 | seeker_fov_deg dead YAML field |
phase-54.md — Postmortem |
| 55 | phase-55.md — Postmortem | |
| 58 | apply_casualties / degrade_equipment unwired — methods exist on Unit but not called from battle.py. Behavioral application deferred to calibration phase that accounts for progressive unit degradation. |
phase-58.md — Known Limitations |
| 58 | Fuel consumption unwired — fuel gate (check) works but fuel depletion (consumption) commented out in battle.py movement loop. Rate needs per-vehicle-type calibration and resolution-aware scaling. | phase-58.md — Known Limitations |
| 58 | Air routing uses hardcoded Pk values (missile_pk=0.5, weapon_pk=0.4, interceptor_pk=0.4) — should read from weapon definitions when scenarios enable enable_air_routing: true. |
phase-58.md — Known Limitations |
| 59 | Ice crossing pathfinding — frozen water bodies not traversable (requires pathfinding graph changes to add temporary edges) | phase-59.md — Deferrals |
| 59 | Vegetation height LOS blocking — tall vegetation (>2m) should block ground-level LOS (requires DDA raycaster modification) | phase-59.md — Deferrals |
| 59 | Bridge capacity enforcement — units lack weight field, so capacity_tons gate cannot be applied | phase-59.md — Deferrals |
| 59 | Ford crossing routing — river ford traversal requires pathfinding integration | phase-59.md — Deferrals |
| 59 | Road snow degradation — _ROAD_SPEED_FACTORS hardcoded table needs per-snow-depth refactoring |
phase-59.md — Deferrals |
| 60 | Fire spread cellular automaton (wind-biased spread between cells) — fire zone creation wired, spread deferred to calibration | phase-60.md — Deferrals |
| 60 | environment_config scenario YAML — pre-placed smoke/fog zones and season overrides |
phase-60.md — Deferrals |
| 60 | Burned zone concealment reduction — BurnedZone.concealment_reduction=0.5 exists but not consumed in detection |
phase-60.md — Deferrals |
| 60 | Fire damage application to units — units_in_fire() called/logged, burn damage not applied |
phase-60.md — Deferrals |
| 60 | Road surface dust suppression — dust generation doesn't distinguish paved roads | phase-60.md — Deferrals |
| 60 | Artificial illumination / flares — no flare deployment mechanic exists | phase-60.md — Deferrals |
| 61 | CarrierOpsEngine full battle loop wiring — instantiated but CAP/sortie/recovery needs air sortie dispatch | phase-61.md — Deferrals |
| 61 | Beaufort > 6 helicopter deck landing abort — no helicopter-carrier recovery tracking | phase-61.md — Deferrals |
| 61 | Beaufort > 7 carrier flight ops suspension — requires CarrierOpsEngine battle loop integration | phase-61.md — Deferrals |
| 61 | Landing craft 10% casualty risk at Beaufort > 5 — no landing craft type detection | phase-61.md — Deferrals |
| 61 | Sea spray/salt fog maritime obscurant — needs ObscurantsEngine integration | phase-61.md — Deferrals |
| 61 | SHF/EHF rain attenuation for comms — needs per-equipment frequency tracking | phase-61.md — Deferrals |
| 61 | Ionospheric storm effects on HF — needs space weather events | phase-61.md — Deferrals |
| 61 | Hull natural period per ship class — hardcoded 10s/12s, should come from YAML | phase-61.md — Deferrals |
| 62 | Dehydration/water consumption — needs water supply tracking in logistics | phase-62.md — Deferrals |
| 62 | Environmental fatigue acceleration — temperature-driven fatigue needs fatigue accumulation wiring | phase-62.md — Deferrals |
| 62 | MOPP comms → C2 effectiveness full chain — voice clarity → order execution | phase-62.md — Deferrals |
| 62 | Turbulence → gun accuracy — no turbulence model in WeatherEngine | phase-62.md — Deferrals |
| 62 | Wind shear (altitude-dependent wind) — needs new wind profile model | phase-62.md — Deferrals |
| 62 | Surface roughness → CBRN mixing height — needs per-terrain roughness data | phase-62.md — Deferrals |
| 63 | MissileEngine per-tick update — launch ships but flight-to-impact resolution deferred | phase-63.md — Deferrals |
| 63 | MissileDefenseEngine intercept — requires missile-as-contact detection | phase-63.md — Deferrals |
| 63 | Formal DEGRADED unit status — threshold logging only, no enum value or auto Pk/movement penalties | phase-63.md — Deferrals |
| 63 | FOW confidence-weighted assessment — uses simple contact count, not confidence mapping | phase-63.md — Deferrals |
| 63 | RTD to HEALTHY — restores to MINOR_WOUND only, full rehabilitation deferred | phase-63.md — Deferrals |
| 63 | Logistics event feedback — SupplyDelivered/RouteInterdicted/ConvoyDestroyed events unsubscribed | phase-63.md — Deferrals |
| 64 | CommandEngine full hierarchy wiring — authority check skipped when command_engine=None | phase-64.md — D1 |
| 64 | Order delay enforcement queue — delay computed but not enforced | phase-64.md — D2 |
| 64 | Misinterpretation parameter modification — logged but order params unchanged | phase-64.md — D3 |
| 64 | Planning result injection — auto-advances without COA/wargaming results | phase-64.md — D4 |
| 64 | ATO entry consumption — sorties_today never incremented after air engagement | phase-64.md — D5 |
| 64 | Stratagem duration and expiry — active stratagems never expire | phase-64.md — D6 |
| 64 | Deception effect on enemy AI — no false force disposition in FOW | phase-64.md — D7 |
| 64 | Hardcoded echelon_level=5 for all units in DECIDE handler | phase-64.md — D8 |
| 64 | Hardcoded mission_type=0 (ATTACK) for all orders | phase-64.md — D9 |
| 64 | Economy-of-force/feint unit selection by list position | phase-64.md — D10 |
| 64 | PropagationConfig private attribute mutation from battle.py | phase-64.md — D11 |
| 66 | Guerrilla retreat movement — disengage evaluated but unit doesn't physically relocate | phase-66.md — D1 |
| 66 | Population center spatial lookup — falls back to 0.0 density when population_engine absent | phase-66.md — D2 |
| 66 | IED auto-emplacement by insurgent AI — only pre-placed IEDs supported | phase-66.md — D3 |
| 66 | Mine sweeping hardcoded to CONTACT type only | phase-66.md — D4 |
| 66 | AmphibiousAssaultEngine — full beach assault state machine deferred (needs scenario infrastructure) | phase-66.md — D5 |
| 66 | ConditionsEngine replacing EMEnvironment — conditions_facade added alongside, migration deferred |
phase-66.md — D6 |
| 66 | P4 dead code (shadow_azimuth, solar/lunar, deep_channel_depth) — allowlisted not removed | phase-66.md — D7 |
| 66 | Data link range degradation — binary gate only, gradual C2 loss deferred | phase-66.md — D8 |
| 66 | Propulsion altitude performance — cruise_altitude_m not wired to altitude-dependent Pk | phase-66.md — D9 |
| 66 | SimulationContext TODO cleanup — cosmetic, deferred | phase-66.md — D10 |
| 85 | Aggregation engine.py wiring deferred — automatic LOD-tier-based aggregate/disaggregate in campaign tick not wired | phase-85.md — Accepted Limitations |
| 85 | 1000-unit performance benchmark not validated — no 1000-unit scenario exists yet | phase-85.md — Accepted Limitations |
| 88 | SoA morale/engagement integration structural only — arrays available but not driving batch computation yet | phase-88.md — Known Limitations |
| 88 | sync_positions_to_units() exists but unused — movement updates Unit objects directly |
phase-88.md — Known Limitations |
| 88 | max_range extraction requires unit_weapons dict — not always available |
phase-88.md — Known Limitations |
Conventions¶
- Each phase file is a living document — updated as work happens, not just at the end.
- Sections within a phase: Summary, What Was Built, Design Decisions, Deviations from Plan, Issues & Fixes, Open Questions, Known Limitations, Lessons Learned.
- When a decision in one phase affects another, note it and cross-reference.
- Known Limitations / Post-MVP Refinements: every phase should document deliberate simplifications. The index table above aggregates them for easy review.
- Post-MVP phases (11+): Same devlog conventions apply. Create
phase-{N}.mdwhen work begins. Update the table above from "Planned" → "In Progress" → "Complete" with link. New limitations discovered during post-MVP work must be added to both the phase devlog AND the refinement index above, AND the deficit-to-phase mapping indevelopment-phases-post-mvp.md. - Deficit resolution: When a post-MVP phase resolves a deficit from the index above, mark it with a strikethrough and note which phase resolved it. Update the deficit-to-phase mapping in
development-phases-post-mvp.mdaccordingly.