opencad
← Reconstruction corpus
ReconstructionPASS 11/11

Raspberry Pi 5 enclosure

Two-piece FFF-printed enclosure, base and removable lid, for a Raspberry Pi 5.

Facts

Backend
build123d
Gates
11 pass, 0 fail, 1 n/a
Bounding box
102.0 × 73.0 × 33.0 mm
Volume
57.99 cm³
Process
FFF printing; no supports; overhangs <=45 deg; base prints on its floor exterior and lid inverted on its ceiling exterior.
Release
prototype
Truth case
yes, scored against held-back geometry

Print files

FileKindSize
rpi5-enclosure.stepSTEP0.3 MB
rpi5-enclosure.stlSTL0.1 MB

Source

contract.yaml (design contract)

Design intent

Design a two-piece FFF-printed enclosure (base and removable lid, two separate solids in one STEP) for a Raspberry Pi 5 to the attached requirements document, in the board frame it defines (x along 85, y along 56, PCB bottom at z = 0). The board must fit with 0.5 mm edge clearance and 20 mm headroom above the PCB; four standoffs meet the PCB bottom at the Ø2.7 mounting holes (3.5,3.5) (61.5,3.5) (3.5,52.5) (61.5,52.5) with Ø2.5 x 5 pilot holes; every listed cable-plug envelope (USB-C, 2x micro-HDMI on y = 0; 2x USB-A stacks and RJ45 on x = 85; micro-SD under x = 0) passes through its wall opening; the lid closes on the base rim with zero interference and is held by four Ø3 through holes into Ø2.5 corner-post pilots; walls and floor >= 2 mm (5th percentile of inward ray casts; the Ø6.2 standoff bosses' 1.85 mm annuli are the accepted exception). Declare the base and lid as acceptance solids by a contained point, the keep-outs and plug envelopes as acceptance hardware with no-interference clearances, the standoff faces and pilot holes as faces and cylinders pinned by interfaces, and the wall minimum as a p05 thickness check. Headroom, wall thickness and standoff height are top-level parameters; the headroom parameter gets a 10-value regeneration sweep (15..35, every value must build) and one infeasible negative value guarded by an assert.

Gates

TierGateResultEvidence
Acontract_provenance
Contract validates; stated/measured sources resolve to bundle files; no blocking open questions; interfaces pinned by checks
PASSdesigns/rpi5-enclosure/contract.yaml: 29 parameters {'stated': 24, 'inferred': 5}; sources unresolved {}; unanchored 0
Aenvelope
Bounding box of the exported STEP equals the contract envelope
PASSresults/build123d/rpi5-enclosure/inspect.json bbox.max_error = 0.0 (tol 0.1)
Amass_properties
Volume, surface area and centre of mass within contract tolerance (independent STEP measurement)
PASSresults/build123d/rpi5-enclosure/inspect.json volume = 57990.2872 vs 57990.28723164135
Afeatures
Every required feature, section, named face, cylinder axis, plane, dimension, body, clearance, passage, wall, gear and symmetry check verified on the STEP
PASSresults/build123d/rpi5-enclosure/inspect.json features: 15/15 ok; failed required []; failed optional []; unverified []
Areference_fidelity
Deviation from the reference model within the contract band (when a reference exists)
n/aresults/build123d/rpi5-enclosure/inspect.json deviation.p95 = None hausdorff = None silhouette_iou_min = None
Bexport_agreement
Engine, STEP (OpenCascade) and STL (trimesh) volumes agree
PASSresults/build123d/rpi5-enclosure/inspect.json agreement engine=57990.2872316414 step=57990.287231641414 stl=57990.66584658952 (rel tol 0.002; independent=False)
Bedit_robustness
Declared parameter edits rebuild with the expected effect, undriven interfaces stay put, sweeps regenerate, infeasible values are refused; baseline re-export hash unchanged
PASSresults/build123d/rpi5-enclosure/edit.json 2/2 edit tests ok; restore.ok = True
Bsource_hygiene
Dialect, units, formatted, lint-clean, named parameters match the contract, asserts present
PASSresults/build123d/rpi5-enclosure/verify.json hygiene: dialect=True unit=True legacy=[] params_ok=True asserts=33
Cexport_integrity
Deterministic STEP (two exports identical), valid B-rep, expected solid count, watertight STL (solid shells == solids)
PASSresults/build123d/rpi5-enclosure/export.json step.deterministic = True sha256 b674a3df644a; stl=present; glb=present
Ctraceability
Every stage JSON present with tool versions, git head, worker thread ids, engine-call ledger; no --allow-errors
PASSstages present: {'plan': True, 'model': True, 'verify': True, 'export': True, 'inspect': True, 'edit': True}
Cevidence_separation
Contract agreement, reference agreement and physical validation are reported as separate verdicts
PASSresults/build123d/rpi5-enclosure/inspect.json carries contract checks (volume/bbox/features) and a separate deviation block (reference = None)
Cindependence
The source is editable construction: no import of reference geometry, construction ops present
PASSresults/build123d/rpi5-enclosure/verify.json hygiene.forbidden_imports = [] construction_ops = {'calls': 24, 'has_result': True} lines = 208