# Assembly on the new branch

Only the **raised pads beneath the three-panel braces** use heat-set inserts. The **sideways rectangular seam tabs retain their original captured M4 nuts**. Both the button panel and removable underside now use this connector system. The underside is 8 mm thick (previously 5 mm) so it supports the same stepped seams and protected insert pockets. Its seams remain offset by 15 mm from the housing seams.

![Complete enclosure, open](../build/complete-open-guide.png)

[Closed assembly](../build/complete-closed-guide.png)

## Sideways seam tabs: original nuts

![Exploded seam](../build/seam-exploded-guide.png)

Bring the two integral tabs together, seat an M4 nut in the outer hex recess of the receiving tab, and pass the screw horizontally through both tabs into the nut. The hex pocket prevents the nut turning. The tabs touch when assembled; the illustrated gap only shows the parts clearly.

Two screws on each of seven left/right seams require **14 screws and 14 nuts**. Part 12 (or alias 13) exports the original two-piece nut-joint fit coupon. Heat-set insert parameters do not affect these tabs.

## Partly embedded brace inserts: heat-set inserts

![Exploded junction](../build/junction-exploded-guide.png)

1. Heat-set a brass insert flush into the top of each raised pad while the panels are separate.
2. Let the inserts cool, then lower the matching three-hole brace onto the pads.
3. Pass three screws down through the brace into the inserts.

The button panel is 8 mm thick. Each pad rises just 2 mm above its inside face. The 4 mm insert sits 2 mm inside the panel and 2 mm within the pad. Its blind hole is 6 mm deep: 4 mm for the insert plus 2 mm below it. A **solid 4 mm floor** separates the entire hole from the playing face; there is no narrower pilot hole beneath it. The 5 mm brace starts 2 mm above the panel and its top sits 7 mm above it.

![Installed insert cross-section](../build/insert-section-guide.png)

This floor provides extra installation buffer, not a mechanical stop against a hot insert. Seat inserts flush and avoid prolonged heat or force once seated. Use solid infill locally beneath and around the holes so the modeled buffer is not replaced by sparse infill. Test coupon 21 with your printer, material, inserts, and soldering tip before full panels. A fully flush mount with the same 6 mm hole would leave only 2 mm underneath; the raised pad preserves the chosen 4 mm buffer.


Seven braces require **21 screws and 21 inserts**. Parts 14–20 export individual braces, part 23 lays out all seven, and part 21 exports the post-and-brace fit coupon. Those quantities are per half. The complete enclosure uses **70 M4 screws, 28 M4 nuts, 42 M4 inserts, and 14 separate braces**. Export underside braces with `bottom_plate_mode=true`: they follow the offset seams and have full outlines rather than the top braces' button reliefs.

The configurable starting point is the [CNC Kitchen M4 x 4 short insert](https://cnckitchen.store/products/heat-set-insert-m4-x-4-short-version-100-pieces). Its dimension chart specifies a 6.3 mm outside diameter, 4 mm length, 5.7 mm installation hole, and at least 1 mm additional hole depth. In `cad/controller.scad`, `insert_hole_diameter=5.7`, `insert_length=4`, and `insert_depth_clearance=2` apply only to these pads. `junction_mount_height=2` controls the rise and `junction_min_floor=4` enforces the minimum solid floor. Match these values to your actual manufacturer's installation specification and test coupon 21 before printing full panels.

For the default pads, M4 x 10 non-countersunk screws without washers span the 5 mm brace and 4 mm insert with 1 mm projecting into the blind hole and 1 mm remaining above its closed floor. Verify engagement and tip clearance on the coupon. These are geometric starting dimensions; physical fit and strength have not been tested.

## Whole assembly

![Inside overview](../build/assembly-overview-guide.png)

This is the open underside, with the playing face toward the table. Pink plates are the seven braces. Each other color is one of the nine panel sections, including its outside wall. Broad stepped panel edges support the seams, and wall dovetails slide together vertically.

Rear panels are engraved 2,4,6,8; front panels are engraved 1,3,5,7,9. Export IDs differ: front panels use 1–5 and rear panels 6–9.

Install the upright inserts before assembly. Engage the panel steps and wall dovetails, loosely install the horizontal nut joints and the upright braces, then tighten progressively with the panel seated flat. This sequence is inferred from the geometry and has not been physically tried. The removable bottom now uses the same bolted seam tabs, stepped panel edges, and insert-mounted braces. Its locating groove, magnet pockets, and exterior feet recesses are retained. The old U-connector recesses are absent when the bolted connectors are enabled; part 10 is only for the legacy fallback. The assembled underside hardware faces inward into the housing.

## Exports and diagrams

```bash
./tools/render.sh cad/controller.scad build/seam-nut-fit.stl -D 'part_to_render=12'
./tools/render.sh cad/controller.scad build/junction-insert-fit.stl -D 'part_to_render=21'
# Tune only the upright post hole:
./tools/render.sh cad/controller.scad build/junction-fit-adjusted.stl -D 'part_to_render=21' -D 'insert_hole_diameter=5.6'
```

`AssemblyGuide.scad` imports production modules; hardware shapes are illustrative. Render with `openscad --backend=Manifold --preview --autocenter --viewall --projection=ortho --colorscheme=Tomorrow`, adding one of:

- `--camera=0,0,0,60,0,30,180 --imgsize=1800,1100 -o build/seam-exploded.png`
- `-D 'view="junction"' --camera=0,0,0,65,0,25,180 --imgsize=1400,1300 -o build/junction-exploded.png`
- `-D 'view="section"' --camera=0,0,0,90,0,0,100 --imgsize=1400,1000 -o build/insert-section.png`
- `-D 'view="overview"' --camera=0,0,0,15,0,0,1000 --imgsize=2000,1100 -o build/assembly-overview.png`

Append `docs/AssemblyGuide.scad`, then run `uv run --with pillow python tools/label-assembly.py` to add captions.

## Verification

`Source/BoltedSeams.scad` is restored exactly to the branch version. All nine panels and both coupons export with Manifold `NoError`. Mesh probes verify the retained sideways nut pocket, the absence of a mating-face insert hole, and the upright insert hole dimensions and closed floor. The 2 mm pad height and screw-tip clearance also pass mesh probes. All 21 actual mounts were probed at the playing face, immediately below the 4 mm floor, and within the bores; all passed. Thinner-panel, lower-pad, and longer-insert configurations that breach the 4 mm buffer are rejected. An intersection check confirms all seven lowered braces clear all nine panel bodies above their intended post contact faces. The upright fit is not physically tested.

Outer panels 1 and 9 each retain two degenerate export triangles also present in the unchanged branch. Excluding those for analysis leaves one watertight solid per panel. The other seven panels and both coupons pass directly; exports are not silently repaired. After exporting parts 1–9 into `build/heat-set-panels/part-N.stl`, reproduce checks with:

```bash
uv run --with trimesh --with rtree --with scipy python tools/verify-heat-set.py
```

## Complete enclosure exports

```bash
python3 tools/export-complete.py
openscad --backend=Manifold --hardwarnings --preview --imgsize=2200,1800 --autocenter --viewall --projection=ortho --colorscheme=Tomorrow --camera=0,0,0,40,0,0,1600 -o build/complete-open.png docs/CompleteAssembly.scad
openscad --backend=Manifold --hardwarnings --preview --imgsize=1800,1100 --autocenter --viewall --projection=ortho --colorscheme=Tomorrow --camera=0,0,0,60,0,25,1600 -D 'view="closed"' -o build/complete-closed.png docs/CompleteAssembly.scad
uv run --with pillow python tools/label-assembly.py
```

The export script produces nine panel sections and seven braces for each half in `build/top/` and `build/underside/`. It also extracts placement metadata from the active model. `CompleteAssembly.scad` imports those exports, so run the script again after geometry changes. The open view lays both halves out with their inward-facing hardware visible; all 32 printed pieces are shown. Hardware, buttons, wiring, magnets, and foot pads are omitted.

The bottom panels are exported in enclosure orientation: features project toward negative Z. For printing, turn them over so the flat exterior face lies on the bed and the hardware faces upward, then place on the bed. Exported braces are already flat. `bottom_plate_thickness=8` controls the underside thickness; reducing it without redesigning the joints is rejected by the seam and insert-floor assertions. The closed enclosure is now 78 mm tall before feet.

All nine underside meshes are single, watertight solids. Probes confirm the 4 mm floor below all 21 underside inserts. Pairwise boolean checks show no solid overlap between underside sections, and all seven underside braces clear their supporting panels except for intended seating contact. The closed housing and underside share only zero-volume contact at the seating plane; the locating lip clears its groove and the new inward-facing hardware clears the housing. Top-panel bounds and volumes match the preceding geometry within export precision. Physical fit and stability remain untested.
