universal-physics-tensor 9.0.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (824) hide show
  1. package/README.md +19 -16
  2. package/data/atlas/atlas.json +55 -44
  3. package/data/atlas/atlas.jsonld +1 -1
  4. package/data/atlas/diffusion.json +19 -18
  5. package/data/atlas/oscillators.json +15 -10
  6. package/data/atlas/waves.json +23 -18
  7. package/data/bridge-catalog.json +886 -1473
  8. package/data/bridge-catalog.schema.json +349 -132
  9. package/data/quantities.json +53 -19
  10. package/data/schemas/atlas-record.v0.json +184 -46
  11. package/data/units.json +33 -4
  12. package/dist/atlas/applicability.d.ts.map +1 -1
  13. package/dist/atlas/applicability.js +14 -3
  14. package/dist/atlas/applicability.js.map +1 -1
  15. package/dist/atlas/association.js.map +1 -1
  16. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
  17. package/dist/atlas/benchmark/backend-shapes.js +5 -1
  18. package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
  19. package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
  20. package/dist/atlas/benchmark/baselines.js +8 -0
  21. package/dist/atlas/benchmark/baselines.js.map +1 -1
  22. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
  23. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  24. package/dist/atlas/benchmark/hybrid-retrieval.js +15 -8
  25. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  26. package/dist/atlas/benchmark/leakage.js.map +1 -1
  27. package/dist/atlas/benchmark/loader.js.map +1 -1
  28. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
  29. package/dist/atlas/benchmark/run-atlas.js +14 -2
  30. package/dist/atlas/benchmark/run-atlas.js.map +1 -1
  31. package/dist/atlas/benchmark/stats.d.ts +1 -1
  32. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  33. package/dist/atlas/benchmark/stats.js +1 -1
  34. package/dist/atlas/benchmark/stats.js.map +1 -1
  35. package/dist/atlas/benchmark/study.js.map +1 -1
  36. package/dist/atlas/benchmark/types.js.map +1 -1
  37. package/dist/atlas/bridge-record.d.ts +4 -4
  38. package/dist/atlas/bridge-record.d.ts.map +1 -1
  39. package/dist/atlas/bridge-record.js +6 -6
  40. package/dist/atlas/bridge-record.js.map +1 -1
  41. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  42. package/dist/atlas/chain-pipeline.d.ts +0 -11
  43. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  44. package/dist/atlas/chain-pipeline.js +5 -16
  45. package/dist/atlas/chain-pipeline.js.map +1 -1
  46. package/dist/atlas/composition-table.js.map +1 -1
  47. package/dist/atlas/conventions.js.map +1 -1
  48. package/dist/atlas/coverage.d.ts +2 -2
  49. package/dist/atlas/coverage.js.map +1 -1
  50. package/dist/atlas/derivation.js.map +1 -1
  51. package/dist/atlas/derive-evidence.d.ts +6 -4
  52. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  53. package/dist/atlas/derive-evidence.js +7 -2
  54. package/dist/atlas/derive-evidence.js.map +1 -1
  55. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  56. package/dist/atlas/diffusion/bridges-closure.js +0 -5
  57. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  58. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  59. package/dist/atlas/diffusion/bridges.js +0 -3
  60. package/dist/atlas/diffusion/bridges.js.map +1 -1
  61. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  62. package/dist/atlas/diffusion/index.d.ts +1 -1
  63. package/dist/atlas/diffusion/index.d.ts.map +1 -1
  64. package/dist/atlas/diffusion/index.js.map +1 -1
  65. package/dist/atlas/diffusion/models.js.map +1 -1
  66. package/dist/atlas/diffusion/numerics.js.map +1 -1
  67. package/dist/atlas/error-algebra.d.ts +6 -0
  68. package/dist/atlas/error-algebra.d.ts.map +1 -1
  69. package/dist/atlas/error-algebra.js +26 -0
  70. package/dist/atlas/error-algebra.js.map +1 -1
  71. package/dist/atlas/export.d.ts +18 -2
  72. package/dist/atlas/export.d.ts.map +1 -1
  73. package/dist/atlas/export.js +9 -3
  74. package/dist/atlas/export.js.map +1 -1
  75. package/dist/atlas/families.d.ts +19 -2
  76. package/dist/atlas/families.d.ts.map +1 -1
  77. package/dist/atlas/families.js +26 -3
  78. package/dist/atlas/families.js.map +1 -1
  79. package/dist/atlas/family.d.ts +27 -0
  80. package/dist/atlas/family.d.ts.map +1 -0
  81. package/dist/atlas/family.js +12 -0
  82. package/dist/atlas/family.js.map +1 -0
  83. package/dist/atlas/index.d.ts +3 -2
  84. package/dist/atlas/index.d.ts.map +1 -1
  85. package/dist/atlas/index.js +2 -1
  86. package/dist/atlas/index.js.map +1 -1
  87. package/dist/atlas/link-prediction.d.ts +1 -1
  88. package/dist/atlas/link-prediction.d.ts.map +1 -1
  89. package/dist/atlas/link-prediction.js.map +1 -1
  90. package/dist/atlas/model.js.map +1 -1
  91. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  92. package/dist/atlas/oscillators/bridges-coarse.js +0 -1
  93. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  94. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  95. package/dist/atlas/oscillators/bridges-exact.js +0 -3
  96. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  97. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  98. package/dist/atlas/oscillators/bridges-limits.js +0 -2
  99. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  100. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  101. package/dist/atlas/oscillators/index.d.ts +1 -16
  102. package/dist/atlas/oscillators/index.d.ts.map +1 -1
  103. package/dist/atlas/oscillators/index.js.map +1 -1
  104. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  105. package/dist/atlas/oscillators/models.js.map +1 -1
  106. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
  107. package/dist/atlas/oscillators/norm-transport.js.map +1 -1
  108. package/dist/atlas/oscillators/norms.js.map +1 -1
  109. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  110. package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
  111. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  112. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  113. package/dist/atlas/oscillators/rejections.js.map +1 -1
  114. package/dist/atlas/path-bound.js.map +1 -1
  115. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  116. package/dist/atlas/physjs-ref.d.ts +79 -45
  117. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  118. package/dist/atlas/physjs-ref.js +143 -62
  119. package/dist/atlas/physjs-ref.js.map +1 -1
  120. package/dist/atlas/physjs-reviewed.d.ts +31 -0
  121. package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
  122. package/dist/atlas/physjs-reviewed.js +194 -0
  123. package/dist/atlas/physjs-reviewed.js.map +1 -0
  124. package/dist/atlas/poster/associations.js.map +1 -1
  125. package/dist/atlas/poster/derivations.js.map +1 -1
  126. package/dist/atlas/poster/statements.js.map +1 -1
  127. package/dist/atlas/proof-target.js.map +1 -1
  128. package/dist/atlas/public.d.ts +2 -1
  129. package/dist/atlas/public.d.ts.map +1 -1
  130. package/dist/atlas/public.js +2 -1
  131. package/dist/atlas/public.js.map +1 -1
  132. package/dist/atlas/regime.js.map +1 -1
  133. package/dist/atlas/serialize.d.ts +18 -12
  134. package/dist/atlas/serialize.d.ts.map +1 -1
  135. package/dist/atlas/serialize.js +28 -18
  136. package/dist/atlas/serialize.js.map +1 -1
  137. package/dist/atlas/statement.js.map +1 -1
  138. package/dist/atlas/translation-registry.js.map +1 -1
  139. package/dist/atlas/translation.js.map +1 -1
  140. package/dist/atlas/types.d.ts +9 -2
  141. package/dist/atlas/types.d.ts.map +1 -1
  142. package/dist/atlas/types.js +1 -1
  143. package/dist/atlas/types.js.map +1 -1
  144. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  145. package/dist/atlas/waves/bridges-closure.js +0 -3
  146. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  147. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  148. package/dist/atlas/waves/bridges.js +0 -4
  149. package/dist/atlas/waves/bridges.js.map +1 -1
  150. package/dist/atlas/waves/index.d.ts +1 -1
  151. package/dist/atlas/waves/index.d.ts.map +1 -1
  152. package/dist/atlas/waves/index.js.map +1 -1
  153. package/dist/atlas/waves/models.js.map +1 -1
  154. package/dist/atlas/waves/numerics.js.map +1 -1
  155. package/dist/atlas/witness-artifact.js.map +1 -1
  156. package/dist/atlas/witness-dominance.d.ts +4 -3
  157. package/dist/atlas/witness-dominance.d.ts.map +1 -1
  158. package/dist/atlas/witness-dominance.js +15 -5
  159. package/dist/atlas/witness-dominance.js.map +1 -1
  160. package/dist/atlas/witness-numeric.d.ts +8 -4
  161. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  162. package/dist/atlas/witness-numeric.js +27 -2
  163. package/dist/atlas/witness-numeric.js.map +1 -1
  164. package/dist/atlas/witness-result.d.ts +7 -1
  165. package/dist/atlas/witness-result.d.ts.map +1 -1
  166. package/dist/atlas/witness-result.js.map +1 -1
  167. package/dist/atlas/witness-specs.js.map +1 -1
  168. package/dist/atlas/witness-symbolic.js.map +1 -1
  169. package/dist/atlas/witnesses/quantum-support.js.map +1 -1
  170. package/dist/bridges/caller-table.d.ts +1 -1
  171. package/dist/bridges/caller-table.d.ts.map +1 -1
  172. package/dist/bridges/caller-table.js.map +1 -1
  173. package/dist/bridges/carrier-sign.d.ts.map +1 -1
  174. package/dist/bridges/carrier-sign.js +8 -3
  175. package/dist/bridges/carrier-sign.js.map +1 -1
  176. package/dist/bridges/catalog-adapter.d.ts +12 -3
  177. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  178. package/dist/bridges/catalog-adapter.js +17 -9
  179. package/dist/bridges/catalog-adapter.js.map +1 -1
  180. package/dist/bridges/catalog-load.d.ts +12 -2
  181. package/dist/bridges/catalog-load.d.ts.map +1 -1
  182. package/dist/bridges/catalog-load.js +171 -8
  183. package/dist/bridges/catalog-load.js.map +1 -1
  184. package/dist/bridges/catalog-types.d.ts +48 -24
  185. package/dist/bridges/catalog-types.d.ts.map +1 -1
  186. package/dist/bridges/catalog-types.js.map +1 -1
  187. package/dist/bridges/coefficient-statement.js +1 -5
  188. package/dist/bridges/coefficient-statement.js.map +1 -1
  189. package/dist/bridges/confrontation-coverage.js.map +1 -1
  190. package/dist/bridges/confrontations.d.ts +1 -1
  191. package/dist/bridges/confrontations.d.ts.map +1 -1
  192. package/dist/bridges/confrontations.js +1 -1
  193. package/dist/bridges/confrontations.js.map +1 -1
  194. package/dist/bridges/evaluation-errors.d.ts +15 -2
  195. package/dist/bridges/evaluation-errors.d.ts.map +1 -1
  196. package/dist/bridges/evaluation-errors.js +20 -2
  197. package/dist/bridges/evaluation-errors.js.map +1 -1
  198. package/dist/bridges/evaluator-inputs.js.map +1 -1
  199. package/dist/bridges/evaluators.d.ts +17 -2
  200. package/dist/bridges/evaluators.d.ts.map +1 -1
  201. package/dist/bridges/evaluators.js +49 -16
  202. package/dist/bridges/evaluators.js.map +1 -1
  203. package/dist/bridges/expr-parse.d.ts +27 -4
  204. package/dist/bridges/expr-parse.d.ts.map +1 -1
  205. package/dist/bridges/expr-parse.js +90 -10
  206. package/dist/bridges/expr-parse.js.map +1 -1
  207. package/dist/bridges/holds.d.ts +5 -1
  208. package/dist/bridges/holds.d.ts.map +1 -1
  209. package/dist/bridges/holds.js +18 -3
  210. package/dist/bridges/holds.js.map +1 -1
  211. package/dist/bridges/index.d.ts +15 -14
  212. package/dist/bridges/index.d.ts.map +1 -1
  213. package/dist/bridges/index.js +14 -15
  214. package/dist/bridges/index.js.map +1 -1
  215. package/dist/bridges/input-contract.js.map +1 -1
  216. package/dist/bridges/membership.d.ts +5 -3
  217. package/dist/bridges/membership.d.ts.map +1 -1
  218. package/dist/bridges/membership.js +5 -6
  219. package/dist/bridges/membership.js.map +1 -1
  220. package/dist/bridges/notices.js.map +1 -1
  221. package/dist/bridges/observations/types.js.map +1 -1
  222. package/dist/bridges/rejected.d.ts +11 -17
  223. package/dist/bridges/rejected.d.ts.map +1 -1
  224. package/dist/bridges/rejected.js +13 -68
  225. package/dist/bridges/rejected.js.map +1 -1
  226. package/dist/bridges/relation-eval.d.ts +5 -6
  227. package/dist/bridges/relation-eval.d.ts.map +1 -1
  228. package/dist/bridges/relation-eval.js +9 -38
  229. package/dist/bridges/relation-eval.js.map +1 -1
  230. package/dist/bridges/rhs-registry.js.map +1 -1
  231. package/dist/bridges/sensitivity.d.ts +11 -3
  232. package/dist/bridges/sensitivity.d.ts.map +1 -1
  233. package/dist/bridges/sensitivity.js +24 -10
  234. package/dist/bridges/sensitivity.js.map +1 -1
  235. package/dist/bridges/tensor-index.js.map +1 -1
  236. package/dist/bridges/types.d.ts +1 -7
  237. package/dist/bridges/types.d.ts.map +1 -1
  238. package/dist/bridges/types.js +1 -4
  239. package/dist/bridges/types.js.map +1 -1
  240. package/dist/canonical/canonical-equation.js.map +1 -1
  241. package/dist/canonical/dimensional-fields.js.map +1 -1
  242. package/dist/canonical/entries/_l1-build.js.map +1 -1
  243. package/dist/canonical/entries/atomic.js.map +1 -1
  244. package/dist/canonical/entries/condensed-matter.js +4 -4
  245. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  246. package/dist/canonical/entries/dimensional-classics.js +2 -2
  247. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  248. package/dist/canonical/entries/electromagnetism.js +2 -2
  249. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  250. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  251. package/dist/canonical/entries/mechanics.js.map +1 -1
  252. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  253. package/dist/canonical/entries/nonmonomial.js +29 -22
  254. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  255. package/dist/canonical/entries/relativity.js.map +1 -1
  256. package/dist/canonical/entries/statistical-mechanics.js +5 -5
  257. package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
  258. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  259. package/dist/canonical/linkage.d.ts +29 -4
  260. package/dist/canonical/linkage.d.ts.map +1 -1
  261. package/dist/canonical/linkage.js +31 -29
  262. package/dist/canonical/linkage.js.map +1 -1
  263. package/dist/canonical/normal-form.d.ts +0 -8
  264. package/dist/canonical/normal-form.d.ts.map +1 -1
  265. package/dist/canonical/normal-form.js +17 -12
  266. package/dist/canonical/normal-form.js.map +1 -1
  267. package/dist/canonical/registry.js.map +1 -1
  268. package/dist/canonical/residual.js.map +1 -1
  269. package/dist/canonical/seed-l-layer.d.ts +7 -1
  270. package/dist/canonical/seed-l-layer.d.ts.map +1 -1
  271. package/dist/canonical/seed-l-layer.js +7 -1
  272. package/dist/canonical/seed-l-layer.js.map +1 -1
  273. package/dist/canonical/structural.d.ts +21 -0
  274. package/dist/canonical/structural.d.ts.map +1 -1
  275. package/dist/canonical/structural.js +24 -4
  276. package/dist/canonical/structural.js.map +1 -1
  277. package/dist/cases/brownian-sphere.js +4 -4
  278. package/dist/cases/brownian-sphere.js.map +1 -1
  279. package/dist/cases/damped-resonator.js +2 -2
  280. package/dist/cases/damped-resonator.js.map +1 -1
  281. package/dist/cases/index.js.map +1 -1
  282. package/dist/cases/kepler-rv.js.map +1 -1
  283. package/dist/cases/lumped-cooling.js +1 -1
  284. package/dist/cases/lumped-cooling.js.map +1 -1
  285. package/dist/cases/quadrature.js.map +1 -1
  286. package/dist/cases/resistor-noise.js +3 -3
  287. package/dist/cases/resistor-noise.js.map +1 -1
  288. package/dist/cases/skin-depth.js.map +1 -1
  289. package/dist/cases/types.js.map +1 -1
  290. package/dist/cli/args.d.ts +7 -2
  291. package/dist/cli/args.d.ts.map +1 -1
  292. package/dist/cli/args.js +18 -2
  293. package/dist/cli/args.js.map +1 -1
  294. package/dist/cli/bindings.d.ts +13 -0
  295. package/dist/cli/bindings.d.ts.map +1 -0
  296. package/dist/cli/bindings.js +32 -0
  297. package/dist/cli/bindings.js.map +1 -0
  298. package/dist/cli/closed-form-range.js.map +1 -1
  299. package/dist/cli/command.js.map +1 -1
  300. package/dist/cli/commands/_atlas-map.d.ts +3 -3
  301. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  302. package/dist/cli/commands/_atlas-map.js +43 -18
  303. package/dist/cli/commands/_atlas-map.js.map +1 -1
  304. package/dist/cli/commands/_atlas-route.js.map +1 -1
  305. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  306. package/dist/cli/commands/_discovery-opts.js +42 -7
  307. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  308. package/dist/cli/commands/atlas.d.ts.map +1 -1
  309. package/dist/cli/commands/atlas.js +1 -3
  310. package/dist/cli/commands/atlas.js.map +1 -1
  311. package/dist/cli/commands/audit.d.ts.map +1 -1
  312. package/dist/cli/commands/audit.js +13 -20
  313. package/dist/cli/commands/audit.js.map +1 -1
  314. package/dist/cli/commands/axes.js.map +1 -1
  315. package/dist/cli/commands/candidates.d.ts.map +1 -1
  316. package/dist/cli/commands/candidates.js +16 -8
  317. package/dist/cli/commands/candidates.js.map +1 -1
  318. package/dist/cli/commands/canonical.js.map +1 -1
  319. package/dist/cli/commands/chain.js +1 -1
  320. package/dist/cli/commands/chain.js.map +1 -1
  321. package/dist/cli/commands/confront.d.ts.map +1 -1
  322. package/dist/cli/commands/confront.js +22 -14
  323. package/dist/cli/commands/confront.js.map +1 -1
  324. package/dist/cli/commands/connectors.js.map +1 -1
  325. package/dist/cli/commands/coverage.js.map +1 -1
  326. package/dist/cli/commands/derive.d.ts.map +1 -1
  327. package/dist/cli/commands/derive.js +42 -17
  328. package/dist/cli/commands/derive.js.map +1 -1
  329. package/dist/cli/commands/discover.d.ts.map +1 -1
  330. package/dist/cli/commands/discover.js +15 -9
  331. package/dist/cli/commands/discover.js.map +1 -1
  332. package/dist/cli/commands/eval.d.ts.map +1 -1
  333. package/dist/cli/commands/eval.js +13 -10
  334. package/dist/cli/commands/eval.js.map +1 -1
  335. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  336. package/dist/cli/commands/evaluate.js +53 -31
  337. package/dist/cli/commands/evaluate.js.map +1 -1
  338. package/dist/cli/commands/explain.d.ts.map +1 -1
  339. package/dist/cli/commands/explain.js +14 -7
  340. package/dist/cli/commands/explain.js.map +1 -1
  341. package/dist/cli/commands/frontier.js.map +1 -1
  342. package/dist/cli/commands/ground.d.ts.map +1 -1
  343. package/dist/cli/commands/ground.js +40 -10
  344. package/dist/cli/commands/ground.js.map +1 -1
  345. package/dist/cli/commands/index.js.map +1 -1
  346. package/dist/cli/commands/map.d.ts.map +1 -1
  347. package/dist/cli/commands/map.js +82 -89
  348. package/dist/cli/commands/map.js.map +1 -1
  349. package/dist/cli/commands/metric.d.ts.map +1 -1
  350. package/dist/cli/commands/metric.js +53 -18
  351. package/dist/cli/commands/metric.js.map +1 -1
  352. package/dist/cli/commands/path.js +4 -4
  353. package/dist/cli/commands/path.js.map +1 -1
  354. package/dist/cli/commands/predict.js.map +1 -1
  355. package/dist/cli/commands/priority.js.map +1 -1
  356. package/dist/cli/commands/probe.d.ts.map +1 -1
  357. package/dist/cli/commands/probe.js +50 -26
  358. package/dist/cli/commands/probe.js.map +1 -1
  359. package/dist/cli/commands/recover.js +1 -1
  360. package/dist/cli/commands/recover.js.map +1 -1
  361. package/dist/cli/commands/regime.d.ts +5 -4
  362. package/dist/cli/commands/regime.d.ts.map +1 -1
  363. package/dist/cli/commands/regime.js +24 -26
  364. package/dist/cli/commands/regime.js.map +1 -1
  365. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  366. package/dist/cli/commands/retrieve.js +22 -14
  367. package/dist/cli/commands/retrieve.js.map +1 -1
  368. package/dist/cli/commands/search.d.ts.map +1 -1
  369. package/dist/cli/commands/search.js +8 -4
  370. package/dist/cli/commands/search.js.map +1 -1
  371. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  372. package/dist/cli/commands/symbolic.js +13 -9
  373. package/dist/cli/commands/symbolic.js.map +1 -1
  374. package/dist/cli/commands/testplan.js +1 -1
  375. package/dist/cli/commands/testplan.js.map +1 -1
  376. package/dist/cli/conventions.js.map +1 -1
  377. package/dist/cli/determination.js.map +1 -1
  378. package/dist/cli/errors.js.map +1 -1
  379. package/dist/cli/euler-guard.js.map +1 -1
  380. package/dist/cli/eval-numbers.js.map +1 -1
  381. package/dist/cli/expr-print.d.ts +29 -2
  382. package/dist/cli/expr-print.d.ts.map +1 -1
  383. package/dist/cli/expr-print.js +46 -2
  384. package/dist/cli/expr-print.js.map +1 -1
  385. package/dist/cli/flag-help.js.map +1 -1
  386. package/dist/cli/graphs.js.map +1 -1
  387. package/dist/cli/library-defaults.d.ts +19 -0
  388. package/dist/cli/library-defaults.d.ts.map +1 -0
  389. package/dist/cli/library-defaults.js +22 -0
  390. package/dist/cli/library-defaults.js.map +1 -0
  391. package/dist/cli/main.js +7 -3
  392. package/dist/cli/main.js.map +1 -1
  393. package/dist/cli/map-evidence.js.map +1 -1
  394. package/dist/cli/output.d.ts +3 -6
  395. package/dist/cli/output.d.ts.map +1 -1
  396. package/dist/cli/output.js.map +1 -1
  397. package/dist/cli/published-url.js.map +1 -1
  398. package/dist/cli/record-reach.d.ts +6 -0
  399. package/dist/cli/record-reach.d.ts.map +1 -1
  400. package/dist/cli/record-reach.js +16 -10
  401. package/dist/cli/record-reach.js.map +1 -1
  402. package/dist/cli/record-tables.js +1 -1
  403. package/dist/cli/record-tables.js.map +1 -1
  404. package/dist/cli/record.d.ts.map +1 -1
  405. package/dist/cli/record.js +31 -12
  406. package/dist/cli/record.js.map +1 -1
  407. package/dist/cli/search-index.d.ts +5 -0
  408. package/dist/cli/search-index.d.ts.map +1 -1
  409. package/dist/cli/search-index.js +12 -1
  410. package/dist/cli/search-index.js.map +1 -1
  411. package/dist/cli/statuses.js.map +1 -1
  412. package/dist/cli/top-level-help.js.map +1 -1
  413. package/dist/cli/version.js.map +1 -1
  414. package/dist/cli-api.d.ts +15 -9
  415. package/dist/cli-api.d.ts.map +1 -1
  416. package/dist/cli-api.js +14 -13
  417. package/dist/cli-api.js.map +1 -1
  418. package/dist/composition/adjudication.js.map +1 -1
  419. package/dist/composition/aliases.js.map +1 -1
  420. package/dist/composition/audit-coverage.d.ts +2 -0
  421. package/dist/composition/audit-coverage.d.ts.map +1 -1
  422. package/dist/composition/audit-coverage.js.map +1 -1
  423. package/dist/composition/axes.d.ts +12 -0
  424. package/dist/composition/axes.d.ts.map +1 -1
  425. package/dist/composition/axes.js +18 -6
  426. package/dist/composition/axes.js.map +1 -1
  427. package/dist/composition/axis-audit.js.map +1 -1
  428. package/dist/composition/bridge-analysis.d.ts +0 -18
  429. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  430. package/dist/composition/bridge-analysis.js +57 -47
  431. package/dist/composition/bridge-analysis.js.map +1 -1
  432. package/dist/composition/bridge-prediction.d.ts +5 -1
  433. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  434. package/dist/composition/bridge-prediction.js +12 -16
  435. package/dist/composition/bridge-prediction.js.map +1 -1
  436. package/dist/composition/buckingham-filter.js.map +1 -1
  437. package/dist/composition/canonical-compare.d.ts.map +1 -1
  438. package/dist/composition/canonical-compare.js +12 -2
  439. package/dist/composition/canonical-compare.js.map +1 -1
  440. package/dist/composition/canonical-graph.d.ts +8 -9
  441. package/dist/composition/canonical-graph.d.ts.map +1 -1
  442. package/dist/composition/canonical-graph.js +25 -67
  443. package/dist/composition/canonical-graph.js.map +1 -1
  444. package/dist/composition/canonical-json.js.map +1 -1
  445. package/dist/composition/canonical-prefactors.js.map +1 -1
  446. package/dist/composition/catalog-graph.d.ts.map +1 -1
  447. package/dist/composition/catalog-graph.js +6 -20
  448. package/dist/composition/catalog-graph.js.map +1 -1
  449. package/dist/composition/chain-candidate.d.ts +2 -0
  450. package/dist/composition/chain-candidate.d.ts.map +1 -1
  451. package/dist/composition/chain-candidate.js +2 -0
  452. package/dist/composition/chain-candidate.js.map +1 -1
  453. package/dist/composition/chain-match.js.map +1 -1
  454. package/dist/composition/chain-regime.js.map +1 -1
  455. package/dist/composition/chain-result.js.map +1 -1
  456. package/dist/composition/compose-surface.js.map +1 -1
  457. package/dist/composition/compose-symbolic.js.map +1 -1
  458. package/dist/composition/compose.d.ts.map +1 -1
  459. package/dist/composition/compose.js +153 -36
  460. package/dist/composition/compose.js.map +1 -1
  461. package/dist/composition/composition-recovery.js.map +1 -1
  462. package/dist/composition/consequence.d.ts.map +1 -1
  463. package/dist/composition/consequence.js +15 -6
  464. package/dist/composition/consequence.js.map +1 -1
  465. package/dist/composition/consistency.js.map +1 -1
  466. package/dist/composition/descriptor.d.ts +1 -1
  467. package/dist/composition/descriptor.d.ts.map +1 -1
  468. package/dist/composition/descriptor.js.map +1 -1
  469. package/dist/composition/dimension-adjacency.js.map +1 -1
  470. package/dist/composition/discovery.d.ts +21 -11
  471. package/dist/composition/discovery.d.ts.map +1 -1
  472. package/dist/composition/discovery.js +81 -21
  473. package/dist/composition/discovery.js.map +1 -1
  474. package/dist/composition/edge.d.ts +19 -8
  475. package/dist/composition/edge.d.ts.map +1 -1
  476. package/dist/composition/edge.js +24 -11
  477. package/dist/composition/edge.js.map +1 -1
  478. package/dist/composition/enumerate.d.ts +2 -2
  479. package/dist/composition/enumerate.d.ts.map +1 -1
  480. package/dist/composition/enumerate.js.map +1 -1
  481. package/dist/composition/evaluate-relation.js.map +1 -1
  482. package/dist/composition/explain.d.ts +14 -9
  483. package/dist/composition/explain.d.ts.map +1 -1
  484. package/dist/composition/explain.js +46 -13
  485. package/dist/composition/explain.js.map +1 -1
  486. package/dist/composition/expr-eval.js.map +1 -1
  487. package/dist/composition/expr-simplify.d.ts.map +1 -1
  488. package/dist/composition/expr-simplify.js +9 -39
  489. package/dist/composition/expr-simplify.js.map +1 -1
  490. package/dist/composition/expr-subst.js.map +1 -1
  491. package/dist/composition/formula-shape.d.ts +9 -0
  492. package/dist/composition/formula-shape.d.ts.map +1 -1
  493. package/dist/composition/formula-shape.js +54 -0
  494. package/dist/composition/formula-shape.js.map +1 -1
  495. package/dist/composition/frontier-account.d.ts +3 -2
  496. package/dist/composition/frontier-account.d.ts.map +1 -1
  497. package/dist/composition/frontier-account.js +7 -3
  498. package/dist/composition/frontier-account.js.map +1 -1
  499. package/dist/composition/graph-viz-svg.js.map +1 -1
  500. package/dist/composition/graph-viz.js.map +1 -1
  501. package/dist/composition/grounding.js.map +1 -1
  502. package/dist/composition/identifiability.js.map +1 -1
  503. package/dist/composition/index.d.ts +6 -4
  504. package/dist/composition/index.d.ts.map +1 -1
  505. package/dist/composition/index.js +4 -3
  506. package/dist/composition/index.js.map +1 -1
  507. package/dist/composition/mathts-quiet.d.ts +28 -0
  508. package/dist/composition/mathts-quiet.d.ts.map +1 -0
  509. package/dist/composition/mathts-quiet.js +56 -0
  510. package/dist/composition/mathts-quiet.js.map +1 -0
  511. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  512. package/dist/composition/mathts-scalar-symbols.js +18 -34
  513. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  514. package/dist/composition/not-composable-seeds.d.ts +3 -1
  515. package/dist/composition/not-composable-seeds.d.ts.map +1 -1
  516. package/dist/composition/not-composable-seeds.js +2 -0
  517. package/dist/composition/not-composable-seeds.js.map +1 -1
  518. package/dist/composition/probe/backend-protocol.js.map +1 -1
  519. package/dist/composition/probe/candidate-store.js.map +1 -1
  520. package/dist/composition/probe/corpus.js.map +1 -1
  521. package/dist/composition/probe/dataset.js.map +1 -1
  522. package/dist/composition/probe/experiment-design.js.map +1 -1
  523. package/dist/composition/probe/expression-gaps.js.map +1 -1
  524. package/dist/composition/probe/falsify.d.ts +14 -3
  525. package/dist/composition/probe/falsify.d.ts.map +1 -1
  526. package/dist/composition/probe/falsify.js +14 -27
  527. package/dist/composition/probe/falsify.js.map +1 -1
  528. package/dist/composition/probe/fingerprint.js.map +1 -1
  529. package/dist/composition/probe/fit.d.ts +1 -1
  530. package/dist/composition/probe/fit.d.ts.map +1 -1
  531. package/dist/composition/probe/fit.js +2 -1
  532. package/dist/composition/probe/fit.js.map +1 -1
  533. package/dist/composition/probe/frontier.js.map +1 -1
  534. package/dist/composition/probe/generator.js.map +1 -1
  535. package/dist/composition/probe/index.d.ts +4 -2
  536. package/dist/composition/probe/index.d.ts.map +1 -1
  537. package/dist/composition/probe/index.js +4 -2
  538. package/dist/composition/probe/index.js.map +1 -1
  539. package/dist/composition/probe/limits.js.map +1 -1
  540. package/dist/composition/probe/metadata.js.map +1 -1
  541. package/dist/composition/probe/pipeline.d.ts +5 -0
  542. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  543. package/dist/composition/probe/pipeline.js +13 -6
  544. package/dist/composition/probe/pipeline.js.map +1 -1
  545. package/dist/composition/probe/problem.d.ts +8 -0
  546. package/dist/composition/probe/problem.d.ts.map +1 -1
  547. package/dist/composition/probe/problem.js +78 -12
  548. package/dist/composition/probe/problem.js.map +1 -1
  549. package/dist/composition/probe/report.js.map +1 -1
  550. package/dist/composition/probe/residual.js.map +1 -1
  551. package/dist/composition/probe/run-manifest.js +2 -2
  552. package/dist/composition/probe/run-manifest.js.map +1 -1
  553. package/dist/composition/probe/scoring.d.ts +2 -1
  554. package/dist/composition/probe/scoring.d.ts.map +1 -1
  555. package/dist/composition/probe/scoring.js +21 -7
  556. package/dist/composition/probe/scoring.js.map +1 -1
  557. package/dist/composition/probe/search-budget.js.map +1 -1
  558. package/dist/composition/probe/serialize.js.map +1 -1
  559. package/dist/composition/probe/structure.js.map +1 -1
  560. package/dist/composition/probe/study.d.ts +4 -3
  561. package/dist/composition/probe/study.d.ts.map +1 -1
  562. package/dist/composition/probe/study.js +5 -3
  563. package/dist/composition/probe/study.js.map +1 -1
  564. package/dist/composition/probe/types.d.ts +3 -1
  565. package/dist/composition/probe/types.d.ts.map +1 -1
  566. package/dist/composition/probe/types.js +2 -0
  567. package/dist/composition/probe/types.js.map +1 -1
  568. package/dist/composition/proposed-bridges.d.ts +11 -4
  569. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  570. package/dist/composition/proposed-bridges.js +11 -4
  571. package/dist/composition/proposed-bridges.js.map +1 -1
  572. package/dist/composition/quantities.d.ts +0 -4
  573. package/dist/composition/quantities.d.ts.map +1 -1
  574. package/dist/composition/quantities.js +5 -5
  575. package/dist/composition/quantities.js.map +1 -1
  576. package/dist/composition/quantity.d.ts +18 -2
  577. package/dist/composition/quantity.d.ts.map +1 -1
  578. package/dist/composition/quantity.js +35 -6
  579. package/dist/composition/quantity.js.map +1 -1
  580. package/dist/composition/representative-values.js.map +1 -1
  581. package/dist/composition/retrodiction.d.ts +16 -6
  582. package/dist/composition/retrodiction.d.ts.map +1 -1
  583. package/dist/composition/retrodiction.js +34 -9
  584. package/dist/composition/retrodiction.js.map +1 -1
  585. package/dist/composition/uncertainty.js.map +1 -1
  586. package/dist/composition/user-equation.js.map +1 -1
  587. package/dist/core/axes-registry.d.ts +8 -5
  588. package/dist/core/axes-registry.d.ts.map +1 -1
  589. package/dist/core/axes-registry.js.map +1 -1
  590. package/dist/core/cell.js.map +1 -1
  591. package/dist/core/constants.d.ts +8 -8
  592. package/dist/core/constants.d.ts.map +1 -1
  593. package/dist/core/constants.js +8 -10
  594. package/dist/core/constants.js.map +1 -1
  595. package/dist/core/data-file.js.map +1 -1
  596. package/dist/core/flux-rules.js +1 -1
  597. package/dist/core/flux-rules.js.map +1 -1
  598. package/dist/core/json-schema.d.ts +1 -1
  599. package/dist/core/json-schema.d.ts.map +1 -1
  600. package/dist/core/json-schema.js +31 -7
  601. package/dist/core/json-schema.js.map +1 -1
  602. package/dist/core/labeled-tensor.d.ts +6 -1
  603. package/dist/core/labeled-tensor.d.ts.map +1 -1
  604. package/dist/core/labeled-tensor.js +18 -8
  605. package/dist/core/labeled-tensor.js.map +1 -1
  606. package/dist/core/regime-registry.d.ts +6 -2
  607. package/dist/core/regime-registry.d.ts.map +1 -1
  608. package/dist/core/regime-registry.js.map +1 -1
  609. package/dist/core/regime-rule-install.js.map +1 -1
  610. package/dist/core/regimes-builtins.js.map +1 -1
  611. package/dist/core/tensor.d.ts +7 -4
  612. package/dist/core/tensor.d.ts.map +1 -1
  613. package/dist/core/tensor.js +40 -8
  614. package/dist/core/tensor.js.map +1 -1
  615. package/dist/core/types.js.map +1 -1
  616. package/dist/core/universal-index.js.map +1 -1
  617. package/dist/diff/bridge-ast-gradient.d.ts +4 -5
  618. package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
  619. package/dist/diff/bridge-ast-gradient.js +10 -6
  620. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  621. package/dist/diff/bridge-gradient.d.ts +24 -80
  622. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  623. package/dist/diff/bridge-gradient.js +21 -98
  624. package/dist/diff/bridge-gradient.js.map +1 -1
  625. package/dist/diff/bridge-specs.d.ts +16 -5
  626. package/dist/diff/bridge-specs.d.ts.map +1 -1
  627. package/dist/diff/bridge-specs.js +16 -4
  628. package/dist/diff/bridge-specs.js.map +1 -1
  629. package/dist/dimensional/algebra.js.map +1 -1
  630. package/dist/dimensional/ast-builders.d.ts +5 -4
  631. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  632. package/dist/dimensional/ast-builders.js +6 -5
  633. package/dist/dimensional/ast-builders.js.map +1 -1
  634. package/dist/dimensional/ast-types.js.map +1 -1
  635. package/dist/dimensional/bridge-check.js.map +1 -1
  636. package/dist/dimensional/buckingham.js.map +1 -1
  637. package/dist/dimensional/connection-validators.d.ts +2 -1
  638. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  639. package/dist/dimensional/connection-validators.js.map +1 -1
  640. package/dist/dimensional/connection.js.map +1 -1
  641. package/dist/dimensional/constant-rows.d.ts.map +1 -1
  642. package/dist/dimensional/constant-rows.js +9 -5
  643. package/dist/dimensional/constant-rows.js.map +1 -1
  644. package/dist/dimensional/constants.d.ts +5 -6
  645. package/dist/dimensional/constants.d.ts.map +1 -1
  646. package/dist/dimensional/constants.js +5 -6
  647. package/dist/dimensional/constants.js.map +1 -1
  648. package/dist/dimensional/curvature-composite.js.map +1 -1
  649. package/dist/dimensional/curvature-invariants.js.map +1 -1
  650. package/dist/dimensional/curvature.js.map +1 -1
  651. package/dist/dimensional/dimension-inference.js.map +1 -1
  652. package/dist/dimensional/dimension-spec.d.ts +13 -7
  653. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  654. package/dist/dimensional/dimension-spec.js +49 -23
  655. package/dist/dimensional/dimension-spec.js.map +1 -1
  656. package/dist/dimensional/einstein-equation.js.map +1 -1
  657. package/dist/dimensional/errors.d.ts +3 -1
  658. package/dist/dimensional/errors.d.ts.map +1 -1
  659. package/dist/dimensional/errors.js +2 -2
  660. package/dist/dimensional/errors.js.map +1 -1
  661. package/dist/dimensional/exact-scale.js.map +1 -1
  662. package/dist/dimensional/field-equation-helpers.js.map +1 -1
  663. package/dist/dimensional/formula-names.js.map +1 -1
  664. package/dist/dimensional/fresh-label.js.map +1 -1
  665. package/dist/dimensional/friedmann-equation.d.ts +3 -3
  666. package/dist/dimensional/friedmann-equation.js +3 -3
  667. package/dist/dimensional/friedmann-equation.js.map +1 -1
  668. package/dist/dimensional/gauge-field.d.ts +2 -3
  669. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  670. package/dist/dimensional/gauge-field.js +0 -1
  671. package/dist/dimensional/gauge-field.js.map +1 -1
  672. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  673. package/dist/dimensional/hyphen-names.js +8 -0
  674. package/dist/dimensional/hyphen-names.js.map +1 -1
  675. package/dist/dimensional/killing-validators.js.map +1 -1
  676. package/dist/dimensional/klein-gordon-equation.js.map +1 -1
  677. package/dist/dimensional/metric-validators.d.ts +2 -1
  678. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  679. package/dist/dimensional/metric-validators.js.map +1 -1
  680. package/dist/dimensional/metric.js.map +1 -1
  681. package/dist/dimensional/natural-units.js.map +1 -1
  682. package/dist/dimensional/quantity-registry.d.ts +13 -0
  683. package/dist/dimensional/quantity-registry.d.ts.map +1 -1
  684. package/dist/dimensional/quantity-registry.js +14 -6
  685. package/dist/dimensional/quantity-registry.js.map +1 -1
  686. package/dist/dimensional/rg-flow.js.map +1 -1
  687. package/dist/dimensional/stress-energy-validators.js.map +1 -1
  688. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  689. package/dist/dimensional/symbolic-constants.js +7 -2
  690. package/dist/dimensional/symbolic-constants.js.map +1 -1
  691. package/dist/dimensional/tensor-trace.js.map +1 -1
  692. package/dist/dimensional/tensor.js.map +1 -1
  693. package/dist/dimensional/types.js.map +1 -1
  694. package/dist/dimensional/unit-convention.d.ts +0 -2
  695. package/dist/dimensional/unit-convention.d.ts.map +1 -1
  696. package/dist/dimensional/unit-convention.js +2 -2
  697. package/dist/dimensional/unit-convention.js.map +1 -1
  698. package/dist/dimensional/unit-data.d.ts.map +1 -1
  699. package/dist/dimensional/unit-data.js +9 -5
  700. package/dist/dimensional/unit-data.js.map +1 -1
  701. package/dist/dimensional/units.d.ts.map +1 -1
  702. package/dist/dimensional/units.js +38 -20
  703. package/dist/dimensional/units.js.map +1 -1
  704. package/dist/dimensional/validator-registry.js.map +1 -1
  705. package/dist/dimensional/validator.d.ts +0 -16
  706. package/dist/dimensional/validator.d.ts.map +1 -1
  707. package/dist/dimensional/validator.js +65 -29
  708. package/dist/dimensional/validator.js.map +1 -1
  709. package/dist/dimensional/weyl-validators.js.map +1 -1
  710. package/dist/index.d.ts +50 -5
  711. package/dist/index.d.ts.map +1 -1
  712. package/dist/index.js +12 -20
  713. package/dist/index.js.map +1 -1
  714. package/dist/numerical/bianchi-residual.js.map +1 -1
  715. package/dist/numerical/binding-value.d.ts +11 -6
  716. package/dist/numerical/binding-value.d.ts.map +1 -1
  717. package/dist/numerical/binding-value.js +126 -122
  718. package/dist/numerical/binding-value.js.map +1 -1
  719. package/dist/numerical/christoffel-flat.js.map +1 -1
  720. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  721. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  722. package/dist/numerical/covariant-eikonal.js +2 -2
  723. package/dist/numerical/covariant-eikonal.js.map +1 -1
  724. package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
  725. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  726. package/dist/numerical/curvature-lowering-helpers.js +6 -3
  727. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  728. package/dist/numerical/derivative-lowering.js.map +1 -1
  729. package/dist/numerical/einstein-equation.js.map +1 -1
  730. package/dist/numerical/engine-registry.js.map +1 -1
  731. package/dist/numerical/errors.d.ts +7 -3
  732. package/dist/numerical/errors.d.ts.map +1 -1
  733. package/dist/numerical/errors.js +5 -5
  734. package/dist/numerical/errors.js.map +1 -1
  735. package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -1
  736. package/dist/numerical/evaluator-uncertainty.js +19 -2
  737. package/dist/numerical/evaluator-uncertainty.js.map +1 -1
  738. package/dist/numerical/formula-contract.d.ts +63 -7
  739. package/dist/numerical/formula-contract.d.ts.map +1 -1
  740. package/dist/numerical/formula-contract.js +61 -42
  741. package/dist/numerical/formula-contract.js.map +1 -1
  742. package/dist/numerical/formula-dimension.d.ts +8 -7
  743. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  744. package/dist/numerical/formula-dimension.js +58 -36
  745. package/dist/numerical/formula-dimension.js.map +1 -1
  746. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  747. package/dist/numerical/formula-mathts.js +5 -2
  748. package/dist/numerical/formula-mathts.js.map +1 -1
  749. package/dist/numerical/formula-registry.d.ts +13 -3
  750. package/dist/numerical/formula-registry.d.ts.map +1 -1
  751. package/dist/numerical/formula-registry.js +7 -2
  752. package/dist/numerical/formula-registry.js.map +1 -1
  753. package/dist/numerical/geodesic-integrator.js.map +1 -1
  754. package/dist/numerical/geometrized.js.map +1 -1
  755. package/dist/numerical/gl4-integrator.d.ts +28 -27
  756. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  757. package/dist/numerical/gl4-integrator.js +41 -42
  758. package/dist/numerical/gl4-integrator.js.map +1 -1
  759. package/dist/numerical/grid-field.js.map +1 -1
  760. package/dist/numerical/index.js.map +1 -1
  761. package/dist/numerical/input-validation.d.ts +3 -6
  762. package/dist/numerical/input-validation.d.ts.map +1 -1
  763. package/dist/numerical/input-validation.js +4 -8
  764. package/dist/numerical/input-validation.js.map +1 -1
  765. package/dist/numerical/killing.d.ts +8 -5
  766. package/dist/numerical/killing.d.ts.map +1 -1
  767. package/dist/numerical/killing.js.map +1 -1
  768. package/dist/numerical/klein-gordon.js.map +1 -1
  769. package/dist/numerical/kretschmann.js.map +1 -1
  770. package/dist/numerical/lowering-utils.js.map +1 -1
  771. package/dist/numerical/lowering.d.ts.map +1 -1
  772. package/dist/numerical/lowering.js +7 -17
  773. package/dist/numerical/lowering.js.map +1 -1
  774. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  775. package/dist/numerical/mathts-engine.js +11 -6
  776. package/dist/numerical/mathts-engine.js.map +1 -1
  777. package/dist/numerical/metric-inverse.js.map +1 -1
  778. package/dist/numerical/null-ic.js.map +1 -1
  779. package/dist/numerical/null-ray-integrator.js +4 -4
  780. package/dist/numerical/null-ray-integrator.js.map +1 -1
  781. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  782. package/dist/numerical/pderiv.d.ts.map +1 -1
  783. package/dist/numerical/pderiv.js +9 -2
  784. package/dist/numerical/pderiv.js.map +1 -1
  785. package/dist/numerical/perihelion-finder.js.map +1 -1
  786. package/dist/numerical/quadrature.d.ts +5 -2
  787. package/dist/numerical/quadrature.d.ts.map +1 -1
  788. package/dist/numerical/quadrature.js +20 -3
  789. package/dist/numerical/quadrature.js.map +1 -1
  790. package/dist/numerical/spacetime-metrics.d.ts +13 -19
  791. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  792. package/dist/numerical/spacetime-metrics.js +126 -248
  793. package/dist/numerical/spacetime-metrics.js.map +1 -1
  794. package/dist/numerical/strides.js.map +1 -1
  795. package/dist/numerical/tensor-engine.d.ts +9 -5
  796. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  797. package/dist/numerical/tensor-engine.js.map +1 -1
  798. package/dist/numerical/types.js.map +1 -1
  799. package/dist/numerical/weyl-lowering.js.map +1 -1
  800. package/dist/relations/category.js.map +1 -1
  801. package/dist/relations/composition-table.d.ts +4 -4
  802. package/dist/relations/composition-table.js +4 -4
  803. package/dist/relations/composition-table.js.map +1 -1
  804. package/dist/relations/conventions.js.map +1 -1
  805. package/dist/relations/domain-regimes.js.map +1 -1
  806. package/dist/relations/regime-registration.js.map +1 -1
  807. package/dist/relations/regime-vocabularies.js.map +1 -1
  808. package/dist/relations/regime.d.ts +18 -8
  809. package/dist/relations/regime.d.ts.map +1 -1
  810. package/dist/relations/regime.js +26 -14
  811. package/dist/relations/regime.js.map +1 -1
  812. package/dist/relations/types.d.ts +18 -5
  813. package/dist/relations/types.d.ts.map +1 -1
  814. package/dist/relations/types.js +5 -3
  815. package/dist/relations/types.js.map +1 -1
  816. package/package.json +10 -14
  817. package/dist/bridges/registry.d.ts +0 -60
  818. package/dist/bridges/registry.d.ts.map +0 -1
  819. package/dist/bridges/registry.js +0 -87
  820. package/dist/bridges/registry.js.map +0 -1
  821. package/dist/cli/poster-source.d.ts +0 -154
  822. package/dist/cli/poster-source.d.ts.map +0 -1
  823. package/dist/cli/poster-source.js +0 -184
  824. package/dist/cli/poster-source.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"caller-table.js","sourceRoot":"","sources":["../../src/bridges/caller-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"caller-table.js","sourceRoot":"","sources":["../../src/bridges/caller-table.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * A confrontation that exists only when the caller supplies a measured table\n * and a running procedure. A refusal names the missing inputs and carries no\n * residual. It does not change a catalog status.\n *\n * @module bridges/caller-table\n */\n\nimport { residualInSigma, type ConfrontationOutcome } from './observations/types.js';\n\n/** One row of a caller-supplied measured table. @public */\nexport interface MeasuredCouplingRow {\n readonly scale: number;\n readonly value: number;\n readonly uncertainty: number;\n readonly citation: string;\n}\n\n/** What a running procedure must state before it can be compared. @public */\nexport interface RunningProcedureRecord {\n readonly loopOrder: string;\n readonly flavorThresholds: string;\n}\n\n/** A caller-supplied running procedure. @public */\nexport interface RunningProcedure {\n readonly record: RunningProcedureRecord;\n at(scale: number): number;\n}\n\n/** What a caller may pass. Absent fields are missing inputs, not defaults. @public */\nexport interface CallerTableRequest {\n readonly table?: readonly MeasuredCouplingRow[] | null;\n readonly procedure?:\n | {\n readonly record?: Partial<RunningProcedureRecord> | null;\n readonly at?: (scale: number) => number;\n }\n | ((scale: number) => number)\n | null;\n}\n\n/** Refusal: the named inputs are missing, and no residual was computed. @public */\nexport interface CallerTableRefusal {\n readonly status: 'refused';\n readonly missing: readonly string[];\n}\n\n/** A comparison that uses a value outcome. @public */\nexport interface CallerTableHit {\n readonly status: 'confronted';\n readonly outcome: Extract<ConfrontationOutcome, { kind: 'value' }>;\n}\n\n/** A caller-table confrontation either refuses or reports a value outcome. @public */\nexport type CallerTableResult = CallerTableRefusal | CallerTableHit;\n\nfunction blank(value: string | undefined): boolean {\n return value === undefined || value.trim() === '';\n}\n\nfunction finite(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction missingInputs(request: CallerTableRequest): string[] {\n const missing: string[] = [];\n if (request.table == null || request.table.length === 0) missing.push('table');\n const procedure = request.procedure;\n if (procedure == null) {\n missing.push('running procedure');\n return missing;\n }\n if (typeof procedure === 'function') {\n missing.push('loop order', 'flavor thresholds');\n return missing;\n }\n const record = procedure.record;\n if (blank(record?.loopOrder)) missing.push('loop order');\n if (blank(record?.flavorThresholds)) missing.push('flavor thresholds');\n if (typeof procedure.at !== 'function') missing.push('running procedure');\n return missing;\n}\n\nfunction rowProblems(table: readonly MeasuredCouplingRow[]): string[] {\n const missing: string[] = [];\n for (const row of table) {\n if (!finite(row.scale) && !missing.includes('scale')) missing.push('scale');\n if (!finite(row.value) && !missing.includes('value')) missing.push('value');\n if (!(finite(row.uncertainty) && row.uncertainty > 0) && !missing.includes('uncertainty')) {\n missing.push('uncertainty');\n }\n if ((typeof row.citation !== 'string' || row.citation.trim() === '') && !missing.includes('citation')) {\n missing.push('citation');\n }\n }\n return missing;\n}\n\n/**\n * Confront a caller-supplied table. Otherwise refuse. The refusal does not\n * read or write the catalog. Several rows collapse to the row with the\n * largest absolute residual in units of its uncertainty.\n *\n * @public\n */\nexport function requestCallerTableConfrontation(request: CallerTableRequest = {}): CallerTableResult {\n const missing = missingInputs(request);\n if (missing.length > 0) return { status: 'refused', missing };\n const table = request.table ?? [];\n const rowMissing = rowProblems(table);\n if (rowMissing.length > 0) return { status: 'refused', missing: rowMissing };\n\n const procedure = request.procedure as RunningProcedure;\n let reported: { predicted: number; observed: number; sigma: number; citation: string; residual: number } | undefined;\n for (const row of table) {\n const predicted = procedure.at(row.scale);\n if (!finite(predicted)) return { status: 'refused', missing: ['procedure output'] };\n const residual = residualInSigma(predicted, row.value, row.uncertainty);\n if (reported === undefined || residual > reported.residual) {\n reported = {\n predicted,\n observed: row.value,\n sigma: row.uncertainty,\n citation: row.citation,\n residual,\n };\n }\n }\n if (reported === undefined) return { status: 'refused', missing: ['table'] };\n\n return {\n status: 'confronted',\n outcome: {\n kind: 'value',\n predicted: reported.predicted,\n observed: reported.observed,\n sigma: reported.sigma,\n residualInSigma: reported.residual,\n withinObserved: reported.residual <= 1,\n units: 'caller-supplied',\n provenance: {\n citation: reported.citation,\n year: 0,\n retrieved: 'not supplied',\n note: 'The caller table states a citation and does not state a publication year or a retrieval date. The year 0 is not a year of record.',\n },\n preprocessing: { state: 'not-recorded' },\n independence: { state: 'not-recorded' },\n },\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"carrier-sign.d.ts","sourceRoot":"","sources":["../../src/bridges/carrier-sign.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAmBD;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAOD,4EAA4E;AAC5E,UAAU,eAAe;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,EACjD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACxC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,IAAI,CAAC,EAAE,eAAe,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsCxB"}
1
+ {"version":3,"file":"carrier-sign.d.ts","sourceRoot":"","sources":["../../src/bridges/carrier-sign.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAsBD;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAOD,4EAA4E;AAC5E,UAAU,eAAe;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,EACjD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACxC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,IAAI,CAAC,EAAE,eAAe,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsCxB"}
@@ -26,11 +26,16 @@ function sameCarrierSign(a, b) {
26
26
  }
27
27
  /**
28
28
  * Reject opposite signs. `left` and `right` are the names in the message.
29
- * Only {@link applyCarrierSignPolicy} calls this.
29
+ * A value that is not a finite number has no sign to compare, so it is
30
+ * refused as such rather than passed. Only {@link applyCarrierSignPolicy}
31
+ * calls this.
30
32
  */
31
33
  function assertSameCarrierSign(a, b, left, right) {
32
- const opposite = Number.isFinite(a) && Number.isFinite(b) ? !sameCarrierSign(a, b) : a * b < 0;
33
- if (opposite)
34
+ if (!Number.isFinite(a))
35
+ throw new RangeError(`${left} must be a finite number to carry a sign, got ${a}`);
36
+ if (!Number.isFinite(b))
37
+ throw new RangeError(`${right} must be a finite number to carry a sign, got ${b}`);
38
+ if (!sameCarrierSign(a, b))
34
39
  throw new CarrierSignError(`${left} and ${right} must have the same sign`);
35
40
  }
36
41
  /** How many times the sign policy has run since the last reset. The once-check reads this. */
@@ -1 +1 @@
1
- {"version":3,"file":"carrier-sign.js","sourceRoot":"","sources":["../../src/bridges/carrier-sign.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,0EAA0E;AAC1E,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY,EAAE,KAAa;IAC9E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/F,IAAI,QAAQ;QAAE,MAAM,IAAI,gBAAgB,CAAC,GAAG,IAAI,QAAQ,KAAK,0BAA0B,CAAC,CAAC;AAC3F,CAAC;AAED,8FAA8F;AAC9F,IAAI,sBAAsB,GAAG,CAAC,CAAC;AAE/B;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACzC,sBAAsB,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED,gFAAgF;AAChF,SAAS,kBAAkB,CAAC,GAAW;IACrC,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAUD;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAiD,EACjD,MAAwC,EACxC,IAAyB,EACzB,IAAsB;IAEtB,sBAAsB,IAAI,CAAC,CAAC;IAC5B,IAAI,IAAwB,CAAC;IAC7B,IAAI,KAAyB,CAAC;IAC9B,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QACd,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;QACf,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;SAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAC3C,IACE,IAAI,KAAK,SAAS;YAClB,KAAK,KAAK,SAAS;YACnB,kBAAkB,CAAC,IAAI,CAAC;YACxB,kBAAkB,CAAC,KAAK,CAAC,EACzB,CAAC;YACD,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;YACrB,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACnC,QAAQ,GAAG,QAAQ,CAAC;YACpB,SAAS,GAAG,kBAAkB,CAAC;QACjC,CAAC;IACH,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACrF,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACnC,IAAI,GAAuC,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAAE,SAAS;QACvE,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,GAAG,IAAI,MAAM,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"carrier-sign.js","sourceRoot":"","sources":["../../src/bridges/carrier-sign.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * One sign rule for a positive transport coefficient built from a carrier\n * charge and a mobility.\n *\n * `D = μ k_B T / q` and `σ = n q μ` are positive when μ and q have the same\n * sign, and zero when either is zero. Opposite signs are not a negative\n * diffusivity or a negative conductivity. A Hall coefficient and a cyclotron\n * frequency are odd in charge alone; this rule does not apply to them.\n *\n * @module bridges/carrier-sign\n */\n\n/**\n * Thrown when a positive transport coefficient would come out negative\n * because the carrier charge and the mobility have opposite signs.\n * @public\n */\nexport class CarrierSignError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'CarrierSignError';\n }\n}\n\n/** True when the product is positive or zero, including a zero factor. */\nfunction sameCarrierSign(a: number, b: number): boolean {\n return a * b >= 0;\n}\n\n/**\n * Reject opposite signs. `left` and `right` are the names in the message.\n * A value that is not a finite number has no sign to compare, so it is\n * refused as such rather than passed. Only {@link applyCarrierSignPolicy}\n * calls this.\n */\nfunction assertSameCarrierSign(a: number, b: number, left: string, right: string): void {\n if (!Number.isFinite(a)) throw new RangeError(`${left} must be a finite number to carry a sign, got ${a}`);\n if (!Number.isFinite(b)) throw new RangeError(`${right} must be a finite number to carry a sign, got ${b}`);\n if (!sameCarrierSign(a, b)) throw new CarrierSignError(`${left} and ${right} must have the same sign`);\n}\n\n/** How many times the sign policy has run since the last reset. The once-check reads this. */\nlet carrierSignPolicyCalls = 0;\n\n/**\n * Reset the sign-policy call count. The once-check reads the count after this.\n * @internal\n */\nexport function resetCarrierSignPolicyCalls(): void {\n carrierSignPolicyCalls = 0;\n}\n\n/**\n * How many times the sign policy has run since the last reset.\n * @internal\n */\nexport function readCarrierSignPolicyCalls(): number {\n return carrierSignPolicyCalls;\n}\n\n/** An integer exponent whose absolute value is odd. A half power is not odd. */\nfunction oddIntegerExponent(exp: number): boolean {\n return Number.isInteger(exp) && Math.abs(exp) % 2 === 1;\n}\n\n/** A same-sign pair whose names are not `charge` and `carrier-mobility`. */\ninterface CarrierSignPair {\n readonly a: number;\n readonly b: number;\n readonly left: string;\n readonly right: string;\n}\n\n/**\n * One sign policy. A monomial odd in both `charge` and `carrier-mobility`\n * rejects opposite signs. `pair` is that same check for a formula whose\n * names are not those two (the Einstein relation). Inputs the scalar AST\n * is even in are replaced by their absolute values. The math underneath\n * does not apply this again.\n * @internal\n */\nexport function applyCarrierSignPolicy(\n monomial: Readonly<Record<string, number>> | null,\n inputs: Readonly<Record<string, number>>,\n even: ReadonlySet<string>,\n pair?: CarrierSignPair,\n): Record<string, number> {\n carrierSignPolicyCalls += 1;\n let left: number | undefined;\n let right: number | undefined;\n let leftName = '';\n let rightName = '';\n if (pair !== undefined) {\n left = pair.a;\n right = pair.b;\n leftName = pair.left;\n rightName = pair.right;\n } else if (monomial !== null) {\n const qExp = monomial.charge;\n const muExp = monomial['carrier-mobility'];\n if (\n qExp !== undefined &&\n muExp !== undefined &&\n oddIntegerExponent(qExp) &&\n oddIntegerExponent(muExp)\n ) {\n left = inputs.charge;\n right = inputs['carrier-mobility'];\n leftName = 'charge';\n rightName = 'carrier-mobility';\n }\n }\n if (left !== undefined && right !== undefined && leftName !== '' && rightName !== '') {\n assertSameCarrierSign(left, right, leftName, rightName);\n }\n if (even.size === 0) return inputs;\n let out: Record<string, number> | undefined;\n for (const name of even) {\n const value = inputs[name];\n if (value === undefined || Object.is(value, Math.abs(value))) continue;\n out ??= { ...inputs };\n out[name] = Math.abs(value);\n }\n return out ?? inputs;\n}\n"]}
@@ -1,8 +1,12 @@
1
1
  /**
2
- * Catalog adapter: ingests the 44-entry `BRIDGE_EQUATIONS` array into
3
- * the v0.7-p2 sparse semantic catalog as `BridgeCell` values.
2
+ * Catalog adapter: ingests `BRIDGE_EQUATIONS` into the v0.7-p2 sparse
3
+ * semantic catalog as `BridgeCell` values.
4
4
  *
5
- * Phase 3 of v0.7 Proposal 2 (Sparse Semantic Catalog).
5
+ * A cell needs a `PhysicalScale` on at least one end, and the catalog's
6
+ * `bridges` tuple names a scale on only part of the rows (the rest name a
7
+ * field such as `chemistry` or `plasma`). The adapter submits the rows it
8
+ * can place and lists every other row in `unsubmitted`, with the reason in
9
+ * `skipped`; it never guesses a scale. Phase 3 of v0.7 Proposal 2.
6
10
  *
7
11
  * Two entry points:
8
12
  *
@@ -64,6 +68,11 @@ export interface CatalogIngestionReport {
64
68
  readonly info: ReadonlyArray<FluxDiagnostic>;
65
69
  /** Bridge IDs the adapter filtered out before submission. */
66
70
  readonly unsubmitted: ReadonlyArray<number>;
71
+ /** Why each unsubmitted id was not placed: the tuple labels that name no `PhysicalScale`. */
72
+ readonly skipped: ReadonlyArray<{
73
+ readonly bridgeId: number;
74
+ readonly reason: string;
75
+ }>;
67
76
  /** Cells that PASSED Rule 1 and would be submitted (or were). */
68
77
  readonly submitted: ReadonlyArray<BridgeCell>;
69
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-adapter.d.ts","sourceRoot":"","sources":["../../src/bridges/catalog-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACX,MAAM,uBAAuB,CAAC;AAU/B;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAC/C;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,SAAgB,MAAM,EAAE,sBAAsB,CAAC;IAE/C,YAAY,MAAM,EAAE,sBAAsB,EAQzC;CACF;AAuDD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAC1C,aAAa,CAAC,UAAU,CAAC,CAO3B;AA+GD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAC1C,sBAAsB,CAuCxB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAC1C,sBAAsB,CASxB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,sBAAsB,GAC7B,UAAU,CAYZ"}
1
+ {"version":3,"file":"catalog-adapter.d.ts","sourceRoot":"","sources":["../../src/bridges/catalog-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACX,MAAM,uBAAuB,CAAC;AAU/B;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAC7C,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxF,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAC/C;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,SAAgB,MAAM,EAAE,sBAAsB,CAAC;IAE/C,YAAY,MAAM,EAAE,sBAAsB,EAQzC;CACF;AAoDD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAC1C,aAAa,CAAC,UAAU,CAAC,CAO3B;AA+GD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAC1C,sBAAsB,CA8CxB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAC1C,sBAAsB,CASxB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,sBAAsB,GAC7B,UAAU,CAYZ"}
@@ -1,8 +1,12 @@
1
1
  /**
2
- * Catalog adapter: ingests the 44-entry `BRIDGE_EQUATIONS` array into
3
- * the v0.7-p2 sparse semantic catalog as `BridgeCell` values.
2
+ * Catalog adapter: ingests `BRIDGE_EQUATIONS` into the v0.7-p2 sparse
3
+ * semantic catalog as `BridgeCell` values.
4
4
  *
5
- * Phase 3 of v0.7 Proposal 2 (Sparse Semantic Catalog).
5
+ * A cell needs a `PhysicalScale` on at least one end, and the catalog's
6
+ * `bridges` tuple names a scale on only part of the rows (the rest name a
7
+ * field such as `chemistry` or `plasma`). The adapter submits the rows it
8
+ * can place and lists every other row in `unsubmitted`, with the reason in
9
+ * `skipped`; it never guesses a scale. Phase 3 of v0.7 Proposal 2.
6
10
  *
7
11
  * Two entry points:
8
12
  *
@@ -64,11 +68,8 @@ function statusToCellConfidence(status) {
64
68
  case 'speculative': return 'speculative';
65
69
  case 'highly-speculative': return 'highly-speculative';
66
70
  case 'invalid':
67
- // 'invalid' catalog entries should not become cells; the
68
- // adapter callers filter on isActiveStatus first. If we ever
69
- // reach here, downgrade to 'highly-speculative' (safest).
70
- return 'highly-speculative';
71
- default:
71
+ // An invalid row is not a claim; the catalog carries none (the status
72
+ // distribution test pins 0). A cell built from one is the weakest grade.
72
73
  return 'highly-speculative';
73
74
  }
74
75
  }
@@ -223,13 +224,19 @@ export function scanCatalog(entries) {
223
224
  const warnings = [];
224
225
  const info = [];
225
226
  const unsubmitted = [];
227
+ const skipped = [];
226
228
  const submitted = [];
227
229
  for (const entry of entries) {
228
230
  const diagnostic = checkDimensionalConsistency(entry);
229
231
  const cell = entryToBridgeCell(entry);
230
232
  const submittable = cell !== null;
231
- if (!submittable)
233
+ if (!submittable) {
232
234
  unsubmitted.push(entry.id);
235
+ skipped.push({
236
+ bridgeId: entry.id,
237
+ reason: `bridges tuple [${entry.bridges.join(', ')}] names no PhysicalScale (quantum, mesoscopic, classical, cosmological) on either end`,
238
+ });
239
+ }
233
240
  else
234
241
  submitted.push(cell);
235
242
  if (diagnostic) {
@@ -258,6 +265,7 @@ export function scanCatalog(entries) {
258
265
  warnings,
259
266
  info,
260
267
  unsubmitted,
268
+ skipped,
261
269
  submitted,
262
270
  };
263
271
  }
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-adapter.js","sourceRoot":"","sources":["../../src/bridges/catalog-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog-adapter.js","sourceRoot":"","sources":["../../src/bridges/catalog-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Catalog adapter: ingests `BRIDGE_EQUATIONS` into the v0.7-p2 sparse\n * semantic catalog as `BridgeCell` values.\n *\n * A cell needs a `PhysicalScale` on at least one end, and the catalog's\n * `bridges` tuple names a scale on only part of the rows (the rest name a\n * field such as `chemistry` or `plasma`). The adapter submits the rows it\n * can place and lists every other row in `unsubmitted`, with the reason in\n * `skipped`; it never guesses a scale. Phase 3 of v0.7 Proposal 2.\n *\n * Two entry points:\n *\n * `catalogToCells(entries)` — pure mapping `BridgeEquationEntry[]\n * → BridgeCell[]`. Filters out entries that would fail the\n * legacy `addBridge` validation (e.g. `bridges: ['unknown',\n * 'unknown']` collapses to identical empty `source`/`target`).\n *\n * `scanCatalog(entries)` — best-effort variant: builds candidates,\n * runs Rule 1 (dimensional consistency), returns a\n * `CatalogIngestionReport` without throwing. Caller decides\n * what to do with the diagnostics.\n *\n * `ingestCatalog(tensor, entries)` — strict variant: two-pass\n * collect-then-commit (Decision #11). If Rule 1 reports any\n * errors, throws `CatalogIngestionError(report)` and the\n * tensor is untouched. Otherwise calls `tensor.addCell` for\n * each candidate.\n *\n * Rule 1 (Dimensional Consistency) operates on\n * `BridgeEquationEntry`, NOT on `Cell` (Decision #3, resolves\n * Adam-V3). It reads `entry.dimensional_signature` directly.\n *\n * @module bridges/catalog-adapter\n */\n\nimport type {\n BridgeEquationEntry,\n BridgeEquationStatus,\n} from './index.js';\nimport type { BridgeCell, CellConfidence } from '../core/cell.js';\nimport type { UniversalTensor } from '../core/tensor.js';\nimport type {\n FluxDiagnostic,\n FluxReport,\n} from '../core/flux-rules.js';\nimport { EXPECTED_DIMENSION_BY_BRIDGE } from '../dimensional/bridge-check.js';\nimport { catalogEntries } from './catalog-load.js';\nimport { format } from '../dimensional/algebra.js';\nimport type { PhysicalScale, TensorIndices } from '../core/types.js';\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\n/**\n * Per-entry summary of the catalog ingestion attempt.\n *\n * @public\n */\nexport interface CatalogEntryStatus {\n readonly bridgeId: number;\n readonly name: string;\n /** True iff the entry would be (or was) submitted to `addCell`. */\n readonly submitted: boolean;\n /**\n * Diagnostics from Rule 1 (dimensional consistency) for this entry.\n * `undefined` means the entry passed Rule 1 cleanly.\n */\n readonly diagnostic?: FluxDiagnostic;\n}\n\n/**\n * Aggregate report returned by `scanCatalog` / `ingestCatalog`. The\n * diagnostics surface Rule 1 results; `unsubmitted` lists entries\n * that the adapter filtered out before submission (typically\n * `'unknown' → 'unknown'` bridges that would fail the legacy\n * `addBridge` source !== target check).\n *\n * @public\n */\nexport interface CatalogIngestionReport {\n readonly entries: ReadonlyArray<CatalogEntryStatus>;\n readonly errors: ReadonlyArray<FluxDiagnostic>;\n readonly warnings: ReadonlyArray<FluxDiagnostic>;\n readonly info: ReadonlyArray<FluxDiagnostic>;\n /** Bridge IDs the adapter filtered out before submission. */\n readonly unsubmitted: ReadonlyArray<number>;\n /** Why each unsubmitted id was not placed: the tuple labels that name no `PhysicalScale`. */\n readonly skipped: ReadonlyArray<{ readonly bridgeId: number; readonly reason: string }>;\n /** Cells that PASSED Rule 1 and would be submitted (or were). */\n readonly submitted: ReadonlyArray<BridgeCell>;\n}\n\n/**\n * Thrown by `ingestCatalog` when Rule 1 reports any errors. The\n * caller can inspect `report` for per-entry diagnostics.\n *\n * @public\n */\nexport class CatalogIngestionError extends Error {\n public readonly report: CatalogIngestionReport;\n\n constructor(report: CatalogIngestionReport) {\n super(\n `CatalogIngestionError: ${report.errors.length} dimensional-consistency ` +\n `error(s) in ${report.entries.length} catalog entries. ` +\n `First error: ${report.errors[0]?.message ?? '(none)'}`,\n );\n this.name = 'CatalogIngestionError';\n this.report = report;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal: confidence + scale mapping\n// ---------------------------------------------------------------------------\n\n/**\n * Map the catalog's `BridgeEquationStatus` string vocabulary onto\n * the `CellConfidence` vocabulary used by `BridgeCell`. The two\n * vocabularies are nearly aligned — only the `'invalid'` arm differs\n * (catalog allows it; CellConfidence excludes it per the design).\n *\n * @internal\n */\nfunction statusToCellConfidence(status: BridgeEquationStatus): CellConfidence {\n switch (status) {\n case 'established': return 'established';\n case 'speculative': return 'speculative';\n case 'highly-speculative': return 'highly-speculative';\n case 'invalid':\n // An invalid row is not a claim; the catalog carries none (the status\n // distribution test pins 0). A cell built from one is the weakest grade.\n return 'highly-speculative';\n }\n}\n\n/**\n * Translate a free-form catalog `bridges` axis label (e.g.\n * `'classical'`, `'quantum'`, `'unknown'`) to a `PhysicalScale`\n * value or `undefined`. The four-element `PhysicalScale` union is\n * exhaustive; anything else (including the `'unknown'` sentinel)\n * maps to `undefined` — making `source`/`target` an empty\n * `TensorIndices` whose serialized key is `''`.\n *\n * @internal\n */\nfunction labelToScale(label: string): PhysicalScale | undefined {\n switch (label) {\n case 'quantum':\n case 'mesoscopic':\n case 'classical':\n case 'cosmological':\n return label;\n default:\n return undefined;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Mapping: BridgeEquationEntry → BridgeCell\n// ---------------------------------------------------------------------------\n\n/**\n * Pure mapper from `BridgeEquationEntry` (legacy catalog shape) to\n * `BridgeCell` (v0.7 typed Cell variant). Filters out entries whose\n * `bridges: [from, to]` collapses to an identical source/target\n * (typically `['unknown', 'unknown']`) — those would fail the\n * legacy `addBridge` validation. The filtering decision is surfaced\n * via the `unsubmitted` array in `CatalogIngestionReport`.\n *\n * @public\n */\nexport function catalogToCells(\n entries: ReadonlyArray<BridgeEquationEntry>,\n): ReadonlyArray<BridgeCell> {\n const out: BridgeCell[] = [];\n for (const entry of entries) {\n const cell = entryToBridgeCell(entry);\n if (cell !== null) out.push(cell);\n }\n return out;\n}\n\n/**\n * Internal: build a `BridgeCell` from a single entry, returning\n * `null` if the entry is filterable (identical source/target after\n * label translation).\n *\n * @internal\n */\nfunction entryToBridgeCell(entry: BridgeEquationEntry): BridgeCell | null {\n const [fromLabel, toLabel] = entry.bridges;\n const fromScale = labelToScale(fromLabel);\n const toScale = labelToScale(toLabel);\n const source: TensorIndices = fromScale ? { scale: fromScale } : {};\n const target: TensorIndices = toScale ? { scale: toScale } : {};\n\n // Filter out entries whose source and target are both empty (the\n // 'unknown' -> 'unknown' case at HEAD). Legacy `addBridge` rejects\n // them with a TypeError; the adapter surfaces them via\n // `unsubmitted`.\n if (\n source.scale === undefined &&\n target.scale === undefined\n ) {\n return null;\n }\n\n // Equation: use formula_latex if non-empty, else a placeholder.\n const equation = entry.formula_latex && entry.formula_latex.length > 0\n ? entry.formula_latex\n : `(no LaTeX provided for BE-${entry.id})`;\n\n return {\n kind: 'bridge',\n id: `BE-${entry.id}`,\n name: entry.name,\n equation,\n confidence: statusToCellConfidence(entry.status),\n source,\n target,\n validated: entry.status === 'established',\n description: entry.notes.length > 0 ? entry.notes.slice(0, 200) : entry.name,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Rule 1 — Dimensional Consistency (ERROR tier per Decision #3)\n// ---------------------------------------------------------------------------\n\n/**\n * Fires per-entry. Returns one of:\n * - undefined (no diagnostic): entry passes Rule 1.\n * - 'error' diagnostic: dimensional_signature is structurally null,\n * or non-null but does not match the expected dimension from\n * `EXPECTED_DIMENSION_BY_BRIDGE`.\n * - 'info' diagnostic: no expected entry for this bridge ID; the\n * message states how many catalog rows the table covers, counted\n * when it is printed. We can't enforce, but we record the gap.\n *\n * @internal\n */\nfunction checkDimensionalConsistency(\n entry: BridgeEquationEntry,\n): FluxDiagnostic | undefined {\n const cellId = `BE-${entry.id}`;\n // Structural null check (Eve-R1 lesson — at HEAD this fires zero\n // times; future catalog edits that introduce a null will surface\n // immediately).\n if (entry.dimensional_signature === null) {\n return {\n severity: 'error',\n ruleName: 'dimensional-consistency',\n cellId,\n message:\n `BE-${entry.id} ('${entry.name}') has dimensional_signature: ` +\n `null. Every active catalog entry must declare a structural ` +\n `dimensional signature.`,\n };\n }\n // Field-vs-expected comparison.\n const expected = EXPECTED_DIMENSION_BY_BRIDGE.get(entry.id);\n if (expected === undefined) {\n return {\n severity: 'info',\n ruleName: 'dimensional-consistency',\n cellId,\n message:\n `BE-${entry.id} ('${entry.name}') has no entry in ` +\n `EXPECTED_DIMENSION_BY_BRIDGE (${EXPECTED_DIMENSION_BY_BRIDGE.size} of ${catalogEntries().length} catalog rows covered); ` +\n `dimensional-consistency check skipped for this entry.`,\n };\n }\n const expectedFormatted = format(expected);\n if (entry.dimensional_signature !== expectedFormatted) {\n return {\n severity: 'error',\n ruleName: 'dimensional-consistency',\n cellId,\n message:\n `BE-${entry.id} ('${entry.name}') has dimensional_signature ` +\n `'${entry.dimensional_signature}' but EXPECTED_DIMENSION_BY_BRIDGE ` +\n `says '${expectedFormatted}'. Catalog and expectation disagree.`,\n };\n }\n return undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Public entry points\n// ---------------------------------------------------------------------------\n\n/**\n * Best-effort catalog scan: builds candidates, runs Rule 1 per\n * entry, returns a `CatalogIngestionReport`. Does NOT mutate any\n * tensor and does NOT throw.\n *\n * @public\n */\nexport function scanCatalog(\n entries: ReadonlyArray<BridgeEquationEntry>,\n): CatalogIngestionReport {\n const statuses: CatalogEntryStatus[] = [];\n const errors: FluxDiagnostic[] = [];\n const warnings: FluxDiagnostic[] = [];\n const info: FluxDiagnostic[] = [];\n const unsubmitted: number[] = [];\n const skipped: { bridgeId: number; reason: string }[] = [];\n const submitted: BridgeCell[] = [];\n\n for (const entry of entries) {\n const diagnostic = checkDimensionalConsistency(entry);\n const cell = entryToBridgeCell(entry);\n const submittable = cell !== null;\n if (!submittable) {\n unsubmitted.push(entry.id);\n skipped.push({\n bridgeId: entry.id,\n reason: `bridges tuple [${entry.bridges.join(', ')}] names no PhysicalScale (quantum, mesoscopic, classical, cosmological) on either end`,\n });\n } else submitted.push(cell);\n\n if (diagnostic) {\n switch (diagnostic.severity) {\n case 'error': errors.push(diagnostic); break;\n case 'warning': warnings.push(diagnostic); break;\n case 'info': info.push(diagnostic); break;\n }\n }\n\n statuses.push({\n bridgeId: entry.id,\n name: entry.name,\n submitted: submittable,\n ...(diagnostic ? { diagnostic } : {}),\n });\n }\n\n return {\n entries: statuses,\n errors,\n warnings,\n info,\n unsubmitted,\n skipped,\n submitted,\n };\n}\n\n/**\n * Strict catalog ingestion: two-pass collect-then-commit per\n * Decision #11. If Rule 1 reports any errors, throws\n * `CatalogIngestionError(report)` and the tensor is untouched.\n * Otherwise calls `tensor.addCell` for each filterable candidate.\n *\n * @public\n */\nexport function ingestCatalog(\n tensor: UniversalTensor,\n entries: ReadonlyArray<BridgeEquationEntry>,\n): CatalogIngestionReport {\n const report = scanCatalog(entries);\n if (report.errors.length > 0) {\n throw new CatalogIngestionError(report);\n }\n for (const cell of report.submitted) {\n tensor.addCell(cell);\n }\n return report;\n}\n\n/**\n * Bridge-level FluxReport summary, derived from a\n * `CatalogIngestionReport`. Used by consumers that want the\n * flux-rule report shape rather than the catalog-specific report.\n *\n * @public\n */\nexport function ingestionReportToFluxReport(\n report: CatalogIngestionReport,\n): FluxReport {\n const diagnostics = [\n ...report.errors,\n ...report.warnings,\n ...report.info,\n ];\n return {\n diagnostics,\n errorCount: report.errors.length,\n warningCount: report.warnings.length,\n infoCount: report.info.length,\n };\n}\n"]}
@@ -4,7 +4,15 @@
4
4
  *
5
5
  * @module bridges/catalog-load
6
6
  */
7
- import type { CatalogConfrontation, CatalogEntry, CatalogEvaluator, CatalogFile, CatalogRelation } from './catalog-types.js';
7
+ import type { CatalogConfrontation, CatalogEntry, CatalogEvaluator, CatalogFile, CatalogFileRecord, CatalogRejection, CatalogRelation } from './catalog-types.js';
8
+ /**
9
+ * The loaded catalog from a file record: the records are in id order, each
10
+ * outcome is checked on its kind, each relation takes its row's status as its
11
+ * confidence, then the sign clauses its evaluator parameters state. The
12
+ * production catalog is this function on `data/bridge-catalog.json`.
13
+ * @internal
14
+ */
15
+ export declare function loadCatalog(file: CatalogFileRecord): CatalogFile;
8
16
  /** The loaded catalog. */
9
17
  export declare function bridgeCatalog(): CatalogFile;
10
18
  /** Catalog rows, in file order. */
@@ -13,8 +21,10 @@ export declare function catalogEntries(): readonly CatalogEntry[];
13
21
  export declare function catalogRelations(): readonly CatalogRelation[];
14
22
  /** Evaluator input contracts, in file order. */
15
23
  export declare function catalogEvaluators(): readonly CatalogEvaluator[];
16
- /** Confrontations, in file order. */
24
+ /** Confrontations, in file order; one per catalog id. */
17
25
  export declare function catalogConfrontations(): readonly CatalogConfrontation[];
26
+ /** The negative catalog, in file order. */
27
+ export declare function catalogRejections(): readonly CatalogRejection[];
18
28
  /** The row for a catalog id, or undefined. */
19
29
  export declare function catalogEntry(id: number): CatalogEntry | undefined;
20
30
  /** Relations whose catalog id is `id`, in file order. */
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-load.d.ts","sourceRoot":"","sources":["../../src/bridges/catalog-load.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAEhB,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AA2D5B,0BAA0B;AAC1B,wBAAgB,aAAa,IAAI,WAAW,CAE3C;AAED,mCAAmC;AACnC,wBAAgB,cAAc,IAAI,SAAS,YAAY,EAAE,CAExD;AAED,mCAAmC;AACnC,wBAAgB,gBAAgB,IAAI,SAAS,eAAe,EAAE,CAE7D;AAED,gDAAgD;AAChD,wBAAgB,iBAAiB,IAAI,SAAS,gBAAgB,EAAE,CAE/D;AAED,qCAAqC;AACrC,wBAAgB,qBAAqB,IAAI,SAAS,oBAAoB,EAAE,CAEvE;AAWD,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEjE;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CAE1E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAGvE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAY/D;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD"}
1
+ {"version":3,"file":"catalog-load.d.ts","sourceRoot":"","sources":["../../src/bridges/catalog-load.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,oBAAoB,EAEpB,YAAY,EACZ,gBAAgB,EAEhB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AA6M5B;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,WAAW,CAGhE;AAID,0BAA0B;AAC1B,wBAAgB,aAAa,IAAI,WAAW,CAE3C;AAED,mCAAmC;AACnC,wBAAgB,cAAc,IAAI,SAAS,YAAY,EAAE,CAExD;AAED,mCAAmC;AACnC,wBAAgB,gBAAgB,IAAI,SAAS,eAAe,EAAE,CAE7D;AAED,gDAAgD;AAChD,wBAAgB,iBAAiB,IAAI,SAAS,gBAAgB,EAAE,CAE/D;AAED,yDAAyD;AACzD,wBAAgB,qBAAqB,IAAI,SAAS,oBAAoB,EAAE,CAEvE;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,IAAI,SAAS,gBAAgB,EAAE,CAE/D;AAWD,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEjE;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CAE1E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAGvE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAY/D;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -4,18 +4,165 @@
4
4
  *
5
5
  * @module bridges/catalog-load
6
6
  */
7
+ import { residualInSigma } from './observations/types.js';
7
8
  import { checkedDataFile } from '../core/data-file.js';
8
9
  /**
9
10
  * `data/bridge-catalog.json`, checked against `data/bridge-catalog.schema.json`
10
11
  * (every record's `type`, the relation, evaluator, parameter and confrontation
11
- * shapes) and against what a schema cannot state: `count` is the number of entries.
12
+ * shapes). What a schema cannot state is checked by {@link loadCatalog}.
12
13
  */
13
14
  function loadFile() {
14
- const file = checkedDataFile('bridge-catalog.json');
15
- if (file.count !== file.entries.length) {
16
- throw new Error(`data/bridge-catalog.json: count is ${file.count} but the file has ${file.entries.length} entries`);
15
+ return checkedDataFile('bridge-catalog.json');
16
+ }
17
+ /** Records in ascending id order; a duplicate or a disordered id is refused. */
18
+ function checkOrder(file) {
19
+ for (let i = 1; i < file.entries.length; i += 1) {
20
+ const previous = file.entries[i - 1].id;
21
+ const current = file.entries[i].id;
22
+ if (current <= previous) {
23
+ throw new Error(`data/bridge-catalog.json: entry ${current} follows entry ${previous}; records are in ascending id order`);
24
+ }
25
+ }
26
+ const seen = new Set();
27
+ for (const row of file.confrontations) {
28
+ if (seen.has(row.catalogId))
29
+ throw new Error(`data/bridge-catalog.json: catalog id ${row.catalogId} has two confrontations`);
30
+ seen.add(row.catalogId);
31
+ }
32
+ const rejected = new Set();
33
+ const ids = new Set(file.entries.map((entry) => entry.id));
34
+ for (const row of file.rejections) {
35
+ if (!ids.has(row.catalogId))
36
+ throw new Error(`data/bridge-catalog.json: rejection ${row.catalogId} names no catalog row`);
37
+ if (rejected.has(row.catalogId))
38
+ throw new Error(`data/bridge-catalog.json: catalog id ${row.catalogId} is rejected twice`);
39
+ rejected.add(row.catalogId);
40
+ }
41
+ }
42
+ const number = (o, key, where) => {
43
+ const v = o[key];
44
+ if (typeof v !== 'number' || !Number.isFinite(v))
45
+ throw new Error(`${where}: outcome.${key} must be a finite number`);
46
+ return v;
47
+ };
48
+ const boolean = (o, key, where) => {
49
+ const v = o[key];
50
+ if (typeof v !== 'boolean')
51
+ throw new Error(`${where}: outcome.${key} must be a boolean`);
52
+ return v;
53
+ };
54
+ /**
55
+ * The outcome of one confrontation, checked arm by arm on its `kind`. The
56
+ * schema states the shared fields (`kind`, `units`, `provenance`, the data
57
+ * handling); the fields each arm must carry are checked here, so the loaded
58
+ * record is a {@link ConfrontationOutcome} by inspection, not by assertion.
59
+ */
60
+ /** A stored number is written to a few significant digits; it agrees when it rounds to the computed one within 1e-3 relative (or absolute near zero). */
61
+ function agreesToStoredPrecision(stored, computed) {
62
+ return Math.abs(stored - computed) <= 1e-3 * Math.max(1, Math.abs(computed));
63
+ }
64
+ /** True when `holds` contains `clause` as a whole clause, not as the tail of a longer name. */
65
+ function holdsStatesClause(holds, clause) {
66
+ let from = 0;
67
+ for (;;) {
68
+ const at = holds.indexOf(clause, from);
69
+ if (at < 0)
70
+ return false;
71
+ const before = at === 0 ? ' ' : holds[at - 1];
72
+ if (!/[A-Za-z0-9_-]/.test(before))
73
+ return true;
74
+ from = at + 1;
75
+ }
76
+ }
77
+ function readOutcome(row) {
78
+ const where = `data/bridge-catalog.json: confrontation ${row.catalogId}`;
79
+ const o = row.outcome;
80
+ if (o['kind'] !== row.kind)
81
+ throw new Error(`${where}: outcome.kind ${String(o['kind'])} is not the record kind ${row.kind}`);
82
+ switch (row.kind) {
83
+ case 'value': {
84
+ // The verdict is derived from the numbers, never read as stored (AGENTS law 1): a stored
85
+ // residual or verdict that disagrees with |predicted − observed|/σ is refused.
86
+ const predicted = number(o, 'predicted', where);
87
+ const observed = number(o, 'observed', where);
88
+ const sigma = number(o, 'sigma', where);
89
+ const stored = number(o, 'residualInSigma', where);
90
+ const computed = residualInSigma(predicted, observed, sigma);
91
+ if (!agreesToStoredPrecision(stored, computed)) {
92
+ throw new Error(`${where}: outcome.residualInSigma ${stored} is not |predicted − observed|/sigma = ${computed}`);
93
+ }
94
+ if (boolean(o, 'withinObserved', where) !== computed <= 1) {
95
+ throw new Error(`${where}: outcome.withinObserved must be residualInSigma <= 1 (${computed})`);
96
+ }
97
+ break;
98
+ }
99
+ case 'upper-bound': {
100
+ const predicted = number(o, 'predicted', where);
101
+ const bound = number(o, 'bound', where);
102
+ // `predictedIs` picks the comparison (`observations/types.ts`): a point is satisfied at or
103
+ // below the observed limit; an encoded bound (|x| ≤ predicted) when the limit lies inside it.
104
+ const encodedBound = o['predictedIs'] === 'encoded-bound';
105
+ const expected = encodedBound ? bound <= predicted : predicted <= bound;
106
+ if (boolean(o, 'satisfied', where) !== expected) {
107
+ throw new Error(`${where}: outcome.satisfied must be ${encodedBound ? 'bound <= predicted' : 'predicted <= bound'} (${predicted} vs ${bound})`);
108
+ }
109
+ break;
110
+ }
111
+ case 'consistency': {
112
+ const predicted = number(o, 'predicted', where);
113
+ const approaches = number(o, 'approaches', where);
114
+ const gap = number(o, 'fractionalGap', where);
115
+ if (o['fractionalGapIs'] !== 'agreement-bound' && o['fractionalGapIs'] !== 'observed-difference') {
116
+ throw new Error(`${where}: outcome.fractionalGapIs must name what fractionalGap holds`);
117
+ }
118
+ // An agreement bound is the record's stated tolerance; an observed difference is derived.
119
+ if (o['fractionalGapIs'] === 'observed-difference' && predicted !== 0) {
120
+ const computed = (approaches - predicted) / predicted;
121
+ if (!agreesToStoredPrecision(gap, computed)) {
122
+ throw new Error(`${where}: outcome.fractionalGap ${gap} is not (approaches − predicted)/predicted = ${computed}`);
123
+ }
124
+ }
125
+ break;
126
+ }
127
+ case 'table':
128
+ if (!Array.isArray(o['rows']))
129
+ throw new Error(`${where}: outcome.rows must be an array`);
130
+ break;
17
131
  }
18
- return file;
132
+ return o;
133
+ }
134
+ function narrowConfrontations(file) {
135
+ return file.confrontations.map((row) => ({ ...row, outcome: readOutcome(row) }));
136
+ }
137
+ /**
138
+ * A relation's confidence is its catalog row's `status`. The row is the one
139
+ * owner, so the file may not store a confidence beside a catalog id; a
140
+ * relation with no row stores its own. A row that is `invalid` has no
141
+ * relation to evaluate.
142
+ */
143
+ function deriveConfidence(file) {
144
+ const entries = new Map(file.entries.map((entry) => [entry.id, entry]));
145
+ const confrontations = narrowConfrontations(file);
146
+ const relations = file.relations.map((relation) => {
147
+ if (relation.catalogId === null) {
148
+ if (relation.confidence === undefined) {
149
+ throw new Error(`data/bridge-catalog.json: relation ${relation.id} has no catalog row and no confidence`);
150
+ }
151
+ return { ...relation, confidence: relation.confidence };
152
+ }
153
+ if (relation.confidence !== undefined) {
154
+ throw new Error(`data/bridge-catalog.json: relation ${relation.id} stores a confidence; the row's status is the owner`);
155
+ }
156
+ const entry = entries.get(relation.catalogId);
157
+ if (entry === undefined) {
158
+ throw new Error(`data/bridge-catalog.json: relation ${relation.id} names an unknown catalog id ${relation.catalogId}`);
159
+ }
160
+ if (entry.status === 'invalid') {
161
+ throw new Error(`data/bridge-catalog.json: relation ${relation.id} has a closed form but its row is invalid`);
162
+ }
163
+ return { ...relation, confidence: entry.status };
164
+ });
165
+ return { ...file, relations, confrontations };
19
166
  }
20
167
  /**
21
168
  * The validity clause a parameter's sign states, in the relation's own source
@@ -49,7 +196,8 @@ function deriveDomains(file) {
49
196
  if (source === undefined)
50
197
  continue;
51
198
  const clause = signClause(parameter, source);
52
- if (clause !== undefined && !relation.holds.includes(clause))
199
+ // A whole-clause match: `radius > 0` is not already stated by `near-radius > 0`.
200
+ if (clause !== undefined && !holdsStatesClause(relation.holds, clause))
53
201
  clauses.push(clause);
54
202
  }
55
203
  if (clauses.length === 0)
@@ -63,7 +211,18 @@ function deriveDomains(file) {
63
211
  });
64
212
  return { ...file, relations };
65
213
  }
66
- const CATALOG = deriveDomains(loadFile());
214
+ /**
215
+ * The loaded catalog from a file record: the records are in id order, each
216
+ * outcome is checked on its kind, each relation takes its row's status as its
217
+ * confidence, then the sign clauses its evaluator parameters state. The
218
+ * production catalog is this function on `data/bridge-catalog.json`.
219
+ * @internal
220
+ */
221
+ export function loadCatalog(file) {
222
+ checkOrder(file);
223
+ return deriveDomains(deriveConfidence(file));
224
+ }
225
+ const CATALOG = loadCatalog(loadFile());
67
226
  /** The loaded catalog. */
68
227
  export function bridgeCatalog() {
69
228
  return CATALOG;
@@ -80,10 +239,14 @@ export function catalogRelations() {
80
239
  export function catalogEvaluators() {
81
240
  return CATALOG.evaluators;
82
241
  }
83
- /** Confrontations, in file order. */
242
+ /** Confrontations, in file order; one per catalog id. */
84
243
  export function catalogConfrontations() {
85
244
  return CATALOG.confrontations;
86
245
  }
246
+ /** The negative catalog, in file order. */
247
+ export function catalogRejections() {
248
+ return CATALOG.rejections;
249
+ }
87
250
  const ENTRY_BY_ID = new Map(CATALOG.entries.map((entry) => [entry.id, entry]));
88
251
  const RELATIONS_BY_CATALOG = new Map();
89
252
  for (const relation of CATALOG.relations) {
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-load.js","sourceRoot":"","sources":["../../src/bridges/catalog-load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog-load.js","sourceRoot":"","sources":["../../src/bridges/catalog-load.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The catalog loader. This module is the only place that parses a bridge id\n * out of text. Everywhere else reads the loaded records.\n *\n * @module bridges/catalog-load\n */\n\nimport { residualInSigma } from './observations/types.js';\nimport { checkedDataFile } from '../core/data-file.js';\nimport type {\n CatalogConfrontation,\n CatalogConfrontationRecord,\n CatalogEntry,\n CatalogEvaluator,\n CatalogEvaluatorParameter,\n CatalogFile,\n CatalogFileRecord,\n CatalogRejection,\n CatalogRelation,\n} from './catalog-types.js';\nimport type { ConfrontationOutcome } from './observations/types.js';\n\n/**\n * `data/bridge-catalog.json`, checked against `data/bridge-catalog.schema.json`\n * (every record's `type`, the relation, evaluator, parameter and confrontation\n * shapes). What a schema cannot state is checked by {@link loadCatalog}.\n */\nfunction loadFile(): CatalogFileRecord {\n return checkedDataFile('bridge-catalog.json') as CatalogFileRecord;\n}\n\n/** Records in ascending id order; a duplicate or a disordered id is refused. */\nfunction checkOrder(file: CatalogFileRecord): void {\n for (let i = 1; i < file.entries.length; i += 1) {\n const previous = file.entries[i - 1]!.id;\n const current = file.entries[i]!.id;\n if (current <= previous) {\n throw new Error(`data/bridge-catalog.json: entry ${current} follows entry ${previous}; records are in ascending id order`);\n }\n }\n const seen = new Set<number>();\n for (const row of file.confrontations) {\n if (seen.has(row.catalogId)) throw new Error(`data/bridge-catalog.json: catalog id ${row.catalogId} has two confrontations`);\n seen.add(row.catalogId);\n }\n const rejected = new Set<number>();\n const ids = new Set(file.entries.map((entry) => entry.id));\n for (const row of file.rejections) {\n if (!ids.has(row.catalogId)) throw new Error(`data/bridge-catalog.json: rejection ${row.catalogId} names no catalog row`);\n if (rejected.has(row.catalogId)) throw new Error(`data/bridge-catalog.json: catalog id ${row.catalogId} is rejected twice`);\n rejected.add(row.catalogId);\n }\n}\n\nconst number = (o: Readonly<Record<string, unknown>>, key: string, where: string): number => {\n const v = o[key];\n if (typeof v !== 'number' || !Number.isFinite(v)) throw new Error(`${where}: outcome.${key} must be a finite number`);\n return v;\n};\nconst boolean = (o: Readonly<Record<string, unknown>>, key: string, where: string): boolean => {\n const v = o[key];\n if (typeof v !== 'boolean') throw new Error(`${where}: outcome.${key} must be a boolean`);\n return v;\n};\n\n/**\n * The outcome of one confrontation, checked arm by arm on its `kind`. The\n * schema states the shared fields (`kind`, `units`, `provenance`, the data\n * handling); the fields each arm must carry are checked here, so the loaded\n * record is a {@link ConfrontationOutcome} by inspection, not by assertion.\n */\n/** A stored number is written to a few significant digits; it agrees when it rounds to the computed one within 1e-3 relative (or absolute near zero). */\nfunction agreesToStoredPrecision(stored: number, computed: number): boolean {\n return Math.abs(stored - computed) <= 1e-3 * Math.max(1, Math.abs(computed));\n}\n\n/** True when `holds` contains `clause` as a whole clause, not as the tail of a longer name. */\nfunction holdsStatesClause(holds: string, clause: string): boolean {\n let from = 0;\n for (;;) {\n const at = holds.indexOf(clause, from);\n if (at < 0) return false;\n const before = at === 0 ? ' ' : holds[at - 1]!;\n if (!/[A-Za-z0-9_-]/.test(before)) return true;\n from = at + 1;\n }\n}\n\nfunction readOutcome(row: CatalogConfrontationRecord): ConfrontationOutcome {\n const where = `data/bridge-catalog.json: confrontation ${row.catalogId}`;\n const o = row.outcome;\n if (o['kind'] !== row.kind) throw new Error(`${where}: outcome.kind ${String(o['kind'])} is not the record kind ${row.kind}`);\n switch (row.kind) {\n case 'value': {\n // The verdict is derived from the numbers, never read as stored (AGENTS law 1): a stored\n // residual or verdict that disagrees with |predicted − observed|/σ is refused.\n const predicted = number(o, 'predicted', where);\n const observed = number(o, 'observed', where);\n const sigma = number(o, 'sigma', where);\n const stored = number(o, 'residualInSigma', where);\n const computed = residualInSigma(predicted, observed, sigma);\n if (!agreesToStoredPrecision(stored, computed)) {\n throw new Error(`${where}: outcome.residualInSigma ${stored} is not |predicted − observed|/sigma = ${computed}`);\n }\n if (boolean(o, 'withinObserved', where) !== computed <= 1) {\n throw new Error(`${where}: outcome.withinObserved must be residualInSigma <= 1 (${computed})`);\n }\n break;\n }\n case 'upper-bound': {\n const predicted = number(o, 'predicted', where);\n const bound = number(o, 'bound', where);\n // `predictedIs` picks the comparison (`observations/types.ts`): a point is satisfied at or\n // below the observed limit; an encoded bound (|x| ≤ predicted) when the limit lies inside it.\n const encodedBound = o['predictedIs'] === 'encoded-bound';\n const expected = encodedBound ? bound <= predicted : predicted <= bound;\n if (boolean(o, 'satisfied', where) !== expected) {\n throw new Error(\n `${where}: outcome.satisfied must be ${encodedBound ? 'bound <= predicted' : 'predicted <= bound'} (${predicted} vs ${bound})`,\n );\n }\n break;\n }\n case 'consistency': {\n const predicted = number(o, 'predicted', where);\n const approaches = number(o, 'approaches', where);\n const gap = number(o, 'fractionalGap', where);\n if (o['fractionalGapIs'] !== 'agreement-bound' && o['fractionalGapIs'] !== 'observed-difference') {\n throw new Error(`${where}: outcome.fractionalGapIs must name what fractionalGap holds`);\n }\n // An agreement bound is the record's stated tolerance; an observed difference is derived.\n if (o['fractionalGapIs'] === 'observed-difference' && predicted !== 0) {\n const computed = (approaches - predicted) / predicted;\n if (!agreesToStoredPrecision(gap, computed)) {\n throw new Error(`${where}: outcome.fractionalGap ${gap} is not (approaches − predicted)/predicted = ${computed}`);\n }\n }\n break;\n }\n case 'table':\n if (!Array.isArray(o['rows'])) throw new Error(`${where}: outcome.rows must be an array`);\n break;\n }\n return o as unknown as ConfrontationOutcome;\n}\n\nfunction narrowConfrontations(file: CatalogFileRecord): readonly CatalogConfrontation[] {\n return file.confrontations.map((row) => ({ ...row, outcome: readOutcome(row) }));\n}\n\n/**\n * A relation's confidence is its catalog row's `status`. The row is the one\n * owner, so the file may not store a confidence beside a catalog id; a\n * relation with no row stores its own. A row that is `invalid` has no\n * relation to evaluate.\n */\nfunction deriveConfidence(file: CatalogFileRecord): CatalogFile {\n const entries = new Map(file.entries.map((entry) => [entry.id, entry]));\n const confrontations = narrowConfrontations(file);\n const relations = file.relations.map((relation): CatalogRelation => {\n if (relation.catalogId === null) {\n if (relation.confidence === undefined) {\n throw new Error(`data/bridge-catalog.json: relation ${relation.id} has no catalog row and no confidence`);\n }\n return { ...relation, confidence: relation.confidence };\n }\n if (relation.confidence !== undefined) {\n throw new Error(`data/bridge-catalog.json: relation ${relation.id} stores a confidence; the row's status is the owner`);\n }\n const entry = entries.get(relation.catalogId);\n if (entry === undefined) {\n throw new Error(`data/bridge-catalog.json: relation ${relation.id} names an unknown catalog id ${relation.catalogId}`);\n }\n if (entry.status === 'invalid') {\n throw new Error(`data/bridge-catalog.json: relation ${relation.id} has a closed form but its row is invalid`);\n }\n return { ...relation, confidence: entry.status };\n });\n return { ...file, relations, confrontations };\n}\n\n/**\n * The validity clause a parameter's sign states, in the relation's own source\n * name. An absolute temperature is nonnegative unless the parameter says `any`.\n */\nfunction signClause(parameter: CatalogEvaluatorParameter, source: string): string | undefined {\n const sign = parameter.sign ?? (parameter.temperature === 'absolute' ? 'nonnegative' : undefined);\n if (sign === 'positive') return `${source} > 0`;\n if (sign === 'nonnegative') return `${source} >= 0`;\n return undefined;\n}\n\n/**\n * Add the sign clauses the evaluator parameters state to the relation they\n * evaluate. The validity domain is derived from the flags, so a new bridge\n * that flags its inputs cannot leave the domain behind. A clause the record\n * already states is not repeated.\n */\nfunction deriveDomains(file: CatalogFile): CatalogFile {\n const relations = file.relations.map((relation) => {\n if (relation.catalogId === null) return relation;\n const evaluator = file.evaluators.find((row) => row.catalogId === relation.catalogId);\n if (evaluator === undefined) return relation;\n const clauses: string[] = [];\n for (const parameter of evaluator.parameters) {\n const source =\n relation.sources.find((name) => name === parameter.key || (relation.aliases[name] ?? []).includes(parameter.key)) ??\n (relation.sources.includes(parameter.quantity) ? parameter.quantity : undefined);\n if (source === undefined) continue;\n const clause = signClause(parameter, source);\n // A whole-clause match: `radius > 0` is not already stated by `near-radius > 0`.\n if (clause !== undefined && !holdsStatesClause(relation.holds, clause)) clauses.push(clause);\n }\n if (clauses.length === 0) return relation;\n const stated = relation.holds.trim() === 'true' ? '' : `${relation.holds} and `;\n return {\n ...relation,\n holds: `${stated}${clauses.join(' and ')}`,\n domain: relation.domain === '' ? clauses.join(', ') : `${relation.domain}; ${clauses.join(', ')}`,\n };\n });\n return { ...file, relations };\n}\n\n/**\n * The loaded catalog from a file record: the records are in id order, each\n * outcome is checked on its kind, each relation takes its row's status as its\n * confidence, then the sign clauses its evaluator parameters state. The\n * production catalog is this function on `data/bridge-catalog.json`.\n * @internal\n */\nexport function loadCatalog(file: CatalogFileRecord): CatalogFile {\n checkOrder(file);\n return deriveDomains(deriveConfidence(file));\n}\n\nconst CATALOG = loadCatalog(loadFile());\n\n/** The loaded catalog. */\nexport function bridgeCatalog(): CatalogFile {\n return CATALOG;\n}\n\n/** Catalog rows, in file order. */\nexport function catalogEntries(): readonly CatalogEntry[] {\n return CATALOG.entries;\n}\n\n/** Closed forms, in file order. */\nexport function catalogRelations(): readonly CatalogRelation[] {\n return CATALOG.relations;\n}\n\n/** Evaluator input contracts, in file order. */\nexport function catalogEvaluators(): readonly CatalogEvaluator[] {\n return CATALOG.evaluators;\n}\n\n/** Confrontations, in file order; one per catalog id. */\nexport function catalogConfrontations(): readonly CatalogConfrontation[] {\n return CATALOG.confrontations;\n}\n\n/** The negative catalog, in file order. */\nexport function catalogRejections(): readonly CatalogRejection[] {\n return CATALOG.rejections;\n}\n\nconst ENTRY_BY_ID = new Map(CATALOG.entries.map((entry) => [entry.id, entry]));\nconst RELATIONS_BY_CATALOG = new Map<number, CatalogRelation[]>();\nfor (const relation of CATALOG.relations) {\n if (relation.catalogId === null) continue;\n const list = RELATIONS_BY_CATALOG.get(relation.catalogId);\n if (list === undefined) RELATIONS_BY_CATALOG.set(relation.catalogId, [relation]);\n else list.push(relation);\n}\n\n/** The row for a catalog id, or undefined. */\nexport function catalogEntry(id: number): CatalogEntry | undefined {\n return ENTRY_BY_ID.get(id);\n}\n\n/** Relations whose catalog id is `id`, in file order. */\nexport function relationsForCatalog(id: number): readonly CatalogRelation[] {\n return RELATIONS_BY_CATALOG.get(id) ?? [];\n}\n\n/**\n * The relation a numeric catalog id evaluates. The graph id `be-<id>` wins\n * when several relations share the id. Otherwise the first relation does.\n */\nexport function primaryRelation(id: number): CatalogRelation | undefined {\n const rows = relationsForCatalog(id);\n return rows.find((row) => row.id === `be-${id}`) ?? rows[0];\n}\n\n/**\n * The catalog number a piece of text names (`42`, `be-42`, `BE-42`), or\n * undefined when it names none (an atlas id, a canonical id, a quantity).\n * The one place a bridge id is read from text; {@link parseBridgeId} throws\n * where this returns undefined.\n */\nexport function catalogIdNumber(raw: string): number | undefined {\n const match = /^(?:be-)?(\\d+)$/i.exec(raw.trim());\n return match === null ? undefined : Number(match[1]);\n}\n\n/**\n * Parse a catalog id from a number or from text the caller typed.\n * Accepts `42`, `be-42`, and `BE-42`. This is the only such parser.\n */\nexport function parseBridgeId(bridgeId: number | string): number {\n if (typeof bridgeId === 'number') {\n if (!Number.isInteger(bridgeId)) {\n throw new RangeError(`parseBridgeId: ${bridgeId} is not an integer catalog id`);\n }\n return bridgeId;\n }\n const id = catalogIdNumber(bridgeId);\n if (id === undefined) {\n throw new TypeError(`parseBridgeId: '${bridgeId}' is not a catalog id`);\n }\n return id;\n}\n\n/** Graph id for a catalog number: the stable key, not a switch. */\nexport function catalogEdgeKey(id: number): string {\n return `be-${id}`;\n}\n"]}