From 0c220f449b7af70bafec60a48af26773d3cf47d2 Mon Sep 17 00:00:00 2001 From: TheRON Date: Mon, 14 Sep 2026 04:45:04 -0500 Subject: [PATCH] ROADMAP: section 7 is binding. PRECISION: prismatic-only is a limit ROADMAP opened by saying nothing in it is a promise. Section 7 holds eighteen standing principles cited by number as settled law from commit messages and from other documents - 4 governs what is hashed, 13 defines what a standard is, 17 governs what may write to a record, 18 governs how a contribution is admitted. A reader taking the header at its word would conclude Principle 17 is optional. The disclaimer now says what it always meant: it covers section 4 sequence and section 5 assumptions, not section 7. Principle 5 gets the same qualification PROCESS section 8 got. A permanent deviation is the specification is right about facts on a host and would be licence to lower a REQ if read without limit. PRECISION section 10 requires every section 7 entry to say whether it is a limit that work may lift or a boundary that was chosen. The prismatic-only entry said neither, which is the single most consequential ambiguity in the document. It is a limit, and the reason is now recorded: the oracle is a two-dimensional oracle with a scalar length multiplier - every recorded value is a property of the cross-section except LENGTH_MM, VOLUME_MM3 and MASS_G, and volume equals rounded section area times length to within 3.6e-12 across all 113 accepted cases. Lift it carelessly and that relation stops holding; nothing fails, it just stops meaning what it means. Anything keeping each station two-dimensional preserves it. Also in PRECISION: STL export landed and is no longer planned. An absent export format is a limit; the refusal to emit toolpaths is a boundary. ROADMAP section 4a corrected to match STAGING-STATE section 3a: nothing here is implemented on Kane Fabric, and SASE was used and never defined. The port is recorded done. The seed commit and test count are removed as derivable. IDENTITY-CONTRACT: the rewrap owed from a76879f. Applied by anchored patcher. Suite 643 passed, oracle intact. Documentation only. --- docs/IDENTITY-CONTRACT.md | 8 +++--- docs/PRECISION.md | 25 ++++++++++++++++++- docs/ROADMAP.md | 52 ++++++++++++++++++++++++++++----------- 3 files changed, 66 insertions(+), 19 deletions(-) diff --git a/docs/IDENTITY-CONTRACT.md b/docs/IDENTITY-CONTRACT.md index 11f2832..e957d73 100644 --- a/docs/IDENTITY-CONTRACT.md +++ b/docs/IDENTITY-CONTRACT.md @@ -210,10 +210,10 @@ That cheapness is the point. It means the placement of the line is a reversible decision rather than a structural one. **Where the line falls once it is enforced: export is gated; looking is not.** -The catalogue and -the composer are open to anyone. What requires membership is producing an -artifact that carries a design record, because the record names an author and an -author only means something once somebody established who they are. The site is +The catalogue and the composer are open to anyone. What requires membership is +producing an artifact that carries a design record, because the record names an +author, and an author only means something once somebody established who they +are. The site is the shopfront; the wall goes where the claim is made. --- diff --git a/docs/PRECISION.md b/docs/PRECISION.md index b21dce9..57ba9e3 100644 --- a/docs/PRECISION.md +++ b/docs/PRECISION.md @@ -246,6 +246,24 @@ contributor proposing an assembly layer is proposing a different product. cross-section swept along a straight axis. Not tapers, not curved axes, not varying sections, not surfaces of revolution, not anything organic. +**This is a limit, not a boundary** — §10's distinction, which this entry failed +to state until 2026-09-13. It may be lifted by work, and the reason it exists is +not that sweeping is the honest bound of what the compiler may claim. + +It exists because **the oracle is a two-dimensional oracle with a scalar length +multiplier.** Of the values the 123 cases record, every one is a property of the +cross-section except `LENGTH_MM`, `VOLUME_MM3` and `MASS_G` — and volume equals +rounded section area times length to within 3.6e-12 across all 113 accepted +cases. Lift the restriction carelessly and that relation stops holding. Nothing +would fail; it would simply stop meaning what it means. + +Anything that keeps each station's section two-dimensional preserves it. A member +modelled as an ordered set of prismatic segments, each carrying its own section, +still verifies segment by segment through the existing machinery, and a +one-segment member is byte-identical to today. Tapers and curved axes stay +outside the family and should: they vary continuously rather than piecewise, and +the volume relation would not survive them. + **It performs no engineering analysis whatsoever.** No stress, no load, no deflection, no buckling, no fatigue, no thermal behaviour, no failure prediction. It reports geometry — area, wall thickness, mass — and nothing about @@ -275,7 +293,12 @@ slicing. Geometry interchange is a different thing and is *not* excluded here. An STL or a STEP file describes a shape; a toolpath describes what a machine should do. -Exporting the former is in scope and planned; producing the latter is not. +Exporting the former is in scope; producing the latter is not. + +**STL export landed 2026-09-12** and needs no CAD kernel — a member is prismatic +by definition, so the mesh is two triangulated caps and a quad strip down the +boundary. STEP remains unbuilt. An absent export format is a *limit* in §10's +sense; the refusal to emit toolpaths is a *boundary*. --- diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index cdd700d..55b90b0 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -7,15 +7,24 @@ project aims at and why; it does not schedule work and nothing here is a promise that something will be built. `HANDOFF.md` §4 holds the actual order. Where the two disagree, §4 wins on sequence and this document wins on purpose. +**§7 is the exception, and it is binding.** The eighteen standing principles are +cited by number as settled law from commit messages and from other documents — +Principle 4 governs what is hashed, 13 defines what a standard is, 17 governs +what may write to a record, 18 governs how a contribution is admitted. A reader +taking the paragraph above at its word would conclude Principle 17 is optional. +It is not. The disclaimer covers §4's sequence and §5's assumptions; it has never +covered §7, and said so nowhere until 2026-09-13. + §§1, 2, 3 and 7 are the durable parts and are still correct. §4's sequence and -§5's production assumptions have both drifted since 18 AUG; the divergences are -recorded as open questions in `HANDOFF.md` §11 rather than patched here, because -resolving them needs the whole repository in view at once. +§5's production assumptions had both drifted since 18 AUG. The documentation +audit of 2026-09-13 corrected what was factually wrong here and in the companion +documents; questions that remain genuinely open are in `HANDOFF.md` §11, and +requirements that stand and are not met are in `DIVERGENCES.md`. | | | |---|---| -| Updated | 2026-08-18 | -| Companions | `PROCESS.md`, `ENVIRONMENT.md`, `STAGING-STATE.md`, `FAILURES.md` | +| Updated | 2026-09-13 | +| Companions | `PROCESS.md`, `ENVIRONMENT.md`, `STAGING-STATE.md`, `FAILURES.md`, `DIVERGENCES.md` | --- @@ -144,15 +153,20 @@ a new call into the same machinery, not a new machine. - **Container SMTP egress blocked, 2026-08-17.** The project-local half of F-025 is corrected; the estate question about `wg-pk` client trust remains open. - **Repository seeded, 2026-08-18.** Reference implementation, frozen oracle, - pinned toolchain and test harness at `c7e32d8`. Dependencies installed, oracle - verified in-container, `3 passed, 236 skipped`. + pinned toolchain and test harness. Dependencies installed and the oracle + verified in-container. The commit and the test count are not recorded here — + `git log` and `make test` report them, and the figures that used to sit on + this line described the repository for two days. - **Container baseline established, 2026-08-18.** All three containers on `srv-b` conform, asserted by an executable check rather than by inspection. -### Next — the port +### The port — done, 2026-08-20 -Port `sb-geom` to Shapely; `pytest -n auto` green against all 123 cases. A port -that accepts the ten rejections is wrong. +`sb-geom` is ported to Shapely and the suite is green against all 123 cases. A +port that accepted the ten rejections would have been wrong; this one does not. + +The reasoning below is kept because it explains a choice that is now +load-bearing rather than prospective. Why this rather than more OpenSCAD: exceptions can be caught. Roughly half the defensive complexity in the current library exists because an OpenSCAD assert @@ -189,9 +203,15 @@ getting their own generators. ## 4a. Parallel project -**Kane Fabric** — a separate project on the same host, and the platform on -which SASE, HOA Diagnostics, the Mechanical Compiler and other SASE-consuming -projects are implemented. +**Kane Fabric** — a separate project on the same host. Each project has its own +FQDN and its own container; they share the service bridge, the WireGuard hub and +the proxy. + +An earlier version of this paragraph called Kane Fabric the platform on which +SASE, HOA Diagnostics, the Mechanical Compiler and other SASE-consuming projects +are implemented. Nothing here is implemented on Kane Fabric, and `SASE` was used +without being defined anywhere in this repository. Corrected 2026-09-13 on the +operator's statement of the topology. It is recorded here so its existence is known, not because it creates work. Kane Fabric owns geographic state; the Mechanical Compiler owns member @@ -275,7 +295,11 @@ on whether it makes distributed manufacturing capacity legible. toolchain versions. Hashing parameters plus generator revision keeps a qualification valid across an upgrade that did not change the geometry. 5. **A permanent deviation is not a deviation — it is the specification.** - Promote it and delete the exception. + Promote it and delete the exception. **This governs facts about a host, not a + requirement the code has not met.** A REQ is never lowered to match what was + built: it stands, the gap is recorded in `DIVERGENCES.md`, and the correction + is owed by the code. A specification that agrees with whatever exists + specifies nothing. 6. **Record the failure before correcting it.** Then apply the smallest corrective change, not the one that also fixes three things you were worried about.