fix(geometry): carry the no-void probe reading through the census reclassification list (#3366) - #3374
fix(geometry): carry the no-void probe reading through the census reclassification list (#3366)#3374BIMvoice wants to merge 1 commit into
Conversation
…lassification list (#3366) `reclassifications` carried `rep` and `far` — both inputs to `HostRow::is_torn_solid` that move the gated defect population without any count moving — but not `pre`. When a host's no-void probe starts or stops failing, `pre` flips `Open(n) <-> Failed` while `open`, `tris`, `collapsed` and `alt` all hold, so only the derived `is_torn_solid` predicate saw it. The dark-probe direction landed in `classify`'s "no longer a genuine watertightness defect" arm with nothing else to attribute it to, so the host filed under `improved`, `requires_bless()` stayed false, and the lane stayed green while the census silently lost the ability to tell "arrived torn" apart from "the boolean tore it" for that host. Carrying `pre` in `reclassifications` routes both directions of a no-void flip into `changed`, which requires a bless. This changes the label on the probe-recovers direction too (previously `regressed`, now `changed`) — both outcomes are red and both require a bless, so this does not weaken the gate, but it does update the pre-existing test that encoded the old label. Claude-Session: https://claude.ai/code/session_01QPHChk3Ve9N519A4kY7436
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 2 included reviews per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe census golden tests now classify no-void probe failures and recoveries as ChangesPreVoid reclassification
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This localized test-only change corrects census handling for no-void probe state transitions, with both directions covered and the relevant test suite passing; no actionable merge-blocking risk remains beyond normal checks and review. Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
Comment |
Viewer benchmark✅ No threshold regressions detected. 01_Snowdon_Towers_Sample_Structural(1).ifcBaseline recorded 2026-07-01T20:31:05.538Z on github-actions ubuntu-latest, viewer-benchmark-ci (headless Chrome, SwiftShader ANGLE), production build.
AC20-FZK-Haus.ifcBaseline recorded 2026-07-01T20:30:59.972Z on github-actions ubuntu-latest, viewer-benchmark-ci (headless Chrome, SwiftShader ANGLE), production build.
Refresh the baseline from a CI run: dispatch the Benchmark workflow with |
|
@coderabbitai review |
✅ Action performedReview finished.
|
Summary
HostRow::is_torn_solidreadsopen,rep,far, andpre(the no-void probe reading).reclassifications— the list ofis_torn_solidinputs that move the gated defect population without any count moving — carriedrepandfar, but notpre.preflipsOpen(n) <-> Failedwhileopen,tris,collapsedandaltall hold, so only the derivedis_torn_solidpredicate saw it move. A probe going dark landed inclassify's "no longer a genuine watertightness defect" arm with nothing else to attribute it to, so the host filed underimproved,requires_bless()stayed false, and the lane stayed green while the census lost the ability to distinguish "arrived torn" from "the boolean tore it" for that host.preinreclassifications, per the issue's suggested fix. Both directions of a no-void flip now route intochanged, which requires a bless. The probe-recovers direction changes label too (previouslyregressed, nowchanged) — both are red and both require a bless, so this does not weaken the gate; it updates the pre-existing test (a_no_void_pass_that_stops_failing_makes_the_host_a_gated_defect, renamed) that encoded the old label.rust/geometry/tests/census_golden/mod.rsis the only occurrence.Test plan
a_probe_that_starts_failing_is_a_reclassification_not_an_improvement, confirmed it fails against the pre-fix code (d.improvednon-empty,requires_bless() == false).preinreclassifications.d.changed, notd.improved/d.regressed).census_goldensuite green:cargo test -p ifc-lite-geometry --test triangulation_invariance --features triangulation-alt census_golden— 19 passed.cargo clippy -p ifc-lite-geometry --tests --features triangulation-altclean.rust/geometry/tests/; no changeset (matches this repo's convention for test-only fixes, e.g. e2c67f0).https://claude.ai/code/session_01QPHChk3Ve9N519A4kY7436
Summary by CodeRabbit
Bug Fixes
Tests