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,112 @@
1
+ /**
2
+ * Atlas Phase 1 — the association registry.
3
+ *
4
+ * An `Association` records that two things SHARE something: a constant, a
5
+ * symbol, a structure, or a line of historical influence. That is the whole of
6
+ * its meaning. It asserts **no relation** between the two, makes **no
7
+ * composite claim**, and is explicitly NOT a graph edge — design note §5: *"No
8
+ * `Association` semantics beyond a registry of typed pairs — the registry is a
9
+ * container in Sprint 1, and it makes no composite claims."*
10
+ *
11
+ * The distinction is the point. `CATALOG_GRAPH` edges are claims that one
12
+ * quantity DETERMINES another. An association is the opposite epistemic act:
13
+ * it is where the atlas writes down a resemblance it has already decided is
14
+ * NOT a link, so the resemblance stops being re-surfaced as if it were fresh.
15
+ * An association that also appeared as an edge would be a contradiction, and
16
+ * `tests/atlas/association.test.ts` pins that it never does.
17
+ *
18
+ * **The seed is the `'decoy'` half of the adjudication ledger.** A `decoy`
19
+ * verdict means a physicist looked at `a ≟ b` and found a coincidence with no
20
+ * mechanism — precisely a shared appearance with no relation behind it. Every
21
+ * `'decoy'` row in `ADJUDICATIONS` (`src/composition/adjudication.ts`) gets
22
+ * one entry here, id-linked, with its `grounds` copied VERBATIM as the `note`.
23
+ *
24
+ * **No new physics is added by this module**, and two deliberate choices keep
25
+ * it that way:
26
+ *
27
+ * - `note` is the adjudicator's own prose, never a restatement. Verbatimness
28
+ * is pinned by test against the live ledger, so a re-worded ledger entry
29
+ * fails rather than silently diverging from its copy here.
30
+ * - `kind` is assigned MECHANICALLY, not per pair. Every seed is
31
+ * `'shared-structure'` because every one of them reached the ledger the
32
+ * same way: the identification funnel pairs quantities that share a
33
+ * dimensional signature. Choosing a different `kind` per row would be a
34
+ * fresh physics judgement about each pair, which is exactly the claim this
35
+ * registry exists not to make.
36
+ *
37
+ * **Why the seed is written out rather than derived from `ADJUDICATIONS` at
38
+ * import time.** `src/composition/` may import atlas TYPES only, never the
39
+ * barrel, because a value import in the other direction closes a cycle
40
+ * `docs:deps` reports (`compose.ts` already imports `atlas/composition-table`).
41
+ * An `atlas → composition/adjudication → discovery → …` value import risks the
42
+ * same cycle from the other side. So this module stays a leaf, and the
43
+ * drift protection moves into the test, which is free to import both.
44
+ *
45
+ * @module atlas/association
46
+ */
47
+ /**
48
+ * The seeded registry: one entry per `'decoy'` adjudication, in ledger order.
49
+ *
50
+ * Kept in step with `ADJUDICATIONS` by
51
+ * `tests/atlas/association.test.ts`, which re-derives this array from the live
52
+ * ledger and deep-equals it. Adding a `'decoy'` verdict without adding its
53
+ * association here fails that test.
54
+ *
55
+ * @internal
56
+ */
57
+ export const ASSOCIATIONS = [
58
+ {
59
+ id: 'erasure-energy~photon-energy',
60
+ kind: 'shared-structure',
61
+ between: ['erasure-energy', 'photon-energy'],
62
+ note: "Dimensional coincidence; no mechanism. Landauer's k_B·T·ln2 is a statistical lower bound on heat dissipated to a reservoir; equating it to a single photon's hν has no universal mechanism — it rewrites thermal energy in frequency units.",
63
+ citation: 'docs/research/proposed-equations-adjudication.md',
64
+ },
65
+ {
66
+ id: 'dark-fermion-mass~erasure-energy',
67
+ kind: 'shared-structure',
68
+ between: ['dark-fermion-mass', 'erasure-energy'],
69
+ note: 'Dimensional coincidence; no mechanism. A speculative hidden-sector mass m = gv set equal to a context-dependent erasure energy — no model links a particle mass to an arbitrary processor\'s temperature.',
70
+ citation: 'docs/research/proposed-equations-adjudication.md',
71
+ },
72
+ {
73
+ id: 'dark-fermion-mass~rest-energy',
74
+ kind: 'shared-structure',
75
+ between: ['dark-fermion-mass', 'rest-energy'],
76
+ note: 'Trivial/definitional. m = vg/c² re-expresses the dark-fermion mass via E=mc² instead of via Landauer (cf. PE-2) — a definitional application, not a new bridge.',
77
+ citation: 'docs/research/proposed-equations-adjudication.md',
78
+ },
79
+ {
80
+ id: 'hubble-distance~peak-wavelength',
81
+ kind: 'shared-structure',
82
+ between: ['hubble-distance', 'peak-wavelength'],
83
+ note: 'Dimensional coincidence; no mechanism. A blackbody peak wavelength equated with the cosmological horizon — disparate domains, no mechanism; numerically off by ~10²⁹ for the CMB. The clearest "coincidence, not physics" case.',
84
+ citation: 'docs/research/proposed-equations-adjudication.md',
85
+ },
86
+ {
87
+ id: 'coarsening-length~quantum-correlation-length',
88
+ kind: 'shared-structure',
89
+ between: ['coarsening-length', 'quantum-correlation-length'],
90
+ note: 'Non-equilibrium vs equilibrium length; unanimous. A coarsening length is a non-equilibrium domain size formed by quenching through a critical point; the quantum correlation length ξ is an equilibrium static property at it. Different processes — not the same length.',
91
+ citation: 'docs/research/orphan-connector-adjudication.md',
92
+ },
93
+ {
94
+ id: 'effective-mass~tunneling-mass',
95
+ kind: 'shared-structure',
96
+ between: ['effective-mass', 'tunneling-mass'],
97
+ note: 'Different particles/Hamiltonians; unanimous. A proton\'s inertia in a specific biomolecular potential vs. an emergent electronic quasiparticle\'s effective mass in a strongly-correlated metal. Different particles, different Hamiltonians, unrelated scales.',
98
+ citation: 'docs/research/orphan-connector-adjudication.md',
99
+ },
100
+ {
101
+ id: 'decoherence-rate~mutation-rate',
102
+ kind: 'shared-structure',
103
+ between: ['decoherence-rate', 'mutation-rate'],
104
+ note: 'Same units, no shared meaning; unanimous. A decoherence rate (loss of quantum phase to the environment) vs. a mutation rate (frequency of a permanent, classical change to a DNA sequence). Same units, no shared physical meaning — decoherence may precede a mutation, but they are not one quantity.',
105
+ citation: 'docs/research/orphan-connector-adjudication.md',
106
+ },
107
+ ];
108
+ /** Look up an association by its `candidateId`-shaped key. @internal */
109
+ export function associationFor(id) {
110
+ return ASSOCIATIONS.find((a) => a.id === id);
111
+ }
112
+ //# sourceMappingURL=association.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"association.js","sourceRoot":"","sources":["../../src/atlas/association.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAwCH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD;QACE,EAAE,EAAE,8BAA8B;QAClC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,gBAAgB,EAAE,eAAe,CAAC;QAC5C,IAAI,EACF,6OAA6O;QAC/O,QAAQ,EAAE,kDAAkD;KAC7D;IACD;QACE,EAAE,EAAE,kCAAkC;QACtC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;QAChD,IAAI,EACF,2MAA2M;QAC7M,QAAQ,EAAE,kDAAkD;KAC7D;IACD;QACE,EAAE,EAAE,+BAA+B;QACnC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,mBAAmB,EAAE,aAAa,CAAC;QAC7C,IAAI,EACF,iKAAiK;QACnK,QAAQ,EAAE,kDAAkD;KAC7D;IACD;QACE,EAAE,EAAE,iCAAiC;QACrC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;QAC/C,IAAI,EACF,iOAAiO;QACnO,QAAQ,EAAE,kDAAkD;KAC7D;IACD;QACE,EAAE,EAAE,8CAA8C;QAClD,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;QAC5D,IAAI,EACF,2QAA2Q;QAC7Q,QAAQ,EAAE,gDAAgD;KAC3D;IACD;QACE,EAAE,EAAE,+BAA+B;QACnC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;QAC7C,IAAI,EACF,iQAAiQ;QACnQ,QAAQ,EAAE,gDAAgD;KAC3D;IACD;QACE,EAAE,EAAE,gCAAgC;QACpC,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,CAAC,kBAAkB,EAAE,eAAe,CAAC;QAC9C,IAAI,EACF,ySAAyS;QAC3S,QAAQ,EAAE,gDAAgD;KAC3D;CACF,CAAC;AAEF,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Atlas Phase 5, S5.3 — request and response SHAPES for the out-of-process
3
+ * conditions (embeddings, LLMs).
4
+ *
5
+ * Design note: `docs/planning/Atlas-Phase-5-Design.md` §7.
6
+ *
7
+ * Only the shapes and a strict response parser live here. The process plumbing
8
+ * is the probe's existing NDJSON worker protocol
9
+ * (`src/composition/probe/backend-protocol.ts`): argv spawn, no shell, timeout,
10
+ * schema-validated output. **A malformed response is an ERROR, never a
11
+ * default:** an outcome that defaulted to `'abstain'` would credit a broken
12
+ * worker with the benchmark's preferred behaviour.
13
+ *
14
+ * @module atlas/benchmark/backend-shapes
15
+ * @internal
16
+ */
17
+ import type { RelationType } from '../types.js';
18
+ /** What an out-of-process condition is asked. @internal */
19
+ export interface BenchmarkBackendRequest {
20
+ readonly itemId: string;
21
+ /** `classify`: judge the claim. `retrieve`: rank `corpusIds` for it. */
22
+ readonly task: 'classify' | 'retrieve';
23
+ readonly premises: readonly string[];
24
+ readonly conclusion: string;
25
+ readonly claimedRelation: RelationType;
26
+ /** Required for `retrieve`: the records to rank. */
27
+ readonly corpusIds?: readonly string[];
28
+ readonly budgetMs: number;
29
+ }
30
+ /** What it answers. Exactly one of `outcome` or `ranking`, matching the task. @internal */
31
+ export interface BenchmarkBackendResponse {
32
+ readonly itemId: string;
33
+ readonly outcome?: 'accept' | 'reject' | 'abstain';
34
+ readonly ranking?: readonly string[];
35
+ }
36
+ /** A response that failed validation, with every reason. @internal */
37
+ export interface BackendShapeError {
38
+ readonly error: string;
39
+ }
40
+ /**
41
+ * Validate one parsed response against the request it answers.
42
+ *
43
+ * @returns the response, or an error naming every problem. Never throws.
44
+ * @internal
45
+ */
46
+ export declare function parseBackendResponse(request: BenchmarkBackendRequest, value: unknown): BenchmarkBackendResponse | BackendShapeError;
47
+ //# sourceMappingURL=backend-shapes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-shapes.d.ts","sourceRoot":"","sources":["../../../src/atlas/benchmark/backend-shapes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,2DAA2D;AAC3D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC;IACvC,oDAAoD;IACpD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,2FAA2F;AAC3F,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAID;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,OAAO,GACb,wBAAwB,GAAG,iBAAiB,CAwB9C"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Atlas Phase 5, S5.3 — request and response SHAPES for the out-of-process
3
+ * conditions (embeddings, LLMs).
4
+ *
5
+ * Design note: `docs/planning/Atlas-Phase-5-Design.md` §7.
6
+ *
7
+ * Only the shapes and a strict response parser live here. The process plumbing
8
+ * is the probe's existing NDJSON worker protocol
9
+ * (`src/composition/probe/backend-protocol.ts`): argv spawn, no shell, timeout,
10
+ * schema-validated output. **A malformed response is an ERROR, never a
11
+ * default:** an outcome that defaulted to `'abstain'` would credit a broken
12
+ * worker with the benchmark's preferred behaviour.
13
+ *
14
+ * @module atlas/benchmark/backend-shapes
15
+ * @internal
16
+ */
17
+ const OUTCOMES = new Set(['accept', 'reject', 'abstain']);
18
+ /**
19
+ * Validate one parsed response against the request it answers.
20
+ *
21
+ * @returns the response, or an error naming every problem. Never throws.
22
+ * @internal
23
+ */
24
+ export function parseBackendResponse(request, value) {
25
+ const problems = [];
26
+ if (value === null || typeof value !== 'object')
27
+ return { error: 'response is not an object' };
28
+ const v = value;
29
+ if (v['itemId'] !== request.itemId)
30
+ problems.push(`itemId ${String(v['itemId'])} ≠ ${request.itemId}`);
31
+ if (request.task === 'classify') {
32
+ if (typeof v['outcome'] !== 'string' || !OUTCOMES.has(v['outcome'])) {
33
+ problems.push('classify needs outcome ∈ {accept, reject, abstain}');
34
+ }
35
+ if (v['ranking'] !== undefined)
36
+ problems.push('classify must not carry a ranking');
37
+ }
38
+ else {
39
+ const r = v['ranking'];
40
+ if (!Array.isArray(r) || !r.every((x) => typeof x === 'string')) {
41
+ problems.push('retrieve needs ranking: string[]');
42
+ }
43
+ else {
44
+ const allowed = new Set(request.corpusIds ?? []);
45
+ const unknown = r.filter((x) => !allowed.has(x));
46
+ if (unknown.length > 0)
47
+ problems.push(`ranking names ids outside the corpus: ${unknown.join(', ')}`);
48
+ if (new Set(r).size !== r.length)
49
+ problems.push('ranking repeats an id');
50
+ }
51
+ if (v['outcome'] !== undefined)
52
+ problems.push('retrieve must not carry an outcome');
53
+ }
54
+ if (problems.length > 0)
55
+ return { error: problems.join('; ') };
56
+ return v;
57
+ }
58
+ //# sourceMappingURL=backend-shapes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-shapes.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/backend-shapes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA6BH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAgC,EAChC,KAAc;IAEd,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;IAC/F,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM;QAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvG,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACrF,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAChE,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,yCAAyC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/D,OAAO,CAAwC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Atlas Phase 5, S5.3 — the deterministic, in-tree BASELINE conditions and the
3
+ * recall-at-depth-k scorer.
4
+ *
5
+ * Design note: `docs/planning/Atlas-Phase-5-Design.md` §7.
6
+ *
7
+ * Each baseline ranks a reference corpus against a query. The pre-registered
8
+ * criterion is recall at depth 10 against embeddings, so a baseline is scored by
9
+ * whether the correct reference lands in its top k. Three baselines, in rising
10
+ * order of structure:
11
+ *
12
+ * - **text retrieval** — Jaccard overlap of lower-cased word tokens;
13
+ * - **symbol matching** — Jaccard overlap of the expression's symbol names;
14
+ * - **typed structural search** — exact agreement of the leakage key
15
+ * (dimension-renamed normal form), then symbol overlap as the tie-break.
16
+ *
17
+ * **Every ranking is fully deterministic:** ties break on the reference id, so a
18
+ * rerun can never reorder a tie and move a result across the depth cut.
19
+ *
20
+ * Embeddings and LLM conditions run OUT OF PROCESS; `backend-shapes.ts` holds
21
+ * only their request and response shapes.
22
+ *
23
+ * @module atlas/benchmark/baselines
24
+ * @internal
25
+ */
26
+ import type { ExprNode } from '../../dimensional/ast-types.js';
27
+ /** One record a baseline can retrieve. @internal */
28
+ export interface CorpusRecord {
29
+ readonly id: string;
30
+ readonly text: string;
31
+ readonly expr?: ExprNode;
32
+ }
33
+ /** A query: an item's text and, when it has one, its expression. @internal */
34
+ export interface RetrievalQuery {
35
+ readonly text: string;
36
+ readonly expr?: ExprNode;
37
+ }
38
+ /** A ranking: reference ids, best first. @internal */
39
+ export type Ranking = readonly string[];
40
+ /** Baseline 1: text retrieval by word-token overlap. @internal */
41
+ export declare function rankByTextOverlap(query: RetrievalQuery, corpus: readonly CorpusRecord[]): Ranking;
42
+ /** Baseline 2: symbol matching by overlap of expression symbol names. @internal */
43
+ export declare function rankBySymbolOverlap(query: RetrievalQuery, corpus: readonly CorpusRecord[]): Ranking;
44
+ /**
45
+ * Baseline 3: typed structural search. A record whose leakage key equals the
46
+ * query's scores above every record that does not; symbol overlap orders within
47
+ * each tier. A query or record with no expression scores zero structurally.
48
+ *
49
+ * @internal
50
+ */
51
+ export declare function rankByStructure(query: RetrievalQuery, corpus: readonly CorpusRecord[]): Ranking;
52
+ /**
53
+ * Recall at depth k: the fraction of queries for which AT LEAST ONE correct
54
+ * reference appears in the top k of its ranking.
55
+ *
56
+ * A query with no ranking counts as a MISS, never as absent from the
57
+ * denominator: dropping it would raise recall by failing to answer. A query with
58
+ * no correct reference in `truth` is an error in the answer key, and throws.
59
+ *
60
+ * @throws Error if `truth` lists no correct reference for some query.
61
+ * @internal
62
+ */
63
+ export declare function recallAtK(rankings: ReadonlyMap<string, Ranking>, truth: ReadonlyMap<string, readonly string[]>, k?: number): number;
64
+ //# sourceMappingURL=baselines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baselines.d.ts","sourceRoot":"","sources":["../../../src/atlas/benchmark/baselines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG/D,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED,sDAAsD;AACtD,MAAM,MAAM,OAAO,GAAG,SAAS,MAAM,EAAE,CAAC;AAqCxC,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAGjG;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAGnG;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAO/F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EAC7C,CAAC,SAAK,GACL,MAAM,CASR"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Atlas Phase 5, S5.3 — the deterministic, in-tree BASELINE conditions and the
3
+ * recall-at-depth-k scorer.
4
+ *
5
+ * Design note: `docs/planning/Atlas-Phase-5-Design.md` §7.
6
+ *
7
+ * Each baseline ranks a reference corpus against a query. The pre-registered
8
+ * criterion is recall at depth 10 against embeddings, so a baseline is scored by
9
+ * whether the correct reference lands in its top k. Three baselines, in rising
10
+ * order of structure:
11
+ *
12
+ * - **text retrieval** — Jaccard overlap of lower-cased word tokens;
13
+ * - **symbol matching** — Jaccard overlap of the expression's symbol names;
14
+ * - **typed structural search** — exact agreement of the leakage key
15
+ * (dimension-renamed normal form), then symbol overlap as the tie-break.
16
+ *
17
+ * **Every ranking is fully deterministic:** ties break on the reference id, so a
18
+ * rerun can never reorder a tie and move a result across the depth cut.
19
+ *
20
+ * Embeddings and LLM conditions run OUT OF PROCESS; `backend-shapes.ts` holds
21
+ * only their request and response shapes.
22
+ *
23
+ * @module atlas/benchmark/baselines
24
+ * @internal
25
+ */
26
+ import { leakageKey } from './leakage.js';
27
+ const tokens = (text) => new Set(text
28
+ .toLowerCase()
29
+ .split(/[^\p{L}\p{N}]+/u)
30
+ .filter((t) => t.length > 0));
31
+ const jaccard = (a, b) => {
32
+ if (a.size === 0 && b.size === 0)
33
+ return 0;
34
+ let inter = 0;
35
+ for (const x of a)
36
+ if (b.has(x))
37
+ inter++;
38
+ return inter / (a.size + b.size - inter);
39
+ };
40
+ function symbolNames(node, out = new Set()) {
41
+ if (node === undefined)
42
+ return out;
43
+ if (node.kind === 'symbol') {
44
+ // Numeric literals are not symbols a reader would match on.
45
+ if (!Number.isFinite(Number(node.name)))
46
+ out.add(node.name);
47
+ return out;
48
+ }
49
+ if (node.kind === 'op')
50
+ for (const a of node.args)
51
+ symbolNames(a, out);
52
+ else if (node.kind === 'transcendental' || node.kind === 'abs')
53
+ symbolNames(node.arg, out);
54
+ return out;
55
+ }
56
+ /** Rank by descending score, ties broken by ascending id — never by input order. */
57
+ function rankBy(corpus, score) {
58
+ return corpus
59
+ .map((r) => ({ id: r.id, s: score(r) }))
60
+ .sort((a, b) => (b.s !== a.s ? b.s - a.s : a.id < b.id ? -1 : a.id > b.id ? 1 : 0))
61
+ .map((x) => x.id);
62
+ }
63
+ /** Baseline 1: text retrieval by word-token overlap. @internal */
64
+ export function rankByTextOverlap(query, corpus) {
65
+ const q = tokens(query.text);
66
+ return rankBy(corpus, (r) => jaccard(q, tokens(r.text)));
67
+ }
68
+ /** Baseline 2: symbol matching by overlap of expression symbol names. @internal */
69
+ export function rankBySymbolOverlap(query, corpus) {
70
+ const q = symbolNames(query.expr);
71
+ return rankBy(corpus, (r) => jaccard(q, symbolNames(r.expr)));
72
+ }
73
+ /**
74
+ * Baseline 3: typed structural search. A record whose leakage key equals the
75
+ * query's scores above every record that does not; symbol overlap orders within
76
+ * each tier. A query or record with no expression scores zero structurally.
77
+ *
78
+ * @internal
79
+ */
80
+ export function rankByStructure(query, corpus) {
81
+ const qKey = query.expr === undefined ? undefined : leakageKey(query.expr);
82
+ const qSyms = symbolNames(query.expr);
83
+ return rankBy(corpus, (r) => {
84
+ const structural = qKey !== undefined && r.expr !== undefined && leakageKey(r.expr) === qKey ? 1 : 0;
85
+ return 2 * structural + jaccard(qSyms, symbolNames(r.expr));
86
+ });
87
+ }
88
+ /**
89
+ * Recall at depth k: the fraction of queries for which AT LEAST ONE correct
90
+ * reference appears in the top k of its ranking.
91
+ *
92
+ * A query with no ranking counts as a MISS, never as absent from the
93
+ * denominator: dropping it would raise recall by failing to answer. A query with
94
+ * no correct reference in `truth` is an error in the answer key, and throws.
95
+ *
96
+ * @throws Error if `truth` lists no correct reference for some query.
97
+ * @internal
98
+ */
99
+ export function recallAtK(rankings, truth, k = 10) {
100
+ if (truth.size === 0)
101
+ return Number.NaN;
102
+ let hits = 0;
103
+ for (const [queryId, correct] of truth) {
104
+ if (correct.length === 0)
105
+ throw new Error(`recallAtK: no correct reference for ${queryId}`);
106
+ const top = (rankings.get(queryId) ?? []).slice(0, k);
107
+ if (correct.some((c) => top.includes(c)))
108
+ hits++;
109
+ }
110
+ return hits / truth.size;
111
+ }
112
+ //# sourceMappingURL=baselines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baselines.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/baselines.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Atlas Phase 5, S5.1 — leakage checks for the invalid-bridge benchmark.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-5-Design.md` §3.
5
+ *
6
+ * ## Why not `normalForm` directly
7
+ *
8
+ * The plan said renamed-variable variants "are detected as the same item by
9
+ * normal form". `normalForm` keys symbols by NAME, so `x/t` and `y/s` do not
10
+ * collide (measured). {@link leakageKey} therefore renames every DIMENSIONED
11
+ * symbol to its dimension signature first. That over-merges genuinely different
12
+ * quantities of one dimension, which is the SAFE direction for leakage: a false
13
+ * collision is flagged and reviewed, a missed one contaminates the study.
14
+ *
15
+ * @module atlas/benchmark/leakage
16
+ * @internal
17
+ */
18
+ import type { ExprNode } from '../../dimensional/ast-types.js';
19
+ import type { BenchmarkItem } from './types.js';
20
+ /**
21
+ * The key under which two items count as the same claim: the normal form of the
22
+ * expression after renaming dimensioned symbols by dimension.
23
+ *
24
+ * @internal
25
+ */
26
+ export declare function leakageKey(expr: ExprNode): string;
27
+ /** A pair of items that share a leakage key. @internal */
28
+ export interface LeakageCollision {
29
+ readonly key: string;
30
+ readonly ids: readonly string[];
31
+ /** The splits the colliding items sit in. More than one ⇒ LEAKAGE. */
32
+ readonly splits: readonly string[];
33
+ }
34
+ /**
35
+ * Group items by leakage key and report every group whose members span MORE THAN
36
+ * ONE split. Such a group means the held-out split contains a claim the
37
+ * in-distribution split already shows, under the same or different names.
38
+ *
39
+ * @internal
40
+ */
41
+ export declare function findCrossSplitLeakage(items: readonly BenchmarkItem[]): LeakageCollision[];
42
+ /** A renamed-variable variant that violates the same-split or same-key rule. @internal */
43
+ export interface VariantProblem {
44
+ readonly id: string;
45
+ readonly of: string;
46
+ readonly problem: 'missing-original' | 'different-split' | 'not-same-claim';
47
+ }
48
+ /**
49
+ * Check every `renamedVariant` link: the original exists, sits in the SAME split,
50
+ * and genuinely has the same leakage key (a "variant" that is a different claim
51
+ * is mislabelled, and the label would hide a real item).
52
+ *
53
+ * @internal
54
+ */
55
+ export declare function checkRenamedVariants(items: readonly BenchmarkItem[]): VariantProblem[];
56
+ //# sourceMappingURL=leakage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leakage.d.ts","sourceRoot":"","sources":["../../../src/atlas/benchmark/leakage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA2BhD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEjD;AAED,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,gBAAgB,EAAE,CAczF;AAED,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;CAC7E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,cAAc,EAAE,CAetF"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Atlas Phase 5, S5.1 — leakage checks for the invalid-bridge benchmark.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-5-Design.md` §3.
5
+ *
6
+ * ## Why not `normalForm` directly
7
+ *
8
+ * The plan said renamed-variable variants "are detected as the same item by
9
+ * normal form". `normalForm` keys symbols by NAME, so `x/t` and `y/s` do not
10
+ * collide (measured). {@link leakageKey} therefore renames every DIMENSIONED
11
+ * symbol to its dimension signature first. That over-merges genuinely different
12
+ * quantities of one dimension, which is the SAFE direction for leakage: a false
13
+ * collision is flagged and reviewed, a missed one contaminates the study.
14
+ *
15
+ * @module atlas/benchmark/leakage
16
+ * @internal
17
+ */
18
+ import { normalForm } from '../../canonical/normal-form.js';
19
+ const isDimensionless = (d) => d.L === 0 && d.M === 0 && d.T === 0 && d.I === 0 && d.Theta === 0 && d.N === 0 && d.J === 0;
20
+ const dimensionName = (d) => `dim[${d.L},${d.M},${d.T},${d.I},${d.Theta},${d.N},${d.J}]`;
21
+ /**
22
+ * Rename every dimensioned symbol leaf to its dimension signature. Dimensionless
23
+ * leaves keep their names: `normalForm` already drops recognised constants and
24
+ * tags unknown dimensionless stubs, and a numeric literal must stay a literal.
25
+ */
26
+ function renameByDimension(node) {
27
+ if (node.kind === 'symbol') {
28
+ return isDimensionless(node.dim) ? node : { ...node, name: dimensionName(node.dim) };
29
+ }
30
+ if (node.kind === 'op')
31
+ return { ...node, args: node.args.map(renameByDimension) };
32
+ if (node.kind === 'transcendental' || node.kind === 'abs') {
33
+ return { ...node, arg: renameByDimension(node.arg) };
34
+ }
35
+ // Other arms (integral, derivative, tensor nodes) are compared as normalForm
36
+ // compares them — structurally, names included. Stated, not hidden: a renamed
37
+ // variant INSIDE an integral is not caught by this key.
38
+ return node;
39
+ }
40
+ /**
41
+ * The key under which two items count as the same claim: the normal form of the
42
+ * expression after renaming dimensioned symbols by dimension.
43
+ *
44
+ * @internal
45
+ */
46
+ export function leakageKey(expr) {
47
+ return normalForm(renameByDimension(expr));
48
+ }
49
+ /**
50
+ * Group items by leakage key and report every group whose members span MORE THAN
51
+ * ONE split. Such a group means the held-out split contains a claim the
52
+ * in-distribution split already shows, under the same or different names.
53
+ *
54
+ * @internal
55
+ */
56
+ export function findCrossSplitLeakage(items) {
57
+ const groups = new Map();
58
+ for (const item of items) {
59
+ const key = leakageKey(item.expr);
60
+ const bucket = groups.get(key);
61
+ if (bucket === undefined)
62
+ groups.set(key, [item]);
63
+ else
64
+ bucket.push(item);
65
+ }
66
+ const out = [];
67
+ for (const [key, bucket] of groups) {
68
+ const splits = [...new Set(bucket.map((i) => i.split))].sort();
69
+ if (splits.length > 1)
70
+ out.push({ key, ids: bucket.map((i) => i.id), splits });
71
+ }
72
+ return out;
73
+ }
74
+ /**
75
+ * Check every `renamedVariant` link: the original exists, sits in the SAME split,
76
+ * and genuinely has the same leakage key (a "variant" that is a different claim
77
+ * is mislabelled, and the label would hide a real item).
78
+ *
79
+ * @internal
80
+ */
81
+ export function checkRenamedVariants(items) {
82
+ const byId = new Map(items.map((i) => [i.id, i]));
83
+ const out = [];
84
+ for (const item of items) {
85
+ if (item.renamedVariant === undefined)
86
+ continue;
87
+ const original = byId.get(item.renamedVariant);
88
+ if (original === undefined) {
89
+ out.push({ id: item.id, of: item.renamedVariant, problem: 'missing-original' });
90
+ }
91
+ else if (original.split !== item.split) {
92
+ out.push({ id: item.id, of: item.renamedVariant, problem: 'different-split' });
93
+ }
94
+ else if (leakageKey(original.expr) !== leakageKey(item.expr)) {
95
+ out.push({ id: item.id, of: item.renamedVariant, problem: 'not-same-claim' });
96
+ }
97
+ }
98
+ return out;
99
+ }
100
+ //# sourceMappingURL=leakage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leakage.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/leakage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Atlas Phase 5, S5.1 — load and validate benchmark items.
3
+ *
4
+ * Design note: `docs/planning/Atlas-Phase-5-Design.md` §0, §2.
5
+ *
6
+ * This module reads the PUBLIC half of a benchmark directory and nothing else.
7
+ * The answers live in a sibling half that no `src/` file may read;
8
+ * `tests/atlas/benchmark.test.ts` holds the import guard, with a positive
9
+ * control proving the guard can fire.
10
+ *
11
+ * **The loader enforces the one part of the independence rule that code CAN
12
+ * enforce: a frozen item whose `authorship` is not `'independent'` is refused.**
13
+ * Whether the author really was independent is a fact about people, recorded in
14
+ * the pre-registration note and checked by review.
15
+ *
16
+ * @module atlas/benchmark/loader
17
+ * @internal
18
+ */
19
+ import type { BenchmarkItem } from './types.js';
20
+ /** One reason an item set is not admissible. @internal */
21
+ export interface ItemProblem {
22
+ readonly id: string;
23
+ readonly problem: string;
24
+ }
25
+ /**
26
+ * Validate an item set against the schema and the rules that make it a benchmark.
27
+ *
28
+ * @param items - the items, as parsed.
29
+ * @param frozen - true for the frozen set (authorship must be `'independent'`),
30
+ * false for the contested staging area (authorship must be `'contested-draft'`).
31
+ * @returns every problem found; empty means admissible. Never throws, so a
32
+ * caller sees ALL problems at once rather than the first.
33
+ * @internal
34
+ */
35
+ export declare function validateItems(items: readonly BenchmarkItem[], frozen: boolean): ItemProblem[];
36
+ /** Thrown when a benchmark directory holds an inadmissible item set. @internal */
37
+ export declare class BenchmarkAdmissionError extends Error {
38
+ readonly problems: readonly ItemProblem[];
39
+ constructor(problems: readonly ItemProblem[]);
40
+ }
41
+ /**
42
+ * Load the FROZEN items from `<benchmarkDir>/public/items.json`.
43
+ *
44
+ * @throws BenchmarkAdmissionError when any item is inadmissible — a frozen set
45
+ * with one contested draft in it is not a smaller benchmark, it is a broken one.
46
+ * @internal
47
+ */
48
+ export declare function loadFrozenItems(benchmarkDir: string): BenchmarkItem[];
49
+ /**
50
+ * Load the CONTESTED drafts from `<benchmarkDir>/contested/items.json`. These are
51
+ * never scored; they wait for an independent author to accept or rewrite them.
52
+ *
53
+ * @internal
54
+ */
55
+ export declare function loadContestedDrafts(benchmarkDir: string): BenchmarkItem[];
56
+ //# sourceMappingURL=loader.d.ts.map