Skip to content

Detect poorly supported boards in mouse-bite panels - #539

Open
seveibar wants to merge 1 commit into
mainfrom
fix/poorly-supported-panel-boards
Open

seveibar wants to merge 1 commit into
mainfrom
fix/poorly-supported-panel-boards

Conversation

@seveibar

@seveibar seveibar commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

The basic-usbc-devices panel was manually constructed from TSX cutouts and holes, then flattened into one pcb_board. Existing placement checks missed four board regions whose intended tabs were removed by neighboring slots, leaving all surviving support on one side.

Add checkPcbBoardSupport to the public API and runAllPlacementChecks (and therefore runAllChecks). It infers straight mouse-bite rows from emitted NPTH/slot geometry, virtually separates the boards, and reports a pcb_placement_error for regions with fewer than two surviving tabs or all attachments on one side. It also accepts native pcb_panel envelopes; no project-specific names or layout metadata are required.

The original manufacturing geometry reports four errors (limit, toggle, dial, buzzer); the corrected carrier layout reports none. Tests cover both real exports, a native TSX panel with routed-away tabs, one-tab/detached regions, rotations and translations, readable names, record ordering, immutability, and placement-runner integration.

Scope: this is a conservative geometric check, not a load/deflection simulation. It infers straight regularly pitched small NPTH rows beside routing slots, excludes regions below 25 mm² as possible tab remnants, and does not assess V-scores or unperforated/curved tabs. Explicitly unsupported converted geometry produces a diagnostic when panel support is being assessed.

Validation: full suite (772 passing), final focused suite (15 passing), TypeScript, package build, formatting, and a Node consumer smoke test of the built API/placement runner. The fixture provenance is recorded alongside the data. The companion project correction is tscircuit/basic-usbc-devices#1.

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