The bone. 410 members → 1632 curved sub-beams · 7.54 g beam / 12.7 g hollow tubes (0.8 mm wall) · every surface ≥ 1.5 mm · no spikes, no loose ends, one piece · 481 µm at the wells against a 500 µm gate · 1021 pillars, 0 props. Grown, not re-pruned — the render takes the topology the objective grew bottom-up; a top-down re-prune instead dead-ends in a heavy uniform 34 g membrane — a local optimum it cannot escape (§8.15k).
The sensor. Each well is a contactless-Hall flexure — a magnet on a printed TPU dome over a 3-axis Hall. The read-out is modelled (a keypress swings ~430 LSB, 200× the noise); the mount that holds the magnet + Hall is built entry-first — the finger's slide-in route is a hard constraint, so nothing crosses the path the finger comes in by — and to the measured pad, so the fingertip actually seats in the cup (it used to float above it). Four long fingers share one cluster; whole part 40.2 g, one watertight solid.
The strap. The band is the convex hull of (skin ∪ device), so it rides over the gauntlet it holds down; a watch-lug captures a pin in shear at each anchor foot; one adjustable strap (21 mm range) fits the 5th–95th percentile population.
The impact. A 50 N knock, not the keypress, is what sizes the structure — it breaks a deflection-only bone (348 MPa vs 70 MPa yield), and it wants a broad, load-sharing skeleton, not the sparse one thickened. Grown with the knock in the loop, co-sized for the gate and the stress, then form-found so its load paths straighten: 23.2 g, 39% lighter than bolting it on (37.7 g, §8.15k).
Artefacts, newest first:
bone.npz (the answer — friendly, curved, hollow),
gauntlet.stl (the printable solid; slice it with 2 perimeters and 0% infill —
that is what makes the members hollow, and the printer was going to do it anyway),
friendly.npz (the ergonomic floor, solid rods),
smooth.npz (the spline study),
printable.npz (the nozzle floor — the thin one nobody could bear to wear),
wire.npz (the welded-wire build), sized.npz, final.npz,
pareto.pkl.
Superseded renders were deleted (all regenerable from scripts/).
Invalidated results were archived, not deleted — see out_archive/.