universal-physics-tensor 9.0.0 → 10.0.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 (824) hide show
  1. package/README.md +19 -16
  2. package/data/atlas/atlas.json +55 -44
  3. package/data/atlas/atlas.jsonld +1 -1
  4. package/data/atlas/diffusion.json +19 -18
  5. package/data/atlas/oscillators.json +15 -10
  6. package/data/atlas/waves.json +23 -18
  7. package/data/bridge-catalog.json +886 -1473
  8. package/data/bridge-catalog.schema.json +349 -132
  9. package/data/quantities.json +53 -19
  10. package/data/schemas/atlas-record.v0.json +184 -46
  11. package/data/units.json +33 -4
  12. package/dist/atlas/applicability.d.ts.map +1 -1
  13. package/dist/atlas/applicability.js +14 -3
  14. package/dist/atlas/applicability.js.map +1 -1
  15. package/dist/atlas/association.js.map +1 -1
  16. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
  17. package/dist/atlas/benchmark/backend-shapes.js +5 -1
  18. package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
  19. package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
  20. package/dist/atlas/benchmark/baselines.js +8 -0
  21. package/dist/atlas/benchmark/baselines.js.map +1 -1
  22. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
  23. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  24. package/dist/atlas/benchmark/hybrid-retrieval.js +15 -8
  25. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  26. package/dist/atlas/benchmark/leakage.js.map +1 -1
  27. package/dist/atlas/benchmark/loader.js.map +1 -1
  28. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
  29. package/dist/atlas/benchmark/run-atlas.js +14 -2
  30. package/dist/atlas/benchmark/run-atlas.js.map +1 -1
  31. package/dist/atlas/benchmark/stats.d.ts +1 -1
  32. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  33. package/dist/atlas/benchmark/stats.js +1 -1
  34. package/dist/atlas/benchmark/stats.js.map +1 -1
  35. package/dist/atlas/benchmark/study.js.map +1 -1
  36. package/dist/atlas/benchmark/types.js.map +1 -1
  37. package/dist/atlas/bridge-record.d.ts +4 -4
  38. package/dist/atlas/bridge-record.d.ts.map +1 -1
  39. package/dist/atlas/bridge-record.js +6 -6
  40. package/dist/atlas/bridge-record.js.map +1 -1
  41. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  42. package/dist/atlas/chain-pipeline.d.ts +0 -11
  43. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  44. package/dist/atlas/chain-pipeline.js +5 -16
  45. package/dist/atlas/chain-pipeline.js.map +1 -1
  46. package/dist/atlas/composition-table.js.map +1 -1
  47. package/dist/atlas/conventions.js.map +1 -1
  48. package/dist/atlas/coverage.d.ts +2 -2
  49. package/dist/atlas/coverage.js.map +1 -1
  50. package/dist/atlas/derivation.js.map +1 -1
  51. package/dist/atlas/derive-evidence.d.ts +6 -4
  52. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  53. package/dist/atlas/derive-evidence.js +7 -2
  54. package/dist/atlas/derive-evidence.js.map +1 -1
  55. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  56. package/dist/atlas/diffusion/bridges-closure.js +0 -5
  57. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  58. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  59. package/dist/atlas/diffusion/bridges.js +0 -3
  60. package/dist/atlas/diffusion/bridges.js.map +1 -1
  61. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  62. package/dist/atlas/diffusion/index.d.ts +1 -1
  63. package/dist/atlas/diffusion/index.d.ts.map +1 -1
  64. package/dist/atlas/diffusion/index.js.map +1 -1
  65. package/dist/atlas/diffusion/models.js.map +1 -1
  66. package/dist/atlas/diffusion/numerics.js.map +1 -1
  67. package/dist/atlas/error-algebra.d.ts +6 -0
  68. package/dist/atlas/error-algebra.d.ts.map +1 -1
  69. package/dist/atlas/error-algebra.js +26 -0
  70. package/dist/atlas/error-algebra.js.map +1 -1
  71. package/dist/atlas/export.d.ts +18 -2
  72. package/dist/atlas/export.d.ts.map +1 -1
  73. package/dist/atlas/export.js +9 -3
  74. package/dist/atlas/export.js.map +1 -1
  75. package/dist/atlas/families.d.ts +19 -2
  76. package/dist/atlas/families.d.ts.map +1 -1
  77. package/dist/atlas/families.js +26 -3
  78. package/dist/atlas/families.js.map +1 -1
  79. package/dist/atlas/family.d.ts +27 -0
  80. package/dist/atlas/family.d.ts.map +1 -0
  81. package/dist/atlas/family.js +12 -0
  82. package/dist/atlas/family.js.map +1 -0
  83. package/dist/atlas/index.d.ts +3 -2
  84. package/dist/atlas/index.d.ts.map +1 -1
  85. package/dist/atlas/index.js +2 -1
  86. package/dist/atlas/index.js.map +1 -1
  87. package/dist/atlas/link-prediction.d.ts +1 -1
  88. package/dist/atlas/link-prediction.d.ts.map +1 -1
  89. package/dist/atlas/link-prediction.js.map +1 -1
  90. package/dist/atlas/model.js.map +1 -1
  91. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  92. package/dist/atlas/oscillators/bridges-coarse.js +0 -1
  93. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  94. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  95. package/dist/atlas/oscillators/bridges-exact.js +0 -3
  96. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  97. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  98. package/dist/atlas/oscillators/bridges-limits.js +0 -2
  99. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  100. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  101. package/dist/atlas/oscillators/index.d.ts +1 -16
  102. package/dist/atlas/oscillators/index.d.ts.map +1 -1
  103. package/dist/atlas/oscillators/index.js.map +1 -1
  104. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  105. package/dist/atlas/oscillators/models.js.map +1 -1
  106. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
  107. package/dist/atlas/oscillators/norm-transport.js.map +1 -1
  108. package/dist/atlas/oscillators/norms.js.map +1 -1
  109. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  110. package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
  111. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  112. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  113. package/dist/atlas/oscillators/rejections.js.map +1 -1
  114. package/dist/atlas/path-bound.js.map +1 -1
  115. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  116. package/dist/atlas/physjs-ref.d.ts +79 -45
  117. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  118. package/dist/atlas/physjs-ref.js +143 -62
  119. package/dist/atlas/physjs-ref.js.map +1 -1
  120. package/dist/atlas/physjs-reviewed.d.ts +31 -0
  121. package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
  122. package/dist/atlas/physjs-reviewed.js +194 -0
  123. package/dist/atlas/physjs-reviewed.js.map +1 -0
  124. package/dist/atlas/poster/associations.js.map +1 -1
  125. package/dist/atlas/poster/derivations.js.map +1 -1
  126. package/dist/atlas/poster/statements.js.map +1 -1
  127. package/dist/atlas/proof-target.js.map +1 -1
  128. package/dist/atlas/public.d.ts +2 -1
  129. package/dist/atlas/public.d.ts.map +1 -1
  130. package/dist/atlas/public.js +2 -1
  131. package/dist/atlas/public.js.map +1 -1
  132. package/dist/atlas/regime.js.map +1 -1
  133. package/dist/atlas/serialize.d.ts +18 -12
  134. package/dist/atlas/serialize.d.ts.map +1 -1
  135. package/dist/atlas/serialize.js +28 -18
  136. package/dist/atlas/serialize.js.map +1 -1
  137. package/dist/atlas/statement.js.map +1 -1
  138. package/dist/atlas/translation-registry.js.map +1 -1
  139. package/dist/atlas/translation.js.map +1 -1
  140. package/dist/atlas/types.d.ts +9 -2
  141. package/dist/atlas/types.d.ts.map +1 -1
  142. package/dist/atlas/types.js +1 -1
  143. package/dist/atlas/types.js.map +1 -1
  144. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  145. package/dist/atlas/waves/bridges-closure.js +0 -3
  146. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  147. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  148. package/dist/atlas/waves/bridges.js +0 -4
  149. package/dist/atlas/waves/bridges.js.map +1 -1
  150. package/dist/atlas/waves/index.d.ts +1 -1
  151. package/dist/atlas/waves/index.d.ts.map +1 -1
  152. package/dist/atlas/waves/index.js.map +1 -1
  153. package/dist/atlas/waves/models.js.map +1 -1
  154. package/dist/atlas/waves/numerics.js.map +1 -1
  155. package/dist/atlas/witness-artifact.js.map +1 -1
  156. package/dist/atlas/witness-dominance.d.ts +4 -3
  157. package/dist/atlas/witness-dominance.d.ts.map +1 -1
  158. package/dist/atlas/witness-dominance.js +15 -5
  159. package/dist/atlas/witness-dominance.js.map +1 -1
  160. package/dist/atlas/witness-numeric.d.ts +8 -4
  161. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  162. package/dist/atlas/witness-numeric.js +27 -2
  163. package/dist/atlas/witness-numeric.js.map +1 -1
  164. package/dist/atlas/witness-result.d.ts +7 -1
  165. package/dist/atlas/witness-result.d.ts.map +1 -1
  166. package/dist/atlas/witness-result.js.map +1 -1
  167. package/dist/atlas/witness-specs.js.map +1 -1
  168. package/dist/atlas/witness-symbolic.js.map +1 -1
  169. package/dist/atlas/witnesses/quantum-support.js.map +1 -1
  170. package/dist/bridges/caller-table.d.ts +1 -1
  171. package/dist/bridges/caller-table.d.ts.map +1 -1
  172. package/dist/bridges/caller-table.js.map +1 -1
  173. package/dist/bridges/carrier-sign.d.ts.map +1 -1
  174. package/dist/bridges/carrier-sign.js +8 -3
  175. package/dist/bridges/carrier-sign.js.map +1 -1
  176. package/dist/bridges/catalog-adapter.d.ts +12 -3
  177. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  178. package/dist/bridges/catalog-adapter.js +17 -9
  179. package/dist/bridges/catalog-adapter.js.map +1 -1
  180. package/dist/bridges/catalog-load.d.ts +12 -2
  181. package/dist/bridges/catalog-load.d.ts.map +1 -1
  182. package/dist/bridges/catalog-load.js +171 -8
  183. package/dist/bridges/catalog-load.js.map +1 -1
  184. package/dist/bridges/catalog-types.d.ts +48 -24
  185. package/dist/bridges/catalog-types.d.ts.map +1 -1
  186. package/dist/bridges/catalog-types.js.map +1 -1
  187. package/dist/bridges/coefficient-statement.js +1 -5
  188. package/dist/bridges/coefficient-statement.js.map +1 -1
  189. package/dist/bridges/confrontation-coverage.js.map +1 -1
  190. package/dist/bridges/confrontations.d.ts +1 -1
  191. package/dist/bridges/confrontations.d.ts.map +1 -1
  192. package/dist/bridges/confrontations.js +1 -1
  193. package/dist/bridges/confrontations.js.map +1 -1
  194. package/dist/bridges/evaluation-errors.d.ts +15 -2
  195. package/dist/bridges/evaluation-errors.d.ts.map +1 -1
  196. package/dist/bridges/evaluation-errors.js +20 -2
  197. package/dist/bridges/evaluation-errors.js.map +1 -1
  198. package/dist/bridges/evaluator-inputs.js.map +1 -1
  199. package/dist/bridges/evaluators.d.ts +17 -2
  200. package/dist/bridges/evaluators.d.ts.map +1 -1
  201. package/dist/bridges/evaluators.js +49 -16
  202. package/dist/bridges/evaluators.js.map +1 -1
  203. package/dist/bridges/expr-parse.d.ts +27 -4
  204. package/dist/bridges/expr-parse.d.ts.map +1 -1
  205. package/dist/bridges/expr-parse.js +90 -10
  206. package/dist/bridges/expr-parse.js.map +1 -1
  207. package/dist/bridges/holds.d.ts +5 -1
  208. package/dist/bridges/holds.d.ts.map +1 -1
  209. package/dist/bridges/holds.js +18 -3
  210. package/dist/bridges/holds.js.map +1 -1
  211. package/dist/bridges/index.d.ts +15 -14
  212. package/dist/bridges/index.d.ts.map +1 -1
  213. package/dist/bridges/index.js +14 -15
  214. package/dist/bridges/index.js.map +1 -1
  215. package/dist/bridges/input-contract.js.map +1 -1
  216. package/dist/bridges/membership.d.ts +5 -3
  217. package/dist/bridges/membership.d.ts.map +1 -1
  218. package/dist/bridges/membership.js +5 -6
  219. package/dist/bridges/membership.js.map +1 -1
  220. package/dist/bridges/notices.js.map +1 -1
  221. package/dist/bridges/observations/types.js.map +1 -1
  222. package/dist/bridges/rejected.d.ts +11 -17
  223. package/dist/bridges/rejected.d.ts.map +1 -1
  224. package/dist/bridges/rejected.js +13 -68
  225. package/dist/bridges/rejected.js.map +1 -1
  226. package/dist/bridges/relation-eval.d.ts +5 -6
  227. package/dist/bridges/relation-eval.d.ts.map +1 -1
  228. package/dist/bridges/relation-eval.js +9 -38
  229. package/dist/bridges/relation-eval.js.map +1 -1
  230. package/dist/bridges/rhs-registry.js.map +1 -1
  231. package/dist/bridges/sensitivity.d.ts +11 -3
  232. package/dist/bridges/sensitivity.d.ts.map +1 -1
  233. package/dist/bridges/sensitivity.js +24 -10
  234. package/dist/bridges/sensitivity.js.map +1 -1
  235. package/dist/bridges/tensor-index.js.map +1 -1
  236. package/dist/bridges/types.d.ts +1 -7
  237. package/dist/bridges/types.d.ts.map +1 -1
  238. package/dist/bridges/types.js +1 -4
  239. package/dist/bridges/types.js.map +1 -1
  240. package/dist/canonical/canonical-equation.js.map +1 -1
  241. package/dist/canonical/dimensional-fields.js.map +1 -1
  242. package/dist/canonical/entries/_l1-build.js.map +1 -1
  243. package/dist/canonical/entries/atomic.js.map +1 -1
  244. package/dist/canonical/entries/condensed-matter.js +4 -4
  245. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  246. package/dist/canonical/entries/dimensional-classics.js +2 -2
  247. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  248. package/dist/canonical/entries/electromagnetism.js +2 -2
  249. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  250. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  251. package/dist/canonical/entries/mechanics.js.map +1 -1
  252. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  253. package/dist/canonical/entries/nonmonomial.js +29 -22
  254. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  255. package/dist/canonical/entries/relativity.js.map +1 -1
  256. package/dist/canonical/entries/statistical-mechanics.js +5 -5
  257. package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
  258. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  259. package/dist/canonical/linkage.d.ts +29 -4
  260. package/dist/canonical/linkage.d.ts.map +1 -1
  261. package/dist/canonical/linkage.js +31 -29
  262. package/dist/canonical/linkage.js.map +1 -1
  263. package/dist/canonical/normal-form.d.ts +0 -8
  264. package/dist/canonical/normal-form.d.ts.map +1 -1
  265. package/dist/canonical/normal-form.js +17 -12
  266. package/dist/canonical/normal-form.js.map +1 -1
  267. package/dist/canonical/registry.js.map +1 -1
  268. package/dist/canonical/residual.js.map +1 -1
  269. package/dist/canonical/seed-l-layer.d.ts +7 -1
  270. package/dist/canonical/seed-l-layer.d.ts.map +1 -1
  271. package/dist/canonical/seed-l-layer.js +7 -1
  272. package/dist/canonical/seed-l-layer.js.map +1 -1
  273. package/dist/canonical/structural.d.ts +21 -0
  274. package/dist/canonical/structural.d.ts.map +1 -1
  275. package/dist/canonical/structural.js +24 -4
  276. package/dist/canonical/structural.js.map +1 -1
  277. package/dist/cases/brownian-sphere.js +4 -4
  278. package/dist/cases/brownian-sphere.js.map +1 -1
  279. package/dist/cases/damped-resonator.js +2 -2
  280. package/dist/cases/damped-resonator.js.map +1 -1
  281. package/dist/cases/index.js.map +1 -1
  282. package/dist/cases/kepler-rv.js.map +1 -1
  283. package/dist/cases/lumped-cooling.js +1 -1
  284. package/dist/cases/lumped-cooling.js.map +1 -1
  285. package/dist/cases/quadrature.js.map +1 -1
  286. package/dist/cases/resistor-noise.js +3 -3
  287. package/dist/cases/resistor-noise.js.map +1 -1
  288. package/dist/cases/skin-depth.js.map +1 -1
  289. package/dist/cases/types.js.map +1 -1
  290. package/dist/cli/args.d.ts +7 -2
  291. package/dist/cli/args.d.ts.map +1 -1
  292. package/dist/cli/args.js +18 -2
  293. package/dist/cli/args.js.map +1 -1
  294. package/dist/cli/bindings.d.ts +13 -0
  295. package/dist/cli/bindings.d.ts.map +1 -0
  296. package/dist/cli/bindings.js +32 -0
  297. package/dist/cli/bindings.js.map +1 -0
  298. package/dist/cli/closed-form-range.js.map +1 -1
  299. package/dist/cli/command.js.map +1 -1
  300. package/dist/cli/commands/_atlas-map.d.ts +3 -3
  301. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  302. package/dist/cli/commands/_atlas-map.js +43 -18
  303. package/dist/cli/commands/_atlas-map.js.map +1 -1
  304. package/dist/cli/commands/_atlas-route.js.map +1 -1
  305. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  306. package/dist/cli/commands/_discovery-opts.js +42 -7
  307. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  308. package/dist/cli/commands/atlas.d.ts.map +1 -1
  309. package/dist/cli/commands/atlas.js +1 -3
  310. package/dist/cli/commands/atlas.js.map +1 -1
  311. package/dist/cli/commands/audit.d.ts.map +1 -1
  312. package/dist/cli/commands/audit.js +13 -20
  313. package/dist/cli/commands/audit.js.map +1 -1
  314. package/dist/cli/commands/axes.js.map +1 -1
  315. package/dist/cli/commands/candidates.d.ts.map +1 -1
  316. package/dist/cli/commands/candidates.js +16 -8
  317. package/dist/cli/commands/candidates.js.map +1 -1
  318. package/dist/cli/commands/canonical.js.map +1 -1
  319. package/dist/cli/commands/chain.js +1 -1
  320. package/dist/cli/commands/chain.js.map +1 -1
  321. package/dist/cli/commands/confront.d.ts.map +1 -1
  322. package/dist/cli/commands/confront.js +22 -14
  323. package/dist/cli/commands/confront.js.map +1 -1
  324. package/dist/cli/commands/connectors.js.map +1 -1
  325. package/dist/cli/commands/coverage.js.map +1 -1
  326. package/dist/cli/commands/derive.d.ts.map +1 -1
  327. package/dist/cli/commands/derive.js +42 -17
  328. package/dist/cli/commands/derive.js.map +1 -1
  329. package/dist/cli/commands/discover.d.ts.map +1 -1
  330. package/dist/cli/commands/discover.js +15 -9
  331. package/dist/cli/commands/discover.js.map +1 -1
  332. package/dist/cli/commands/eval.d.ts.map +1 -1
  333. package/dist/cli/commands/eval.js +13 -10
  334. package/dist/cli/commands/eval.js.map +1 -1
  335. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  336. package/dist/cli/commands/evaluate.js +53 -31
  337. package/dist/cli/commands/evaluate.js.map +1 -1
  338. package/dist/cli/commands/explain.d.ts.map +1 -1
  339. package/dist/cli/commands/explain.js +14 -7
  340. package/dist/cli/commands/explain.js.map +1 -1
  341. package/dist/cli/commands/frontier.js.map +1 -1
  342. package/dist/cli/commands/ground.d.ts.map +1 -1
  343. package/dist/cli/commands/ground.js +40 -10
  344. package/dist/cli/commands/ground.js.map +1 -1
  345. package/dist/cli/commands/index.js.map +1 -1
  346. package/dist/cli/commands/map.d.ts.map +1 -1
  347. package/dist/cli/commands/map.js +82 -89
  348. package/dist/cli/commands/map.js.map +1 -1
  349. package/dist/cli/commands/metric.d.ts.map +1 -1
  350. package/dist/cli/commands/metric.js +53 -18
  351. package/dist/cli/commands/metric.js.map +1 -1
  352. package/dist/cli/commands/path.js +4 -4
  353. package/dist/cli/commands/path.js.map +1 -1
  354. package/dist/cli/commands/predict.js.map +1 -1
  355. package/dist/cli/commands/priority.js.map +1 -1
  356. package/dist/cli/commands/probe.d.ts.map +1 -1
  357. package/dist/cli/commands/probe.js +50 -26
  358. package/dist/cli/commands/probe.js.map +1 -1
  359. package/dist/cli/commands/recover.js +1 -1
  360. package/dist/cli/commands/recover.js.map +1 -1
  361. package/dist/cli/commands/regime.d.ts +5 -4
  362. package/dist/cli/commands/regime.d.ts.map +1 -1
  363. package/dist/cli/commands/regime.js +24 -26
  364. package/dist/cli/commands/regime.js.map +1 -1
  365. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  366. package/dist/cli/commands/retrieve.js +22 -14
  367. package/dist/cli/commands/retrieve.js.map +1 -1
  368. package/dist/cli/commands/search.d.ts.map +1 -1
  369. package/dist/cli/commands/search.js +8 -4
  370. package/dist/cli/commands/search.js.map +1 -1
  371. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  372. package/dist/cli/commands/symbolic.js +13 -9
  373. package/dist/cli/commands/symbolic.js.map +1 -1
  374. package/dist/cli/commands/testplan.js +1 -1
  375. package/dist/cli/commands/testplan.js.map +1 -1
  376. package/dist/cli/conventions.js.map +1 -1
  377. package/dist/cli/determination.js.map +1 -1
  378. package/dist/cli/errors.js.map +1 -1
  379. package/dist/cli/euler-guard.js.map +1 -1
  380. package/dist/cli/eval-numbers.js.map +1 -1
  381. package/dist/cli/expr-print.d.ts +29 -2
  382. package/dist/cli/expr-print.d.ts.map +1 -1
  383. package/dist/cli/expr-print.js +46 -2
  384. package/dist/cli/expr-print.js.map +1 -1
  385. package/dist/cli/flag-help.js.map +1 -1
  386. package/dist/cli/graphs.js.map +1 -1
  387. package/dist/cli/library-defaults.d.ts +19 -0
  388. package/dist/cli/library-defaults.d.ts.map +1 -0
  389. package/dist/cli/library-defaults.js +22 -0
  390. package/dist/cli/library-defaults.js.map +1 -0
  391. package/dist/cli/main.js +7 -3
  392. package/dist/cli/main.js.map +1 -1
  393. package/dist/cli/map-evidence.js.map +1 -1
  394. package/dist/cli/output.d.ts +3 -6
  395. package/dist/cli/output.d.ts.map +1 -1
  396. package/dist/cli/output.js.map +1 -1
  397. package/dist/cli/published-url.js.map +1 -1
  398. package/dist/cli/record-reach.d.ts +6 -0
  399. package/dist/cli/record-reach.d.ts.map +1 -1
  400. package/dist/cli/record-reach.js +16 -10
  401. package/dist/cli/record-reach.js.map +1 -1
  402. package/dist/cli/record-tables.js +1 -1
  403. package/dist/cli/record-tables.js.map +1 -1
  404. package/dist/cli/record.d.ts.map +1 -1
  405. package/dist/cli/record.js +31 -12
  406. package/dist/cli/record.js.map +1 -1
  407. package/dist/cli/search-index.d.ts +5 -0
  408. package/dist/cli/search-index.d.ts.map +1 -1
  409. package/dist/cli/search-index.js +12 -1
  410. package/dist/cli/search-index.js.map +1 -1
  411. package/dist/cli/statuses.js.map +1 -1
  412. package/dist/cli/top-level-help.js.map +1 -1
  413. package/dist/cli/version.js.map +1 -1
  414. package/dist/cli-api.d.ts +15 -9
  415. package/dist/cli-api.d.ts.map +1 -1
  416. package/dist/cli-api.js +14 -13
  417. package/dist/cli-api.js.map +1 -1
  418. package/dist/composition/adjudication.js.map +1 -1
  419. package/dist/composition/aliases.js.map +1 -1
  420. package/dist/composition/audit-coverage.d.ts +2 -0
  421. package/dist/composition/audit-coverage.d.ts.map +1 -1
  422. package/dist/composition/audit-coverage.js.map +1 -1
  423. package/dist/composition/axes.d.ts +12 -0
  424. package/dist/composition/axes.d.ts.map +1 -1
  425. package/dist/composition/axes.js +18 -6
  426. package/dist/composition/axes.js.map +1 -1
  427. package/dist/composition/axis-audit.js.map +1 -1
  428. package/dist/composition/bridge-analysis.d.ts +0 -18
  429. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  430. package/dist/composition/bridge-analysis.js +57 -47
  431. package/dist/composition/bridge-analysis.js.map +1 -1
  432. package/dist/composition/bridge-prediction.d.ts +5 -1
  433. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  434. package/dist/composition/bridge-prediction.js +12 -16
  435. package/dist/composition/bridge-prediction.js.map +1 -1
  436. package/dist/composition/buckingham-filter.js.map +1 -1
  437. package/dist/composition/canonical-compare.d.ts.map +1 -1
  438. package/dist/composition/canonical-compare.js +12 -2
  439. package/dist/composition/canonical-compare.js.map +1 -1
  440. package/dist/composition/canonical-graph.d.ts +8 -9
  441. package/dist/composition/canonical-graph.d.ts.map +1 -1
  442. package/dist/composition/canonical-graph.js +25 -67
  443. package/dist/composition/canonical-graph.js.map +1 -1
  444. package/dist/composition/canonical-json.js.map +1 -1
  445. package/dist/composition/canonical-prefactors.js.map +1 -1
  446. package/dist/composition/catalog-graph.d.ts.map +1 -1
  447. package/dist/composition/catalog-graph.js +6 -20
  448. package/dist/composition/catalog-graph.js.map +1 -1
  449. package/dist/composition/chain-candidate.d.ts +2 -0
  450. package/dist/composition/chain-candidate.d.ts.map +1 -1
  451. package/dist/composition/chain-candidate.js +2 -0
  452. package/dist/composition/chain-candidate.js.map +1 -1
  453. package/dist/composition/chain-match.js.map +1 -1
  454. package/dist/composition/chain-regime.js.map +1 -1
  455. package/dist/composition/chain-result.js.map +1 -1
  456. package/dist/composition/compose-surface.js.map +1 -1
  457. package/dist/composition/compose-symbolic.js.map +1 -1
  458. package/dist/composition/compose.d.ts.map +1 -1
  459. package/dist/composition/compose.js +153 -36
  460. package/dist/composition/compose.js.map +1 -1
  461. package/dist/composition/composition-recovery.js.map +1 -1
  462. package/dist/composition/consequence.d.ts.map +1 -1
  463. package/dist/composition/consequence.js +15 -6
  464. package/dist/composition/consequence.js.map +1 -1
  465. package/dist/composition/consistency.js.map +1 -1
  466. package/dist/composition/descriptor.d.ts +1 -1
  467. package/dist/composition/descriptor.d.ts.map +1 -1
  468. package/dist/composition/descriptor.js.map +1 -1
  469. package/dist/composition/dimension-adjacency.js.map +1 -1
  470. package/dist/composition/discovery.d.ts +21 -11
  471. package/dist/composition/discovery.d.ts.map +1 -1
  472. package/dist/composition/discovery.js +81 -21
  473. package/dist/composition/discovery.js.map +1 -1
  474. package/dist/composition/edge.d.ts +19 -8
  475. package/dist/composition/edge.d.ts.map +1 -1
  476. package/dist/composition/edge.js +24 -11
  477. package/dist/composition/edge.js.map +1 -1
  478. package/dist/composition/enumerate.d.ts +2 -2
  479. package/dist/composition/enumerate.d.ts.map +1 -1
  480. package/dist/composition/enumerate.js.map +1 -1
  481. package/dist/composition/evaluate-relation.js.map +1 -1
  482. package/dist/composition/explain.d.ts +14 -9
  483. package/dist/composition/explain.d.ts.map +1 -1
  484. package/dist/composition/explain.js +46 -13
  485. package/dist/composition/explain.js.map +1 -1
  486. package/dist/composition/expr-eval.js.map +1 -1
  487. package/dist/composition/expr-simplify.d.ts.map +1 -1
  488. package/dist/composition/expr-simplify.js +9 -39
  489. package/dist/composition/expr-simplify.js.map +1 -1
  490. package/dist/composition/expr-subst.js.map +1 -1
  491. package/dist/composition/formula-shape.d.ts +9 -0
  492. package/dist/composition/formula-shape.d.ts.map +1 -1
  493. package/dist/composition/formula-shape.js +54 -0
  494. package/dist/composition/formula-shape.js.map +1 -1
  495. package/dist/composition/frontier-account.d.ts +3 -2
  496. package/dist/composition/frontier-account.d.ts.map +1 -1
  497. package/dist/composition/frontier-account.js +7 -3
  498. package/dist/composition/frontier-account.js.map +1 -1
  499. package/dist/composition/graph-viz-svg.js.map +1 -1
  500. package/dist/composition/graph-viz.js.map +1 -1
  501. package/dist/composition/grounding.js.map +1 -1
  502. package/dist/composition/identifiability.js.map +1 -1
  503. package/dist/composition/index.d.ts +6 -4
  504. package/dist/composition/index.d.ts.map +1 -1
  505. package/dist/composition/index.js +4 -3
  506. package/dist/composition/index.js.map +1 -1
  507. package/dist/composition/mathts-quiet.d.ts +28 -0
  508. package/dist/composition/mathts-quiet.d.ts.map +1 -0
  509. package/dist/composition/mathts-quiet.js +56 -0
  510. package/dist/composition/mathts-quiet.js.map +1 -0
  511. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  512. package/dist/composition/mathts-scalar-symbols.js +18 -34
  513. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  514. package/dist/composition/not-composable-seeds.d.ts +3 -1
  515. package/dist/composition/not-composable-seeds.d.ts.map +1 -1
  516. package/dist/composition/not-composable-seeds.js +2 -0
  517. package/dist/composition/not-composable-seeds.js.map +1 -1
  518. package/dist/composition/probe/backend-protocol.js.map +1 -1
  519. package/dist/composition/probe/candidate-store.js.map +1 -1
  520. package/dist/composition/probe/corpus.js.map +1 -1
  521. package/dist/composition/probe/dataset.js.map +1 -1
  522. package/dist/composition/probe/experiment-design.js.map +1 -1
  523. package/dist/composition/probe/expression-gaps.js.map +1 -1
  524. package/dist/composition/probe/falsify.d.ts +14 -3
  525. package/dist/composition/probe/falsify.d.ts.map +1 -1
  526. package/dist/composition/probe/falsify.js +14 -27
  527. package/dist/composition/probe/falsify.js.map +1 -1
  528. package/dist/composition/probe/fingerprint.js.map +1 -1
  529. package/dist/composition/probe/fit.d.ts +1 -1
  530. package/dist/composition/probe/fit.d.ts.map +1 -1
  531. package/dist/composition/probe/fit.js +2 -1
  532. package/dist/composition/probe/fit.js.map +1 -1
  533. package/dist/composition/probe/frontier.js.map +1 -1
  534. package/dist/composition/probe/generator.js.map +1 -1
  535. package/dist/composition/probe/index.d.ts +4 -2
  536. package/dist/composition/probe/index.d.ts.map +1 -1
  537. package/dist/composition/probe/index.js +4 -2
  538. package/dist/composition/probe/index.js.map +1 -1
  539. package/dist/composition/probe/limits.js.map +1 -1
  540. package/dist/composition/probe/metadata.js.map +1 -1
  541. package/dist/composition/probe/pipeline.d.ts +5 -0
  542. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  543. package/dist/composition/probe/pipeline.js +13 -6
  544. package/dist/composition/probe/pipeline.js.map +1 -1
  545. package/dist/composition/probe/problem.d.ts +8 -0
  546. package/dist/composition/probe/problem.d.ts.map +1 -1
  547. package/dist/composition/probe/problem.js +78 -12
  548. package/dist/composition/probe/problem.js.map +1 -1
  549. package/dist/composition/probe/report.js.map +1 -1
  550. package/dist/composition/probe/residual.js.map +1 -1
  551. package/dist/composition/probe/run-manifest.js +2 -2
  552. package/dist/composition/probe/run-manifest.js.map +1 -1
  553. package/dist/composition/probe/scoring.d.ts +2 -1
  554. package/dist/composition/probe/scoring.d.ts.map +1 -1
  555. package/dist/composition/probe/scoring.js +21 -7
  556. package/dist/composition/probe/scoring.js.map +1 -1
  557. package/dist/composition/probe/search-budget.js.map +1 -1
  558. package/dist/composition/probe/serialize.js.map +1 -1
  559. package/dist/composition/probe/structure.js.map +1 -1
  560. package/dist/composition/probe/study.d.ts +4 -3
  561. package/dist/composition/probe/study.d.ts.map +1 -1
  562. package/dist/composition/probe/study.js +5 -3
  563. package/dist/composition/probe/study.js.map +1 -1
  564. package/dist/composition/probe/types.d.ts +3 -1
  565. package/dist/composition/probe/types.d.ts.map +1 -1
  566. package/dist/composition/probe/types.js +2 -0
  567. package/dist/composition/probe/types.js.map +1 -1
  568. package/dist/composition/proposed-bridges.d.ts +11 -4
  569. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  570. package/dist/composition/proposed-bridges.js +11 -4
  571. package/dist/composition/proposed-bridges.js.map +1 -1
  572. package/dist/composition/quantities.d.ts +0 -4
  573. package/dist/composition/quantities.d.ts.map +1 -1
  574. package/dist/composition/quantities.js +5 -5
  575. package/dist/composition/quantities.js.map +1 -1
  576. package/dist/composition/quantity.d.ts +18 -2
  577. package/dist/composition/quantity.d.ts.map +1 -1
  578. package/dist/composition/quantity.js +35 -6
  579. package/dist/composition/quantity.js.map +1 -1
  580. package/dist/composition/representative-values.js.map +1 -1
  581. package/dist/composition/retrodiction.d.ts +16 -6
  582. package/dist/composition/retrodiction.d.ts.map +1 -1
  583. package/dist/composition/retrodiction.js +34 -9
  584. package/dist/composition/retrodiction.js.map +1 -1
  585. package/dist/composition/uncertainty.js.map +1 -1
  586. package/dist/composition/user-equation.js.map +1 -1
  587. package/dist/core/axes-registry.d.ts +8 -5
  588. package/dist/core/axes-registry.d.ts.map +1 -1
  589. package/dist/core/axes-registry.js.map +1 -1
  590. package/dist/core/cell.js.map +1 -1
  591. package/dist/core/constants.d.ts +8 -8
  592. package/dist/core/constants.d.ts.map +1 -1
  593. package/dist/core/constants.js +8 -10
  594. package/dist/core/constants.js.map +1 -1
  595. package/dist/core/data-file.js.map +1 -1
  596. package/dist/core/flux-rules.js +1 -1
  597. package/dist/core/flux-rules.js.map +1 -1
  598. package/dist/core/json-schema.d.ts +1 -1
  599. package/dist/core/json-schema.d.ts.map +1 -1
  600. package/dist/core/json-schema.js +31 -7
  601. package/dist/core/json-schema.js.map +1 -1
  602. package/dist/core/labeled-tensor.d.ts +6 -1
  603. package/dist/core/labeled-tensor.d.ts.map +1 -1
  604. package/dist/core/labeled-tensor.js +18 -8
  605. package/dist/core/labeled-tensor.js.map +1 -1
  606. package/dist/core/regime-registry.d.ts +6 -2
  607. package/dist/core/regime-registry.d.ts.map +1 -1
  608. package/dist/core/regime-registry.js.map +1 -1
  609. package/dist/core/regime-rule-install.js.map +1 -1
  610. package/dist/core/regimes-builtins.js.map +1 -1
  611. package/dist/core/tensor.d.ts +7 -4
  612. package/dist/core/tensor.d.ts.map +1 -1
  613. package/dist/core/tensor.js +40 -8
  614. package/dist/core/tensor.js.map +1 -1
  615. package/dist/core/types.js.map +1 -1
  616. package/dist/core/universal-index.js.map +1 -1
  617. package/dist/diff/bridge-ast-gradient.d.ts +4 -5
  618. package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
  619. package/dist/diff/bridge-ast-gradient.js +10 -6
  620. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  621. package/dist/diff/bridge-gradient.d.ts +24 -80
  622. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  623. package/dist/diff/bridge-gradient.js +21 -98
  624. package/dist/diff/bridge-gradient.js.map +1 -1
  625. package/dist/diff/bridge-specs.d.ts +16 -5
  626. package/dist/diff/bridge-specs.d.ts.map +1 -1
  627. package/dist/diff/bridge-specs.js +16 -4
  628. package/dist/diff/bridge-specs.js.map +1 -1
  629. package/dist/dimensional/algebra.js.map +1 -1
  630. package/dist/dimensional/ast-builders.d.ts +5 -4
  631. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  632. package/dist/dimensional/ast-builders.js +6 -5
  633. package/dist/dimensional/ast-builders.js.map +1 -1
  634. package/dist/dimensional/ast-types.js.map +1 -1
  635. package/dist/dimensional/bridge-check.js.map +1 -1
  636. package/dist/dimensional/buckingham.js.map +1 -1
  637. package/dist/dimensional/connection-validators.d.ts +2 -1
  638. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  639. package/dist/dimensional/connection-validators.js.map +1 -1
  640. package/dist/dimensional/connection.js.map +1 -1
  641. package/dist/dimensional/constant-rows.d.ts.map +1 -1
  642. package/dist/dimensional/constant-rows.js +9 -5
  643. package/dist/dimensional/constant-rows.js.map +1 -1
  644. package/dist/dimensional/constants.d.ts +5 -6
  645. package/dist/dimensional/constants.d.ts.map +1 -1
  646. package/dist/dimensional/constants.js +5 -6
  647. package/dist/dimensional/constants.js.map +1 -1
  648. package/dist/dimensional/curvature-composite.js.map +1 -1
  649. package/dist/dimensional/curvature-invariants.js.map +1 -1
  650. package/dist/dimensional/curvature.js.map +1 -1
  651. package/dist/dimensional/dimension-inference.js.map +1 -1
  652. package/dist/dimensional/dimension-spec.d.ts +13 -7
  653. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  654. package/dist/dimensional/dimension-spec.js +49 -23
  655. package/dist/dimensional/dimension-spec.js.map +1 -1
  656. package/dist/dimensional/einstein-equation.js.map +1 -1
  657. package/dist/dimensional/errors.d.ts +3 -1
  658. package/dist/dimensional/errors.d.ts.map +1 -1
  659. package/dist/dimensional/errors.js +2 -2
  660. package/dist/dimensional/errors.js.map +1 -1
  661. package/dist/dimensional/exact-scale.js.map +1 -1
  662. package/dist/dimensional/field-equation-helpers.js.map +1 -1
  663. package/dist/dimensional/formula-names.js.map +1 -1
  664. package/dist/dimensional/fresh-label.js.map +1 -1
  665. package/dist/dimensional/friedmann-equation.d.ts +3 -3
  666. package/dist/dimensional/friedmann-equation.js +3 -3
  667. package/dist/dimensional/friedmann-equation.js.map +1 -1
  668. package/dist/dimensional/gauge-field.d.ts +2 -3
  669. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  670. package/dist/dimensional/gauge-field.js +0 -1
  671. package/dist/dimensional/gauge-field.js.map +1 -1
  672. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  673. package/dist/dimensional/hyphen-names.js +8 -0
  674. package/dist/dimensional/hyphen-names.js.map +1 -1
  675. package/dist/dimensional/killing-validators.js.map +1 -1
  676. package/dist/dimensional/klein-gordon-equation.js.map +1 -1
  677. package/dist/dimensional/metric-validators.d.ts +2 -1
  678. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  679. package/dist/dimensional/metric-validators.js.map +1 -1
  680. package/dist/dimensional/metric.js.map +1 -1
  681. package/dist/dimensional/natural-units.js.map +1 -1
  682. package/dist/dimensional/quantity-registry.d.ts +13 -0
  683. package/dist/dimensional/quantity-registry.d.ts.map +1 -1
  684. package/dist/dimensional/quantity-registry.js +14 -6
  685. package/dist/dimensional/quantity-registry.js.map +1 -1
  686. package/dist/dimensional/rg-flow.js.map +1 -1
  687. package/dist/dimensional/stress-energy-validators.js.map +1 -1
  688. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  689. package/dist/dimensional/symbolic-constants.js +7 -2
  690. package/dist/dimensional/symbolic-constants.js.map +1 -1
  691. package/dist/dimensional/tensor-trace.js.map +1 -1
  692. package/dist/dimensional/tensor.js.map +1 -1
  693. package/dist/dimensional/types.js.map +1 -1
  694. package/dist/dimensional/unit-convention.d.ts +0 -2
  695. package/dist/dimensional/unit-convention.d.ts.map +1 -1
  696. package/dist/dimensional/unit-convention.js +2 -2
  697. package/dist/dimensional/unit-convention.js.map +1 -1
  698. package/dist/dimensional/unit-data.d.ts.map +1 -1
  699. package/dist/dimensional/unit-data.js +9 -5
  700. package/dist/dimensional/unit-data.js.map +1 -1
  701. package/dist/dimensional/units.d.ts.map +1 -1
  702. package/dist/dimensional/units.js +38 -20
  703. package/dist/dimensional/units.js.map +1 -1
  704. package/dist/dimensional/validator-registry.js.map +1 -1
  705. package/dist/dimensional/validator.d.ts +0 -16
  706. package/dist/dimensional/validator.d.ts.map +1 -1
  707. package/dist/dimensional/validator.js +65 -29
  708. package/dist/dimensional/validator.js.map +1 -1
  709. package/dist/dimensional/weyl-validators.js.map +1 -1
  710. package/dist/index.d.ts +50 -5
  711. package/dist/index.d.ts.map +1 -1
  712. package/dist/index.js +12 -20
  713. package/dist/index.js.map +1 -1
  714. package/dist/numerical/bianchi-residual.js.map +1 -1
  715. package/dist/numerical/binding-value.d.ts +11 -6
  716. package/dist/numerical/binding-value.d.ts.map +1 -1
  717. package/dist/numerical/binding-value.js +126 -122
  718. package/dist/numerical/binding-value.js.map +1 -1
  719. package/dist/numerical/christoffel-flat.js.map +1 -1
  720. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  721. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  722. package/dist/numerical/covariant-eikonal.js +2 -2
  723. package/dist/numerical/covariant-eikonal.js.map +1 -1
  724. package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
  725. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  726. package/dist/numerical/curvature-lowering-helpers.js +6 -3
  727. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  728. package/dist/numerical/derivative-lowering.js.map +1 -1
  729. package/dist/numerical/einstein-equation.js.map +1 -1
  730. package/dist/numerical/engine-registry.js.map +1 -1
  731. package/dist/numerical/errors.d.ts +7 -3
  732. package/dist/numerical/errors.d.ts.map +1 -1
  733. package/dist/numerical/errors.js +5 -5
  734. package/dist/numerical/errors.js.map +1 -1
  735. package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -1
  736. package/dist/numerical/evaluator-uncertainty.js +19 -2
  737. package/dist/numerical/evaluator-uncertainty.js.map +1 -1
  738. package/dist/numerical/formula-contract.d.ts +63 -7
  739. package/dist/numerical/formula-contract.d.ts.map +1 -1
  740. package/dist/numerical/formula-contract.js +61 -42
  741. package/dist/numerical/formula-contract.js.map +1 -1
  742. package/dist/numerical/formula-dimension.d.ts +8 -7
  743. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  744. package/dist/numerical/formula-dimension.js +58 -36
  745. package/dist/numerical/formula-dimension.js.map +1 -1
  746. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  747. package/dist/numerical/formula-mathts.js +5 -2
  748. package/dist/numerical/formula-mathts.js.map +1 -1
  749. package/dist/numerical/formula-registry.d.ts +13 -3
  750. package/dist/numerical/formula-registry.d.ts.map +1 -1
  751. package/dist/numerical/formula-registry.js +7 -2
  752. package/dist/numerical/formula-registry.js.map +1 -1
  753. package/dist/numerical/geodesic-integrator.js.map +1 -1
  754. package/dist/numerical/geometrized.js.map +1 -1
  755. package/dist/numerical/gl4-integrator.d.ts +28 -27
  756. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  757. package/dist/numerical/gl4-integrator.js +41 -42
  758. package/dist/numerical/gl4-integrator.js.map +1 -1
  759. package/dist/numerical/grid-field.js.map +1 -1
  760. package/dist/numerical/index.js.map +1 -1
  761. package/dist/numerical/input-validation.d.ts +3 -6
  762. package/dist/numerical/input-validation.d.ts.map +1 -1
  763. package/dist/numerical/input-validation.js +4 -8
  764. package/dist/numerical/input-validation.js.map +1 -1
  765. package/dist/numerical/killing.d.ts +8 -5
  766. package/dist/numerical/killing.d.ts.map +1 -1
  767. package/dist/numerical/killing.js.map +1 -1
  768. package/dist/numerical/klein-gordon.js.map +1 -1
  769. package/dist/numerical/kretschmann.js.map +1 -1
  770. package/dist/numerical/lowering-utils.js.map +1 -1
  771. package/dist/numerical/lowering.d.ts.map +1 -1
  772. package/dist/numerical/lowering.js +7 -17
  773. package/dist/numerical/lowering.js.map +1 -1
  774. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  775. package/dist/numerical/mathts-engine.js +11 -6
  776. package/dist/numerical/mathts-engine.js.map +1 -1
  777. package/dist/numerical/metric-inverse.js.map +1 -1
  778. package/dist/numerical/null-ic.js.map +1 -1
  779. package/dist/numerical/null-ray-integrator.js +4 -4
  780. package/dist/numerical/null-ray-integrator.js.map +1 -1
  781. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  782. package/dist/numerical/pderiv.d.ts.map +1 -1
  783. package/dist/numerical/pderiv.js +9 -2
  784. package/dist/numerical/pderiv.js.map +1 -1
  785. package/dist/numerical/perihelion-finder.js.map +1 -1
  786. package/dist/numerical/quadrature.d.ts +5 -2
  787. package/dist/numerical/quadrature.d.ts.map +1 -1
  788. package/dist/numerical/quadrature.js +20 -3
  789. package/dist/numerical/quadrature.js.map +1 -1
  790. package/dist/numerical/spacetime-metrics.d.ts +13 -19
  791. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  792. package/dist/numerical/spacetime-metrics.js +126 -248
  793. package/dist/numerical/spacetime-metrics.js.map +1 -1
  794. package/dist/numerical/strides.js.map +1 -1
  795. package/dist/numerical/tensor-engine.d.ts +9 -5
  796. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  797. package/dist/numerical/tensor-engine.js.map +1 -1
  798. package/dist/numerical/types.js.map +1 -1
  799. package/dist/numerical/weyl-lowering.js.map +1 -1
  800. package/dist/relations/category.js.map +1 -1
  801. package/dist/relations/composition-table.d.ts +4 -4
  802. package/dist/relations/composition-table.js +4 -4
  803. package/dist/relations/composition-table.js.map +1 -1
  804. package/dist/relations/conventions.js.map +1 -1
  805. package/dist/relations/domain-regimes.js.map +1 -1
  806. package/dist/relations/regime-registration.js.map +1 -1
  807. package/dist/relations/regime-vocabularies.js.map +1 -1
  808. package/dist/relations/regime.d.ts +18 -8
  809. package/dist/relations/regime.d.ts.map +1 -1
  810. package/dist/relations/regime.js +26 -14
  811. package/dist/relations/regime.js.map +1 -1
  812. package/dist/relations/types.d.ts +18 -5
  813. package/dist/relations/types.d.ts.map +1 -1
  814. package/dist/relations/types.js +5 -3
  815. package/dist/relations/types.js.map +1 -1
  816. package/package.json +10 -14
  817. package/dist/bridges/registry.d.ts +0 -60
  818. package/dist/bridges/registry.d.ts.map +0 -1
  819. package/dist/bridges/registry.js +0 -87
  820. package/dist/bridges/registry.js.map +0 -1
  821. package/dist/cli/poster-source.d.ts +0 -154
  822. package/dist/cli/poster-source.d.ts.map +0 -1
  823. package/dist/cli/poster-source.js +0 -184
  824. package/dist/cli/poster-source.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"data-file.js","sourceRoot":"","sources":["../../src/core/data-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAEnE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAE7E,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AACjD,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAe,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY,EAAE,MAAkB;IAC1E,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,wBAAwB,YAAY,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5H,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE3C,wFAAwF;AACxF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"data-file.js","sourceRoot":"","sources":["../../src/core/data-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAEnE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAE7E,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AACjD,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAe,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY,EAAE,MAAkB;IAC1E,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,wBAAwB,YAAY,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5H,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;AAE3C,wFAAwF;AACxF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["/**\n * The packaged data files under `data/`, read and checked against their schemas.\n *\n * Every data file the library loads has a schema beside it, named by one\n * convention (`units.json` → `units.schema.json`), and is checked against it\n * with {@link schemaProblems} when it loads, so a malformed file fails at load\n * with every problem listed instead of failing later where a field is read.\n * A file two modules read is parsed and checked once per process.\n *\n * @module core/data-file\n */\n\nimport { readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { schemaProblems, type JsonSchema } from './json-schema.js';\n\nconst DATA_DIR = join(dirname(fileURLToPath(import.meta.url)), '../../data');\n\n/** The schema file of `file`: `units.json` → `units.schema.json`. @internal */\nexport function schemaFileOf(file: string): string {\n return file.replace(/\\.json$/, '.schema.json');\n}\n\n/** The text of `data/<file>`. @internal */\nexport function dataText(file: string): string {\n return readFileSync(join(DATA_DIR, file), 'utf8');\n}\n\n/** The schema of `data/<file>`, parsed. @internal */\nexport function dataSchema(file: string): JsonSchema {\n return JSON.parse(dataText(schemaFileOf(file))) as JsonSchema;\n}\n\n/**\n * `text`, the contents of `data/<file>`, parsed and checked against `schema`.\n * Throws listing every problem. A test passes a broken copy.\n * @internal\n */\nexport function parseDataFile(file: string, text: string, schema: JsonSchema): unknown {\n const value: unknown = JSON.parse(text);\n const problems = schemaProblems(schema, value);\n if (problems.length > 0) throw new Error(`data/${file} does not match data/${schemaFileOf(file)}:\\n${problems.join('\\n')}`);\n return value;\n}\n\nconst checked = new Map<string, unknown>();\n\n/** `data/<file>`, parsed and checked against its schema, once per process. @internal */\nexport function checkedDataFile(file: string): unknown {\n if (!checked.has(file)) checked.set(file, parseDataFile(file, dataText(file), dataSchema(file)));\n return checked.get(file);\n}\n"]}
@@ -175,7 +175,7 @@ function checkEmergenceCoordinate(cell) {
175
175
  return { ok: true };
176
176
  }
177
177
  // ---------------------------------------------------------------------------
178
- // Rule 3 — Causality (WARNING tier in v0.7)
178
+ // Rule 3 — Causality (ERROR tier)
179
179
  // ---------------------------------------------------------------------------
180
180
  /**
181
181
  * Pure dispatcher for Rule 3 over the `Cell` discriminated union.
@@ -1 +1 @@
1
- {"version":3,"file":"flux-rules.js","sourceRoot":"","sources":["../../src/core/flux-rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flux-rules.js","sourceRoot":"","sources":["../../src/core/flux-rules.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Flux-rule scaffolding for v0.7 Proposal 2 — Sparse Semantic Catalog.\n *\n * Defines:\n * - `FluxRuleKind` discriminated tag (@internal)\n * - `FluxRule`, `FluxRuleResult` registry shapes (@internal)\n * - `FluxDiagnostic`, `FluxReport` consumer shapes (@public)\n * - `FluxViolationError` (@public) thrown on ERROR-tier rule failures\n * - Rule 2 (L/B/E coordinate matching) and Rule 3 (Causality) — pure\n * functions over `Cell` / `BridgeCell`\n * - `runRules(cell, rules)` dispatcher with `_exhaustive: never`\n *\n * Rule 1 (Dimensional Consistency) ships in Phase 3 alongside the\n * catalog adapter — it operates on `BridgeEquationEntry`, not `Cell`,\n * per Decision #3 (resolves Adam-V3).\n *\n * Design: docs/planning/v0.7-Proposal-2-Design.md (redraft commit\n * 01632b5). Decisions #5, #6, #8 are load-bearing here.\n *\n * @module core/flux-rules\n */\n\nimport type {\n Cell,\n BridgeCell,\n LawCell,\n EmergenceCell,\n} from './cell.js';\nimport type { PhysicalScale } from './types.js';\n\n// ---------------------------------------------------------------------------\n// Public types (consumer-facing)\n// ---------------------------------------------------------------------------\n\n/**\n * A single rule-evaluation outcome surfaced to consumers via\n * `fluxDiagnostics()` or `FluxViolationError`. Severity follows the\n * info/warning/error tiering pinned in the design.\n *\n * @public\n */\nexport interface FluxDiagnostic {\n readonly severity: 'info' | 'warning' | 'error';\n readonly ruleName: FluxRuleKind;\n readonly cellId: string;\n readonly message: string;\n}\n\n/**\n * Aggregated report returned by `runRules()` / consumer-facing\n * `fluxDiagnostics()`. Per-tier counts are pre-computed for cheap\n * consumer-side branching.\n *\n * @public\n */\nexport interface FluxReport {\n readonly diagnostics: ReadonlyArray<FluxDiagnostic>;\n readonly errorCount: number;\n readonly warningCount: number;\n readonly infoCount: number;\n}\n\n/**\n * Thrown from `UniversalTensor.addCell` (Phase 2) when a Rule 2\n * (L/B/E coordinate-matching) violation fires. Rule 2 is ERROR-tier:\n * a `BridgeCell` with `source === target`, a `LawCell` with empty\n * `scales × forces`, or an `EmergenceCell` with `indices.length < 2`\n * fail-atomic.\n *\n * Rule 3 (Causality) is ERROR-tier as of v0.10.0 (user decision\n * 2026-06-11, promoted from the v0.7 WARNING tier after verifying the\n * live 23-cell submittable catalog has zero reverse arrows): a\n * `BridgeCell` whose source scale is COARSER than its target\n * (reverse of the canonical emergence direction) now fail-atomics.\n * Suppression for a deliberate reverse bridge goes through the\n * `causalityWhitelist` (entries earn their place via design review).\n *\n * @public\n */\nexport class FluxViolationError extends Error {\n public readonly ruleName: FluxRuleKind;\n public readonly cellId: string;\n\n constructor(ruleName: FluxRuleKind, cellId: string, message: string) {\n super(`FluxRule '${ruleName}' violated for cell '${cellId}': ${message}`);\n this.name = 'FluxViolationError';\n this.ruleName = ruleName;\n this.cellId = cellId;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal types (registry implementation detail)\n// ---------------------------------------------------------------------------\n\n/**\n * Discriminated tag for the in-tree flux rules. Adding a new rule\n * kind forces a compile-time update to every `switch` over this\n * union via the `_exhaustive: never` discipline.\n *\n * - v0.7 (P2): `'dimensional-consistency' | 'lbe-coordinate' | 'causality'`\n * - v0.8 (P5): adds `'regime-consistency'` — fires from `addCell`\n * when a cell's attached regimes contradict the cell's coordinate\n * axes (e.g., a `LawCell` with `scales: ['classical']` attached\n * to a `quantum` regime via `attachRegimesToCell`).\n *\n * @internal — coupled to the registry's dispatch shape; not part of\n * the v0.7 public-API contract.\n */\nexport type FluxRuleKind =\n | 'dimensional-consistency'\n | 'lbe-coordinate'\n | 'causality'\n | 'regime-consistency';\n\n/**\n * Result returned by a single rule's `check()` body. `ok: true` means\n * the rule passed; `ok: false` means the rule violated. A diagnostic\n * may be attached on either path (`'info'` diagnostics ride with\n * `ok: true`; `'warning'` and `'error'` diagnostics ride with\n * `ok: false`).\n *\n * @internal\n */\nexport interface FluxRuleResult {\n readonly ok: boolean;\n readonly diagnostic?: FluxDiagnostic;\n}\n\n/**\n * A registered rule. The `check()` body is a pure function over\n * `Cell` (or a sub-variant if the rule only fires on one `kind`).\n *\n * @internal\n */\nexport interface FluxRule {\n readonly kind: FluxRuleKind;\n readonly check: (cell: Cell) => FluxRuleResult;\n}\n\n// ---------------------------------------------------------------------------\n// SCALE_ARROW — the partial-order on `PhysicalScale` used by Rule 3\n// ---------------------------------------------------------------------------\n\n/**\n * Ordered list of scales from finest to coarsest. The index encodes\n * the partial-order: lower index = finer (quantum), higher index =\n * coarser (cosmological). Used by Rule 3 (Causality) to classify\n * bridge direction as forward / lateral / reverse.\n */\nconst SCALE_ORDER: ReadonlyArray<PhysicalScale> = [\n 'quantum',\n 'mesoscopic',\n 'classical',\n 'cosmological',\n];\n\nfunction scaleIndex(s: PhysicalScale): number {\n return SCALE_ORDER.indexOf(s);\n}\n\n/**\n * Classify a bridge direction by source/target scale. `'reverse'` =\n * coarser→finer (e.g., classical→quantum), `'forward'` =\n * finer→coarser (the canonical emergent direction), `'lateral'` =\n * same scale. Per Decision #5, `'reverse'` triggers a warning\n * diagnostic.\n */\nfunction classifyArrow(\n src: PhysicalScale,\n dst: PhysicalScale,\n): 'forward' | 'lateral' | 'reverse' {\n const i = scaleIndex(src);\n const j = scaleIndex(dst);\n if (i === j) return 'lateral';\n return i < j ? 'forward' : 'reverse';\n}\n\n/**\n * Private per-cell-ID suppression list for Rule 3 (Causality). Empty\n * in v0.7; entries earn their place via design review (Decision #5\n * — the original \"timeReversalAnnotation: true\" on BridgeCell was\n * rejected as public-type contamination per Eve-R12).\n */\nconst causalityWhitelist: ReadonlySet<string> = new Set();\n\n// ---------------------------------------------------------------------------\n// Rule 2 — L/B/E coordinate matching (ERROR tier)\n// ---------------------------------------------------------------------------\n\n/**\n * Pure dispatcher for Rule 2 over the `Cell` discriminated union.\n * The three arms enforce the cell-shape invariants:\n *\n * - `LawCell` is diagonal: `scales × forces` cross-product must be\n * non-empty.\n * - `BridgeCell` is off-diagonal: `source !== target` by at least\n * one axis (already enforced by the legacy `addBridge` —\n * Rule 2 piggybacks for registry exhaustiveness).\n * - `EmergenceCell` spans multi-coordinate: `indices.length >= 2`.\n *\n * @internal\n */\nexport function checkLBECoordinate(cell: Cell): FluxRuleResult {\n switch (cell.kind) {\n case 'law':\n return checkLawCoordinate(cell);\n case 'bridge':\n return checkBridgeCoordinate(cell);\n case 'emergence':\n return checkEmergenceCoordinate(cell);\n default: {\n const _exhaustive: never = cell;\n void _exhaustive;\n throw new Error(`checkLBECoordinate: unknown cell kind`);\n }\n }\n}\n\nfunction checkLawCoordinate(cell: LawCell): FluxRuleResult {\n if (cell.scales.length === 0 || cell.forces.length === 0) {\n return {\n ok: false,\n diagnostic: {\n severity: 'error',\n ruleName: 'lbe-coordinate',\n cellId: cell.id,\n message:\n `LawCell '${cell.id}' has empty scales × forces cross-product ` +\n `(scales=[${cell.scales.join(',')}], forces=[${cell.forces.join(',')}]). ` +\n `A law must occupy at least one (scale, force) coordinate.`,\n },\n };\n }\n return { ok: true };\n}\n\nfunction checkBridgeCoordinate(cell: BridgeCell): FluxRuleResult {\n // A BridgeCell must differ between source and target on at least one\n // populated axis. The legacy `addBridge` at tensor.ts:217-226 already\n // enforces this; we re-implement here for registry exhaustiveness.\n const s = cell.source;\n const t = cell.target;\n const same =\n s.scale === t.scale &&\n s.force === t.force &&\n s.symmetry === t.symmetry &&\n s.information === t.information &&\n s.dimension === t.dimension &&\n s.topology === t.topology;\n if (same) {\n return {\n ok: false,\n diagnostic: {\n severity: 'error',\n ruleName: 'lbe-coordinate',\n cellId: cell.id,\n message:\n `BridgeCell '${cell.id}' has identical source and target ` +\n `coordinates. A bridge must connect two distinct regime axes.`,\n },\n };\n }\n return { ok: true };\n}\n\nfunction checkEmergenceCoordinate(cell: EmergenceCell): FluxRuleResult {\n if (cell.indices.length < 2) {\n return {\n ok: false,\n diagnostic: {\n severity: 'error',\n ruleName: 'lbe-coordinate',\n cellId: cell.id,\n message:\n `EmergenceCell '${cell.id}' has only ${cell.indices.length} ` +\n `index group(s); emergence requires at least 2 (higher-order ` +\n `correlations span multiple coordinates).`,\n },\n };\n }\n return { ok: true };\n}\n\n// ---------------------------------------------------------------------------\n// Rule 3 — Causality (ERROR tier)\n// ---------------------------------------------------------------------------\n\n/**\n * Pure dispatcher for Rule 3 over the `Cell` discriminated union.\n * Rule 3 only fires on `'bridge'`; the other arms always pass.\n *\n * Body for the bridge arm per Decision #5:\n * 1. Read `src = cell.source.scale`, `dst = cell.target.scale`.\n * 2. If either is `undefined`, emit `'info'` (\"scale-unspecified\n * skip\"); the rule still passes (`ok: true`).\n * 3. If `arrow = classifyArrow(src, dst) === 'reverse'`, FAIL with\n * an `'error'` diagnostic (ERROR tier as of v0.10.0 — promoted\n * from the v0.7 WARNING tier, user decision 2026-06-11).\n * 4. Suppression via the private `causalityWhitelist` (empty in\n * v0.7).\n *\n * @internal\n */\nexport function checkCausality(cell: Cell): FluxRuleResult {\n if (cell.kind !== 'bridge') return { ok: true };\n if (causalityWhitelist.has(cell.id)) return { ok: true };\n\n const src = cell.source.scale;\n const dst = cell.target.scale;\n if (src === undefined || dst === undefined) {\n return {\n ok: true,\n diagnostic: {\n severity: 'info',\n ruleName: 'causality',\n cellId: cell.id,\n message: `scale axis unspecified; causality check skipped`,\n },\n };\n }\n\n const arrow = classifyArrow(src, dst);\n if (arrow === 'reverse') {\n return {\n // ERROR tier as of v0.10.0 (promoted from the v0.7 WARNING tier\n // per user decision 2026-06-11; live catalog verified clean —\n // 23/23 submittable cells pass, zero reverse arrows). Deliberate\n // reverse bridges go through causalityWhitelist.\n ok: false,\n diagnostic: {\n severity: 'error',\n ruleName: 'causality',\n cellId: cell.id,\n message:\n `BridgeCell '${cell.id}' goes ${src}→${dst} (coarser→finer); ` +\n `the canonical emergence direction is finer→coarser. ` +\n `Add the cell id to the causality whitelist (design review) ` +\n `if the reverse direction is deliberate.`,\n },\n };\n }\n return { ok: true };\n}\n\n// ---------------------------------------------------------------------------\n// Registry dispatcher\n// ---------------------------------------------------------------------------\n\n/**\n * Run a set of rules against a single `cell` and aggregate the\n * diagnostics into a `FluxReport`. Pure function — no I/O, no\n * shared-state mutation.\n *\n * The switch over `FluxRuleKind` is exhaustive via the\n * `_exhaustive: never` default arm (Decision #8). Adding a new rule\n * kind forces a compile-time update here AND at every consumer\n * site that branches on `FluxRuleKind`.\n *\n * @internal\n */\nexport function runRules(\n cell: Cell,\n rules: ReadonlyArray<FluxRule>,\n): FluxReport {\n const diagnostics: FluxDiagnostic[] = [];\n let errorCount = 0;\n let warningCount = 0;\n let infoCount = 0;\n\n for (const rule of rules) {\n // Exhaustive dispatch on rule.kind. Even though `check` is the\n // same shape across kinds, branching here gives us the\n // compile-time guarantee that every kind is handled — a new\n // FluxRuleKind variant forces a compile error.\n let result: FluxRuleResult;\n switch (rule.kind) {\n case 'dimensional-consistency':\n result = rule.check(cell);\n break;\n case 'lbe-coordinate':\n result = rule.check(cell);\n break;\n case 'causality':\n result = rule.check(cell);\n break;\n case 'regime-consistency':\n result = rule.check(cell);\n break;\n default: {\n const _exhaustive: never = rule.kind;\n void _exhaustive;\n throw new Error(`runRules: unknown rule kind`);\n }\n }\n\n if (result.diagnostic) {\n diagnostics.push(result.diagnostic);\n switch (result.diagnostic.severity) {\n case 'error': errorCount++; break;\n case 'warning': warningCount++; break;\n case 'info': infoCount++; break;\n }\n }\n }\n\n return {\n diagnostics,\n errorCount,\n warningCount,\n infoCount,\n };\n}\n\n/**\n * The two v0.7 in-tree rules registered for Phase 2 `addCell`\n * dispatch. Rule 1 (Dimensional Consistency) is NOT here — it\n * operates on `BridgeEquationEntry`, not `Cell`, and ships in\n * Phase 3 alongside the catalog adapter.\n *\n * @internal\n */\nexport const V07_CELL_RULES: ReadonlyArray<FluxRule> = [\n { kind: 'lbe-coordinate', check: checkLBECoordinate },\n { kind: 'causality', check: checkCausality },\n { kind: 'regime-consistency', check: checkRegimeConsistency },\n];\n\n// ---------------------------------------------------------------------------\n// Rule 4 — Regime Consistency (v0.8 P5 Phase 4, WARNING tier)\n// ---------------------------------------------------------------------------\n\n// Lazy import dance — regime-registry is in the same dir, so a static\n// import would force regime-registry to load any time flux-rules\n// loads. Phase 4 keeps that decoupled via a registered-callable\n// pattern: P5's regime module registers its rule via\n// `installRegimeConsistencyRule` below at module-load.\n\ntype RegimeRuleBody = (cell: Cell) => FluxRuleResult;\n\nlet registeredRegimeRule: RegimeRuleBody | null = null;\n\n/**\n * Install P5's regime-consistency rule body. Called by\n * `src/core/regime-rule-install.ts` at its module load. If P5's\n * module is never imported, the regime check stays a no-op\n * (returns `ok: true` silently).\n *\n * @internal\n */\nexport function installRegimeConsistencyRule(body: RegimeRuleBody): void {\n registeredRegimeRule = body;\n}\n\n/**\n * Pure dispatcher for Rule 4 over `Cell`. Delegates to the body\n * installed by P5 if present; otherwise a permissive no-op.\n *\n * @internal\n */\nfunction checkRegimeConsistency(cell: Cell): FluxRuleResult {\n if (registeredRegimeRule) return registeredRegimeRule(cell);\n return { ok: true };\n}\n"]}
@@ -9,7 +9,7 @@
9
9
  * Subset: `type` (a name or an array of names), `required`, `properties`,
10
10
  * `additionalProperties` (boolean or schema), `propertyNames`, `items`,
11
11
  * `minItems`, `maxItems`, `uniqueItems`, `minLength`, `pattern`, `minimum`,
12
- * `enum`, `const`, and `$ref` to `#/$defs/<name>`. `$schema`, `$id`, `$defs`,
12
+ * `enum`, `const`, `if`/`then`/`else`, and `$ref` to `#/$defs/<name>` or `#/definitions/<name>`. `$schema`, `$id`, `$defs`,
13
13
  * `title` and `description` are annotations.
14
14
  *
15
15
  * @module core/json-schema
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../src/core/json-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AA8HjE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAI3E"}
1
+ {"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../src/core/json-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAkJjE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAI3E"}
@@ -9,12 +9,12 @@
9
9
  * Subset: `type` (a name or an array of names), `required`, `properties`,
10
10
  * `additionalProperties` (boolean or schema), `propertyNames`, `items`,
11
11
  * `minItems`, `maxItems`, `uniqueItems`, `minLength`, `pattern`, `minimum`,
12
- * `enum`, `const`, and `$ref` to `#/$defs/<name>`. `$schema`, `$id`, `$defs`,
12
+ * `enum`, `const`, `if`/`then`/`else`, and `$ref` to `#/$defs/<name>` or `#/definitions/<name>`. `$schema`, `$id`, `$defs`,
13
13
  * `title` and `description` are annotations.
14
14
  *
15
15
  * @module core/json-schema
16
16
  */
17
- const ANNOTATIONS = new Set(['$schema', '$id', '$defs', 'title', 'description']);
17
+ const ANNOTATIONS = new Set(['$schema', '$id', '$defs', 'definitions', 'title', 'description']);
18
18
  const KEYWORDS = new Set([
19
19
  'type',
20
20
  'required',
@@ -31,6 +31,9 @@ const KEYWORDS = new Set([
31
31
  'enum',
32
32
  'const',
33
33
  '$ref',
34
+ 'if',
35
+ 'then',
36
+ 'else',
34
37
  ]);
35
38
  function isObject(value) {
36
39
  return typeof value === 'object' && value !== null && !Array.isArray(value);
@@ -56,9 +59,11 @@ function typeMatches(type, value) {
56
59
  }
57
60
  }
58
61
  function resolveRef(root, ref) {
59
- const m = /^#\/\$defs\/([^/]+)$/.exec(ref);
60
- const defs = root['$defs'];
61
- const target = m === null || !isObject(defs) ? undefined : defs[m[1]];
62
+ // `#/$defs/<name>` (2019-09 and later) or `#/definitions/<name>` (draft-07): both are a
63
+ // local definition table and nothing else is resolved.
64
+ const m = /^#\/(\$defs|definitions)\/([^/]+)$/.exec(ref);
65
+ const defs = m === null ? undefined : root[m[1]];
66
+ const target = m === null || !isObject(defs) ? undefined : defs[m[2]];
62
67
  if (!isObject(target))
63
68
  throw new Error(`json-schema: unresolved $ref '${ref}'`);
64
69
  return target;
@@ -71,6 +76,15 @@ function check(root, schema, value, path, problems) {
71
76
  }
72
77
  if (typeof schema['$ref'] === 'string')
73
78
  check(root, resolveRef(root, schema['$ref']), value, path, problems);
79
+ // `if`/`then`/`else`: the branch whose condition the value meets is checked; the condition's
80
+ // own problems are not reported.
81
+ if (isObject(schema['if'])) {
82
+ const condition = [];
83
+ check(root, schema['if'], value, path, condition);
84
+ const branch = condition.length === 0 ? schema['then'] : schema['else'];
85
+ if (isObject(branch))
86
+ check(root, branch, value, path, problems);
87
+ }
74
88
  if (schema['type'] !== undefined) {
75
89
  const types = Array.isArray(schema['type']) ? schema['type'] : [schema['type']];
76
90
  if (types.length === 0 || types.some((type) => typeof type !== 'string')) {
@@ -114,12 +128,21 @@ function check(root, schema, value, path, problems) {
114
128
  const items = schema['items'];
115
129
  value.forEach((item, i) => check(root, items, item, `${path}[${i}]`, problems));
116
130
  }
131
+ else if (Array.isArray(schema['items'])) {
132
+ // A tuple: each position has its own schema; a position past the tuple is unchecked.
133
+ schema['items'].forEach((itemSchema, i) => {
134
+ if (!isObject(itemSchema))
135
+ throw new Error(`json-schema: items[${i}] at ${path} is not a schema`);
136
+ if (i < value.length)
137
+ check(root, itemSchema, value[i], `${path}[${i}]`, problems);
138
+ });
139
+ }
117
140
  }
118
141
  if (isObject(value)) {
119
142
  const properties = isObject(schema['properties']) ? schema['properties'] : {};
120
143
  if (Array.isArray(schema['required'])) {
121
144
  for (const key of schema['required']) {
122
- if (!(key in value))
145
+ if (!Object.hasOwn(value, key))
123
146
  problems.push(`${path}: missing '${key}'`);
124
147
  }
125
148
  }
@@ -127,7 +150,8 @@ function check(root, schema, value, path, problems) {
127
150
  const where = `${path}.${key}`;
128
151
  if (isObject(schema['propertyNames']))
129
152
  check(root, schema['propertyNames'], key, `${where} (name)`, problems);
130
- const declared = properties[key];
153
+ // Own properties only: a `__proto__` key must not resolve to Object.prototype.
154
+ const declared = Object.hasOwn(properties, key) ? properties[key] : undefined;
131
155
  if (isObject(declared)) {
132
156
  check(root, declared, child, where, problems);
133
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../../src/core/json-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../../src/core/json-schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * A JSON Schema reader for the keyword subset the repository's data schemas use.\n *\n * The library adds no runtime dependency for this, so the schema a data file\n * names is checked here, at load, and not only by a test. A keyword outside\n * the subset is an error in the schema, not a keyword silently ignored, so a\n * schema cannot state a rule this reader does not enforce.\n *\n * Subset: `type` (a name or an array of names), `required`, `properties`,\n * `additionalProperties` (boolean or schema), `propertyNames`, `items`,\n * `minItems`, `maxItems`, `uniqueItems`, `minLength`, `pattern`, `minimum`,\n * `enum`, `const`, `if`/`then`/`else`, and `$ref` to `#/$defs/<name>` or `#/definitions/<name>`. `$schema`, `$id`, `$defs`,\n * `title` and `description` are annotations.\n *\n * @module core/json-schema\n */\n\n/** A JSON Schema document or subschema, as parsed from JSON. @internal */\nexport type JsonSchema = { readonly [keyword: string]: unknown };\n\nconst ANNOTATIONS = new Set(['$schema', '$id', '$defs', 'definitions', 'title', 'description']);\nconst KEYWORDS = new Set([\n 'type',\n 'required',\n 'properties',\n 'additionalProperties',\n 'propertyNames',\n 'items',\n 'minItems',\n 'maxItems',\n 'uniqueItems',\n 'minLength',\n 'pattern',\n 'minimum',\n 'enum',\n 'const',\n '$ref',\n 'if',\n 'then',\n 'else',\n]);\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction typeMatches(type: string, value: unknown): boolean {\n switch (type) {\n case 'object':\n return isObject(value);\n case 'array':\n return Array.isArray(value);\n case 'string':\n return typeof value === 'string';\n case 'boolean':\n return typeof value === 'boolean';\n case 'number':\n return typeof value === 'number' && Number.isFinite(value);\n case 'integer':\n return typeof value === 'number' && Number.isInteger(value);\n case 'null':\n return value === null;\n default:\n throw new Error(`json-schema: unsupported type '${type}'`);\n }\n}\n\nfunction resolveRef(root: JsonSchema, ref: string): JsonSchema {\n // `#/$defs/<name>` (2019-09 and later) or `#/definitions/<name>` (draft-07): both are a\n // local definition table and nothing else is resolved.\n const m = /^#\\/(\\$defs|definitions)\\/([^/]+)$/.exec(ref);\n const defs = m === null ? undefined : root[m[1]!];\n const target = m === null || !isObject(defs) ? undefined : defs[m[2]!];\n if (!isObject(target)) throw new Error(`json-schema: unresolved $ref '${ref}'`);\n return target;\n}\n\nfunction check(root: JsonSchema, schema: JsonSchema, value: unknown, path: string, problems: string[]): void {\n for (const keyword of Object.keys(schema)) {\n if (!KEYWORDS.has(keyword) && !ANNOTATIONS.has(keyword)) {\n throw new Error(`json-schema: keyword '${keyword}' at ${path} is outside the supported subset`);\n }\n }\n if (typeof schema['$ref'] === 'string') check(root, resolveRef(root, schema['$ref']), value, path, problems);\n // `if`/`then`/`else`: the branch whose condition the value meets is checked; the condition's\n // own problems are not reported.\n if (isObject(schema['if'])) {\n const condition: string[] = [];\n check(root, schema['if'], value, path, condition);\n const branch = condition.length === 0 ? schema['then'] : schema['else'];\n if (isObject(branch)) check(root, branch, value, path, problems);\n }\n if (schema['type'] !== undefined) {\n const types = Array.isArray(schema['type']) ? (schema['type'] as unknown[]) : [schema['type']];\n if (types.length === 0 || types.some((type) => typeof type !== 'string')) {\n throw new Error(`json-schema: 'type' at ${path} is not a type name or an array of type names`);\n }\n if (!types.some((type) => typeMatches(type as string, value))) {\n problems.push(`${path}: expected ${types.join(' or ')}`);\n return;\n }\n }\n if ('const' in schema && JSON.stringify(schema['const']) !== JSON.stringify(value)) {\n problems.push(`${path}: expected ${JSON.stringify(schema['const'])}`);\n }\n if (Array.isArray(schema['enum']) && !schema['enum'].some((option) => JSON.stringify(option) === JSON.stringify(value))) {\n problems.push(`${path}: ${JSON.stringify(value)} is not one of ${JSON.stringify(schema['enum'])}`);\n }\n if (typeof value === 'number' && typeof schema['minimum'] === 'number' && value < schema['minimum']) {\n problems.push(`${path}: ${value} is less than ${schema['minimum']}`);\n }\n if (typeof value === 'string') {\n if (typeof schema['minLength'] === 'number' && [...value].length < schema['minLength']) {\n problems.push(`${path}: shorter than ${schema['minLength']}`);\n }\n if (typeof schema['pattern'] === 'string' && !new RegExp(schema['pattern'], 'u').test(value)) {\n problems.push(`${path}: '${value}' does not match ${schema['pattern']}`);\n }\n }\n if (Array.isArray(value)) {\n if (typeof schema['minItems'] === 'number' && value.length < schema['minItems']) {\n problems.push(`${path}: fewer than ${schema['minItems']} items`);\n }\n if (typeof schema['maxItems'] === 'number' && value.length > schema['maxItems']) {\n problems.push(`${path}: more than ${schema['maxItems']} items`);\n }\n if (schema['uniqueItems'] === true) {\n const seen = new Set(value.map((item) => JSON.stringify(item)));\n if (seen.size !== value.length) problems.push(`${path}: items are not unique`);\n }\n if (isObject(schema['items'])) {\n const items = schema['items'];\n value.forEach((item, i) => check(root, items, item, `${path}[${i}]`, problems));\n } else if (Array.isArray(schema['items'])) {\n // A tuple: each position has its own schema; a position past the tuple is unchecked.\n (schema['items'] as unknown[]).forEach((itemSchema, i) => {\n if (!isObject(itemSchema)) throw new Error(`json-schema: items[${i}] at ${path} is not a schema`);\n if (i < value.length) check(root, itemSchema, value[i], `${path}[${i}]`, problems);\n });\n }\n }\n if (isObject(value)) {\n const properties = isObject(schema['properties']) ? schema['properties'] : {};\n if (Array.isArray(schema['required'])) {\n for (const key of schema['required'] as readonly string[]) {\n if (!Object.hasOwn(value, key)) problems.push(`${path}: missing '${key}'`);\n }\n }\n for (const [key, child] of Object.entries(value)) {\n const where = `${path}.${key}`;\n if (isObject(schema['propertyNames'])) check(root, schema['propertyNames'], key, `${where} (name)`, problems);\n // Own properties only: a `__proto__` key must not resolve to Object.prototype.\n const declared = Object.hasOwn(properties, key) ? properties[key] : undefined;\n if (isObject(declared)) {\n check(root, declared, child, where, problems);\n } else if (schema['additionalProperties'] === false) {\n problems.push(`${where}: unexpected property`);\n } else if (isObject(schema['additionalProperties'])) {\n check(root, schema['additionalProperties'], child, where, problems);\n }\n }\n }\n}\n\n/**\n * Every place `value` breaks `schema`, as `$.path: reason` lines. Empty when it conforms.\n * Throws when the schema uses a keyword outside the subset.\n * @internal\n */\nexport function schemaProblems(schema: JsonSchema, value: unknown): string[] {\n const problems: string[] = [];\n check(schema, schema, value, '$', problems);\n return problems;\n}\n"]}
@@ -68,7 +68,12 @@ export declare class AxisMismatchError extends UPTError {
68
68
  */
69
69
  export declare class IdentityConflictError extends UPTError {
70
70
  readonly indexId: UniversalIndexId;
71
- constructor(indexId: UniversalIndexId);
71
+ /**
72
+ * `where` says which shape was met: the id twice on ONE operand (a
73
+ * self-contraction, which `contract` does not perform), or the id as a
74
+ * free axis on BOTH operands beside a contraction (three occurrences).
75
+ */
76
+ constructor(indexId: UniversalIndexId, where?: 'one-operand' | 'both-operands');
72
77
  }
73
78
  /**
74
79
  * Thrown by `contract` when both operands carry the same index `name`
@@ -1 +1 @@
1
- {"version":3,"file":"labeled-tensor.d.ts","sourceRoot":"","sources":["../../src/core/labeled-tensor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAc,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOvF;;;;;;GAMG;AACH,qBAAa,8BAA+B,SAAQ,QAAQ;IAC1D,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,YAAY,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAUjD;CACF;AAED;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,SAAgB,OAAO,EAAE,gBAAgB,CAAC;IAC1C,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,SAAgB,SAAS,EAAE,QAAQ,CAAC;IACpC,YACE,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,QAAQ,EAYpB;CACF;AAED;;;;;;;;GAQG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,SAAgB,OAAO,EAAE,gBAAgB,CAAC;IAC1C,YAAY,OAAO,EAAE,gBAAgB,EASpC;CACF;AAED;;;;;;;;;;GAUG;AACH,qBAAa,sBAAuB,SAAQ,QAAQ;IAClD,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,GAAG,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACjD,YACE,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,SAAS;QAAE,EAAE,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,EAAE,EAiBjE;CACF;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,YAAY,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAU3C;CACF;AAED;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,SAAgB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,SAAgB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,YAAY,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAUrE;CACF;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,YAAY,OAAO,EAAE,MAAM,EAI1B;CACF;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,YAAY,OAAO,EAAE,MAAM,EAI1B;CACF;AAMD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,EACpF,MAAM,EAAE,CAAC,GACR,MAAM,EAAE,CAEV;AAuBD;;;;;;;;;GASG;AACH,qBAAa,aAAa,CACxB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE7F,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,MAAM,EAAE,CAAC,CAAC;IAC1B;;;;;;OAMG;IACH,SAAgB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAE7C,YACE,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,CAAC,EACT,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,EAgB9B;IAED;;;;;OAKG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMjC;IAED;;;;;;;;;;;;;;;OAeG;IACI,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,EAChE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GACtB,aAAa,CA4Gf;IAED;;;;;;OAMG;IACI,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAyB/E;IAED;;;;;;;;;OASG;IACI,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAO7D;IAED;;;;;;;;;;;;OAYG;IACI,SAAS,CACd,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;KAAE,GACvD,aAAa,CAqDf;IAED;;;;;;;OAOG;IACI,SAAS,CACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,GAC/E,aAAa,CA4Df;CACF"}
1
+ {"version":3,"file":"labeled-tensor.d.ts","sourceRoot":"","sources":["../../src/core/labeled-tensor.ts"],"names":[],"mappings":"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"}
@@ -87,10 +87,18 @@ export class AxisMismatchError extends UPTError {
87
87
  */
88
88
  export class IdentityConflictError extends UPTError {
89
89
  indexId;
90
- constructor(indexId) {
91
- super(`LabeledTensor.contract: UniversalIndexId '${indexId}' appears as a ` +
92
- `free axis on both operands. Same physical axis on both sides is ` +
93
- `ambiguous — rename or contract one side first.`);
90
+ /**
91
+ * `where` says which shape was met: the id twice on ONE operand (a
92
+ * self-contraction, which `contract` does not perform), or the id as a
93
+ * free axis on BOTH operands beside a contraction (three occurrences).
94
+ */
95
+ constructor(indexId, where = 'both-operands') {
96
+ super(where === 'one-operand'
97
+ ? `LabeledTensor.contract: UniversalIndexId '${indexId}' appears twice on one operand. ` +
98
+ `A self-contraction is not a contract(); rename one axis or trace it first.`
99
+ : `LabeledTensor.contract: UniversalIndexId '${indexId}' appears as a ` +
100
+ `free axis on both operands. Same physical axis on both sides is ` +
101
+ `ambiguous — rename or contract one side first.`);
94
102
  this.name = 'IdentityConflictError';
95
103
  this.indexId = indexId;
96
104
  Object.setPrototypeOf(this, IdentityConflictError.prototype);
@@ -382,9 +390,9 @@ export class LabeledTensor {
382
390
  else if (occurrences.length === 2) {
383
391
  const [a, b] = occurrences;
384
392
  if (a.operand === b.operand) {
385
- // Same id appears twice in one operand: that's a tensor-self-
386
- // contraction situation; flag as free conflict.
387
- throw new IdentityConflictError(id);
393
+ // The same id twice in one operand is a self-contraction, which
394
+ // contract() does not perform.
395
+ throw new IdentityConflictError(id, 'one-operand');
388
396
  }
389
397
  if (a.axisName !== b.axisName) {
390
398
  throw new AxisMismatchError(id, a.axisName, b.axisName);
@@ -475,10 +483,12 @@ export class LabeledTensor {
475
483
  throw new AxisMergeError(`'${k}' is not a label key.`);
476
484
  positions.push(p);
477
485
  }
486
+ // Distinct keys have distinct positions (the duplicate check above), so a
487
+ // contiguous run is exactly `hi − lo === n − 1`.
478
488
  const sorted = [...positions].sort((a, b) => a - b);
479
489
  const lo = sorted[0];
480
490
  const hi = sorted[sorted.length - 1];
481
- if (new Set(sorted).size !== sorted.length || hi - lo !== sorted.length - 1) {
491
+ if (hi - lo !== sorted.length - 1) {
482
492
  throw new AxisMergeError(`keys ${JSON.stringify(keys)} are not a contiguous run of engine axes ` +
483
493
  `(positions ${JSON.stringify(positions)}); transpose them adjacent first.`);
484
494
  }
@@ -1 +1 @@
1
- {"version":3,"file":"labeled-tensor.js","sourceRoot":"","sources":["../../src/core/labeled-tensor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"labeled-tensor.js","sourceRoot":"","sources":["../../src/core/labeled-tensor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `LabeledTensor` — engine-level tensor wrapped with\n * `UniversalIndex`-tagged metadata. The catalog-facing surface\n * for physics-axis-aware contractions.\n *\n * Phase 2 + Phase 3 of v0.7 Proposal 1 (Intelligent Index Layer).\n *\n * Composition (Decision #5): `LabeledTensor` owns an `EngineTensor`,\n * a `TensorEngine`, and a labels record. The engine handle is the\n * boundary — `LabeledTensor` doesn't reach into the underlying\n * Float64Array / MathTS handle. Contract matching is strictly\n * `UniversalIndexId` equality (Decision #3). Two indices that share a\n * `name` and not an `id` are refused: `contract` throws\n * `IndexNameMismatchError` and the message names both ids. It does not\n * contract them and it does not return their outer product. Indices\n * whose names differ stay free axes.\n *\n * Design: `docs/planning/v0.7-Proposal-1-Design.md` Decisions\n * #1, #3, #5, #6, #7, #9.\n *\n * Cross-Phase Invariants preserved:\n * - #1 adapter-on-top: this module does NOT import\n * `src/dimensional/tensor.ts` or `src/numerical/lowering.ts`.\n * - #4 `TensorSymbolNode` + `computeContraction` UNCHANGED.\n * - #5 `TensorEngine` interface UNCHANGED (consumes, doesn't\n * extend).\n *\n * @module core/labeled-tensor\n */\n\nimport type { EngineTensor, TensorEngine, EinsumSpec } from '../numerical/tensor-engine.js';\nimport { UPTError } from '../dimensional/errors.js';\nimport type { AxisName, UniversalIndex, UniversalIndexId } from './universal-index.js';\n\n// ---------------------------------------------------------------------------\n// Error classes (Phase 3 surface, declared here for co-location with\n// the guards that throw them)\n// ---------------------------------------------------------------------------\n\n/**\n * Thrown by the `LabeledTensor` constructor when the labels record\n * doesn't agree with the underlying tensor's rank\n * (`Object.keys(labels).length !== tensor.shape.length`).\n *\n * @public\n */\nexport class LabeledTensorConstructionError extends UPTError {\n public readonly labelCount: number;\n public readonly tensorRank: number;\n constructor(labelCount: number, tensorRank: number) {\n super(\n `LabeledTensor: labels record has ${labelCount} entries but ` +\n `tensor rank is ${tensorRank}. Every tensor axis must carry exactly ` +\n `one UniversalIndex label.`,\n );\n this.name = 'LabeledTensorConstructionError';\n this.labelCount = labelCount;\n this.tensorRank = tensorRank;\n Object.setPrototypeOf(this, LabeledTensorConstructionError.prototype);\n }\n}\n\n/**\n * Thrown by `contract` when two `UniversalIndex` values share an\n * `id` but disagree on `axis`. Per Decision #7, this is a physics\n * error caught at the wrapper level. Impossible if both operands\n * use the `Axes` registry; defensive against off-registry\n * `makeIndex` consumers.\n *\n * @public\n */\nexport class AxisMismatchError extends UPTError {\n public readonly indexId: UniversalIndexId;\n public readonly leftAxis: AxisName;\n public readonly rightAxis: AxisName;\n constructor(\n indexId: UniversalIndexId,\n leftAxis: AxisName,\n rightAxis: AxisName,\n ) {\n super(\n `LabeledTensor.contract: indices with the same id '${indexId}' ` +\n `disagree on axis ('${leftAxis}' vs '${rightAxis}'). Cross-axis ` +\n `contraction is a physics error.`,\n );\n this.name = 'AxisMismatchError';\n this.indexId = indexId;\n this.leftAxis = leftAxis;\n this.rightAxis = rightAxis;\n Object.setPrototypeOf(this, AxisMismatchError.prototype);\n }\n}\n\n/**\n * Thrown by `contract` when the same `UniversalIndexId` appears in\n * more than one non-contracted (free) position across the two\n * operands. Same physical axis showing up free on both sides is\n * physically meaningful (joint distribution) but the einsum\n * machinery has no canonical way to disambiguate.\n *\n * @public\n */\nexport class IdentityConflictError extends UPTError {\n public readonly indexId: UniversalIndexId;\n /**\n * `where` says which shape was met: the id twice on ONE operand (a\n * self-contraction, which `contract` does not perform), or the id as a\n * free axis on BOTH operands beside a contraction (three occurrences).\n */\n constructor(indexId: UniversalIndexId, where: 'one-operand' | 'both-operands' = 'both-operands') {\n super(\n where === 'one-operand'\n ? `LabeledTensor.contract: UniversalIndexId '${indexId}' appears twice on one operand. ` +\n `A self-contraction is not a contract(); rename one axis or trace it first.`\n : `LabeledTensor.contract: UniversalIndexId '${indexId}' appears as a ` +\n `free axis on both operands. Same physical axis on both sides is ` +\n `ambiguous — rename or contract one side first.`,\n );\n this.name = 'IdentityConflictError';\n this.indexId = indexId;\n Object.setPrototypeOf(this, IdentityConflictError.prototype);\n }\n}\n\n/**\n * Thrown by `contract` when both operands carry the same index `name`\n * and those occurrences do not all share one `UniversalIndexId`.\n *\n * Decision #3 matches by id. A second `makeIndex` call with the same\n * name is a different index. Returning the outer product hid that: the\n * caller who meant one index got a higher-rank tensor and no ids.\n * The error names every id. Distinct names stay an outer product.\n *\n * @public\n */\nexport class IndexNameMismatchError extends UPTError {\n public readonly indexName: string;\n public readonly ids: readonly UniversalIndexId[];\n constructor(\n indexName: string,\n occurrences: readonly { id: UniversalIndexId; axis: AxisName }[],\n ) {\n const ids = [...new Set(occurrences.map((o) => o.id))];\n const described = occurrences\n .map((o) => `'${o.id}' (axis '${o.axis}')`)\n .join(' and ');\n super(\n `LabeledTensor.contract: index name '${indexName}' is carried by ` +\n `unequal ids ${described}. Contraction matches UniversalIndexId, ` +\n `not the name. Reuse one UniversalIndex object, or take it from ` +\n `the Axes registry. A second makeIndex call with the same name is ` +\n `a different index and is not an outer product.`,\n );\n this.name = 'IndexNameMismatchError';\n this.indexName = indexName;\n this.ids = ids;\n Object.setPrototypeOf(this, IndexNameMismatchError.prototype);\n }\n}\n\n/**\n * Thrown by `reshape` when the requested shape would change the\n * tensor rank. v0.7.0 allows only axis-by-axis size change;\n * rank-changing reshape is deferred to v0.8.0+ (`mergeAxes` /\n * `splitAxis` helpers).\n *\n * @public\n */\nexport class RankPreservationError extends UPTError {\n public readonly fromRank: number;\n public readonly toRank: number;\n constructor(fromRank: number, toRank: number) {\n super(\n `LabeledTensor.reshape: cannot change rank from ${fromRank} to ` +\n `${toRank}. v0.7.0 supports only same-rank reshape; use a future ` +\n `mergeAxes / splitAxis helper for rank changes.`,\n );\n this.name = 'RankPreservationError';\n this.fromRank = fromRank;\n this.toRank = toRank;\n Object.setPrototypeOf(this, RankPreservationError.prototype);\n }\n}\n\n/**\n * Thrown by the `LabeledTensor` constructor when an explicit `axisOrder` is\n * not a valid permutation of the label keys (wrong length, a key that is not a\n * label, or a duplicate). Distinct from `LabeledTensorConstructionError` (which\n * means label-count ≠ tensor-rank) so a consumer never reads a rank-mismatch\n * field on an order error.\n *\n * @public\n */\nexport class AxisOrderError extends UPTError {\n public readonly axisOrder: readonly string[];\n public readonly labelKeys: readonly string[];\n constructor(axisOrder: readonly string[], labelKeys: readonly string[]) {\n super(\n `LabeledTensor: axisOrder [${axisOrder.join(', ')}] is not a permutation ` +\n `of the label keys [${labelKeys.join(', ')}] (it must list every label ` +\n `key exactly once, in engine-axis order).`,\n );\n this.name = 'AxisOrderError';\n this.axisOrder = axisOrder;\n this.labelKeys = labelKeys;\n Object.setPrototypeOf(this, AxisOrderError.prototype);\n }\n}\n\n/**\n * Thrown by `mergeAxes` when the request is malformed: fewer than two keys, an\n * unknown key, keys that are not a contiguous run of engine-axis positions, or a\n * merged key/id that collides with a surviving axis.\n *\n * @public\n */\nexport class AxisMergeError extends UPTError {\n constructor(message: string) {\n super(`LabeledTensor.mergeAxes: ${message}`);\n this.name = 'AxisMergeError';\n Object.setPrototypeOf(this, AxisMergeError.prototype);\n }\n}\n\n/**\n * Thrown by `splitAxis` when the request is malformed: an unknown key, fewer\n * than two parts, a non-positive/non-integer part size, a size product that\n * does not match the original axis size, or a part key/id that collides.\n *\n * @public\n */\nexport class AxisSplitError extends UPTError {\n constructor(message: string) {\n super(`LabeledTensor.splitAxis: ${message}`);\n this.name = 'AxisSplitError';\n Object.setPrototypeOf(this, AxisSplitError.prototype);\n }\n}\n\n// ---------------------------------------------------------------------------\n// canonicalLabelOrder — Risk 2 mitigation\n// ---------------------------------------------------------------------------\n\n/**\n * Stable lexicographic ordering of label keys. JavaScript's\n * `Object.entries` preserves string-key insertion order, but we\n * route all label-key→axis-position mapping through this helper\n * so the contract algorithm doesn't accidentally depend on\n * constructor-call ordering.\n *\n * @internal\n */\nexport function canonicalLabelOrder<L extends Record<string, UniversalIndex<AxisName>>>(\n labels: L,\n): string[] {\n return Object.keys(labels).sort();\n}\n\n/**\n * True iff `order` lists exactly the members of `keys`, each once (same length,\n * no duplicates, no foreign entries). Used to validate an explicit `axisOrder`.\n *\n * @internal\n */\nfunction isPermutationOf(order: readonly string[], keys: readonly string[]): boolean {\n if (order.length !== keys.length) return false;\n const seen = new Set<string>();\n const keySet = new Set(keys);\n for (const k of order) {\n if (!keySet.has(k) || seen.has(k)) return false;\n seen.add(k);\n }\n return true;\n}\n\n// ---------------------------------------------------------------------------\n// LabeledTensor (wrapper class)\n// ---------------------------------------------------------------------------\n\n/**\n * Engine-agnostic wrapper carrying physics-axis-tagged metadata over\n * an opaque `EngineTensor`. Two `LabeledTensor`s contract over\n * shared `UniversalIndexId` values; non-shared ids become the\n * result's free axes.\n *\n * Construction enforces `Object.keys(labels).length === tensor.shape.length`.\n *\n * @public\n */\nexport class LabeledTensor<\n L extends Record<string, UniversalIndex<AxisName>> = Record<string, UniversalIndex<AxisName>>,\n> {\n public readonly tensor: EngineTensor;\n public readonly engine: TensorEngine;\n public readonly labels: L;\n /**\n * The label keys in ENGINE-AXIS order: `axisOrder[i]` is the key of engine\n * axis `i`. This is the AUTHORITATIVE label↔axis mapping — consumers must use\n * it (or {@link axisOf}) rather than re-deriving position by sorting keys,\n * because `transpose` / `contract` can leave the engine axes in a non-sorted\n * order. Defaults to `canonicalLabelOrder(labels)` (sorted) when not supplied.\n */\n public readonly axisOrder: readonly string[];\n\n constructor(\n tensor: EngineTensor,\n engine: TensorEngine,\n labels: L,\n axisOrder?: readonly string[],\n ) {\n const labelKeys = Object.keys(labels);\n if (labelKeys.length !== tensor.shape.length) {\n throw new LabeledTensorConstructionError(labelKeys.length, tensor.shape.length);\n }\n const order = axisOrder ?? canonicalLabelOrder(labels);\n // Validate `order` is a permutation of the label keys: same length, every\n // entry is a label key, no duplicates.\n if (order.length !== labelKeys.length || !isPermutationOf(order, labelKeys)) {\n throw new AxisOrderError(order, labelKeys);\n }\n this.tensor = tensor;\n this.engine = engine;\n this.labels = labels;\n this.axisOrder = order;\n }\n\n /**\n * Engine-axis position of a label key (the inverse of {@link axisOrder}).\n * Throws if the key is not a label.\n *\n * @public\n */\n public axisOf(key: string): number {\n const axis = this.axisOrder.indexOf(key);\n if (axis === -1) {\n throw new UPTError(`LabeledTensor.axisOf: '${key}' is not a label key.`);\n }\n return axis;\n }\n\n /**\n * Identity-aware contraction (Decision #3): match labels by\n * `UniversalIndexId` equality only. Returns a new `LabeledTensor`\n * whose free labels are the union of both operands' free labels\n * minus the contracted ids, evaluated in `this`-first,\n * `other`-second canonical order.\n *\n * Throws:\n * - `IndexNameMismatchError` if both operands use one `name` and\n * the ids differ. The message names both ids.\n * - `AxisMismatchError` if a shared id disagrees on axis.\n * - `IdentityConflictError` if a non-shared id appears free on\n * both operands.\n *\n * @public\n */\n public contract<R extends Record<string, UniversalIndex<AxisName>>>(\n other: LabeledTensor<R>,\n ): LabeledTensor {\n if (this.engine !== other.engine) {\n throw new UPTError(\n `LabeledTensor.contract: engine mismatch (${this.engine.name} vs ` +\n `${other.engine.name}). Both operands must share an engine.`,\n );\n }\n\n // Map labels → ENGINE axis positions via each operand's authoritative\n // axisOrder (NOT sorted key order — an operand may carry a non-sorted order\n // from a prior transpose/contract).\n const leftOrder = this.axisOrder;\n const rightOrder = other.axisOrder;\n\n // Same name on both operands is one index only when the ids match.\n // A fresh makeIndex with that name is a different id; the outer\n // product of that pair is the footgun Decision #3 exists to stop.\n const byName = new Map<string, Array<{ id: UniversalIndexId; axis: AxisName; side: 0 | 1 }>>();\n const noteName = (\n side: 0 | 1,\n order: readonly string[],\n labels: Record<string, UniversalIndex<AxisName>>,\n ): void => {\n for (const key of order) {\n const idx = labels[key];\n const list = byName.get(idx.name) ?? [];\n list.push({ id: idx.id, axis: idx.axis, side });\n byName.set(idx.name, list);\n }\n };\n noteName(0, leftOrder, this.labels);\n noteName(1, rightOrder, other.labels);\n for (const [indexName, occurrences] of byName) {\n const onLeft = occurrences.some((o) => o.side === 0);\n const onRight = occurrences.some((o) => o.side === 1);\n if (!onLeft || !onRight) continue;\n const ids = new Set(occurrences.map((o) => o.id));\n if (ids.size > 1) throw new IndexNameMismatchError(indexName, occurrences);\n }\n\n // Build id → (operand, axis-position) sites.\n const sites = new Map<UniversalIndexId, Array<{ operand: 0 | 1; axis: number; key: string; axisName: AxisName }>>();\n leftOrder.forEach((key, axis) => {\n const idx = this.labels[key];\n const list = sites.get(idx.id) ?? [];\n list.push({ operand: 0, axis, key, axisName: idx.axis });\n sites.set(idx.id, list);\n });\n rightOrder.forEach((key, axis) => {\n const idx = other.labels[key];\n const list = sites.get(idx.id) ?? [];\n list.push({ operand: 1, axis, key, axisName: idx.axis });\n sites.set(idx.id, list);\n });\n\n // Classify each id: contracted (in both operands) vs free (in one).\n const contractions: EinsumSpec['contractions'][number][] = [];\n const free: EinsumSpec['free'][number][] = [];\n const resultLabels: Record<string, UniversalIndex<AxisName>> = {};\n // The result's engine-axis order: the result key of each free axis, pushed\n // in the SAME order the free axes enter `spec.free` (which is the order the\n // engine emits result axes). Kept exactly parallel to `free` so it is always\n // a valid permutation of `Object.keys(resultLabels)`.\n const resultAxisOrder: string[] = [];\n\n for (const [id, occurrences] of sites) {\n if (occurrences.length === 1) {\n // Free axis on exactly one operand. Carry through.\n const o = occurrences[0];\n free.push({ operand: o.operand, axis: o.axis });\n // Preserve the original label key; on collision (both operands use the\n // same string key for *different* ids) suffix until a FREE key is found\n // (`x` → `x_0`/`x_1` → `x_0_0`…), so result keys stay UNIQUE and\n // resultAxisOrder remains a valid permutation (Eve Y1: guarding only the\n // unsuffixed key could overwrite an existing suffixed key).\n let key = o.key;\n if (resultLabels[key] !== undefined) {\n let n = 0;\n do {\n key = `${o.key}_${o.operand}${n === 0 ? '' : `_${n}`}`;\n n++;\n } while (resultLabels[key] !== undefined);\n }\n resultLabels[key] = o.operand === 0\n ? this.labels[o.key]\n : other.labels[o.key];\n resultAxisOrder.push(key);\n } else if (occurrences.length === 2) {\n const [a, b] = occurrences;\n if (a.operand === b.operand) {\n // The same id twice in one operand is a self-contraction, which\n // contract() does not perform.\n throw new IdentityConflictError(id, 'one-operand');\n }\n if (a.axisName !== b.axisName) {\n throw new AxisMismatchError(id, a.axisName, b.axisName);\n }\n contractions.push({ pair: [[a.operand, a.axis], [b.operand, b.axis]] });\n } else {\n // 3+ occurrences across the two operands: triple+ contraction,\n // not supported by the binary einsum primitive. Reject.\n throw new IdentityConflictError(id);\n }\n }\n\n const spec: EinsumSpec = { contractions, free };\n const resultTensor = this.engine.einsum(spec, this.tensor, other.tensor);\n return new LabeledTensor(resultTensor, this.engine, resultLabels, resultAxisOrder);\n }\n\n /**\n * Reorder axes per the given permutation of label keys. The new\n * label record reflects the new axis order; the engine handles\n * the storage-level permutation via `engine.transpose`.\n *\n * @public\n */\n public transpose(newKeyOrder: ReadonlyArray<keyof L & string>): LabeledTensor<L> {\n // Permutation is computed against the CURRENT engine-axis order\n // (`this.axisOrder`), NOT the sorted key order — `this.axisOrder` may\n // already be non-sorted (e.g. a contract result, or a prior transpose).\n if (newKeyOrder.length !== this.axisOrder.length) {\n throw new UPTError(\n `LabeledTensor.transpose: new key order has ${newKeyOrder.length} ` +\n `entries but tensor has ${this.axisOrder.length} axes.`,\n );\n }\n const currentIndex = new Map(this.axisOrder.map((k, i) => [k, i]));\n const perm: number[] = [];\n for (const key of newKeyOrder) {\n const pos = currentIndex.get(key);\n if (pos === undefined) {\n throw new UPTError(\n `LabeledTensor.transpose: key '${String(key)}' not found in labels.`,\n );\n }\n perm.push(pos);\n }\n const transposedTensor = this.engine.transpose(this.tensor, perm);\n // The result's engine axis i is the old axis perm[i] = newKeyOrder[i], so\n // the new axisOrder IS newKeyOrder.\n return new LabeledTensor(transposedTensor, this.engine, this.labels, [...newKeyOrder]);\n }\n\n /**\n * Per-axis size change. Rank must be preserved (Decision #5);\n * rank-changing reshape throws `RankPreservationError`. v0.8.0+\n * may add `mergeAxes` / `splitAxis` for rank-changing operations.\n *\n * Labels survive unchanged (axis identity is preserved across a\n * size-only reshape).\n *\n * @public\n */\n public reshape(shape: ReadonlyArray<number>): LabeledTensor<L> {\n if (shape.length !== this.tensor.shape.length) {\n throw new RankPreservationError(this.tensor.shape.length, shape.length);\n }\n const reshapedTensor = this.engine.reshape(this.tensor, shape);\n // Rank-preserving size change never reorders axes — carry axisOrder through.\n return new LabeledTensor(reshapedTensor, this.engine, this.labels, this.axisOrder);\n }\n\n /**\n * Fuse a CONTIGUOUS run of engine axes (named by `keys`) into ONE axis\n * carrying the caller-supplied `merged` label. Rank R → R − (keys.length − 1).\n *\n * The keys must occupy a gapless consecutive run of engine-axis positions\n * (`engine.reshape` fuses STORAGE-adjacent axes only) — `transpose` them\n * adjacent first otherwise. The fused axis spans the merged axes in ENGINE\n * order; the order `keys` are listed does not matter (the merged axis is\n * opaque). The caller owns the merged axis's identity — no composite-id is\n * synthesized.\n *\n * @public\n */\n public mergeAxes(\n keys: readonly string[],\n merged: { key: string; index: UniversalIndex<AxisName> },\n ): LabeledTensor {\n if (keys.length < 2) {\n throw new AxisMergeError(`need at least 2 keys to merge, got ${keys.length}.`);\n }\n if (new Set(keys).size !== keys.length) {\n throw new AxisMergeError(`keys ${JSON.stringify(keys)} contain a duplicate.`);\n }\n const positions: number[] = [];\n for (const k of keys) {\n const p = this.axisOrder.indexOf(k);\n if (p === -1) throw new AxisMergeError(`'${k}' is not a label key.`);\n positions.push(p);\n }\n // Distinct keys have distinct positions (the duplicate check above), so a\n // contiguous run is exactly `hi − lo === n − 1`.\n const sorted = [...positions].sort((a, b) => a - b);\n const lo = sorted[0];\n const hi = sorted[sorted.length - 1];\n if (hi - lo !== sorted.length - 1) {\n throw new AxisMergeError(\n `keys ${JSON.stringify(keys)} are not a contiguous run of engine axes ` +\n `(positions ${JSON.stringify(positions)}); transpose them adjacent first.`,\n );\n }\n // Surviving keys = axes outside the merged run. (A merged key may safely\n // REUSE one of the consumed keys' names — those are not surviving.)\n const survivingKeys = this.axisOrder.filter((_, i) => i < lo || i > hi);\n if (survivingKeys.includes(merged.key)) {\n throw new AxisMergeError(`merged key '${merged.key}' collides with a surviving label key.`);\n }\n for (const k of survivingKeys) {\n if (this.labels[k].id === merged.index.id) {\n throw new AxisMergeError(\n `merged id '${merged.index.id}' collides with surviving axis '${k}'.`,\n );\n }\n }\n\n const shape = this.tensor.shape;\n let mergedSize = 1;\n for (let i = lo; i <= hi; i++) mergedSize *= shape[i];\n const newShape = [...shape.slice(0, lo), mergedSize, ...shape.slice(hi + 1)];\n\n const newLabels: Record<string, UniversalIndex<AxisName>> = {};\n for (const k of survivingKeys) newLabels[k] = this.labels[k];\n newLabels[merged.key] = merged.index;\n\n const newAxisOrder = [\n ...this.axisOrder.slice(0, lo),\n merged.key,\n ...this.axisOrder.slice(hi + 1),\n ];\n\n const reshaped = this.engine.reshape(this.tensor, newShape);\n return new LabeledTensor(reshaped, this.engine, newLabels, newAxisOrder);\n }\n\n /**\n * Split ONE engine axis (named `key`) into several, each carrying a\n * caller-supplied sub-label whose sizes multiply to the original axis size.\n * Rank R → R + (parts.length − 1). The parts occupy the split axis's position\n * in `parts` order. Inverse of {@link mergeAxes}.\n *\n * @public\n */\n public splitAxis(\n key: string,\n parts: readonly { key: string; index: UniversalIndex<AxisName>; size: number }[],\n ): LabeledTensor {\n const p = this.axisOrder.indexOf(key);\n if (p === -1) throw new AxisSplitError(`'${key}' is not a label key.`);\n if (parts.length < 2) {\n throw new AxisSplitError(`need at least 2 parts to split into, got ${parts.length}.`);\n }\n let product = 1;\n for (const part of parts) {\n if (!Number.isInteger(part.size) || part.size <= 0) {\n throw new AxisSplitError(`part '${part.key}' size must be a positive integer, got ${part.size}.`);\n }\n product *= part.size;\n }\n const axisSize = this.tensor.shape[p];\n if (product !== axisSize) {\n throw new AxisSplitError(\n `part sizes multiply to ${product} but axis '${key}' has size ${axisSize}.`,\n );\n }\n const survivingKeys = this.axisOrder.filter((k) => k !== key);\n const seen = new Set<string>();\n const seenIds = new Set<UniversalIndexId>();\n for (const part of parts) {\n if (survivingKeys.includes(part.key)) {\n throw new AxisSplitError(`part key '${part.key}' collides with a surviving label key.`);\n }\n if (seen.has(part.key)) throw new AxisSplitError(`duplicate part key '${part.key}'.`);\n seen.add(part.key);\n // Both parts SURVIVE, so two parts sharing one id would build a tensor\n // that `contract` later rejects as IdentityConflictError — fail here at\n // the malformed call instead (Eve Y1). (mergeAxes has no analogue: its\n // merged id replaces consumed axes, so reusing a consumed id is legal.)\n if (seenIds.has(part.index.id)) {\n throw new AxisSplitError(`two parts share id '${part.index.id}'.`);\n }\n seenIds.add(part.index.id);\n for (const k of survivingKeys) {\n if (this.labels[k].id === part.index.id) {\n throw new AxisSplitError(\n `part id '${part.index.id}' collides with surviving axis '${k}'.`,\n );\n }\n }\n }\n\n const shape = this.tensor.shape;\n const newShape = [...shape.slice(0, p), ...parts.map((pt) => pt.size), ...shape.slice(p + 1)];\n\n const newLabels: Record<string, UniversalIndex<AxisName>> = {};\n for (const k of survivingKeys) newLabels[k] = this.labels[k];\n for (const part of parts) newLabels[part.key] = part.index;\n\n const newAxisOrder = [\n ...this.axisOrder.slice(0, p),\n ...parts.map((pt) => pt.key),\n ...this.axisOrder.slice(p + 1),\n ];\n\n const reshaped = this.engine.reshape(this.tensor, newShape);\n return new LabeledTensor(reshaped, this.engine, newLabels, newAxisOrder);\n }\n}\n"]}
@@ -152,7 +152,12 @@ export declare function getCellRegimes(cellId: string): ReadonlyArray<RegimeValu
152
152
  * @internal
153
153
  */
154
154
  export declare function _resetRegistryForTesting(): void;
155
- type AxisConvenience<Axis extends AxisName> = (spec: Omit<RegimeSpec<Axis>, 'axis'>) => RegimeValueBase;
155
+ /**
156
+ * The shape of the per-axis `define*` helpers: a {@link RegimeSpec} with the
157
+ * axis already fixed, returning the registered value.
158
+ * @public
159
+ */
160
+ export type AxisConvenience<Axis extends AxisName> = (spec: Omit<RegimeSpec<Axis>, 'axis'>) => RegimeValueBase;
156
161
  /** Register a regime on the `'scale'` axis. @public */
157
162
  export declare const defineScale: AxisConvenience<'scale'>;
158
163
  /** Register a regime on the `'force'` axis. @public */
@@ -165,5 +170,4 @@ export declare const defineInformation: AxisConvenience<'information'>;
165
170
  export declare const defineDimension: AxisConvenience<'dimension'>;
166
171
  /** Register a regime on the `'topology'` axis. @public */
167
172
  export declare const defineTopology: AxisConvenience<'topology'>;
168
- export {};
169
173
  //# sourceMappingURL=regime-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"regime-registry.d.ts","sourceRoot":"","sources":["../../src/core/regime-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"regime-registry.d.ts","sourceRoot":"","sources":["../../src/core/regime-registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"regime-registry.js","sourceRoot":"","sources":["../../src/core/regime-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"regime-registry.js","sourceRoot":"","sources":["../../src/core/regime-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA8DH;;;;;;;;GAQG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7B,IAAI,CAAW;IACf,GAAG,CAAS;IAC5B,YAAY,IAAc,EAAE,GAAW,EAAE,QAAyB,EAAE,QAAoB;QACtF,KAAK,CACH,oDAAoD,IAAI,MAAM,GAAG,KAAK;YACtE,kCAAkC,QAAQ,CAAC,WAAW,OAAO;YAC7D,IAAI,QAAQ,CAAC,WAAW,qCAAqC;YAC7D,2CAA2C,CAC5C,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0C,CAAC;AAEnE,SAAS,aAAa,CAAC,IAAc;IACnC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QACd,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAsB;IAEtB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GAAoB;QACjC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,UAAU,EAAE;YACV,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY;YAC1C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACtE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5E;KACF,CAAC;IACF,IAAI,QAAQ,EAAE,CAAC;QACb,mDAAmD;QACnD,IACE,QAAQ,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;YAC9C,QAAQ,CAAC,UAAU,CAAC,YAAY,KAAK,SAAS,CAAC,UAAU,CAAC,YAAY,EACtE,CAAC;YACD,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc,EAAE,GAAW;IACtD,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAc;IAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,GAAW;IACvD,OAAO,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC;AAC7C,CAAC;AAED,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAE9E,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0C,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,OAAuC;IAEvC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,WAAW,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC;AAeD,uDAAuD;AACvD,MAAM,CAAC,MAAM,WAAW,GAA6B,CAAC,CAAC,EAAE,EAAE,CACzD,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAExC,uDAAuD;AACvD,MAAM,CAAC,MAAM,WAAW,GAA6B,CAAC,CAAC,EAAE,EAAE,CACzD,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAExC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAgC,CAAC,CAAC,EAAE,EAAE,CAC/D,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAE3C,6DAA6D;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAmC,CAAC,CAAC,EAAE,EAAE,CACrE,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;AAE9C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAiC,CAAC,CAAC,EAAE,EAAE,CACjE,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AAE5C,0DAA0D;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAgC,CAAC,CAAC,EAAE,EAAE,CAC/D,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC","sourcesContent":["/**\n * `RegimeType` extension system — v0.8 Proposal 5.\n *\n * Per P5 Decision #1, this module ships the extension MECHANISM\n * (`defineRegime`, `lookupRegime`, `listRegimesByAxis`,\n * `provenanceFor`) PLUS the eight v0.6-shipped closed-union values\n * pre-registered (per Phase 2 — see `src/core/regimes-builtins.ts`).\n * Closed taxonomy of new physics-regime built-ins is deferred to\n * v0.9 per Decision #1 framing.\n *\n * Per P5 Adam-H1 reconciliation, Phase 4's per-cell regime field\n * ships as a sibling registry (`regimesForCell`) keyed by cell id\n * rather than as a new field on `BridgeCell` (avoids the\n * `cellToBridge` adapter round-trip that would strip unknown\n * fields).\n *\n * Per P5 Eve-M2 reconciliation, `FluxRuleKind` is extended with\n * `'regime-consistency'` discriminator in this commit (Phase 4\n * rule fires from `addCell`).\n *\n * @module core/regime-registry\n */\n\nimport type { AxisName } from './universal-index.js';\n\n/**\n * Provenance for a registered regime. Tracks WHO registered the\n * regime (the catalog source or downstream package name) and WHEN.\n * Per P5 Decision #4.\n *\n * @public\n */\nexport interface RegimeProvenance {\n /** The package or module that registered this regime. */\n readonly registeredBy: string;\n /** ISO-8601 timestamp string. Filled in by `defineRegime`. */\n readonly registeredAt: string;\n /** Optional citation (URL, DOI, or free-text). */\n readonly citation?: string;\n}\n\n/**\n * The base shape every registered regime carries. Implementation\n * detail: callers always interact via the per-axis convenience\n * APIs (`defineScale`, `defineForce`, ... — Phase 3) which\n * narrow `axis` to a literal at the type level.\n *\n * Per P5 Decision #2 (locked field set): `axis`, `tag`,\n * `displayName`, `tags?`, `limits?`, `provenance`.\n *\n * @public\n */\nexport interface RegimeValueBase {\n readonly axis: AxisName;\n readonly tag: string;\n readonly displayName: string;\n readonly tags?: ReadonlyArray<string>;\n readonly limits?: {\n readonly min?: number;\n readonly max?: number;\n };\n readonly provenance: RegimeProvenance;\n}\n\n/**\n * Spec passed to `defineRegime` to register a new regime value\n * under a given axis. The `provenance.registeredAt` field is\n * filled by `defineRegime` (so callers don't have to thread the\n * timestamp themselves).\n *\n * @public\n */\nexport interface RegimeSpec<Axis extends AxisName = AxisName> {\n readonly axis: Axis;\n readonly tag: string;\n readonly displayName: string;\n readonly tags?: ReadonlyArray<string>;\n readonly limits?: { readonly min?: number; readonly max?: number };\n readonly provenance: Omit<RegimeProvenance, 'registeredAt'> & {\n readonly registeredAt?: string;\n };\n}\n\n/**\n * Thrown when `defineRegime` receives a spec that contradicts an\n * already-registered (axis, tag) pair. Carries both specs for\n * diagnosis. Per P5 Decision #4 + Eve-L1 reconciliation\n * (idempotent re-registration with the SAME spec is allowed;\n * collisions throw).\n *\n * @public\n */\nexport class RegimeCollisionError extends Error {\n public readonly axis: AxisName;\n public readonly tag: string;\n constructor(axis: AxisName, tag: string, existing: RegimeValueBase, incoming: RegimeSpec) {\n super(\n `RegimeRegistry.defineRegime: cannot re-register (${axis}, '${tag}') ` +\n `with a different displayName ('${existing.displayName}' vs ` +\n `'${incoming.displayName}'). Identical re-registrations are ` +\n `idempotent; only conflicting specs throw.`,\n );\n this.name = 'RegimeCollisionError';\n this.axis = axis;\n this.tag = tag;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Private singleton storage\n// ---------------------------------------------------------------------------\n\nconst registry = new Map<AxisName, Map<string, RegimeValueBase>>();\n\nfunction ensureAxisMap(axis: AxisName): Map<string, RegimeValueBase> {\n let m = registry.get(axis);\n if (!m) {\n m = new Map();\n registry.set(axis, m);\n }\n return m;\n}\n\n// ---------------------------------------------------------------------------\n// Public API (Phase 1)\n// ---------------------------------------------------------------------------\n\n/**\n * Register a regime under its `(axis, tag)` coordinate. Idempotent\n * for identical re-registrations; throws `RegimeCollisionError`\n * for the same `(axis, tag)` with different content.\n *\n * Returns the canonicalized `RegimeValueBase` (with\n * `provenance.registeredAt` filled in if omitted).\n *\n * @public\n */\nexport function defineRegime<Axis extends AxisName>(\n spec: RegimeSpec<Axis>,\n): RegimeValueBase {\n const axisMap = ensureAxisMap(spec.axis);\n const existing = axisMap.get(spec.tag);\n const canonical: RegimeValueBase = {\n axis: spec.axis,\n tag: spec.tag,\n displayName: spec.displayName,\n ...(spec.tags ? { tags: spec.tags } : {}),\n ...(spec.limits ? { limits: spec.limits } : {}),\n provenance: {\n registeredBy: spec.provenance.registeredBy,\n registeredAt: spec.provenance.registeredAt ?? new Date().toISOString(),\n ...(spec.provenance.citation ? { citation: spec.provenance.citation } : {}),\n },\n };\n if (existing) {\n // Idempotency check: identical (modulo timestamp).\n if (\n existing.displayName !== canonical.displayName ||\n existing.provenance.registeredBy !== canonical.provenance.registeredBy\n ) {\n throw new RegimeCollisionError(spec.axis, spec.tag, existing, spec);\n }\n return existing;\n }\n axisMap.set(spec.tag, canonical);\n return canonical;\n}\n\n/**\n * Look up a registered regime by `(axis, tag)`. Returns `undefined`\n * if not registered.\n *\n * @public\n */\nexport function lookupRegime(axis: AxisName, tag: string): RegimeValueBase | undefined {\n return registry.get(axis)?.get(tag);\n}\n\n/**\n * Enumerate all regimes registered under a given axis. Returns\n * a snapshot array (safe to iterate without holding a registry\n * reference).\n *\n * @public\n */\nexport function listRegimesByAxis(axis: AxisName): ReadonlyArray<RegimeValueBase> {\n const m = registry.get(axis);\n return m ? [...m.values()] : [];\n}\n\n/**\n * Get the provenance of a specific `(axis, tag)` regime. Helper\n * for audit-tooling that needs to know who registered what.\n *\n * @public\n */\nexport function provenanceFor(axis: AxisName, tag: string): RegimeProvenance | undefined {\n return lookupRegime(axis, tag)?.provenance;\n}\n\n// ---------------------------------------------------------------------------\n// Phase 4 — per-cell regime attachment (sibling registry per Adam-M1)\n// ---------------------------------------------------------------------------\n\nconst cellRegimes = new Map<string, ReadonlyArray<RegimeValueBase>>();\n\n/**\n * Attach regime values to a cell by its `id`. Per P5 Adam-M1\n * resolution, regimes ride on a sibling registry rather than as a\n * `BridgeCell.regimes?` field — this preserves the P3 surface\n * contract (no new `BridgeCell` fields) and avoids the\n * `cellToBridge` adapter round-trip.\n *\n * Idempotent (same id + same regime set is a no-op).\n *\n * @public\n */\nexport function attachRegimesToCell(\n cellId: string,\n regimes: ReadonlyArray<RegimeValueBase>,\n): void {\n cellRegimes.set(cellId, regimes);\n}\n\n/**\n * Get the regimes attached to a cell by its `id`. Returns\n * `undefined` if no regimes are attached.\n *\n * @public\n */\nexport function getCellRegimes(cellId: string): ReadonlyArray<RegimeValueBase> | undefined {\n return cellRegimes.get(cellId);\n}\n\n/**\n * Clear all registered regimes AND all cell attachments. Test-only\n * helper — DO NOT call from production code.\n *\n * @internal\n */\nexport function _resetRegistryForTesting(): void {\n registry.clear();\n cellRegimes.clear();\n}\n\n// ---------------------------------------------------------------------------\n// Phase 3 — per-axis convenience APIs (typed narrowing)\n// ---------------------------------------------------------------------------\n\n/**\n * The shape of the per-axis `define*` helpers: a {@link RegimeSpec} with the\n * axis already fixed, returning the registered value.\n * @public\n */\nexport type AxisConvenience<Axis extends AxisName> = (\n spec: Omit<RegimeSpec<Axis>, 'axis'>,\n) => RegimeValueBase;\n\n/** Register a regime on the `'scale'` axis. @public */\nexport const defineScale: AxisConvenience<'scale'> = (s) =>\n defineRegime({ ...s, axis: 'scale' });\n\n/** Register a regime on the `'force'` axis. @public */\nexport const defineForce: AxisConvenience<'force'> = (s) =>\n defineRegime({ ...s, axis: 'force' });\n\n/** Register a regime on the `'symmetry'` axis. @public */\nexport const defineSymmetry: AxisConvenience<'symmetry'> = (s) =>\n defineRegime({ ...s, axis: 'symmetry' });\n\n/** Register a regime on the `'information'` axis. @public */\nexport const defineInformation: AxisConvenience<'information'> = (s) =>\n defineRegime({ ...s, axis: 'information' });\n\n/** Register a regime on the `'dimension'` axis. @public */\nexport const defineDimension: AxisConvenience<'dimension'> = (s) =>\n defineRegime({ ...s, axis: 'dimension' });\n\n/** Register a regime on the `'topology'` axis. @public */\nexport const defineTopology: AxisConvenience<'topology'> = (s) =>\n defineRegime({ ...s, axis: 'topology' });\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"regime-rule-install.js","sourceRoot":"","sources":["../../src/core/regime-rule-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"regime-rule-install.js","sourceRoot":"","sources":["../../src/core/regime-rule-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,4BAA4B,EAAuB,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,SAAS,mBAAmB,CAAC,IAAU,EAAE,IAAc,EAAE,GAAW;IAClE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK;YACR,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACxD,KAAK,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBACxD,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;gBAC/D,KAAK,aAAa;oBAChB,OAAO,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC;gBACnE,KAAK,WAAW;oBACd,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC;gBAClE,KAAK,UAAU;oBACb,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC;YACpE,CAAC;YACD,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC;gBAC5E,KAAK,OAAO,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC;gBAC5E,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC;gBACrF,KAAK,aAAa;oBAChB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,GAAG,CAAC;gBAC5E,KAAK,WAAW;oBACd,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC;gBACxF,KAAK,UAAU;oBACb,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC;YACxF,CAAC;YACD,OAAO,KAAK,CAAC;QACf,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC9B,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC;oBACtC,KAAK,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC;oBACtC,KAAK,UAAU,EAAE,OAAO,EAAE,CAAC,QAAQ,KAAK,GAAG,CAAC;oBAC5C,KAAK,aAAa,EAAE,OAAO,EAAE,CAAC,WAAW,KAAK,GAAG,CAAC;oBAClD,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC;oBACtD,KAAK,UAAU,EAAE,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC;gBACtD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;IACP,CAAC;AACH,CAAC;AAED,4BAA4B,CAAC,CAAC,IAAU,EAAkB,EAAE;IAC1D,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAE1D,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAEjD,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO;QACL,EAAE,EAAE,IAAI,EAAE,gCAAgC;QAC1C,UAAU,EAAE;YACV,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,oBAAoB;YAC9B,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,OAAO,EACL,SAAS,IAAI,CAAC,EAAE,4BAA4B,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,IAAI;gBACzE,kBAAkB,CAAC,CAAC,WAAW,sCAAsC;gBACrE,GAAG,CAAC,CAAC,IAAI,+DAA+D;gBACxE,wBAAwB,CAAC,CAAC,IAAI,eAAe;SAChD;KACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/**\n * Wiring: installs P5's `RegimeConsistency` rule body into the\n * flux-rules registry. Importing this module activates Rule 4\n * (regime-consistency, WARNING tier) on every `UniversalTensor`.\n *\n * Phase 4 of v0.8 Proposal 5.\n *\n * The rule body checks: for each attached regime on a cell (via\n * `getCellRegimes(cell.id)`), does the regime's axis MATCH a\n * coordinate axis the cell occupies? If not, emit a warning.\n * Example: a `LawCell` with `scales: ['classical']` attached to\n * a regime whose `axis === 'scale'` but `tag === 'quantum'`\n * — the cell sits in classical coords but is tagged with a quantum\n * regime → warning.\n *\n * Per P5 Adam-M2 reconciliation, cells carry PLURAL axis arrays\n * (`LawCell.scales`, `LawCell.forces`); the rule reads any of them\n * and matches against the regime tag.\n *\n * Importing this module installs the rule. Consumers who don't\n * want regime checks can simply skip the import.\n *\n * @module core/regime-rule-install\n */\n\nimport { installRegimeConsistencyRule, type FluxRuleResult } from './flux-rules.js';\nimport { getCellRegimes } from './regime-registry.js';\nimport type { Cell } from './cell.js';\nimport type { AxisName } from './universal-index.js';\n\nfunction cellOccupiesAxisTag(cell: Cell, axis: AxisName, tag: string): boolean {\n switch (cell.kind) {\n case 'law':\n switch (axis) {\n case 'scale': return cell.scales.some((s) => s === tag);\n case 'force': return cell.forces.some((f) => f === tag);\n case 'symmetry': return cell.symmetries.some((s) => s === tag);\n case 'information':\n return cell.informationMeasures?.some((i) => i === tag) ?? false;\n case 'dimension':\n return cell.dimensions?.some((d) => String(d) === tag) ?? false;\n case 'topology':\n return cell.topologies?.some((t) => String(t) === tag) ?? false;\n }\n return false;\n case 'bridge':\n switch (axis) {\n case 'scale': return cell.source.scale === tag || cell.target.scale === tag;\n case 'force': return cell.source.force === tag || cell.target.force === tag;\n case 'symmetry': return cell.source.symmetry === tag || cell.target.symmetry === tag;\n case 'information':\n return cell.source.information === tag || cell.target.information === tag;\n case 'dimension':\n return String(cell.source.dimension) === tag || String(cell.target.dimension) === tag;\n case 'topology':\n return String(cell.source.topology) === tag || String(cell.target.topology) === tag;\n }\n return false;\n case 'emergence':\n return cell.indices.some((ix) => {\n switch (axis) {\n case 'scale': return ix.scale === tag;\n case 'force': return ix.force === tag;\n case 'symmetry': return ix.symmetry === tag;\n case 'information': return ix.information === tag;\n case 'dimension': return String(ix.dimension) === tag;\n case 'topology': return String(ix.topology) === tag;\n }\n return false;\n });\n }\n}\n\ninstallRegimeConsistencyRule((cell: Cell): FluxRuleResult => {\n const regimes = getCellRegimes(cell.id);\n if (!regimes || regimes.length === 0) return { ok: true };\n\n const mismatches = regimes.filter((r) => !cellOccupiesAxisTag(cell, r.axis, r.tag));\n if (mismatches.length === 0) return { ok: true };\n\n const m = mismatches[0];\n return {\n ok: true, // WARNING tier — does not throw\n diagnostic: {\n severity: 'warning',\n ruleName: 'regime-consistency',\n cellId: cell.id,\n message:\n `Cell '${cell.id}' is attached to regime '${m.tag}' on axis '${m.axis}' ` +\n `(displayName: '${m.displayName}') but the cell does not occupy any ` +\n `${m.axis} coordinate matching that tag. Either correct the attachment ` +\n `or extend the cell's ${m.axis} coordinates.`,\n },\n };\n});\n"]}