The int_64 branch condition `-(1 << 63) <= value` overflowed in
GDScript's signed 64-bit arithmetic, making the branch unreachable.
Negative values beyond int_32 range were incorrectly encoded as
uint_64 (0xcf) instead of int_64 (0xd3). Replaced with `value < 0`.
Updated boundary tests BV-N15 and BV-N16 to expect correct int_64
header byte.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Regression guards for Sprint 9 QA features:
- F12 bug report (2): no-crash without handler, no queued input action
(stubs for when #495 WRONG button lands)
- Gauntlet UI hidden (3): no gauntlet nodes visible in default mode,
no room_id/gauntlet_mode in normal snapshots, stays hidden across
multiple ticks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add SimBridge._last_snapshot = null to P3 before_test() (contamination risk)
- Clarify mono.is_visible is custom property, not CanvasItem builtin
- Camera smoothing test uses approximate equality instead of exact
- Propagate inner _encode_message errors in array/dict encoding
- Add explanatory comment on int_64 encoder branch
- Document unfalsifiable gauntlet guard as intentional future-proof
- Remove loose D-053 citation from LERP_SPEED pin
- Assert FogOverlay is sibling of FogGroup under World
- Add CANVAS_MODAL=30 (ModalLayer) assertion in P3-Z04
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Sprint 9 client deliverables: test infrastructure backbone and bugfix.
-(1 << 63)overflowed making the branch unreachable; negative values beyond int_32 now correctly encode as0xd3.Test suite: 315 tests, 0 new failures.
Tickets
Test plan
make test-clientpasses headless (all 33 new tests green)🤖 Generated with Claude Code
Review: client -> main (type: code)
Hoshe (Code Quality): REQUEST_CHANGES
The int_64 fix is correct. Test suite structure is sound.
SimBridge._last_snapshot = null— inter-test contamination riskmono.is_visiblemay return null/Callable — should bemono.visibleGameState.get("room_id")assertion unfalsifiable_encode_messagesilently drops inner errorsTyre (Architecture): APPROVE
Architecturally consistent with D-014, D-030, D-049, D-053, D-054. Int_64 fix important for Rust interop.
is_equal_approxmono.is_visibleis custom propertyVerdict: CHANGES REQUESTED
Re-Review: client -> main (type: code) — Post-Fix
Hoshe (Code Quality): APPROVE
All 5 original items verified as FIXED. Error propagation in messagepack encoding is a real correctness improvement.
_last_snapshot = nullmono.is_visibleambiguityroom_idassertionTyre (Architecture): APPROVE
All 5 original items verified as FIXED. Targeted corrections with no collateral scope.
mono.is_visibleverificationVerdict: APPROVED
Pull request closed