Two findings from Codex's review of #13 at 371c512, listed here and not fixed, as the manager decided for the final #13 turn.
- Non-check assumptions are never compared with the rules (4114676179,
verification/hsverify/resultcheck.py, assumption_mismatches). The ETH3D case declares corner_allowance and battery_width because its expected sweep ranges depend on them, but the check only matches check ids and their threshold_ft. If either rule changes, the mismatch isn't reported as an assumption change, so the case's expectations can fail or pass for the wrong reason.
- Portrait replays pass
replaycheck (4114676183, verification/hsverify/replaycheck.py). When a replay's JPEG and its declared w/h are both portrait, the size check passes and the intrinsics can fit, although downstream projection assumes the landscape sensor image (AGENTS.md: rotate the image and you must rotate the intrinsics). Reject portrait keyframes, or require the intrinsics to match the rotation.
Other deferred verifier items are in #125.
🤖 Generated with Claude Code
Two findings from Codex's review of #13 at
371c512, listed here and not fixed, as the manager decided for the final #13 turn.verification/hsverify/resultcheck.py,assumption_mismatches). The ETH3D case declarescorner_allowanceandbattery_widthbecause its expected sweep ranges depend on them, but the check only matches check ids and theirthreshold_ft. If either rule changes, the mismatch isn't reported as an assumption change, so the case's expectations can fail or pass for the wrong reason.replaycheck(4114676183,verification/hsverify/replaycheck.py). When a replay's JPEG and its declaredw/hare both portrait, the size check passes and the intrinsics can fit, although downstream projection assumes the landscape sensor image (AGENTS.md: rotate the image and you must rotate the intrinsics). Reject portrait keyframes, or require the intrinsics to match the rotation.Other deferred verifier items are in #125.
🤖 Generated with Claude Code