universal-physics-tensor 0.22.0 → 0.24.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 (81) hide show
  1. package/README.md +30 -15
  2. package/bin/upt.mjs +127 -21
  3. package/dist/bridges/equations/_be-helpers.d.ts +1 -66
  4. package/dist/bridges/equations/_be-helpers.d.ts.map +1 -1
  5. package/dist/bridges/equations/_be-helpers.js +7 -83
  6. package/dist/bridges/equations/_be-helpers.js.map +1 -1
  7. package/dist/canonical/entries/l1-gravity-thermo.d.ts.map +1 -1
  8. package/dist/canonical/entries/l1-gravity-thermo.js +42 -5
  9. package/dist/canonical/entries/l1-gravity-thermo.js.map +1 -1
  10. package/dist/canonical/entries/l1-quantum-em.js +1 -1
  11. package/dist/canonical/entries/l1-quantum-em.js.map +1 -1
  12. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  13. package/dist/canonical/entries/relativity.js +76 -2
  14. package/dist/canonical/entries/relativity.js.map +1 -1
  15. package/dist/canonical/normal-form.d.ts +10 -4
  16. package/dist/canonical/normal-form.d.ts.map +1 -1
  17. package/dist/canonical/normal-form.js +32 -2
  18. package/dist/canonical/normal-form.js.map +1 -1
  19. package/dist/canonical/registry.d.ts +7 -0
  20. package/dist/canonical/registry.d.ts.map +1 -1
  21. package/dist/canonical/registry.js +9 -0
  22. package/dist/canonical/registry.js.map +1 -1
  23. package/dist/composition/canonical-graph.d.ts +77 -0
  24. package/dist/composition/canonical-graph.d.ts.map +1 -0
  25. package/dist/composition/canonical-graph.js +155 -0
  26. package/dist/composition/canonical-graph.js.map +1 -0
  27. package/dist/composition/compose.d.ts.map +1 -1
  28. package/dist/composition/compose.js +14 -0
  29. package/dist/composition/compose.js.map +1 -1
  30. package/dist/composition/discovery.d.ts +10 -0
  31. package/dist/composition/discovery.d.ts.map +1 -1
  32. package/dist/composition/discovery.js +50 -7
  33. package/dist/composition/discovery.js.map +1 -1
  34. package/dist/composition/edges/calibration.d.ts.map +1 -1
  35. package/dist/composition/edges/calibration.js +53 -0
  36. package/dist/composition/edges/calibration.js.map +1 -1
  37. package/dist/composition/edges/catalog-full.d.ts.map +1 -1
  38. package/dist/composition/edges/catalog-full.js +33 -1
  39. package/dist/composition/edges/catalog-full.js.map +1 -1
  40. package/dist/composition/index.d.ts +1 -0
  41. package/dist/composition/index.d.ts.map +1 -1
  42. package/dist/composition/index.js +1 -0
  43. package/dist/composition/index.js.map +1 -1
  44. package/dist/composition/proposed-bridges.d.ts +218 -0
  45. package/dist/composition/proposed-bridges.d.ts.map +1 -0
  46. package/dist/composition/proposed-bridges.js +499 -0
  47. package/dist/composition/proposed-bridges.js.map +1 -0
  48. package/dist/composition/representative-values.d.ts +9 -3
  49. package/dist/composition/representative-values.d.ts.map +1 -1
  50. package/dist/composition/representative-values.js +34 -3
  51. package/dist/composition/representative-values.js.map +1 -1
  52. package/dist/composition/retrodiction.d.ts +13 -0
  53. package/dist/composition/retrodiction.d.ts.map +1 -1
  54. package/dist/composition/retrodiction.js +7 -1
  55. package/dist/composition/retrodiction.js.map +1 -1
  56. package/dist/composition/symbolic-constants.d.ts.map +1 -1
  57. package/dist/composition/symbolic-constants.js +1 -0
  58. package/dist/composition/symbolic-constants.js.map +1 -1
  59. package/dist/core/cell.d.ts +1 -23
  60. package/dist/core/cell.d.ts.map +1 -1
  61. package/dist/core/cell.js +0 -31
  62. package/dist/core/cell.js.map +1 -1
  63. package/dist/core/tensor.d.ts +27 -1
  64. package/dist/core/tensor.d.ts.map +1 -1
  65. package/dist/core/tensor.js +35 -0
  66. package/dist/core/tensor.js.map +1 -1
  67. package/dist/index.d.ts +2 -1
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +5 -1
  70. package/dist/index.js.map +1 -1
  71. package/dist/numerical/grid-field.d.ts +7 -17
  72. package/dist/numerical/grid-field.d.ts.map +1 -1
  73. package/dist/numerical/input-validation.d.ts +56 -0
  74. package/dist/numerical/input-validation.d.ts.map +1 -0
  75. package/dist/numerical/input-validation.js +75 -0
  76. package/dist/numerical/input-validation.js.map +1 -0
  77. package/dist/numerical/klein-gordon.js +1 -1
  78. package/dist/numerical/klein-gordon.js.map +1 -1
  79. package/dist/numerical/types.d.ts +18 -1
  80. package/dist/numerical/types.d.ts.map +1 -1
  81. package/package.json +2 -2
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Identity-consequence surfacer — turns a `promising` discovery identification
3
+ * into the ONE algebraic relation it implies, as an UNADJUDICATED proposal.
4
+ *
5
+ * When the discovery funnel flags `a ≟ b` (two canonical quantities of equal
6
+ * dimension), and `a`, `b` are the TARGETS of two canonical equations `Eₐ`, `E_b`,
7
+ * the hypothesised identity `a ≡ b` makes their right-hand sides equal:
8
+ *
9
+ * Eₐ.scalarAst = E_b.scalarAst
10
+ *
11
+ * Eliminating (isolating) one free variable yields a relation among the union of
12
+ * the two governing sets — e.g. Landauer `k_B T ln2` ≟ Planck–Einstein `h ν`
13
+ * gives `ν = (k_B ln2 / h) · T`, the "Landauer photon".
14
+ *
15
+ * CRITICAL — this is NOT new physics and NOT a bridge. It is the algebraic
16
+ * consequence of an UNADJUDICATED identification, surfaced for a physicist to
17
+ * judge (Part-VI §XXVII-B: the enumerator proposes, humans dispose). Every
18
+ * emitted record carries `status: 'unadjudicated'` — a literal that is NOT a
19
+ * member of `BridgeEquationStatus`, so a proposal can never be assigned where a
20
+ * catalog entry is expected. The generator NEVER writes `BRIDGE_EQUATIONS` and a
21
+ * proposal is NEVER added to `CANONICAL_GRAPH` (no coincidence-amplifying loop).
22
+ *
23
+ * Scope (v0.24.0 pilot): canonical-only `promising` candidates whose BOTH source
24
+ * equations (a) have a non-null `dimensional.monomial` (determinate) and (b) are
25
+ * `epistemicStatus: 'fully-quantitative'` (so the eliminated prefactor is a
26
+ * closed numeric constant, not an operator-valued stub — this gates out
27
+ * `CE-jarzynski`). See `docs/planning/v0.24.0-{Design,Review-Findings}.md`.
28
+ *
29
+ * INTERNAL tooling — deliberately NOT re-exported from `src/index.ts`.
30
+ *
31
+ * @module composition/proposed-bridges
32
+ */
33
+ import type { ExprNode } from '../dimensional/validator.js';
34
+ import type { Dimension } from '../dimensional/types.js';
35
+ import type { DimensionalVariable } from '../dimensional/buckingham.js';
36
+ import type { BridgeEquationStatus } from '../bridges/index.js';
37
+ import type { KnownIssue } from '../bridges/index.js';
38
+ import type { VettedCandidate } from './discovery.js';
39
+ /** A flat monomial: leaf name → its dimension and (signed, possibly rational)
40
+ * exponent. `k_B·T·ln2 / h` ⇒ {k_B:+1, T:+1, ln2:+1, h:-1}. */
41
+ type Mono = Map<string, {
42
+ dim: Dimension;
43
+ exp: number;
44
+ }>;
45
+ /** Thrown when an AST is not a product / quotient / integer-power of symbols. */
46
+ export declare class NotAMonomialError extends Error {
47
+ constructor(message: string);
48
+ }
49
+ /**
50
+ * Decompose a flat-monomial `ExprNode` into a leaf→exponent map. Throws
51
+ * `NotAMonomialError` on sums, differences, or non-symbol bases — this is the
52
+ * AST-level monomial gate.
53
+ */
54
+ export declare function toMonomial(ast: ExprNode): Mono;
55
+ /** Rebuild a flat-monomial `ExprNode` from a leaf→exponent map (numerator =
56
+ * positive exponents, denominator = negative). Zero exponents drop out. */
57
+ export declare function fromMonomial(m: Mono): ExprNode;
58
+ /**
59
+ * A machine-DERIVED candidate bridge — the MATH ONLY. The algebraic consequence
60
+ * of an UNADJUDICATED identification; never a status claim. Structurally distinct
61
+ * from `BridgeEquationEntry` (omits every physics-judgment field) and carries the
62
+ * literal `status: 'unadjudicated'`, which is NOT a `BridgeEquationStatus`.
63
+ *
64
+ * @internal
65
+ */
66
+ export interface ProposedBridge {
67
+ /** `IC-<sorted-a>--<sorted-b>--<solvedFor>`. */
68
+ readonly id: string;
69
+ readonly derivedFrom: {
70
+ readonly identification: {
71
+ readonly a: string;
72
+ readonly b: string;
73
+ readonly dim: string;
74
+ };
75
+ readonly sourceEquationIds: readonly [string, string];
76
+ readonly solvedFor: string;
77
+ };
78
+ readonly target: DimensionalVariable;
79
+ /** Free (non-constant) inputs of the derived relation. */
80
+ readonly governing: readonly DimensionalVariable[];
81
+ readonly formulaLatex: string;
82
+ /** Dimensionally-VALIDATED derived RHS (round-trips to `dimensionalSignature`). */
83
+ readonly scalarAst: ExprNode;
84
+ /** `format()` of the inferred dimension — same convention as the catalog. */
85
+ readonly dimensionalSignature: string;
86
+ /** Mechanical derivation description — NO physics claim. */
87
+ readonly provenance: string;
88
+ /** Other identifications that derive the SAME relation (same normal form, up
89
+ * to dimensionless constants), collapsed into this proposal by the dedup pass.
90
+ * Empty unless a wider candidate scope produced structural duplicates. */
91
+ readonly alsoDerivableFrom: readonly string[];
92
+ /** ALWAYS the literal 'unadjudicated'. NOT a BridgeEquationStatus. */
93
+ readonly status: 'unadjudicated';
94
+ /** Numerically evaluate the derived RHS; constants auto-resolve, supply the
95
+ * free `governing` leaves (e.g. `{ T: 300 }`). */
96
+ evaluate(values: Readonly<Record<string, number>>): number;
97
+ }
98
+ /**
99
+ * An admissible source for the elimination: a target name backed by a flat
100
+ * monomial `scalarAst` whose prefactor is a closed constant. Canonical equations
101
+ * and bridge edges both project to this shape, so the generator no longer needs
102
+ * to know which it came from.
103
+ */
104
+ export interface EquationSource {
105
+ /** `CE-…` (canonical) or `BE-<n>` (bridge). */
106
+ readonly id: string;
107
+ readonly kind: 'canonical' | 'bridge';
108
+ readonly scalarAst: ExprNode;
109
+ readonly targetDim: Dimension;
110
+ /** `epistemicStatus` (canonical) or `confidence` (bridge) — recorded, not gated. */
111
+ readonly grade: string;
112
+ }
113
+ /** ALL admissible sources for `name` — every canonical equation AND every bridge
114
+ * edge whose target is `name` and whose form is a clean monomial. A target with
115
+ * several sources (e.g. BE-42 Hawking's two parametrisations) is DE-AMBIGUATED by
116
+ * enumeration, not skipped; coinciding derivations collapse later under dedup. */
117
+ export declare function resolveSources(name: string): EquationSource[];
118
+ /**
119
+ * Derive the implied relation for each `promising` identification in `candidates`.
120
+ * Returns ONE proposal per admissible candidate (Adam M2), structurally
121
+ * de-duplicated (`dedupByNormalForm`).
122
+ *
123
+ * Candidate-set-agnostic: pass `rankDiscoveries(CANONICAL_GRAPH)` (default),
124
+ * `…(CATALOG_GRAPH)`, or `…([...CATALOG_GRAPH, ...CANONICAL_GRAPH])` to widen the
125
+ * source — the CLI `discover --derive` forwards whichever `--source=` graph is
126
+ * selected. Each endpoint is resolved by `resolveSource` to a canonical equation
127
+ * OR a bridge edge with a clean-monomial `symbolic` form, so a candidate yields a
128
+ * proposal when BOTH endpoints resolve (the Landauer photon, for instance, is
129
+ * derivable both from `CE-landauer` and — at `--source=both` — from the BE-16
130
+ * bridge). A target with SEVERAL admissible sources (BE-42 Hawking's two
131
+ * parametrisations, or a canonical + bridge pair) is de-ambiguated by ENUMERATION
132
+ * — every source pair is tried and coincidences collapse under dedup. HONEST
133
+ * BOUNDARY: an endpoint with no clean-monomial source (a bridge with no `symbolic`
134
+ * form or a non-monomial one) yields nothing.
135
+ *
136
+ * Pure; reads the registries, writes nothing.
137
+ *
138
+ * @internal
139
+ */
140
+ export declare function deriveProposedBridges(candidates?: readonly VettedCandidate[]): readonly ProposedBridge[];
141
+ /**
142
+ * Collapse proposals that derive the SAME relation — equal `normalForm` (up to
143
+ * dimensionless constants) AND equal target dimension — into the first, recording
144
+ * the others' identifications in `alsoDerivableFrom`. Distinct stubs do NOT
145
+ * collapse (e.g. Landauer's dropped `ln2` vs an operator stub hash differently),
146
+ * so this only merges genuine structural twins that a wider candidate scope can
147
+ * produce (Design §9 #2). Deterministic: input order is preserved.
148
+ */
149
+ export declare function dedupByNormalForm(proposals: readonly ProposedBridge[]): readonly ProposedBridge[];
150
+ /** The human inputs a proposal CANNOT supply — fabricating them is forbidden. */
151
+ export interface PromotionEvidence {
152
+ /** Literature anchor establishing the relation (appears / contradicts / neither). */
153
+ readonly citation: string;
154
+ /** Human-chosen catalog status — never defaulted. */
155
+ readonly status: BridgeEquationStatus;
156
+ /** Path to the recorded adversarial + literature review. */
157
+ readonly reviewRef: string;
158
+ }
159
+ /** A review-ready promotion request — the artifact a human turns into a catalog
160
+ * entry. Holding one does NOT mutate `BRIDGE_EQUATIONS`. */
161
+ export interface PromotionRequest {
162
+ readonly proposal: ProposedBridge;
163
+ readonly evidence: PromotionEvidence;
164
+ }
165
+ export declare class MissingEvidenceError extends Error {
166
+ constructor(message: string);
167
+ }
168
+ /**
169
+ * Gate a proposal toward the catalog. THROWS `MissingEvidenceError` unless every
170
+ * human input is present and non-blank (operationalises "null, not guessed").
171
+ * Returns a `PromotionRequest`; it deliberately does NOT synthesise a
172
+ * `BridgeEquationEntry` — the physics-judgment fields are human work.
173
+ *
174
+ * @internal
175
+ */
176
+ export declare function promoteProposal(proposal: ProposedBridge, evidence: PromotionEvidence): PromotionRequest;
177
+ /**
178
+ * A derived proposal in the catalog's field SHAPE, for review — but in its OWN
179
+ * registry and carrying `status: 'unadjudicated'` (NOT a `BridgeEquationStatus`).
180
+ * This is deliberately NOT a `BridgeEquationEntry`: it omits the spec-only fields
181
+ * (`source_part`/`source_section`/numeric `id`) and never enters `BRIDGE_EQUATIONS`,
182
+ * which stays the faithful 44-bridge encoding of the specification.
183
+ *
184
+ * @internal
185
+ */
186
+ export interface ProposedBridgeEntry {
187
+ readonly id: string;
188
+ readonly name: string;
189
+ readonly category: 'Z';
190
+ readonly category_name: 'Machine-Derived Identity Consequences (UNADJUDICATED)';
191
+ /** The two regimes bridged — the source equations' domains. */
192
+ readonly bridges: readonly [string, string];
193
+ /** ALWAYS 'unadjudicated' — not a catalog status. */
194
+ readonly status: 'unadjudicated';
195
+ readonly context: string;
196
+ readonly formula_latex: string;
197
+ readonly dimensional_signature: string;
198
+ /** Honest references: a derivation note + the SOURCE equations' citations,
199
+ * never a fabricated citation for the derived relation itself. */
200
+ readonly references: readonly string[];
201
+ readonly known_issues: readonly KnownIssue[];
202
+ readonly derivedFrom: ProposedBridge['derivedFrom'];
203
+ readonly notes: string;
204
+ }
205
+ /** Render a `ProposedBridge` into the catalog field-shape, filled honestly. */
206
+ export declare function toProposedEntry(p: ProposedBridge): ProposedBridgeEntry;
207
+ /**
208
+ * The PROPOSED-BRIDGE review surface: derived identity-consequences in the
209
+ * catalog's field shape, in their OWN registry, every entry `status:
210
+ * 'unadjudicated'`. Separate from `BRIDGE_EQUATIONS` (the faithful 44-bridge spec
211
+ * encoding), which this never mutates. Default scope: canonical-only — widen with
212
+ * `deriveProposedBridges(rankDiscoveries(graph)).map(toProposedEntry)`.
213
+ *
214
+ * @internal
215
+ */
216
+ export declare const PROPOSED_BRIDGES: readonly ProposedBridgeEntry[];
217
+ export {};
218
+ //# sourceMappingURL=proposed-bridges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposed-bridges.d.ts","sourceRoot":"","sources":["../../src/composition/proposed-bridges.ts"],"names":[],"mappings":"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"}