## tracecmp report: mf-before-compare.jsonl - build: recap-7584bad-20260908T0615Z started: 2026-09-08T07:22:42Z inline_max: 256 - calls: 45 compared: 45 diverged: 8 invalid records: 0 warnings: 0 - coverage: 45 guarded call(s), 42 undeclared write(s) in 15 call(s); 0 hook(s) unstated, 0 contradicted | hook | calls | modes | compared | diverged | errors | |---|---|---|---|---|---| | Game::StrategyServer::MoveFleet | 45 | compare:45 | 45 | 8 | 0 | ### coverage | hook | verdict | compared regions | guards | undeclared writes | unmodelled | |---|---|---|---|---|---| | Game::StrategyServer::MoveFleet | partial | pos, prev_pos, rng, ship[0].range, ship[1].range, ship[2].range, +7 | fleet | 42 in 15 call(s) | 6 | #### Game::StrategyServer::MoveFleet — not checked by this run - (high) on arrival: dispatches SEFleetArrived and runs one of three arrival handlers by destination kind (enter system / join fleet / stop at point) — declared input boundary -- an arriving call is expected to differ in all of it, and none of it is declared, so the compare says nothing about arrivals [guard:fleet sees the fleet's own words; the event and the system do not] - (high) on departure: cancels every still-acting ship (with a log line each) and calls ServerSystem::FleetDeparts, which rewrites the system's ownership bits — writes through pointers to ships and to the system - (medium) the tanker top-up refuels other ships in the fleet — the per-ship range regions would show it, but ours does not model it, so a fleet with a tanker diverges for a known reason - (medium) a node-line waypoint's step comes from the stutter profile — NodeLineStep / BuildStutterSegments are written and unit-tested but not wired in; the hook steps every waypoint type as speed x dt, so a node-line leg is knowingly mis-stepped and only its type is recorded [declared gap: docs/B4.md] - (medium) a missed probabilistic jump scatters the fleet in a random direction — the direction is a second draw whose mapping is not modelled; ours leaves the position alone and reports the scatter distance, so the generator region diverges by one word on a miss - (medium) the route revalidation and the waypoint list itself — declared input boundary; the waypoint vector is not a region - guard hits in compare mode: fleet+0xa0:4, fleet+0xdc:1, fleet+0x10c:1, fleet+0xcc:1, fleet+0xdb:2, fleet+0xe0:26 ### Game::StrategyServer::MoveFleet: first 5 of 8 divergent call(s) - call_id 42 (mf-before-compare.jsonl:44) side.pos.after.v.y [exact] orig={"t":"f32","v":3.1515913} ours={"t":"f32","v":3.15159106} - call_id 79 (mf-before-compare.jsonl:81) side.pos.after.v.y [exact] orig={"t":"f32","v":1.58417809} ours={"t":"f32","v":1.58417821} - call_id 80 (mf-before-compare.jsonl:82) side.pos.after.v.y [exact] orig={"t":"f32","v":4.21149492} ours={"t":"f32","v":4.21149445} - call_id 116 (mf-before-compare.jsonl:118) side.pos.after.v.y [exact] orig={"t":"f32","v":0.0167649984} ours={"t":"f32","v":0.0167651176} - call_id 118 (mf-before-compare.jsonl:120) side.pos.after.v.y [exact] orig={"t":"f32","v":3.14307928} ours={"t":"f32","v":3.14307904} other divergent call_ids: [154, 156, 157]