@hatiolab/figure-model 0.1.35 → 0.1.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/v3-asset-types.d.ts +89 -16
- package/dist/v3-asset-types.d.ts.map +1 -1
- package/dist/v3-asset.d.ts.map +1 -1
- package/dist/v3-asset.js +34 -25
- package/dist/v3-asset.js.map +1 -1
- package/dist/v3-authoring-actions.d.ts +97 -0
- package/dist/v3-authoring-actions.d.ts.map +1 -0
- package/dist/v3-authoring-actions.js +384 -0
- package/dist/v3-authoring-actions.js.map +1 -0
- package/dist/v3-capabilities.d.ts.map +1 -1
- package/dist/v3-capabilities.js +4 -77
- package/dist/v3-capabilities.js.map +1 -1
- package/dist/v3-driver.d.ts +24 -1
- package/dist/v3-driver.d.ts.map +1 -1
- package/dist/v3-driver.js +68 -2
- package/dist/v3-driver.js.map +1 -1
- package/dist/v3-from-v2.d.ts +34 -1
- package/dist/v3-from-v2.d.ts.map +1 -1
- package/dist/v3-from-v2.js +676 -19
- package/dist/v3-from-v2.js.map +1 -1
- package/dist/v3-gate.d.ts +59 -6
- package/dist/v3-gate.d.ts.map +1 -1
- package/dist/v3-gate.js +310 -45
- package/dist/v3-gate.js.map +1 -1
- package/dist/v3-graph-types.d.ts +9 -1
- package/dist/v3-graph-types.d.ts.map +1 -1
- package/dist/v3-graph.d.ts +5 -3
- package/dist/v3-graph.d.ts.map +1 -1
- package/dist/v3-graph.js +93 -4
- package/dist/v3-graph.js.map +1 -1
- package/dist/v3-kernel-version.d.ts +1 -1
- package/dist/v3-kernel-version.js +1 -1
- package/dist/v3-mesh-compare.d.ts +2 -5
- package/dist/v3-mesh-compare.d.ts.map +1 -1
- package/dist/v3-mesh-compare.js +2 -145
- package/dist/v3-mesh-compare.js.map +1 -1
- package/dist/v3-shape-sampling.d.ts +14 -0
- package/dist/v3-shape-sampling.d.ts.map +1 -0
- package/dist/v3-shape-sampling.js +120 -0
- package/dist/v3-shape-sampling.js.map +1 -0
- package/dist/v3-surface.d.ts +15 -0
- package/dist/v3-surface.d.ts.map +1 -0
- package/dist/v3-surface.js +104 -0
- package/dist/v3-surface.js.map +1 -0
- package/docs/prototypes/v3-asset.schema.json +0 -8
- package/docs/v3-asset-persistence.md +1 -1
- package/docs/v3-legacy-risk-audit-2026-09-23.md +39 -0
- package/docs/v3-operator-contracts.md +2 -0
- package/docs/v3-shape-dimension-contract.md +111 -0
- package/package.json +1 -1
package/dist/v3-gate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-gate.d.ts","sourceRoot":"","sources":["../src/v3-gate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"v3-gate.d.ts","sourceRoot":"","sources":["../src/v3-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/v3-gate.js
CHANGED
|
@@ -20,14 +20,21 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { compileV3Asset } from "./v3-asset.js";
|
|
22
22
|
import { compileV3Graph } from "./v3-graph.js";
|
|
23
|
+
import { resolveV3Surface, evaluateV3Surface } from "./v3-surface.js";
|
|
23
24
|
import { AXES, SKIN } from "./types.js";
|
|
24
|
-
|
|
25
|
+
/** How far a declared mounting face may lean off the plane before it is not that plane any more. */
|
|
26
|
+
const CONTACT_TILT_DEG = 0.1;
|
|
27
|
+
import { transformPoints, v3ShapePoints } from "./v3-shape-sampling.js";
|
|
25
28
|
/** Axis-aligned world boxes of evaluated geometry. `part` is the placing node: a `place@1` id or the repeated member. */
|
|
26
29
|
export function v3WorldBoxesOf(geometry, writers, options = {}) {
|
|
27
30
|
const out = [];
|
|
28
31
|
for (const g of geometry) {
|
|
29
32
|
if (!('pose' in g))
|
|
30
33
|
continue;
|
|
34
|
+
// A part whose visibility flag is off is not drawn, so it is not a drawn body here. It is still evaluated and
|
|
35
|
+
// still placed; `v3OccupiedBoxesOf` is the reader that wants it (the occupancy does not move with visibility).
|
|
36
|
+
if (g.visible === false)
|
|
37
|
+
continue;
|
|
31
38
|
const part = g.key ? writers.get(g.key) : g.id;
|
|
32
39
|
const d = g.shape.dimensions;
|
|
33
40
|
const local = g.shape.provider === 'cylinder'
|
|
@@ -40,7 +47,38 @@ export function v3WorldBoxesOf(geometry, writers, options = {}) {
|
|
|
40
47
|
? [d.radiusX * 2, d.length, d.radiusZ * 2]
|
|
41
48
|
: [d.width, d.height, d.depth];
|
|
42
49
|
const r = g.pose.r;
|
|
43
|
-
|
|
50
|
+
/*
|
|
51
|
+
How far the body reaches along each world axis.
|
|
52
|
+
|
|
53
|
+
A box is bounded by summing its turned sides, and that is what the sum below does. A round body is not:
|
|
54
|
+
measuring a spinning wheel as a turning square says it dips below the floor, which it does not. The
|
|
55
|
+
forklift's wheel read 70 mm under the floor at 45° for exactly this reason — 340·(cos45 + sin45) is the
|
|
56
|
+
square's diagonal, not the wheel's. The V2 gate measures it the same way, so the two agreeing said nothing
|
|
57
|
+
about whether either was right (the V3 designer's caution, 2026-09-22).
|
|
58
|
+
|
|
59
|
+
For a round body the reach is its support along the axis: the axis half-length times how much the body's
|
|
60
|
+
axis points that way, plus the cross-section's own reach. Written per provider below; a box keeps the sum.
|
|
61
|
+
*/
|
|
62
|
+
const round = (() => {
|
|
63
|
+
const axis = (a) => r[a][1], // where the body's own Y axis points
|
|
64
|
+
across = (a, i) => r[a][i];
|
|
65
|
+
const support = (a, half, rx, rz) => 2 * (half * Math.abs(axis(a)) + Math.hypot(rx * across(a, 0), rz * across(a, 2)));
|
|
66
|
+
switch (g.shape.provider) {
|
|
67
|
+
case 'cylinder':
|
|
68
|
+
return (a) => support(a, d.length / 2, d.radius, d.radius);
|
|
69
|
+
case 'ellipticCylinder':
|
|
70
|
+
return (a) => support(a, d.length / 2, d.radiusX, d.radiusZ);
|
|
71
|
+
case 'frustum': {
|
|
72
|
+
const widest = Math.max(d.radiusTop, d.radiusBottom);
|
|
73
|
+
return (a) => support(a, d.height / 2, widest, widest);
|
|
74
|
+
}
|
|
75
|
+
case 'sphere':
|
|
76
|
+
return (a) => 2 * Math.hypot(d.radiusX * across(a, 0), d.radiusY * axis(a), d.radiusZ * across(a, 2));
|
|
77
|
+
default:
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
})();
|
|
81
|
+
const extent = AXES.map((_, a) => (round ? round(a) : local.reduce((s, v, i) => s + Math.abs(r[a][i]) * v, 0)));
|
|
44
82
|
const box = {
|
|
45
83
|
part,
|
|
46
84
|
centre: { x: g.pose.t[0], y: g.pose.t[1], z: g.pose.t[2] },
|
|
@@ -54,6 +92,13 @@ export function v3WorldBoxesOf(geometry, writers, options = {}) {
|
|
|
54
92
|
}
|
|
55
93
|
return out;
|
|
56
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Every placed body including the ones that are not drawn. The declared occupancy does not shrink or grow with
|
|
97
|
+
* visibility (V3 designer's ruling 2026-09-22), so the gate measures against this, not against the drawn set.
|
|
98
|
+
*/
|
|
99
|
+
export function v3OccupiedBoxesOf(geometry, writers, options = {}) {
|
|
100
|
+
return v3WorldBoxesOf(geometry.map(g => ('pose' in g ? { ...g, visible: true } : g)), writers, options);
|
|
101
|
+
}
|
|
57
102
|
/** Who writes each graph value, by node id. */
|
|
58
103
|
export function v3WritersOf(asset) {
|
|
59
104
|
const writers = new Map();
|
|
@@ -62,6 +107,65 @@ export function v3WritersOf(asset) {
|
|
|
62
107
|
writers.set(ref, n.id);
|
|
63
108
|
return writers;
|
|
64
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* What each operator does to a value's extremes over the state box. Every operator in the kernel is listed by
|
|
112
|
+
* name — no pattern, no default — so a new one has no classification until someone writes its basis down, and
|
|
113
|
+
* `v3-state-dimension.test.ts` fails until they do.
|
|
114
|
+
*
|
|
115
|
+
* - `multilinear`: degree one in each state input given multilinear arguments, so the extreme sits at a corner
|
|
116
|
+
* however the value is later combined. Sums; products and quotients under the conditions checked in
|
|
117
|
+
* `cornerExtremalBasis`; poses and the structural operators, which translate and select but never bend a
|
|
118
|
+
* coordinate; the shape providers, whose extents are linear in their arguments; `feature@1`, whose pose is a
|
|
119
|
+
* linear combination of the shape's dimensions with an axis fixed by the feature's name, not by its size.
|
|
120
|
+
* - `monotone`: monotone in each argument, and not multilinear. Such a value may be a final coordinate on its
|
|
121
|
+
* own, and combining it with anything else that moves with the same state input is refused. Each carries its
|
|
122
|
+
* own condition in `cornerExtremalBasis`: `min`/`max` refuse arguments that share an input, `curve` refuses
|
|
123
|
+
* keys that move or turn around, `geomean` refuses factors that share an input.
|
|
124
|
+
* - `unknown`: nothing is claimed. A state-dependent argument here means the coverage falls back to sampling.
|
|
125
|
+
*/
|
|
126
|
+
export const V3_STATE_EXTREME_BASIS = Object.freeze({
|
|
127
|
+
'add@1': 'multilinear',
|
|
128
|
+
'mul@1': 'multilinear',
|
|
129
|
+
'div@1': 'multilinear',
|
|
130
|
+
'rigid@1': 'multilinear',
|
|
131
|
+
'compose@1': 'multilinear',
|
|
132
|
+
'attach@1': 'multilinear',
|
|
133
|
+
'map-point@1': 'multilinear',
|
|
134
|
+
'place@1': 'multilinear',
|
|
135
|
+
'member@1': 'multilinear',
|
|
136
|
+
'assembly@1': 'multilinear',
|
|
137
|
+
'repeat@1': 'multilinear',
|
|
138
|
+
'select-item@1': 'multilinear',
|
|
139
|
+
'point@1': 'multilinear',
|
|
140
|
+
'feature@1': 'multilinear',
|
|
141
|
+
'between@1': 'multilinear',
|
|
142
|
+
'box@1': 'multilinear',
|
|
143
|
+
'cylinder@1': 'multilinear',
|
|
144
|
+
'axis-slide@1': 'multilinear',
|
|
145
|
+
'at-least@1': 'multilinear',
|
|
146
|
+
'box-shape@1': 'multilinear',
|
|
147
|
+
'cylinder-shape@1': 'multilinear',
|
|
148
|
+
'cylinder-shape@2': 'multilinear',
|
|
149
|
+
'sphere-shape@1': 'multilinear',
|
|
150
|
+
'frustum-shape@1': 'multilinear',
|
|
151
|
+
'rounded-box@1': 'multilinear',
|
|
152
|
+
'rounded-box@2': 'multilinear',
|
|
153
|
+
'hollow-box@1': 'multilinear',
|
|
154
|
+
'hollow-box@2': 'multilinear',
|
|
155
|
+
'portal-profile@1': 'multilinear',
|
|
156
|
+
'fit-pitch@1': 'multilinear',
|
|
157
|
+
'fixed-count@1': 'multilinear',
|
|
158
|
+
'min@1': 'monotone',
|
|
159
|
+
'max@1': 'monotone',
|
|
160
|
+
'curve@1': 'monotone',
|
|
161
|
+
'geomean@1': 'monotone',
|
|
162
|
+
// A polygon's world box is the largest of its vertex coordinates. Two vertices moving with one input fold it,
|
|
163
|
+
// the same way min@1 folds, and the vertices are arguments of one node rather than values of their own.
|
|
164
|
+
'polygon-shape@1': 'unknown',
|
|
165
|
+
'axis-turn@1': 'unknown',
|
|
166
|
+
'distance@1': 'unknown',
|
|
167
|
+
'sin@1': 'unknown'
|
|
168
|
+
});
|
|
65
169
|
/**
|
|
66
170
|
* Why the extremes of every state-dependent coordinate lie at the corners of the state box, or why that cannot be
|
|
67
171
|
* shown. The basis: a value that is multilinear in the state inputs (each input to degree one) or a monotone
|
|
@@ -70,26 +174,97 @@ export function v3WritersOf(asset) {
|
|
|
70
174
|
* denominator, and through translations in `rigid`. It does not hold through `sin`, `axis-turn`, a
|
|
71
175
|
* state-dependent rotation angle in `rigid`, a state-dependent denominator, or a product of two values that share
|
|
72
176
|
* an input. Returns the reasons it fails, empty when it holds.
|
|
177
|
+
*
|
|
178
|
+
* Monotone in each argument is not the same as monotone in a state input the arguments share, and a value that
|
|
179
|
+
* is merely monotone cannot be combined further. Both were found by the V3 designer, 2026-09-23:
|
|
180
|
+
* `10 + 100·min(q, 1−q)` is widest in the middle, and `10 + 100·(√q − q)` is widest at q = ¼. The gate called
|
|
181
|
+
* both proven.
|
|
182
|
+
*
|
|
183
|
+
* So the property is named rather than the operators that break it. A value is *multilinear* when it is degree
|
|
184
|
+
* one in each state input, which is what makes its extreme sit at a corner however it is later combined. Only
|
|
185
|
+
* the operators in `KEEPS_MULTILINEAR` below carry that property forward, and only under the conditions in the
|
|
186
|
+
* switch — a product of two values sharing an input, or a state-dependent denominator, does not. Every other
|
|
187
|
+
* operator, named or not, yields a value *bent* in each state input it depends on: at best monotone in that
|
|
188
|
+
* input, so it may stand as a final coordinate, but combining it with anything else that moves with the same
|
|
189
|
+
* input — a sum, a product, a pose composed onto it — is refused. A new operator is bent until someone shows
|
|
190
|
+
* it preserves multilinearity and adds it to the list.
|
|
73
191
|
*/
|
|
74
192
|
export function cornerExtremalBasis(asset, dependence) {
|
|
75
193
|
const reasons = [];
|
|
76
194
|
const dep = (ref) => dependence[ref] ?? [];
|
|
77
195
|
const shares = (a, b) => dep(a).some(x => dep(b).includes(x));
|
|
196
|
+
const keepsMultilinear = (op) => V3_STATE_EXTREME_BASIS[op] === 'multilinear';
|
|
197
|
+
// Which state inputs a value is bent in. Nodes may be written in any order, so this follows the arguments.
|
|
198
|
+
const writer = new Map();
|
|
199
|
+
for (const n of asset.document.model.nodes)
|
|
200
|
+
for (const ref of Object.values(n.outputs))
|
|
201
|
+
writer.set(ref, n);
|
|
202
|
+
/*
|
|
203
|
+
`compose(a, b)` is `{ r: a.r·b.r, t: a.r·b.t + a.t }`, and `attach(a, o, b)` is `compose(compose(a, o),
|
|
204
|
+
inverse(b))`, where `inverse(b).t` is `−b.rᵀ·b.t`. Every translation in those is the input translations
|
|
205
|
+
multiplied by rotation matrices. That is multilinear only while the matrices hold still: a state-dependent
|
|
206
|
+
rotation times a state-dependent translation is a product of two things moving with the same input. So the
|
|
207
|
+
rotation component of every pose that reaches a composition must be state-free, and this says when it is.
|
|
208
|
+
A `rigid@1` says so through its three angle arguments; `axis-slide@1` carries no rotation; `feature@1`'s
|
|
209
|
+
axes are fixed by the feature's name, not by the shape's size. Anything else is not established.
|
|
210
|
+
*/
|
|
211
|
+
const rotationFreeCache = new Map();
|
|
212
|
+
const rotationStateFree = (ref) => {
|
|
213
|
+
const done = rotationFreeCache.get(ref);
|
|
214
|
+
if (done !== undefined)
|
|
215
|
+
return done;
|
|
216
|
+
rotationFreeCache.set(ref, false);
|
|
217
|
+
const n = writer.get(ref);
|
|
218
|
+
let out;
|
|
219
|
+
if (!n)
|
|
220
|
+
out = true; // an input or a constant is not a pose
|
|
221
|
+
else if (n.op === 'rigid@1')
|
|
222
|
+
out = !n.args.slice(3, 6).some(a => dep(a).length);
|
|
223
|
+
else if (n.op === 'axis-slide@1')
|
|
224
|
+
out = true;
|
|
225
|
+
else if (n.op === 'feature@1')
|
|
226
|
+
out = true;
|
|
227
|
+
else if (n.op === 'compose@1' || n.op === 'attach@1')
|
|
228
|
+
out = n.args.every(rotationStateFree);
|
|
229
|
+
else
|
|
230
|
+
out = false;
|
|
231
|
+
rotationFreeCache.set(ref, out);
|
|
232
|
+
return out;
|
|
233
|
+
};
|
|
234
|
+
const bentCache = new Map();
|
|
235
|
+
const bent = (ref) => {
|
|
236
|
+
const done = bentCache.get(ref);
|
|
237
|
+
if (done)
|
|
238
|
+
return done;
|
|
239
|
+
bentCache.set(ref, []); // a cycle is the compiler's error to report, not this one's
|
|
240
|
+
const n = writer.get(ref);
|
|
241
|
+
if (!n)
|
|
242
|
+
return [];
|
|
243
|
+
const out = keepsMultilinear(n.op) ? [...new Set(n.args.flatMap(bent))] : dep(ref);
|
|
244
|
+
bentCache.set(ref, out);
|
|
245
|
+
return out;
|
|
246
|
+
};
|
|
78
247
|
for (const n of asset.document.model.nodes) {
|
|
79
248
|
const stateful = n.args.filter(a => dep(a).length);
|
|
80
249
|
if (!stateful.length)
|
|
81
250
|
continue;
|
|
251
|
+
// A bent value meeting anything else that moves with the same input, whatever the operator does with them.
|
|
252
|
+
// `at-least@1` is left out: it yields a flag, which reaches no dimension, pose or occupancy.
|
|
253
|
+
if (n.op !== 'at-least@1')
|
|
254
|
+
for (let i = 0; i < n.args.length; i++)
|
|
255
|
+
for (let j = i + 1; j < n.args.length; j++) {
|
|
256
|
+
const clash = [...new Set([...bent(n.args[i]).filter(x => dep(n.args[j]).includes(x)), ...bent(n.args[j]).filter(x => dep(n.args[i]).includes(x))])];
|
|
257
|
+
if (clash.length)
|
|
258
|
+
reasons.push(`${n.id}: ${n.op} combines a value bent in ${clash.join(', ')} with another that moves with ${clash.join(', ')}, so the extreme may lie inside the range`);
|
|
259
|
+
}
|
|
82
260
|
switch (n.op) {
|
|
83
261
|
case 'add@1':
|
|
84
|
-
case 'compose@1':
|
|
85
|
-
case 'attach@1':
|
|
86
262
|
case 'place@1':
|
|
87
263
|
case 'member@1':
|
|
88
264
|
case 'feature@1':
|
|
89
265
|
case 'assembly@1':
|
|
90
266
|
case 'repeat@1':
|
|
91
267
|
case 'select-item@1':
|
|
92
|
-
case 'map-point@1':
|
|
93
268
|
case 'point@1':
|
|
94
269
|
break;
|
|
95
270
|
case 'mul@1':
|
|
@@ -112,17 +287,86 @@ export function cornerExtremalBasis(asset, dependence) {
|
|
|
112
287
|
if (n.args.slice(0, 3).some(a => dep(a).length))
|
|
113
288
|
reasons.push(`${n.id}: the slide axis depends on state`);
|
|
114
289
|
break;
|
|
290
|
+
case 'compose@1':
|
|
291
|
+
case 'attach@1':
|
|
292
|
+
case 'map-point@1':
|
|
293
|
+
for (const a of n.args)
|
|
294
|
+
if (dep(a).length && !rotationStateFree(a))
|
|
295
|
+
reasons.push(`${n.id}: ${n.op} turns a translation by a rotation that depends on ${dep(a).join(', ')}`);
|
|
296
|
+
break;
|
|
297
|
+
case 'max@1':
|
|
298
|
+
case 'min@1':
|
|
299
|
+
// Monotone in each argument. Two arguments moving with the same input turn that into a fold: min(q, 1−q)
|
|
300
|
+
// rises then falls, and its largest value is in the middle, not at either end.
|
|
301
|
+
for (let i = 0; i < n.args.length; i++)
|
|
302
|
+
for (let j = i + 1; j < n.args.length; j++)
|
|
303
|
+
if (shares(n.args[i], n.args[j]))
|
|
304
|
+
reasons.push(`${n.id}: ${n.op} of two values that both depend on ${dep(n.args[i]).filter(x => dep(n.args[j]).includes(x)).join(', ')}`);
|
|
305
|
+
break;
|
|
306
|
+
case 'at-least@1':
|
|
307
|
+
// A flag cannot reach a dimension, a pose or the occupancy, so a step here moves no world coordinate.
|
|
308
|
+
// Visibility never changes the declared volume either (designer's ruling), so the gate checks hidden
|
|
309
|
+
// parts exactly as it checks shown ones.
|
|
310
|
+
break;
|
|
311
|
+
case 'curve@1': {
|
|
312
|
+
// A piecewise-linear curve is monotone in x when its key values never change direction; then its extremes
|
|
313
|
+
// are at x's extremes. Keys that depend on state, or a curve that rises and falls, are not covered.
|
|
314
|
+
if (n.args.slice(1).some(a => dep(a).length)) {
|
|
315
|
+
reasons.push(`${n.id}: a curve key depends on ${[...new Set(n.args.slice(1).flatMap(dep))].join(', ')}`);
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
const constant = new Map(asset.document.model.constants.map(c => [c.id, c.value]));
|
|
319
|
+
const values = [];
|
|
320
|
+
for (let i = 2; i < n.args.length; i += 2)
|
|
321
|
+
values.push(constant.get(n.args[i]) ?? NaN);
|
|
322
|
+
const up = values.every((v, i) => i === 0 || v >= values[i - 1]);
|
|
323
|
+
const down = values.every((v, i) => i === 0 || v <= values[i - 1]);
|
|
324
|
+
if (values.some(Number.isNaN))
|
|
325
|
+
reasons.push(`${n.id}: a curve key is not a constant`);
|
|
326
|
+
else if (!up && !down)
|
|
327
|
+
reasons.push(`${n.id}: the curve rises and falls (${values.join(', ')}), so its extreme may lie inside the range`);
|
|
328
|
+
break;
|
|
329
|
+
}
|
|
115
330
|
default:
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
if (n.op.endsWith('-shape@1') || n.op.endsWith('-shape@2') || n.op === 'rounded-box@1' || n.op === 'rounded-box@2' || n.op === 'hollow-box@1' || n.op === 'hollow-box@2' || n.op === 'portal-profile@1')
|
|
331
|
+
// Everything with no condition of its own: the registry decides. An operator it does not list is unknown,
|
|
332
|
+
// so a kernel that grows without writing a basis down loses coverage rather than claiming one.
|
|
333
|
+
if (V3_STATE_EXTREME_BASIS[n.op] === 'multilinear')
|
|
120
334
|
break;
|
|
121
|
-
reasons.push(`${n.id}: ${n.op} with a state-dependent argument (${[...new Set(stateful.flatMap(dep))].join(', ')})`);
|
|
335
|
+
reasons.push(`${n.id}: ${n.op} (${V3_STATE_EXTREME_BASIS[n.op] ?? 'unclassified'}) with a state-dependent argument (${[...new Set(stateful.flatMap(dep))].join(', ')})`);
|
|
122
336
|
}
|
|
123
337
|
}
|
|
124
338
|
return reasons;
|
|
125
339
|
}
|
|
340
|
+
/*
|
|
341
|
+
Holding every part inside the declared volume and touching the plane the figure is mounted on are two
|
|
342
|
+
different claims, and corner extremality only settles the first. Whether the figure touches used to be read as
|
|
343
|
+
the *smallest* gap over its parts, and a smallest folds the way `min@1` folds: two boxes at 20q and 20(1−q) mm
|
|
344
|
+
above the floor each touch at one end of q and both float 10 mm at the middle (V3 designer's counterexample
|
|
345
|
+
2026-09-23). The gate evaluated the two ends, found a part on the floor at each, and said proven.
|
|
346
|
+
|
|
347
|
+
The declaration names one face now, so there is no smallest to fold: the check is a single equality. What is
|
|
348
|
+
left is whether that face stays put. A face whose placement does not move with state sits in the same place at
|
|
349
|
+
every state, so one evaluation settles it. A face that moves is not settled at the corners — the equality has
|
|
350
|
+
to hold at every state in between, and corner extremality says nothing about an equality — so the asset is
|
|
351
|
+
sampled, which checks more states and reports the distance it finds without calling it a bound.
|
|
352
|
+
|
|
353
|
+
An asset that does not name a mounting face is not asked to touch anything, and nothing here applies to it.
|
|
354
|
+
*/
|
|
355
|
+
function unprovenContact(asset, graph) {
|
|
356
|
+
const contact = asset.occupancy?.contact;
|
|
357
|
+
if (!contact)
|
|
358
|
+
return [];
|
|
359
|
+
const moving = [contact.surface.placement, contact.surface.feature].filter(ref => (graph.dependence[ref] ?? []).length);
|
|
360
|
+
if (!moving.length)
|
|
361
|
+
return [];
|
|
362
|
+
return [
|
|
363
|
+
`the mounting face ${contact.surface.placement}/${contact.surface.feature} moves with ${[...new Set(moving.flatMap(ref => graph.dependence[ref] ?? []))].join(', ')}; it has to lie on the plane at every state, and corners do not settle an equality`
|
|
364
|
+
];
|
|
365
|
+
}
|
|
366
|
+
/** Which node writes each graph output, the shape the surface reader wants. */
|
|
367
|
+
function nodeWriters(asset) {
|
|
368
|
+
return new Map(asset.document.model.nodes.flatMap(n => Object.values(n.outputs).map(ref => [ref, n])));
|
|
369
|
+
}
|
|
126
370
|
/** The state inputs of an asset with their declared bounds. */
|
|
127
371
|
function stateInputs(asset) {
|
|
128
372
|
return asset.document.model.inputs.filter(i => i.role === 'state').map(i => ({ id: i.id, min: i.min, max: i.max }));
|
|
@@ -169,6 +413,7 @@ export function inspectV3Asset(asset, options = {}) {
|
|
|
169
413
|
}
|
|
170
414
|
else {
|
|
171
415
|
const unprovable = cornerExtremalBasis(asset, graph.dependence);
|
|
416
|
+
unprovable.push(...unprovenContact(asset, graph));
|
|
172
417
|
const maxCorners = opts.maxCornerInputs ?? 10;
|
|
173
418
|
const allCorners = inputs.length <= maxCorners;
|
|
174
419
|
const corners = [];
|
|
@@ -218,30 +463,36 @@ export function inspectV3Asset(asset, options = {}) {
|
|
|
218
463
|
inspectOne(asset, graph, evaluated.geometry, state, push);
|
|
219
464
|
}
|
|
220
465
|
const values = graph.evaluate({ ...asset.designInputs, ...asset.stateDefaults }).values;
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
};
|
|
226
|
-
return { extent, placement: asset.occupancy.placement, coverage, violations };
|
|
466
|
+
const read = (a) => ({
|
|
467
|
+
min: values[asset.occupancy.bounds[a].min],
|
|
468
|
+
max: values[asset.occupancy.bounds[a].max]
|
|
469
|
+
});
|
|
470
|
+
return { bounds: { x: read('x'), y: read('y'), z: read('z') }, placement: asset.occupancy.placement, coverage, violations };
|
|
227
471
|
}
|
|
228
472
|
function inspectOne(asset, graph, geometry, state, push) {
|
|
229
473
|
const occupancy = asset.occupancy;
|
|
230
474
|
// The asset evaluation returns geometry only; the declared lengths are graph values, so read the graph itself.
|
|
231
475
|
const values = graph.evaluate({ ...asset.designInputs, ...asset.stateDefaults, ...state }).values;
|
|
232
|
-
const extent = {
|
|
233
|
-
x: values[occupancy.extent.x],
|
|
234
|
-
y: values[occupancy.extent.y],
|
|
235
|
-
z: values[occupancy.extent.z]
|
|
236
|
-
};
|
|
237
476
|
const placement = occupancy.placement;
|
|
238
|
-
const boxes =
|
|
477
|
+
const boxes = v3OccupiedBoxesOf(geometry, v3WritersOf(asset));
|
|
239
478
|
const round = (v) => Math.round(v * 1e4) / 1e4;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
479
|
+
/*
|
|
480
|
+
The declared volume is the reach on each side of the asset origin, so it can sit anywhere around it. The
|
|
481
|
+
origin is where the figure is mounted, which is a coordinate reference and not a surface nothing may pass:
|
|
482
|
+
an arm on a bench reaches below the bench, and that is the machine working (V3 designer's ruling 2026-09-23).
|
|
483
|
+
*/
|
|
484
|
+
const low = { x: 0, y: 0, z: 0 };
|
|
485
|
+
const high = { x: 0, y: 0, z: 0 };
|
|
486
|
+
for (const axis of AXES) {
|
|
487
|
+
low[axis] = values[occupancy.bounds[axis].min];
|
|
488
|
+
high[axis] = values[occupancy.bounds[axis].max];
|
|
489
|
+
if (!(high[axis] > low[axis]))
|
|
490
|
+
push({
|
|
491
|
+
code: 'OCCUPANCY_UNDECLARED',
|
|
492
|
+
axis,
|
|
493
|
+
detail: `the declared volume on ${axis.toUpperCase()} runs from ${low[axis]} to ${high[axis]}, which encloses nothing`
|
|
494
|
+
});
|
|
495
|
+
}
|
|
245
496
|
for (const box of boxes) {
|
|
246
497
|
for (const axis of AXES) {
|
|
247
498
|
const reach = box.extent[axis] / 2;
|
|
@@ -257,31 +508,45 @@ function inspectOne(asset, graph, geometry, state, push) {
|
|
|
257
508
|
});
|
|
258
509
|
}
|
|
259
510
|
}
|
|
260
|
-
if (!lowest || box.centre.y - box.extent.y / 2 < lowest.centre.y - lowest.extent.y / 2)
|
|
261
|
-
lowest = box;
|
|
262
|
-
if (!highest || box.centre.y + box.extent.y / 2 > highest.centre.y + highest.extent.y / 2)
|
|
263
|
-
highest = box;
|
|
264
511
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
512
|
+
/*
|
|
513
|
+
Only an asset that names the face it is mounted on is asked to make the contact, and two things have to hold
|
|
514
|
+
for that face to lie in the mounting plane: its reference point is on the plane, and its plane is the same
|
|
515
|
+
plane. Checking the point alone passed a box stood on its side with the right-hand face declared as the
|
|
516
|
+
mounting face, because that face's centre happened to sit at Y = 0 (V3 designer's counterexample
|
|
517
|
+
2026-09-23). A vertical face and a horizontal floor are not the same plane.
|
|
518
|
+
|
|
519
|
+
Whether the face points into the plane or away from it is a separate question — which way up the figure is
|
|
520
|
+
mounted — and is not asked here. Only that the two planes coincide.
|
|
521
|
+
|
|
522
|
+
The plane is Y = 0 in the asset frame, for a floor figure and a ceiling one alike. The origin is where the
|
|
523
|
+
figure is fastened (V3 designer's ruling 2026-09-23); a ceiling figure hangs from it and names its top face.
|
|
524
|
+
Reading the plane off `occupancy.bounds.y.max` moved the thing the figure is mounted on whenever someone
|
|
525
|
+
widened the volume it takes up, which are two unrelated declarations.
|
|
526
|
+
*/
|
|
527
|
+
if (occupancy.contact && (placement === 'floor' || placement === 'ceiling')) {
|
|
528
|
+
const surface = evaluateV3Surface(values, resolveV3Surface({ types: graph.outputTypes, writers: nodeWriters(asset), model: asset.document.model, assetFrame: asset.document.capabilities.assetFrame }, occupancy.contact.surface, 'occupancy.contact.surface'));
|
|
529
|
+
const part = v3WritersOf(asset).get(surface.placement) ?? surface.placement;
|
|
530
|
+
const off = surface.pose.t[1];
|
|
531
|
+
if (Math.abs(off) > SKIN)
|
|
268
532
|
push({
|
|
269
533
|
code: 'PARTS_OFF_PLACEMENT_FACE',
|
|
270
|
-
part
|
|
534
|
+
part,
|
|
271
535
|
axis: 'y',
|
|
272
|
-
mm: round(
|
|
273
|
-
detail: `the
|
|
536
|
+
mm: round(Math.abs(off)),
|
|
537
|
+
detail: `the ${surface.face} face of '${part}', which the asset declares as what it is mounted on, sits ${round(Math.abs(off))} mm ${off > 0 ? 'above' : 'below'} the plane the figure is mounted on`
|
|
274
538
|
});
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
const
|
|
278
|
-
|
|
539
|
+
// The plane's own normal is Y. Parallel either way: coincident planes, not a mounting direction.
|
|
540
|
+
const n = surface.normal;
|
|
541
|
+
const length = Math.hypot(n[0], n[1], n[2]);
|
|
542
|
+
const tilt = length > 0 ? (Math.acos(Math.min(1, Math.abs(n[1]) / length)) * 180) / Math.PI : 90;
|
|
543
|
+
if (tilt > CONTACT_TILT_DEG)
|
|
279
544
|
push({
|
|
280
|
-
code: '
|
|
281
|
-
part
|
|
545
|
+
code: 'PLACEMENT_FACE_TILTED',
|
|
546
|
+
part,
|
|
282
547
|
axis: 'y',
|
|
283
|
-
|
|
284
|
-
detail: `the
|
|
548
|
+
degrees: round(tilt),
|
|
549
|
+
detail: `the ${surface.face} face of '${part}' is declared as what the figure is mounted on, and it stands ${round(tilt)}° away from that plane; a face that is not parallel to it does not lie in it`
|
|
285
550
|
});
|
|
286
551
|
}
|
|
287
552
|
}
|
package/dist/v3-gate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-gate.js","sourceRoot":"","sources":["../src/v3-gate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"v3-gate.js","sourceRoot":"","sources":["../src/v3-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/v3-graph-types.d.ts
CHANGED
|
@@ -3,6 +3,14 @@ export type V3Unit = 'mm' | 'cm' | 'm' | 'rad' | 'deg' | 's' | 'ratio' | 'percen
|
|
|
3
3
|
export type V3Dimensions = [number, number, number];
|
|
4
4
|
export type V3ValueType = V3Dimensions | {
|
|
5
5
|
kind: 'count' | 'layout';
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Whether something is shown. Produced by a comparison, consumed only by `appearance.visibility`
|
|
9
|
+
* (V3 designer's ruling 2026-09-22). It is deliberately not a number: a flag can never reach a dimension,
|
|
10
|
+
* a pose or the occupancy, so a hidden part computes exactly the dimensions it computes when shown.
|
|
11
|
+
*/
|
|
12
|
+
| {
|
|
13
|
+
kind: 'flag';
|
|
6
14
|
} | {
|
|
7
15
|
kind: 'transform';
|
|
8
16
|
from: string;
|
|
@@ -69,7 +77,7 @@ export interface V3ScalarGeometry {
|
|
|
69
77
|
axis?: 'Y';
|
|
70
78
|
}
|
|
71
79
|
export type V3Geometry = V3PlacedGeometry | V3ScalarGeometry;
|
|
72
|
-
export type V3RuntimeValue = number | number[] | V3Pose | V3Shape | V3PlacedValue | {
|
|
80
|
+
export type V3RuntimeValue = number | boolean | number[] | V3Pose | V3Shape | V3PlacedValue | {
|
|
73
81
|
centers: number[];
|
|
74
82
|
count: number;
|
|
75
83
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-graph-types.d.ts","sourceRoot":"","sources":["../src/v3-graph-types.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;AAC5F,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACnD,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ;IAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"v3-graph-types.d.ts","sourceRoot":"","sources":["../src/v3-graph-types.ts"],"names":[],"mappings":"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"}
|
package/dist/v3-graph.d.ts
CHANGED
|
@@ -14,9 +14,11 @@ export declare const V3_OPERATOR_STATE_POLICY: Readonly<Record<string, V3StatePo
|
|
|
14
14
|
/** Every operator the kernel knows, by name. `v3-graph.test.ts` holds the list still. */
|
|
15
15
|
export declare const V3_OPERATORS: readonly string[];
|
|
16
16
|
/**
|
|
17
|
-
* The operators whose output is not affine in
|
|
18
|
-
* (
|
|
19
|
-
*
|
|
17
|
+
* The operators whose output is not affine in its scalar arguments. `geomean@1` (ADR-0087 decision 2 addendum) and
|
|
18
|
+
* `curve@1` (piecewise-linear, V3 designer's approval 2026-09-22). The converter feeds `curve@1` state inputs only, so
|
|
19
|
+
* every converted asset stays affine in the size; a curve of a design input is legal in the kernel but would take the
|
|
20
|
+
* 8-size regression check's ground away, and the gate's corner-extremal basis treats a non-monotone curve as unproven.
|
|
21
|
+
* Adding another means another ruling, and the test that pins this list goes red until it has happened.
|
|
20
22
|
*/
|
|
21
23
|
export declare const V3_NON_AFFINE_OPERATORS: readonly string[];
|
|
22
24
|
/**
|
package/dist/v3-graph.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v3-graph.d.ts","sourceRoot":"","sources":["../src/v3-graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,qBAAqB,CAAA;AAIhF;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,CAAA;AASjD,OAAO,EAAE,aAAa,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"v3-graph.d.ts","sourceRoot":"","sources":["../src/v3-graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,qBAAqB,CAAA;AAIhF;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,CAAA;AASjD,OAAO,EAAE,aAAa,EAAE,CAAA;AA2vBxB,kGAAkG;AAClG,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAE5E,CAAA;AAED,yFAAyF;AACzF,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAoC,CAAA;AAE9E;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAA8D,CAAA;AAEnH;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAAmC,CAAA;AAoB9F,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,CAE/D"}
|