sots-engine/src/app
alex 26b041106f PL: decompose the /Sim/players residual; S00 PvSav snapshot; T31 recovers its difficulty column from the save; the bankruptcy protection factor is a widened float
Closed 2 on the reference pair and 4 on pair 2, regressed 0, with no operator
input. Measured, both pairs, never netted.

- S00 stamps PvSav from Sav on every live player, before any phase can move it.
  0 closed on pair 1 (a no-op there), 2 on pair 2.
- T31 recovers the per-player difficulty column by recomputing BnkEl from the
  colony state the input save was written from and comparing against the BnkEl
  the save carries. That removes the --ai-player flag as a blocker and turns the
  phase's self-check into a real one: it used to compare its POST-turn result
  against the PRE-turn stored value, so its 6-of-8 only ever covered the six
  players whose limit does not move. The load-time check passes for every live
  player of all eleven corpus saves. T31 Blocked -> Partial; BnkPr still needs
  the tuning constant.
- BANKRUPTCY_PROTECTION_LIMIT_FACTOR is multiplied in as fmul dword ptr, so it
  is a float32 in the image; the engine narrows it now. Zero leaves move on this
  corpus -- all seven of its BnkPr records land where the two constants agree --
  and three hand-written test expectations moved (rule 23).

docs/PL-players-residual.md carries the decomposition, the predictions written
before the build, where they were wrong, and the ranked remainder.
2026-09-08 16:34:40 -04:00
..
alliance.cpp lane A2: S04, the alliance mask -- 80 player-records, 560 fields, 0 mismatches 2026-09-08 12:44:00 -04:00
alliance.h lane A2: S04, the alliance mask -- 80 player-records, 560 fields, 0 mismatches 2026-09-08 12:44:00 -04:00
CMakeLists.txt merge lane G3: civilian growth; app CMake list and includes union-resolved into their constructs (rule 22) 2026-09-08 15:54:32 -04:00
construction_phase.cpp game/sim + app: ship construction -- the build-queue completion bookkeeping, and S11's sub-pass wired in 2026-09-08 14:39:20 -04:00
construction_phase.h game/sim + app: ship construction -- the build-queue completion bookkeeping, and S11's sub-pass wired in 2026-09-08 14:39:20 -04:00
event_phase.cpp P11: post the no-research event into the save's turn bucket 2026-09-08 15:39:42 -04:00
event_phase.h P11: post the no-research event into the save's turn bucket 2026-09-08 15:39:42 -04:00
growth_phase.cpp S11 civilian growth; fix ComputeBudget's interest literals 2026-09-08 15:52:38 -04:00
growth_phase.h S11 civilian growth; fix ComputeBudget's interest literals 2026-09-08 15:52:38 -04:00
main.cpp P11: post the no-research event into the save's turn bucket 2026-09-08 15:39:42 -04:00
phase_catalog.cpp PL: decompose the /Sim/players residual; S00 PvSav snapshot; T31 recovers its difficulty column from the save; the bankruptcy protection factor is a widened float 2026-09-08 16:34:40 -04:00
phase_catalog.h src/app: the standalone -- load a save, run a turn, write a save 2026-09-08 10:35:45 -04:00
report.cpp Y: model the turn's dominant generator cost, and the tail's turn record 2026-09-08 11:33:36 -04:00
report.h src/app: the standalone -- load a save, run a turn, write a save 2026-09-08 10:35:45 -04:00
trade_raid.cpp Y: model the turn's dominant generator cost, and the tail's turn record 2026-09-08 11:33:36 -04:00
trade_raid.h Y: model the turn's dominant generator cost, and the tail's turn record 2026-09-08 11:33:36 -04:00
treaty.cpp lane T2: the phase's leaf self-report is its own accounting, not the report's 2026-09-08 14:51:12 -04:00
treaty.h lane T2: the treaty-turn stamp; 76 leaves closed across five pairs, 0 regressed 2026-09-08 14:47:47 -04:00
turn.cpp PL: decompose the /Sim/players residual; S00 PvSav snapshot; T31 recovers its difficulty column from the save; the bankruptcy protection factor is a widened float 2026-09-08 16:34:40 -04:00
turn.h game/sim + app: the output -> money chain, the difficulty multiplier's source, T31 2026-09-08 13:49:28 -04:00
turn_record.cpp lane E2: wire the ship census into the turn record; T36 still blocked, now on two named things 2026-09-08 13:25:17 -04:00
turn_record.h lane E2: wire the ship census into the turn record; T36 still blocked, now on two named things 2026-09-08 13:25:17 -04:00
visibility_phase.cpp lane E3: the per-system visibility record, the explored sweep and the system observed-stamp 2026-09-08 13:38:12 -04:00
visibility_phase.h lane E3: the per-system visibility record, the explored sweep and the system observed-stamp 2026-09-08 13:38:12 -04:00