Skip to content

fix(solver): contact-aware void guard for Clean3D Stage A (consumer of SAM#230 source evidence) - #89

Draft
michaldengusiak wants to merge 3 commits into
sow/2026-Q4from
fix/clean3d-contact-void-guard-q4
Draft

michaldengusiak wants to merge 3 commits into
sow/2026-Q4from
fix/clean3d-contact-void-guard-q4

Conversation

@michaldengusiak

Copy link
Copy Markdown

Summary

SAM_OCCT consumer of SAM#230 source evidence (design rev 5 section 3, owner-signed 2026-11-03). Stage A releases its 0.3 m void guard for an anti-parallel pair only when both panels carry a still-valid Panel.SourceEvidence and the clipped common region is proved to be in contact (Softthouse D203 #251/#250 reaches the weighted midpoint, 0.162 m). Without records behaviour is unchanged.

  • Adapter (SAM.Analytical.OCCT.Solver) reads the record only through Query.ValidSourceEvidence and passes a geometry carrier (ContactEvidence) plus Query.DefiniteIntersection; the geometry solver has no SAM.Analytical reference. Wired into Clean3D, Extend3D, Solve3D, OpenPanels3D and analytical AutoTune3D.
  • ContactVoidGuard (conditions 1-5, coverage floor COPARALLEL_SNAP_MIN_OVERLAP_RATIO 0.5), SnappedPanel record lifetime (Stage A plane unmoved, one source, no in-plane rewrite), two guard-site edits; weighted site requires overlap && Releases. RejectedCollapse only for actual rejections.
  • Unchanged: 0.3 constant and band, same-facing path, ConsolidateWallStacks, inset logic, StackedSlabInterfaceDetector, public signatures.

Dependency and merge order

Depends on SAM-BIM/SAM#230 (draft). Merge SAM#230 first. Hosted CI here resolves SAM at the newest sow/YYYY-Qn branch (not by PR branch name), so it will not compile until SAM#230 is merged; re-run after. Details in documentation/Clean3D-ContactVoidGuard-Q4.md.

Testing (local; record has commands, hashes and evidence paths)

  • Unit 1140 -> 1203 / 0 failed (63 new: controls A, B, C, T1, T2, W, D, F, abut-only, tolerance edges, record lifetime, Clean3D wiring); mutation matrix 16/16 killed.
  • Grasshopper tests 38/38; native integration (frozen 438089F8) 25 failed / 478 passed / 2 not executed, per-test identical to baseline e654095.
  • Softhouse: N1 R 71 spaces / 395 panels / 46 good, D203 closed 13 faces 43.677 m3, D303 GOOD 44.887 m3; N2 F identical to plain Q4; N0 replay identical to the orientation replay. N0 used SAM#230-produced records, not the separate prover records (noted in the record).
  • Not run: hosted CI (blocked on SAM#230), native test of AutoTune3D with records.

Tested content 06743da; head b85825e adds only the record document.

Generated by Michal Dengusiak and CodeClaude

🤖 Generated with Claude Code

michaldengusiak and others added 3 commits November 4, 2026 08:20
…consumer of SAM#230 source evidence)

Adds ContactEvidence (geometry carrier), ContactVoidGuard (design rev 5, section 3, conditions 1-5), the SnappedPanel
record lifetime (Stage A plane unmoved, one source, no in-plane rewrite), the two guard sites in SnapOpposedPartitions
and Snap, and the analytical adapter that accepts Panel.SourceEvidence only through Query.ValidSourceEvidence.

Generated by Michal Dengusiak and CodeClaude

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…rmal

Generated by Michal Dengusiak and CodeClaude

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Generated by Michal Dengusiak and CodeClaude

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant