Skip to content

[obvious-fleet] Backend inventory after the port into backend/: checks run, one post-move path bug fixed - #248

Merged
SamGu-NRX merged 3 commits into
alphafrom
obv/burst2-20261015-bs-backend-inventory
Oct 16, 2026
Merged

SamGu-NRX merged 3 commits into
alphafrom
obv/burst2-20261015-bs-backend-inventory

Conversation

@obvious-autobuild

@obvious-autobuild obvious-autobuild Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

fleet-packet: burst10-land-bs-status-inventory

Human author: Sam Gu (sgu07966@gmail.com)

What changed and why

This PR could not land because it conflicted with alpha: both this branch and the capture chain added backend/docs/STATUS.md. The merge of origin/alpha (72062663) into this branch is now committed and pushed; nothing else was changed by hand, no rebase, no force-push.

The single conflicted file, backend/docs/STATUS.md, is now one document that keeps every finding from both halves: the burst2 inventory (whole-package checks, per-component status, the SSR fix, follow-ups, CI proposal) and the capture-chain status (capture-path and orchestrator proofs, blocked list, failures table). Where the runs disagree, the newest evidence wins and the older number is kept, labeled. The two real disagreements:

  • Server API end to end. The burst2 inventory recorded "not verified"; the capture chain since proved the in-process journey end to end. The merged doc records the newer proof in the Server API section.
  • SSR hygiene. The capture-chain run recorded a pre-existing SSR-hygiene failure (its tree predated the fix); this branch's fix (f4a8536c) supersedes it — the SSR tests pass on the merged tree, 7/7.

Merged alpha

  • alpha SHA merged: 72062663d47601cc82920474d6106d1e8a8ebcb8 ("Merge pull request feat(placement): solve each capture's merged scene instead of a reference #273"). Merge commit d7f037e5, follow-up doc commit dbc3f002, both pushed to obv/burst2-20261015-bs-backend-inventory (a normal merge; branch is not forced).
  • Conflicted files: exactly one — backend/docs/STATUS.md (add/add). Resolution: one merged document (capture-path proof → orchestrator proof → whole-package table → components → evaluator results → fix record → blocked list → merged failures table → follow-ups → CI proposal), keeping both halves' findings with each run labeled; disagreements resolved newest-evidence-wins as above. Alpha's separate backend/docs/STATUS-W6.md came over cleanly and is untouched. No other file conflicted; git auto-merged the rest (capture-replay chain, orchestrator fixtures, contract tests, Makefile/README updates).
  • Test commands and results, run this session on the pushed head in a fresh clone (~/work/burst10-land-bs-status-inventory on the BaseScanning repo sandbox), from backend/:
    • uv sync --frozen --extra api — clean install (Python 3.12).
    • uv run --frozen pytest tests/test_ssr_overlap_check.py — 7 passed (the branch's fix intact after the merge).
    • make lint — pass (5 import-linter contracts kept, 0 broken).
    • make schemas — pass; make validate — pass (5 scenes, 16 verdicts, 61 labels, 36 packets).
    • make test — 1363 passed, 19 skipped, 4 failed, 14 errors in 4:52. The 4 failures are the known expired SD-96 window (server/eval/tests/test_gates.py, WS-09 policy call, follow-up 1). The 14 errors are pre-existing on pure alpha — verified there identically: scripts/capture_cold_restart.py imports load_receipt from scripts.replay_capture, which alpha's copy does not define. Neither set is introduced by this merge.
    • make gates-offline — pass 134, fail 1, warn 1, skip 28; exit 1 (the same expired SD-96 window).
    • make e2e — same table; exit 2 (the eval-gate FAIL exit, matching alpha's baseline).
    • make hygiene — FAIL: deny-list hit on server/orchestrator/tests/data/packets/synthetic-meter.tar; byte-identical failure on pure alpha (pre-existing since f0df5cd9), not introduced by this merge.
    • Orchestrator stub suite (STATE_BACKEND=memory STORAGE_BACKEND=local HSS_ORCH_STAGE_STUBS=1 uv run --frozen pytest server/orchestrator/tests) — 172 passed.
    • Orphan suites (uv run --frozen pytest ios-kit/tests scripts/lamar/tests scripts/meter_models/tests scripts/real_house/tests) — 32 passed.
    • Capture-path tests (uv run --frozen pytest tests/test_capture_fixture_flow.py tests/test_integration_gate.py tests/test_capture_flow_e2e_runner.py tests/test_replay_capture.py) — 17 passed.
    • python -m packetgen --help — exit 0.
  • Both new baseline failures (hygiene deny-list, cold-restart import errors) are recorded in the merged STATUS.md failures table, labeled pre-existing on alpha. Per the task, I fixed nothing beyond the conflict.

What is not verified

  • The pre-existing make hygiene deny-list failure and the 14 cold-restart setup errors — both fail identically on pure alpha; left as found, not fixed (out of scope).
  • The four SD-96 gates failures (expired known-failure window; WS-09 owner's call), so make ci exits 1 — as on both parent runs.
  • make criteria-golden (laser/occluder fixtures unfetchable), the GPU breadth tracks (scene/ B1/B2, recon/ A1–A5; no weights), iOS/Swift suites (no Swift toolchain), live-API e2e (needs CAPTURE_API_URL; never deploy), and make ios-kit (needs the zip shim; not re-run — this merge changes documentation only).
  • PR-level CI: this repository runs only label/size bot checks on backend/ pull requests (no backend CI workflow exists); all verification above is local, on the pushed SHA dbc3f002.

Assumptions

  • The job is "make [obvious-fleet] Backend inventory after the port into backend/: checks run, one post-move path bug fixed #248 merge cleanly": I resolved only the STATUS.md conflict and left alpha's baseline failures unpatched, since the task says to change nothing else and not fix unrelated findings.
  • The merged STATUS.md keeps older runs' numbers labeled rather than deleting them, per "keeps every finding from both, newest evidence winning where they disagree".
  • The burst10 fleet-packet line and this body structure follow the fleet contract for updating an existing PR; the existing title is kept.
  • Work done in a fresh clone ~/work/burst10-land-bs-status-inventory on the existing BaseScanning repo sandbox; no other checkout touched. The sandbox reset once mid-task before anything was pushed; the clone, merge and resolution were redone from scratch with no loss.

🔗 Obvious Project · 🧵 Obvious Thread · 🔀 Obvious PR Artifact

…e git toplevel

After the move into backend/, git rev-parse --show-toplevel points at the
monorepo root, one level above data/hygiene/ssr_shingles.sha256, so the
script crashed with FileNotFoundError. Derive the root from __file__
instead, and pin it with a test. Adds backend/docs/STATUS.md, the
post-port install and check inventory.
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c17af2e9-1a05-4b2d-b6dd-ed9234ae5685

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@obvious-autobuild

Copy link
Copy Markdown
Author

Independent review (Obvious, Autobuild + Max)

Verdict: ready — good to move out of draft. The one code change is correct and minimal, the new test demonstrably bites, and every load-bearing claim in the body and backend/docs/STATUS.md reproduced in my own runs, with two number-level inaccuracies in STATUS.md called out below (non-blocking, one-clause fixes).

Findings (by severity)

  1. [low] backend/docs/STATUS.md:3,5,16 — the "checked on the port commit" test counts are actually the post-fix branch numbers. The doc says it was checked on 2d0911f8 and reports make test | 1205 passed, 17 skipped, 4 failed (line 16; "1205 of 1209" at line 5), while its own "Fixed in this PR" section says the SSR test failed on that commit. Both cannot hold. On 2d0911f8 I measured 1225 tests collected, and a targeted run of tests/test_ssr_overlap_check.py + server/eval/tests/test_gates.py gives 5 failed / 95 passed (1 SSR + 4 gates), so the port commit's full result is 1203 passed / 17 skipped / 5 failed; 1205/17/4 is exactly what runs on this branch after the fix (I measured both). The same table's hygiene row (3093 tracked files) is the base count — so the table mixes the two runs. Smallest fix: one clause, e.g. "counts are from the branch after the fix; on the bare port commit the same run is 1203 passed / 5 failed, the extra failure being the SSR one this PR fixes." The PR body repeats the same numbers, so it needs the same clause.
  2. [low] backend/docs/STATUS.md:83 — "a 121 KB zip with 78 entries": entry count reproduces, size does not. I ran make ios-kit end to end (through a zipfile-based zip shim, same caveat as the doc): staging, the schema cmp and packing all pass, the zip has exactly 78 entries — but it is 12,088,944 bytes (≈12.1 MB). The three tracked fixture dirs alone (ios-kit/fixtures/mini-arkit 4.0M, mini-arkit-lidar 5.3M, mini-photo-only 2.9M) make 121 KB impossible for any zip holding those 78 entries. Smallest fix: change "121 KB" to "≈12.1 MB" (looks like a 12.1 MB → 121 KB transcription slip).
  3. [info, process, non-blocking] Commit attribution. f4a8536c carries author name obvious-autobuild[bot] over Sam Gu's noreply email and no Co-authored-by trailer; sibling fleet PRs in this repo use Sam Gu as the author name plus the autobuild trailer. Worth normalizing on the follow-up commit that picks up 1–2.

What I verified

All on f4a8536c in a fresh clone (Python 3.12.15, uv 0.13.1); commands run from backend/ unless noted:

  • uv sync --frozen — clean install.
  • uv run --frozen --extra api pytest tests/test_ssr_overlap_check.py -v — 7 passed.
  • Revert check: with scripts/ssr_overlap_check.py checked out from 2d0911f8, the raw script exits 1 with FileNotFoundError: …/data/hygiene/ssr_shingles.sha256 (git toplevel, one level above the package), and pytest gives 2 failed / 5 passed — the failures being test_default_root_resolves_inside_the_moved_package and test_repo_has_no_ssr_shingle_overlap. Fix restored: 7 passed. The new test fails without the change.
  • make test (full suite) on head — 4 failed, 1205 passed, 17 skipped in 239s; the four failures are exactly server/eval/tests/test_gates.py::test_committed_fixtures_are_scored_against_their_labels, ::test_offline_table_skips_the_engine_and_passes_the_unpatched_reference, ::test_route_over_the_bar_is_known_until_expiry, ::test_refresh_rewrites_pins_after_a_committed_edit (that file alone: 4 failed / 90 passed).
  • server/eval/gates.yaml:39–43 — the SD-96 known_failure for eth3d-facade/gt-laser-gravel/C/footprint3in carries until: "2026-10-04", expired — the diagnosis (engine behaving as designed; re-extension is the WS-09 owner's call) is right.
  • make lint — exit 0; ruff format "459 files already formatted"; import-linter "Contracts: 5 kept, 0 broken".
  • make schemas, make hygiene ("hygiene ok (3094 tracked files)" on head = base's 3093 + this PR's STATUS.md), make validate ("ok scenes=5 verdicts=16 labels=61 packets=36") — all pass, matching the doc.
  • make gates-offline — "summary: pass 134, fail 1, known_fail 0, warn 1, skip 28"; target exits 1, as documented.
  • Orchestrator stub suite (STATE_BACKEND=memory STORAGE_BACKEND=local HSS_ORCH_STAGE_STUBS=1 VISION_EXTERNAL_CALLS=off SMP_ENVIRONMENT=dev) — 153 passed.
  • Orphan suites run explicitly (ios-kit/tests scripts/lamar/tests scripts/meter_models/tests scripts/real_house/tests) — 32 passed; pyproject.toml:129 testpaths confirms they sit outside make test (follow-up 3 accurate).
  • make e2e — scores 134/1/1/28 with pipeline rows SKIP; and the e2e.py wording wart (follow-up 5) is real: the SKIP message claims "the in-process API is not importable" whenever CAPTURE_API_URL is unset, regardless of importability.
  • PYTHONPATH=packet python -m packetgen --help — all six subcommands listed (bare python -m packetgen from backend/ needs packet/ on the path, consistent with packet/README.md's examples).
  • python -m server.criteria.run --scene data/fixtures/scenes/eth3d-facade/gt-laser/scene.json --out /tmp/c.json — raises CriteriaInputError: occluders_missing at server/criteria/run.py:78, exactly as cited.
  • Fixture store: fetch_fixtures.py --item eth3d-facade-laser reports missing, corroborating follow-up 2's store-access framing.
  • Path-arithmetic audit corroboration: the full suite plus the orchestrator stub suite pass on head, exercising the ROOT/parent arithmetic in gates.py, scene_from_recon.py, server/orchestrator/stubs/_common.py and the test ROOT constants at the new depth.
  • PR shape: draft stacked on feat/port-house-scanning-server (2d0911f8); diff is exactly 3 files (+118/−2). No test CI runs on this branch — the rollup is only Label PR size (SUCCESS), CodeRabbit, Aikido (skipped) — so the local runs above are the actual gate.

What I could not verify

  • GPU breadth tracks (scene/ B1/B2, recon/ A1–A5) — need weights/extras; matches the doc's own "not run" caveat.
  • Live API e2e / packet replay (needs CAPTURE_API_URL; never-deploy standing rule).
  • Byte-compare of pyproject.toml against house-scanning-server@d43d657b (upstream repo not reachable from here).
  • Real zip byte-for-byte output (no zip binary in the sandbox; I used a shim — the same caveat the PR itself declares; the 78-entry count is implementation-independent).
  • make criteria-golden end to end (blocked upstream by the missing laser fixtures, as documented).

@SamGu-NRX
SamGu-NRX changed the base branch from feat/port-house-scanning-server to alpha October 16, 2026 04:28
SamGu-NRX and others added 2 commits October 16, 2026 04:41
Co-authored-by: obvious-autobuild[bot] <262744130+obvious-autobuild[bot]@users.noreply.github.com>

# Conflicts:
#	backend/docs/STATUS.md
Both fail identically on pure alpha and predate this merge; labeled, not patched.

Co-authored-by: obvious-autobuild[bot] <262744130+obvious-autobuild[bot]@users.noreply.github.com>
@SamGu-NRX
SamGu-NRX marked this pull request as ready for review October 16, 2026 05:27
@codemetrics-ai

Copy link
Copy Markdown

Note

Review skipped

Codemetrics is installed on this repository, but it hasn't been added to your team yet.

To enable AI code reviews for this repo, go to your dashboard and add BaseScanning to your team's repositories.

@SamGu-NRX
SamGu-NRX merged commit 254ffd1 into alpha Oct 16, 2026
3 checks passed
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-16T05:28:53.760933Z dbc3f00 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@greptile-apps

greptile-apps Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 4/5

[Low impact] Documentation and test updates after a code move.

The PR appears safe to merge, with a non-blocking correction to the CI status text.

Fix All in Claude CodeFindings

  1. P2 CI blockers are understated ▶
Fix with agent prompt
### Issue 1
backend/docs/STATUS.md:157-158
`make ci` is described as failing for the expired SD-96 window alone. But the merged-tree rows below also record cold-restart setup errors and a hygiene failure, and `make ci` includes both checks. A teammate could resolve SD-96 expecting CI to pass and still hit these failures.

Update this paragraph to distinguish the older runs from the merged tree and list all remaining causes. The existing failures can stay out of scope.

```suggestion
  recorded here, not patched. The expired window caused the eval-gate failures
  in both runs. On the merged tree, `make ci` also remains blocked by the
  cold-restart setup errors and hygiene failure listed below.
```

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

The PR merges the backend inventories and fixes the overlap checker's default root after the move into backend/.

  • The overlap checker finds its hash list inside the moved backend package.
  • The backend status page combines the inventory and capture-chain results.

Acknowledgments: obvious-autobuild[bot] explicitly leaves the expired SD-96 window, hygiene deny-list failure, and cold-restart setup errors unchanged as baseline issues outside this merge's scope. The same author marks fixture-dependent, GPU, Swift, and live-service checks as unverified because their required data, tools, weights, or configuration were unavailable.

Reviews (1) · Last reviewed commit: "docs(backend): record merged-tree baseli..." · Reviewed by Greptile

Comment thread backend/docs/STATUS.md
Comment on lines +157 to 158
recorded here, not patched. `make ci` therefore exits 1 on both runs for
this reason alone.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 CI blockers are understated

make ci is described as failing for the expired SD-96 window alone. But the merged-tree rows below also record cold-restart setup errors and a hygiene failure, and make ci includes both checks. A teammate could resolve SD-96 expecting CI to pass and still hit these failures.

Update this paragraph to distinguish the older runs from the merged tree and list all remaining causes. The existing failures can stay out of scope.

Suggested change
recorded here, not patched. `make ci` therefore exits 1 on both runs for
this reason alone.
recorded here, not patched. The expired window caused the eval-gate failures
in both runs. On the merged tree, `make ci` also remains blocked by the
cold-restart setup errors and hygiene failure listed below.
Prompt To Fix With AI
This is a comment left during a code review.
Path: backend/docs/STATUS.md
Line: 157-158

Comment:
**CI blockers are understated**

`make ci` is described as failing for the expired SD-96 window alone. But the merged-tree rows below also record cold-restart setup errors and a hygiene failure, and `make ci` includes both checks. A teammate could resolve SD-96 expecting CI to pass and still hit these failures.

Update this paragraph to distinguish the older runs from the merged tree and list all remaining causes. The existing failures can stay out of scope.

```suggestion
  recorded here, not patched. The expired window caused the eval-gate failures
  in both runs. On the merged tree, `make ci` also remains blocked by the
  cold-restart setup errors and hygiene failure listed below.
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Claude Code Fix in Codex

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 effective changed lines.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant