07 — Verification and evidence
Collision-check everything and investigate every hit
Rule: Check plastic against plastic, plastic against the vendor board, and plastic against the modelled hardware. Treat every non-zero overlap as a finding until it is explained, however small it is.
Incident: Real defects caught this way:
The hatch tongues ran past the bottom V-groove (0.29 mm³, then 0.144 mm³ after the first fix).
The wall-mount driver envelope collided with a gusset.
A mount ear overlapped the panel channel.
The M.2 Key E card envelope clipped a support (74 mm³).
The hardware check reported 4 collisions because the RP-SMA thread cylinder in the visual model pointed vertically instead of through the wall. That was a bug in the agent's own hardware model, not in the enclosure.
The trays' rounded chimney corner (R3) clipped the SATA plug drop zone by 2.0 mm³ per tray. The fix was a narrower plug zone and an R2 corner moved to Y 27.5.
The storage mount plate's tab gussets (copied from P1M) intruded 3.3 mm³ into the lowest tray wall. They are now trimmed at the tray outline.
The data lead to a second 2.5 in bay ran through a tie anchor (7.5 mm³).
False alarms, explained and then excluded on purpose:
- Each drive's visual connector strip overlapping its own drive body.
- The tie-down screws overlapping the P9 fit template (4 × 19.5 mm³). The template is used without those screws.
Check:
assembly-checks.json(all part pairs = 0 mm³),carrier-clearances.json(4902 pairs, 0 collisions),storage-checks.json(per stack). Each hit is triaged as a design defect, a model defect or intended.Source: 2026-10-24T07:25, 08:35 (summary), 16:53; 2026-10-25T00:36.
Classify false positives explicitly; don't silence them
Rule: When a check flags something that is not a defect, add a named exclusion or category. Do not loosen the check globally.
Incident:
- A drive's visual connector strip overlapped its own drive body. These strips were excluded from the drive-to-drive comparison.
- The link validator reported JavaScript template strings as missing files. The regex was tightened to require a
quote or
?after the link. - Heat-set inserts overlap their holes by design. They are reported separately as
intended_insert_interference(8 in the carrier check, 4 per stack).
The brief also mentioned a fit-template false positive involving the tie-down screws. It does not appear in the transcript.
Check: Each exclusion is listed in the check's JSON with its reason. Intended interferences have their own list and count.
Source: 2026-10-24T07:40; 2026-10-25T00:44;
exports/carrier-clearances.json.
Check motions, not just final positions
- Rule: For parts that slide, swing or get driven, sweep the motion path and the tool envelope.
- Incident:
- The plates' slide-in path was checked (0.37 mm front, 0.25 mm rear).
- A sweep check was added for the button guide sleeves on the way down.
- Wall-mount screws are checked with a 20 mm driver envelope.
- The first stack design failed this kind of reasoning: its standoffs had no tool access (see 04).
- Check:
assembly-paths.json,mount-checks.jsondriver_access, and the sleeve sweep in the clearance run. - Source: 2026-10-24T07:41, 16:40; 2026-10-25T00:36.
Never claim what was not tested, and make the checks strict
- Rule: Every report states what was not verified (physical fit, slicer, thermal, airflow, loads). A check passes only on an explicit true. A missing file or key is a failure.
- Incident: The Rev 0.5 report opened with "nothing has been printed, run through a slicer, or test-fitted". The
hex chamfer report said "the airflow gain is untested". The Bambu link was reported as found in the binary but not
tested.
assembly-checks.jsoncarriesphysical_fit_verified: false. The sharedvptest cadreport "always records 'physical fit not verified' and 'slicer not run', and nothing can set those to true". A missing file, a missing key or a value like "yes" counts as a failure. - Check: The report schema has unverifiable flags that cannot be set to true, plus an explicit limits list (the README lists slicer, insert pullout, thermal, vibration, creep and mounting load).
- Source: 2026-10-24T07:41, 15:09, 17:10; 2026-10-25T01:44;
README.md(Checks).
Re-run the pipeline after geometry changes; ignore stale notifications
- Rule: When geometry changes, stop any run that is checking the old geometry and re-run everything downstream: checks, docs, renders and package. Match each completion notice to the run it belongs to.
- Incident:
- The agent stopped runs whose results would go stale three times (interface change, screw-seat change, fillet change).
- Twice it noticed that a completion notice belonged to an older run and kept waiting for the current one.
- It found Rev 0.4 numbers left in the measurement list (roof Z 102 instead of 106, gap 11.24 instead of 15.24).
- Drift remains in the project files:
README.mdis titled "Rev 0.5", but the exports sayrevision: 0.6-storage-modules. The README checks table says "4 stack combinations", whilestorage-checks.jsonhas seven.
- Check: Every artefact carries the revision string. The validator fails when a doc's revision or counts disagree with the JSON it summarises.
- Source: 2026-10-24T15:09, 17:09, 18:02; 2026-10-25T00:38, 01:46, 01:51;
README.md;exports/storage-checks.json.
Look at every render before showing it
- Rule: Open each render and check that it is current, lit well enough, and shows the feature in question before linking it.
- Incident:
- Renders being reviewed turned out to be old Rev 0.4 images; the new render pass had not started.
- The hex-inlet close-up was too dark and its angle hid the chamfer, so it was re-rendered lighter and more square-on.
- The user once pointed at a render made before the latest change, and the agent had to explain that it was stale.
- Check: Each render's modification time is later than the build that produced its geometry. A visual pass is logged for each new image.
- Source: 2026-10-24T07:33, 14:58, 15:09; 2026-10-25T02:04.
Verify generated files by reading them back
- Rule: After exporting a fabrication file, read it back with an independent parser and compare it with the source mesh.
- Incident: trimesh's 3MF export needed networkx, so the agent wrote a small standalone exporter. Its self-check then failed, because the read-back also went through trimesh, and the pipeline stopped there. The read-back was switched to a plain XML parse. The check compares triangle count, watertightness and volume; the shared tool uses a 0.1% volume tolerance and deletes any file that does not match.
- Check: For each 3MF: triangle count equal, closed surface, volume within 0.1%, otherwise delete the file and fail.
- Source: 2026-10-24T16:43, 16:54; 2026-10-25T01:44.