universal-physics-tensor 0.45.2 → 0.47.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 (548) hide show
  1. package/README.md +85 -66
  2. package/bin/upt.mjs +22 -22
  3. package/dist/atlas/applicability.d.ts +108 -0
  4. package/dist/atlas/applicability.d.ts.map +1 -0
  5. package/dist/atlas/applicability.js +301 -0
  6. package/dist/atlas/applicability.js.map +1 -0
  7. package/dist/atlas/association.d.ts +92 -0
  8. package/dist/atlas/association.d.ts.map +1 -0
  9. package/dist/atlas/association.js +112 -0
  10. package/dist/atlas/association.js.map +1 -0
  11. package/dist/atlas/benchmark/backend-shapes.d.ts +47 -0
  12. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -0
  13. package/dist/atlas/benchmark/backend-shapes.js +58 -0
  14. package/dist/atlas/benchmark/backend-shapes.js.map +1 -0
  15. package/dist/atlas/benchmark/baselines.d.ts +64 -0
  16. package/dist/atlas/benchmark/baselines.d.ts.map +1 -0
  17. package/dist/atlas/benchmark/baselines.js +112 -0
  18. package/dist/atlas/benchmark/baselines.js.map +1 -0
  19. package/dist/atlas/benchmark/leakage.d.ts +56 -0
  20. package/dist/atlas/benchmark/leakage.d.ts.map +1 -0
  21. package/dist/atlas/benchmark/leakage.js +100 -0
  22. package/dist/atlas/benchmark/leakage.js.map +1 -0
  23. package/dist/atlas/benchmark/loader.d.ts +56 -0
  24. package/dist/atlas/benchmark/loader.d.ts.map +1 -0
  25. package/dist/atlas/benchmark/loader.js +104 -0
  26. package/dist/atlas/benchmark/loader.js.map +1 -0
  27. package/dist/atlas/benchmark/run-atlas.d.ts +72 -0
  28. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -0
  29. package/dist/atlas/benchmark/run-atlas.js +210 -0
  30. package/dist/atlas/benchmark/run-atlas.js.map +1 -0
  31. package/dist/atlas/benchmark/stats.d.ts +90 -0
  32. package/dist/atlas/benchmark/stats.d.ts.map +1 -0
  33. package/dist/atlas/benchmark/stats.js +159 -0
  34. package/dist/atlas/benchmark/stats.js.map +1 -0
  35. package/dist/atlas/benchmark/study.d.ts +120 -0
  36. package/dist/atlas/benchmark/study.d.ts.map +1 -0
  37. package/dist/atlas/benchmark/study.js +192 -0
  38. package/dist/atlas/benchmark/study.js.map +1 -0
  39. package/dist/atlas/benchmark/types.d.ts +79 -0
  40. package/dist/atlas/benchmark/types.d.ts.map +1 -0
  41. package/dist/atlas/benchmark/types.js +46 -0
  42. package/dist/atlas/benchmark/types.js.map +1 -0
  43. package/dist/atlas/composition-table.d.ts +55 -0
  44. package/dist/atlas/composition-table.d.ts.map +1 -0
  45. package/dist/atlas/composition-table.js +133 -0
  46. package/dist/atlas/composition-table.js.map +1 -0
  47. package/dist/atlas/conventions.d.ts +63 -0
  48. package/dist/atlas/conventions.d.ts.map +1 -0
  49. package/dist/atlas/conventions.js +93 -0
  50. package/dist/atlas/conventions.js.map +1 -0
  51. package/dist/atlas/coverage.d.ts +93 -0
  52. package/dist/atlas/coverage.d.ts.map +1 -0
  53. package/dist/atlas/coverage.js +69 -0
  54. package/dist/atlas/coverage.js.map +1 -0
  55. package/dist/atlas/derivation.d.ts +137 -0
  56. package/dist/atlas/derivation.d.ts.map +1 -0
  57. package/dist/atlas/derivation.js +190 -0
  58. package/dist/atlas/derivation.js.map +1 -0
  59. package/dist/atlas/derive-evidence.d.ts +218 -0
  60. package/dist/atlas/derive-evidence.d.ts.map +1 -0
  61. package/dist/atlas/derive-evidence.js +225 -0
  62. package/dist/atlas/derive-evidence.js.map +1 -0
  63. package/dist/atlas/diffusion/bridges-closure.d.ts +63 -0
  64. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -0
  65. package/dist/atlas/diffusion/bridges-closure.js +350 -0
  66. package/dist/atlas/diffusion/bridges-closure.js.map +1 -0
  67. package/dist/atlas/diffusion/bridges.d.ts +36 -0
  68. package/dist/atlas/diffusion/bridges.d.ts.map +1 -0
  69. package/dist/atlas/diffusion/bridges.js +226 -0
  70. package/dist/atlas/diffusion/bridges.js.map +1 -0
  71. package/dist/atlas/diffusion/dimensions.d.ts +21 -0
  72. package/dist/atlas/diffusion/dimensions.d.ts.map +1 -0
  73. package/dist/atlas/diffusion/dimensions.js +21 -0
  74. package/dist/atlas/diffusion/dimensions.js.map +1 -0
  75. package/dist/atlas/diffusion/index.d.ts +16 -0
  76. package/dist/atlas/diffusion/index.d.ts.map +1 -0
  77. package/dist/atlas/diffusion/index.js +23 -0
  78. package/dist/atlas/diffusion/index.js.map +1 -0
  79. package/dist/atlas/diffusion/models.d.ts +24 -0
  80. package/dist/atlas/diffusion/models.d.ts.map +1 -0
  81. package/dist/atlas/diffusion/models.js +139 -0
  82. package/dist/atlas/diffusion/models.js.map +1 -0
  83. package/dist/atlas/diffusion/numerics.d.ts +181 -0
  84. package/dist/atlas/diffusion/numerics.d.ts.map +1 -0
  85. package/dist/atlas/diffusion/numerics.js +251 -0
  86. package/dist/atlas/diffusion/numerics.js.map +1 -0
  87. package/dist/atlas/error-algebra.d.ts +52 -0
  88. package/dist/atlas/error-algebra.d.ts.map +1 -0
  89. package/dist/atlas/error-algebra.js +55 -0
  90. package/dist/atlas/error-algebra.js.map +1 -0
  91. package/dist/atlas/export.d.ts +48 -0
  92. package/dist/atlas/export.d.ts.map +1 -0
  93. package/dist/atlas/export.js +106 -0
  94. package/dist/atlas/export.js.map +1 -0
  95. package/dist/atlas/families.d.ts +14 -0
  96. package/dist/atlas/families.d.ts.map +1 -0
  97. package/dist/atlas/families.js +20 -0
  98. package/dist/atlas/families.js.map +1 -0
  99. package/dist/atlas/index.d.ts +90 -0
  100. package/dist/atlas/index.d.ts.map +1 -0
  101. package/dist/atlas/index.js +69 -0
  102. package/dist/atlas/index.js.map +1 -0
  103. package/dist/atlas/link-prediction.d.ts +71 -0
  104. package/dist/atlas/link-prediction.d.ts.map +1 -0
  105. package/dist/atlas/link-prediction.js +128 -0
  106. package/dist/atlas/link-prediction.js.map +1 -0
  107. package/dist/atlas/model.d.ts +70 -0
  108. package/dist/atlas/model.d.ts.map +1 -0
  109. package/dist/atlas/model.js +26 -0
  110. package/dist/atlas/model.js.map +1 -0
  111. package/dist/atlas/oscillators/bridges-coarse.d.ts +71 -0
  112. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -0
  113. package/dist/atlas/oscillators/bridges-coarse.js +146 -0
  114. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -0
  115. package/dist/atlas/oscillators/bridges-exact.d.ts +70 -0
  116. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -0
  117. package/dist/atlas/oscillators/bridges-exact.js +230 -0
  118. package/dist/atlas/oscillators/bridges-exact.js.map +1 -0
  119. package/dist/atlas/oscillators/bridges-limits.d.ts +118 -0
  120. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -0
  121. package/dist/atlas/oscillators/bridges-limits.js +345 -0
  122. package/dist/atlas/oscillators/bridges-limits.js.map +1 -0
  123. package/dist/atlas/oscillators/dimensions.d.ts +34 -0
  124. package/dist/atlas/oscillators/dimensions.d.ts.map +1 -0
  125. package/dist/atlas/oscillators/dimensions.js +34 -0
  126. package/dist/atlas/oscillators/dimensions.js.map +1 -0
  127. package/dist/atlas/oscillators/index.d.ts +38 -0
  128. package/dist/atlas/oscillators/index.d.ts.map +1 -0
  129. package/dist/atlas/oscillators/index.js +37 -0
  130. package/dist/atlas/oscillators/index.js.map +1 -0
  131. package/dist/atlas/oscillators/models.d.ts +25 -0
  132. package/dist/atlas/oscillators/models.d.ts.map +1 -0
  133. package/dist/atlas/oscillators/models.js +160 -0
  134. package/dist/atlas/oscillators/models.js.map +1 -0
  135. package/dist/atlas/oscillators/rejections.d.ts +21 -0
  136. package/dist/atlas/oscillators/rejections.d.ts.map +1 -0
  137. package/dist/atlas/oscillators/rejections.js +54 -0
  138. package/dist/atlas/oscillators/rejections.js.map +1 -0
  139. package/dist/atlas/path-bound.d.ts +143 -0
  140. package/dist/atlas/path-bound.d.ts.map +1 -0
  141. package/dist/atlas/path-bound.js +268 -0
  142. package/dist/atlas/path-bound.js.map +1 -0
  143. package/dist/atlas/poster/associations.d.ts +66 -0
  144. package/dist/atlas/poster/associations.d.ts.map +1 -0
  145. package/dist/atlas/poster/associations.js +90 -0
  146. package/dist/atlas/poster/associations.js.map +1 -0
  147. package/dist/atlas/poster/derivations.d.ts +156 -0
  148. package/dist/atlas/poster/derivations.d.ts.map +1 -0
  149. package/dist/atlas/poster/derivations.js +430 -0
  150. package/dist/atlas/poster/derivations.js.map +1 -0
  151. package/dist/atlas/poster/statements.d.ts +198 -0
  152. package/dist/atlas/poster/statements.d.ts.map +1 -0
  153. package/dist/atlas/poster/statements.js +365 -0
  154. package/dist/atlas/poster/statements.js.map +1 -0
  155. package/dist/atlas/public.d.ts +26 -0
  156. package/dist/atlas/public.d.ts.map +1 -0
  157. package/dist/atlas/public.js +21 -0
  158. package/dist/atlas/public.js.map +1 -0
  159. package/dist/atlas/regime.d.ts +171 -0
  160. package/dist/atlas/regime.d.ts.map +1 -0
  161. package/dist/atlas/regime.js +309 -0
  162. package/dist/atlas/regime.js.map +1 -0
  163. package/dist/atlas/serialize.d.ts +50 -0
  164. package/dist/atlas/serialize.d.ts.map +1 -0
  165. package/dist/atlas/serialize.js +180 -0
  166. package/dist/atlas/serialize.js.map +1 -0
  167. package/dist/atlas/statement.d.ts +165 -0
  168. package/dist/atlas/statement.d.ts.map +1 -0
  169. package/dist/atlas/statement.js +176 -0
  170. package/dist/atlas/statement.js.map +1 -0
  171. package/dist/atlas/types.d.ts +325 -0
  172. package/dist/atlas/types.d.ts.map +1 -0
  173. package/dist/atlas/types.js +61 -0
  174. package/dist/atlas/types.js.map +1 -0
  175. package/dist/atlas/waves/bridges-closure.d.ts +39 -0
  176. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -0
  177. package/dist/atlas/waves/bridges-closure.js +226 -0
  178. package/dist/atlas/waves/bridges-closure.js.map +1 -0
  179. package/dist/atlas/waves/bridges.d.ts +49 -0
  180. package/dist/atlas/waves/bridges.d.ts.map +1 -0
  181. package/dist/atlas/waves/bridges.js +266 -0
  182. package/dist/atlas/waves/bridges.js.map +1 -0
  183. package/dist/atlas/waves/index.d.ts +16 -0
  184. package/dist/atlas/waves/index.d.ts.map +1 -0
  185. package/dist/atlas/waves/index.js +23 -0
  186. package/dist/atlas/waves/index.js.map +1 -0
  187. package/dist/atlas/waves/models.d.ts +29 -0
  188. package/dist/atlas/waves/models.d.ts.map +1 -0
  189. package/dist/atlas/waves/models.js +127 -0
  190. package/dist/atlas/waves/models.js.map +1 -0
  191. package/dist/atlas/waves/numerics.d.ts +149 -0
  192. package/dist/atlas/waves/numerics.d.ts.map +1 -0
  193. package/dist/atlas/waves/numerics.js +218 -0
  194. package/dist/atlas/waves/numerics.js.map +1 -0
  195. package/dist/atlas/witness-artifact.d.ts +65 -0
  196. package/dist/atlas/witness-artifact.d.ts.map +1 -0
  197. package/dist/atlas/witness-artifact.js +78 -0
  198. package/dist/atlas/witness-artifact.js.map +1 -0
  199. package/dist/atlas/witness-numeric.d.ts +81 -0
  200. package/dist/atlas/witness-numeric.d.ts.map +1 -0
  201. package/dist/atlas/witness-numeric.js +105 -0
  202. package/dist/atlas/witness-numeric.js.map +1 -0
  203. package/dist/atlas/witness-result.d.ts +77 -0
  204. package/dist/atlas/witness-result.d.ts.map +1 -0
  205. package/dist/atlas/witness-result.js +39 -0
  206. package/dist/atlas/witness-result.js.map +1 -0
  207. package/dist/atlas/witness-specs.d.ts +110 -0
  208. package/dist/atlas/witness-specs.d.ts.map +1 -0
  209. package/dist/atlas/witness-specs.js +372 -0
  210. package/dist/atlas/witness-specs.js.map +1 -0
  211. package/dist/atlas/witness-symbolic.d.ts +79 -0
  212. package/dist/atlas/witness-symbolic.d.ts.map +1 -0
  213. package/dist/atlas/witness-symbolic.js +140 -0
  214. package/dist/atlas/witness-symbolic.js.map +1 -0
  215. package/dist/atlas/witnesses/quantum-support.d.ts +50 -0
  216. package/dist/atlas/witnesses/quantum-support.d.ts.map +1 -0
  217. package/dist/atlas/witnesses/quantum-support.js +48 -0
  218. package/dist/atlas/witnesses/quantum-support.js.map +1 -0
  219. package/dist/bridges/be11-decoherence-confrontation.js.map +1 -1
  220. package/dist/bridges/be21-kss-confrontation.js.map +1 -1
  221. package/dist/bridges/be23-planckian-confrontation.js.map +1 -1
  222. package/dist/bridges/be35-bootstrap-confrontation.js.map +1 -1
  223. package/dist/bridges/be36-gw170817-confrontation.js.map +1 -1
  224. package/dist/bridges/be37-cassini-confrontation.js.map +1 -1
  225. package/dist/bridges/be48-collapse-confrontation.js.map +1 -1
  226. package/dist/bridges/be51-lensing-confrontation.d.ts.map +1 -1
  227. package/dist/bridges/be51-lensing-confrontation.js +5 -3
  228. package/dist/bridges/be51-lensing-confrontation.js.map +1 -1
  229. package/dist/bridges/be52-mercury-confrontation.d.ts.map +1 -1
  230. package/dist/bridges/be52-mercury-confrontation.js +4 -1
  231. package/dist/bridges/be52-mercury-confrontation.js.map +1 -1
  232. package/dist/bridges/be55-quantum-hall-confrontation.js.map +1 -1
  233. package/dist/bridges/be56-casimir-confrontation.js.map +1 -1
  234. package/dist/bridges/be58-johnson-nyquist-confrontation.js.map +1 -1
  235. package/dist/bridges/be59-ac-josephson-confrontation.js.map +1 -1
  236. package/dist/bridges/be60-fractional-qh-confrontation.js.map +1 -1
  237. package/dist/bridges/be61-wiedemann-franz-confrontation.js.map +1 -1
  238. package/dist/bridges/be62-bcs-gap-confrontation.js.map +1 -1
  239. package/dist/bridges/be63-chandrasekhar-mass-confrontation.js.map +1 -1
  240. package/dist/bridges/be64-eddington-luminosity-confrontation.js.map +1 -1
  241. package/dist/bridges/be65-jeans-mass-confrontation.js.map +1 -1
  242. package/dist/bridges/bridge-equations.d.ts +2 -2
  243. package/dist/bridges/bridge-equations.d.ts.map +1 -1
  244. package/dist/bridges/bridge-equations.js +2 -2
  245. package/dist/bridges/bridge-equations.js.map +1 -1
  246. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  247. package/dist/bridges/catalog-adapter.js.map +1 -1
  248. package/dist/bridges/confrontations.d.ts.map +1 -1
  249. package/dist/bridges/confrontations.js +7 -0
  250. package/dist/bridges/confrontations.js.map +1 -1
  251. package/dist/bridges/equations/_be-helpers.d.ts +2 -2
  252. package/dist/bridges/equations/_be-helpers.js +2 -2
  253. package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
  254. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +59 -72
  255. package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +1 -1
  256. package/dist/bridges/equations/be-35-conformal-bootstrap.js +66 -98
  257. package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +1 -1
  258. package/dist/bridges/equations/be-48-grw-localization.d.ts +9 -8
  259. package/dist/bridges/equations/be-48-grw-localization.d.ts.map +1 -1
  260. package/dist/bridges/equations/be-48-grw-localization.js +9 -8
  261. package/dist/bridges/equations/be-48-grw-localization.js.map +1 -1
  262. package/dist/bridges/gravitational-lensing.d.ts +10 -0
  263. package/dist/bridges/gravitational-lensing.d.ts.map +1 -1
  264. package/dist/bridges/gravitational-lensing.js.map +1 -1
  265. package/dist/bridges/index.d.ts +125 -7
  266. package/dist/bridges/index.d.ts.map +1 -1
  267. package/dist/bridges/index.js +483 -20
  268. package/dist/bridges/index.js.map +1 -1
  269. package/dist/bridges/observations/types.d.ts +14 -0
  270. package/dist/bridges/observations/types.d.ts.map +1 -1
  271. package/dist/bridges/observations/types.js.map +1 -1
  272. package/dist/bridges/perihelion-precession.d.ts +10 -0
  273. package/dist/bridges/perihelion-precession.d.ts.map +1 -1
  274. package/dist/bridges/perihelion-precession.js.map +1 -1
  275. package/dist/bridges/rhs-registry.js +2 -2
  276. package/dist/canonical/canonical-equation.d.ts +15 -0
  277. package/dist/canonical/canonical-equation.d.ts.map +1 -1
  278. package/dist/canonical/entries/_l1-build.d.ts +1 -1
  279. package/dist/canonical/entries/_l1-build.d.ts.map +1 -1
  280. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  281. package/dist/canonical/entries/atomic.js +23 -0
  282. package/dist/canonical/entries/atomic.js.map +1 -1
  283. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  284. package/dist/canonical/entries/nonmonomial.js +93 -0
  285. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  286. package/dist/canonical/normal-form.js.map +1 -1
  287. package/dist/canonical/residual.d.ts +28 -0
  288. package/dist/canonical/residual.d.ts.map +1 -0
  289. package/dist/canonical/residual.js +31 -0
  290. package/dist/canonical/residual.js.map +1 -0
  291. package/dist/cli/command.d.ts +8 -0
  292. package/dist/cli/command.d.ts.map +1 -1
  293. package/dist/cli/command.js +10 -0
  294. package/dist/cli/command.js.map +1 -1
  295. package/dist/cli/commands/atlas.d.ts +3 -0
  296. package/dist/cli/commands/atlas.d.ts.map +1 -0
  297. package/dist/cli/commands/atlas.js +158 -0
  298. package/dist/cli/commands/atlas.js.map +1 -0
  299. package/dist/cli/commands/audit.js +3 -3
  300. package/dist/cli/commands/candidates.js +3 -3
  301. package/dist/cli/commands/canonical.js +3 -3
  302. package/dist/cli/commands/confront.d.ts.map +1 -1
  303. package/dist/cli/commands/confront.js +8 -1
  304. package/dist/cli/commands/confront.js.map +1 -1
  305. package/dist/cli/commands/connectors.js +7 -7
  306. package/dist/cli/commands/coverage.js +3 -3
  307. package/dist/cli/commands/derive.d.ts.map +1 -1
  308. package/dist/cli/commands/derive.js +40 -9
  309. package/dist/cli/commands/derive.js.map +1 -1
  310. package/dist/cli/commands/discover.d.ts.map +1 -1
  311. package/dist/cli/commands/discover.js +46 -27
  312. package/dist/cli/commands/discover.js.map +1 -1
  313. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  314. package/dist/cli/commands/evaluate.js +2 -1
  315. package/dist/cli/commands/evaluate.js.map +1 -1
  316. package/dist/cli/commands/explain.d.ts.map +1 -1
  317. package/dist/cli/commands/explain.js +19 -6
  318. package/dist/cli/commands/explain.js.map +1 -1
  319. package/dist/cli/commands/index.d.ts +3 -0
  320. package/dist/cli/commands/index.d.ts.map +1 -1
  321. package/dist/cli/commands/index.js +3 -0
  322. package/dist/cli/commands/index.js.map +1 -1
  323. package/dist/cli/commands/map.d.ts.map +1 -1
  324. package/dist/cli/commands/map.js +187 -36
  325. package/dist/cli/commands/map.js.map +1 -1
  326. package/dist/cli/commands/path.d.ts +3 -0
  327. package/dist/cli/commands/path.d.ts.map +1 -0
  328. package/dist/cli/commands/path.js +228 -0
  329. package/dist/cli/commands/path.js.map +1 -0
  330. package/dist/cli/commands/predict.js +4 -4
  331. package/dist/cli/commands/priority.js +2 -2
  332. package/dist/cli/commands/probe.d.ts.map +1 -1
  333. package/dist/cli/commands/probe.js +59 -2
  334. package/dist/cli/commands/probe.js.map +1 -1
  335. package/dist/cli/commands/recover.d.ts.map +1 -1
  336. package/dist/cli/commands/recover.js +25 -6
  337. package/dist/cli/commands/recover.js.map +1 -1
  338. package/dist/cli/commands/regime.d.ts +41 -0
  339. package/dist/cli/commands/regime.d.ts.map +1 -0
  340. package/dist/cli/commands/regime.js +243 -0
  341. package/dist/cli/commands/regime.js.map +1 -0
  342. package/dist/cli/commands/symbolic.js +5 -5
  343. package/dist/cli/errors.d.ts +13 -1
  344. package/dist/cli/errors.d.ts.map +1 -1
  345. package/dist/cli/errors.js +13 -1
  346. package/dist/cli/errors.js.map +1 -1
  347. package/dist/cli/graphs.d.ts.map +1 -1
  348. package/dist/cli/graphs.js +5 -1
  349. package/dist/cli/graphs.js.map +1 -1
  350. package/dist/cli/main.d.ts.map +1 -1
  351. package/dist/cli/main.js +29 -2
  352. package/dist/cli/main.js.map +1 -1
  353. package/dist/cli/output.d.ts +6 -1
  354. package/dist/cli/output.d.ts.map +1 -1
  355. package/dist/cli/output.js.map +1 -1
  356. package/dist/cli/version.js.map +1 -1
  357. package/dist/cli-api.d.ts +21 -1
  358. package/dist/cli-api.d.ts.map +1 -1
  359. package/dist/cli-api.js +23 -1
  360. package/dist/cli-api.js.map +1 -1
  361. package/dist/composition/axis-audit.js.map +1 -1
  362. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  363. package/dist/composition/bridge-prediction.js +0 -0
  364. package/dist/composition/bridge-prediction.js.map +1 -1
  365. package/dist/composition/canonical-compare.d.ts +65 -0
  366. package/dist/composition/canonical-compare.d.ts.map +1 -0
  367. package/dist/composition/canonical-compare.js +237 -0
  368. package/dist/composition/canonical-compare.js.map +1 -0
  369. package/dist/composition/canonical-graph.d.ts +2 -2
  370. package/dist/composition/canonical-graph.js +2 -2
  371. package/dist/composition/canonical-graph.js.map +1 -1
  372. package/dist/composition/canonical-prefactors.d.ts +32 -0
  373. package/dist/composition/canonical-prefactors.d.ts.map +1 -0
  374. package/dist/composition/canonical-prefactors.js +80 -0
  375. package/dist/composition/canonical-prefactors.js.map +1 -0
  376. package/dist/composition/compose-symbolic.d.ts.map +1 -1
  377. package/dist/composition/compose-symbolic.js.map +1 -1
  378. package/dist/composition/compose.d.ts.map +1 -1
  379. package/dist/composition/compose.js +80 -1
  380. package/dist/composition/compose.js.map +1 -1
  381. package/dist/composition/consequence.js.map +1 -1
  382. package/dist/composition/discovery.d.ts +20 -3
  383. package/dist/composition/discovery.d.ts.map +1 -1
  384. package/dist/composition/discovery.js +30 -4
  385. package/dist/composition/discovery.js.map +1 -1
  386. package/dist/composition/edge.d.ts +64 -0
  387. package/dist/composition/edge.d.ts.map +1 -1
  388. package/dist/composition/edge.js +29 -0
  389. package/dist/composition/edge.js.map +1 -1
  390. package/dist/composition/edges/calibration.d.ts.map +1 -1
  391. package/dist/composition/edges/calibration.js +46 -0
  392. package/dist/composition/edges/calibration.js.map +1 -1
  393. package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
  394. package/dist/composition/edges/catalog-quantum.js +9 -0
  395. package/dist/composition/edges/catalog-quantum.js.map +1 -1
  396. package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
  397. package/dist/composition/edges/catalog-tranche.js +18 -0
  398. package/dist/composition/edges/catalog-tranche.js.map +1 -1
  399. package/dist/composition/enumerate.js.map +1 -1
  400. package/dist/composition/explain.d.ts +9 -1
  401. package/dist/composition/explain.d.ts.map +1 -1
  402. package/dist/composition/explain.js +34 -8
  403. package/dist/composition/explain.js.map +1 -1
  404. package/dist/composition/expr-eval.d.ts.map +1 -1
  405. package/dist/composition/expr-eval.js.map +1 -1
  406. package/dist/composition/expr-simplify.d.ts +13 -0
  407. package/dist/composition/expr-simplify.d.ts.map +1 -1
  408. package/dist/composition/expr-simplify.js +25 -0
  409. package/dist/composition/expr-simplify.js.map +1 -1
  410. package/dist/composition/expr-subst.js.map +1 -1
  411. package/dist/composition/graph-viz-svg.d.ts.map +1 -1
  412. package/dist/composition/graph-viz.d.ts +118 -1
  413. package/dist/composition/graph-viz.d.ts.map +1 -1
  414. package/dist/composition/graph-viz.js +189 -6
  415. package/dist/composition/graph-viz.js.map +1 -1
  416. package/dist/composition/grounding.d.ts.map +1 -1
  417. package/dist/composition/grounding.js +6 -1
  418. package/dist/composition/grounding.js.map +1 -1
  419. package/dist/composition/identifiability.js.map +1 -1
  420. package/dist/composition/index.d.ts +4 -2
  421. package/dist/composition/index.d.ts.map +1 -1
  422. package/dist/composition/index.js +2 -1
  423. package/dist/composition/index.js.map +1 -1
  424. package/dist/composition/poster-source.d.ts +153 -0
  425. package/dist/composition/poster-source.d.ts.map +1 -0
  426. package/dist/composition/poster-source.js +183 -0
  427. package/dist/composition/poster-source.js.map +1 -0
  428. package/dist/composition/probe/backend-protocol.d.ts +34 -1
  429. package/dist/composition/probe/backend-protocol.d.ts.map +1 -1
  430. package/dist/composition/probe/backend-protocol.js +9 -2
  431. package/dist/composition/probe/backend-protocol.js.map +1 -1
  432. package/dist/composition/probe/candidate-store.d.ts.map +1 -1
  433. package/dist/composition/probe/corpus.d.ts +12 -0
  434. package/dist/composition/probe/corpus.d.ts.map +1 -1
  435. package/dist/composition/probe/corpus.js +100 -0
  436. package/dist/composition/probe/corpus.js.map +1 -1
  437. package/dist/composition/probe/generator.d.ts +14 -0
  438. package/dist/composition/probe/generator.d.ts.map +1 -1
  439. package/dist/composition/probe/generator.js +24 -2
  440. package/dist/composition/probe/generator.js.map +1 -1
  441. package/dist/composition/probe/limits.js.map +1 -1
  442. package/dist/composition/probe/pipeline.d.ts +5 -0
  443. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  444. package/dist/composition/probe/pipeline.js +20 -3
  445. package/dist/composition/probe/pipeline.js.map +1 -1
  446. package/dist/composition/probe/problem.js.map +1 -1
  447. package/dist/composition/probe/report.d.ts.map +1 -1
  448. package/dist/composition/probe/report.js +2 -0
  449. package/dist/composition/probe/report.js.map +1 -1
  450. package/dist/composition/probe/residual.d.ts.map +1 -1
  451. package/dist/composition/probe/residual.js.map +1 -1
  452. package/dist/composition/probe/search-budget.js.map +1 -1
  453. package/dist/composition/proposed-bridges.d.ts +2 -2
  454. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  455. package/dist/composition/proposed-bridges.js +1 -1
  456. package/dist/composition/proposed-bridges.js.map +1 -1
  457. package/dist/composition/retrodiction.js.map +1 -1
  458. package/dist/composition/uncertainty.d.ts +52 -2
  459. package/dist/composition/uncertainty.d.ts.map +1 -1
  460. package/dist/composition/uncertainty.js +38 -2
  461. package/dist/composition/uncertainty.js.map +1 -1
  462. package/dist/composition/user-equation.d.ts.map +1 -1
  463. package/dist/core/constants.d.ts +13 -0
  464. package/dist/core/constants.d.ts.map +1 -1
  465. package/dist/core/constants.js +13 -0
  466. package/dist/core/constants.js.map +1 -1
  467. package/dist/core/flux-rules.d.ts.map +1 -1
  468. package/dist/core/flux-rules.js.map +1 -1
  469. package/dist/core/labeled-tensor.d.ts.map +1 -1
  470. package/dist/core/regime-registry.d.ts.map +1 -1
  471. package/dist/core/regime-rule-install.js.map +1 -1
  472. package/dist/core/tensor.d.ts.map +1 -1
  473. package/dist/core/tensor.js.map +1 -1
  474. package/dist/core/types.d.ts.map +1 -1
  475. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  476. package/dist/diff/bridge-gradient.d.ts +1 -1
  477. package/dist/diff/bridge-gradient.js +1 -1
  478. package/dist/dimensional/ast-types.d.ts +31 -1
  479. package/dist/dimensional/ast-types.d.ts.map +1 -1
  480. package/dist/dimensional/bridge-check.d.ts +1 -1
  481. package/dist/dimensional/bridge-check.js +1 -1
  482. package/dist/dimensional/buckingham.d.ts.map +1 -1
  483. package/dist/dimensional/connection.d.ts +2 -0
  484. package/dist/dimensional/connection.d.ts.map +1 -1
  485. package/dist/dimensional/connection.js +2 -0
  486. package/dist/dimensional/connection.js.map +1 -1
  487. package/dist/dimensional/curvature-composite.d.ts +5 -3
  488. package/dist/dimensional/curvature-composite.d.ts.map +1 -1
  489. package/dist/dimensional/curvature-composite.js +1 -0
  490. package/dist/dimensional/curvature-composite.js.map +1 -1
  491. package/dist/dimensional/curvature-invariants.d.ts +2 -0
  492. package/dist/dimensional/curvature-invariants.d.ts.map +1 -1
  493. package/dist/dimensional/curvature-invariants.js +2 -0
  494. package/dist/dimensional/curvature-invariants.js.map +1 -1
  495. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  496. package/dist/dimensional/einstein-equation.d.ts +3 -3
  497. package/dist/dimensional/einstein-equation.js +3 -3
  498. package/dist/dimensional/errors.d.ts.map +1 -1
  499. package/dist/dimensional/metric.d.ts +5 -2
  500. package/dist/dimensional/metric.d.ts.map +1 -1
  501. package/dist/dimensional/metric.js +5 -2
  502. package/dist/dimensional/metric.js.map +1 -1
  503. package/dist/dimensional/tensor-trace.js.map +1 -1
  504. package/dist/dimensional/validator-registry.js.map +1 -1
  505. package/dist/dimensional/validator.d.ts +3 -2
  506. package/dist/dimensional/validator.d.ts.map +1 -1
  507. package/dist/dimensional/validator.js +23 -4
  508. package/dist/dimensional/validator.js.map +1 -1
  509. package/dist/index.d.ts +4 -3
  510. package/dist/index.d.ts.map +1 -1
  511. package/dist/index.js +4 -1
  512. package/dist/index.js.map +1 -1
  513. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  514. package/dist/numerical/curvature-lowering-helpers.js +104 -0
  515. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  516. package/dist/numerical/errors.d.ts.map +1 -1
  517. package/dist/numerical/errors.js.map +1 -1
  518. package/dist/numerical/float64-engine.d.ts.map +1 -1
  519. package/dist/numerical/float64-engine.js +51 -24
  520. package/dist/numerical/float64-engine.js.map +1 -1
  521. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  522. package/dist/numerical/formula-dimension.js.map +1 -1
  523. package/dist/numerical/formula.d.ts.map +1 -1
  524. package/dist/numerical/formula.js.map +1 -1
  525. package/dist/numerical/geometrized.d.ts.map +1 -1
  526. package/dist/numerical/gl4-integrator.d.ts +3 -3
  527. package/dist/numerical/gl4-integrator.js +3 -3
  528. package/dist/numerical/killing.d.ts +47 -5
  529. package/dist/numerical/killing.d.ts.map +1 -1
  530. package/dist/numerical/killing.js +41 -3
  531. package/dist/numerical/killing.js.map +1 -1
  532. package/dist/numerical/klein-gordon.d.ts +2 -2
  533. package/dist/numerical/klein-gordon.js +2 -2
  534. package/dist/numerical/lowering.d.ts +2 -2
  535. package/dist/numerical/lowering.d.ts.map +1 -1
  536. package/dist/numerical/lowering.js +5 -3
  537. package/dist/numerical/lowering.js.map +1 -1
  538. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  539. package/dist/numerical/mathts-engine.js.map +1 -1
  540. package/dist/numerical/metric-inverse.js.map +1 -1
  541. package/dist/numerical/perihelion-finder.d.ts +15 -13
  542. package/dist/numerical/perihelion-finder.d.ts.map +1 -1
  543. package/dist/numerical/perihelion-finder.js +15 -13
  544. package/dist/numerical/perihelion-finder.js.map +1 -1
  545. package/dist/numerical/weyl-lowering.d.ts.map +1 -1
  546. package/dist/numerical/weyl-lowering.js +90 -40
  547. package/dist/numerical/weyl-lowering.js.map +1 -1
  548. package/package.json +163 -104
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Atlas Phase 6, S6.1 — scoring a benchmark condition against the answer key.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-5-Design.md` §9.
5
+ *
6
+ * This module receives the answer key as an ARGUMENT. It never reads the scorer
7
+ * half of the fixture tree itself: the import guard forbids any `src/` path into
8
+ * it. The orchestration script (`scripts/run-atlas-study.mjs`) loads the labels
9
+ * and passes them in.
10
+ *
11
+ * **An empty item set produces NO metrics, not zero metrics.** `scoreCondition`
12
+ * throws on it: a table of zeros and NaNs from an empty set is indistinguishable,
13
+ * at a glance, from a condition that failed everything.
14
+ *
15
+ * @module atlas/benchmark/study
16
+ * @internal
17
+ */
18
+ import { FAILURE_KINDS } from './types.js';
19
+ import { mcnemar, pairedDifferenceInterval, wilsonInterval } from './stats.js';
20
+ const KNOWN_FAILURES = new Set(FAILURE_KINDS);
21
+ /**
22
+ * Check an answer key against the item ids it must cover: exactly one label per
23
+ * item, no label for an unknown item, a known failure kind on every invalid
24
+ * label and none on a valid one. Takes the key as an ARGUMENT, like everything
25
+ * here, because no `src/` file may read the scorer half.
26
+ *
27
+ * @param itemIds - the ids of the frozen items.
28
+ * @param labels - the answer key.
29
+ * @returns every problem found, labels first in key order, then missing labels
30
+ * in item order; empty means the key fits.
31
+ * @internal
32
+ */
33
+ export function validateLabels(itemIds, labels) {
34
+ const problems = [];
35
+ const ids = new Set(itemIds);
36
+ const seen = new Set();
37
+ for (const l of labels) {
38
+ const p = (problem) => {
39
+ problems.push({ id: l.itemId, problem });
40
+ };
41
+ if (seen.has(l.itemId))
42
+ p('duplicate label');
43
+ seen.add(l.itemId);
44
+ if (!ids.has(l.itemId))
45
+ p('label for an item not in the set');
46
+ if (l.kind === 'invalid') {
47
+ if (l.failureKind === undefined)
48
+ p('an invalid label must name its failureKind');
49
+ else if (!KNOWN_FAILURES.has(l.failureKind))
50
+ p(`unknown failureKind '${l.failureKind}'`);
51
+ }
52
+ else if (l.failureKind !== undefined) {
53
+ p('a valid label must not carry a failureKind');
54
+ }
55
+ }
56
+ for (const id of itemIds)
57
+ if (!seen.has(id))
58
+ problems.push({ id, problem: 'no label' });
59
+ return problems;
60
+ }
61
+ /**
62
+ * Score one condition against the answer key.
63
+ *
64
+ * @throws Error when the key is empty (no measurement exists), or when an answer
65
+ * names an item the key does not contain.
66
+ * @internal
67
+ */
68
+ export function scoreCondition(condition, answers, labels) {
69
+ if (labels.length === 0) {
70
+ throw new Error(`scoreCondition(${condition}): the answer key is empty — there is nothing to measure`);
71
+ }
72
+ const byId = new Map(answers.map((a) => [a.itemId, a]));
73
+ const labelIds = new Set(labels.map((l) => l.itemId));
74
+ for (const a of answers) {
75
+ if (!labelIds.has(a.itemId))
76
+ throw new Error(`scoreCondition(${condition}): answer for unknown item ${a.itemId}`);
77
+ }
78
+ let nValid = 0;
79
+ let nInvalid = 0;
80
+ let invalidRejected = 0;
81
+ let kindNamedCorrectly = 0;
82
+ let wrongAccepts = 0;
83
+ let validAccepted = 0;
84
+ let falseRejects = 0;
85
+ let abstentions = 0;
86
+ let unanswered = 0;
87
+ for (const label of labels) {
88
+ const answer = byId.get(label.itemId);
89
+ if (answer === undefined)
90
+ unanswered++;
91
+ else if (answer.outcome === 'abstain')
92
+ abstentions++;
93
+ if (label.kind === 'valid') {
94
+ nValid++;
95
+ if (answer?.outcome === 'accept')
96
+ validAccepted++;
97
+ if (answer?.outcome === 'reject')
98
+ falseRejects++;
99
+ }
100
+ else {
101
+ nInvalid++;
102
+ if (answer?.outcome === 'accept')
103
+ wrongAccepts++;
104
+ if (answer?.outcome === 'reject') {
105
+ invalidRejected++;
106
+ if (answer.detectedFailure !== undefined && answer.detectedFailure === label.failureKind) {
107
+ kindNamedCorrectly++;
108
+ }
109
+ }
110
+ }
111
+ }
112
+ return {
113
+ condition,
114
+ nValid,
115
+ nInvalid,
116
+ invalidRejected,
117
+ invalidRejectionInterval: nInvalid === 0 ? { lower: Number.NaN, upper: Number.NaN } : wilsonInterval(invalidRejected, nInvalid),
118
+ kindNamedCorrectly,
119
+ wrongAccepts,
120
+ validAccepted,
121
+ falseRejects,
122
+ abstentions,
123
+ unanswered,
124
+ };
125
+ }
126
+ /**
127
+ * Compare two conditions on the SAME invalid items. An item counts as "right"
128
+ * for a condition when it was rejected; an unanswered item is "wrong", not dropped.
129
+ *
130
+ * @throws Error when there are no invalid items.
131
+ * @internal
132
+ */
133
+ export function pairedRejection(conditionA, answersA, conditionB, answersB, labels) {
134
+ const invalid = labels.filter((l) => l.kind === 'invalid');
135
+ if (invalid.length === 0)
136
+ throw new Error('pairedRejection: no invalid items to compare on');
137
+ const rejectedBy = (answers) => new Set(answers.filter((x) => x.outcome === 'reject').map((x) => x.itemId));
138
+ const ra = rejectedBy(answersA);
139
+ const rb = rejectedBy(answersB);
140
+ let a = 0;
141
+ let b = 0;
142
+ let c = 0;
143
+ let d = 0;
144
+ for (const l of invalid) {
145
+ const x = ra.has(l.itemId);
146
+ const y = rb.has(l.itemId);
147
+ if (x && y)
148
+ a++;
149
+ else if (x)
150
+ b++;
151
+ else if (y)
152
+ c++;
153
+ else
154
+ d++;
155
+ }
156
+ const table = { a, b, c, d };
157
+ const difference = pairedDifferenceInterval(table);
158
+ return {
159
+ conditionA,
160
+ conditionB,
161
+ table,
162
+ difference,
163
+ mcnemar: mcnemar(table),
164
+ aBetterExcludingZero: difference.lower > 0,
165
+ };
166
+ }
167
+ /**
168
+ * Score a sequence of named condition runs as an ablation: each row is scored,
169
+ * and each row after the first is compared, paired on the same invalid items,
170
+ * against the row before it — so the table shows what each added layer bought.
171
+ *
172
+ * @internal
173
+ */
174
+ export function scoreAblation(runs, labels) {
175
+ const rows = [];
176
+ for (let i = 0; i < runs.length; i++) {
177
+ const [name, answers] = runs[i];
178
+ const metrics = scoreCondition(name, answers, labels);
179
+ if (i === 0)
180
+ rows.push({ configuration: name, metrics });
181
+ else {
182
+ const [prevName, prevAnswers] = runs[i - 1];
183
+ rows.push({
184
+ configuration: name,
185
+ metrics,
186
+ stepOverPrevious: pairedRejection(name, answers, prevName, prevAnswers, labels),
187
+ });
188
+ }
189
+ }
190
+ return rows;
191
+ }
192
+ //# sourceMappingURL=study.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"study.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/study.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Atlas Phase 5, S5.1 — the invalid-bridge benchmark's item schema.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-5-Design.md` §2.
5
+ *
6
+ * ⚠ **No agent authors a frozen item** (design note §0). This file defines the
7
+ * SHAPE an independent author fills in; it contains no items.
8
+ *
9
+ * @module atlas/benchmark/types
10
+ * @internal
11
+ */
12
+ import type { ExprNode } from '../../dimensional/ast-types.js';
13
+ import type { Conventions, RegimeInequality, RelationType } from '../types.js';
14
+ /** The eight failure kinds, sampled evenly (ROADMAP Phase 5). @internal */
15
+ export declare const FAILURE_KINDS: readonly ['omitted-premise', 'domain-violation', 'convention-mismatch', 'notation-collision', 'dimensional-coincidence', 'non-uniform-limit', 'false-inverse', 'analogy-promoted'];
16
+ /** One failure kind. @internal */
17
+ export type FailureKind = (typeof FAILURE_KINDS)[number];
18
+ /**
19
+ * Who wrote an item. Only `'independent'` may be frozen; `'contested-draft'`
20
+ * is what an agent may produce, into `contested/`, and nothing else.
21
+ *
22
+ * @internal
23
+ */
24
+ export type Authorship = 'independent' | 'contested-draft';
25
+ /** Which split an item scores in. @internal */
26
+ export type BenchmarkSplit = 'in-distribution' | 'held-out';
27
+ /**
28
+ * The held-out family. Corrected from the plan's "first-order relaxation",
29
+ * which Phase 0 already encodes as `model-first-order` (design note §4).
30
+ *
31
+ * @internal
32
+ */
33
+ export declare const HELD_OUT_FAMILY = "fluid-statics";
34
+ /**
35
+ * Markers that identify the held-out family in model ids, dynamics and bridge
36
+ * ids. `tests/atlas/benchmark.test.ts` scans the atlas for them, and proves the
37
+ * scan can fire with the ORIGINAL family's markers as a positive control.
38
+ *
39
+ * @internal
40
+ */
41
+ export declare const HELD_OUT_MARKERS: readonly string[];
42
+ /**
43
+ * One benchmark item, as its PUBLIC half carries it — never the answer. Whether
44
+ * the item is valid, and which failure kind it has, live only in the scorer
45
+ * half (`ItemLabel` in `study.ts`), so a condition that reads the public file
46
+ * cannot read the key.
47
+ *
48
+ * @internal
49
+ */
50
+ export interface BenchmarkItem {
51
+ readonly id: string;
52
+ readonly premises: readonly string[];
53
+ readonly conclusion: string;
54
+ readonly claimedRelation: RelationType;
55
+ readonly family: string;
56
+ readonly split: BenchmarkSplit;
57
+ /** The claimed relation as an AST, so the leakage check can run. */
58
+ readonly expr: ExprNode;
59
+ /** The id of the item this one renames, when it is a renamed-variable variant. */
60
+ readonly renamedVariant?: string;
61
+ readonly authorship: Authorship;
62
+ /** Where the item came from: an erratum, a documented misconception, a textbook. */
63
+ readonly source: string;
64
+ /** The claim's stated side conditions, as prose. `[]` states "none". */
65
+ readonly sideConditions?: readonly string[];
66
+ /** Conventions declared by the premises and by the conclusion. */
67
+ readonly conventions?: {
68
+ readonly premise?: Conventions;
69
+ readonly conclusion?: Conventions;
70
+ };
71
+ /** When the claim is a CHAIN: the two relations composed to reach `claimedRelation`. */
72
+ readonly composedFrom?: readonly [RelationType, RelationType];
73
+ /** The regime the claim is used in: its inequalities and the π-group values at the use site. */
74
+ readonly regime?: {
75
+ readonly inequalities: readonly RegimeInequality[];
76
+ readonly values: Readonly<Record<string, number>>;
77
+ };
78
+ }
79
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/atlas/benchmark/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/E,2EAA2E;AAC3E,eAAO,MAAM,aAAa,YACxB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,CACV,CAAC;AAEX,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAE3D,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAQ7C,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAMxB,wEAAwE;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,kEAAkE;IAClE,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;QAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;KACnC,CAAC;IACF,wFAAwF;IACxF,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9D,gGAAgG;IAChG,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;QACnD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACnD,CAAC;CACH"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Atlas Phase 5, S5.1 — the invalid-bridge benchmark's item schema.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-5-Design.md` §2.
5
+ *
6
+ * ⚠ **No agent authors a frozen item** (design note §0). This file defines the
7
+ * SHAPE an independent author fills in; it contains no items.
8
+ *
9
+ * @module atlas/benchmark/types
10
+ * @internal
11
+ */
12
+ /** The eight failure kinds, sampled evenly (ROADMAP Phase 5). @internal */
13
+ export const FAILURE_KINDS = [
14
+ 'omitted-premise',
15
+ 'domain-violation',
16
+ 'convention-mismatch',
17
+ 'notation-collision',
18
+ 'dimensional-coincidence',
19
+ 'non-uniform-limit',
20
+ 'false-inverse',
21
+ 'analogy-promoted',
22
+ ];
23
+ /**
24
+ * The held-out family. Corrected from the plan's "first-order relaxation",
25
+ * which Phase 0 already encodes as `model-first-order` (design note §4).
26
+ *
27
+ * @internal
28
+ */
29
+ export const HELD_OUT_FAMILY = 'fluid-statics';
30
+ /**
31
+ * Markers that identify the held-out family in model ids, dynamics and bridge
32
+ * ids. `tests/atlas/benchmark.test.ts` scans the atlas for them, and proves the
33
+ * scan can fire with the ORIGINAL family's markers as a positive control.
34
+ *
35
+ * @internal
36
+ */
37
+ export const HELD_OUT_MARKERS = [
38
+ 'hydrostat',
39
+ 'buoyan',
40
+ 'archimed',
41
+ 'pascal',
42
+ 'barometric',
43
+ 'fluid-static',
44
+ 'fluid statics',
45
+ ];
46
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,oBAAoB;IACpB,yBAAyB;IACzB,mBAAmB;IACnB,eAAe;IACf,kBAAkB;CACV,CAAC;AAgBX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,WAAW;IACX,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,cAAc;IACd,eAAe;CAChB,CAAC"}
@@ -0,0 +1,55 @@
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/`.
30
+ *
31
+ * @module atlas/composition-table
32
+ */
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;
38
+ /** @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>>>>;
48
+ /**
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
+ * @public
53
+ */
54
+ export declare function composeRelation(first: RelationType, second: RelationType): CompositionResult;
55
+ //# sourceMappingURL=composition-table.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,133 @@
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/`.
30
+ *
31
+ * @module atlas/composition-table
32
+ */
33
+ /** @public */
34
+ export const NO_COMPOSITE_CLAIM = 'no-composite-claim';
35
+ /**
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
+ * @public
129
+ */
130
+ export function composeRelation(first, second) {
131
+ return COMPOSITION_TABLE[first][second];
132
+ }
133
+ //# sourceMappingURL=composition-table.js.map
@@ -0,0 +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"}
@@ -0,0 +1,63 @@
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.
19
+ *
20
+ * @module atlas/conventions
21
+ */
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[];
63
+ //# sourceMappingURL=conventions.d.ts.map
@@ -0,0 +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"}