## tracecmp report: recap-b1-compare.jsonl - build: recap-7584bad-20260908T0615Z started: 2026-09-08T06:40:02Z inline_max: 256 - calls: 4284 compared: 4284 diverged: 0 invalid records: 0 warnings: 0 - coverage: 4284 guarded call(s), 0 undeclared write(s) in 0 call(s); 0 hook(s) unstated, 0 contradicted | hook | calls | modes | compared | diverged | errors | |---|---|---|---|---|---| | Game::ServerPlayer::ComputeBudget | 4284 | compare:4284 | 4284 | 0 | 0 | ### coverage | hook | verdict | compared regions | guards | undeclared writes | unmodelled | |---|---|---|---|---|---| | Game::ServerPlayer::ComputeBudget | partial | budget, inputs, research_alloc | budget_object | 0 | 4 | #### Game::ServerPlayer::ComputeBudget — not checked by this run - (high) slots 1, 2, 3, 4, 7 and 11 are produced by callees this milestone does not model (per-system output, trade, ship-carried population, a second manager, the build-queue spend) — they are copied out of the original's own output and back into the same slots, so they match BY CONSTRUCTION and prove nothing [declared input boundary; see budget_inputs.h] - (high) ServerSystem::ComputeOutput repairs damaged ships in orbit — replace mode runs the original a second time on a scratch Budget to harvest the six unmodelled slots, so that repair happens TWICE per turn in replace mode and nothing in the trace would show it [guard:budget_object does not reach the ships; unverified] - (medium) the difficulty-mods row from StrategyServer::GetDifficultyMods — not reachable from a ServerPlayer, so the two relevant entries are fitted constants measured from the B1 trace rather than snapshotted inputs - (low) the research-allocation vector's heap block — only the element count is compared; the three words are heap pointers the default policy ignores