OSSO

← v15 v17 →

v16: Sliding tray PnP storage (matrix archived), snap-out companion and edge-card panels, shared frame fiducials, one common jig hold

Frozen Sun Oct 25, 2026, 12:02 PM ET · 1055 files · folder: versions/v16_2026-10-25/ · archive: OSSO_v16_2026-10-25.tar.gz

What changed

New in this snapshot: 10 drawings, 0 STEP files, 0 documents/media.

Key decisions

Drawings new in v16

STEP files (202)

Documents & media

Tools snapshot

Source: versions/v16_2026-10-25/refs/TOOLS.md

Tools used as of this version

OSSO tools inventory

Software, libraries, file formats, techniques and services actually used on OSSO, found from the scripts in cad/, drawings/, pcb/, fab/, laser-test/, site_build/, the installed environments (/workspace/.cadvenv, system packages) and JOURNAL.md. Versions are what is installed on the box as of 2026-10-23. Two box venvs exist: /workspace/.cadvenv (older) and /workspace/.cadenv (CadQuery 2.8.0 + pyvista + trimesh, used for the tool-drop v2d model). "Not installed now" means a past script used it but the current box env lacks it.

CAD generation (3D)

Tool Version Used for First used/Files
Python (venv /workspace/.cadvenv) 3.13.5 Runs every generator and verifier script Oct 14; all *.py
CadQuery 2.8.0 Parametric solids for jigs, boards, stencil frames, dispenser POCs; STEP/STL export (cq.exporters.export), STEP re-import (cq.importers.importStep) Oct 16, cad/jig_v4b/jig_v4b.py; all cad/*/make_*.py
OCP (cadquery-ocp, OpenCASCADE bindings) 7.9.3.1.1 Low-level B-rep work: BRepCheck_Analyzer validity, volume props, booleans cad/*/verify*.py, dispenser POC v3-v5
numpy 2.5.4 Geometry math (involute gear profiles, hole patterns, sweeps) most CAD/drawing scripts
shapely 2.2.0 2D outlines, morphological closing, unary_union for gear/disc profiles pcb/br_g1_v1/make_br_g1.py, laser profiles
scipy 1.18.1 Installed CadQuery dependency; numeric helpers venv
casadi / nlopt 3.8.1 / 2.11.0 CadQuery solver dependencies (assemblies/sketch constraints) venv
vtk 9.6.2 CadQuery visualization backend venv
pyvista (venv /workspace/.cadenv) 0.49.1 Offscreen preview renders of STL/STEP models (iso, close-up, section views) Oct 16-19, versions/v5_2026-10-19/cad/*/render.py; Oct 23, cad/tool_drop_mech_poc_v2d/render_preview.py
trimesh 5.1.1 (venv /workspace/.cadenv) STL watertight/extent checks cad/stencil_v1/verify.py

Fit check / interference method

Tool Version Used for First used/Files
CadQuery/OCC boolean intersect + Volume() 2.8.0 / 7.9.3 Pairwise intersection volume between parts re-imported from the exported STEP; 0 mm³ = no interference Oct 21, cad/ball_dispenser_poc_v3..v5
OCC BRepExtrema_DistShapeShape 7.9.3 Minimum clearance between non-touching parts at each sweep state (bbox prefilter first); an explicit list of intended contacts is excluded Oct 23, cad/tool_drop_mech_poc_v2d/
Mechanism torque/force sweep (technique) Moment arm sign and size, dead-center margin, deploy/release/hold margins at mu 0.2 / 0.3 / 1.5x seal friction, pass/fail gate in fit_check.json Oct 23, refs/tool_drop_*, cad/tool_drop_mech_poc_v2d/
Angular sweep (technique) Rotate moving parts in 2° steps (0-20°/0-30°), re-check intersection volume and minimum gap at each step (gear mesh backlash 0.035-0.037) POC v4/v5
Probe cylinders (technique) Thin cylinders along fill/exit axes intersected with exported disc STEPs to prove paths open or blocked; hole-axis alignment asserted to 0.000 POC v4/v5
Tolerance-case matrix (technique) All thickness combinations (e.g. 0.25/0.30 carrier, 0.711-0.813 cover) checked for pocket gap and overlap POC v3-v5
STEP re-import + validity (technique) Every exported STEP re-read, solids counted, isValid(); STLs watertight Oct 16 jig v4b onward

Drawings and 2D

Tool Version Used for First used/Files
matplotlib 3.11.2 All engineering drawings (plan, section, exploded) to PNG and multi-page PDF (PdfPages) Oct 15; drawings/*.py
ezdxf 1.4.5 DXF cut profiles (laser tests, alignment patterns, BR-G1 laser, BR-C1 covers) laser-test/gen.py, cad/laser_align_*, br_c1_v2.dxf
SVG (hand-written) (format) Laser test/alignment patterns for LightBurn laser-test/*.svg, cad/laser_align_*/*.svg
Pillow 12.3.0 (system) / 13.0.0 (venv) Site thumbnails, image compositing site_build/build_site.py
fontTools, kiwisolver, contourpy, pyparsing 4.67.0 / 1.5.1 / 1.4.0 / 3.3.3 matplotlib dependencies venv

PCB: KiCad, Gerber, drill, DRC

Tool Version Used for First used/Files
KiCad / kicad-cli 9.0.2 .kicad_pcb written by script, then kicad-cli exports Gerbers, Excellon drill, job file, and runs DRC (drc.rpt, 0 errors) Oct 21, pcb/br_g1_v1/make_br_g1.py, pcb/br_g2_v1/
Hand-written RS-274X X2 + Excellon (technique) First Gerber set before KiCad was on the box Oct 16, fab/gen_v3b_gerbers.py
gerbv 2.10.0 Render Gerbers back to PNG for visual check Oct 16, fab/render/, pcb/br_g1_v1/preview_gerbv.png
Gerber/Excellon re-parse verifier (technique) Re-read output files, count teeth/holes, compare to geometry report pcb/br_g1_v1/verify_br_g1.py, verify_report.json

3D printing and laser

Tool Version Used for First used/Files
Bambu Studio (AppImage, headless slice) 02.08.02.61 (box); the designer 02.08.02.60 3MF projects for P1S, headless slice estimates Oct 16, cad/jig_v4*/make_3mf.py, /workspace/tools/bambu
LightBurn the designer's copy UV galvo laser jobs from SVG/DXF Oct 16, laser-test/settings.md, refs/laser/
Klipper (Elegoo Neptune 4) stock Planned PnP / flux syringe motion Oct 21, journal

File formats

Format Tool Used for First used/Files
STEP (.step) CadQuery/OCC Parts and assemblies for the designer's CAD and vendors Oct 16, cad/*/*.step
STL CadQuery Print meshes Oct 16, cad/jig_v4b/*.stl
3MF make_3mf.py Bambu Studio projects Oct 16, cad/jig_v4b/*.3mf
DXF / SVG ezdxf / script Laser and SendCutSend cut files Oct 15, laser-test/, br_c1_v2.dxf
Gerber X2, Excellon, .gbrjob, zip kicad-cli / script PCB fab uploads Oct 16, fab/, pcb/*/gerbers
PNG / PDF matplotlib Drawings drawings/
JSON / Markdown Python Geometry/verify reports, notes, journal throughout
MP4 (video generation) Vision reels Oct 15, video/

PDF tools

Tool Version Used for First used/Files
matplotlib PdfPages 3.11.2 Multi-page drawing PDFs, tech sheets drawings/*.pdf, refs/laser/laser_tech_sheet.pdf
poppler-utils (pdftoppm, pdftotext, pdfunite) 25.03.0 Rasterize/read PDFs (datasheets, checks), merge pages refs/ datasheets

Docs site

Tool Version Used for First used/Files
build_site.py (custom static generator) in repo Builds site/ from JOURNAL.md, TODO.md, PENDING, refs, versions Oct 20, site_build/build_site.py
Python-Markdown (extra, sane_lists) 3.11.1 (system) Markdown to HTML build_site.py
check_links.py in repo Verifies every relative link and anchor site_build/check_links.py

Versions, sync and backup

Tool Version Used for First used/Files
GNU tar + gzip 1.35 Version snapshots versions/OSSO_vN_DATE.tar.gz; sync bundles Oct 15, versions/
sha256sum / split (coreutils) 9.7 Chunked tar transfer to the designer's Macs with checksum verification (hourly sync) Oct 21 restore from work Mac copy
Google Drive mirror (connector) Daily mirror of the project, done by another assistant daily
ffmpeg 7.1.5 Video/media handling video/

Research and fab services

Service Version Used for First used/Files
Web research (search + fetch) live Vendor specs and prices throughout
PCBWay web Blank v3b (5 pcs ENIG), 5 OSSO boards, 50 BR-G1 discs; laser-cut tolerance check Oct 16, fab/, pcb/br_g1_v1/README_FAB.md
SendCutSend (site + spec API scs-specs-platform) web 304 SS .030" limits; BR-C1 v2 covers ordered; Oct 23: 1008 CRS .074" armature plate for the tool-drop EPM latch (DXF) Oct 21, cad/ball_dispenser_poc_v5/br_c1/QUOTE_NOTES.md
Chip Quik web SAC305 ball/paste pricing for per-board solder cost Oct 21, journal
LCSC web Pogo pin YZD0029 datasheet drawing Oct 16, cad/pogo_YZD0029/
eBay (NV Liquidation) web 2x Neptune 4 parts units Oct 21, journal
Literature (DOI) web EPTC 2012 tacky flux ball attach; IRJMETS flip chip flux Oct 21, journal

AI assistant

Tool Version Used for First used/Files
OSSO assistant in the Grok Bot app app All scripting, CAD, drawings, fab files, site and journal, with background helper agents for parallel tasks Oct 14 onward

Journal entries in this version

2026-10-25 7:54 AM EDT — PnP storage: sliding drawer over the bed

Oct 25, 2026 · 7:54 AM ET · journal ↗

the designer: keep the matrix, but the hook sequence (head bump, bed pull, push home) is too many operations, slow and fragile. New direction: a sliding drawer that travels over the bed to bring parts into the head's reach, then pulls back out of the way. The bed hook and head hook approach is shelved as the primary method. Open questions: what drives the slide (own motor or bed-coupled), how the slide clears the bed and needles in Z, how strips move from matrix to slide, and the park position.

2026-10-25 7:56 AM EDT — Correction: sliding drawer is an alternative to the matrix

Oct 25, 2026 · 7:56 AM ET · journal ↗

the designer clarified: the sliding drawer is an alternative design to the matrix, not an add-on. The matrix version is kept as an option. The drawer is cantilevered over the bed from the back frame and is not attached to the bed, for stability.

2026-10-25 7:58 AM EDT — Sliding drawer: whole tray, 2020 extrusion

Oct 25, 2026 · 7:58 AM ET · journal ↗

the designer: the cantilevered slide carries a whole tray, not one strip. 2020 aluminum extrusion serves as both the structure and the rail (V-wheel or printed carriage in the slot). Open items: number of extrusions (one or a parallel pair, to resist twist from an off-center tray), reach versus tip sag, slide drive, Z clearance over TH bodies.

2026-10-25 7:59 AM EDT — Sliding drawer: paired rails, loading from the bed

Oct 25, 2026 · 7:59 AM ET · journal ↗

the designer chose a parallel pair of 2020 extrusions, tied at the tip, for the cantilevered slide. Loading: strips are pulled off the bed (strips staged on the bed are picked off into the slide's tray). Exact handoff mechanics to be confirmed.

2026-10-25 8:00 AM EDT — Sliding drawer: controlled motion

Oct 25, 2026 · 8:00 AM ET · journal ↗

the designer: the slide motor's kinematics control acceleration so parts aren't jostled. Plan: its own stepper with an S-curve (jerk-limited) profile, tuned so the lightest part (0402) stays in its nest. This also cuts tip ringing on the cantilever, so the settle time before a pick is shorter. Loading handoff (strips pulled one by one vs whole tray) still awaiting the designer's answer.

2026-10-25 8:01 AM EDT — Speed split: gentle slide, fast needle

Oct 25, 2026 · 8:01 AM ET · journal ↗

the designer: quick needle movements are possible, so the sliding-drawer approach should be faster overall than the matrix hook sequence. The slide makes one gentle, jerk-limited move in and out per tray, and the needle makes the many fast, short pick-and-place moves. Bed jerk-limiting (placed parts before reflow) was raised as a question, not yet decided.

2026-10-25 8:15 AM EDT — Design rule: minimal tray movement

Oct 25, 2026 · 8:15 AM ET · journal ↗

the designer: the tray moves into position without interfering with bed operations, and tray movement is kept to the minimum needed to reach parts. Implication: the slide indexes to the strip that's needed (a partial extension), not full travel every time, and parks clear of the bed whenever the bed is working.

2026-10-25 8:16 AM EDT — Motion planning by AI rule set

Oct 25, 2026 · 8:16 AM ET · journal ↗

the designer: the coordination of tray, bed, and needle is a complex ballet, but AI will handle the rule set. The rules so far: jerk-limited moves for loose parts, the tray never interferes with the bed, minimal tray movement, fast needle moves, picks grouped by strip, and keepouts around TH bodies. The planner sequences the moves within those constraints.

2026-10-25 8:16 AM EDT — Safety: firmware hard interlocks under the planner

Oct 25, 2026 · 8:16 AM ET · journal ↗

the designer approved: hard limits in firmware sit beneath the AI planner, for example a check that the tray is parked before the bed moves under it, so a planning error can't cause a collision between the tray, bed, and needle.

2026-10-25 8:18 AM EDT — Drawing: part storage v2 (cantilevered tray slide); matrix archived

Oct 25, 2026 · 8:18 AM ET · journal ↗

the designer: "This is better." Drew drawings/osso_part_storage_v2 (.py/.png/.pdf): container hierarchy, plan view with paired 2020 rails cantilevered from the back frame and the tray on a slide (extended and parked), YZ section parked vs extended, callouts 1-17, notes table, and title block rev v2. The matrix + hook concept v1 was moved to drawings/archive/ and marked not active. No sync yet, per the designer.

2026-10-25 8:33 AM EDT — Tray rails supported front and back (no cantilever)

Oct 25, 2026 · 8:33 AM ET · journal ↗

the designer: for the next drawing revision, the parts tray rails (paired 2020) connect to the frame at both front and back for stability; no cantilever needed. This removes the tip sag and ringing concerns. Check for the next rev: the front support must clear the bed's Y travel and the operator access.

2026-10-25 8:33 AM EDT — Front rail support clearance requirement

Oct 25, 2026 · 8:33 AM ET · journal ↗

the designer approved: the front support of the tray rails must sit above the bed's full Y travel and the tallest TH bodies, so it doesn't block the bed or operator access for loading boards. Apply in storage drawing v3.

2026-10-25 11:14 AM EDT — Design note: companion boards as snap-outs inside the 140x140 board

Oct 25, 2026 · 11:14 AM ET · journal ↗

the designer: the current 140x140 middle and top boards are just the start. Next version: the same board, with companion boards on its interior as a snap-out frame. Same alignment marks and frame drills. No interposer. For now the template drills and cuts with snap-outs (tabs). Later, when a higher-powered 355 nm laser is available, the laser can drill and cut the companions out.

2026-10-25 11:31 AM EDT — Companion snap-outs: any shape

Oct 25, 2026 · 11:31 AM ET · journal ↗

the designer: in the future, companion boards can be any shape, as long as they fit within the 140x140 frame.

2026-10-25 11:36 AM EDT — Drawing: 140 board with snap-out companions v1

Oct 25, 2026 · 11:36 AM ET · journal ↗

Drew drawings/osso_snapout_companion_v1 (.py/.png/.pdf): the 140x140 frame with the unchanged datum (tooling hole D3.0 at (70,4), slot x70 y135-137, fiducials A/B/C/C' with keep-outs, side slots, power corners, from top_v1i_geom.json), three EXAMPLE interior companions (two rectangles plus one non-rectangular to show "any shape"), routed gaps, mouse-bite tabs, a tab detail, callouts 1-11, notes, and a title block. No interposer. Open: companion count and outlines, gap width, tab count and hole size and pitch.

2026-10-25 11:48 AM EDT — Snap-out companion panel v2

Oct 25, 2026 · 11:48 AM ET · journal ↗

the designer: the panel outline matches the middle board (base v3b, 140x140 R4) with no cutouts; maximize the count of the 45.5x22 companions the middle board needs; consider moving the alignment marks on all boards to the outer frame. Drew drawings/osso_snapout_companion_v2: 12 companions (2 landscape in a bottom row, plus 10 portrait in a 5x2 grid), a 2.0 routed gap, mouse-bite tabs (some between neighboring companions), 8 mm top/bottom rails and 5 mm side rails. Tooling hole (70,4) and slot (70,136) unchanged; fiducials moved to the frame at A (22,4), B (118,4), C (118,136), C' (22,136); power corners kept clear of companions (D13 keep-out); about a 20 mm spare band at the top. The proposal to move the marks to the frame on all boards awaits the designer's OK.

2026-10-25 11:50 AM EDT — Rule: all boards share the same frame fiducials

Oct 25, 2026 · 11:50 AM ET · journal ↗

the designer approved: every OSSO board (middle, top, test, companion panels) uses the same fiducials on the outer frame: A (22,4), B (118,4), C (118,136), C' (22,136), with the tooling hole (70,4) and slot (70,136) unchanged. The jigs and camera fiducial positions need updating to match.

2026-10-25 11:54 AM EDT — Drawing: snap-out edge-card panels v1

Oct 25, 2026 · 11:54 AM ET · journal ↗

Drew drawings/osso_snapout_edgecard_v1 (.py/.png/.pdf), with the same frame, outline, and shared fiducials as companion panel v2. Card A 64x58 (EDAC 305-020, 2x10): 4 per panel (2x2). Card B 100x58 (EDAC 305-044, 2x22): 2 per panel, with about 15 mm spare at the sides. Hard-gold fingers face outward onto routed gaps, never tabs. Side rails narrowed to 3 mm. Power corners dropped on the card panels (they block the 4-up A layout and the cards don't use them): needs the designer's confirmation. Fab detail to confirm: gold plating bus and bevel with the snap-out frame.

2026-10-25 11:58 AM EDT — Confirmed: corner drills not needed on card panels

Oct 25, 2026 · 11:58 AM ET · journal ↗

the designer: as long as the jig can hold these boards, the corner (power) drills aren't essential. The card panels drop the M3 corners; the jig registers on the tooling hole (70,4), slot (70,136), and the frame fiducials.

2026-10-25 11:59 AM EDT — Rule: hold all boards the same way

Oct 25, 2026 · 11:59 AM ET · journal ↗

the designer: hold all boards the same way to reduce jig types. Proposed common hold: dowels in the tooling hole (70,4) and slot (70,136), clamping on the 8 mm top/bottom frame rails clear of the fiducial keep-outs, with no dependence on the corner drills. Applies to the middle, top, test, companion, and card panels.