The #141 bug class, written up so it is not re-introduced. GetSegmentToEntity
recomputes ONLY when segmentModified is set; JointedMover::GetSegmentToWorld is
what sets it -- and the binary's own GetMuzzlePoint @004b9948 goes through it
(FUN_00424da8), so every muzzle query in the 1995 image performs the
joints->segments refresh. Four port sites hand-composed instead, one of them
commented "the faithful FUN_004b9948".
Records the four rules the investigation actually cost:
(a) never hand-compose; call GetSegmentToWorld
(b) never force the dirty flag to fix a stale read -- that stand-in scored
IDENTICALLY to the faithful fix while patching only one consumer
(c) "peer POV only" geometry bugs = suspect a cache the local render pass
refreshes for free, before suspecting replication (it was provably fine)
(d) a partial-looking score: check PREFIX vs interleaved before calling it
partial -- these were a clean prefix ending when the peer first had a
twist to carry, so the fix was complete and "64% fixed" was wrong
(e) the probe trap: one shared static sampled every Nth call hides one of two
alternating instances entirely
#141 closed with the full write-up; #148 filed for the torso replication
cadence (13 records in a 5-minute run) which is a separate, real problem and
likely bears on #37 and #70.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018SgmXGNMXavXiafKXf9MDC