universal-physics-tensor 0.21.0 → 0.23.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 (70) hide show
  1. package/README.md +13 -12
  2. package/bin/upt.mjs +83 -4
  3. package/dist/canonical/canonical-equation.d.ts +79 -0
  4. package/dist/canonical/canonical-equation.d.ts.map +1 -0
  5. package/dist/canonical/canonical-equation.js +2 -0
  6. package/dist/canonical/canonical-equation.js.map +1 -0
  7. package/dist/canonical/dimensional-fields.d.ts +7 -0
  8. package/dist/canonical/dimensional-fields.d.ts.map +1 -0
  9. package/dist/canonical/dimensional-fields.js +31 -0
  10. package/dist/canonical/dimensional-fields.js.map +1 -0
  11. package/dist/canonical/entries/_l1-build.d.ts +22 -0
  12. package/dist/canonical/entries/_l1-build.d.ts.map +1 -0
  13. package/dist/canonical/entries/_l1-build.js +26 -0
  14. package/dist/canonical/entries/_l1-build.js.map +1 -0
  15. package/dist/canonical/entries/dimensional-classics.d.ts +11 -0
  16. package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -0
  17. package/dist/canonical/entries/dimensional-classics.js +194 -0
  18. package/dist/canonical/entries/dimensional-classics.js.map +1 -0
  19. package/dist/canonical/entries/l1-gravity-thermo.d.ts +12 -0
  20. package/dist/canonical/entries/l1-gravity-thermo.d.ts.map +1 -0
  21. package/dist/canonical/entries/l1-gravity-thermo.js +165 -0
  22. package/dist/canonical/entries/l1-gravity-thermo.js.map +1 -0
  23. package/dist/canonical/entries/l1-quantum-em.d.ts +10 -0
  24. package/dist/canonical/entries/l1-quantum-em.d.ts.map +1 -0
  25. package/dist/canonical/entries/l1-quantum-em.js +141 -0
  26. package/dist/canonical/entries/l1-quantum-em.js.map +1 -0
  27. package/dist/canonical/entries/relativity.d.ts +14 -0
  28. package/dist/canonical/entries/relativity.d.ts.map +1 -0
  29. package/dist/canonical/entries/relativity.js +188 -0
  30. package/dist/canonical/entries/relativity.js.map +1 -0
  31. package/dist/canonical/linkage.d.ts +27 -0
  32. package/dist/canonical/linkage.d.ts.map +1 -0
  33. package/dist/canonical/linkage.js +139 -0
  34. package/dist/canonical/linkage.js.map +1 -0
  35. package/dist/canonical/normal-form.d.ts +31 -0
  36. package/dist/canonical/normal-form.d.ts.map +1 -0
  37. package/dist/canonical/normal-form.js +137 -0
  38. package/dist/canonical/normal-form.js.map +1 -0
  39. package/dist/canonical/registry.d.ts +26 -0
  40. package/dist/canonical/registry.d.ts.map +1 -0
  41. package/dist/canonical/registry.js +46 -0
  42. package/dist/canonical/registry.js.map +1 -0
  43. package/dist/canonical/seed-l-layer.d.ts +20 -0
  44. package/dist/canonical/seed-l-layer.d.ts.map +1 -0
  45. package/dist/canonical/seed-l-layer.js +39 -0
  46. package/dist/canonical/seed-l-layer.js.map +1 -0
  47. package/dist/composition/discovery.d.ts +50 -6
  48. package/dist/composition/discovery.d.ts.map +1 -1
  49. package/dist/composition/discovery.js +102 -10
  50. package/dist/composition/discovery.js.map +1 -1
  51. package/dist/composition/representative-values.d.ts +52 -0
  52. package/dist/composition/representative-values.d.ts.map +1 -0
  53. package/dist/composition/representative-values.js +91 -0
  54. package/dist/composition/representative-values.js.map +1 -0
  55. package/dist/composition/retrodiction.d.ts +13 -0
  56. package/dist/composition/retrodiction.d.ts.map +1 -1
  57. package/dist/composition/retrodiction.js +7 -1
  58. package/dist/composition/retrodiction.js.map +1 -1
  59. package/dist/composition/symbolic-constants.d.ts.map +1 -1
  60. package/dist/composition/symbolic-constants.js +15 -1
  61. package/dist/composition/symbolic-constants.js.map +1 -1
  62. package/dist/core/constants.d.ts +6 -0
  63. package/dist/core/constants.d.ts.map +1 -1
  64. package/dist/core/constants.js +6 -0
  65. package/dist/core/constants.js.map +1 -1
  66. package/dist/index.d.ts +7 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +15 -1
  69. package/dist/index.js.map +1 -1
  70. package/package.json +1 -1
package/README.md CHANGED
@@ -236,26 +236,27 @@ delivered a measured **5-6× RK4 geodesic-integrator speedup** (see [CHANGELOG](
236
236
 
237
237
  ## Development Status
238
238
 
239
- **Current version:** v0.7.3 on npm
240
- ([`universal-physics-tensor`](https://www.npmjs.com/package/universal-physics-tensor));
241
- the branch carries unreleased **v0.8.0 → v0.14** milestones (composition graph +
242
- GW170817 / BE-23 data confrontations + catalog adjudication, Part-IX Phase C/D,
243
- the full catalog→graph migration, the bridge-inference + symbolic-composition
244
- tooling, the G-9 geometrized-units adapters, and the v0.14 work — distributional/
245
- variational grammar primitives, the `BridgeEquations` facade, G-9 increment 2's
246
- public adapters, and the `LabeledTensor` axis-order fix + `mergeAxes`/`splitAxis`)
247
- awaiting a single **rollup tag** — see the [CHANGELOG](CHANGELOG.md) `[Unreleased]`
248
- block.
239
+ **Current version:** v0.22.0 on npm
240
+ ([`universal-physics-tensor`](https://www.npmjs.com/package/universal-physics-tensor),
241
+ published 2026-06-18) — the rollup of the **v0.8.0 → v0.22.0** arc (composition
242
+ graph + GW170817 / BE-23 data confrontations + catalog adjudication, Part-IX
243
+ Phase C/D, the full catalog→graph migration, the bridge-inference +
244
+ symbolic-composition tooling, the G-9 geometrized-units adapters, the
245
+ distributional/variational grammar primitives, the AST bridge-gradient path, and
246
+ the **canonical-equation L-layer** with bridge↔canonical linkage). The working
247
+ branch carries unreleased post-0.22.0 refinements (the canonical GR tranche + a
248
+ Jarzynski partner, discovery-funnel hardening, and normal-form stub-identity
249
+ tagging) in the [CHANGELOG](CHANGELOG.md) `[Unreleased]` block.
249
250
 
250
251
  | Metric | Value |
251
252
  |---|---|
252
253
  | Bridge catalog | **44** (IDs 11-54) — 8 established · 33 speculative · 3 highly-speculative · 0 invalid; membership-adjudicated **36 bridges · 5 not-a-bridge · 3 contested**; **41-edge composition graph** (full migration, 131 centralized quantity nodes) with a bridge-inference suite — **identifiability classifier**, **retrodiction harness**, **Buckingham-π enumerator**, unified by an **`explainQuantity`** entry point, plus (v0.12) the candidate-vetting **discovery loop**, regime-prediction map, empirical-coverage audit, and **symbolic composition** (the Observable contract + MathTS simplification) |
253
- | Test suite | **2620** passing (5 skipped, 1 todo; incl. property-based algebra tests) — gated by CI |
254
+ | Test suite | **2796** passing (4 skipped, 1 todo; incl. property-based algebra tests) across 274 files — gated by CI |
254
255
  | `tsc --noEmit` | clean (src + strict `tsc -p tsconfig.tests.json`) |
255
256
  | GR validation anchors | BE-52 Mercury perihelion relErr 1.8×10⁻⁷ · BE-37 Shapiro delay relErr ~2×10⁻⁸ |
256
257
  | First derived relation | E_min(M) = ℏc³ln2/(8πGM) from BE-42 ∘ BE-16, relErr ≤ 10⁻¹² (pre-registered CT-1) |
257
258
  | First data confrontation | GW170817 → BE-36: recomputed bounds +6.5×10⁻¹⁶ / −3.1×10⁻¹⁵ vs published +7×10⁻¹⁶ / −3×10⁻¹⁵ |
258
- | Core capability | Dimensional AST validator (23 node kinds; valence-homogeneity + symbolic-exponent grammar, v0.13; distributional/variational primitives, v0.14) · curvature + Einstein-field-equation layers · GL4 symplectic geodesic integrator · composition graph (`composeEdges` + symbolic `composeSymbolic`) · geometrized-units adapters (G-9 increment 1, v0.13) |
259
+ | Core capability | Dimensional AST validator (23 node kinds; valence-homogeneity + symbolic-exponent grammar, v0.13; distributional/variational primitives, v0.14) · curvature + Einstein-field-equation layers · GL4 symplectic geodesic integrator · composition graph (`composeEdges` + symbolic `composeSymbolic`) · geometrized-units adapters (G-9 increment 1, v0.13) · canonical-equation **L-layer** + bridge↔canonical linkage / F4 guard (v0.22) |
259
260
 
260
261
  Release history lives in the **[CHANGELOG](CHANGELOG.md)** — from the v0.1.0
261
262
  catalog-closure milestone (40/40 AST encodings via the Wave A→Z encoding arc,
package/bin/upt.mjs CHANGED
@@ -11,13 +11,16 @@
11
11
  * Run from a built checkout (`npm run build`) via `npm run upt -- <cmd>`,
12
12
  * or as an installed command (`npx universal-physics-tensor <cmd>`).
13
13
  */
14
- import { fileURLToPath } from 'node:url';
14
+ import { fileURLToPath, pathToFileURL } from 'node:url';
15
15
  import { dirname, join } from 'node:path';
16
16
 
17
17
  const here = dirname(fileURLToPath(import.meta.url));
18
- const dist = (...p) => join(here, '..', 'dist', ...p);
18
+ // Return a file:// URL, not a bare path: Node's ESM dynamic import() rejects
19
+ // absolute Windows paths ("protocol 'c:'") — it only accepts file/data/node URLs.
20
+ const dist = (...p) => pathToFileURL(join(here, '..', 'dist', ...p)).href;
19
21
 
20
22
  let api, analysis, formulaReg, dimSpecMod, prediction, discovery, coverage, simplifyMod;
23
+ let canonicalReg, linkageMod;
21
24
  try {
22
25
  api = await import(dist('index.js'));
23
26
  analysis = await import(dist('composition', 'bridge-analysis.js'));
@@ -27,6 +30,8 @@ try {
27
30
  discovery = await import(dist('composition', 'discovery.js'));
28
31
  coverage = await import(dist('bridges', 'confrontation-coverage.js'));
29
32
  simplifyMod = await import(dist('composition', 'expr-simplify.js'));
33
+ canonicalReg = await import(dist('canonical', 'registry.js'));
34
+ linkageMod = await import(dist('canonical', 'linkage.js'));
30
35
  } catch (err) {
31
36
  console.error('Could not load the built package. Run `npm run build` first.');
32
37
  console.error(String(err.message || err));
@@ -42,6 +47,8 @@ const { predictMissingBridges } = prediction;
42
47
  const { rankDiscoveries } = discovery;
43
48
  const { auditCoverage } = coverage;
44
49
  const { simplifyObservable } = simplifyMod;
50
+ const { CANONICAL_EQUATIONS, bridgesWithoutCanonicalPartner } = canonicalReg;
51
+ const { scanLinkages } = linkageMod;
45
52
 
46
53
  const GRAPH = CATALOG_GRAPH;
47
54
 
@@ -97,6 +104,17 @@ Usage:
97
104
  data-confronted vs graph-computable vs encoded-only vs thin — to
98
105
  target the physicist review. Fabricates nothing.
99
106
 
107
+ upt canonical
108
+ List the canonical-equation registry — the standard-physics L-layer
109
+ (textbook "answer key") with each entry's fidelity (L0/L1/L2),
110
+ domain, and bridge partners, plus the coverage gap.
111
+
112
+ upt recover
113
+ Validate bridges against standard physics: classify each bridge↔
114
+ canonical link as restates-canonical (F4 circularity — NOT a
115
+ discovery), recovers (undeclared structural match), or
116
+ dimensional-only.
117
+
100
118
  upt symbolic [--simplify]
101
119
  Compose bridges' SYMBOLIC (AST) forms, not just their numeric
102
120
  evaluators (the Observable contract). Shows the CT-1 / CT-1b chains
@@ -373,11 +391,13 @@ function discoverCmd() {
373
391
  const ranked = rankDiscoveries(GRAPH);
374
392
  const by = (v) => ranked.filter((r) => r.verdict === v);
375
393
  const promising = by('promising'), inert = by('inert'), contra = by('contradictory');
394
+ const clash = by('magnitude-clash');
376
395
  console.log('\nDiscovery — link candidates VETTED through the inference suite');
377
396
  console.log('⚠ a REVIEW SURFACE: `promising` means "worth a physicist\'s minute", not "true".');
378
397
  console.log(' Each candidate hypothesises an identification a≡b and tests its consequences.\n');
379
398
  console.log(` funnel: ${ranked.length} candidates → ${promising.length} promising ` +
380
- `· ${inert.length} inert · ${contra.length} contradictory (falsified)\n`);
399
+ `· ${inert.length} inert · ${clash.length} magnitude-clash ` +
400
+ `· ${contra.length} contradictory (falsified)\n`);
381
401
  if (promising.length) {
382
402
  console.log(' PROMISING (merges disconnected physics, unlocks quantities, stays consistent):');
383
403
  for (const r of promising) {
@@ -387,13 +407,27 @@ function discoverCmd() {
387
407
  } else {
388
408
  console.log(' no candidate is `promising` from the default {mass} anchor.');
389
409
  }
410
+ if (clash.length) {
411
+ console.log(`\n MAGNITUDE-CLASH (representative values differ by > N orders — a falsifier):`);
412
+ for (const r of clash) {
413
+ const basis = r.magnitudeUsedAnchor ? ' (anchor-derived)' : '';
414
+ console.log(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} ~${r.ordersApart.toFixed(1)} orders apart${basis}`);
415
+ }
416
+ }
417
+ const subsumed = inert.filter((r) => r.subsuming);
418
+ if (subsumed.length) {
419
+ console.log(`\n SUBSUMING (generic ≟ specialization — tautological, barred from promising):`);
420
+ for (const r of subsumed) {
421
+ console.log(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} [${r.dim}]`);
422
+ }
423
+ }
390
424
  if (contra.length) {
391
425
  console.log(`\n CONTRADICTORY (the identification falsifies itself numerically):`);
392
426
  for (const r of contra) {
393
427
  console.log(` ${(r.a + ' ≟ ' + r.b).padEnd(52)} disagreeing node(s): ${r.inconsistentNodes.join(', ')}`);
394
428
  }
395
429
  }
396
- console.log('\n (numeric check only exercises the anchor-reachable subgraph; weak priors on dimension.)');
430
+ console.log('\n (magnitude gate abstains where a representative value is unknown; weak priors on dimension.)');
397
431
  }
398
432
 
399
433
  // ── coverage (empirical-spine audit) ──────────────────────────────────────
@@ -481,6 +515,49 @@ function connectorsCmd() {
481
515
  console.log(' docs/research/Orphan-Connector-Analysis.md and proposed in spec Part-IX §9.');
482
516
  }
483
517
 
518
+ // ── canonical (the standard-physics L-layer registry) ─────────────────────
519
+ function canonicalCmd() {
520
+ const fidelity = (e) => (e.fieldEquation ? 'L2' : e.scalarAst ? 'L1' : 'L0');
521
+ console.log('\nCanonical-equation registry — the standard-physics L-layer (Π = L + B + E)');
522
+ console.log('the textbook "answer key" bridge equations are validated against.\n');
523
+ console.log(` ${CANONICAL_EQUATIONS.length} entries:\n`);
524
+ console.log(' fid domain id partners');
525
+ console.log(' ─────────────────────────────────────────────────────────────────');
526
+ for (const e of CANONICAL_EQUATIONS) {
527
+ const partners = [...e.partnerBridges, ...(e.restatesBridge ? [`=${e.restatesBridge}`] : [])].join(',') || '—';
528
+ console.log(` ${fidelity(e).padEnd(3)} ${e.domain.padEnd(19)} ${e.id.padEnd(24)} ${partners}`);
529
+ }
530
+ const gap = bridgesWithoutCanonicalPartner();
531
+ console.log(`\n coverage: ${gap.length} catalog bridges have no canonical partner yet`);
532
+ console.log(` (fidelity: L0 dimensional · L1 scalar-AST · L2 field-equation; "=NN" = restatesBridge)`);
533
+ }
534
+
535
+ // ── recover (bridge↔canonical linkage; the F4 circularity guard) ──────────
536
+ function recoverCmd() {
537
+ const all = scanLinkages();
538
+ const by = (c) => all.filter((r) => r.classification === c);
539
+ const restates = by('restates-canonical'), recovers = by('recovers'), dimOnly = by('dimensional-only');
540
+ console.log('\nBridge↔canonical recovery — validating bridges against standard physics');
541
+ console.log('⚠ structural match is "same relation UP TO a dimensionless factor"; that factor');
542
+ console.log(' may itself be physically substantive (e.g. ⟨e^-βW⟩). A review surface.\n');
543
+ console.log(` ${all.length} non-unrelated links → ${restates.length} restates-canonical ` +
544
+ `· ${recovers.length} recovers · ${dimOnly.length} dimensional-only\n`);
545
+ if (restates.length) {
546
+ console.log(' RESTATES-CANONICAL (the bridge IS the canonical law — F4: NOT a discovery):');
547
+ for (const r of restates) {
548
+ const rec = r.recovery && r.recovery.tested ? ` (recovery exact, err ${r.recovery.maxRelErr.toExponential(0)})` : '';
549
+ console.log(` ${r.canonicalId.padEnd(26)} ≡ bridge ${r.bridgeId}${rec}`);
550
+ }
551
+ }
552
+ if (recovers.length) {
553
+ console.log('\n RECOVERS (undeclared structural correspondence — worth a physicist\'s look):');
554
+ for (const r of recovers) {
555
+ console.log(` ${r.canonicalId.padEnd(26)} ~ bridge ${r.bridgeId} (same form up to a dimensionless factor)`);
556
+ }
557
+ }
558
+ console.log(`\n (${dimOnly.length} dimensional-only: same dimension, different form. Run \`upt canonical\` for the registry.)`);
559
+ }
560
+
484
561
  // ── dispatch ──────────────────────────────────────────────────────────────
485
562
  const [cmd, ...rest] = process.argv.slice(2);
486
563
  switch (cmd) {
@@ -493,6 +570,8 @@ switch (cmd) {
493
570
  case 'discover': case 'discovery': discoverCmd(); break;
494
571
  case 'connectors': case 'orphans': connectorsCmd(); break;
495
572
  case 'coverage': case 'grounding': coverageCmd(); break;
573
+ case 'canonical': case 'laws': canonicalCmd(); break;
574
+ case 'recover': case 'recovery': case 'validate': recoverCmd(); break;
496
575
  case 'symbolic': case 'compose-symbolic': await symbolicCmd(rest); break;
497
576
  case 'eval': case 'calc': await evalCmd(rest); break;
498
577
  case 'derive': case 'dim': await derive(rest); break;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Canonical (textbook) physics equations — the ground-truth L-layer of the
3
+ * universal tensor (Π = L + B + E). A `CanonicalEquation` is the *answer key*
4
+ * that bridge equations (the B-layer) are validated against; it is NOT a
5
+ * speculative claim.
6
+ *
7
+ * Entries carry whichever FIDELITY LEVELS they can:
8
+ * - L0 (mandatory) — `dimensional`: target dim + governing vars (+ monomial
9
+ * when dimensionally determined). Reproduced by the Buckingham-π engine.
10
+ * - L1 (optional) — `scalarAst`: an `ExprNode` RHS, validated dimensionally.
11
+ * - L2 (optional) — `fieldEquation`: a tensor/PDE predicate node.
12
+ *
13
+ * Epistemic honesty (review finding F1): an L0-only entry must never read as
14
+ * more than "dimensionally consistent". `epistemicStatus` is the highest claim
15
+ * the entry supports; `freeDimensionlessGroups > 0` means dimensions cannot pin
16
+ * the form. Consumers must not use an entry above its `epistemicStatus`.
17
+ *
18
+ * See `docs/planning/Canonical-Equation-Registry-A-Design.md`.
19
+ *
20
+ * @module canonical/canonical-equation
21
+ */
22
+ import type { ExprNode } from '../dimensional/validator.js';
23
+ import type { DimensionalVariable } from '../dimensional/buckingham.js';
24
+ import type { TensorIndices } from '../core/types.js';
25
+ import type { EinsteinFieldEquationNode } from '../dimensional/einstein-equation.js';
26
+ /** Physics domain — indexes the registry and (later) the discovery kind filter. */
27
+ export type CanonicalDomain = 'mechanics' | 'gravitation' | 'general-relativity' | 'cosmology' | 'electromagnetism' | 'quantum' | 'thermodynamics' | 'statistical' | 'information';
28
+ /**
29
+ * The strongest claim an entry supports:
30
+ * - `dimensional` — only the dimensional signature (L0).
31
+ * - `scalar-up-to-constant`— the algebraic form, leading constant aside (L1).
32
+ * - `fully-quantitative` — the complete relation incl. the constant.
33
+ */
34
+ export type EpistemicStatus = 'dimensional' | 'scalar-up-to-constant' | 'fully-quantitative';
35
+ /** A field-equation predicate node (L2). Concrete node kinds live in the
36
+ * dimensional layer; widen this union as Maxwell/Klein–Gordon nodes land. */
37
+ export type FieldEquationNode = EinsteinFieldEquationNode;
38
+ /** Disambiguators for forms that share a dimensional signature (finding F3). */
39
+ export interface CanonicalForms {
40
+ /** Bekenstein–Hawking depends on horizon AREA, not radius. */
41
+ readonly areaOrRadius?: 'area' | 'radius';
42
+ /** Landauer uses the NATURAL log. */
43
+ readonly logBase?: 'e' | '2' | '10';
44
+ /** Stefan–Boltzmann `j=σT⁴` is a FLUX; luminosity `L=σAT⁴` changes σ. */
45
+ readonly quantityKind?: 'flux' | 'power' | 'energy';
46
+ }
47
+ /** A canonical (textbook) physics equation. */
48
+ export interface CanonicalEquation {
49
+ /** Stable id, e.g. 'CE-newton-gravitation'. */
50
+ readonly id: string;
51
+ readonly name: string;
52
+ readonly domain: CanonicalDomain;
53
+ /** LaTeX rendering (display only). */
54
+ readonly formula_latex: string;
55
+ readonly epistemicStatus: EpistemicStatus;
56
+ /** 0 ⇒ the L0 monomial is fully determined; ≥1 ⇒ dimensions can't pin it. */
57
+ readonly freeDimensionlessGroups: number;
58
+ readonly dimensional: {
59
+ readonly target: DimensionalVariable;
60
+ readonly governing: readonly DimensionalVariable[];
61
+ /** Textbook monomial exponents, or null when there are free groups. */
62
+ readonly monomial: Readonly<Record<string, number>> | null;
63
+ };
64
+ readonly scalarAst?: ExprNode;
65
+ readonly fieldEquation?: FieldEquationNode;
66
+ readonly forms?: CanonicalForms;
67
+ /** L-layer cell coordinates. */
68
+ readonly regime: TensorIndices;
69
+ /** Implicit regime assumptions (e.g. 'blackbody equilibrium'). */
70
+ readonly assumptions: readonly string[];
71
+ readonly references: readonly string[];
72
+ /** Bridges this law is the intended correspondence partner for (advisory;
73
+ * the check itself is Sub-project B). */
74
+ readonly partnerBridges: readonly string[];
75
+ /** Set when this law is LITERALLY a bridge's own relation (BH≡BE-21, …);
76
+ * Sub-project B uses it to discount the trivial X≡X match (finding F4). */
77
+ readonly restatesBridge?: string;
78
+ }
79
+ //# sourceMappingURL=canonical-equation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-equation.d.ts","sourceRoot":"","sources":["../../src/canonical/canonical-equation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAErF,mFAAmF;AACnF,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,aAAa,GACb,oBAAoB,GACpB,WAAW,GACX,kBAAkB,GAClB,SAAS,GACT,gBAAgB,GAChB,aAAa,GACb,aAAa,CAAC;AAElB;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,uBAAuB,GACvB,oBAAoB,CAAC;AAEzB;8EAC8E;AAC9E,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAE1D,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1C,qCAAqC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;IACpC,yEAAyE;IACzE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;CACrD;AAED,+CAA+C;AAC/C,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,sCAAsC;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAG/B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,6EAA6E;IAC7E,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAGzC,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;QACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;QACnD,uEAAuE;QACvE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;KAC5D,CAAC;IAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAG3C,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC;IAGhC,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;8CAC0C;IAC1C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C;gFAC4E;IAC5E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=canonical-equation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-equation.js","sourceRoot":"","sources":["../../src/canonical/canonical-equation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { DimensionalVariable } from '../dimensional/buckingham.js';
2
+ /** L0 dimensional fields derived from the engine. */
3
+ export declare function dimensionalFields(target: DimensionalVariable, governing: readonly DimensionalVariable[]): {
4
+ monomial: Record<string, number> | null;
5
+ freeDimensionlessGroups: number;
6
+ };
7
+ //# sourceMappingURL=dimensional-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimensional-fields.d.ts","sourceRoot":"","sources":["../../src/canonical/dimensional-fields.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,mBAAmB,EAAE,GACxC;IACD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACxC,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAaA"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Compute the L0 dimensional fields of a canonical entry FROM the Buckingham-π
3
+ * engine, so `monomial` and `freeDimensionlessGroups` are always mutually
4
+ * consistent and never hand-asserted (HonestClaude).
5
+ *
6
+ * The two are consistent by construction: the target monomial is unique iff the
7
+ * governing set has no free dimensionless group, so
8
+ * `monomial !== null ⟺ freeDimensionlessGroups === 0`.
9
+ * Equations whose form dimensions CANNOT pin (Newton `F=Gm₁m₂/r²` — a free
10
+ * mass-ratio group; Bekenstein–Hawking — a free `c³A/Għ` group) get
11
+ * `monomial: null, freeDimensionlessGroups ≥ 1`; their scalar-AST (L1) carries
12
+ * the form dimensions can't.
13
+ *
14
+ * @module canonical/dimensional-fields
15
+ */
16
+ import { dimensionallyDetermines, buckinghamPi, } from '../dimensional/buckingham.js';
17
+ /** L0 dimensional fields derived from the engine. */
18
+ export function dimensionalFields(target, governing) {
19
+ const det = dimensionallyDetermines(target, governing);
20
+ const gPi = governing.length > 0 ? buckinghamPi([...governing]).piGroupCount : 0;
21
+ // Keep the invariant `monomial !== null ⟺ freeDimensionlessGroups === 0`
22
+ // UNCONDITIONALLY true: when the target is not in the governing span,
23
+ // `determined` is false yet `gPi` may be 0 — force ≥1 so null monomial always
24
+ // reports a free group.
25
+ const freeDimensionlessGroups = det.determined ? gPi : Math.max(1, gPi);
26
+ return {
27
+ monomial: det.determined ? { ...det.monomial } : null,
28
+ freeDimensionlessGroups,
29
+ };
30
+ }
31
+ //# sourceMappingURL=dimensional-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimensional-fields.js","sourceRoot":"","sources":["../../src/canonical/dimensional-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,uBAAuB,EACvB,YAAY,GACb,MAAM,8BAA8B,CAAC;AAGtC,qDAAqD;AACrD,MAAM,UAAU,iBAAiB,CAC/B,MAA2B,EAC3B,SAAyC;IAKzC,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,GAAG,GACP,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,yEAAyE;IACzE,sEAAsE;IACtE,8EAA8E;IAC9E,wBAAwB;IACxB,MAAM,uBAAuB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxE,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,QAAS,EAAE,CAAC,CAAC,CAAC,IAAI;QACtD,uBAAuB;KACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Shared builders for L1 (scalar-AST) canonical entries. Keeps the entry files
3
+ * declarative: `op`/`pow` assemble the `ExprNode`, and `l1` derives the L0
4
+ * fields from the Buckingham engine so `monomial` and `freeDimensionlessGroups`
5
+ * are always consistent.
6
+ *
7
+ * @module canonical/entries/_l1-build
8
+ */
9
+ import type { CanonicalEquation } from '../canonical-equation.js';
10
+ import type { ExprNode } from '../../dimensional/validator.js';
11
+ import type { Dimension } from '../../dimensional/types.js';
12
+ import type { DimensionalVariable } from '../../dimensional/buckingham.js';
13
+ /** Dimension builder. Arg order is (L, M, T, **I**, **Θ**) — note I precedes Θ. */
14
+ export declare const dim: (L?: number, M?: number, T?: number, I?: number, Theta?: number) => Dimension;
15
+ export declare const op: (o: "+" | "-" | "*" | "/" | "^", args: ExprNode[]) => ExprNode;
16
+ /** `base` raised to the numeric-literal power `n` (a dimensionless exponent). */
17
+ export declare const pow: (base: ExprNode, n: string) => ExprNode;
18
+ /** Everything an L1 entry declares except the engine-derived L0 fields. */
19
+ export type L1Rest = Omit<CanonicalEquation, 'freeDimensionlessGroups' | 'dimensional'>;
20
+ /** Build an L1 entry; L0 fields are derived from the engine for consistency. */
21
+ export declare const l1: (target: DimensionalVariable, governing: readonly DimensionalVariable[], rest: L1Rest) => CanonicalEquation;
22
+ //# sourceMappingURL=_l1-build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_l1-build.d.ts","sourceRoot":"","sources":["../../../src/canonical/entries/_l1-build.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAK3E,mFAAmF;AACnF,eAAO,MAAM,GAAG,GAAI,UAAK,EAAE,UAAK,EAAE,UAAK,EAAE,UAAK,EAAE,cAAS,KAAG,SAQ1D,CAAC;AAEH,eAAO,MAAM,EAAE,GACb,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAC9B,MAAM,QAAQ,EAAE,KACf,QAAyC,CAAC;AAE7C,iFAAiF;AACjF,eAAO,MAAM,GAAG,GAAI,MAAM,QAAQ,EAAE,GAAG,MAAM,KAAG,QACR,CAAC;AAEzC,2EAA2E;AAC3E,MAAM,MAAM,MAAM,GAAG,IAAI,CACvB,iBAAiB,EACjB,yBAAyB,GAAG,aAAa,CAC1C,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,EAAE,GACb,QAAQ,mBAAmB,EAC3B,WAAW,SAAS,mBAAmB,EAAE,EACzC,MAAM,MAAM,KACX,iBAUF,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { DIMENSIONLESS } from '../../dimensional/types.js';
2
+ import { sym } from '../../bridges/equations/_be-helpers.js';
3
+ import { dimensionalFields } from '../dimensional-fields.js';
4
+ /** Dimension builder. Arg order is (L, M, T, **I**, **Θ**) — note I precedes Θ. */
5
+ export const dim = (L = 0, M = 0, T = 0, I = 0, Theta = 0) => ({
6
+ L,
7
+ M,
8
+ T,
9
+ I,
10
+ Theta,
11
+ N: 0,
12
+ J: 0,
13
+ });
14
+ export const op = (o, args) => ({ kind: 'op', op: o, args });
15
+ /** `base` raised to the numeric-literal power `n` (a dimensionless exponent). */
16
+ export const pow = (base, n) => op('^', [base, sym(n, DIMENSIONLESS)]);
17
+ /** Build an L1 entry; L0 fields are derived from the engine for consistency. */
18
+ export const l1 = (target, governing, rest) => {
19
+ const { monomial, freeDimensionlessGroups } = dimensionalFields(target, governing);
20
+ return {
21
+ ...rest,
22
+ freeDimensionlessGroups,
23
+ dimensional: { target, governing, monomial },
24
+ };
25
+ };
26
+ //# sourceMappingURL=_l1-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_l1-build.js","sourceRoot":"","sources":["../../../src/canonical/entries/_l1-build.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,wCAAwC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,mFAAmF;AACnF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAa,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,KAAK;IACL,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;CACL,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,EAAE,GAAG,CAChB,CAA8B,EAC9B,IAAgB,EACN,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7C,iFAAiF;AACjF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAc,EAAE,CAAS,EAAY,EAAE,CACzD,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAQzC,gFAAgF;AAChF,MAAM,CAAC,MAAM,EAAE,GAAG,CAChB,MAA2B,EAC3B,SAAyC,EACzC,IAAY,EACO,EAAE;IACrB,MAAM,EAAE,QAAQ,EAAE,uBAAuB,EAAE,GAAG,iBAAiB,CAC7D,MAAM,EACN,SAAS,CACV,CAAC;IACF,OAAO;QACL,GAAG,IAAI;QACP,uBAAuB;QACvB,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;KAC7C,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * L0 (dimensional) canonical entries — the 9 textbook equations recovered by
3
+ * the Buckingham-π engine (promoted from the dimensional-derivation benchmark).
4
+ * Dimensions give the monomial exponents only, never the leading constant, so
5
+ * every entry here is `epistemicStatus: 'dimensional'`.
6
+ *
7
+ * @module canonical/entries/dimensional-classics
8
+ */
9
+ import type { CanonicalEquation } from '../canonical-equation.js';
10
+ export declare const DIMENSIONAL_CLASSICS: readonly CanonicalEquation[];
11
+ //# sourceMappingURL=dimensional-classics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimensional-classics.d.ts","sourceRoot":"","sources":["../../../src/canonical/entries/dimensional-classics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAiDlE,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EA6K5D,CAAC"}
@@ -0,0 +1,194 @@
1
+ import { LENGTH, TIME, MASS, VELOCITY, ACCELERATION, FORCE, ACTION, ENTROPY, TEMPERATURE, } from '../../dimensional/types.js';
2
+ /** Local builder for composite dims not exported as named constants. */
3
+ const dim = (L = 0, M = 0, T = 0, I = 0, Theta = 0) => ({
4
+ L,
5
+ M,
6
+ T,
7
+ I,
8
+ Theta,
9
+ N: 0,
10
+ J: 0,
11
+ });
12
+ const G = dim(3, -1, -2); // Newton's constant [L³ M⁻¹ T⁻²]
13
+ const LIN_DENSITY = dim(-1, 1, 0); // mass per length [L⁻¹ M]
14
+ /** Shared shape for an L0 classic (no L1/L2, fully dimensionally determined). */
15
+ const l0 = (e) => ({
16
+ epistemicStatus: 'dimensional',
17
+ freeDimensionlessGroups: 0,
18
+ ...e,
19
+ });
20
+ export const DIMENSIONAL_CLASSICS = [
21
+ l0({
22
+ id: 'CE-pendulum-period',
23
+ name: 'Pendulum period',
24
+ domain: 'mechanics',
25
+ formula_latex: 'T = 2\\pi\\sqrt{L/g}',
26
+ dimensional: {
27
+ target: { name: 'period', dim: TIME },
28
+ governing: [
29
+ { name: 'length', dim: LENGTH },
30
+ { name: 'gravity', dim: ACCELERATION },
31
+ ],
32
+ monomial: { length: 0.5, gravity: -0.5 },
33
+ },
34
+ regime: { scale: 'classical', force: 'gravitational' },
35
+ assumptions: ['small-angle', 'point mass', 'rigid massless rod'],
36
+ references: ['Taylor, Classical Mechanics §1'],
37
+ partnerBridges: [],
38
+ }),
39
+ l0({
40
+ id: 'CE-kepler-third',
41
+ name: "Kepler's third law",
42
+ domain: 'gravitation',
43
+ formula_latex: 'T^2 = 4\\pi^2 a^3/(GM)',
44
+ dimensional: {
45
+ target: { name: 'period', dim: TIME },
46
+ governing: [
47
+ { name: 'semi-major-axis', dim: LENGTH },
48
+ { name: 'G', dim: G },
49
+ { name: 'mass', dim: MASS },
50
+ ],
51
+ monomial: { 'semi-major-axis': 1.5, G: -0.5, mass: -0.5 },
52
+ },
53
+ regime: { scale: 'classical', force: 'gravitational' },
54
+ assumptions: ['two-body', 'M ≫ m'],
55
+ references: ['Kepler 1619; any celestial-mechanics text'],
56
+ partnerBridges: [],
57
+ }),
58
+ l0({
59
+ id: 'CE-schwarzschild-radius',
60
+ name: 'Schwarzschild radius',
61
+ domain: 'general-relativity',
62
+ formula_latex: 'r_s = 2GM/c^2',
63
+ dimensional: {
64
+ target: { name: 'radius', dim: LENGTH },
65
+ governing: [
66
+ { name: 'mass', dim: MASS },
67
+ { name: 'G', dim: G },
68
+ { name: 'c', dim: VELOCITY },
69
+ ],
70
+ monomial: { mass: 1, G: 1, c: -2 },
71
+ },
72
+ regime: { force: 'gravitational' },
73
+ assumptions: ['static', 'spherically symmetric', 'vacuum'],
74
+ references: ['Schwarzschild 1916'],
75
+ partnerBridges: [],
76
+ }),
77
+ l0({
78
+ id: 'CE-string-wave-speed',
79
+ name: 'Wave speed on a string',
80
+ domain: 'mechanics',
81
+ formula_latex: 'v = \\sqrt{F/\\mu}',
82
+ dimensional: {
83
+ target: { name: 'speed', dim: VELOCITY },
84
+ governing: [
85
+ { name: 'tension', dim: FORCE },
86
+ { name: 'linear-density', dim: LIN_DENSITY },
87
+ ],
88
+ monomial: { tension: 0.5, 'linear-density': -0.5 },
89
+ },
90
+ regime: { scale: 'classical' },
91
+ assumptions: ['ideal flexible string', 'small amplitude'],
92
+ references: ['Any waves/mechanics text'],
93
+ partnerBridges: [],
94
+ }),
95
+ l0({
96
+ id: 'CE-planck-length',
97
+ name: 'Planck length',
98
+ domain: 'quantum',
99
+ formula_latex: '\\ell_P = \\sqrt{\\hbar G/c^3}',
100
+ dimensional: {
101
+ target: { name: 'planck-length', dim: LENGTH },
102
+ governing: [
103
+ { name: 'hbar', dim: ACTION },
104
+ { name: 'G', dim: G },
105
+ { name: 'c', dim: VELOCITY },
106
+ ],
107
+ monomial: { hbar: 0.5, G: 0.5, c: -1.5 },
108
+ },
109
+ regime: { scale: 'quantum', force: 'gravitational' },
110
+ assumptions: [],
111
+ references: ['Planck 1899'],
112
+ partnerBridges: [],
113
+ }),
114
+ l0({
115
+ id: 'CE-planck-mass',
116
+ name: 'Planck mass',
117
+ domain: 'quantum',
118
+ formula_latex: 'm_P = \\sqrt{\\hbar c/G}',
119
+ dimensional: {
120
+ target: { name: 'planck-mass', dim: MASS },
121
+ governing: [
122
+ { name: 'hbar', dim: ACTION },
123
+ { name: 'c', dim: VELOCITY },
124
+ { name: 'G', dim: G },
125
+ ],
126
+ monomial: { hbar: 0.5, c: 0.5, G: -0.5 },
127
+ },
128
+ regime: { scale: 'quantum', force: 'gravitational' },
129
+ assumptions: [],
130
+ references: ['Planck 1899'],
131
+ partnerBridges: ['41'], // 41 = Swampland Distance Conjecture ([mass])
132
+ }),
133
+ l0({
134
+ id: 'CE-planck-time',
135
+ name: 'Planck time',
136
+ domain: 'quantum',
137
+ formula_latex: 't_P = \\sqrt{\\hbar G/c^5}',
138
+ dimensional: {
139
+ target: { name: 'planck-time', dim: TIME },
140
+ governing: [
141
+ { name: 'hbar', dim: ACTION },
142
+ { name: 'G', dim: G },
143
+ { name: 'c', dim: VELOCITY },
144
+ ],
145
+ monomial: { hbar: 0.5, G: 0.5, c: -2.5 },
146
+ },
147
+ regime: { scale: 'quantum', force: 'gravitational' },
148
+ assumptions: [],
149
+ references: ['Planck 1899'],
150
+ partnerBridges: [],
151
+ }),
152
+ l0({
153
+ id: 'CE-compton-wavelength',
154
+ name: 'Compton wavelength',
155
+ domain: 'quantum',
156
+ formula_latex: '\\lambda_C = \\hbar/(mc)',
157
+ dimensional: {
158
+ target: { name: 'compton-wavelength', dim: LENGTH },
159
+ governing: [
160
+ { name: 'hbar', dim: ACTION },
161
+ { name: 'mass', dim: MASS },
162
+ { name: 'c', dim: VELOCITY },
163
+ ],
164
+ monomial: { hbar: 1, mass: -1, c: -1 },
165
+ },
166
+ regime: { scale: 'quantum' },
167
+ assumptions: [],
168
+ references: ['Compton 1923'],
169
+ partnerBridges: [],
170
+ }),
171
+ l0({
172
+ id: 'CE-thermal-de-broglie',
173
+ name: 'Thermal de Broglie wavelength',
174
+ domain: 'statistical',
175
+ formula_latex: '\\lambda \\propto \\hbar/\\sqrt{m k_B T}',
176
+ dimensional: {
177
+ target: { name: 'thermal-wavelength', dim: LENGTH },
178
+ governing: [
179
+ { name: 'hbar', dim: ACTION },
180
+ { name: 'mass', dim: MASS },
181
+ { name: 'boltzmann', dim: ENTROPY },
182
+ { name: 'temperature', dim: TEMPERATURE },
183
+ ],
184
+ monomial: { hbar: 1, mass: -0.5, boltzmann: -0.5, temperature: -0.5 },
185
+ },
186
+ regime: { scale: 'quantum' },
187
+ assumptions: ['non-relativistic', 'ideal gas'],
188
+ references: ['Any statistical-mechanics text'],
189
+ // 12 = Caldeira-Leggett dephasing length: same [length] target, a candidate
190
+ // correspondence — NOT a literal restatement, so no restatesBridge.
191
+ partnerBridges: ['12'],
192
+ }),
193
+ ];
194
+ //# sourceMappingURL=dimensional-classics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimensional-classics.js","sourceRoot":"","sources":["../../../src/canonical/entries/dimensional-classics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * L1 (scalar-AST) canonical entries — gravitation + thermodynamics. Each
3
+ * carries a dimensionally-validated `ExprNode` form; L0 fields are derived from
4
+ * the engine via `dimensionalFields`. Forms with a free dimensionless group
5
+ * (Newton, Bekenstein–Hawking) have `monomial: null` — the scalar-AST is what
6
+ * pins them, which is exactly the point of the L1 layer.
7
+ *
8
+ * @module canonical/entries/l1-gravity-thermo
9
+ */
10
+ import type { CanonicalEquation } from '../canonical-equation.js';
11
+ export declare const L1_GRAVITY_THERMO: readonly CanonicalEquation[];
12
+ //# sourceMappingURL=l1-gravity-thermo.d.ts.map