sots-re/verify/results/compare/mf-before.md

3.1 KiB

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]