@hatiolab/figure-model 0.9.6 → 0.10.0

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.
Files changed (103) hide show
  1. package/dist/asset-types.d.ts +24 -56
  2. package/dist/asset-types.d.ts.map +1 -1
  3. package/dist/asset-types.js.map +1 -1
  4. package/dist/asset.d.ts +0 -7
  5. package/dist/asset.d.ts.map +1 -1
  6. package/dist/asset.js +11 -45
  7. package/dist/asset.js.map +1 -1
  8. package/dist/authoring-actions.d.ts.map +1 -1
  9. package/dist/authoring-actions.js +5 -27
  10. package/dist/authoring-actions.js.map +1 -1
  11. package/dist/authoring-bindings.js +1 -1
  12. package/dist/authoring-bindings.js.map +1 -1
  13. package/dist/authoring-dimensions.js +3 -3
  14. package/dist/authoring-nodes.d.ts +4 -4
  15. package/dist/authoring-nodes.d.ts.map +1 -1
  16. package/dist/authoring-nodes.js +7 -7
  17. package/dist/authoring-nodes.js.map +1 -1
  18. package/dist/authoring-placement.d.ts +40 -0
  19. package/dist/authoring-placement.d.ts.map +1 -0
  20. package/dist/{authoring-occupancy.js → authoring-placement.js} +114 -221
  21. package/dist/authoring-placement.js.map +1 -0
  22. package/dist/authoring-proportion.d.ts.map +1 -1
  23. package/dist/authoring-proportion.js +3 -4
  24. package/dist/authoring-proportion.js.map +1 -1
  25. package/dist/authoring-size.js +1 -1
  26. package/dist/authoring-types.d.ts +0 -57
  27. package/dist/authoring-types.d.ts.map +1 -1
  28. package/dist/body.d.ts +19 -0
  29. package/dist/body.d.ts.map +1 -0
  30. package/dist/body.js +37 -0
  31. package/dist/body.js.map +1 -0
  32. package/dist/command-preview.js +4 -4
  33. package/dist/command-preview.js.map +1 -1
  34. package/dist/contract.d.ts +0 -3
  35. package/dist/contract.d.ts.map +1 -1
  36. package/dist/contract.js.map +1 -1
  37. package/dist/examples.d.ts.map +1 -1
  38. package/dist/examples.js +1 -2
  39. package/dist/examples.js.map +1 -1
  40. package/dist/face-overhang.js +2 -2
  41. package/dist/face-overhang.js.map +1 -1
  42. package/dist/fasten-place.js +7 -7
  43. package/dist/fasten-place.js.map +1 -1
  44. package/dist/gate.d.ts +15 -32
  45. package/dist/gate.d.ts.map +1 -1
  46. package/dist/gate.js +34 -101
  47. package/dist/gate.js.map +1 -1
  48. package/dist/graph-types.d.ts +2 -2
  49. package/dist/graph.d.ts.map +1 -1
  50. package/dist/graph.js +6 -67
  51. package/dist/graph.js.map +1 -1
  52. package/dist/index.d.ts +6 -6
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +5 -5
  55. package/dist/index.js.map +1 -1
  56. package/dist/joint-part-edits.d.ts +1 -10
  57. package/dist/joint-part-edits.d.ts.map +1 -1
  58. package/dist/joint-part-edits.js +6 -64
  59. package/dist/joint-part-edits.js.map +1 -1
  60. package/dist/kernel-version.d.ts +1 -1
  61. package/dist/kernel-version.d.ts.map +1 -1
  62. package/dist/kernel-version.js +1 -1
  63. package/dist/kernel-version.js.map +1 -1
  64. package/dist/part-edit.d.ts +1 -8
  65. package/dist/part-edit.d.ts.map +1 -1
  66. package/dist/part-edit.js +15 -32
  67. package/dist/part-edit.js.map +1 -1
  68. package/dist/proposal.d.ts +4 -11
  69. package/dist/proposal.d.ts.map +1 -1
  70. package/dist/proposal.js +3 -10
  71. package/dist/proposal.js.map +1 -1
  72. package/dist/recipe.js +1 -1
  73. package/dist/recipe.js.map +1 -1
  74. package/dist/release-contract.d.ts +1 -1
  75. package/dist/release-contract.d.ts.map +1 -1
  76. package/dist/release-contract.js +32 -29
  77. package/dist/release-contract.js.map +1 -1
  78. package/dist/release-metrics.d.ts +6 -14
  79. package/dist/release-metrics.d.ts.map +1 -1
  80. package/dist/release-metrics.js +8 -29
  81. package/dist/release-metrics.js.map +1 -1
  82. package/dist/resize-plan.d.ts +0 -5
  83. package/dist/resize-plan.d.ts.map +1 -1
  84. package/dist/resize-plan.js +4 -29
  85. package/dist/resize-plan.js.map +1 -1
  86. package/dist/robots.d.ts.map +1 -1
  87. package/dist/robots.js +1 -2
  88. package/dist/robots.js.map +1 -1
  89. package/dist/size-edit.js +3 -3
  90. package/dist/size-edit.js.map +1 -1
  91. package/dist/surface.js +2 -2
  92. package/docs/asset-persistence.md +1 -1
  93. package/docs/document-contract.md +0 -1
  94. package/docs/operator-contracts.md +3 -18
  95. package/docs/shape-dimension-contract.md +27 -25
  96. package/package.json +1 -1
  97. package/dist/authoring-occupancy.d.ts +0 -28
  98. package/dist/authoring-occupancy.d.ts.map +0 -1
  99. package/dist/authoring-occupancy.js.map +0 -1
  100. package/dist/room.d.ts +0 -53
  101. package/dist/room.d.ts.map +0 -1
  102. package/dist/room.js +0 -101
  103. package/dist/room.js.map +0 -1
@@ -2,9 +2,10 @@
2
2
  * Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
4
  /*
5
- * The room the figure takes up: proposed from its parts, declared, and the face it is mounted by.
5
+ * The room a figure sweeps as it moves (ADR-0145 2.3), worked out from its parts and joints; where it is placed from, and
6
+ * the face it is mounted by.
6
7
  */
7
- import { upgradeFigurePlacement, figurePlacementOf } from "./asset.js";
8
+ import { figurePlacementOf } from "./asset.js";
8
9
  import { compileFigureGraph } from "./graph.js";
9
10
  import { figureShapeDescriptionOf } from "./shape-ops.js";
10
11
  import { FigureContractError } from "./contract.js";
@@ -13,31 +14,6 @@ import { FIGURE_PLACEMENTS } from "./asset-types.js";
13
14
  import { FIGURE_FACES } from "./authoring-types.js";
14
15
  import { fail, nodeById, writerOf, throughSums, rowHolding, partOf, namer, constantOf, dropIfUnused, parentOf, round6, stringsIn } from "./authoring-nodes.js";
15
16
  import { isReach, sizeRefsOf, occupiedExtentsOf, angleOf, turnMatrix, mul3, standingRefsOf, half, axisTurn, offCentreEndsOf, IDENTITY } from "./authoring-geometry.js";
16
- /** A figure as one value, for saying "this is the figure I read". The declaration itself is left out of it. */
17
- function fingerprintOf(asset) {
18
- /*
19
- The room and the placement are left out: neither changes what the room would measure (ADR-0097). Nor do the clips,
20
- their groups and the data connections -- the room is measured over the joints' ranges, not what plays them -- and a
21
- command is applied with the groups and their clips held aside (clip-keeping.ts): counted, a room proposed on the
22
- figure as it is was stale against the same figure without them, and a figure with a motion group could not declare
23
- its room again (the robot dog, 2026-10-19).
24
- */
25
- const text = JSON.stringify({
26
- ...asset,
27
- placement: undefined,
28
- occupancy: asset.occupancy ? { ...asset.occupancy, bounds: null } : undefined,
29
- drivers: undefined,
30
- motionGroups: undefined,
31
- dataInterface: undefined
32
- });
33
- let h1 = 0x811c9dc5;
34
- let h2 = 0x01000193;
35
- for (let i = 0; i < text.length; i++) {
36
- h1 = Math.imul(h1 ^ text.charCodeAt(i), 0x01000193) >>> 0;
37
- h2 = Math.imul(h2 + text.charCodeAt(i), 0x85ebca6b) >>> 0;
38
- }
39
- return `${h1.toString(16).padStart(8, '0')}${h2.toString(16).padStart(8, '0')}:${text.length}`;
40
- }
41
17
  const linAdd = (a, b, k = 1) => ({
42
18
  terms: [...a.terms, ...b.terms.map(t => ({ ref: t.ref, k: t.k * k }))],
43
19
  c: a.c + b.c * k
@@ -64,7 +40,7 @@ const linOf = (m, ref) => {
64
40
  * How far a slide has gone when its control is at one end of its range, as a sum: each control at that end, what the
65
41
  * figure's sizes make of the rest. A mimic of a leader whose stroke follows a length is the leader's ratio times that
66
42
  * length times its multiplier -- read through, not refused: the telescopic conveyor's second and third stages were
67
- * left out of its declared room, 2600 and 5200 mm past it (2026-09-25).
43
+ * left out of the room it was given, 2600 and 5200 mm past it (2026-09-25).
68
44
  */
69
45
  function travelAt(m, asset, motion, bound) {
70
46
  const pick = (i) => bound === 'start' ? (asset.stateDefaults[i.id] ?? i.min) : bound === 'min' ? i.min : i.max;
@@ -383,31 +359,6 @@ function boundedMagnitudeOf(m, ref, inside = false) {
383
359
  return linAdd({ terms: [], c: 0 }, linAdd(each[0], each[1]), 0.5);
384
360
  return each.reduce((a, b) => linAtLeast(a, b));
385
361
  }
386
- /** The values held by bounds a part's place reads, up what carries it: its room may be wider than it there. */
387
- function boundsUnder(m, id) {
388
- const found = new Set();
389
- for (let part = id; part; part = parentOf(m, part))
390
- for (const node of [nodeById(m, `${part}.pose`), nodeById(m, `${part}.seat.rigid`)])
391
- for (const ref of (node?.args ?? []).slice(0, 3))
392
- for (const t of throughSums(m, linOf(m, ref)).terms)
393
- if (isBounded(m, t.ref))
394
- found.add(t.ref);
395
- return [...found];
396
- }
397
- /**
398
- * How much wider than a bounded value its room may be, at the figure's values, in mm: the greatest of its bound over
399
- * the value -- (x + y) / 2 − √(x·y) for a root, r_i − |p_i| for a point of an ellipsoid (chief architect 2026-10-20).
400
- */
401
- function boundedWidthOf(m, values, refs) {
402
- let most = 0;
403
- for (const ref of refs) {
404
- const kind = boundedKind(m, ref);
405
- const v = Math.abs(values[ref] ?? 0);
406
- const wide = 'root' in kind ? (values[kind.root[0]] + values[kind.root[1]]) / 2 - v : Math.abs(values[kind.point.radius]) - v;
407
- most = Math.max(most, wide);
408
- }
409
- return Math.round(most * 10) / 10;
410
- }
411
362
  /** Every low candidate bounded from below and every high one from above, so the room holds whatever they come to. */
412
363
  function boundedSides(m, low, high) {
413
364
  for (const axis of AXES) {
@@ -418,29 +369,38 @@ function boundedSides(m, low, high) {
418
369
  const transposedTimes = (r, d) => [0, 1, 2].map(j => r[0][j] * d[0] + r[1][j] * d[1] + r[2][j] * d[2]);
419
370
  /** A turn as `rigid@1` writes it, in degrees about X, Y and Z: Rx·Ry·Rz, at any angle (`turnMatrix` takes quarter turns). */
420
371
  const rigidTurnOf = ([x, y, z]) => mul3(mul3(axisTurn('x', x), axisTurn('y', y)), axisTurn('z', z));
372
+ /** Each component's largest size, which a unit direction never passes. */
373
+ const largestOf = (d) => d.mid.map((v, i) => Math.min(1, Math.abs(v) + d.spread[i]));
374
+ /** The same directions, each component held to [−1, 1]. */
375
+ function heldToUnit(mid, spread) {
376
+ const lo = mid.map((v, i) => Math.max(-1, v - spread[i]));
377
+ const hi = mid.map((v, i) => Math.min(1, v + spread[i]));
378
+ return { mid: lo.map((l, i) => (l + hi[i]) / 2), spread: lo.map((l, i) => (hi[i] - l) / 2) };
379
+ }
421
380
  /** The directions seen from a frame turned by `r` from this one (a point there is r·x here). */
422
381
  function turnedBy(d, r) {
423
- if ('one' in d)
424
- return { one: transposedTimes(r, d.one) };
425
- return { most: [0, 1, 2].map(j => Math.min(1, d.most.reduce((sum, v, i) => sum + Math.abs(r[i][j]) * v, 0))) };
382
+ return heldToUnit(transposedTimes(r, d.mid), [0, 1, 2].map(j => d.spread.reduce((sum, v, i) => sum + Math.abs(r[i][j]) * v, 0)));
426
383
  }
427
- /** The largest |a + b cos t + c sin t| for t from lo to hi, in radians; all the way round without a range. */
428
- function largestOver(a, b, c, range) {
384
+ /** The least and the greatest of a + b cos t + c sin t for t from lo to hi, in radians; all the way round without a range. */
385
+ function rangeOver(a, b, c, range) {
429
386
  if (!range)
430
- return Math.abs(a) + Math.hypot(b, c);
387
+ return [a - Math.hypot(b, c), a + Math.hypot(b, c)];
431
388
  const [lo, hi] = range;
432
- const at = (t) => Math.abs(a + b * Math.cos(t) + c * Math.sin(t));
433
- let most = Math.max(at(lo), at(hi));
389
+ const at = (t) => a + b * Math.cos(t) + c * Math.sin(t);
390
+ let least = Math.min(at(lo), at(hi)), most = Math.max(at(lo), at(hi));
434
391
  /* Where its slope is zero: t = atan2(c, b) and half a turn from it, every whole turn over. */
435
392
  const turn = 2 * Math.PI;
436
393
  for (const t0 of [Math.atan2(c, b), Math.atan2(c, b) + Math.PI])
437
- for (let t = t0 + Math.ceil((lo - t0) / turn) * turn; t <= hi; t += turn)
394
+ for (let t = t0 + Math.ceil((lo - t0) / turn) * turn; t <= hi; t += turn) {
395
+ least = Math.min(least, at(t));
438
396
  most = Math.max(most, at(t));
439
- return most;
397
+ }
398
+ return [least, most];
440
399
  }
441
400
  /**
442
401
  * The directions seen from a frame turned about the unit axis `u` by any angle in `range` (radians; null all the way
443
- * round): R(t) = u uᵀ + (I − u uᵀ) cos t + [u]× sin t, each entry a + b cos t + c sin t.
402
+ * round): R(t) = u uᵀ + (I − u uᵀ) cos t + [u]× sin t, each entry a + b cos t + c sin t. The middle is turned through
403
+ * the range exactly; the spread about it by each entry's largest.
444
404
  */
445
405
  function sweptBy(d, u, range) {
446
406
  const K = [
@@ -455,18 +415,13 @@ function sweptBy(d, u, range) {
455
415
  const t = range[0];
456
416
  return turnedBy(d, [0, 1, 2].map(i => [0, 1, 2].map(j => A(i, j) + B(i, j) * Math.cos(t) + C(i, j) * Math.sin(t))));
457
417
  }
458
- if ('one' in d) {
459
- const v = d.one;
460
- const sum = (f, j) => [0, 1, 2].reduce((s, i) => s + f(i, j) * v[i], 0);
461
- const parts = [0, 1, 2].map(j => [sum(A, j), sum(B, j), sum(C, j)]);
462
- /* Along the axis it is turned about, a direction does not move. */
463
- if (parts.every(([, b, c]) => Math.abs(b) < 1e-12 && Math.abs(c) < 1e-12))
464
- return d;
465
- return { most: parts.map(([a, b, c]) => Math.min(1, largestOver(a, b, c, range))) };
466
- }
467
- return {
468
- most: [0, 1, 2].map(j => Math.min(1, d.most.reduce((s, v, i) => s + largestOver(A(i, j), B(i, j), C(i, j), range) * v, 0)))
469
- };
418
+ const sum = (f, j) => [0, 1, 2].reduce((s, i) => s + f(i, j) * d.mid[i], 0);
419
+ const ends = [0, 1, 2].map(j => rangeOver(sum(A, j), sum(B, j), sum(C, j), range));
420
+ const spread = [0, 1, 2].map(j => d.spread.reduce((s, v, i) => {
421
+ const [l, h] = rangeOver(A(i, j), B(i, j), C(i, j), range);
422
+ return s + Math.max(Math.abs(l), Math.abs(h)) * v;
423
+ }, 0));
424
+ return heldToUnit(ends.map(([l, h]) => (l + h) / 2), ends.map(([l, h], j) => (h - l) / 2 + spread[j]));
470
425
  }
471
426
  /**
472
427
  * The angles a turn's control can give it, in degrees: its limits, scaled and moved as the angle is written from it.
@@ -512,10 +467,10 @@ function angleRangeOf(m, ref, depth = 0) {
512
467
  }
513
468
  /**
514
469
  * Where a part carried by a turn can reach, on each side of each axis, from the point the first turn above it turns
515
- * about (ADR-0087, amendments 2026-10-21). Down the chain from there each step adds what it can add that way: while
516
- * the directions are one, what it adds, sign included; once a joint has turned them through its range, each axis's
517
- * largest times the size of that coordinate -- no more than its length, when its coordinates are numbers. The part
518
- * adds its own half size the same way. Each step's largest taken on its own (the triangle inequality), it holds at
470
+ * about (ADR-0087, amendments 2026-10-21). Down the chain from there each step adds what it can add that way: the
471
+ * middle of the directions times the step, sign included, and their spread -- none until a joint has turned them
472
+ * through its range -- times its size; no more than its length, when its coordinates are numbers. A slide from nothing
473
+ * to a sum of sizes adds only toward the way it goes. The part adds its own extent the same way. Each step's largest taken on its own (the triangle inequality), it holds at
519
474
  * every angle the joints can reach and every design size: a bound, not a sample. Read by the proposal; the release
520
475
  * gate still checks the parts against it.
521
476
  */
@@ -544,34 +499,29 @@ function reachOf(m, asset, id, ends) {
544
499
  const constants = (refs) => refs.map(r => m.constants.find((c) => c.id === r)?.value);
545
500
  const angles = (refs) => refs.map(r => angleOf(m, asset, r));
546
501
  const reachToward = (e) => {
547
- let d = { one: transposedTimes(frame, e) };
502
+ let d = { mid: transposedTimes(frame, e), spread: [0, 0, 0] };
548
503
  let out = { terms: [], c: 0 };
549
- const most = (dir) => ('one' in dir ? dir.one.map(Math.abs) : dir.most);
550
- /* A step of three coordinates, in the frame the directions are seen from. */
504
+ const tiny = (v) => Math.abs(v) < 1e-12;
505
+ /* A step of three coordinates, in the frame the directions are seen from: the middle times it, the spread times its size. */
551
506
  const step = (refs, what) => {
552
- if ('one' in d) {
553
- const v = d.one;
554
- refs.forEach((ref, i) => {
555
- if (Math.abs(v[i]) > 1e-12)
556
- out = linAdd(out, linOf(m, ref), v[i]);
557
- });
558
- return null;
559
- }
560
- const w = d.most;
561
507
  const numbers = constants(refs);
562
508
  if (numbers.every(n => n !== undefined)) {
563
- const across = numbers.reduce((s, n, i) => s + w[i] * Math.abs(n), 0);
509
+ const across = numbers.reduce((s, n, i) => s + d.mid[i] * n + d.spread[i] * Math.abs(n), 0);
510
+ /* No unit direction takes a step further than its length. */
511
+ const w = largestOf(d);
564
512
  const length = Math.hypot(...numbers.map((n, i) => (w[i] > 0 ? n : 0)));
565
513
  out = linAdd(out, { terms: [], c: Math.min(across, length) });
566
514
  return null;
567
515
  }
568
516
  for (const [i, ref] of refs.entries()) {
569
- if (!w[i])
517
+ if (!tiny(d.mid[i]))
518
+ out = linAdd(out, linOf(m, ref), d.mid[i]);
519
+ if (tiny(d.spread[i]))
570
520
  continue;
571
521
  const size = magnitudeOf(m, linOf(m, ref));
572
522
  if (!size)
573
523
  return `${what} is not a sum of sizes, so how far it reaches cannot be bounded`;
574
- out = linAdd(out, size, w[i]);
524
+ out = linAdd(out, size, d.spread[i]);
575
525
  }
576
526
  return null;
577
527
  };
@@ -579,9 +529,13 @@ function reachOf(m, asset, id, ends) {
579
529
  const a = angles(refs);
580
530
  if (a.every(t => t === 0))
581
531
  return;
582
- d = a.every(t => t !== null && Number.isFinite(t))
583
- ? turnedBy(d, rigidTurnOf(a))
584
- : { most: [0, 1, 2].map(() => Math.min(1, most(d).reduce((s, v) => s + v, 0))) };
532
+ if (a.every(t => t !== null && Number.isFinite(t)))
533
+ d = turnedBy(d, rigidTurnOf(a));
534
+ else {
535
+ /* A turn this command cannot read: any direction no longer than the largest it was. */
536
+ const reach = Math.min(1, largestOf(d).reduce((s, v) => s + v, 0));
537
+ d = { mid: [0, 0, 0], spread: [reach, reach, reach] };
538
+ }
585
539
  };
586
540
  for (let i = top; i >= 0; i--) {
587
541
  const part = chain[i];
@@ -607,13 +561,29 @@ function reachOf(m, asset, id, ends) {
607
561
  d = sweptBy(d, u, range && [(range[0] * Math.PI) / 180, (range[1] * Math.PI) / 180]);
608
562
  }
609
563
  else if (motion.op === 'axis-slide@1') {
610
- const along = most(d).reduce((s, v, k) => s + v * Math.abs(u[k]), 0);
611
- for (const end of ['min', 'max']) {
612
- const travel = travelAt(m, asset, motion, end);
613
- const size = travel && magnitudeOf(m, travel);
614
- if (!size)
564
+ /*
565
+ Its travel lies between the two ends of its control. One end at nothing and the other a sum of sizes: it
566
+ goes only that way, so the middle adds it only toward that side. Otherwise the further end, either way.
567
+ */
568
+ const mid = d.mid.reduce((s, v, k) => s + v * u[k], 0);
569
+ const spread = d.spread.reduce((s, v, k) => s + v * Math.abs(u[k]), 0);
570
+ const [lo, hi] = ['min', 'max'].map(end => travelAt(m, asset, motion, end));
571
+ if (!lo || !hi)
572
+ return `${part}'s travel is not a sum of sizes, so how far it reaches cannot be bounded`;
573
+ const nothing = (l) => !linNorm(l).terms.length && Math.abs(l.c) < 1e-12;
574
+ const sizes = (l) => l.c >= 0 && linNorm(l).terms.every(t => t.k > 0 && sizeValue(m, t.ref));
575
+ const other = nothing(lo) ? hi : nothing(hi) ? lo : null;
576
+ const way = other && (sizes(other) ? 1 : sizes(linAdd({ terms: [], c: 0 }, other, -1)) ? -1 : 0);
577
+ if (other && way)
578
+ out = linAdd(out, other, way * (Math.max(way * mid, 0) + spread));
579
+ else {
580
+ const further = [lo, hi].reduce((sum, l) => {
581
+ const size = sum && magnitudeOf(m, l);
582
+ return size && sum && linAtLeast(sum, size);
583
+ }, { terms: [], c: 0 });
584
+ if (!further)
615
585
  return `${part}'s travel is not a sum of sizes, so how far it reaches cannot be bounded`;
616
- out = linAdd(out, size, along);
586
+ out = linAdd(out, further, Math.abs(mid) + spread);
617
587
  }
618
588
  }
619
589
  else
@@ -629,27 +599,33 @@ function reachOf(m, asset, id, ends) {
629
599
  }
630
600
  /*
631
601
  Its own extent on every axis, as far as the directions reach across it: half its size either way about its
632
- origin, or from face to face where they do not sit about it (a portal stands on 0, `offCentreEndsOf`).
602
+ origin, or from face to face where they do not sit about it (a portal stands on 0, `offCentreEndsOf`) -- the
603
+ middle at the face it points to, the spread times the further face.
633
604
  */
634
- const w = most(d);
635
605
  for (const [i, axis] of AXES.entries()) {
636
- if (!w[i])
606
+ const mid = d.mid[i], spread = d.spread[i];
607
+ if (tiny(mid) && tiny(spread))
637
608
  continue;
638
609
  const ends = offCentre[axis];
639
- if (ends && 'one' in d) {
640
- const e = d.one[i] > 0 ? ends[1] : ends[0];
641
- out = linAdd(out, { terms: [{ ref: e.ref, k: e.k * d.one[i] }], c: 0 });
610
+ if (ends) {
611
+ const e = mid > 0 ? ends[1] : ends[0];
612
+ if (!tiny(mid))
613
+ out = linAdd(out, { terms: [{ ref: e.ref, k: e.k * mid }], c: 0 });
614
+ if (tiny(spread))
615
+ continue;
616
+ const further = ends.reduce((sum, x) => {
617
+ const size = sum && magnitudeOf(m, { terms: [{ ref: x.ref, k: x.k }], c: 0 });
618
+ return size && sum && linAtLeast(sum, size);
619
+ }, { terms: [], c: 0 });
620
+ if (!further)
621
+ return `${id}'s size is not a sum of sizes, so how far it reaches cannot be bounded`;
622
+ out = linAdd(out, further, spread);
642
623
  continue;
643
624
  }
644
- const reach = ends
645
- ? ends.reduce((sum, e) => {
646
- const size = sum && magnitudeOf(m, { terms: [{ ref: e.ref, k: e.k }], c: 0 });
647
- return size && sum && linAtLeast(sum, size);
648
- }, { terms: [], c: 0 })
649
- : magnitudeOf(m, { terms: [{ ref: sizes[axis].ref, k: 0.5 * sizes[axis].k }], c: 0 });
650
- if (!reach)
625
+ const half = magnitudeOf(m, { terms: [{ ref: sizes[axis].ref, k: 0.5 * sizes[axis].k }], c: 0 });
626
+ if (!half)
651
627
  return `${id}'s size is not a sum of sizes, so how far it reaches cannot be bounded`;
652
- out = linAdd(out, reach, w[i]);
628
+ out = linAdd(out, half, Math.min(1, Math.abs(mid) + spread));
653
629
  }
654
630
  return linNorm(out);
655
631
  };
@@ -687,11 +663,10 @@ function reachOf(m, asset, id, ends) {
687
663
  return { centres, up, down };
688
664
  }
689
665
  /** The bounds the parts come to, as sums, with what could not be read named. */
690
- function occupancyLins(asset, over) {
666
+ function reachLins(asset) {
691
667
  const m = asset.document.model;
692
668
  const parts = [];
693
669
  const skipped = [];
694
- const bounded = [];
695
670
  const low = { x: [], y: [], z: [] };
696
671
  const high = { x: [], y: [], z: [] };
697
672
  /*
@@ -718,7 +693,7 @@ function occupancyLins(asset, over) {
718
693
  };
719
694
  /* A row's template stands for its copies (`repeatPart`): leaving it out left a conveyor's rollers out of its room. */
720
695
  const rowOf = (id) => nodeById(m, `${id}.repeat`);
721
- const ends = over === 'rest' ? ['start'] : ['min', 'max'];
696
+ const ends = ['min', 'max'];
722
697
  /* A part's size along the figure's axes, whichever quarter turns it and what carries it stand in. */
723
698
  const sizesOf = (id, turns) => {
724
699
  /* A turned chain's reach is read from one size per axis (reachOf), so a part there must have one. */
@@ -951,39 +926,34 @@ function occupancyLins(asset, over) {
951
926
  }
952
927
  }
953
928
  }
954
- for (const part of parts)
955
- if (boundsUnder(m, part).length)
956
- bounded.push(part);
957
- return { parts, skipped, bounded, low, high, reaches };
929
+ return { parts, skipped, low, high, reaches };
958
930
  }
959
931
  const valueOfLin = (values, l) => l.terms.reduce((s, t) => s + t.k * (values[t.ref] ?? NaN), l.c);
960
- /** What the parts come to, and what a person is being asked to confirm. Reads the asset; changes nothing. */
961
- export function proposeFigureOccupancy(asset, options = {}) {
962
- asset = upgradeFigurePlacement(asset);
963
- const over = options.over ?? 'range';
964
- if (over !== 'rest' && over !== 'range')
965
- fail('SCHEMA', 'over', `${String(over)} is neither rest nor range`);
932
+ /**
933
+ * The room a figure sweeps (ADR-0145 2.3): every part over every joint's range, at the authored size or at `sizes`
934
+ * (design inputs, by id). Computed, never declared -- it holds the parts by what it is. Undefined for a figure with no
935
+ * part to measure. Reads the asset; changes nothing.
936
+ */
937
+ export function figureMotionRangeOf(asset, sizes = {}) {
966
938
  const source = structuredClone(asset);
967
- const { parts, skipped, bounded, low, high, reaches } = occupancyLins(source, over);
939
+ const { parts, skipped, low, high, reaches } = reachLins(source);
968
940
  for (const axis of AXES) {
969
941
  low[axis].push(...reaches.low[axis]);
970
942
  high[axis].push(...reaches.high[axis]);
971
943
  }
972
944
  boundedSides(source.document.model, low, high);
973
945
  if (!parts.length)
974
- fail('OCCUPANCY_NO_PARTS', 'occupancy', `no part could be measured${skipped.length ? `: ${skipped.map(s => `${s.part} — ${s.reason}`).join('; ')}` : ''}`);
975
- const values = compileFigureGraph(source.document.model).evaluate({ ...source.designInputs, ...source.stateDefaults })
946
+ return undefined;
947
+ const values = compileFigureGraph(source.document.model).evaluate({ ...source.designInputs, ...source.stateDefaults, ...sizes })
976
948
  .values;
977
- const at = Object.fromEntries(AXES.map(axis => [
949
+ const bounds = Object.fromEntries(AXES.map(axis => [
978
950
  axis,
979
951
  {
980
952
  min: round6(Math.min(...low[axis].map(l => valueOfLin(values, l)))),
981
953
  max: round6(Math.max(...high[axis].map(l => valueOfLin(values, l))))
982
954
  }
983
955
  ]));
984
- const m = source.document.model;
985
- const held = bounded.map(part => ({ part, mm: boundedWidthOf(m, values, boundsUnder(m, part)) }));
986
- return { over, at, parts, skipped, ...(held.length ? { bounded: held } : {}), basis: fingerprintOf(source) };
956
+ return { bounds, parts, skipped };
987
957
  }
988
958
  /**
989
959
  * The placement says which plane the mounting plane is. A part fastened to it in a way the new plane does not take --
@@ -1007,86 +977,9 @@ export function setPlacement(asset, a) {
1007
977
  asset.placement = a.placement;
1008
978
  return asset;
1009
979
  }
1010
- export function declareOccupancy(asset, a) {
1011
- const m = asset.document.model;
1012
- if (!a.proposal || (a.proposal.over !== 'rest' && a.proposal.over !== 'range'))
1013
- fail('SCHEMA', 'occupancy', 'a proposal is required; propose first, then confirm');
1014
- const now = fingerprintOf(asset);
1015
- if (a.proposal.basis !== now)
1016
- fail('OCCUPANCY_STALE', 'occupancy', 'the figure changed since this was proposed, so the volume it would declare is not the one that was looked at; propose again and confirm that');
1017
- /* Declared with a placement, the placement is set by the same command as on its own: one value, one check. */
1018
- if (a.placement !== undefined)
1019
- setPlacement(asset, { kind: 'set-placement', placement: a.placement });
1020
- const padding = {};
1021
- for (const axis of AXES) {
1022
- const pad = a.padding?.[axis] ?? 0;
1023
- if (!(Number.isFinite(pad) && pad >= 0))
1024
- fail('OCCUPANCY_PADDING', `occupancy.${axis}`, `padding is millimetres, zero or more; got ${String(pad)}`);
1025
- padding[axis] = pad;
1026
- }
1027
- const { parts, low, high, reaches } = occupancyLins(asset, a.proposal.over);
1028
- /* What the parts carried by a turn reach either way about their pivots, on each axis. */
1029
- for (const axis of AXES) {
1030
- low[axis].push(...reaches.low[axis]);
1031
- high[axis].push(...reaches.high[axis]);
1032
- }
1033
- boundedSides(m, low, high);
1034
- for (const axis of AXES) {
1035
- if (!padding[axis])
1036
- continue;
1037
- low[axis] = low[axis].map((l) => ({ ...l, c: l.c - padding[axis] }));
1038
- high[axis] = high[axis].map((l) => ({ ...l, c: l.c + padding[axis] }));
1039
- }
1040
- if (parts.join('|') !== a.proposal.parts.join('|'))
1041
- fail('OCCUPANCY_STALE', 'occupancy', `the figure changed since the proposal was made (${a.proposal.parts.join(', ')} then, ${parts.join(', ')} now); propose again and confirm that`);
1042
- /* One node for the six bounds (affine-bounds@1): each candidate its constant, then a value and a ratio per term. */
1043
- const args = [];
1044
- const layout = AXES.flatMap(axis => [low[axis], high[axis]]).map(side => side
1045
- .map((l) => {
1046
- const n = throughSums(m, l);
1047
- args.push(constantOf(m, 'mm', round6(n.c), 'd'));
1048
- for (const t of n.terms)
1049
- args.push(t.ref, constantOf(m, 'ratio', t.k, 'k'));
1050
- return n.terms.length;
1051
- })
1052
- .join('_'));
1053
- const id = namer(m, 'occupancy')('bounds');
1054
- const port = (p) => `${id}.${p}`;
1055
- m.nodes.push({
1056
- id,
1057
- op: 'affine-bounds@1',
1058
- args,
1059
- params: { layout: `L${layout.join('.')}` },
1060
- outputs: Object.fromEntries(['xmin', 'xmax', 'ymin', 'ymax', 'zmin', 'zmax'].map(p => [p, port(p)]))
1061
- });
1062
- const bounds = Object.fromEntries(AXES.map(axis => [axis, { min: port(`${axis}min`), max: port(`${axis}max`) }]));
1063
- const was = stringsIn(asset.occupancy?.bounds);
1064
- asset.occupancy = { ...(asset.occupancy?.contact ? { contact: asset.occupancy.contact } : {}), bounds };
1065
- /*
1066
- The room declared before goes with what fed only it. Left in the graph, it kept reading where parts had been
1067
- fastened, and the next fastening was refused over a room no one read (the gantry, 2026-09-25).
1068
- */
1069
- for (const ref of was)
1070
- dropIfUnused(asset, ref);
1071
- /*
1072
- A part's own measure the old room alone still read -- the part follows something else now -- goes too: kept, it
1073
- was a dial that changed nothing (the turntable after every part followed the one ratio, 2026-09-25). So does its
1074
- own position or turn, once a fastening places it: a floor part's height position stayed as a field that moved
1075
- nothing (browser check, ADR-0097, 2026-09-27). The room's refit names them before it is confirmed (figureRoomRefitOf).
1076
- */
1077
- const placed = new Set(m.nodes.filter((n) => n.op === 'place@1' || n.op === 'member@1').map((n) => n.id));
1078
- for (const input of [...m.inputs])
1079
- if (input.role === 'design' &&
1080
- placed.has(String(input.id).split('.')[0]) &&
1081
- /\.(dimension|size|position|rotation)\.[a-z]+$/.test(input.id))
1082
- dropIfUnused(asset, input.id, input.id);
1083
- return asset;
1084
- }
1085
- /** "This face is what the figure is mounted on." Kept apart from how much room the figure takes up. */
980
+ /** "This face is what the figure is mounted on." */
1086
981
  export function setMountingFace(asset, a) {
1087
982
  const m = asset.document.model;
1088
- if (!asset.occupancy)
1089
- fail('OCCUPANCY_UNDECLARED', 'occupancy', 'declare the room the figure takes up before naming the face it stands on');
1090
983
  if (!Object.hasOwn(FIGURE_FACES, String(a.face)))
1091
984
  fail('SCHEMA', a.part, `${String(a.face)} is not a face`);
1092
985
  const { place } = partOf(m, a.part, a.part);
@@ -1099,16 +992,16 @@ export function setMountingFace(asset, a) {
1099
992
  outputs: { pose: `${id}.value` },
1100
993
  params: { frame: `${id}.frame`, name: a.face }
1101
994
  });
1102
- asset.occupancy.contact = {
995
+ asset.mountingFace = {
1103
996
  plane: 'mounting-plane',
1104
997
  surface: { placement: place.outputs.placed, feature: `${id}.value` }
1105
998
  };
1106
999
  return asset;
1107
1000
  }
1108
1001
  export function clearMountingFace(asset) {
1109
- if (!asset.occupancy?.contact)
1110
- fail('EDIT_TARGET', 'occupancy', 'this figure names no mounting face');
1111
- delete asset.occupancy.contact;
1002
+ if (!asset.mountingFace)
1003
+ fail('EDIT_TARGET', 'mountingFace', 'this figure names no mounting face');
1004
+ delete asset.mountingFace;
1112
1005
  return asset;
1113
1006
  }
1114
- //# sourceMappingURL=authoring-occupancy.js.map
1007
+ //# sourceMappingURL=authoring-placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-placement.js","sourceRoot":"","sources":["../src/authoring-placement.ts"],"names":[],"mappings":"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"}