← back to pin listBrick 25: posting the shared-edge web — the common-line program, one per sheet
kerfmaster pin list · The interface — recorded intent (build later)
recordStates what the code does today. Auditable against the code — this is the only type that can go stale.
Content last changed 2026-09-06 — computed from the item itself, not typed.
Built 2026-09-02 (Aristide 'go'). Brick 24 recorded the honest limit: 'emit knows only closed per-part boundaries today.' cl_post.py closes it (its docstring is the design record):
- Zero drift on closed cuts: each welded band's holes + perimeter post through
emit.write_gcode_macrob itself, one call per band — leads, comp side, Rev2 registers/conditions, slug tabs, micro-segment cleanup and arc chording are the same machinery every program runs; outer_last on the band's own geometry IS perimeter-last. Bands stitch in the plan's monotone order; sequence A/B decides where the shared-edge blocks land. - Shared edges post as open cuts in the reference block form (G0G40 rapid, profile #501, M98P9011, ONE G1G40 move with the profile D declared, M87/M199) — NO comp, on the nominal line. The pierce sits in the channel: lead collinear with the edge, lead-length before its near end (inter-band gap / sheet margin = scrap by construction); far end overcuts by the profile offset so the sever reaches the perimeter's kerf. A channel narrower than the ruled lead moves the pierce to half the channel and FLAGS it — never silent, per the operator-moves ruling.
- Coordinates absolute sheet coords, G52X0Y0 — the macro-nest convention (the ruled margin rides in the coordinates). One program per sheet (brick-14 rule), each keeping its O-number across re-posts AND re-plans (job record
cl_onums). - The audit (Jordan 2026-08-12, same discipline, own arithmetic — the closed-boundary nc_audit does not judge open cuts): re-reads the posted file; structure counts (M98/M199 per boundary, one M121, M30); every feed endpoint + arc midpoint ON the plan geometry at max(0.005, beam_comp); commons exactly one G40 move on their extended line; each band's LAST block on its perimeter (perimeter-last proven on the file); no later point inside a severed band's rectangle (monotone sweep proven on the file); pierce clear-air measured SHEET-WIDE — the check a per-band post cannot make, and it caught a real one first run (a band perimeter pierce 0.05" from the neighbouring band, yellow). Findings ride IN the NC via nc_warn.inject; the annotated file re-audits and must judge identical.
- Server: POST /api/jobs/<id>/commonlinepost (plain-400 refusals in engine words, the nestseq pattern); GET /commonline carries the post doc; commonline*.nc download; a re-plan (or review re-plan / sketch re-compile) drops the program keeping every number.
- UI: Post button + per-program rows (O-number ran+source, parts/boundaries/shared-edges, warnings riding in file, download) inside the ruled disclosure block.
Proven: test_cl_post.py 18 engine controls (structure, no-comp commons on the extended line, perimeter-last + monotone proven on the file, tamper caught, comped common = red, shortened lead flagged vs wide channel unflagged, per-sheet posting, refusals verbatim) + verify_clpost.js 14 live checks over the public URL; all 14 prior suites green; nav209 untouched.
Honest limits: per-feature overrides (Manual Sort, tab size, start) not consumed on a common-line post yet; perimeter tabs PARKED 2026-09-06 (Jordan: 'We need to ask others in the industry about this, being that we don't use common-line cutting.') — stays open pending industry input, not a shop ruling; canvas still draws the normal nest (shared-edge web preview later); 'connect holes to reduce piercing' is the ruled pierce lever, later.