universal-physics-tensor 0.47.1 → 1.0.2

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 (702) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +405 -383
  3. package/bin/upt.mjs +7 -1
  4. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +108 -0
  5. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -0
  6. package/dist/atlas/benchmark/hybrid-retrieval.js +241 -0
  7. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -0
  8. package/dist/atlas/catalog-formal-ref.d.ts +24 -0
  9. package/dist/atlas/catalog-formal-ref.d.ts.map +1 -0
  10. package/dist/atlas/catalog-formal-ref.js +36 -0
  11. package/dist/atlas/catalog-formal-ref.js.map +1 -0
  12. package/dist/atlas/chain-pipeline.d.ts +52 -0
  13. package/dist/atlas/chain-pipeline.d.ts.map +1 -0
  14. package/dist/atlas/chain-pipeline.js +176 -0
  15. package/dist/atlas/chain-pipeline.js.map +1 -0
  16. package/dist/atlas/composition-table.d.ts +11 -46
  17. package/dist/atlas/composition-table.d.ts.map +1 -1
  18. package/dist/atlas/composition-table.js +7 -124
  19. package/dist/atlas/composition-table.js.map +1 -1
  20. package/dist/atlas/conventions.d.ts +4 -58
  21. package/dist/atlas/conventions.d.ts.map +1 -1
  22. package/dist/atlas/conventions.js +3 -88
  23. package/dist/atlas/conventions.js.map +1 -1
  24. package/dist/atlas/derive-evidence.d.ts +50 -3
  25. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  26. package/dist/atlas/derive-evidence.js +73 -4
  27. package/dist/atlas/derive-evidence.js.map +1 -1
  28. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  29. package/dist/atlas/diffusion/bridges-closure.js +5 -1
  30. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  31. package/dist/atlas/index.d.ts +9 -7
  32. package/dist/atlas/index.d.ts.map +1 -1
  33. package/dist/atlas/index.js +6 -5
  34. package/dist/atlas/index.js.map +1 -1
  35. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  36. package/dist/atlas/oscillators/bridges-exact.js +6 -0
  37. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  38. package/dist/atlas/oscillators/bridges-limits.d.ts +2 -0
  39. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  40. package/dist/atlas/oscillators/bridges-limits.js +11 -19
  41. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  42. package/dist/atlas/oscillators/limit-witnesses.d.ts +93 -0
  43. package/dist/atlas/oscillators/limit-witnesses.d.ts.map +1 -0
  44. package/dist/atlas/oscillators/limit-witnesses.js +152 -0
  45. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -0
  46. package/dist/atlas/oscillators/models.d.ts +2 -1
  47. package/dist/atlas/oscillators/models.d.ts.map +1 -1
  48. package/dist/atlas/oscillators/models.js +4 -3
  49. package/dist/atlas/oscillators/models.js.map +1 -1
  50. package/dist/atlas/oscillators/norm-transport-witness.d.ts +37 -0
  51. package/dist/atlas/oscillators/norm-transport-witness.d.ts.map +1 -0
  52. package/dist/atlas/oscillators/norm-transport-witness.js +58 -0
  53. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -0
  54. package/dist/atlas/oscillators/norm-transport.d.ts +44 -0
  55. package/dist/atlas/oscillators/norm-transport.d.ts.map +1 -0
  56. package/dist/atlas/oscillators/norm-transport.js +66 -0
  57. package/dist/atlas/oscillators/norm-transport.js.map +1 -0
  58. package/dist/atlas/oscillators/norms.d.ts +11 -0
  59. package/dist/atlas/oscillators/norms.d.ts.map +1 -0
  60. package/dist/atlas/oscillators/norms.js +11 -0
  61. package/dist/atlas/oscillators/norms.js.map +1 -0
  62. package/dist/atlas/oscillators/pendulum-motion.d.ts +38 -0
  63. package/dist/atlas/oscillators/pendulum-motion.d.ts.map +1 -0
  64. package/dist/atlas/oscillators/pendulum-motion.js +122 -0
  65. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -0
  66. package/dist/atlas/oscillators/phase-carriage.d.ts +38 -0
  67. package/dist/atlas/oscillators/phase-carriage.d.ts.map +1 -0
  68. package/dist/atlas/oscillators/phase-carriage.js +96 -0
  69. package/dist/atlas/oscillators/phase-carriage.js.map +1 -0
  70. package/dist/atlas/oscillators/phase-translation.d.ts +46 -0
  71. package/dist/atlas/oscillators/phase-translation.d.ts.map +1 -0
  72. package/dist/atlas/oscillators/phase-translation.js +178 -0
  73. package/dist/atlas/oscillators/phase-translation.js.map +1 -0
  74. package/dist/atlas/oscillators/position-translation.d.ts +59 -0
  75. package/dist/atlas/oscillators/position-translation.d.ts.map +1 -0
  76. package/dist/atlas/oscillators/position-translation.js +254 -0
  77. package/dist/atlas/oscillators/position-translation.js.map +1 -0
  78. package/dist/atlas/path-bound.d.ts +126 -9
  79. package/dist/atlas/path-bound.d.ts.map +1 -1
  80. package/dist/atlas/path-bound.js +372 -23
  81. package/dist/atlas/path-bound.js.map +1 -1
  82. package/dist/atlas/physjs-ref.d.ts +141 -0
  83. package/dist/atlas/physjs-ref.d.ts.map +1 -0
  84. package/dist/atlas/physjs-ref.js +878 -0
  85. package/dist/atlas/physjs-ref.js.map +1 -0
  86. package/dist/atlas/proof-target.d.ts +32 -0
  87. package/dist/atlas/proof-target.d.ts.map +1 -0
  88. package/dist/atlas/proof-target.js +140 -0
  89. package/dist/atlas/proof-target.js.map +1 -0
  90. package/dist/atlas/regime.d.ts +12 -136
  91. package/dist/atlas/regime.d.ts.map +1 -1
  92. package/dist/atlas/regime.js +8 -254
  93. package/dist/atlas/regime.js.map +1 -1
  94. package/dist/atlas/serialize.d.ts.map +1 -1
  95. package/dist/atlas/serialize.js +25 -0
  96. package/dist/atlas/serialize.js.map +1 -1
  97. package/dist/atlas/translation-registry.d.ts +22 -0
  98. package/dist/atlas/translation-registry.d.ts.map +1 -0
  99. package/dist/atlas/translation-registry.js +31 -0
  100. package/dist/atlas/translation-registry.js.map +1 -0
  101. package/dist/atlas/translation.d.ts +116 -0
  102. package/dist/atlas/translation.d.ts.map +1 -0
  103. package/dist/atlas/translation.js +34 -0
  104. package/dist/atlas/translation.js.map +1 -0
  105. package/dist/atlas/types.d.ts +74 -240
  106. package/dist/atlas/types.d.ts.map +1 -1
  107. package/dist/atlas/types.js +5 -37
  108. package/dist/atlas/types.js.map +1 -1
  109. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  110. package/dist/atlas/waves/bridges-closure.js +4 -0
  111. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  112. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  113. package/dist/atlas/waves/bridges.js +3 -0
  114. package/dist/atlas/waves/bridges.js.map +1 -1
  115. package/dist/atlas/waves/models.js +1 -1
  116. package/dist/atlas/waves/models.js.map +1 -1
  117. package/dist/atlas/witness-dominance.d.ts +50 -0
  118. package/dist/atlas/witness-dominance.d.ts.map +1 -0
  119. package/dist/atlas/witness-dominance.js +86 -0
  120. package/dist/atlas/witness-dominance.js.map +1 -0
  121. package/dist/atlas/witness-specs.d.ts +30 -0
  122. package/dist/atlas/witness-specs.d.ts.map +1 -1
  123. package/dist/atlas/witness-specs.js +107 -0
  124. package/dist/atlas/witness-specs.js.map +1 -1
  125. package/dist/bridges/be53-yang-mills-confrontation.d.ts +81 -0
  126. package/dist/bridges/be53-yang-mills-confrontation.d.ts.map +1 -0
  127. package/dist/bridges/be53-yang-mills-confrontation.js +110 -0
  128. package/dist/bridges/be53-yang-mills-confrontation.js.map +1 -0
  129. package/dist/bridges/be63-chandrasekhar-mass.d.ts.map +1 -1
  130. package/dist/bridges/be63-chandrasekhar-mass.js +1 -3
  131. package/dist/bridges/be63-chandrasekhar-mass.js.map +1 -1
  132. package/dist/bridges/confrontation-coverage.d.ts +5 -61
  133. package/dist/bridges/confrontation-coverage.d.ts.map +1 -1
  134. package/dist/bridges/confrontation-coverage.js +5 -70
  135. package/dist/bridges/confrontation-coverage.js.map +1 -1
  136. package/dist/bridges/confrontations.d.ts +1 -1
  137. package/dist/bridges/confrontations.d.ts.map +1 -1
  138. package/dist/bridges/confrontations.js +291 -3
  139. package/dist/bridges/confrontations.js.map +1 -1
  140. package/dist/bridges/equations/be-13-einstein-trace.d.ts +2 -3
  141. package/dist/bridges/equations/be-13-einstein-trace.d.ts.map +1 -1
  142. package/dist/bridges/equations/be-13-einstein-trace.js +2 -3
  143. package/dist/bridges/equations/be-13-einstein-trace.js.map +1 -1
  144. package/dist/bridges/equations/be-38-mond.d.ts +7 -5
  145. package/dist/bridges/equations/be-38-mond.d.ts.map +1 -1
  146. package/dist/bridges/equations/be-38-mond.js +7 -5
  147. package/dist/bridges/equations/be-38-mond.js.map +1 -1
  148. package/dist/bridges/equations/be-42-hawking-temperature.d.ts +3 -0
  149. package/dist/bridges/equations/be-42-hawking-temperature.d.ts.map +1 -1
  150. package/dist/bridges/equations/be-42-hawking-temperature.js +8 -1
  151. package/dist/bridges/equations/be-42-hawking-temperature.js.map +1 -1
  152. package/dist/bridges/equations/be-53-yang-mills-beta.d.ts +21 -0
  153. package/dist/bridges/equations/be-53-yang-mills-beta.d.ts.map +1 -1
  154. package/dist/bridges/equations/be-53-yang-mills-beta.js +12 -0
  155. package/dist/bridges/equations/be-53-yang-mills-beta.js.map +1 -1
  156. package/dist/bridges/evaluator-inputs.d.ts +21 -0
  157. package/dist/bridges/evaluator-inputs.d.ts.map +1 -0
  158. package/dist/bridges/evaluator-inputs.js +75 -0
  159. package/dist/bridges/evaluator-inputs.js.map +1 -0
  160. package/dist/bridges/evaluators.d.ts +46 -0
  161. package/dist/bridges/evaluators.d.ts.map +1 -1
  162. package/dist/bridges/evaluators.js +57 -16
  163. package/dist/bridges/evaluators.js.map +1 -1
  164. package/dist/bridges/gravitational-lensing.d.ts +1 -1
  165. package/dist/bridges/gravitational-lensing.js +1 -1
  166. package/dist/bridges/index.d.ts +3 -2
  167. package/dist/bridges/index.d.ts.map +1 -1
  168. package/dist/bridges/index.js +15 -14
  169. package/dist/bridges/index.js.map +1 -1
  170. package/dist/bridges/observations/types.d.ts +110 -2
  171. package/dist/bridges/observations/types.d.ts.map +1 -1
  172. package/dist/bridges/observations/types.js +29 -0
  173. package/dist/bridges/observations/types.js.map +1 -1
  174. package/dist/bridges/perihelion-precession.d.ts +1 -1
  175. package/dist/bridges/perihelion-precession.js +1 -1
  176. package/dist/bridges/tensor-index.d.ts +39 -0
  177. package/dist/bridges/tensor-index.d.ts.map +1 -0
  178. package/dist/bridges/tensor-index.js +66 -0
  179. package/dist/bridges/tensor-index.js.map +1 -0
  180. package/dist/canonical/canonical-equation.d.ts +1 -1
  181. package/dist/canonical/canonical-equation.d.ts.map +1 -1
  182. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  183. package/dist/canonical/entries/atomic.js +32 -10
  184. package/dist/canonical/entries/atomic.js.map +1 -1
  185. package/dist/canonical/entries/dimensional-classics.js +2 -2
  186. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  187. package/dist/canonical/entries/mechanics.d.ts.map +1 -1
  188. package/dist/canonical/entries/mechanics.js +10 -6
  189. package/dist/canonical/entries/mechanics.js.map +1 -1
  190. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  191. package/dist/canonical/entries/relativity.js +41 -8
  192. package/dist/canonical/entries/relativity.js.map +1 -1
  193. package/dist/canonical/entries/thermo-nuclear-cosmo.js +5 -5
  194. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  195. package/dist/canonical/linkage.d.ts.map +1 -1
  196. package/dist/canonical/linkage.js +31 -28
  197. package/dist/canonical/linkage.js.map +1 -1
  198. package/dist/canonical/normal-form.d.ts +17 -0
  199. package/dist/canonical/normal-form.d.ts.map +1 -1
  200. package/dist/canonical/normal-form.js +21 -4
  201. package/dist/canonical/normal-form.js.map +1 -1
  202. package/dist/canonical/structural.d.ts +84 -0
  203. package/dist/canonical/structural.d.ts.map +1 -0
  204. package/dist/canonical/structural.js +107 -0
  205. package/dist/canonical/structural.js.map +1 -0
  206. package/dist/cases/brownian-sphere.d.ts +68 -0
  207. package/dist/cases/brownian-sphere.d.ts.map +1 -0
  208. package/dist/cases/brownian-sphere.js +353 -0
  209. package/dist/cases/brownian-sphere.js.map +1 -0
  210. package/dist/cases/damped-resonator.d.ts +23 -0
  211. package/dist/cases/damped-resonator.d.ts.map +1 -0
  212. package/dist/cases/damped-resonator.js +224 -0
  213. package/dist/cases/damped-resonator.js.map +1 -0
  214. package/dist/cases/index.d.ts +11 -0
  215. package/dist/cases/index.d.ts.map +1 -0
  216. package/dist/cases/index.js +29 -0
  217. package/dist/cases/index.js.map +1 -0
  218. package/dist/cases/kepler-rv.d.ts +13 -0
  219. package/dist/cases/kepler-rv.d.ts.map +1 -0
  220. package/dist/cases/kepler-rv.js +168 -0
  221. package/dist/cases/kepler-rv.js.map +1 -0
  222. package/dist/cases/lumped-cooling.d.ts +46 -0
  223. package/dist/cases/lumped-cooling.d.ts.map +1 -0
  224. package/dist/cases/lumped-cooling.js +261 -0
  225. package/dist/cases/lumped-cooling.js.map +1 -0
  226. package/dist/cases/quadrature.d.ts +14 -0
  227. package/dist/cases/quadrature.d.ts.map +1 -0
  228. package/dist/cases/quadrature.js +41 -0
  229. package/dist/cases/quadrature.js.map +1 -0
  230. package/dist/cases/resistor-noise.d.ts +14 -0
  231. package/dist/cases/resistor-noise.d.ts.map +1 -0
  232. package/dist/cases/resistor-noise.js +210 -0
  233. package/dist/cases/resistor-noise.js.map +1 -0
  234. package/dist/cases/skin-depth.d.ts +21 -0
  235. package/dist/cases/skin-depth.d.ts.map +1 -0
  236. package/dist/cases/skin-depth.js +174 -0
  237. package/dist/cases/skin-depth.js.map +1 -0
  238. package/dist/cases/types.d.ts +115 -0
  239. package/dist/cases/types.d.ts.map +1 -0
  240. package/dist/cases/types.js +20 -0
  241. package/dist/cases/types.js.map +1 -0
  242. package/dist/cli/commands/_atlas-map.d.ts +409 -0
  243. package/dist/cli/commands/_atlas-map.d.ts.map +1 -0
  244. package/dist/cli/commands/_atlas-map.js +1014 -0
  245. package/dist/cli/commands/_atlas-map.js.map +1 -0
  246. package/dist/cli/commands/_atlas-route.d.ts +111 -0
  247. package/dist/cli/commands/_atlas-route.d.ts.map +1 -0
  248. package/dist/cli/commands/_atlas-route.js +140 -0
  249. package/dist/cli/commands/_atlas-route.js.map +1 -0
  250. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  251. package/dist/cli/commands/_discovery-opts.js +10 -1
  252. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  253. package/dist/cli/commands/atlas.d.ts +20 -0
  254. package/dist/cli/commands/atlas.d.ts.map +1 -1
  255. package/dist/cli/commands/atlas.js +333 -19
  256. package/dist/cli/commands/atlas.js.map +1 -1
  257. package/dist/cli/commands/audit.d.ts.map +1 -1
  258. package/dist/cli/commands/audit.js +12 -3
  259. package/dist/cli/commands/audit.js.map +1 -1
  260. package/dist/cli/commands/axes.js +4 -4
  261. package/dist/cli/commands/candidates.d.ts.map +1 -1
  262. package/dist/cli/commands/candidates.js +3 -2
  263. package/dist/cli/commands/candidates.js.map +1 -1
  264. package/dist/cli/commands/canonical.d.ts.map +1 -1
  265. package/dist/cli/commands/canonical.js +39 -10
  266. package/dist/cli/commands/canonical.js.map +1 -1
  267. package/dist/cli/commands/confront.d.ts.map +1 -1
  268. package/dist/cli/commands/confront.js +210 -28
  269. package/dist/cli/commands/confront.js.map +1 -1
  270. package/dist/cli/commands/connectors.d.ts.map +1 -1
  271. package/dist/cli/commands/connectors.js +5 -4
  272. package/dist/cli/commands/connectors.js.map +1 -1
  273. package/dist/cli/commands/coverage.js +3 -3
  274. package/dist/cli/commands/derive.d.ts.map +1 -1
  275. package/dist/cli/commands/derive.js +22 -9
  276. package/dist/cli/commands/derive.js.map +1 -1
  277. package/dist/cli/commands/discover.d.ts.map +1 -1
  278. package/dist/cli/commands/discover.js +149 -32
  279. package/dist/cli/commands/discover.js.map +1 -1
  280. package/dist/cli/commands/eval.d.ts.map +1 -1
  281. package/dist/cli/commands/eval.js +87 -17
  282. package/dist/cli/commands/eval.js.map +1 -1
  283. package/dist/cli/commands/evaluate.d.ts +30 -0
  284. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  285. package/dist/cli/commands/evaluate.js +441 -25
  286. package/dist/cli/commands/evaluate.js.map +1 -1
  287. package/dist/cli/commands/explain.d.ts.map +1 -1
  288. package/dist/cli/commands/explain.js +38 -11
  289. package/dist/cli/commands/explain.js.map +1 -1
  290. package/dist/cli/commands/frontier.d.ts +3 -0
  291. package/dist/cli/commands/frontier.d.ts.map +1 -0
  292. package/dist/cli/commands/frontier.js +28 -0
  293. package/dist/cli/commands/frontier.js.map +1 -0
  294. package/dist/cli/commands/ground.d.ts.map +1 -1
  295. package/dist/cli/commands/ground.js +37 -12
  296. package/dist/cli/commands/ground.js.map +1 -1
  297. package/dist/cli/commands/index.d.ts +5 -0
  298. package/dist/cli/commands/index.d.ts.map +1 -1
  299. package/dist/cli/commands/index.js +5 -0
  300. package/dist/cli/commands/index.js.map +1 -1
  301. package/dist/cli/commands/map.d.ts +8 -0
  302. package/dist/cli/commands/map.d.ts.map +1 -1
  303. package/dist/cli/commands/map.js +385 -57
  304. package/dist/cli/commands/map.js.map +1 -1
  305. package/dist/cli/commands/metric.d.ts +3 -0
  306. package/dist/cli/commands/metric.d.ts.map +1 -0
  307. package/dist/cli/commands/metric.js +136 -0
  308. package/dist/cli/commands/metric.js.map +1 -0
  309. package/dist/cli/commands/path.d.ts +109 -1
  310. package/dist/cli/commands/path.d.ts.map +1 -1
  311. package/dist/cli/commands/path.js +1019 -109
  312. package/dist/cli/commands/path.js.map +1 -1
  313. package/dist/cli/commands/predict.d.ts.map +1 -1
  314. package/dist/cli/commands/predict.js +3 -2
  315. package/dist/cli/commands/predict.js.map +1 -1
  316. package/dist/cli/commands/priority.d.ts.map +1 -1
  317. package/dist/cli/commands/priority.js +3 -2
  318. package/dist/cli/commands/priority.js.map +1 -1
  319. package/dist/cli/commands/probe.d.ts +7 -0
  320. package/dist/cli/commands/probe.d.ts.map +1 -1
  321. package/dist/cli/commands/probe.js +234 -52
  322. package/dist/cli/commands/probe.js.map +1 -1
  323. package/dist/cli/commands/recover.d.ts.map +1 -1
  324. package/dist/cli/commands/recover.js +17 -6
  325. package/dist/cli/commands/recover.js.map +1 -1
  326. package/dist/cli/commands/regime.d.ts +1 -1
  327. package/dist/cli/commands/regime.d.ts.map +1 -1
  328. package/dist/cli/commands/regime.js +134 -33
  329. package/dist/cli/commands/regime.js.map +1 -1
  330. package/dist/cli/commands/retrieve.d.ts +3 -0
  331. package/dist/cli/commands/retrieve.d.ts.map +1 -0
  332. package/dist/cli/commands/retrieve.js +65 -0
  333. package/dist/cli/commands/retrieve.js.map +1 -0
  334. package/dist/cli/commands/search.d.ts +3 -0
  335. package/dist/cli/commands/search.d.ts.map +1 -0
  336. package/dist/cli/commands/search.js +70 -0
  337. package/dist/cli/commands/search.js.map +1 -0
  338. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  339. package/dist/cli/commands/symbolic.js +107 -16
  340. package/dist/cli/commands/symbolic.js.map +1 -1
  341. package/dist/cli/commands/testplan.d.ts +3 -0
  342. package/dist/cli/commands/testplan.d.ts.map +1 -0
  343. package/dist/cli/commands/testplan.js +131 -0
  344. package/dist/cli/commands/testplan.js.map +1 -0
  345. package/dist/cli/conventions.d.ts +22 -0
  346. package/dist/cli/conventions.d.ts.map +1 -0
  347. package/dist/cli/conventions.js +48 -0
  348. package/dist/cli/conventions.js.map +1 -0
  349. package/dist/cli/euler-guard.d.ts +9 -0
  350. package/dist/cli/euler-guard.d.ts.map +1 -0
  351. package/dist/cli/euler-guard.js +11 -0
  352. package/dist/cli/euler-guard.js.map +1 -0
  353. package/dist/cli/eval-numbers.d.ts +26 -0
  354. package/dist/cli/eval-numbers.d.ts.map +1 -0
  355. package/dist/cli/eval-numbers.js +48 -0
  356. package/dist/cli/eval-numbers.js.map +1 -0
  357. package/dist/cli/expr-print.d.ts +25 -0
  358. package/dist/cli/expr-print.d.ts.map +1 -0
  359. package/dist/cli/expr-print.js +123 -0
  360. package/dist/cli/expr-print.js.map +1 -0
  361. package/dist/cli/graphs.d.ts +26 -0
  362. package/dist/cli/graphs.d.ts.map +1 -1
  363. package/dist/cli/graphs.js +19 -0
  364. package/dist/cli/graphs.js.map +1 -1
  365. package/dist/cli/main.d.ts +4 -10
  366. package/dist/cli/main.d.ts.map +1 -1
  367. package/dist/cli/main.js +370 -167
  368. package/dist/cli/main.js.map +1 -1
  369. package/dist/cli/map-evidence.d.ts +47 -0
  370. package/dist/cli/map-evidence.d.ts.map +1 -0
  371. package/dist/cli/map-evidence.js +53 -0
  372. package/dist/cli/map-evidence.js.map +1 -0
  373. package/dist/cli/output.d.ts +21 -1
  374. package/dist/cli/output.d.ts.map +1 -1
  375. package/dist/cli/output.js +5 -1
  376. package/dist/cli/output.js.map +1 -1
  377. package/dist/{composition → cli}/poster-source.d.ts +3 -2
  378. package/dist/cli/poster-source.d.ts.map +1 -0
  379. package/dist/{composition → cli}/poster-source.js +2 -1
  380. package/dist/cli/poster-source.js.map +1 -0
  381. package/dist/cli/record-reach.d.ts +44 -0
  382. package/dist/cli/record-reach.d.ts.map +1 -0
  383. package/dist/cli/record-reach.js +228 -0
  384. package/dist/cli/record-reach.js.map +1 -0
  385. package/dist/cli/record-tables.d.ts +38 -0
  386. package/dist/cli/record-tables.d.ts.map +1 -0
  387. package/dist/cli/record-tables.js +110 -0
  388. package/dist/cli/record-tables.js.map +1 -0
  389. package/dist/cli/record.d.ts +141 -0
  390. package/dist/cli/record.d.ts.map +1 -0
  391. package/dist/cli/record.js +612 -0
  392. package/dist/cli/record.js.map +1 -0
  393. package/dist/cli/search-index.d.ts +56 -0
  394. package/dist/cli/search-index.d.ts.map +1 -0
  395. package/dist/cli/search-index.js +190 -0
  396. package/dist/cli/search-index.js.map +1 -0
  397. package/dist/cli/statuses.d.ts +25 -0
  398. package/dist/cli/statuses.d.ts.map +1 -0
  399. package/dist/cli/statuses.js +276 -0
  400. package/dist/cli/statuses.js.map +1 -0
  401. package/dist/cli/version.d.ts +8 -0
  402. package/dist/cli/version.d.ts.map +1 -1
  403. package/dist/cli/version.js +32 -1
  404. package/dist/cli/version.js.map +1 -1
  405. package/dist/cli-api.d.ts +34 -16
  406. package/dist/cli-api.d.ts.map +1 -1
  407. package/dist/cli-api.js +32 -12
  408. package/dist/cli-api.js.map +1 -1
  409. package/dist/composition/audit-coverage.d.ts +70 -0
  410. package/dist/composition/audit-coverage.d.ts.map +1 -0
  411. package/dist/composition/audit-coverage.js +80 -0
  412. package/dist/composition/audit-coverage.js.map +1 -0
  413. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  414. package/dist/composition/bridge-analysis.js +2 -1
  415. package/dist/composition/bridge-analysis.js.map +1 -1
  416. package/dist/composition/buckingham-filter.d.ts +34 -0
  417. package/dist/composition/buckingham-filter.d.ts.map +1 -0
  418. package/dist/composition/buckingham-filter.js +64 -0
  419. package/dist/composition/buckingham-filter.js.map +1 -0
  420. package/dist/composition/canonical-compare.d.ts +29 -16
  421. package/dist/composition/canonical-compare.d.ts.map +1 -1
  422. package/dist/composition/canonical-compare.js +355 -59
  423. package/dist/composition/canonical-compare.js.map +1 -1
  424. package/dist/composition/canonical-graph.d.ts +2 -2
  425. package/dist/composition/canonical-graph.js +3 -3
  426. package/dist/composition/canonical-graph.js.map +1 -1
  427. package/dist/composition/canonical-prefactors.d.ts +24 -1
  428. package/dist/composition/canonical-prefactors.d.ts.map +1 -1
  429. package/dist/composition/canonical-prefactors.js +97 -1
  430. package/dist/composition/canonical-prefactors.js.map +1 -1
  431. package/dist/composition/catalog-graph.d.ts +4 -4
  432. package/dist/composition/catalog-graph.d.ts.map +1 -1
  433. package/dist/composition/catalog-graph.js +6 -4
  434. package/dist/composition/catalog-graph.js.map +1 -1
  435. package/dist/composition/chain-candidate.d.ts +43 -0
  436. package/dist/composition/chain-candidate.d.ts.map +1 -0
  437. package/dist/composition/chain-candidate.js +56 -0
  438. package/dist/composition/chain-candidate.js.map +1 -0
  439. package/dist/composition/chain-match.d.ts +19 -0
  440. package/dist/composition/chain-match.d.ts.map +1 -0
  441. package/dist/composition/chain-match.js +10 -0
  442. package/dist/composition/chain-match.js.map +1 -0
  443. package/dist/composition/chain-regime.d.ts +34 -0
  444. package/dist/composition/chain-regime.d.ts.map +1 -0
  445. package/dist/composition/chain-regime.js +89 -0
  446. package/dist/composition/chain-regime.js.map +1 -0
  447. package/dist/composition/compose-symbolic.js +1 -1
  448. package/dist/composition/compose-symbolic.js.map +1 -1
  449. package/dist/composition/compose.d.ts +11 -0
  450. package/dist/composition/compose.d.ts.map +1 -1
  451. package/dist/composition/compose.js +30 -10
  452. package/dist/composition/compose.js.map +1 -1
  453. package/dist/composition/composition-recovery.d.ts +47 -0
  454. package/dist/composition/composition-recovery.d.ts.map +1 -0
  455. package/dist/composition/composition-recovery.js +77 -0
  456. package/dist/composition/composition-recovery.js.map +1 -0
  457. package/dist/composition/consequence.d.ts +39 -0
  458. package/dist/composition/consequence.d.ts.map +1 -1
  459. package/dist/composition/consequence.js +37 -0
  460. package/dist/composition/consequence.js.map +1 -1
  461. package/dist/{bridges → composition}/descriptor.d.ts +6 -3
  462. package/dist/composition/descriptor.d.ts.map +1 -0
  463. package/dist/{bridges → composition}/descriptor.js +7 -4
  464. package/dist/composition/descriptor.js.map +1 -0
  465. package/dist/composition/discovery.d.ts +20 -0
  466. package/dist/composition/discovery.d.ts.map +1 -1
  467. package/dist/composition/discovery.js +27 -5
  468. package/dist/composition/discovery.js.map +1 -1
  469. package/dist/composition/edge.d.ts +1 -1
  470. package/dist/composition/edge.d.ts.map +1 -1
  471. package/dist/composition/edge.js.map +1 -1
  472. package/dist/composition/edges/_catalog-helpers.d.ts +4 -0
  473. package/dist/composition/edges/_catalog-helpers.d.ts.map +1 -1
  474. package/dist/composition/edges/_catalog-helpers.js +15 -0
  475. package/dist/composition/edges/_catalog-helpers.js.map +1 -1
  476. package/dist/composition/edges/calibration.d.ts +0 -9
  477. package/dist/composition/edges/calibration.d.ts.map +1 -1
  478. package/dist/composition/edges/calibration.js +85 -0
  479. package/dist/composition/edges/calibration.js.map +1 -1
  480. package/dist/composition/edges/catalog-condensed-matter.d.ts +0 -9
  481. package/dist/composition/edges/catalog-condensed-matter.d.ts.map +1 -1
  482. package/dist/composition/edges/catalog-condensed-matter.js +32 -1
  483. package/dist/composition/edges/catalog-condensed-matter.js.map +1 -1
  484. package/dist/composition/edges/catalog-fields.d.ts.map +1 -1
  485. package/dist/composition/edges/catalog-fields.js +2 -1
  486. package/dist/composition/edges/catalog-fields.js.map +1 -1
  487. package/dist/composition/edges/catalog-full.d.ts +4 -2
  488. package/dist/composition/edges/catalog-full.d.ts.map +1 -1
  489. package/dist/composition/edges/catalog-full.js +4 -2
  490. package/dist/composition/edges/catalog-full.js.map +1 -1
  491. package/dist/composition/edges/catalog-gravitation-cosmology.d.ts +0 -10
  492. package/dist/composition/edges/catalog-gravitation-cosmology.d.ts.map +1 -1
  493. package/dist/composition/edges/catalog-gravitation-cosmology.js +31 -1
  494. package/dist/composition/edges/catalog-gravitation-cosmology.js.map +1 -1
  495. package/dist/composition/edges/catalog-quantum.d.ts +0 -10
  496. package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
  497. package/dist/composition/edges/catalog-quantum.js +53 -17
  498. package/dist/composition/edges/catalog-quantum.js.map +1 -1
  499. package/dist/composition/edges/catalog-tranche.d.ts +0 -15
  500. package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
  501. package/dist/composition/edges/catalog-tranche.js +70 -16
  502. package/dist/composition/edges/catalog-tranche.js.map +1 -1
  503. package/dist/composition/edges/proved-seeds.d.ts +39 -0
  504. package/dist/composition/edges/proved-seeds.d.ts.map +1 -0
  505. package/dist/composition/edges/proved-seeds.js +197 -0
  506. package/dist/composition/edges/proved-seeds.js.map +1 -0
  507. package/dist/composition/enumerate.d.ts +20 -0
  508. package/dist/composition/enumerate.d.ts.map +1 -1
  509. package/dist/composition/enumerate.js +23 -0
  510. package/dist/composition/enumerate.js.map +1 -1
  511. package/dist/composition/expr-eval.d.ts +5 -4
  512. package/dist/composition/expr-eval.d.ts.map +1 -1
  513. package/dist/composition/expr-eval.js +40 -6
  514. package/dist/composition/expr-eval.js.map +1 -1
  515. package/dist/composition/expr-simplify.js +1 -1
  516. package/dist/composition/expr-simplify.js.map +1 -1
  517. package/dist/composition/expr-subst.d.ts +2 -1
  518. package/dist/composition/expr-subst.d.ts.map +1 -1
  519. package/dist/composition/expr-subst.js +9 -2
  520. package/dist/composition/expr-subst.js.map +1 -1
  521. package/dist/composition/frontier-account.d.ts +78 -0
  522. package/dist/composition/frontier-account.d.ts.map +1 -0
  523. package/dist/composition/frontier-account.js +127 -0
  524. package/dist/composition/frontier-account.js.map +1 -0
  525. package/dist/composition/graph-viz.d.ts +7 -22
  526. package/dist/composition/graph-viz.d.ts.map +1 -1
  527. package/dist/composition/graph-viz.js +4 -27
  528. package/dist/composition/graph-viz.js.map +1 -1
  529. package/dist/composition/grounding.d.ts +49 -0
  530. package/dist/composition/grounding.d.ts.map +1 -1
  531. package/dist/composition/grounding.js +38 -0
  532. package/dist/composition/grounding.js.map +1 -1
  533. package/dist/composition/index.d.ts +0 -2
  534. package/dist/composition/index.d.ts.map +1 -1
  535. package/dist/composition/index.js +1 -1
  536. package/dist/composition/index.js.map +1 -1
  537. package/dist/composition/not-composable-seeds.d.ts +30 -0
  538. package/dist/composition/not-composable-seeds.d.ts.map +1 -0
  539. package/dist/composition/not-composable-seeds.js +90 -0
  540. package/dist/composition/not-composable-seeds.js.map +1 -0
  541. package/dist/composition/probe/expression-gaps.d.ts +27 -0
  542. package/dist/composition/probe/expression-gaps.d.ts.map +1 -0
  543. package/dist/composition/probe/expression-gaps.js +47 -0
  544. package/dist/composition/probe/expression-gaps.js.map +1 -0
  545. package/dist/composition/probe/frontier.d.ts +2 -1
  546. package/dist/composition/probe/frontier.d.ts.map +1 -1
  547. package/dist/composition/probe/frontier.js +3 -2
  548. package/dist/composition/probe/frontier.js.map +1 -1
  549. package/dist/composition/probe/index.d.ts +4 -1
  550. package/dist/composition/probe/index.d.ts.map +1 -1
  551. package/dist/composition/probe/index.js +3 -1
  552. package/dist/composition/probe/index.js.map +1 -1
  553. package/dist/composition/probe/pipeline.d.ts +2 -0
  554. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  555. package/dist/composition/probe/pipeline.js +6 -2
  556. package/dist/composition/probe/pipeline.js.map +1 -1
  557. package/dist/composition/probe/problem.d.ts +7 -0
  558. package/dist/composition/probe/problem.d.ts.map +1 -1
  559. package/dist/composition/probe/problem.js +15 -5
  560. package/dist/composition/probe/problem.js.map +1 -1
  561. package/dist/composition/probe/search-budget.d.ts.map +1 -1
  562. package/dist/composition/probe/search-budget.js +6 -2
  563. package/dist/composition/probe/search-budget.js.map +1 -1
  564. package/dist/composition/probe/study.d.ts +340 -0
  565. package/dist/composition/probe/study.d.ts.map +1 -0
  566. package/dist/composition/probe/study.js +1519 -0
  567. package/dist/composition/probe/study.js.map +1 -0
  568. package/dist/composition/proposed-bridges.js +1 -1
  569. package/dist/composition/proposed-bridges.js.map +1 -1
  570. package/dist/composition/quantities/_dims.d.ts +6 -0
  571. package/dist/composition/quantities/_dims.d.ts.map +1 -1
  572. package/dist/composition/quantities/_dims.js +6 -0
  573. package/dist/composition/quantities/_dims.js.map +1 -1
  574. package/dist/composition/quantities/condensed-matter.d.ts +16 -0
  575. package/dist/composition/quantities/condensed-matter.d.ts.map +1 -1
  576. package/dist/composition/quantities/condensed-matter.js +43 -2
  577. package/dist/composition/quantities/condensed-matter.js.map +1 -1
  578. package/dist/composition/quantities/fields.d.ts +10 -0
  579. package/dist/composition/quantities/fields.d.ts.map +1 -1
  580. package/dist/composition/quantities/fields.js +37 -2
  581. package/dist/composition/quantities/fields.js.map +1 -1
  582. package/dist/composition/quantities/gravitation-cosmology.d.ts +4 -0
  583. package/dist/composition/quantities/gravitation-cosmology.d.ts.map +1 -1
  584. package/dist/composition/quantities/gravitation-cosmology.js +14 -0
  585. package/dist/composition/quantities/gravitation-cosmology.js.map +1 -1
  586. package/dist/composition/quantities/quantum.d.ts +2 -0
  587. package/dist/composition/quantities/quantum.d.ts.map +1 -1
  588. package/dist/composition/quantities/quantum.js +7 -0
  589. package/dist/composition/quantities/quantum.js.map +1 -1
  590. package/dist/composition/quantities.d.ts +4 -16
  591. package/dist/composition/quantities.d.ts.map +1 -1
  592. package/dist/composition/quantities.js +4 -16
  593. package/dist/composition/quantities.js.map +1 -1
  594. package/dist/composition/retrodiction.d.ts.map +1 -1
  595. package/dist/composition/retrodiction.js +6 -2
  596. package/dist/composition/retrodiction.js.map +1 -1
  597. package/dist/composition/uncertainty.d.ts +1 -1
  598. package/dist/composition/uncertainty.d.ts.map +1 -1
  599. package/dist/composition/user-equation.d.ts +79 -8
  600. package/dist/composition/user-equation.d.ts.map +1 -1
  601. package/dist/composition/user-equation.js +224 -32
  602. package/dist/composition/user-equation.js.map +1 -1
  603. package/dist/core/constants.d.ts +17 -5
  604. package/dist/core/constants.d.ts.map +1 -1
  605. package/dist/core/constants.js +17 -5
  606. package/dist/core/constants.js.map +1 -1
  607. package/dist/core/types.d.ts +1 -1
  608. package/dist/core/types.d.ts.map +1 -1
  609. package/dist/core/types.js +2 -1
  610. package/dist/core/types.js.map +1 -1
  611. package/dist/dimensional/curvature.d.ts +7 -56
  612. package/dist/dimensional/curvature.d.ts.map +1 -1
  613. package/dist/dimensional/curvature.js +7 -76
  614. package/dist/dimensional/curvature.js.map +1 -1
  615. package/dist/dimensional/dimension-spec.d.ts +7 -1
  616. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  617. package/dist/dimensional/dimension-spec.js +131 -3
  618. package/dist/dimensional/dimension-spec.js.map +1 -1
  619. package/dist/dimensional/formula-names.d.ts +30 -0
  620. package/dist/dimensional/formula-names.d.ts.map +1 -0
  621. package/dist/dimensional/formula-names.js +37 -0
  622. package/dist/dimensional/formula-names.js.map +1 -0
  623. package/dist/dimensional/natural-units.d.ts +33 -0
  624. package/dist/dimensional/natural-units.d.ts.map +1 -0
  625. package/dist/dimensional/natural-units.js +58 -0
  626. package/dist/dimensional/natural-units.js.map +1 -0
  627. package/dist/{composition → dimensional}/symbolic-constants.d.ts +21 -2
  628. package/dist/dimensional/symbolic-constants.d.ts.map +1 -0
  629. package/dist/dimensional/symbolic-constants.js +122 -0
  630. package/dist/dimensional/symbolic-constants.js.map +1 -0
  631. package/dist/dimensional/unit-convention.d.ts +30 -0
  632. package/dist/dimensional/unit-convention.d.ts.map +1 -0
  633. package/dist/dimensional/unit-convention.js +60 -0
  634. package/dist/dimensional/unit-convention.js.map +1 -0
  635. package/dist/dimensional/units.d.ts +43 -0
  636. package/dist/dimensional/units.d.ts.map +1 -0
  637. package/dist/dimensional/units.js +197 -0
  638. package/dist/dimensional/units.js.map +1 -0
  639. package/dist/index.d.ts +11 -5
  640. package/dist/index.d.ts.map +1 -1
  641. package/dist/index.js +10 -3
  642. package/dist/index.js.map +1 -1
  643. package/dist/numerical/bianchi-residual.d.ts +55 -0
  644. package/dist/numerical/bianchi-residual.d.ts.map +1 -0
  645. package/dist/numerical/bianchi-residual.js +79 -0
  646. package/dist/numerical/bianchi-residual.js.map +1 -0
  647. package/dist/numerical/binding-value.d.ts +67 -0
  648. package/dist/numerical/binding-value.d.ts.map +1 -0
  649. package/dist/numerical/binding-value.js +349 -0
  650. package/dist/numerical/binding-value.js.map +1 -0
  651. package/dist/numerical/connection-lowering-helpers.d.ts.map +1 -1
  652. package/dist/numerical/connection-lowering-helpers.js +13 -26
  653. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  654. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  655. package/dist/numerical/curvature-lowering-helpers.js +9 -0
  656. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  657. package/dist/numerical/float64-engine.d.ts.map +1 -1
  658. package/dist/numerical/float64-engine.js +23 -16
  659. package/dist/numerical/float64-engine.js.map +1 -1
  660. package/dist/numerical/formula-dimension.d.ts +14 -0
  661. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  662. package/dist/numerical/formula-dimension.js +56 -9
  663. package/dist/numerical/formula-dimension.js.map +1 -1
  664. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  665. package/dist/numerical/formula-mathts.js +75 -6
  666. package/dist/numerical/formula-mathts.js.map +1 -1
  667. package/dist/numerical/formula.d.ts +33 -0
  668. package/dist/numerical/formula.d.ts.map +1 -1
  669. package/dist/numerical/formula.js +75 -6
  670. package/dist/numerical/formula.js.map +1 -1
  671. package/dist/numerical/spacetime-metrics.d.ts +243 -0
  672. package/dist/numerical/spacetime-metrics.d.ts.map +1 -0
  673. package/dist/numerical/spacetime-metrics.js +1056 -0
  674. package/dist/numerical/spacetime-metrics.js.map +1 -0
  675. package/dist/relations/category.d.ts +38 -0
  676. package/dist/relations/category.d.ts.map +1 -0
  677. package/dist/relations/category.js +23 -0
  678. package/dist/relations/category.js.map +1 -0
  679. package/dist/relations/composition-table.d.ts +61 -0
  680. package/dist/relations/composition-table.d.ts.map +1 -0
  681. package/dist/relations/composition-table.js +140 -0
  682. package/dist/relations/composition-table.js.map +1 -0
  683. package/dist/relations/conventions.d.ts +63 -0
  684. package/dist/relations/conventions.d.ts.map +1 -0
  685. package/dist/relations/conventions.js +93 -0
  686. package/dist/relations/conventions.js.map +1 -0
  687. package/dist/relations/regime.d.ts +159 -0
  688. package/dist/relations/regime.d.ts.map +1 -0
  689. package/dist/relations/regime.js +304 -0
  690. package/dist/relations/regime.js.map +1 -0
  691. package/dist/relations/types.d.ts +257 -0
  692. package/dist/relations/types.d.ts.map +1 -0
  693. package/dist/relations/types.js +35 -0
  694. package/dist/relations/types.js.map +1 -0
  695. package/package.json +166 -163
  696. package/dist/bridges/descriptor.d.ts.map +0 -1
  697. package/dist/bridges/descriptor.js.map +0 -1
  698. package/dist/composition/poster-source.d.ts.map +0 -1
  699. package/dist/composition/poster-source.js.map +0 -1
  700. package/dist/composition/symbolic-constants.d.ts.map +0 -1
  701. package/dist/composition/symbolic-constants.js +0 -65
  702. package/dist/composition/symbolic-constants.js.map +0 -1
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Internal bridge-discovery pipeline.
3
+ *
4
+ * Seeds, then seed-filtered symbolic enumeration, the Buckingham filter,
5
+ * the structural classifier, the regime join gate, the chain order,
6
+ * and the proof-target stub.
7
+ * A confirmation reports the catalog id. A restatement reports the
8
+ * pre-declared canonical equation. A regime mismatch is recorded and
9
+ * is not a stub. Any other survivor is a statement skeleton. Nothing
10
+ * is written into the catalog.
11
+ *
12
+ * No command calls this. `discovery.ts` and the probe are not inputs.
13
+ *
14
+ * @module atlas/chain-pipeline
15
+ */
16
+ import { DIMENSIONLESS } from '../dimensional/types.js';
17
+ import { equals } from '../dimensional/algebra.js';
18
+ import { CONSTANTS } from '../dimensional/symbolic-constants.js';
19
+ import { enumerateCompositions } from '../composition/enumerate.js';
20
+ import { buckinghamFilter } from '../composition/buckingham-filter.js';
21
+ import { matchChain } from '../composition/chain-match.js';
22
+ import { compareChainEdgeIds, orderChainCandidates, } from '../composition/chain-candidate.js';
23
+ import { joinRegimeMismatch, } from '../composition/chain-regime.js';
24
+ import { bridgeSeedKeys, physjsTheorem } from './physjs-ref.js';
25
+ import { emitProofTarget } from './proof-target.js';
26
+ function isNumericName(name) {
27
+ return /^\d+(\.\d+)?$/.test(name);
28
+ }
29
+ function isDimensionlessConstant(name) {
30
+ if (/^\d*pi$/.test(name))
31
+ return true;
32
+ const registered = CONSTANTS[name];
33
+ return registered !== undefined && equals(registered.dim, DIMENSIONLESS);
34
+ }
35
+ function collectSymbols(expr, out) {
36
+ switch (expr.kind) {
37
+ case 'symbol':
38
+ out.set(expr.name, expr.dim);
39
+ return;
40
+ case 'op':
41
+ for (const arg of expr.args)
42
+ collectSymbols(arg, out);
43
+ return;
44
+ case 'integral':
45
+ collectSymbols(expr.over, out);
46
+ collectSymbols(expr.integrand, out);
47
+ return;
48
+ case 'derivative':
49
+ collectSymbols(expr.of, out);
50
+ collectSymbols(expr.wrt, out);
51
+ return;
52
+ case 'transcendental':
53
+ case 'abs':
54
+ case 'dirac-delta':
55
+ collectSymbols(expr.arg, out);
56
+ return;
57
+ default:
58
+ return;
59
+ }
60
+ }
61
+ /** Dimensioned leaves of the composed formula, excluding the target name. */
62
+ function governingOf(expr, targetName) {
63
+ const dims = new Map();
64
+ collectSymbols(expr, dims);
65
+ const vars = [];
66
+ for (const [name, dim] of dims) {
67
+ if (name === targetName)
68
+ continue;
69
+ if (isNumericName(name) || isDimensionlessConstant(name))
70
+ continue;
71
+ vars.push({ name, dim });
72
+ }
73
+ vars.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
74
+ return vars;
75
+ }
76
+ function toCandidate(classification, filter) {
77
+ const theorem = filter.theorem ?? undefined;
78
+ const carried = theorem === undefined ? {} : { theorem };
79
+ if (classification.kind === 'confirmation') {
80
+ return {
81
+ kind: 'confirmation',
82
+ edgeIds: classification.edgeIds,
83
+ catalogId: classification.catalogId,
84
+ ...carried,
85
+ };
86
+ }
87
+ if (classification.kind === 'restatement') {
88
+ return {
89
+ kind: 'restatement',
90
+ edgeIds: classification.edgeIds,
91
+ canonicalId: classification.canonicalId,
92
+ restatesBridge: classification.restatesBridge,
93
+ ...carried,
94
+ };
95
+ }
96
+ const kind = filter.theorem === 'PhysJS.Dimensional.monomial_form'
97
+ ? 'unique-monomial'
98
+ : 'unfixed-shape';
99
+ return {
100
+ kind,
101
+ edgeIds: classification.edgeIds,
102
+ id: classification.id,
103
+ ...carried,
104
+ };
105
+ }
106
+ function theoremsFor(edgeIds) {
107
+ return edgeIds.map((id) => {
108
+ const name = physjsTheorem(id);
109
+ if (name === undefined) {
110
+ throw new Error(`chain pipeline: manifest copy has no theorem for seed '${id}'`);
111
+ }
112
+ return name;
113
+ });
114
+ }
115
+ function emit(candidate) {
116
+ if (candidate.kind === 'confirmation' && candidate.catalogId !== undefined) {
117
+ return {
118
+ kind: 'confirmation',
119
+ catalogId: candidate.catalogId,
120
+ edgeIds: candidate.edgeIds,
121
+ };
122
+ }
123
+ if (candidate.kind === 'restatement' &&
124
+ candidate.canonicalId !== undefined &&
125
+ candidate.restatesBridge !== undefined) {
126
+ return {
127
+ kind: 'restatement',
128
+ canonicalId: candidate.canonicalId,
129
+ restatesBridge: candidate.restatesBridge,
130
+ edgeIds: candidate.edgeIds,
131
+ };
132
+ }
133
+ const id = candidate.id ?? `chain-${candidate.edgeIds.join('-')}`;
134
+ return {
135
+ kind: 'stub',
136
+ id,
137
+ edgeIds: candidate.edgeIds,
138
+ text: emitProofTarget({ ...candidate, id }, theoremsFor(candidate.edgeIds)),
139
+ };
140
+ }
141
+ /**
142
+ * Run the pipeline on `edges`.
143
+ *
144
+ * A manifest key whose derived kind is not `bridge` is not a premise.
145
+ * A chain the Buckingham filter drops is absent. A confirmation or a
146
+ * restatement is not sent to the regime gate. Any other mismatch is
147
+ * `rejected: regime mismatch` and is not a stub. The catalog array is
148
+ * not modified.
149
+ *
150
+ * @internal
151
+ */
152
+ export function runChainPipeline(edges) {
153
+ const seedIds = new Set(bridgeSeedKeys());
154
+ const report = enumerateCompositions(edges, { seedIds });
155
+ const candidates = [];
156
+ const rejections = [];
157
+ for (const target of report.proofTargets) {
158
+ const filtered = buckinghamFilter({ name: target.second.target.name, dim: target.second.target.dim }, governingOf(target.expr, target.second.target.name));
159
+ if (filtered === undefined)
160
+ continue;
161
+ const classification = matchChain(target.expr, [target.first.id, target.second.id]);
162
+ if (classification.kind === 'confirmation' || classification.kind === 'restatement') {
163
+ candidates.push(toCandidate(classification, filtered));
164
+ continue;
165
+ }
166
+ const mismatch = joinRegimeMismatch(target.first, target.second);
167
+ if (mismatch !== undefined) {
168
+ rejections.push(mismatch);
169
+ continue;
170
+ }
171
+ candidates.push(toCandidate(classification, filtered));
172
+ }
173
+ const orderedRejections = [...rejections].sort((a, b) => compareChainEdgeIds(a.edgeIds, b.edgeIds));
174
+ return [...orderChainCandidates(candidates).map(emit), ...orderedRejections];
175
+ }
176
+ //# sourceMappingURL=chain-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-pipeline.js","sourceRoot":"","sources":["../../src/atlas/chain-pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,55 +1,20 @@
1
1
  /**
2
- * The composition table for `RelationType` — a literal 8×8 matrix.
3
- *
4
- * `composeRelation(first, second)` answers: if one bridge asserts `first` and a
5
- * second bridge asserts `second`, what relation does the chain assert? The
6
- * argument order is the `First ∘ Second` column order of design note
7
- * `docs/planning/Atlas-Phase-1-Design.md` §2.1.
8
- *
9
- * **The table is a deliberate UNDER-approximation of Blueprint v2 §4.2.** Every
10
- * cell not named in §2.1 is `'no-composite-claim'`, because a wrong composite
11
- * type is a false physical claim while silence is only silence. Eight of the
12
- * sixty-four cells are defined; the remaining fifty-six are silent, and the
13
- * reasons for the notable silences are §2.2.
14
- *
15
- * Two cells the implementation plan asserts are NOT defined here, on the
16
- * authority of the design note (§0 and §2.2 item 5):
17
- *
18
- * - `exact-equivalence ∘ approximation`, either order. An exact equivalence
19
- * contributes `IDENTITY_BOUND` only *in the norm a given bridge states* (see
20
- * `./error-algebra.ts`), and no field in Sprint 1 records a norm, so
21
- * norm-compatibility cannot be checked. A `norm?` field unblocks it in
22
- * Phase 2.
23
- * - `structural-analogy ∘ structural-analogy`. Analogy is not transitive: the
24
- * shared structure can dilute to nothing across a chain.
25
- *
26
- * Widening this table is a reviewed act — `tests/atlas/composition-table.test.ts`
27
- * pins the count of silent cells.
28
- *
29
- * Pure: no I/O, no registry reads, and no import from `src/composition/`.
2
+ * Re-export of the composition table. The table lives in
3
+ * `src/relations/composition-table.ts`. These consts are the same bindings.
30
4
  *
31
5
  * @module atlas/composition-table
32
6
  */
33
- import type { RelationType } from './types.js';
34
- /** What `composeRelation` returns when the chain asserts nothing. @public */
35
- export type NoCompositeClaim = 'no-composite-claim';
36
- /** The result of composing two relations. @public */
37
- export type CompositionResult = RelationType | NoCompositeClaim;
7
+ import { composeRelation as composeRelationValue } from '../relations/composition-table.js';
38
8
  /** @public */
39
- export declare const NO_COMPOSITE_CLAIM: NoCompositeClaim;
40
- /**
41
- * Every row of every column, written out. `Record<RelationType, …>` makes the
42
- * exhaustiveness structural: a ninth `RelationType` member fails to compile
43
- * here rather than silently acquiring a row of `'no-composite-claim'`.
44
- *
45
- * @public
46
- */
47
- export declare const COMPOSITION_TABLE: Readonly<Record<RelationType, Readonly<Record<RelationType, CompositionResult>>>>;
9
+ export declare const NO_COMPOSITE_CLAIM: "no-composite-claim";
48
10
  /**
49
- * The relation a chain of two bridges asserts, or `'no-composite-claim'` when
50
- * this sprint declines to assert one. A table lookup — no rules, no inference.
51
- *
52
11
  * @public
53
12
  */
54
- export declare function composeRelation(first: RelationType, second: RelationType): CompositionResult;
13
+ export declare const COMPOSITION_TABLE: Readonly<Record<import("../relations/types.js").RelationType, Readonly<Record<import("../relations/types.js").RelationType, import("../relations/composition-table.js").CompositionResult>>>>;
14
+ /** @public */
15
+ export declare const composeRelation: typeof composeRelationValue;
16
+ /** @public */
17
+ export type NoCompositeClaim = import('../relations/composition-table.js').NoCompositeClaim;
18
+ /** @public */
19
+ export type CompositionResult = import('../relations/composition-table.js').CompositionResult;
55
20
  //# sourceMappingURL=composition-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"composition-table.d.ts","sourceRoot":"","sources":["../../src/atlas/composition-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,qDAAqD;AACrD,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAEhE,cAAc;AACd,eAAO,MAAM,kBAAkB,EAAE,gBAAuC,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CACtC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAkFxE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,GACnB,iBAAiB,CAEnB"}
1
+ {"version":3,"file":"composition-table.d.ts","sourceRoot":"","sources":["../../src/atlas/composition-table.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAEL,eAAe,IAAI,oBAAoB,EAExC,MAAM,mCAAmC,CAAC;AAE3C,cAAc;AACd,eAAO,MAAM,kBAAkB,sBAAwB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,iBAAiB,+LAAwB,CAAC;AAEvD,cAAc;AACd,eAAO,MAAM,eAAe,6BAAuB,CAAC;AAEpD,cAAc;AACd,MAAM,MAAM,gBAAgB,GAAG,OAAO,mCAAmC,EAAE,gBAAgB,CAAC;AAE5F,cAAc;AACd,MAAM,MAAM,iBAAiB,GAAG,OAAO,mCAAmC,EAAE,iBAAiB,CAAC"}
@@ -1,133 +1,16 @@
1
1
  /**
2
- * The composition table for `RelationType` — a literal 8×8 matrix.
3
- *
4
- * `composeRelation(first, second)` answers: if one bridge asserts `first` and a
5
- * second bridge asserts `second`, what relation does the chain assert? The
6
- * argument order is the `First ∘ Second` column order of design note
7
- * `docs/planning/Atlas-Phase-1-Design.md` §2.1.
8
- *
9
- * **The table is a deliberate UNDER-approximation of Blueprint v2 §4.2.** Every
10
- * cell not named in §2.1 is `'no-composite-claim'`, because a wrong composite
11
- * type is a false physical claim while silence is only silence. Eight of the
12
- * sixty-four cells are defined; the remaining fifty-six are silent, and the
13
- * reasons for the notable silences are §2.2.
14
- *
15
- * Two cells the implementation plan asserts are NOT defined here, on the
16
- * authority of the design note (§0 and §2.2 item 5):
17
- *
18
- * - `exact-equivalence ∘ approximation`, either order. An exact equivalence
19
- * contributes `IDENTITY_BOUND` only *in the norm a given bridge states* (see
20
- * `./error-algebra.ts`), and no field in Sprint 1 records a norm, so
21
- * norm-compatibility cannot be checked. A `norm?` field unblocks it in
22
- * Phase 2.
23
- * - `structural-analogy ∘ structural-analogy`. Analogy is not transitive: the
24
- * shared structure can dilute to nothing across a chain.
25
- *
26
- * Widening this table is a reviewed act — `tests/atlas/composition-table.test.ts`
27
- * pins the count of silent cells.
28
- *
29
- * Pure: no I/O, no registry reads, and no import from `src/composition/`.
2
+ * Re-export of the composition table. The table lives in
3
+ * `src/relations/composition-table.ts`. These consts are the same bindings.
30
4
  *
31
5
  * @module atlas/composition-table
32
6
  */
7
+ import { COMPOSITION_TABLE as compositionTableValue, composeRelation as composeRelationValue, NO_COMPOSITE_CLAIM as noCompositeClaimValue, } from '../relations/composition-table.js';
33
8
  /** @public */
34
- export const NO_COMPOSITE_CLAIM = 'no-composite-claim';
9
+ export const NO_COMPOSITE_CLAIM = noCompositeClaimValue;
35
10
  /**
36
- * Every row of every column, written out. `Record<RelationType, …>` makes the
37
- * exhaustiveness structural: a ninth `RelationType` member fails to compile
38
- * here rather than silently acquiring a row of `'no-composite-claim'`.
39
- *
40
- * @public
41
- */
42
- export const COMPOSITION_TABLE = {
43
- derivation: {
44
- derivation: 'derivation',
45
- 'exact-equivalence': 'derivation',
46
- restriction: NO_COMPOSITE_CLAIM,
47
- approximation: NO_COMPOSITE_CLAIM,
48
- 'coarse-graining': NO_COMPOSITE_CLAIM,
49
- 'analytic-continuation': NO_COMPOSITE_CLAIM,
50
- 'structural-analogy': NO_COMPOSITE_CLAIM,
51
- 'deformation-quantization': NO_COMPOSITE_CLAIM,
52
- },
53
- 'exact-equivalence': {
54
- derivation: 'derivation',
55
- 'exact-equivalence': 'exact-equivalence',
56
- restriction: 'restriction',
57
- approximation: NO_COMPOSITE_CLAIM,
58
- 'coarse-graining': NO_COMPOSITE_CLAIM,
59
- 'analytic-continuation': NO_COMPOSITE_CLAIM,
60
- 'structural-analogy': NO_COMPOSITE_CLAIM,
61
- 'deformation-quantization': NO_COMPOSITE_CLAIM,
62
- },
63
- restriction: {
64
- derivation: NO_COMPOSITE_CLAIM,
65
- 'exact-equivalence': 'restriction',
66
- restriction: 'restriction',
67
- approximation: NO_COMPOSITE_CLAIM,
68
- 'coarse-graining': NO_COMPOSITE_CLAIM,
69
- 'analytic-continuation': NO_COMPOSITE_CLAIM,
70
- 'structural-analogy': NO_COMPOSITE_CLAIM,
71
- 'deformation-quantization': NO_COMPOSITE_CLAIM,
72
- },
73
- approximation: {
74
- derivation: NO_COMPOSITE_CLAIM,
75
- 'exact-equivalence': NO_COMPOSITE_CLAIM,
76
- restriction: NO_COMPOSITE_CLAIM,
77
- approximation: NO_COMPOSITE_CLAIM,
78
- 'coarse-graining': NO_COMPOSITE_CLAIM,
79
- 'analytic-continuation': NO_COMPOSITE_CLAIM,
80
- 'structural-analogy': NO_COMPOSITE_CLAIM,
81
- 'deformation-quantization': NO_COMPOSITE_CLAIM,
82
- },
83
- 'coarse-graining': {
84
- derivation: NO_COMPOSITE_CLAIM,
85
- 'exact-equivalence': NO_COMPOSITE_CLAIM,
86
- restriction: NO_COMPOSITE_CLAIM,
87
- approximation: NO_COMPOSITE_CLAIM,
88
- 'coarse-graining': 'coarse-graining',
89
- 'analytic-continuation': NO_COMPOSITE_CLAIM,
90
- 'structural-analogy': NO_COMPOSITE_CLAIM,
91
- 'deformation-quantization': NO_COMPOSITE_CLAIM,
92
- },
93
- 'analytic-continuation': {
94
- derivation: NO_COMPOSITE_CLAIM,
95
- 'exact-equivalence': NO_COMPOSITE_CLAIM,
96
- restriction: NO_COMPOSITE_CLAIM,
97
- approximation: NO_COMPOSITE_CLAIM,
98
- 'coarse-graining': NO_COMPOSITE_CLAIM,
99
- 'analytic-continuation': NO_COMPOSITE_CLAIM,
100
- 'structural-analogy': NO_COMPOSITE_CLAIM,
101
- 'deformation-quantization': NO_COMPOSITE_CLAIM,
102
- },
103
- 'structural-analogy': {
104
- derivation: NO_COMPOSITE_CLAIM,
105
- 'exact-equivalence': NO_COMPOSITE_CLAIM,
106
- restriction: NO_COMPOSITE_CLAIM,
107
- approximation: NO_COMPOSITE_CLAIM,
108
- 'coarse-graining': NO_COMPOSITE_CLAIM,
109
- 'analytic-continuation': NO_COMPOSITE_CLAIM,
110
- 'structural-analogy': NO_COMPOSITE_CLAIM,
111
- 'deformation-quantization': NO_COMPOSITE_CLAIM,
112
- },
113
- 'deformation-quantization': {
114
- derivation: NO_COMPOSITE_CLAIM,
115
- 'exact-equivalence': NO_COMPOSITE_CLAIM,
116
- restriction: NO_COMPOSITE_CLAIM,
117
- approximation: NO_COMPOSITE_CLAIM,
118
- 'coarse-graining': NO_COMPOSITE_CLAIM,
119
- 'analytic-continuation': NO_COMPOSITE_CLAIM,
120
- 'structural-analogy': NO_COMPOSITE_CLAIM,
121
- 'deformation-quantization': NO_COMPOSITE_CLAIM,
122
- },
123
- };
124
- /**
125
- * The relation a chain of two bridges asserts, or `'no-composite-claim'` when
126
- * this sprint declines to assert one. A table lookup — no rules, no inference.
127
- *
128
11
  * @public
129
12
  */
130
- export function composeRelation(first, second) {
131
- return COMPOSITION_TABLE[first][second];
132
- }
13
+ export const COMPOSITION_TABLE = compositionTableValue;
14
+ /** @public */
15
+ export const composeRelation = composeRelationValue;
133
16
  //# sourceMappingURL=composition-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"composition-table.js","sourceRoot":"","sources":["../../src/atlas/composition-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAUH,cAAc;AACd,MAAM,CAAC,MAAM,kBAAkB,GAAqB,oBAAoB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAE1B;IACF,UAAU,EAAE;QACV,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,YAAY;QACjC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,mBAAmB,EAAE;QACnB,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,mBAAmB;QACxC,WAAW,EAAE,aAAa;QAC1B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,WAAW,EAAE;QACX,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,aAAa;QAClC,WAAW,EAAE,aAAa;QAC1B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,aAAa,EAAE;QACb,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,iBAAiB,EAAE;QACjB,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,iBAAiB;QACpC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,uBAAuB,EAAE;QACvB,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,oBAAoB,EAAE;QACpB,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,0BAA0B,EAAE;QAC1B,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAmB,EACnB,MAAoB;IAEpB,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"composition-table.js","sourceRoot":"","sources":["../../src/atlas/composition-table.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,iBAAiB,IAAI,qBAAqB,EAC1C,eAAe,IAAI,oBAAoB,EACvC,kBAAkB,IAAI,qBAAqB,GAC5C,MAAM,mCAAmC,CAAC;AAE3C,cAAc;AACd,MAAM,CAAC,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEvD,cAAc;AACd,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAC"}
@@ -1,63 +1,9 @@
1
1
  /**
2
- * Atlas Phase 1 — convention comparison.
3
- *
4
- * `Conventions` (`src/atlas/types.ts`) records the sign and unit choices a
5
- * record depends on. Two records that disagree on one of those choices are not
6
- * directly comparable, and this module says WHICH keys disagree.
7
- *
8
- * **`undefined` is "unknown", never "mismatch", and that asymmetry is the
9
- * whole design.** A record that declares nothing about the metric signature
10
- * has not chosen `'+---'`; it has not said. Reporting the absence as a
11
- * disagreement would manufacture conflicts out of missing data — and because
12
- * almost every record in the repo declares nothing today, it would manufacture
13
- * them at scale. The same reasoning that makes design note §3 require a
14
- * NON-EMPTY `conventions` before `convention-checked` can be derived applies
15
- * in the mirror here: absence earns neither a tag nor an accusation.
16
- *
17
- * A mismatch is therefore reported only when BOTH sides declare the key and
18
- * the declared values differ.
2
+ * Re-export of the convention comparison. The implementation lives in
3
+ * `src/relations/conventions.ts`.
19
4
  *
20
5
  * @module atlas/conventions
21
6
  */
22
- import type { Conventions } from './types.js';
23
- /** The keys `checkConventions` compares. @internal */
24
- export type ConventionKey = keyof Conventions;
25
- /**
26
- * The convention keys on which `a` and `b` DECLARE different values.
27
- *
28
- * Returns an empty list when they agree, when either side is absent, and when
29
- * neither declares a key in common.
30
- *
31
- * ⚠ **An empty list is NOT a statement that the two are compatible** — it means
32
- * no DECLARED pair disagrees. Eve (E1, 2026-09-21) flagged that this conflates
33
- * the safe case with the dangerous one: record A declaring `metricSignature:
34
- * '-+++'` while B simply never declared it returns `[]`, exactly like genuine
35
- * agreement, and a caller printing nothing leads a reader to infer "checked, no
36
- * conflict". Silence is not agreement. Use {@link unknownConventionKeys} to
37
- * surface that case, and prefer reporting the two together.
38
- *
39
- * @param a - one record's conventions, or `undefined` when it declares none.
40
- * @param b - the other record's conventions, or `undefined`.
41
- * @returns the mismatched keys, in `Conventions` declaration order.
42
- *
43
- * @internal
44
- */
45
- export declare function checkConventions(a: Conventions | undefined, b: Conventions | undefined): readonly ConventionKey[];
46
- /**
47
- * The convention keys where exactly ONE side declares a value — the cases
48
- * {@link checkConventions} deliberately does not call mismatches.
49
- *
50
- * This exists because "no declared pair disagrees" and "these two are
51
- * compatible" are different claims, and only the first is checkable from the
52
- * data. A key listed here is a question, not a conflict: the records MIGHT use
53
- * opposite sign conventions and one simply never said. Reporting it separately
54
- * lets a reader distinguish *verified agreement* from *nobody wrote it down*,
55
- * which is the distinction an empty mismatch list destroys.
56
- *
57
- * Both sides absent is NOT unknown — it is simply a key nobody uses, so it is
58
- * omitted. Only an asymmetric declaration is reported.
59
- *
60
- * @internal
61
- */
62
- export declare function unknownConventionKeys(a: Conventions | undefined, b: Conventions | undefined): readonly ConventionKey[];
7
+ export { checkConventions, unknownConventionKeys } from '../relations/conventions.js';
8
+ export type { ConventionKey } from '../relations/conventions.js';
63
9
  //# sourceMappingURL=conventions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../../src/atlas/conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,sDAAsD;AACtD,MAAM,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC;AAgB9C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,WAAW,GAAG,SAAS,EAC1B,CAAC,EAAE,WAAW,GAAG,SAAS,GACzB,SAAS,aAAa,EAAE,CAS1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,WAAW,GAAG,SAAS,EAC1B,CAAC,EAAE,WAAW,GAAG,SAAS,GACzB,SAAS,aAAa,EAAE,CAS1B"}
1
+ {"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../../src/atlas/conventions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACtF,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC"}
@@ -1,93 +1,8 @@
1
1
  /**
2
- * Atlas Phase 1 — convention comparison.
3
- *
4
- * `Conventions` (`src/atlas/types.ts`) records the sign and unit choices a
5
- * record depends on. Two records that disagree on one of those choices are not
6
- * directly comparable, and this module says WHICH keys disagree.
7
- *
8
- * **`undefined` is "unknown", never "mismatch", and that asymmetry is the
9
- * whole design.** A record that declares nothing about the metric signature
10
- * has not chosen `'+---'`; it has not said. Reporting the absence as a
11
- * disagreement would manufacture conflicts out of missing data — and because
12
- * almost every record in the repo declares nothing today, it would manufacture
13
- * them at scale. The same reasoning that makes design note §3 require a
14
- * NON-EMPTY `conventions` before `convention-checked` can be derived applies
15
- * in the mirror here: absence earns neither a tag nor an accusation.
16
- *
17
- * A mismatch is therefore reported only when BOTH sides declare the key and
18
- * the declared values differ.
2
+ * Re-export of the convention comparison. The implementation lives in
3
+ * `src/relations/conventions.ts`.
19
4
  *
20
5
  * @module atlas/conventions
21
6
  */
22
- /**
23
- * Every key of `Conventions`, as values. Written out rather than derived,
24
- * because a type has no runtime extent; `tests/atlas/conventions.test.ts`
25
- * pins this list against the interface so a new field cannot be added to
26
- * `Conventions` and silently skipped by the comparison.
27
- */
28
- const CONVENTION_KEYS = [
29
- 'heatWorkSign',
30
- 'metricSignature',
31
- 'fourierNormalization',
32
- 'unitSystem',
33
- 'capacitorChargeSign',
34
- ];
35
- /**
36
- * The convention keys on which `a` and `b` DECLARE different values.
37
- *
38
- * Returns an empty list when they agree, when either side is absent, and when
39
- * neither declares a key in common.
40
- *
41
- * ⚠ **An empty list is NOT a statement that the two are compatible** — it means
42
- * no DECLARED pair disagrees. Eve (E1, 2026-09-21) flagged that this conflates
43
- * the safe case with the dangerous one: record A declaring `metricSignature:
44
- * '-+++'` while B simply never declared it returns `[]`, exactly like genuine
45
- * agreement, and a caller printing nothing leads a reader to infer "checked, no
46
- * conflict". Silence is not agreement. Use {@link unknownConventionKeys} to
47
- * surface that case, and prefer reporting the two together.
48
- *
49
- * @param a - one record's conventions, or `undefined` when it declares none.
50
- * @param b - the other record's conventions, or `undefined`.
51
- * @returns the mismatched keys, in `Conventions` declaration order.
52
- *
53
- * @internal
54
- */
55
- export function checkConventions(a, b) {
56
- if (a === undefined || b === undefined)
57
- return [];
58
- return CONVENTION_KEYS.filter((k) => {
59
- const av = a[k];
60
- const bv = b[k];
61
- // Either side silent ⇒ unknown, not disagreement.
62
- if (av === undefined || bv === undefined)
63
- return false;
64
- return av !== bv;
65
- });
66
- }
67
- /**
68
- * The convention keys where exactly ONE side declares a value — the cases
69
- * {@link checkConventions} deliberately does not call mismatches.
70
- *
71
- * This exists because "no declared pair disagrees" and "these two are
72
- * compatible" are different claims, and only the first is checkable from the
73
- * data. A key listed here is a question, not a conflict: the records MIGHT use
74
- * opposite sign conventions and one simply never said. Reporting it separately
75
- * lets a reader distinguish *verified agreement* from *nobody wrote it down*,
76
- * which is the distinction an empty mismatch list destroys.
77
- *
78
- * Both sides absent is NOT unknown — it is simply a key nobody uses, so it is
79
- * omitted. Only an asymmetric declaration is reported.
80
- *
81
- * @internal
82
- */
83
- export function unknownConventionKeys(a, b) {
84
- const av = a ?? {};
85
- const bv = b ?? {};
86
- return CONVENTION_KEYS.filter((k) => {
87
- const x = av[k];
88
- const y = bv[k];
89
- // Exactly one declared: the asymmetric case. Neither declared ⇒ not a question.
90
- return (x === undefined) !== (y === undefined);
91
- });
92
- }
7
+ export { checkConventions, unknownConventionKeys } from '../relations/conventions.js';
93
8
  //# sourceMappingURL=conventions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/atlas/conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH;;;;;GAKG;AACH,MAAM,eAAe,GAA6B;IAChD,cAAc;IACd,iBAAiB;IACjB,sBAAsB;IACtB,YAAY;IACZ,qBAAqB;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAA0B,EAC1B,CAA0B;IAE1B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,kDAAkD;QAClD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACvD,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CACnC,CAA0B,EAC1B,CAA0B;IAE1B,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAClC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAChB,gFAAgF;QAChF,OAAO,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/atlas/conventions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC"}