universal-physics-tensor 0.45.2 → 0.46.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 (473) hide show
  1. package/README.md +28 -27
  2. package/dist/atlas/applicability.d.ts +108 -0
  3. package/dist/atlas/applicability.d.ts.map +1 -0
  4. package/dist/atlas/applicability.js +301 -0
  5. package/dist/atlas/applicability.js.map +1 -0
  6. package/dist/atlas/association.d.ts +92 -0
  7. package/dist/atlas/association.d.ts.map +1 -0
  8. package/dist/atlas/association.js +112 -0
  9. package/dist/atlas/association.js.map +1 -0
  10. package/dist/atlas/benchmark/backend-shapes.d.ts +47 -0
  11. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -0
  12. package/dist/atlas/benchmark/backend-shapes.js +58 -0
  13. package/dist/atlas/benchmark/backend-shapes.js.map +1 -0
  14. package/dist/atlas/benchmark/baselines.d.ts +64 -0
  15. package/dist/atlas/benchmark/baselines.d.ts.map +1 -0
  16. package/dist/atlas/benchmark/baselines.js +112 -0
  17. package/dist/atlas/benchmark/baselines.js.map +1 -0
  18. package/dist/atlas/benchmark/leakage.d.ts +56 -0
  19. package/dist/atlas/benchmark/leakage.d.ts.map +1 -0
  20. package/dist/atlas/benchmark/leakage.js +100 -0
  21. package/dist/atlas/benchmark/leakage.js.map +1 -0
  22. package/dist/atlas/benchmark/loader.d.ts +56 -0
  23. package/dist/atlas/benchmark/loader.d.ts.map +1 -0
  24. package/dist/atlas/benchmark/loader.js +104 -0
  25. package/dist/atlas/benchmark/loader.js.map +1 -0
  26. package/dist/atlas/benchmark/run-atlas.d.ts +72 -0
  27. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -0
  28. package/dist/atlas/benchmark/run-atlas.js +210 -0
  29. package/dist/atlas/benchmark/run-atlas.js.map +1 -0
  30. package/dist/atlas/benchmark/stats.d.ts +90 -0
  31. package/dist/atlas/benchmark/stats.d.ts.map +1 -0
  32. package/dist/atlas/benchmark/stats.js +159 -0
  33. package/dist/atlas/benchmark/stats.js.map +1 -0
  34. package/dist/atlas/benchmark/study.d.ts +120 -0
  35. package/dist/atlas/benchmark/study.d.ts.map +1 -0
  36. package/dist/atlas/benchmark/study.js +192 -0
  37. package/dist/atlas/benchmark/study.js.map +1 -0
  38. package/dist/atlas/benchmark/types.d.ts +79 -0
  39. package/dist/atlas/benchmark/types.d.ts.map +1 -0
  40. package/dist/atlas/benchmark/types.js +46 -0
  41. package/dist/atlas/benchmark/types.js.map +1 -0
  42. package/dist/atlas/composition-table.d.ts +55 -0
  43. package/dist/atlas/composition-table.d.ts.map +1 -0
  44. package/dist/atlas/composition-table.js +133 -0
  45. package/dist/atlas/composition-table.js.map +1 -0
  46. package/dist/atlas/conventions.d.ts +63 -0
  47. package/dist/atlas/conventions.d.ts.map +1 -0
  48. package/dist/atlas/conventions.js +93 -0
  49. package/dist/atlas/conventions.js.map +1 -0
  50. package/dist/atlas/coverage.d.ts +93 -0
  51. package/dist/atlas/coverage.d.ts.map +1 -0
  52. package/dist/atlas/coverage.js +69 -0
  53. package/dist/atlas/coverage.js.map +1 -0
  54. package/dist/atlas/derivation.d.ts +137 -0
  55. package/dist/atlas/derivation.d.ts.map +1 -0
  56. package/dist/atlas/derivation.js +190 -0
  57. package/dist/atlas/derivation.js.map +1 -0
  58. package/dist/atlas/derive-evidence.d.ts +218 -0
  59. package/dist/atlas/derive-evidence.d.ts.map +1 -0
  60. package/dist/atlas/derive-evidence.js +225 -0
  61. package/dist/atlas/derive-evidence.js.map +1 -0
  62. package/dist/atlas/diffusion/bridges-closure.d.ts +63 -0
  63. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -0
  64. package/dist/atlas/diffusion/bridges-closure.js +324 -0
  65. package/dist/atlas/diffusion/bridges-closure.js.map +1 -0
  66. package/dist/atlas/diffusion/bridges.d.ts +36 -0
  67. package/dist/atlas/diffusion/bridges.d.ts.map +1 -0
  68. package/dist/atlas/diffusion/bridges.js +226 -0
  69. package/dist/atlas/diffusion/bridges.js.map +1 -0
  70. package/dist/atlas/diffusion/dimensions.d.ts +21 -0
  71. package/dist/atlas/diffusion/dimensions.d.ts.map +1 -0
  72. package/dist/atlas/diffusion/dimensions.js +21 -0
  73. package/dist/atlas/diffusion/dimensions.js.map +1 -0
  74. package/dist/atlas/diffusion/index.d.ts +16 -0
  75. package/dist/atlas/diffusion/index.d.ts.map +1 -0
  76. package/dist/atlas/diffusion/index.js +23 -0
  77. package/dist/atlas/diffusion/index.js.map +1 -0
  78. package/dist/atlas/diffusion/models.d.ts +24 -0
  79. package/dist/atlas/diffusion/models.d.ts.map +1 -0
  80. package/dist/atlas/diffusion/models.js +139 -0
  81. package/dist/atlas/diffusion/models.js.map +1 -0
  82. package/dist/atlas/diffusion/numerics.d.ts +181 -0
  83. package/dist/atlas/diffusion/numerics.d.ts.map +1 -0
  84. package/dist/atlas/diffusion/numerics.js +251 -0
  85. package/dist/atlas/diffusion/numerics.js.map +1 -0
  86. package/dist/atlas/error-algebra.d.ts +52 -0
  87. package/dist/atlas/error-algebra.d.ts.map +1 -0
  88. package/dist/atlas/error-algebra.js +55 -0
  89. package/dist/atlas/error-algebra.js.map +1 -0
  90. package/dist/atlas/export.d.ts +48 -0
  91. package/dist/atlas/export.d.ts.map +1 -0
  92. package/dist/atlas/export.js +106 -0
  93. package/dist/atlas/export.js.map +1 -0
  94. package/dist/atlas/families.d.ts +14 -0
  95. package/dist/atlas/families.d.ts.map +1 -0
  96. package/dist/atlas/families.js +20 -0
  97. package/dist/atlas/families.js.map +1 -0
  98. package/dist/atlas/index.d.ts +90 -0
  99. package/dist/atlas/index.d.ts.map +1 -0
  100. package/dist/atlas/index.js +69 -0
  101. package/dist/atlas/index.js.map +1 -0
  102. package/dist/atlas/link-prediction.d.ts +71 -0
  103. package/dist/atlas/link-prediction.d.ts.map +1 -0
  104. package/dist/atlas/link-prediction.js +128 -0
  105. package/dist/atlas/link-prediction.js.map +1 -0
  106. package/dist/atlas/model.d.ts +70 -0
  107. package/dist/atlas/model.d.ts.map +1 -0
  108. package/dist/atlas/model.js +26 -0
  109. package/dist/atlas/model.js.map +1 -0
  110. package/dist/atlas/oscillators/bridges-coarse.d.ts +71 -0
  111. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -0
  112. package/dist/atlas/oscillators/bridges-coarse.js +146 -0
  113. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -0
  114. package/dist/atlas/oscillators/bridges-exact.d.ts +70 -0
  115. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -0
  116. package/dist/atlas/oscillators/bridges-exact.js +227 -0
  117. package/dist/atlas/oscillators/bridges-exact.js.map +1 -0
  118. package/dist/atlas/oscillators/bridges-limits.d.ts +118 -0
  119. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -0
  120. package/dist/atlas/oscillators/bridges-limits.js +342 -0
  121. package/dist/atlas/oscillators/bridges-limits.js.map +1 -0
  122. package/dist/atlas/oscillators/dimensions.d.ts +34 -0
  123. package/dist/atlas/oscillators/dimensions.d.ts.map +1 -0
  124. package/dist/atlas/oscillators/dimensions.js +34 -0
  125. package/dist/atlas/oscillators/dimensions.js.map +1 -0
  126. package/dist/atlas/oscillators/index.d.ts +38 -0
  127. package/dist/atlas/oscillators/index.d.ts.map +1 -0
  128. package/dist/atlas/oscillators/index.js +37 -0
  129. package/dist/atlas/oscillators/index.js.map +1 -0
  130. package/dist/atlas/oscillators/models.d.ts +25 -0
  131. package/dist/atlas/oscillators/models.d.ts.map +1 -0
  132. package/dist/atlas/oscillators/models.js +160 -0
  133. package/dist/atlas/oscillators/models.js.map +1 -0
  134. package/dist/atlas/oscillators/rejections.d.ts +21 -0
  135. package/dist/atlas/oscillators/rejections.d.ts.map +1 -0
  136. package/dist/atlas/oscillators/rejections.js +54 -0
  137. package/dist/atlas/oscillators/rejections.js.map +1 -0
  138. package/dist/atlas/path-bound.d.ts +143 -0
  139. package/dist/atlas/path-bound.d.ts.map +1 -0
  140. package/dist/atlas/path-bound.js +268 -0
  141. package/dist/atlas/path-bound.js.map +1 -0
  142. package/dist/atlas/poster/associations.d.ts +66 -0
  143. package/dist/atlas/poster/associations.d.ts.map +1 -0
  144. package/dist/atlas/poster/associations.js +90 -0
  145. package/dist/atlas/poster/associations.js.map +1 -0
  146. package/dist/atlas/poster/derivations.d.ts +156 -0
  147. package/dist/atlas/poster/derivations.d.ts.map +1 -0
  148. package/dist/atlas/poster/derivations.js +430 -0
  149. package/dist/atlas/poster/derivations.js.map +1 -0
  150. package/dist/atlas/poster/statements.d.ts +198 -0
  151. package/dist/atlas/poster/statements.d.ts.map +1 -0
  152. package/dist/atlas/poster/statements.js +365 -0
  153. package/dist/atlas/poster/statements.js.map +1 -0
  154. package/dist/atlas/public.d.ts +26 -0
  155. package/dist/atlas/public.d.ts.map +1 -0
  156. package/dist/atlas/public.js +21 -0
  157. package/dist/atlas/public.js.map +1 -0
  158. package/dist/atlas/regime.d.ts +171 -0
  159. package/dist/atlas/regime.d.ts.map +1 -0
  160. package/dist/atlas/regime.js +309 -0
  161. package/dist/atlas/regime.js.map +1 -0
  162. package/dist/atlas/serialize.d.ts +50 -0
  163. package/dist/atlas/serialize.d.ts.map +1 -0
  164. package/dist/atlas/serialize.js +180 -0
  165. package/dist/atlas/serialize.js.map +1 -0
  166. package/dist/atlas/statement.d.ts +165 -0
  167. package/dist/atlas/statement.d.ts.map +1 -0
  168. package/dist/atlas/statement.js +176 -0
  169. package/dist/atlas/statement.js.map +1 -0
  170. package/dist/atlas/types.d.ts +308 -0
  171. package/dist/atlas/types.d.ts.map +1 -0
  172. package/dist/atlas/types.js +61 -0
  173. package/dist/atlas/types.js.map +1 -0
  174. package/dist/atlas/waves/bridges-closure.d.ts +39 -0
  175. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -0
  176. package/dist/atlas/waves/bridges-closure.js +223 -0
  177. package/dist/atlas/waves/bridges-closure.js.map +1 -0
  178. package/dist/atlas/waves/bridges.d.ts +49 -0
  179. package/dist/atlas/waves/bridges.d.ts.map +1 -0
  180. package/dist/atlas/waves/bridges.js +265 -0
  181. package/dist/atlas/waves/bridges.js.map +1 -0
  182. package/dist/atlas/waves/index.d.ts +16 -0
  183. package/dist/atlas/waves/index.d.ts.map +1 -0
  184. package/dist/atlas/waves/index.js +23 -0
  185. package/dist/atlas/waves/index.js.map +1 -0
  186. package/dist/atlas/waves/models.d.ts +29 -0
  187. package/dist/atlas/waves/models.d.ts.map +1 -0
  188. package/dist/atlas/waves/models.js +127 -0
  189. package/dist/atlas/waves/models.js.map +1 -0
  190. package/dist/atlas/waves/numerics.d.ts +149 -0
  191. package/dist/atlas/waves/numerics.d.ts.map +1 -0
  192. package/dist/atlas/waves/numerics.js +218 -0
  193. package/dist/atlas/waves/numerics.js.map +1 -0
  194. package/dist/atlas/witness-artifact.d.ts +65 -0
  195. package/dist/atlas/witness-artifact.d.ts.map +1 -0
  196. package/dist/atlas/witness-artifact.js +78 -0
  197. package/dist/atlas/witness-artifact.js.map +1 -0
  198. package/dist/atlas/witness-numeric.d.ts +81 -0
  199. package/dist/atlas/witness-numeric.d.ts.map +1 -0
  200. package/dist/atlas/witness-numeric.js +105 -0
  201. package/dist/atlas/witness-numeric.js.map +1 -0
  202. package/dist/atlas/witness-result.d.ts +77 -0
  203. package/dist/atlas/witness-result.d.ts.map +1 -0
  204. package/dist/atlas/witness-result.js +39 -0
  205. package/dist/atlas/witness-result.js.map +1 -0
  206. package/dist/atlas/witness-specs.d.ts +110 -0
  207. package/dist/atlas/witness-specs.d.ts.map +1 -0
  208. package/dist/atlas/witness-specs.js +372 -0
  209. package/dist/atlas/witness-specs.js.map +1 -0
  210. package/dist/atlas/witness-symbolic.d.ts +79 -0
  211. package/dist/atlas/witness-symbolic.d.ts.map +1 -0
  212. package/dist/atlas/witness-symbolic.js +140 -0
  213. package/dist/atlas/witness-symbolic.js.map +1 -0
  214. package/dist/atlas/witnesses/quantum-support.d.ts +50 -0
  215. package/dist/atlas/witnesses/quantum-support.d.ts.map +1 -0
  216. package/dist/atlas/witnesses/quantum-support.js +48 -0
  217. package/dist/atlas/witnesses/quantum-support.js.map +1 -0
  218. package/dist/bridges/be11-decoherence-confrontation.js.map +1 -1
  219. package/dist/bridges/be21-kss-confrontation.js.map +1 -1
  220. package/dist/bridges/be23-planckian-confrontation.js.map +1 -1
  221. package/dist/bridges/be35-bootstrap-confrontation.js.map +1 -1
  222. package/dist/bridges/be36-gw170817-confrontation.js.map +1 -1
  223. package/dist/bridges/be37-cassini-confrontation.js.map +1 -1
  224. package/dist/bridges/be48-collapse-confrontation.js.map +1 -1
  225. package/dist/bridges/be51-lensing-confrontation.js.map +1 -1
  226. package/dist/bridges/be52-mercury-confrontation.js.map +1 -1
  227. package/dist/bridges/be55-quantum-hall-confrontation.js.map +1 -1
  228. package/dist/bridges/be56-casimir-confrontation.js.map +1 -1
  229. package/dist/bridges/be58-johnson-nyquist-confrontation.js.map +1 -1
  230. package/dist/bridges/be59-ac-josephson-confrontation.js.map +1 -1
  231. package/dist/bridges/be60-fractional-qh-confrontation.js.map +1 -1
  232. package/dist/bridges/be61-wiedemann-franz-confrontation.js.map +1 -1
  233. package/dist/bridges/be62-bcs-gap-confrontation.js.map +1 -1
  234. package/dist/bridges/be63-chandrasekhar-mass-confrontation.js.map +1 -1
  235. package/dist/bridges/be64-eddington-luminosity-confrontation.js.map +1 -1
  236. package/dist/bridges/be65-jeans-mass-confrontation.js.map +1 -1
  237. package/dist/bridges/bridge-equations.d.ts +2 -1
  238. package/dist/bridges/bridge-equations.d.ts.map +1 -1
  239. package/dist/bridges/bridge-equations.js +3 -2
  240. package/dist/bridges/bridge-equations.js.map +1 -1
  241. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  242. package/dist/bridges/catalog-adapter.js.map +1 -1
  243. package/dist/bridges/equations/_be-helpers.d.ts +2 -2
  244. package/dist/bridges/equations/_be-helpers.js +2 -2
  245. package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
  246. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +88 -58
  247. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +1 -1
  248. package/dist/bridges/equations/be-35-conformal-bootstrap.js +102 -62
  249. package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +1 -1
  250. package/dist/bridges/equations/be-48-grw-localization.d.ts +9 -8
  251. package/dist/bridges/equations/be-48-grw-localization.d.ts.map +1 -1
  252. package/dist/bridges/equations/be-48-grw-localization.js +9 -8
  253. package/dist/bridges/equations/be-48-grw-localization.js.map +1 -1
  254. package/dist/bridges/gravitational-lensing.d.ts +10 -0
  255. package/dist/bridges/gravitational-lensing.d.ts.map +1 -1
  256. package/dist/bridges/gravitational-lensing.js.map +1 -1
  257. package/dist/bridges/index.d.ts +125 -7
  258. package/dist/bridges/index.d.ts.map +1 -1
  259. package/dist/bridges/index.js +483 -20
  260. package/dist/bridges/index.js.map +1 -1
  261. package/dist/bridges/perihelion-precession.d.ts +10 -0
  262. package/dist/bridges/perihelion-precession.d.ts.map +1 -1
  263. package/dist/bridges/perihelion-precession.js.map +1 -1
  264. package/dist/bridges/rhs-registry.js +2 -2
  265. package/dist/canonical/canonical-equation.d.ts +15 -0
  266. package/dist/canonical/canonical-equation.d.ts.map +1 -1
  267. package/dist/canonical/entries/_l1-build.d.ts +1 -1
  268. package/dist/canonical/entries/_l1-build.d.ts.map +1 -1
  269. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  270. package/dist/canonical/entries/atomic.js +23 -0
  271. package/dist/canonical/entries/atomic.js.map +1 -1
  272. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  273. package/dist/canonical/entries/nonmonomial.js +93 -0
  274. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  275. package/dist/canonical/normal-form.js.map +1 -1
  276. package/dist/canonical/residual.d.ts +28 -0
  277. package/dist/canonical/residual.d.ts.map +1 -0
  278. package/dist/canonical/residual.js +31 -0
  279. package/dist/canonical/residual.js.map +1 -0
  280. package/dist/cli/command.d.ts +8 -0
  281. package/dist/cli/command.d.ts.map +1 -1
  282. package/dist/cli/command.js +10 -0
  283. package/dist/cli/command.js.map +1 -1
  284. package/dist/cli/commands/atlas.d.ts +3 -0
  285. package/dist/cli/commands/atlas.d.ts.map +1 -0
  286. package/dist/cli/commands/atlas.js +158 -0
  287. package/dist/cli/commands/atlas.js.map +1 -0
  288. package/dist/cli/commands/confront.js.map +1 -1
  289. package/dist/cli/commands/coverage.js +3 -3
  290. package/dist/cli/commands/index.d.ts +3 -0
  291. package/dist/cli/commands/index.d.ts.map +1 -1
  292. package/dist/cli/commands/index.js +3 -0
  293. package/dist/cli/commands/index.js.map +1 -1
  294. package/dist/cli/commands/map.d.ts.map +1 -1
  295. package/dist/cli/commands/map.js +161 -27
  296. package/dist/cli/commands/map.js.map +1 -1
  297. package/dist/cli/commands/path.d.ts +3 -0
  298. package/dist/cli/commands/path.d.ts.map +1 -0
  299. package/dist/cli/commands/path.js +145 -0
  300. package/dist/cli/commands/path.js.map +1 -0
  301. package/dist/cli/commands/recover.d.ts.map +1 -1
  302. package/dist/cli/commands/recover.js +25 -6
  303. package/dist/cli/commands/recover.js.map +1 -1
  304. package/dist/cli/commands/regime.d.ts +14 -0
  305. package/dist/cli/commands/regime.d.ts.map +1 -0
  306. package/dist/cli/commands/regime.js +189 -0
  307. package/dist/cli/commands/regime.js.map +1 -0
  308. package/dist/cli/errors.d.ts.map +1 -1
  309. package/dist/cli/graphs.d.ts.map +1 -1
  310. package/dist/cli/graphs.js +5 -1
  311. package/dist/cli/graphs.js.map +1 -1
  312. package/dist/cli/main.d.ts.map +1 -1
  313. package/dist/cli/main.js +22 -0
  314. package/dist/cli/main.js.map +1 -1
  315. package/dist/cli/output.d.ts +6 -1
  316. package/dist/cli/output.d.ts.map +1 -1
  317. package/dist/cli/output.js.map +1 -1
  318. package/dist/cli/version.js.map +1 -1
  319. package/dist/cli-api.d.ts +16 -0
  320. package/dist/cli-api.d.ts.map +1 -1
  321. package/dist/cli-api.js +18 -0
  322. package/dist/cli-api.js.map +1 -1
  323. package/dist/composition/axis-audit.js.map +1 -1
  324. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  325. package/dist/composition/bridge-prediction.js +0 -0
  326. package/dist/composition/bridge-prediction.js.map +1 -1
  327. package/dist/composition/canonical-graph.d.ts +2 -2
  328. package/dist/composition/canonical-graph.js +2 -2
  329. package/dist/composition/canonical-graph.js.map +1 -1
  330. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  331. package/dist/composition/compose-symbolic.js.map +1 -1
  332. package/dist/composition/compose.d.ts.map +1 -1
  333. package/dist/composition/compose.js +80 -1
  334. package/dist/composition/compose.js.map +1 -1
  335. package/dist/composition/consequence.js.map +1 -1
  336. package/dist/composition/discovery.js.map +1 -1
  337. package/dist/composition/edge.d.ts +64 -0
  338. package/dist/composition/edge.d.ts.map +1 -1
  339. package/dist/composition/edge.js +29 -0
  340. package/dist/composition/edge.js.map +1 -1
  341. package/dist/composition/edges/calibration.d.ts.map +1 -1
  342. package/dist/composition/edges/calibration.js +46 -0
  343. package/dist/composition/edges/calibration.js.map +1 -1
  344. package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
  345. package/dist/composition/edges/catalog-quantum.js +9 -0
  346. package/dist/composition/edges/catalog-quantum.js.map +1 -1
  347. package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
  348. package/dist/composition/edges/catalog-tranche.js +18 -0
  349. package/dist/composition/edges/catalog-tranche.js.map +1 -1
  350. package/dist/composition/enumerate.js.map +1 -1
  351. package/dist/composition/explain.js.map +1 -1
  352. package/dist/composition/expr-eval.d.ts.map +1 -1
  353. package/dist/composition/expr-eval.js.map +1 -1
  354. package/dist/composition/expr-simplify.d.ts +13 -0
  355. package/dist/composition/expr-simplify.d.ts.map +1 -1
  356. package/dist/composition/expr-simplify.js +25 -0
  357. package/dist/composition/expr-simplify.js.map +1 -1
  358. package/dist/composition/expr-subst.js.map +1 -1
  359. package/dist/composition/graph-viz-svg.d.ts.map +1 -1
  360. package/dist/composition/graph-viz.d.ts +118 -1
  361. package/dist/composition/graph-viz.d.ts.map +1 -1
  362. package/dist/composition/graph-viz.js +189 -6
  363. package/dist/composition/graph-viz.js.map +1 -1
  364. package/dist/composition/identifiability.js.map +1 -1
  365. package/dist/composition/index.d.ts +4 -2
  366. package/dist/composition/index.d.ts.map +1 -1
  367. package/dist/composition/index.js +2 -1
  368. package/dist/composition/index.js.map +1 -1
  369. package/dist/composition/poster-source.d.ts +153 -0
  370. package/dist/composition/poster-source.d.ts.map +1 -0
  371. package/dist/composition/poster-source.js +183 -0
  372. package/dist/composition/poster-source.js.map +1 -0
  373. package/dist/composition/probe/backend-protocol.d.ts +34 -1
  374. package/dist/composition/probe/backend-protocol.d.ts.map +1 -1
  375. package/dist/composition/probe/backend-protocol.js +9 -2
  376. package/dist/composition/probe/backend-protocol.js.map +1 -1
  377. package/dist/composition/probe/candidate-store.d.ts.map +1 -1
  378. package/dist/composition/probe/limits.js.map +1 -1
  379. package/dist/composition/probe/pipeline.js.map +1 -1
  380. package/dist/composition/probe/problem.js.map +1 -1
  381. package/dist/composition/probe/residual.d.ts.map +1 -1
  382. package/dist/composition/probe/residual.js.map +1 -1
  383. package/dist/composition/probe/search-budget.js.map +1 -1
  384. package/dist/composition/proposed-bridges.d.ts +2 -2
  385. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  386. package/dist/composition/proposed-bridges.js +1 -1
  387. package/dist/composition/proposed-bridges.js.map +1 -1
  388. package/dist/composition/retrodiction.js.map +1 -1
  389. package/dist/composition/uncertainty.d.ts +52 -2
  390. package/dist/composition/uncertainty.d.ts.map +1 -1
  391. package/dist/composition/uncertainty.js +38 -2
  392. package/dist/composition/uncertainty.js.map +1 -1
  393. package/dist/composition/user-equation.d.ts.map +1 -1
  394. package/dist/core/flux-rules.d.ts.map +1 -1
  395. package/dist/core/flux-rules.js.map +1 -1
  396. package/dist/core/labeled-tensor.d.ts.map +1 -1
  397. package/dist/core/regime-registry.d.ts.map +1 -1
  398. package/dist/core/regime-rule-install.js.map +1 -1
  399. package/dist/core/tensor.d.ts.map +1 -1
  400. package/dist/core/tensor.js.map +1 -1
  401. package/dist/core/types.d.ts.map +1 -1
  402. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  403. package/dist/dimensional/ast-types.d.ts +31 -1
  404. package/dist/dimensional/ast-types.d.ts.map +1 -1
  405. package/dist/dimensional/bridge-check.d.ts +1 -1
  406. package/dist/dimensional/bridge-check.js +1 -1
  407. package/dist/dimensional/buckingham.d.ts.map +1 -1
  408. package/dist/dimensional/connection.d.ts +2 -0
  409. package/dist/dimensional/connection.d.ts.map +1 -1
  410. package/dist/dimensional/connection.js +2 -0
  411. package/dist/dimensional/connection.js.map +1 -1
  412. package/dist/dimensional/curvature-composite.d.ts +5 -3
  413. package/dist/dimensional/curvature-composite.d.ts.map +1 -1
  414. package/dist/dimensional/curvature-composite.js +1 -0
  415. package/dist/dimensional/curvature-composite.js.map +1 -1
  416. package/dist/dimensional/curvature-invariants.d.ts +2 -0
  417. package/dist/dimensional/curvature-invariants.d.ts.map +1 -1
  418. package/dist/dimensional/curvature-invariants.js +2 -0
  419. package/dist/dimensional/curvature-invariants.js.map +1 -1
  420. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  421. package/dist/dimensional/einstein-equation.d.ts +3 -3
  422. package/dist/dimensional/einstein-equation.js +3 -3
  423. package/dist/dimensional/errors.d.ts.map +1 -1
  424. package/dist/dimensional/metric.d.ts +5 -2
  425. package/dist/dimensional/metric.d.ts.map +1 -1
  426. package/dist/dimensional/metric.js +5 -2
  427. package/dist/dimensional/metric.js.map +1 -1
  428. package/dist/dimensional/tensor-trace.js.map +1 -1
  429. package/dist/dimensional/validator-registry.js.map +1 -1
  430. package/dist/dimensional/validator.d.ts +3 -2
  431. package/dist/dimensional/validator.d.ts.map +1 -1
  432. package/dist/dimensional/validator.js +23 -4
  433. package/dist/dimensional/validator.js.map +1 -1
  434. package/dist/index.d.ts +4 -3
  435. package/dist/index.d.ts.map +1 -1
  436. package/dist/index.js +4 -1
  437. package/dist/index.js.map +1 -1
  438. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  439. package/dist/numerical/curvature-lowering-helpers.js +104 -0
  440. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  441. package/dist/numerical/errors.d.ts.map +1 -1
  442. package/dist/numerical/errors.js.map +1 -1
  443. package/dist/numerical/float64-engine.d.ts.map +1 -1
  444. package/dist/numerical/float64-engine.js +51 -24
  445. package/dist/numerical/float64-engine.js.map +1 -1
  446. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  447. package/dist/numerical/formula-dimension.js.map +1 -1
  448. package/dist/numerical/formula.d.ts.map +1 -1
  449. package/dist/numerical/formula.js.map +1 -1
  450. package/dist/numerical/geometrized.d.ts.map +1 -1
  451. package/dist/numerical/gl4-integrator.d.ts +3 -3
  452. package/dist/numerical/gl4-integrator.js +3 -3
  453. package/dist/numerical/killing.d.ts +47 -5
  454. package/dist/numerical/killing.d.ts.map +1 -1
  455. package/dist/numerical/killing.js +41 -3
  456. package/dist/numerical/killing.js.map +1 -1
  457. package/dist/numerical/klein-gordon.d.ts +2 -2
  458. package/dist/numerical/klein-gordon.js +2 -2
  459. package/dist/numerical/lowering.d.ts +2 -2
  460. package/dist/numerical/lowering.d.ts.map +1 -1
  461. package/dist/numerical/lowering.js +5 -3
  462. package/dist/numerical/lowering.js.map +1 -1
  463. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  464. package/dist/numerical/mathts-engine.js.map +1 -1
  465. package/dist/numerical/metric-inverse.js.map +1 -1
  466. package/dist/numerical/perihelion-finder.d.ts +15 -13
  467. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  468. package/dist/numerical/perihelion-finder.js +15 -13
  469. package/dist/numerical/perihelion-finder.js.map +1 -1
  470. package/dist/numerical/weyl-lowering.d.ts.map +1 -1
  471. package/dist/numerical/weyl-lowering.js +90 -40
  472. package/dist/numerical/weyl-lowering.js.map +1 -1
  473. package/package.json +121 -104
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Routes through an atlas family, and the error bound a route carries.
3
+ *
4
+ * Two functions, and the second is the one that can do damage:
5
+ *
6
+ * - {@link findPath} is pure graph search. It answers "is there a chain of
7
+ * bridges from A to B", and nothing more. A path existing says NOTHING about
8
+ * whether that path supports a claim.
9
+ * - {@link boundPath} answers "what error bound does this chain carry", and its
10
+ * default answer is NO BOUND. `docs/planning/Atlas-Phase-2-Design.md` §3:
11
+ *
12
+ * > A path containing any edge whose relation composes to
13
+ * > `'no-composite-claim'` has NO bound. It must return an explicit no-claim,
14
+ * > never a number. A composed number over an undefined composite would be
15
+ * > the most dangerous output this library could produce: precise-looking and
16
+ * > unfounded.
17
+ *
18
+ * So {@link boundPath} returns a DISCRIMINATED UNION, not a number. A caller
19
+ * cannot read `.bound` off a no-claim, because a no-claim has no `.bound` — the
20
+ * refusal is enforced by the type rather than by a documented convention.
21
+ *
22
+ * ## Norms — why an exact edge does not compose for free
23
+ *
24
+ * `./error-algebra.ts` states the rule this module obeys, and it is narrower
25
+ * than it first reads:
26
+ *
27
+ * > An exact equivalence contributes `IDENTITY_BOUND` **in the norms these
28
+ * > Phase 0 bridges state** — not in every norm.
29
+ *
30
+ * An `exact-equivalence` bridge carries no `bound`, hence states no `norm`. It
31
+ * therefore contributes `IDENTITY_BOUND` in NO norm, and a path that mixes it
32
+ * with a normed bound cannot claim the composite holds in that norm. That is a
33
+ * `'norm-not-stated'` no-claim. The composed NUMBER would be unchanged —
34
+ * composing with the identity is arithmetically a no-op — which is exactly what
35
+ * makes the error invisible without this gate: the danger is not a wrong
36
+ * magnitude, it is a right magnitude attached to the wrong norm.
37
+ *
38
+ * ⚠ **Correction to the S2.2 brief.** The brief states that no field records a
39
+ * norm and that Phase 2 must add `norm?` to `ApproximationBound`. That is
40
+ * out of date: `ApproximationBound.norm` already exists as a MANDATORY
41
+ * `string` (Phase 0, `./types.ts`). No type change was needed, and this module
42
+ * reads the field that is already there.
43
+ *
44
+ * **Uniformity is gated here, at use.** `ApproximationBound.uniformity` may
45
+ * be `null` (or empty — the same state) so a real bound can be recorded
46
+ * before anyone has analysed what the error is uniform in. Composing such a
47
+ * bound would attach a number to an unanalysed claim, so {@link boundPath}
48
+ * returns `'uniformity-unanalysed'` and does not compute one.
49
+ * `propagateUncertainty` does not read the field and does not fold `delta`
50
+ * into `sigma`: it stays a statistical-sigma function.
51
+ *
52
+ * Pure: no I/O, no registry reads.
53
+ *
54
+ * @module atlas/path-bound
55
+ */
56
+ import { composeBoundPath, IDENTITY_BOUND } from './error-algebra.js';
57
+ import { composeRelation, NO_COMPOSITE_CLAIM } from './composition-table.js';
58
+ import { ATLAS_FAMILIES } from './families.js';
59
+ /**
60
+ * Families {@link findPath} can search: every registered family. This was the
61
+ * oscillator family alone, which made the diffusion and wave families
62
+ * unsearchable once they existed. A route stays INSIDE one family: a bridge
63
+ * that ends in another family's model is not followed across (stated, not
64
+ * hidden — cross-family routes are out of this function's scope).
65
+ *
66
+ * @internal
67
+ */
68
+ const FAMILIES = Object.fromEntries(ATLAS_FAMILIES.map((f) => [f.family, f]));
69
+ /** Expand a family's bridges into directed edges. Single-premise chains only. */
70
+ function directedEdges(family) {
71
+ const edges = [];
72
+ for (const bridge of family.bridges) {
73
+ // Sprint 2 scope: a multi-premise bridge is a JOIN, not a link in a chain,
74
+ // and is skipped rather than silently reduced to its first premise.
75
+ if (bridge.premises.length !== 1)
76
+ continue;
77
+ const from = bridge.premises[0];
78
+ edges.push({ from, to: bridge.conclusion, bridge });
79
+ if (bridge.relation === 'exact-equivalence') {
80
+ edges.push({ from: bridge.conclusion, to: from, bridge });
81
+ }
82
+ }
83
+ return edges;
84
+ }
85
+ /**
86
+ * Shortest chain of bridges from `from` to `to`, or `null` if none exists.
87
+ *
88
+ * Breadth-first, so the result is a shortest path by edge count. Ties are
89
+ * broken by `family.bridges` order, which is the design note's order and is
90
+ * therefore stable across runs.
91
+ *
92
+ * A returned path is a ROUTE, not a warrant: ask {@link boundPath} what the
93
+ * route supports.
94
+ *
95
+ * @throws RangeError if `family` is not a known family, or an endpoint is not
96
+ * one of its models. An unknown endpoint returning `null` would be
97
+ * indistinguishable from a genuinely disconnected pair.
98
+ * @internal
99
+ */
100
+ export function findPath(family, from, to) {
101
+ const fam = FAMILIES[family];
102
+ if (fam === undefined) {
103
+ throw new RangeError(`findPath: unknown family '${family}'`);
104
+ }
105
+ const models = new Set(fam.models.map((m) => m.id));
106
+ for (const endpoint of [from, to]) {
107
+ if (!models.has(endpoint)) {
108
+ throw new RangeError(`findPath: '${endpoint}' is not a model of family '${family}'`);
109
+ }
110
+ }
111
+ if (from === to)
112
+ return [];
113
+ const outgoing = new Map();
114
+ for (const edge of directedEdges(fam)) {
115
+ const bucket = outgoing.get(edge.from);
116
+ if (bucket === undefined)
117
+ outgoing.set(edge.from, [edge]);
118
+ else
119
+ bucket.push(edge);
120
+ }
121
+ const cameBy = new Map();
122
+ const seen = new Set([from]);
123
+ const queue = [from];
124
+ while (queue.length > 0) {
125
+ const node = queue.shift();
126
+ for (const edge of outgoing.get(node) ?? []) {
127
+ if (seen.has(edge.to))
128
+ continue;
129
+ seen.add(edge.to);
130
+ cameBy.set(edge.to, edge);
131
+ if (edge.to === to) {
132
+ const path = [];
133
+ for (let at = to; at !== from;) {
134
+ const step = cameBy.get(at);
135
+ path.unshift(step.bridge);
136
+ at = step.from;
137
+ }
138
+ return path;
139
+ }
140
+ queue.push(edge.to);
141
+ }
142
+ }
143
+ return null;
144
+ }
145
+ /**
146
+ * The error bound a chain of bridges carries — or an explicit no-claim.
147
+ *
148
+ * Four gates, in this order. Each one is a reason to refuse, and the FIRST
149
+ * reason found is the one reported; none of them is skippable by a caller.
150
+ *
151
+ * 1. **Relation.** `composeRelation` is folded along the path. The moment the
152
+ * running composite is `'no-composite-claim'`, the path has no bound. This
153
+ * is design note §3 constraint 1 and it is checked before any arithmetic,
154
+ * so no number is ever computed for a path that cannot carry one.
155
+ * 2. **Uniformity.** Any bound whose `uniformity` is `null` or empty is not
156
+ * yet analysed. The path returns `'uniformity-unanalysed'` and no Lipschitz
157
+ * arithmetic runs. An edge with no `bound` — an exact equivalence, or an
158
+ * unbounded coarse-graining — does not fail this gate.
159
+ * 3. **Lipschitz.** `composeBoundPath` folds the per-edge pairs. A `null` — an
160
+ * edge that is neither bounded nor exact — is tolerated only as the LAST
161
+ * entry, where it terminates the claim (`terminal: true`); anywhere else it
162
+ * throws `MissingLipschitzError` rather than inventing a constant.
163
+ * 4. **Norm.** Every stated norm on the path must be the SAME norm, and no
164
+ * unnormed exact map may carry a normed claim. An `exact-equivalence`
165
+ * states no norm (it has no `bound`), so a path mixing one with a normed
166
+ * bound is `'norm-not-stated'` — see the module note.
167
+ *
168
+ * @throws RangeError on an empty path. Returning `IDENTITY_BOUND` for "no
169
+ * edges" would be a bound asserted about nothing.
170
+ * @throws MissingLipschitzError via {@link composeBoundPath}; see gate 3.
171
+ * @internal
172
+ */
173
+ export function boundPath(bridges) {
174
+ if (bridges.length === 0) {
175
+ throw new RangeError('boundPath: an empty path composes nothing; there is no bound to state');
176
+ }
177
+ // ── Gate 1: the relation must compose all the way along ───────────────────
178
+ let relation = bridges[0].relation;
179
+ for (let i = 1; i < bridges.length; i++) {
180
+ const next = bridges[i];
181
+ // The loop RETURNS on the first silent cell, so `relation` is always a
182
+ // real `RelationType` here — no re-check is needed, and TypeScript proves
183
+ // it (a guard here is flagged as having no overlap).
184
+ relation = composeRelation(relation, next.relation);
185
+ if (relation === NO_COMPOSITE_CLAIM) {
186
+ return {
187
+ kind: 'no-claim',
188
+ reason: NO_COMPOSITE_CLAIM,
189
+ detail: `'${bridges[i - 1].id}' (${bridges[i - 1].relation}) then '${next.id}' ` +
190
+ `(${next.relation}) composes to no relation, so the path carries no bound`,
191
+ };
192
+ }
193
+ }
194
+ // ── Gate 2: an unanalysed uniformity yields no number ─────────────────────
195
+ // Before any Lipschitz arithmetic. `null` and `[]` are the same state: an
196
+ // empty list is a universal over nothing, and counting it as analysed is
197
+ // the convention-checked empty-object defect. An edge with no bound states
198
+ // no error, so it does not fail this gate.
199
+ for (const bridge of bridges) {
200
+ if (bridge.bound === undefined)
201
+ continue;
202
+ const uniformity = bridge.bound.uniformity;
203
+ if (uniformity === null || uniformity.length === 0) {
204
+ const how = uniformity === null ? 'null' : 'empty';
205
+ return {
206
+ kind: 'no-claim',
207
+ reason: 'uniformity-unanalysed',
208
+ detail: `'${bridge.id}' has uniformity ${how} (not yet analysed), so the path carries no numeric bound`,
209
+ };
210
+ }
211
+ }
212
+ // ── Collect the per-edge pairs the remaining gates read ───────────────────
213
+ // What each edge contributes. The split that matters: an `exact-equivalence`
214
+ // with no `bound` is EXACT — it contributes `IDENTITY_BOUND`, not an unknown
215
+ // constant. Any OTHER relation with no bound has an unknown Lipschitz
216
+ // constant, and `null` is what says so. Conflating the two would either
217
+ // invent a constant for a lossy map or throw on an exact one.
218
+ const pairs = [];
219
+ const norms = new Set();
220
+ const unnormedIdentities = [];
221
+ for (const bridge of bridges) {
222
+ if (bridge.bound !== undefined) {
223
+ pairs.push({ K: bridge.bound.K, delta: bridge.bound.delta });
224
+ norms.add(bridge.bound.norm);
225
+ }
226
+ else if (bridge.relation === 'exact-equivalence') {
227
+ pairs.push(IDENTITY_BOUND);
228
+ unnormedIdentities.push(bridge.id);
229
+ }
230
+ else {
231
+ pairs.push(null);
232
+ }
233
+ }
234
+ // ── Gate 3: an unknown Lipschitz constant, anywhere but last, is fatal ────
235
+ // Delegated to `composeBoundPath`, which throws `MissingLipschitzError`
236
+ // rather than inventing a constant. Run BEFORE the norm gate: an unbounded
237
+ // composite is a harder failure than an unstatable norm, and reporting the
238
+ // softer one would mask it.
239
+ const composed = composeBoundPath(pairs);
240
+ // ── Gate 4: one norm, and no unnormed map carrying a normed claim ─────────
241
+ if (norms.size > 1) {
242
+ return {
243
+ kind: 'no-claim',
244
+ reason: 'norm-mismatch',
245
+ detail: `the path states ${norms.size} different norms (${[...norms].map((n) => `'${n}'`).join(', ')}); ` +
246
+ 'bounds in different norms do not compose',
247
+ };
248
+ }
249
+ if (unnormedIdentities.length > 0 && norms.size > 0) {
250
+ return {
251
+ kind: 'no-claim',
252
+ reason: 'norm-not-stated',
253
+ detail: `${unnormedIdentities.map((id) => `'${id}'`).join(', ')} state no norm, so they ` +
254
+ `contribute IDENTITY_BOUND in no norm; the composite cannot be claimed in ` +
255
+ `'${[...norms][0]}'`,
256
+ };
257
+ }
258
+ return {
259
+ kind: 'bound',
260
+ bound: composed.bound,
261
+ terminal: composed.terminal,
262
+ relation,
263
+ norm: [...norms][0] ?? null,
264
+ };
265
+ }
266
+ /** Re-exported so a caller need not reach into the algebra module. @internal */
267
+ export { IDENTITY_BOUND };
268
+ //# sourceMappingURL=path-bound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-bound.js","sourceRoot":"","sources":["../../src/atlas/path-bound.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Atlas Phase 3 — the poster's two association-only lines.
3
+ *
4
+ * An `Association` (`../association.ts`) records that two things SHARE
5
+ * something and asserts **no relation**, **no composite claim**, and **no
6
+ * graph edge**. `ROADMAP.md` Phase 3 puts exactly two of its fifteen lines in
7
+ * that category, and both are here:
8
+ *
9
+ * - **`7 ↔ 16` — the historical link ONLY.** `kind: 'historical-influence'`,
10
+ * which is the value that says "influence, not derivation". The derivation
11
+ * route to 16 exists and is recorded as a hyperedge from the FULL Maxwell
12
+ * system in `./derivations.ts`; this record exists so the resemblance
13
+ * between one Maxwell equation and special relativity stops being
14
+ * re-surfaced as if it were that route.
15
+ * - **`3, 14 → *` — association only.** The line states no target, so the
16
+ * target is recorded as {@link UNSPECIFIED_TARGET} rather than guessed. Two
17
+ * records, one per entry: the line says each of 3 and 14 is association-only,
18
+ * NOT that 3 and 14 are associated with each other — pairing them would be a
19
+ * claim no source makes.
20
+ *
21
+ * `kind` is assigned the way `../association.ts` insists: mechanically, from
22
+ * what the line says, never as a fresh per-pair physics judgement.
23
+ * `ASSOCIATIONS` in that module is seeded from the `'decoy'` adjudications and
24
+ * is pinned by test against the live ledger, so these records live here rather
25
+ * than being appended to it.
26
+ *
27
+ * @module atlas/poster/associations
28
+ */
29
+ import type { Association } from '../association.js';
30
+ import type { StatementId } from '../statement.js';
31
+ /**
32
+ * The second member of a `3, 14 → *` association: the line's `*`, which names
33
+ * no target.
34
+ *
35
+ * A sentinel rather than a real id, because inventing a target would invent
36
+ * the association. Any consumer that draws these edges must treat it as "no
37
+ * target recorded" and not resolve it.
38
+ *
39
+ * @internal
40
+ */
41
+ export declare const UNSPECIFIED_TARGET = "*";
42
+ /**
43
+ * The poster's association records.
44
+ *
45
+ * `citation` is `ROADMAP.md` with its Phase 3 section, because that is the
46
+ * source these came from — `../association.ts` requires the note's origin, and
47
+ * the adjudication ledger is not it.
48
+ *
49
+ * @internal
50
+ */
51
+ export declare const POSTER_ASSOCIATIONS: readonly Association[];
52
+ /**
53
+ * Statement pairs that may NEVER appear as a derivation, in either direction.
54
+ *
55
+ * Derived from the records above rather than restated, so the guard and the
56
+ * data cannot drift apart: adding an association adds the prohibition.
57
+ * Pairs whose second member is {@link UNSPECIFIED_TARGET} are excluded —
58
+ * there is no second statement to forbid an edge to, and a sentinel in a
59
+ * pair-matcher would silently match nothing while looking like a guard.
60
+ *
61
+ * Consumed by `validatePosterRelations` in `./derivations.ts`.
62
+ *
63
+ * @internal
64
+ */
65
+ export declare const ASSOCIATION_ONLY_PAIRS: readonly (readonly [StatementId, StatementId])[];
66
+ //# sourceMappingURL=associations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"associations.d.ts","sourceRoot":"","sources":["../../../src/atlas/poster/associations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,WAAW,EA6BrD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAGhF,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Atlas Phase 3 — the poster's two association-only lines.
3
+ *
4
+ * An `Association` (`../association.ts`) records that two things SHARE
5
+ * something and asserts **no relation**, **no composite claim**, and **no
6
+ * graph edge**. `ROADMAP.md` Phase 3 puts exactly two of its fifteen lines in
7
+ * that category, and both are here:
8
+ *
9
+ * - **`7 ↔ 16` — the historical link ONLY.** `kind: 'historical-influence'`,
10
+ * which is the value that says "influence, not derivation". The derivation
11
+ * route to 16 exists and is recorded as a hyperedge from the FULL Maxwell
12
+ * system in `./derivations.ts`; this record exists so the resemblance
13
+ * between one Maxwell equation and special relativity stops being
14
+ * re-surfaced as if it were that route.
15
+ * - **`3, 14 → *` — association only.** The line states no target, so the
16
+ * target is recorded as {@link UNSPECIFIED_TARGET} rather than guessed. Two
17
+ * records, one per entry: the line says each of 3 and 14 is association-only,
18
+ * NOT that 3 and 14 are associated with each other — pairing them would be a
19
+ * claim no source makes.
20
+ *
21
+ * `kind` is assigned the way `../association.ts` insists: mechanically, from
22
+ * what the line says, never as a fresh per-pair physics judgement.
23
+ * `ASSOCIATIONS` in that module is seeded from the `'decoy'` adjudications and
24
+ * is pinned by test against the live ledger, so these records live here rather
25
+ * than being appended to it.
26
+ *
27
+ * @module atlas/poster/associations
28
+ */
29
+ /**
30
+ * The second member of a `3, 14 → *` association: the line's `*`, which names
31
+ * no target.
32
+ *
33
+ * A sentinel rather than a real id, because inventing a target would invent
34
+ * the association. Any consumer that draws these edges must treat it as "no
35
+ * target recorded" and not resolve it.
36
+ *
37
+ * @internal
38
+ */
39
+ export const UNSPECIFIED_TARGET = '*';
40
+ /**
41
+ * The poster's association records.
42
+ *
43
+ * `citation` is `ROADMAP.md` with its Phase 3 section, because that is the
44
+ * source these came from — `../association.ts` requires the note's origin, and
45
+ * the adjudication ledger is not it.
46
+ *
47
+ * @internal
48
+ */
49
+ export const POSTER_ASSOCIATIONS = [
50
+ {
51
+ id: 'a-7-16-historical',
52
+ kind: 'historical-influence',
53
+ between: ['poster-7', 'poster-16'],
54
+ note: 'Historical link only. Entry 7 influenced special relativity historically; it does ' +
55
+ 'NOT derive it. The derivation route is the hyperedge {full Maxwell system, spacetime ' +
56
+ 'structure} → 16, never from 7 alone.',
57
+ citation: 'ROADMAP.md § Phase 3 — Hyperedges, models, and the poster as a typed index',
58
+ },
59
+ {
60
+ id: 'a-3-association-only',
61
+ kind: 'shared-structure',
62
+ between: ['poster-3', UNSPECIFIED_TARGET],
63
+ note: 'Association only. ROADMAP.md Phase 3 states "3, 14 → * association only" and names ' +
64
+ 'no target; the target is recorded as unspecified rather than guessed.',
65
+ citation: 'ROADMAP.md § Phase 3 — Hyperedges, models, and the poster as a typed index',
66
+ },
67
+ {
68
+ id: 'a-14-association-only',
69
+ kind: 'shared-structure',
70
+ between: ['poster-14', UNSPECIFIED_TARGET],
71
+ note: 'Association only. ROADMAP.md Phase 3 states "3, 14 → * association only" and names ' +
72
+ 'no target; the target is recorded as unspecified rather than guessed.',
73
+ citation: 'ROADMAP.md § Phase 3 — Hyperedges, models, and the poster as a typed index',
74
+ },
75
+ ];
76
+ /**
77
+ * Statement pairs that may NEVER appear as a derivation, in either direction.
78
+ *
79
+ * Derived from the records above rather than restated, so the guard and the
80
+ * data cannot drift apart: adding an association adds the prohibition.
81
+ * Pairs whose second member is {@link UNSPECIFIED_TARGET} are excluded —
82
+ * there is no second statement to forbid an edge to, and a sentinel in a
83
+ * pair-matcher would silently match nothing while looking like a guard.
84
+ *
85
+ * Consumed by `validatePosterRelations` in `./derivations.ts`.
86
+ *
87
+ * @internal
88
+ */
89
+ export const ASSOCIATION_ONLY_PAIRS = POSTER_ASSOCIATIONS.filter((a) => a.between[1] !== UNSPECIFIED_TARGET).map((a) => [a.between[0], a.between[1]]);
90
+ //# sourceMappingURL=associations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"associations.js","sourceRoot":"","sources":["../../../src/atlas/poster/associations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;QAClC,IAAI,EACF,oFAAoF;YACpF,uFAAuF;YACvF,sCAAsC;QACxC,QAAQ,EAAE,4EAA4E;KACvF;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;QACzC,IAAI,EACF,qFAAqF;YACrF,uEAAuE;QACzE,QAAQ,EAAE,4EAA4E;KACvF;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;QAC1C,IAAI,EACF,qFAAqF;YACrF,uEAAuE;QACzE,QAAQ,EAAE,4EAA4E;KACvF;CACF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,sBAAsB,GACjC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,GAAG,CACxE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAU,CAC7C,CAAC"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Atlas Phase 3 — the poster's typed edges.
3
+ *
4
+ * `ROADMAP.md` Phase 3 states FIFTEEN bridge lines. This module records all
5
+ * fifteen, each in the container its type demands, and {@link POSTER_LINES} is
6
+ * the table that makes "all fifteen, correctly typed" a checkable claim rather
7
+ * than a reading of the source.
8
+ *
9
+ * ## Three containers, because the lines are three different acts
10
+ *
11
+ * - **{@link POSTER_DERIVATIONS}** — a `Derivation` asserts `premises ⊢
12
+ * conclusion`. Most lines are this.
13
+ * - **`./associations.ts`** — `7 ↔ 16` is an **association for the historical
14
+ * link only**, and `3, 14 → *` is association only. An `Association` makes
15
+ * no composite claim and is not a graph edge (`../association.ts`), which is
16
+ * exactly the content of those two lines.
17
+ * - **{@link POSTER_CONSTRAINTS}** — `5, 16 → 8` *"constrain but do not
18
+ * determine"*. Neither of the other two containers can say that. A
19
+ * `Derivation` would assert that 5 and 16 YIELD 8, which is the claim the
20
+ * line explicitly denies; an `Association` would say only that the three
21
+ * resemble each other, which drops the constraint. **This third container is
22
+ * a correction to the S3.3 brief**, which allows only derivations and
23
+ * associations; recording `5, 16 → 8` as a derivation would have been the
24
+ * overclaim the sprint exists to prevent. The variational route the line
25
+ * names — Einstein–Hilbert — IS a derivation, and it is recorded as one.
26
+ *
27
+ * ## One derivation has no premises, and that is the honest form
28
+ *
29
+ * `d-4-commutator` records the line *"`4` derivation from the commutator and
30
+ * Cauchy–Schwarz, no time-dependent equation needed"*. Its two inputs are not
31
+ * poster entries, and they are not among the five hidden nodes `ROADMAP.md`
32
+ * names. Inventing `statement-canonical-commutator` to fill the premise slot
33
+ * would be the invention §5 of the design note forbids, so the inputs are
34
+ * recorded as `sideConditions` and the premise set is empty. The empty set
35
+ * does not assert that entry 4 follows from nothing — `sideConditions` carries
36
+ * what it follows from — and {@link validatePosterRelations} pins that this is
37
+ * the ONLY empty-premise record, so a second one cannot appear unnoticed.
38
+ *
39
+ * ## Witnesses
40
+ *
41
+ * `Derivation` has no `witnesses` field (`../derivation.ts` is Wave 1's and is
42
+ * not mine to widen), so {@link POSTER_WITNESSES} is a side table keyed by
43
+ * derivation id. The two Sprint 0 witnesses land where `ROADMAP.md` puts them:
44
+ * W4 (chirped Gaussian) on `13 ↔ 4`, W5 (Wick rotation) on `6 ↔ 13`.
45
+ *
46
+ * @module atlas/poster/derivations
47
+ */
48
+ import type { Derivation, DerivationId } from '../derivation.js';
49
+ import type { StatementId } from '../statement.js';
50
+ import type { Witness } from '../types.js';
51
+ /**
52
+ * `5, 16 → 8`: premises that CONSTRAIN a target without determining it.
53
+ *
54
+ * It has no `relation`, no `conclusion` and no context union, because it
55
+ * concludes nothing. `alternativeRoute` names what does determine the target,
56
+ * so the record cannot be read as "and nothing else does".
57
+ *
58
+ * @internal
59
+ */
60
+ export interface PosterConstraint {
61
+ readonly id: string;
62
+ readonly premises: readonly StatementId[];
63
+ /** What the premises constrain. NOT a conclusion. */
64
+ readonly constrains: StatementId;
65
+ /** Why the premises fall short of determining it. */
66
+ readonly note: string;
67
+ /** The derivation id that DOES reach the target, when one is recorded. */
68
+ readonly alternativeRoute?: DerivationId;
69
+ }
70
+ /** Where a poster line is recorded. @internal */
71
+ export type LineContainer = 'derivation' | 'association' | 'constraint';
72
+ /**
73
+ * One of the fifteen `ROADMAP.md` Phase 3 bridge lines, and the records that
74
+ * carry it.
75
+ *
76
+ * @internal
77
+ */
78
+ export interface PosterLine {
79
+ /** `'L1'` … `'L15'`, in the order `ROADMAP.md` lists them. */
80
+ readonly id: string;
81
+ /** The line as `ROADMAP.md` writes it, in substance. */
82
+ readonly line: string;
83
+ /** Every container this line lands in. */
84
+ readonly containers: readonly LineContainer[];
85
+ /** Ids of the records, across those containers. */
86
+ readonly records: readonly string[];
87
+ }
88
+ /**
89
+ * The poster's derivation hyperedges.
90
+ *
91
+ * Each `relation` is the type `ROADMAP.md` names for its line, and each
92
+ * `sideConditions` list carries that line's qualifications — including the
93
+ * ones that say what the edge does NOT give, because a qualification dropped
94
+ * here is a claim widened silently.
95
+ *
96
+ * @internal
97
+ */
98
+ export declare const POSTER_DERIVATIONS: readonly Derivation[];
99
+ /**
100
+ * `5, 16 → 8` — the one line that asserts a constraint and denies a
101
+ * derivation. See the module note for why it gets its own container.
102
+ *
103
+ * @internal
104
+ */
105
+ export declare const POSTER_CONSTRAINTS: readonly PosterConstraint[];
106
+ /**
107
+ * The Sprint 0 witnesses, attached where `ROADMAP.md` Phase 3 puts them.
108
+ *
109
+ * A side table rather than a field, because `Derivation` is Wave 1's record
110
+ * and widening it is not this brief's scope.
111
+ *
112
+ * @internal
113
+ */
114
+ export declare const POSTER_WITNESSES: Readonly<Record<DerivationId, readonly Witness[]>>;
115
+ /**
116
+ * The fifteen lines, and where each one is recorded.
117
+ *
118
+ * The table is the deliverable "all fifteen, correctly typed" in checkable
119
+ * form: {@link validatePosterRelations} resolves every `records` id in every
120
+ * `containers` entry, so a line that lost its record, or a record that moved
121
+ * to the wrong container, is a failure rather than a reading.
122
+ *
123
+ * @internal
124
+ */
125
+ export declare const POSTER_LINES: readonly PosterLine[];
126
+ /** One defect {@link validatePosterRelations} found. @internal */
127
+ export interface PosterProblem {
128
+ readonly kind: 'unknown-statement' | 'no-context-union' | 'association-typed-as-derivation' | 'missing-record' | 'wrong-container' | 'unexpected-empty-premises';
129
+ readonly detail: string;
130
+ }
131
+ /**
132
+ * Every defect this index can have that a type cannot catch.
133
+ *
134
+ * Six checks, and the third is the one the S3.3 brief singles out:
135
+ *
136
+ * 1. **Unknown statement.** Every premise and conclusion resolves in
137
+ * `POSTER_REGISTRY`.
138
+ * 2. **No context union.** A derivation whose premises do not pool states no
139
+ * claim; `makeDerivation` records that rather than throwing, so a record
140
+ * carrying a refusal would otherwise sit in the list looking like an edge.
141
+ * 3. **An association typed as a derivation.** `7 ↔ 16` and `3, 14 → *` are
142
+ * associations. If a derivation ever links either pair — in either
143
+ * direction — the distinction has been lost, and it is the distinction
144
+ * that carries the physics: the route to 16 runs from the full Maxwell
145
+ * system, *never from 7 alone*.
146
+ * 4. **Missing record / 5. wrong container.** Every id in
147
+ * {@link POSTER_LINES} exists, in one of the containers its line declares.
148
+ * 6. **Unexpected empty premises.** Exactly one record may have none.
149
+ *
150
+ * Returns problems rather than throwing, so a caller sees ALL of them at once
151
+ * — a thrown first defect hides the rest, and this list is checked as a whole.
152
+ *
153
+ * @internal
154
+ */
155
+ export declare function validatePosterRelations(): readonly PosterProblem[];
156
+ //# sourceMappingURL=derivations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derivations.d.ts","sourceRoot":"","sources":["../../../src/atlas/poster/derivations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,qDAAqD;IACrD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC;CAC1C;AAED,iDAAiD;AACjD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;AAExE;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAWD;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,UAAU,EAyKnD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAUzD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,OAAO,EAAE,CAAC,CAY/E,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAqG7C,CAAC;AAEF,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EACT,mBAAmB,GACnB,kBAAkB,GAClB,iCAAiC,GACjC,gBAAgB,GAChB,iBAAiB,GACjB,2BAA2B,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAYD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,uBAAuB,IAAI,SAAS,aAAa,EAAE,CAqElE"}