@fundamental-engine/core 0.9.1 → 0.9.3

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 (124) hide show
  1. package/README.md +12 -11
  2. package/dist/agents/event-agent.d.ts.map +1 -1
  3. package/dist/agents/event-agent.js +13 -9
  4. package/dist/agents/event-agent.js.map +1 -1
  5. package/dist/config/forces.config.js +2 -2
  6. package/dist/config/forces.config.js.map +1 -1
  7. package/dist/conformance/run.d.ts +2 -2
  8. package/dist/conformance/run.d.ts.map +1 -1
  9. package/dist/conformance/run.js +30 -27
  10. package/dist/conformance/run.js.map +1 -1
  11. package/dist/conformance/types.d.ts +3 -0
  12. package/dist/conformance/types.d.ts.map +1 -1
  13. package/dist/contracts/guards.d.ts +3 -1
  14. package/dist/contracts/guards.d.ts.map +1 -1
  15. package/dist/contracts/guards.js.map +1 -1
  16. package/dist/contracts/passport.d.ts +6 -0
  17. package/dist/contracts/passport.d.ts.map +1 -1
  18. package/dist/contracts/passport.js +12 -3
  19. package/dist/contracts/passport.js.map +1 -1
  20. package/dist/core/accretion.d.ts +1 -1
  21. package/dist/core/accretion.d.ts.map +1 -1
  22. package/dist/core/accretion.js +1 -1
  23. package/dist/core/accretion.js.map +1 -1
  24. package/dist/core/events.d.ts +3 -3
  25. package/dist/core/events.d.ts.map +1 -1
  26. package/dist/core/events.js +1 -1
  27. package/dist/core/feedback-sink.d.ts +1 -1
  28. package/dist/core/feedback-sink.d.ts.map +1 -1
  29. package/dist/core/feedback-sink.js +1 -2
  30. package/dist/core/feedback-sink.js.map +1 -1
  31. package/dist/core/field-snapshot.d.ts +21 -0
  32. package/dist/core/field-snapshot.d.ts.map +1 -0
  33. package/dist/core/field-snapshot.js +0 -0
  34. package/dist/core/field-snapshot.js.map +1 -0
  35. package/dist/core/field.d.ts.map +1 -1
  36. package/dist/core/field.js +1006 -58
  37. package/dist/core/field.js.map +1 -1
  38. package/dist/core/frame-harness.d.ts +2 -2
  39. package/dist/core/frame-harness.d.ts.map +1 -1
  40. package/dist/core/frame-harness.js +2 -2
  41. package/dist/core/frame-harness.js.map +1 -1
  42. package/dist/core/geometry.d.ts +9 -0
  43. package/dist/core/geometry.d.ts.map +1 -1
  44. package/dist/core/geometry.js +16 -0
  45. package/dist/core/geometry.js.map +1 -1
  46. package/dist/core/governance.d.ts +20 -0
  47. package/dist/core/governance.d.ts.map +1 -0
  48. package/dist/core/governance.js +77 -0
  49. package/dist/core/governance.js.map +1 -0
  50. package/dist/core/host.d.ts +95 -21
  51. package/dist/core/host.d.ts.map +1 -1
  52. package/dist/core/host.js +53 -1
  53. package/dist/core/host.js.map +1 -1
  54. package/dist/core/integrator.d.ts +42 -1
  55. package/dist/core/integrator.d.ts.map +1 -1
  56. package/dist/core/integrator.js +229 -27
  57. package/dist/core/integrator.js.map +1 -1
  58. package/dist/core/lane-registry.d.ts +14 -0
  59. package/dist/core/lane-registry.d.ts.map +1 -0
  60. package/dist/core/lane-registry.js +64 -0
  61. package/dist/core/lane-registry.js.map +1 -0
  62. package/dist/core/projection-agent-json.d.ts +12 -0
  63. package/dist/core/projection-agent-json.d.ts.map +1 -0
  64. package/dist/core/projection-agent-json.js +37 -0
  65. package/dist/core/projection-agent-json.js.map +1 -0
  66. package/dist/core/query-lens.d.ts +6 -0
  67. package/dist/core/query-lens.d.ts.map +1 -0
  68. package/dist/core/query-lens.js +24 -0
  69. package/dist/core/query-lens.js.map +1 -0
  70. package/dist/core/reactions.d.ts +7 -0
  71. package/dist/core/reactions.d.ts.map +1 -1
  72. package/dist/core/reactions.js +7 -0
  73. package/dist/core/reactions.js.map +1 -1
  74. package/dist/core/render-modes.d.ts +64 -0
  75. package/dist/core/render-modes.d.ts.map +1 -1
  76. package/dist/core/render-modes.js +165 -0
  77. package/dist/core/render-modes.js.map +1 -1
  78. package/dist/core/scanner.d.ts +29 -3
  79. package/dist/core/scanner.d.ts.map +1 -1
  80. package/dist/core/scanner.js +46 -3
  81. package/dist/core/scanner.js.map +1 -1
  82. package/dist/core/spatial-hash.d.ts +8 -0
  83. package/dist/core/spatial-hash.d.ts.map +1 -1
  84. package/dist/core/spatial-hash.js +26 -3
  85. package/dist/core/spatial-hash.js.map +1 -1
  86. package/dist/core/types.d.ts +762 -8
  87. package/dist/core/types.d.ts.map +1 -1
  88. package/dist/diagnostics/probes.d.ts +11 -1
  89. package/dist/diagnostics/probes.d.ts.map +1 -1
  90. package/dist/diagnostics/probes.js +48 -8
  91. package/dist/diagnostics/probes.js.map +1 -1
  92. package/dist/forces/extended.d.ts.map +1 -1
  93. package/dist/forces/extended.js +8 -2
  94. package/dist/forces/extended.js.map +1 -1
  95. package/dist/forces/natural.d.ts.map +1 -1
  96. package/dist/forces/natural.js +11 -12
  97. package/dist/forces/natural.js.map +1 -1
  98. package/dist/index.d.ts +6 -1
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +6 -1
  101. package/dist/index.js.map +1 -1
  102. package/dist/recipes/compile.d.ts.map +1 -1
  103. package/dist/recipes/compile.js +3 -1
  104. package/dist/recipes/compile.js.map +1 -1
  105. package/dist/recipes/schema.d.ts +1 -1
  106. package/dist/recipes/schema.d.ts.map +1 -1
  107. package/dist/recipes/schema.js +1 -0
  108. package/dist/recipes/schema.js.map +1 -1
  109. package/dist/record/record.d.ts +1 -1
  110. package/dist/record/record.d.ts.map +1 -1
  111. package/dist/semantic/layers.d.ts +16 -2
  112. package/dist/semantic/layers.d.ts.map +1 -1
  113. package/dist/semantic/layers.js +20 -3
  114. package/dist/semantic/layers.js.map +1 -1
  115. package/dist/semantic/materials.js +3 -3
  116. package/dist/semantic/materials.js.map +1 -1
  117. package/dist/semantic/states.js +1 -1
  118. package/dist/semantic/states.js.map +1 -1
  119. package/dist/version.d.ts +1 -1
  120. package/dist/version.js +1 -1
  121. package/dist/visual/visualization.d.ts.map +1 -1
  122. package/dist/visual/visualization.js +4 -0
  123. package/dist/visual/visualization.js.map +1 -1
  124. package/package.json +3 -2
@@ -22,7 +22,7 @@ export interface HarnessElementSpec {
22
22
  * One element in the harness scan root — a hand-rolled stand-in answering the exact surface the
23
23
  * engine reads off a DOM element. The fields the frame loop mutates (transforms via `style`, a11y
24
24
  * via `aria-hidden`/`inert`, the `data-fx-cap` edge flag) are observable so tests can assert them,
25
- * and every `field:*` / `forces:*` event the engine dispatches is recorded in {@link events}.
25
+ * and every `field:*` event the engine dispatches is recorded in {@link events}.
26
26
  */
27
27
  export declare class HarnessElement {
28
28
  /** mutable layout box; the engine reads it through `getBoundingClientRect`. Move it to relocate. */
@@ -31,7 +31,7 @@ export declare class HarnessElement {
31
31
  id: string;
32
32
  className: string;
33
33
  isConnected: boolean;
34
- /** every `dispatchEvent`'d event type, in order (e.g. `'field:captured'`, `'forces:captured'`). */
34
+ /** every `dispatchEvent`'d event type, in order (e.g. `'field:captured'`). */
35
35
  readonly events: string[];
36
36
  /** every dispatched event with its detail, in order — for asserting the payload. */
37
37
  readonly dispatched: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"frame-harness.d.ts","sourceRoot":"","sources":["../../src/core/frame-harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-harness.d.ts","sourceRoot":"","sources":["../../src/core/frame-harness.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,7 @@ const ZERO_RECT = { left: 0, top: 0, width: 0, height: 0 };
36
36
  * One element in the harness scan root — a hand-rolled stand-in answering the exact surface the
37
37
  * engine reads off a DOM element. The fields the frame loop mutates (transforms via `style`, a11y
38
38
  * via `aria-hidden`/`inert`, the `data-fx-cap` edge flag) are observable so tests can assert them,
39
- * and every `field:*` / `forces:*` event the engine dispatches is recorded in {@link events}.
39
+ * and every `field:*` event the engine dispatches is recorded in {@link events}.
40
40
  */
41
41
  export class HarnessElement {
42
42
  /** mutable layout box; the engine reads it through `getBoundingClientRect`. Move it to relocate. */
@@ -45,7 +45,7 @@ export class HarnessElement {
45
45
  id;
46
46
  className = '';
47
47
  isConnected = true;
48
- /** every `dispatchEvent`'d event type, in order (e.g. `'field:captured'`, `'forces:captured'`). */
48
+ /** every `dispatchEvent`'d event type, in order (e.g. `'field:captured'`). */
49
49
  events = [];
50
50
  /** every dispatched event with its detail, in order — for asserting the payload. */
51
51
  dispatched = [];
@@ -1 +1 @@
1
- {"version":3,"file":"frame-harness.js","sourceRoot":"","sources":["../../src/core/frame-harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-harness.js","sourceRoot":"","sources":["../../src/core/frame-harness.ts"],"names":[],"mappings":"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"}
@@ -64,4 +64,13 @@ export declare function polePair(b: AxisRect): [Pole, Pole];
64
64
  * body's strength downstream) sets line density and the tracer's min-strength cutoff.
65
65
  */
66
66
  export declare function dipoleField(poles: readonly Pole[], x: number, y: number): Vec2;
67
+ /**
68
+ * The radial monopole field of a single point charge at `(cx, cy)` sampled at `(x, y)`:
69
+ * `E = sgn · s · r̂ / (d² + …)`, straight field lines OUT of a `+` source (`sign ≥ 0`) and
70
+ * IN to a `−`. This is the one formula the electric-charge force radiates (`charge.field`
71
+ * via `bodyMonopole`) AND the charge-stage field-line diagram traces — so the diagram is
72
+ * the engine's real field, not a hand-rolled stand-in. `EPS` floors the distance at the
73
+ * core so the sample never divides by zero.
74
+ */
75
+ export declare function monopoleField(cx: number, cy: number, sign: number, s: number, x: number, y: number): Vec2;
67
76
  //# sourceMappingURL=geometry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/core/geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,qFAAqF;AACrF,eAAO,MAAM,GAAG,IAAI,CAAC;AAErB,qFAAqF;AACrF,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,gFAAgF;AAChF,MAAM,WAAW,QAAS,SAAQ,IAAI;IACpC,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iEAAiE;AACjE,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAKnE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAM/D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAWlD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAY9E"}
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/core/geometry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,qFAAqF;AACrF,eAAO,MAAM,GAAG,IAAI,CAAC;AAErB,qFAAqF;AACrF,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,gFAAgF;AAChF,MAAM,WAAW,QAAS,SAAQ,IAAI;IACpC,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iEAAiE;AACjE,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAKnE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAM/D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAWlD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAY9E;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,IAAI,CAON"}
@@ -65,4 +65,20 @@ export function dipoleField(poles, x, y) {
65
65
  }
66
66
  return { x: fx, y: fy };
67
67
  }
68
+ /**
69
+ * The radial monopole field of a single point charge at `(cx, cy)` sampled at `(x, y)`:
70
+ * `E = sgn · s · r̂ / (d² + …)`, straight field lines OUT of a `+` source (`sign ≥ 0`) and
71
+ * IN to a `−`. This is the one formula the electric-charge force radiates (`charge.field`
72
+ * via `bodyMonopole`) AND the charge-stage field-line diagram traces — so the diagram is
73
+ * the engine's real field, not a hand-rolled stand-in. `EPS` floors the distance at the
74
+ * core so the sample never divides by zero.
75
+ */
76
+ export function monopoleField(cx, cy, sign, s, x, y) {
77
+ const dx = x - cx;
78
+ const dy = y - cy;
79
+ const d = Math.max(EPS, Math.hypot(dx, dy));
80
+ const sgn = sign < 0 ? -1 : 1;
81
+ const mag = (sgn * s) / (d * d); // 1/d², signed by polarity
82
+ return { x: (dx / d) * mag, y: (dy / d) * mag };
83
+ }
68
84
  //# sourceMappingURL=geometry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/core/geometry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/core/geometry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Governance lint (substrate critical-path 05 §governance). Pure checks that keep powerful field
3
+ * behavior explainable and accessible. `lintProjections` is the MVP: it enforces the projection
4
+ * accessibility rules — a projection that can express motion must declare a reduced-motion equivalent,
5
+ * and every projection should declare an accessibility equivalent (accessibility is an *alternate
6
+ * projection of the same state*, not a fallback). `ProjectionRegistry.lint` delegates here.
7
+ *
8
+ * Pure over plain {@link FieldProjectionInfo} metadata, so it runs in CI, devtools, or a docs check
9
+ * with no live field. The lane-separation / coupling-passport / relationship-as-force rules (which
10
+ * need force + formation passports) are a later step.
11
+ */
12
+ import type { FieldProjectionInfo, GovernanceWarning } from './types.ts';
13
+ import type { ForcePassport } from '../contracts/passport.ts';
14
+ /** Lint a set of registered projections (substrate 05 §field-lint-rules). Order follows the input. */
15
+ export declare function lintProjections(projections: readonly FieldProjectionInfo[]): GovernanceWarning[];
16
+ /** Lint force passports for the dimension-coupling rule (substrate governance 05). With the shipped
17
+ * passports this returns `[]` — every speed-conserving force (`wall`, `magnetism`) declares its coupling —
18
+ * so the lint guards future drift (a new coupler that forgets to declare, or a typo'd dimension name). */
19
+ export declare function lintDimensionCoupling(passports?: readonly ForcePassport[]): GovernanceWarning[];
20
+ //# sourceMappingURL=governance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/core/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAA0B,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAa9D,sGAAsG;AACtG,wBAAgB,eAAe,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,GAAG,iBAAiB,EAAE,CAsBhG;AAYD;;2GAE2G;AAC3G,wBAAgB,qBAAqB,CAAC,SAAS,GAAE,SAAS,aAAa,EAA6B,GAAG,iBAAiB,EAAE,CA6BzH"}
@@ -0,0 +1,77 @@
1
+ import { PASSPORTS } from "../contracts/passport.js";
2
+ /** Surfaces that can express *motion* — a projection touching one of these must offer a non-motion
3
+ * equivalent for `prefers-reduced-motion`. (Inherently-static/non-visual surfaces are exempt.) */
4
+ const MOTION_SURFACES = new Set([
5
+ 'css',
6
+ 'canvas',
7
+ 'svg',
8
+ 'typography',
9
+ 'spatial',
10
+ 'native',
11
+ ]);
12
+ /** Lint a set of registered projections (substrate 05 §field-lint-rules). Order follows the input. */
13
+ export function lintProjections(projections) {
14
+ const out = [];
15
+ for (const p of projections) {
16
+ const motion = p.surfaces.some((s) => MOTION_SURFACES.has(s));
17
+ if (motion && !p.reducedMotionEquivalent) {
18
+ out.push({
19
+ rule: 'field/reduced-motion-equivalent-required',
20
+ severity: 'error', // an accessibility-contract violation (doc 05 §severity)
21
+ subject: p.id,
22
+ message: `Projection "${p.id}" can express motion (${p.surfaces.filter((s) => MOTION_SURFACES.has(s)).join(', ')}) but declares no reducedMotionEquivalent. Reduced motion must translate the behavior, not remove it.`,
23
+ });
24
+ }
25
+ if (!p.accessibilityEquivalent) {
26
+ out.push({
27
+ rule: 'field/accessibility-equivalent-required',
28
+ severity: 'warning',
29
+ subject: p.id,
30
+ message: `Projection "${p.id}" declares no accessibilityEquivalent. Accessibility is an alternate projection of the same field state, not a fallback.`,
31
+ });
32
+ }
33
+ }
34
+ return out;
35
+ }
36
+ // ── Dimension-coupling passports (substrate governance 05 — `field/no-dimension-coupling-without-passport`)
37
+ // A force that COUPLES dimensions (a change in one dimension drives a change in another) must declare it
38
+ // in its passport's `couplesDimensions`. The cleanest unarguable signal is `conservesSpeed`: a force that
39
+ // preserves |v| while moving particles necessarily *redirects velocity* — it couples the linear-velocity
40
+ // components (and, for a torque-style force, `linear`→`angular`). This lint reports any such force that
41
+ // declares no coupling, and any declared dimension that is not a known lane. Pure over the passports.
42
+ /** The dimension lanes a coupling may name — the accumulator's channels (doc 04). */
43
+ const COUPLING_DIMENSIONS = new Set(['linear', 'angular', 'thermal', 'temporal', 'semantic']);
44
+ /** Lint force passports for the dimension-coupling rule (substrate governance 05). With the shipped
45
+ * passports this returns `[]` — every speed-conserving force (`wall`, `magnetism`) declares its coupling —
46
+ * so the lint guards future drift (a new coupler that forgets to declare, or a typo'd dimension name). */
47
+ export function lintDimensionCoupling(passports = Object.values(PASSPORTS)) {
48
+ const out = [];
49
+ for (const p of passports) {
50
+ const declared = p.couplesDimensions ?? [];
51
+ // Count VALID lanes, not raw length — a speed-conserving mover that declares only unknown lanes
52
+ // (e.g. a `['lienar']` typo) has no real coupling and must still error, not slip through on length.
53
+ const validDeclared = declared.filter((d) => COUPLING_DIMENSIONS.has(d));
54
+ if (p.movesParticles && p.conservesSpeed && validDeclared.length === 0) {
55
+ out.push({
56
+ rule: 'field/no-dimension-coupling-without-passport',
57
+ severity: 'error',
58
+ subject: p.token,
59
+ message: declared.length === 0
60
+ ? `"${p.token}" conserves speed (it redirects velocity) but declares no couplesDimensions — a dimension-coupling force must declare its coupling.`
61
+ : `"${p.token}" conserves speed but declares no VALID couplesDimensions (only ${JSON.stringify(declared)}) — a dimension-coupling force must declare a known lane.`,
62
+ });
63
+ }
64
+ for (const d of declared) {
65
+ if (!COUPLING_DIMENSIONS.has(d)) {
66
+ out.push({
67
+ rule: 'field/no-dimension-coupling-without-passport',
68
+ severity: 'warning',
69
+ subject: p.token,
70
+ message: `"${p.token}" declares couplesDimensions ["${d}"], but "${d}" is not a known dimension lane (${[...COUPLING_DIMENSIONS].join(', ')}).`,
71
+ });
72
+ }
73
+ }
74
+ }
75
+ return out;
76
+ }
77
+ //# sourceMappingURL=governance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/core/governance.ts"],"names":[],"mappings":"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"}
@@ -20,34 +20,108 @@ export interface HostViewport {
20
20
  originX?: number;
21
21
  originY?: number;
22
22
  }
23
- export interface FieldHost {
23
+ /**
24
+ * `MinimalFieldHost` — the SMALLEST surface a host must supply for the engine to run. It is the
25
+ * required core of {@link FieldHost}; everything else (scroll, reduced-motion, visibility, the heatmap
26
+ * canvas, and every event subscription) is an OPTIONAL capability the engine degrades around when
27
+ * absent (see {@link hostCapabilities}). A host that supplies only these four members runs the full
28
+ * simulation + feedback pipeline headlessly — it just never scrolls, never pauses on visibility, and
29
+ * cannot draw a heatmap.
30
+ *
31
+ * The three things a host MUST provide:
32
+ * - **geometry** — `root` (the scan root) + `viewport()` (size + DPR + optional origin): *where* the
33
+ * field lives and in what coordinate space.
34
+ * - **time** — `raf()` / `cancelRaf()`: how the frame loop is scheduled (a real rAF, a manual `tick`,
35
+ * a native display link).
36
+ */
37
+ export interface MinimalFieldHost {
24
38
  /** the subtree scanned for `[data-body]` / `[data-move]` / `[data-on]` / `[data-hot]` / `[data-formation]`. */
25
39
  root: ParentNode;
26
40
  /** the current viewport size + DPR (read each resize). */
27
41
  viewport(): HostViewport;
28
- /** current vertical scroll offset in px. */
29
- scrollY(): number;
30
- /** the scrollable height of the page (cached by the caller — reading it forces reflow). */
31
- scrollHeight(): number;
32
- /** whether the user prefers reduced motion (freezes the sim). */
33
- reducedMotion(): boolean;
34
- /** whether the surface is hidden (backgrounded tab) — pauses the loop. */
35
- hidden(): boolean;
36
42
  /** schedule the next frame; returns a handle. */
37
43
  raf(cb: (t: number) => void): number;
38
44
  /** cancel a scheduled frame. */
39
45
  cancelRaf(id: number): void;
40
- /** an offscreen canvas for the heatmap buffer. */
41
- createCanvas(): HTMLCanvasElement;
42
- /** subscribe to viewport-resize; returns an unsubscribe. */
43
- onResize(cb: () => void): () => void;
44
- /** subscribe to scroll; returns an unsubscribe. */
45
- onScroll(cb: () => void): () => void;
46
- /** subscribe to surface visibility changes; returns an unsubscribe. */
47
- onVisibility(cb: () => void): () => void;
48
- /** subscribe to user input activity (pointer/wheel/key/touch); returns an unsubscribe. */
49
- onInput(cb: () => void): () => void;
50
- /** subscribe to a composed shadow-DOM body event by name; returns an unsubscribe. */
51
- onBodyEvent(type: string, cb: (e: Event) => void): () => void;
52
46
  }
47
+ /**
48
+ * `FieldHost` — the full renderer/environment SPI: the {@link MinimalFieldHost} required core plus the
49
+ * OPTIONAL capabilities the engine consumes when a host offers them. Absent capabilities degrade
50
+ * gracefully (scroll → 0, reduced-motion / hidden → false, subscriptions → no-op, and a drawing mode
51
+ * that needs `createCanvas` throws a clear error rather than the field silently misbehaving). Existing
52
+ * hosts that implement every member keep satisfying this contract unchanged; a new host only has to
53
+ * supply the four required members. Use {@link hostCapabilities} to detect what a given host offers,
54
+ * or {@link defineHost} to fill the no-op defaults from a minimal host.
55
+ */
56
+ export interface FieldHost extends MinimalFieldHost {
57
+ /** current vertical scroll offset in px. Absent ⇒ the field treats scroll as 0 (never scrolls). */
58
+ scrollY?(): number;
59
+ /** the scrollable height of the page (cached by the caller — reading it forces reflow). Absent ⇒ falls back to the viewport height. */
60
+ scrollHeight?(): number;
61
+ /** whether the user prefers reduced motion (freezes the sim). Absent ⇒ `false` (motion allowed). */
62
+ reducedMotion?(): boolean;
63
+ /** whether the surface is hidden (backgrounded tab) — pauses the loop. Absent ⇒ `false` (never auto-pauses). */
64
+ hidden?(): boolean;
65
+ /** an offscreen canvas for the heatmap buffer. Absent ⇒ any drawing mode that needs it throws a clear error; signals-first (`render: 'none'`) never calls it. */
66
+ createCanvas?(): HTMLCanvasElement;
67
+ /** subscribe to viewport-resize; returns an unsubscribe. Absent ⇒ the field never re-reads its viewport on resize. */
68
+ onResize?(cb: () => void): () => void;
69
+ /** subscribe to scroll; returns an unsubscribe. Absent ⇒ no scroll-driven readouts. */
70
+ onScroll?(cb: () => void): () => void;
71
+ /** subscribe to surface visibility changes; returns an unsubscribe. Absent ⇒ the loop never auto-pauses. */
72
+ onVisibility?(cb: () => void): () => void;
73
+ /** subscribe to user input activity (pointer/wheel/key/touch); returns an unsubscribe. Absent ⇒ no input-activity signal. */
74
+ onInput?(cb: () => void): () => void;
75
+ /** subscribe to a composed shadow-DOM body event by name; returns an unsubscribe. Absent ⇒ programmatic bodies only (no DOM body-event registration). */
76
+ onBodyEvent?(type: string, cb: (e: Event) => void): () => void;
77
+ /** release host-side state when the field is destroyed — called once by `FieldHandle.destroy()`
78
+ * after every event subscription is unsubscribed. A contained host (`containerHost`) uses it to
79
+ * remove its `data-field-boundary` ownership marker so the outer/page field re-adopts the bodies
80
+ * on its next rescan (#980). Absent ⇒ nothing to release. Idempotent by contract. */
81
+ detach?(): void;
82
+ }
83
+ /**
84
+ * What optional capabilities a {@link FieldHost} actually supplies — the "host conformance" read-out.
85
+ * A capability is present when the host provides the backing member(s); the engine degrades gracefully
86
+ * around any that are absent. This is the third parity/testing category alongside API-surface parity
87
+ * and mathematical conformance: *does this host tick time, provide geometry, feed back, project…?*
88
+ */
89
+ export interface HostCapabilities {
90
+ /** always true — the required core (`root` + `viewport` + `raf`/`cancelRaf`) is present by type. */
91
+ geometry: boolean;
92
+ /** the host schedules frames (`raf`/`cancelRaf`) — always true for a valid host. */
93
+ time: boolean;
94
+ /** the host reports scroll position/height (`scrollY` and/or `scrollHeight`). */
95
+ scroll: boolean;
96
+ /** the host can create the offscreen heatmap canvas (`createCanvas`) — required for heatmap draw modes. */
97
+ canvas: boolean;
98
+ /** the host reports the reduced-motion preference (`reducedMotion`). */
99
+ reducedMotion: boolean;
100
+ /** the host reports surface visibility (`hidden` and/or `onVisibility`) so the loop can auto-pause. */
101
+ visibility: boolean;
102
+ /** the host emits at least one subscription (`onResize`/`onScroll`/`onVisibility`/`onInput`/`onBodyEvent`). */
103
+ events: boolean;
104
+ /** the host relays composed shadow-DOM body events (`onBodyEvent`) — DOM body registration. */
105
+ bodyEvents: boolean;
106
+ }
107
+ /**
108
+ * Inspect which optional capabilities a host supplies — see {@link HostCapabilities}. Pure, allocation-
109
+ * light, and safe on a `MinimalFieldHost` (every optional lane reads `false`). Use it to branch on host
110
+ * shape (e.g. only enable a heatmap mode when `caps.canvas`) or as the basis of a host-conformance check.
111
+ */
112
+ export declare function hostCapabilities(host: FieldHost): HostCapabilities;
113
+ /**
114
+ * Build a full {@link FieldHost} from a {@link MinimalFieldHost} plus any optional capabilities you
115
+ * choose to override — the no-op / graceful defaults are filled for the rest. This is the sanctioned
116
+ * way to author a host without hand-writing the whole subscription boilerplate: supply geometry + time
117
+ * (and whatever else your environment offers) and the field runs. Pure; touches no globals.
118
+ *
119
+ * ```ts
120
+ * const host = defineHost({
121
+ * root, viewport, raf, cancelRaf, // the required core
122
+ * reducedMotion: () => prefersReducedMotion(), // one optional capability
123
+ * });
124
+ * ```
125
+ */
126
+ export declare function defineHost(host: MinimalFieldHost & Partial<FieldHost>): FieldHost;
53
127
  //# sourceMappingURL=host.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/core/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ;;;;mCAI+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,+GAA+G;IAC/G,IAAI,EAAE,UAAU,CAAC;IACjB,0DAA0D;IAC1D,QAAQ,IAAI,YAAY,CAAC;IACzB,4CAA4C;IAC5C,OAAO,IAAI,MAAM,CAAC;IAClB,2FAA2F;IAC3F,YAAY,IAAI,MAAM,CAAC;IACvB,iEAAiE;IACjE,aAAa,IAAI,OAAO,CAAC;IACzB,0EAA0E;IAC1E,MAAM,IAAI,OAAO,CAAC;IAClB,iDAAiD;IACjD,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;IACrC,gCAAgC;IAChC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kDAAkD;IAClD,YAAY,IAAI,iBAAiB,CAAC;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACrC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACrC,uEAAuE;IACvE,YAAY,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACzC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACpC,qFAAqF;IACrF,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC/D"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/core/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ;;;;mCAI+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+GAA+G;IAC/G,IAAI,EAAE,UAAU,CAAC;IACjB,0DAA0D;IAC1D,QAAQ,IAAI,YAAY,CAAC;IACzB,iDAAiD;IACjD,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;IACrC,gCAAgC;IAChC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IACjD,mGAAmG;IACnG,OAAO,CAAC,IAAI,MAAM,CAAC;IACnB,uIAAuI;IACvI,YAAY,CAAC,IAAI,MAAM,CAAC;IACxB,oGAAoG;IACpG,aAAa,CAAC,IAAI,OAAO,CAAC;IAC1B,gHAAgH;IAChH,MAAM,CAAC,IAAI,OAAO,CAAC;IACnB,iKAAiK;IACjK,YAAY,CAAC,IAAI,iBAAiB,CAAC;IACnC,sHAAsH;IACtH,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACtC,uFAAuF;IACvF,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACtC,4GAA4G;IAC5G,YAAY,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1C,6HAA6H;IAC7H,OAAO,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACrC,yJAAyJ;IACzJ,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/D;;;0FAGsF;IACtF,MAAM,CAAC,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oGAAoG;IACpG,QAAQ,EAAE,OAAO,CAAC;IAClB,oFAAoF;IACpF,IAAI,EAAE,OAAO,CAAC;IACd,iFAAiF;IACjF,MAAM,EAAE,OAAO,CAAC;IAChB,2GAA2G;IAC3G,MAAM,EAAE,OAAO,CAAC;IAChB,wEAAwE;IACxE,aAAa,EAAE,OAAO,CAAC;IACvB,uGAAuG;IACvG,UAAU,EAAE,OAAO,CAAC;IACpB,+GAA+G;IAC/G,MAAM,EAAE,OAAO,CAAC;IAChB,+FAA+F;IAC/F,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAgBlE;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAiBjF"}
package/dist/core/host.js CHANGED
@@ -7,5 +7,57 @@
7
7
  * a different document, or a test harness. This interface is pure types — no globals — so `field.ts`
8
8
  * imports zero DOM (enforced by `dom-boundary.test.ts`).
9
9
  */
10
- export {};
10
+ /**
11
+ * Inspect which optional capabilities a host supplies — see {@link HostCapabilities}. Pure, allocation-
12
+ * light, and safe on a `MinimalFieldHost` (every optional lane reads `false`). Use it to branch on host
13
+ * shape (e.g. only enable a heatmap mode when `caps.canvas`) or as the basis of a host-conformance check.
14
+ */
15
+ export function hostCapabilities(host) {
16
+ return {
17
+ geometry: true,
18
+ time: typeof host.raf === 'function' && typeof host.cancelRaf === 'function',
19
+ scroll: typeof host.scrollY === 'function' || typeof host.scrollHeight === 'function',
20
+ canvas: typeof host.createCanvas === 'function',
21
+ reducedMotion: typeof host.reducedMotion === 'function',
22
+ visibility: typeof host.hidden === 'function' || typeof host.onVisibility === 'function',
23
+ events: typeof host.onResize === 'function' ||
24
+ typeof host.onScroll === 'function' ||
25
+ typeof host.onVisibility === 'function' ||
26
+ typeof host.onInput === 'function' ||
27
+ typeof host.onBodyEvent === 'function',
28
+ bodyEvents: typeof host.onBodyEvent === 'function',
29
+ };
30
+ }
31
+ const NEVER_UNSUBSCRIBE = () => { };
32
+ /**
33
+ * Build a full {@link FieldHost} from a {@link MinimalFieldHost} plus any optional capabilities you
34
+ * choose to override — the no-op / graceful defaults are filled for the rest. This is the sanctioned
35
+ * way to author a host without hand-writing the whole subscription boilerplate: supply geometry + time
36
+ * (and whatever else your environment offers) and the field runs. Pure; touches no globals.
37
+ *
38
+ * ```ts
39
+ * const host = defineHost({
40
+ * root, viewport, raf, cancelRaf, // the required core
41
+ * reducedMotion: () => prefersReducedMotion(), // one optional capability
42
+ * });
43
+ * ```
44
+ */
45
+ export function defineHost(host) {
46
+ return {
47
+ root: host.root,
48
+ viewport: host.viewport,
49
+ raf: host.raf,
50
+ cancelRaf: host.cancelRaf,
51
+ scrollY: host.scrollY,
52
+ scrollHeight: host.scrollHeight,
53
+ reducedMotion: host.reducedMotion,
54
+ hidden: host.hidden,
55
+ createCanvas: host.createCanvas,
56
+ onResize: host.onResize ?? (() => NEVER_UNSUBSCRIBE),
57
+ onScroll: host.onScroll ?? (() => NEVER_UNSUBSCRIBE),
58
+ onVisibility: host.onVisibility ?? (() => NEVER_UNSUBSCRIBE),
59
+ onInput: host.onInput ?? (() => NEVER_UNSUBSCRIBE),
60
+ onBodyEvent: host.onBodyEvent ?? (() => NEVER_UNSUBSCRIBE),
61
+ };
62
+ }
11
63
  //# sourceMappingURL=host.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/core/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/core/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuGH;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAe;IAC9C,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,OAAO,IAAI,CAAC,GAAG,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU;QAC5E,MAAM,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;QACrF,MAAM,EAAE,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;QAC/C,aAAa,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;QACvD,UAAU,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;QACxF,MAAM,EACJ,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU;YACnC,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU;YACnC,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;YACvC,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU;YAClC,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU;QACxC,UAAU,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU;KACnD,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;AAEzC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,IAA2C;IACpE,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;QACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;QACpD,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;QAC5D,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;QAClD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;KAC3D,CAAC;AACJ,CAAC"}
@@ -5,8 +5,30 @@
5
5
  * then integrate and damp. Under first-class mass (§21.3) each additive body force is
6
6
  * scaled by `1/m` as it applies, while velocity-replacing (`kinematic`) forces are left
7
7
  * untouched. Reduced motion (`dt = 0`) freezes the sim (§18).
8
+ *
9
+ * INTEGRATION SCHEMES (`Env.integrator`): the default `'legacy'` is semi-implicit Euler
10
+ * (forces update v, then `x += v·dt`, then a per-frame decay); `'fixed'` keeps the same order
11
+ * but dt-scales the decays (doc 04 §Step 3). `'velocity-verlet'` (#659) is the opt-in
12
+ * second-order scheme, in the stored-acceleration form:
13
+ *
14
+ * x(t+dt) = x(t) + v(t)·dt + ½·a(t)·dt² (position full-step, BEFORE the force pass)
15
+ * a′ = Δv/dt from the force pass (forces evaluated at x(t+dt))
16
+ * v(t+dt) = v(t) + ½·(a(t) + a′)·dt (velocity half-step average)
17
+ *
18
+ * Approximations, deliberate and documented (physics caveat canon): (1) the engine's force model
19
+ * is impulse-based and velocity-dependent (drag-like forces read the CURRENT v), so a′ is taken
20
+ * as the pass's net Δv/dt rather than re-evaluating forces at the averaged velocity — the
21
+ * standard stored-acceleration treatment; (2) the per-step `FRICTION`/`HEAT_DECAY` decays stay
22
+ * outside the scheme (dt-scaled, like `'fixed'`), which alone makes it NON-symplectic — this
23
+ * buys positional accuracy, it does NOT make energy/momentum conserved (they are non-conserved
24
+ * by design; particle COUNT remains the invariant); (3) a *kinematic* (velocity-REPLACING)
25
+ * force — `jet`/`wall`/`lens`/`gate`/`warp` — is a discontinuity, not an acceleration: when one
26
+ * fires, the replaced velocity stands un-averaged and the stored acceleration resets, so the
27
+ * next position step doesn't extrapolate across the break; (4) a pair force's equal-and-opposite
28
+ * leg on the NEIGHBOUR (`collide`/`link`) folds into that neighbour's own v(t) or Δv whenever
29
+ * its turn comes — same class of caveat the fixed-timestep note below already carries.
8
30
  */
9
- import type { Body, ConditionRegistry, Env, ForceRegistry } from './types.ts';
31
+ import type { Body, ConditionRegistry, Env, FieldImpulseAccumulator, Force, ForceRegistry, Particle } from './types.ts';
10
32
  import type { FieldStore } from './field-store.ts';
11
33
  import { type Wave } from './currents.ts';
12
34
  export declare const FRICTION = 0.95;
@@ -26,5 +48,24 @@ export interface StepInput {
26
48
  } | null;
27
49
  separation?: number;
28
50
  }
51
+ /**
52
+ * Apply one force to a particle, honouring first-class mass (§21.3): an *additive* force's
53
+ * velocity change is scaled by `1/m` (a = F/m, so heavier matter moves less), while a
54
+ * `kinematic` force (a reflection / rotation / relaunch) sets velocity outright and is left
55
+ * unscaled. `inv === 1` (the default, `m = 1`) is the identity path either way. The z lane is
56
+ * scaled identically so depth-enabled fields keep `a = F/m` on all three axes (a heavy particle
57
+ * pushed off-plane accelerates as little along z as it does in x/y).
58
+ */
59
+ /**
60
+ * Apply one force to a particle AND, when `env.accum` is present, record its net per-force Δv into
61
+ * the accumulator (doc 04). The single canonical capture path: the integrator's hot loop, the
62
+ * diagnostics (`accumulateAt`/causality), and any Field-Query probe all run a force through here, so
63
+ * "what did this force contribute?" is computed in exactly one place. The velocity update is unchanged
64
+ * from the pre-accumulator engine — `accum` is a read-only inspection sink. `inv` is the mass factor
65
+ * (1 = unit mass); kinematic forces are left unscaled.
66
+ */
67
+ export declare function applyAndRecord(f: Force, b: Body, p: Particle, env: Env, inv?: number): void;
68
+ /** A fresh, empty impulse accumulator (dimension-aware shape; only `linear` is populated today). */
69
+ export declare function makeAccumulator(): FieldImpulseAccumulator;
29
70
  export declare function step(input: StepInput): void;
30
71
  //# sourceMappingURL=integrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrator.d.ts","sourceRoot":"","sources":["../../src/core/integrator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAS,aAAa,EAAY,MAAM,YAAY,CAAC;AAC/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAoC,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAK5E,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,UAAU,QAAQ,CAAC;AAGhC,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;IACxB,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAClC,UAAU,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA2CD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAkY3C"}
1
+ {"version":3,"file":"integrator.d.ts","sourceRoot":"","sources":["../../src/core/integrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACxH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAoC,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAK5E,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,UAAU,QAAQ,CAAC;AAGhC,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;IACxB,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAClC,UAAU,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAmBD;;;;;;;GAOG;AACH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,SAAI,GAAG,IAAI,CAiEtF;AAyCD,oGAAoG;AACpG,wBAAgB,eAAe,IAAI,uBAAuB,CAEzD;AAwBD,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CA0b3C"}