stock: records delegates to the descriptor, and the descriptor stops gating

geom.records no longer computes the section, cavity or laminae. It calls mechcomp.stock, so the shape of a piece of stock is defined once. All 123 oracle cases unmoved: 482 passed. stock.py also becomes a leaf module, ending an import cycle with geom that resolved only by accident of ordering.

Three defects in f5651d3 corrected. Provenance raised on an empty source, which made an unattributed dimension unrepresentable and blocked the ordinary use of the tool: type what the caliper reads, print, measure the print, adjust. Provenance now records and travels with the output. Fit refused negative clearance on the argument that interference is not assemblable, which is a design judgement and not the compilers to make. Interference is now computed and reported. CATALOGUE read as a whitelist and is documented as starting points, with a test asserting an entry built from nothing is as valid as one pulled from the dict.

emt_template takes the diameter, fit, designation and note from the caller. There is no standards table and no lookup. A parametric compiler cannot require its subject to be catalogued before it will run.

STOCK.md section 5 amended, since the refusals were implementing it. An entry without provenance no longer fails to ship, it ships labelled unattributed. The principle that a number must not appear from nowhere looking authoritative survives; the door does not.

Tests compare records and stock against a hand transcription of the reference rather than against each other, which would be tautological after delegation. Mutation testing found four gaps before landing: a dropped lamina stacking offset, emt_template silently ignoring its fit argument, describe discarding the note exactly when provenance was unverified, and a guard on float arithmetic that asserted a tautology.
This commit is contained in:
2026-08-23 10:24:39 -05:00
parent f5651d3a62
commit 70787ea17d
4 changed files with 419 additions and 71 deletions
+18 -3
View File
@@ -121,9 +121,24 @@ which number was used. Geometry takes millimetres.
part encloses a conduit says nothing about what the assembly carries. Measure and
attest; never adjudicate.
**No inferred stock.** If a dimension is not measured or cited, the entry is
incomplete and does not ship. A plausible number is worse than a missing one,
because a missing one stops the build.
**No inferred stock — but never a blocked build.** A dimension nobody has
attributed is recorded as unattributed and used. What must not happen is a
number appearing from nowhere and looking authoritative.
This was originally written as a refusal — an entry without provenance does
not ship — and implemented as a constructor that raised. That was wrong, and
wrong against §1: a compiler whose subject is arbitrary COTS hardware cannot
require the hardware to be catalogued before it will run. **Every dimension is
an input at every run.** Type what your caliper reads, print, measure the
print, adjust, print again. That loop is the tool.
Provenance therefore travels with the output instead of guarding the entrance,
and a later measurement supersedes an earlier guess.
**No design decisions taken on the operator's behalf.** An interference fit is
a legitimate choice — a conduit core that must not rattle wants one, and PLA
deflects. The compiler computes the interference and reports it. Whether it is
acceptable is not the compiler's call. Measure and attest; never adjudicate.
## 6. Consequence for what exists