Repository navigation
Conversation
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Zephyrus task: fix BaseScanning #324 geometry nondeterminism. This draft PR stacks on
gpt-burst/1022z-bs-296-geometry.What changed
Dense point rows are now sorted by canonical coordinates before artifacts are written. The scene extractor canonicalizes point order before ground-plane and sequential wall RANSAC sampling, so a permutation of the same cloud produces the same fitted wall geometry. The regression tests live in
backend/server/tests/test_determinism.py; implementation changes are inbackend/server/dense/run.pyandbackend/server/eval/extract.py.Why
The dense stage produced the same 109,252-point multiset in different orders across runs. The wall fit seeded sampling from array indices, so that order changed the fitted wall and caused the real geometry assertion to fail intermittently.
Verification
env -u NODE_ENV OMP_NUM_THREADS=1 uv run pytest -q server/tests/test_determinism.py— 1 failed.OMP_NUM_THREADS=1 uv run pytest -q tests/test_real_cpu_geometry.py::test_scene_stage_wall_ground_and_residual, run serially 20 times — 20 passed, 0 failed.env -u NODE_ENV OMP_NUM_THREADS=1 uv run pytest -q server/tests/test_determinism.py server/tests/test_windows.py::test_sparse_union_keeps_sfm_tracks server/eval/tests/test_harness_defects.py::test_dense_bend_stays_one_meter_wall— 4 passed.uv run ruff check server/dense/run.py server/eval/extract.py server/tests/test_determinism.pyanduv run ruff format --check server/dense/run.py server/eval/extract.py server/tests/test_determinism.py— passed.server/tests/test_skeleton.py::test_import_contractsandserver/tests/test_windows.py::test_sparse_union_keeps_sfm_tracks. Each passed when rerun alone on fix: make dense geometry deterministic #335 and on6152e82f, so they are suite-order or shared-state failures, not deterministic failures from this change. The 4 baseline failures are expired gate pins, and the 14 errors are the existing cold-restart import errors. Pytest-xdist was not installed, so the full suite ran serially.UI changes
N/A. This changes server geometry ordering only.
Risk
The canonical order preserves dense and sparse track alignment. The full suite remains red because of the baseline failures and two order-sensitive failures that reproduce only in the full run.
Checklist
🤖 Generated with Claude Code
The dense output row order and
dense.ply/cloud.npzfile digests change by design. The canonical order makes repeated runs stable. The public dense-stage regression runsrun_denseon shuffled points, readscloud.npzandtracks.npz, and compares each observation to its physical point. It fails on3ef5d7c7with swapped track IDs and passes atbf171d40. Downstream consumers must not rely on the previous incidental row order.