Repository navigation
Stage 0: AABB #425
Description
Migrated from Method backlog
This issue was created from a legacy filesystem backlog card. GitHub Issues are now the live work tracker; repository docs remain Method evidence.
Source backlog: docs/method/backlog/cool-ideas/MATH_tumble-tower-stage-0-aabb.md
Original lane: cool-ideas
Original legend: MATH
Original backlog card
Milestone: Tumble Tower | Priority: P2
Status: active cool idea. Task DAG issue #231 is still open and blocks the
Tumble Tower physics ladder/course (#232, #235, #238).crates/warp-geom
already provides AABB geometry and deterministic broad-phase scaffolding, but
no Tumble Tower gravity/contact-resolution simulation or physics fingerprint
exists yet.
Stage 0: AABB
Issue: #231
User Story: As a learner studying deterministic physics, I want the simplest possible physics simulation (axis-aligned bounding boxes with gravity and stacking) so that I can understand deterministic collision detection from first principles.
Requirements
- R1: Implement 2D AABB (axis-aligned bounding box) representation: position, half-extents, velocity.
- R2: Implement gravity as a constant downward acceleration applied per tick.
- R3: Implement AABB-vs-AABB overlap detection (separating axis test on 2 axes).
- R4: Implement contact resolution: push overlapping boxes apart along the minimum penetration axis; zero out velocity along the contact normal.
- R5: Simulation arithmetic uses
F32Scalarby default, withDFix64as the
fixed-point lane where the feature is enabled; avoid rawf32in the
authoritative update path. - R6: Per-tick
physics_fingerprintfor determinism verification.
Acceptance Criteria
- AC1: A single box dropped from height settles on the ground plane within 60 ticks.
- AC2: A stack of 5 boxes remains stable for 200 ticks (no interpenetration, no drift).
- AC3: Two runs with identical initial conditions produce identical per-tick fingerprint sequences.
- AC4: Golden vector: specific 5-box stack scenario produces a known
physics_fingerprintat tick 200.
Definition of Done
- Code reviewed and merged
- Tests pass (CI green)
- Documentation updated (if applicable)
Scope: AABB representation, gravity, overlap detection, contact resolution, fingerprinting.
Out of Scope: Rotation (Stage 1); friction/restitution (Stage 2); sleeping (Stage 3); networking.
Test Plan
- Goldens: Golden fingerprint sequence for a 5-box drop scenario over 200 ticks.
- Failures: Box with zero half-extents (degenerate AABB, rejected at construction); negative gravity (boxes fly up, simulation still valid).
- Edges: Two boxes landing simultaneously; box exactly touching ground (zero penetration); very high stack (20 boxes).
- Fuzz/Stress: Property test: random initial positions and velocities for 10 boxes, verify no interpenetration after 500 ticks of settling.
Blocked By: none in the task DAG; implementation is the first Tumble Tower
physics slice.
Blocking: stage-1-rotation, lockstep-harness, visualization
Est. Hours: 6h
Expected Complexity: ~450 LoC
Activity
coderabbitai commentedon Jun 1, 2026
🔗 Related PRs
#4 - Core: add deterministic math module [merged]
#8 - feat(geom): rmg-geom foundation (split PR 2) [merged]
#182 - [
#177] Deterministic trig: pin error budget oracle [merged]#240 - docs: add Demo 3 'Tumble Tower' scenario spec [merged]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!