universal-physics-tensor 8.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 (916) hide show
  1. package/README.md +26 -21
  2. package/data/atlas/atlas.json +75 -64
  3. package/data/atlas/atlas.jsonld +1 -1
  4. package/data/atlas/diffusion.json +23 -22
  5. package/data/atlas/oscillators.json +21 -16
  6. package/data/atlas/waves.json +33 -28
  7. package/data/bridge-catalog.json +1356 -1791
  8. package/data/bridge-catalog.schema.json +789 -46
  9. package/data/quantities.json +280 -234
  10. package/data/quantities.schema.json +52 -0
  11. package/data/schemas/atlas-record.v0.json +184 -46
  12. package/data/units.json +1178 -0
  13. package/data/units.schema.json +124 -0
  14. package/dist/atlas/applicability.d.ts.map +1 -1
  15. package/dist/atlas/applicability.js +14 -3
  16. package/dist/atlas/applicability.js.map +1 -1
  17. package/dist/atlas/association.d.ts +1 -1
  18. package/dist/atlas/association.js.map +1 -1
  19. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
  20. package/dist/atlas/benchmark/backend-shapes.js +5 -1
  21. package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
  22. package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
  23. package/dist/atlas/benchmark/baselines.js +8 -0
  24. package/dist/atlas/benchmark/baselines.js.map +1 -1
  25. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
  26. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  27. package/dist/atlas/benchmark/hybrid-retrieval.js +16 -12
  28. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  29. package/dist/atlas/benchmark/leakage.js.map +1 -1
  30. package/dist/atlas/benchmark/loader.js.map +1 -1
  31. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
  32. package/dist/atlas/benchmark/run-atlas.js +14 -2
  33. package/dist/atlas/benchmark/run-atlas.js.map +1 -1
  34. package/dist/atlas/benchmark/stats.d.ts +1 -1
  35. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  36. package/dist/atlas/benchmark/stats.js +1 -1
  37. package/dist/atlas/benchmark/stats.js.map +1 -1
  38. package/dist/atlas/benchmark/study.js.map +1 -1
  39. package/dist/atlas/benchmark/types.js.map +1 -1
  40. package/dist/atlas/bridge-record.d.ts +4 -4
  41. package/dist/atlas/bridge-record.d.ts.map +1 -1
  42. package/dist/atlas/bridge-record.js +6 -6
  43. package/dist/atlas/bridge-record.js.map +1 -1
  44. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  45. package/dist/atlas/chain-pipeline.d.ts +0 -11
  46. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  47. package/dist/atlas/chain-pipeline.js +5 -16
  48. package/dist/atlas/chain-pipeline.js.map +1 -1
  49. package/dist/atlas/composition-table.js.map +1 -1
  50. package/dist/atlas/conventions.js.map +1 -1
  51. package/dist/atlas/coverage.d.ts +2 -2
  52. package/dist/atlas/coverage.js.map +1 -1
  53. package/dist/atlas/derivation.js.map +1 -1
  54. package/dist/atlas/derive-evidence.d.ts +6 -4
  55. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  56. package/dist/atlas/derive-evidence.js +7 -2
  57. package/dist/atlas/derive-evidence.js.map +1 -1
  58. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  59. package/dist/atlas/diffusion/bridges-closure.js +0 -5
  60. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  61. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  62. package/dist/atlas/diffusion/bridges.js +0 -3
  63. package/dist/atlas/diffusion/bridges.js.map +1 -1
  64. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  65. package/dist/atlas/diffusion/index.d.ts +1 -1
  66. package/dist/atlas/diffusion/index.d.ts.map +1 -1
  67. package/dist/atlas/diffusion/index.js.map +1 -1
  68. package/dist/atlas/diffusion/models.js.map +1 -1
  69. package/dist/atlas/diffusion/numerics.js.map +1 -1
  70. package/dist/atlas/error-algebra.d.ts +6 -0
  71. package/dist/atlas/error-algebra.d.ts.map +1 -1
  72. package/dist/atlas/error-algebra.js +26 -0
  73. package/dist/atlas/error-algebra.js.map +1 -1
  74. package/dist/atlas/export.d.ts +18 -2
  75. package/dist/atlas/export.d.ts.map +1 -1
  76. package/dist/atlas/export.js +9 -3
  77. package/dist/atlas/export.js.map +1 -1
  78. package/dist/atlas/families.d.ts +19 -2
  79. package/dist/atlas/families.d.ts.map +1 -1
  80. package/dist/atlas/families.js +26 -3
  81. package/dist/atlas/families.js.map +1 -1
  82. package/dist/atlas/family.d.ts +27 -0
  83. package/dist/atlas/family.d.ts.map +1 -0
  84. package/dist/atlas/family.js +12 -0
  85. package/dist/atlas/family.js.map +1 -0
  86. package/dist/atlas/index.d.ts +3 -2
  87. package/dist/atlas/index.d.ts.map +1 -1
  88. package/dist/atlas/index.js +2 -1
  89. package/dist/atlas/index.js.map +1 -1
  90. package/dist/atlas/link-prediction.d.ts +1 -1
  91. package/dist/atlas/link-prediction.d.ts.map +1 -1
  92. package/dist/atlas/link-prediction.js.map +1 -1
  93. package/dist/atlas/model.js.map +1 -1
  94. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  95. package/dist/atlas/oscillators/bridges-coarse.js +0 -1
  96. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  97. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  98. package/dist/atlas/oscillators/bridges-exact.js +0 -3
  99. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  100. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  101. package/dist/atlas/oscillators/bridges-limits.js +0 -2
  102. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  103. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  104. package/dist/atlas/oscillators/index.d.ts +1 -16
  105. package/dist/atlas/oscillators/index.d.ts.map +1 -1
  106. package/dist/atlas/oscillators/index.js.map +1 -1
  107. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  108. package/dist/atlas/oscillators/models.js.map +1 -1
  109. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
  110. package/dist/atlas/oscillators/norm-transport.js.map +1 -1
  111. package/dist/atlas/oscillators/norms.js.map +1 -1
  112. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  113. package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
  114. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  115. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  116. package/dist/atlas/oscillators/rejections.js.map +1 -1
  117. package/dist/atlas/path-bound.js.map +1 -1
  118. package/dist/atlas/physjs-entries.generated.d.ts +1601 -220
  119. package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
  120. package/dist/atlas/physjs-entries.generated.js +1854 -345
  121. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  122. package/dist/atlas/physjs-ref.d.ts +151 -117
  123. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  124. package/dist/atlas/physjs-ref.js +244 -211
  125. package/dist/atlas/physjs-ref.js.map +1 -1
  126. package/dist/atlas/physjs-reviewed.d.ts +31 -0
  127. package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
  128. package/dist/atlas/physjs-reviewed.js +194 -0
  129. package/dist/atlas/physjs-reviewed.js.map +1 -0
  130. package/dist/atlas/poster/associations.js.map +1 -1
  131. package/dist/atlas/poster/derivations.js.map +1 -1
  132. package/dist/atlas/poster/statements.js.map +1 -1
  133. package/dist/atlas/proof-target.d.ts +16 -8
  134. package/dist/atlas/proof-target.d.ts.map +1 -1
  135. package/dist/atlas/proof-target.js +34 -31
  136. package/dist/atlas/proof-target.js.map +1 -1
  137. package/dist/atlas/public.d.ts +2 -1
  138. package/dist/atlas/public.d.ts.map +1 -1
  139. package/dist/atlas/public.js +2 -1
  140. package/dist/atlas/public.js.map +1 -1
  141. package/dist/atlas/regime.js.map +1 -1
  142. package/dist/atlas/serialize.d.ts +18 -12
  143. package/dist/atlas/serialize.d.ts.map +1 -1
  144. package/dist/atlas/serialize.js +28 -18
  145. package/dist/atlas/serialize.js.map +1 -1
  146. package/dist/atlas/statement.js.map +1 -1
  147. package/dist/atlas/translation-registry.js.map +1 -1
  148. package/dist/atlas/translation.js.map +1 -1
  149. package/dist/atlas/types.d.ts +9 -2
  150. package/dist/atlas/types.d.ts.map +1 -1
  151. package/dist/atlas/types.js +1 -1
  152. package/dist/atlas/types.js.map +1 -1
  153. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  154. package/dist/atlas/waves/bridges-closure.js +0 -3
  155. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  156. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  157. package/dist/atlas/waves/bridges.js +0 -4
  158. package/dist/atlas/waves/bridges.js.map +1 -1
  159. package/dist/atlas/waves/index.d.ts +1 -1
  160. package/dist/atlas/waves/index.d.ts.map +1 -1
  161. package/dist/atlas/waves/index.js.map +1 -1
  162. package/dist/atlas/waves/models.js.map +1 -1
  163. package/dist/atlas/waves/numerics.js.map +1 -1
  164. package/dist/atlas/witness-artifact.js.map +1 -1
  165. package/dist/atlas/witness-dominance.d.ts +4 -3
  166. package/dist/atlas/witness-dominance.d.ts.map +1 -1
  167. package/dist/atlas/witness-dominance.js +15 -5
  168. package/dist/atlas/witness-dominance.js.map +1 -1
  169. package/dist/atlas/witness-numeric.d.ts +8 -4
  170. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  171. package/dist/atlas/witness-numeric.js +27 -2
  172. package/dist/atlas/witness-numeric.js.map +1 -1
  173. package/dist/atlas/witness-result.d.ts +7 -1
  174. package/dist/atlas/witness-result.d.ts.map +1 -1
  175. package/dist/atlas/witness-result.js.map +1 -1
  176. package/dist/atlas/witness-specs.js.map +1 -1
  177. package/dist/atlas/witness-symbolic.js.map +1 -1
  178. package/dist/atlas/witnesses/quantum-support.js.map +1 -1
  179. package/dist/bridges/caller-table.d.ts +1 -1
  180. package/dist/bridges/caller-table.d.ts.map +1 -1
  181. package/dist/bridges/caller-table.js.map +1 -1
  182. package/dist/bridges/carrier-sign.d.ts.map +1 -1
  183. package/dist/bridges/carrier-sign.js +8 -3
  184. package/dist/bridges/carrier-sign.js.map +1 -1
  185. package/dist/bridges/catalog-adapter.d.ts +12 -3
  186. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  187. package/dist/bridges/catalog-adapter.js +22 -14
  188. package/dist/bridges/catalog-adapter.js.map +1 -1
  189. package/dist/bridges/catalog-load.d.ts +19 -2
  190. package/dist/bridges/catalog-load.d.ts.map +1 -1
  191. package/dist/bridges/catalog-load.js +233 -14
  192. package/dist/bridges/catalog-load.js.map +1 -1
  193. package/dist/bridges/catalog-types.d.ts +96 -27
  194. package/dist/bridges/catalog-types.d.ts.map +1 -1
  195. package/dist/bridges/catalog-types.js.map +1 -1
  196. package/dist/bridges/coefficient-statement.js +1 -5
  197. package/dist/bridges/coefficient-statement.js.map +1 -1
  198. package/dist/bridges/confrontation-coverage.js.map +1 -1
  199. package/dist/bridges/confrontations.d.ts +1 -1
  200. package/dist/bridges/confrontations.d.ts.map +1 -1
  201. package/dist/bridges/confrontations.js +1 -1
  202. package/dist/bridges/confrontations.js.map +1 -1
  203. package/dist/bridges/evaluation-errors.d.ts +89 -0
  204. package/dist/bridges/evaluation-errors.d.ts.map +1 -0
  205. package/dist/bridges/evaluation-errors.js +136 -0
  206. package/dist/bridges/evaluation-errors.js.map +1 -0
  207. package/dist/bridges/evaluator-inputs.d.ts +5 -3
  208. package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
  209. package/dist/bridges/evaluator-inputs.js +24 -24
  210. package/dist/bridges/evaluator-inputs.js.map +1 -1
  211. package/dist/bridges/evaluators.d.ts +48 -8
  212. package/dist/bridges/evaluators.d.ts.map +1 -1
  213. package/dist/bridges/evaluators.js +173 -38
  214. package/dist/bridges/evaluators.js.map +1 -1
  215. package/dist/bridges/expr-parse.d.ts +38 -7
  216. package/dist/bridges/expr-parse.d.ts.map +1 -1
  217. package/dist/bridges/expr-parse.js +129 -156
  218. package/dist/bridges/expr-parse.js.map +1 -1
  219. package/dist/bridges/holds.d.ts +16 -8
  220. package/dist/bridges/holds.d.ts.map +1 -1
  221. package/dist/bridges/holds.js +130 -236
  222. package/dist/bridges/holds.js.map +1 -1
  223. package/dist/bridges/index.d.ts +15 -14
  224. package/dist/bridges/index.d.ts.map +1 -1
  225. package/dist/bridges/index.js +14 -15
  226. package/dist/bridges/index.js.map +1 -1
  227. package/dist/bridges/input-contract.d.ts +65 -0
  228. package/dist/bridges/input-contract.d.ts.map +1 -0
  229. package/dist/bridges/input-contract.js +97 -0
  230. package/dist/bridges/input-contract.js.map +1 -0
  231. package/dist/bridges/membership.d.ts +5 -3
  232. package/dist/bridges/membership.d.ts.map +1 -1
  233. package/dist/bridges/membership.js +5 -6
  234. package/dist/bridges/membership.js.map +1 -1
  235. package/dist/bridges/notices.d.ts +11 -0
  236. package/dist/bridges/notices.d.ts.map +1 -0
  237. package/dist/bridges/notices.js +22 -0
  238. package/dist/bridges/notices.js.map +1 -0
  239. package/dist/bridges/observations/types.js.map +1 -1
  240. package/dist/bridges/rejected.d.ts +11 -17
  241. package/dist/bridges/rejected.d.ts.map +1 -1
  242. package/dist/bridges/rejected.js +13 -68
  243. package/dist/bridges/rejected.js.map +1 -1
  244. package/dist/bridges/relation-eval.d.ts +5 -6
  245. package/dist/bridges/relation-eval.d.ts.map +1 -1
  246. package/dist/bridges/relation-eval.js +9 -38
  247. package/dist/bridges/relation-eval.js.map +1 -1
  248. package/dist/bridges/rhs-registry.js.map +1 -1
  249. package/dist/bridges/sensitivity.d.ts +11 -3
  250. package/dist/bridges/sensitivity.d.ts.map +1 -1
  251. package/dist/bridges/sensitivity.js +24 -10
  252. package/dist/bridges/sensitivity.js.map +1 -1
  253. package/dist/bridges/tensor-index.js.map +1 -1
  254. package/dist/bridges/types.d.ts +1 -7
  255. package/dist/bridges/types.d.ts.map +1 -1
  256. package/dist/bridges/types.js +1 -4
  257. package/dist/bridges/types.js.map +1 -1
  258. package/dist/canonical/canonical-equation.d.ts +31 -0
  259. package/dist/canonical/canonical-equation.d.ts.map +1 -1
  260. package/dist/canonical/canonical-equation.js.map +1 -1
  261. package/dist/canonical/dimensional-fields.js.map +1 -1
  262. package/dist/canonical/entries/_l1-build.js.map +1 -1
  263. package/dist/canonical/entries/atomic.d.ts.map +1 -1
  264. package/dist/canonical/entries/atomic.js +11 -1
  265. package/dist/canonical/entries/atomic.js.map +1 -1
  266. package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
  267. package/dist/canonical/entries/condensed-matter.js +7 -4
  268. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  269. package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
  270. package/dist/canonical/entries/dimensional-classics.js +50 -2
  271. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  272. package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
  273. package/dist/canonical/entries/electromagnetism.js +32 -2
  274. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  275. package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
  276. package/dist/canonical/entries/fluids-waves.js +34 -0
  277. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  278. package/dist/canonical/entries/mechanics.d.ts.map +1 -1
  279. package/dist/canonical/entries/mechanics.js +24 -0
  280. package/dist/canonical/entries/mechanics.js.map +1 -1
  281. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  282. package/dist/canonical/entries/nonmonomial.js +42 -24
  283. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  284. package/dist/canonical/entries/relativity.d.ts.map +1 -1
  285. package/dist/canonical/entries/relativity.js +6 -0
  286. package/dist/canonical/entries/relativity.js.map +1 -1
  287. package/dist/canonical/entries/statistical-mechanics.d.ts.map +1 -1
  288. package/dist/canonical/entries/statistical-mechanics.js +24 -5
  289. package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
  290. package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
  291. package/dist/canonical/entries/thermo-nuclear-cosmo.js +15 -0
  292. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  293. package/dist/canonical/linkage.d.ts +29 -4
  294. package/dist/canonical/linkage.d.ts.map +1 -1
  295. package/dist/canonical/linkage.js +31 -29
  296. package/dist/canonical/linkage.js.map +1 -1
  297. package/dist/canonical/normal-form.d.ts +0 -8
  298. package/dist/canonical/normal-form.d.ts.map +1 -1
  299. package/dist/canonical/normal-form.js +17 -12
  300. package/dist/canonical/normal-form.js.map +1 -1
  301. package/dist/canonical/registry.js.map +1 -1
  302. package/dist/canonical/residual.js.map +1 -1
  303. package/dist/canonical/seed-l-layer.d.ts +7 -1
  304. package/dist/canonical/seed-l-layer.d.ts.map +1 -1
  305. package/dist/canonical/seed-l-layer.js +7 -1
  306. package/dist/canonical/seed-l-layer.js.map +1 -1
  307. package/dist/canonical/structural.d.ts +21 -0
  308. package/dist/canonical/structural.d.ts.map +1 -1
  309. package/dist/canonical/structural.js +24 -4
  310. package/dist/canonical/structural.js.map +1 -1
  311. package/dist/cases/brownian-sphere.js +4 -4
  312. package/dist/cases/brownian-sphere.js.map +1 -1
  313. package/dist/cases/damped-resonator.js +2 -2
  314. package/dist/cases/damped-resonator.js.map +1 -1
  315. package/dist/cases/index.d.ts +9 -2
  316. package/dist/cases/index.d.ts.map +1 -1
  317. package/dist/cases/index.js +26 -7
  318. package/dist/cases/index.js.map +1 -1
  319. package/dist/cases/kepler-rv.js +6 -6
  320. package/dist/cases/kepler-rv.js.map +1 -1
  321. package/dist/cases/lumped-cooling.js +1 -1
  322. package/dist/cases/lumped-cooling.js.map +1 -1
  323. package/dist/cases/quadrature.js.map +1 -1
  324. package/dist/cases/resistor-noise.js +3 -3
  325. package/dist/cases/resistor-noise.js.map +1 -1
  326. package/dist/cases/skin-depth.js.map +1 -1
  327. package/dist/cases/types.js.map +1 -1
  328. package/dist/cli/args.d.ts +7 -2
  329. package/dist/cli/args.d.ts.map +1 -1
  330. package/dist/cli/args.js +18 -2
  331. package/dist/cli/args.js.map +1 -1
  332. package/dist/cli/bindings.d.ts +13 -0
  333. package/dist/cli/bindings.d.ts.map +1 -0
  334. package/dist/cli/bindings.js +32 -0
  335. package/dist/cli/bindings.js.map +1 -0
  336. package/dist/cli/closed-form-range.js.map +1 -1
  337. package/dist/cli/command.js.map +1 -1
  338. package/dist/cli/commands/_atlas-map.d.ts +3 -3
  339. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  340. package/dist/cli/commands/_atlas-map.js +43 -18
  341. package/dist/cli/commands/_atlas-map.js.map +1 -1
  342. package/dist/cli/commands/_atlas-route.js.map +1 -1
  343. package/dist/cli/commands/_discovery-opts.d.ts +2 -1
  344. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  345. package/dist/cli/commands/_discovery-opts.js +48 -18
  346. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  347. package/dist/cli/commands/atlas.d.ts.map +1 -1
  348. package/dist/cli/commands/atlas.js +7 -12
  349. package/dist/cli/commands/atlas.js.map +1 -1
  350. package/dist/cli/commands/audit.d.ts.map +1 -1
  351. package/dist/cli/commands/audit.js +13 -21
  352. package/dist/cli/commands/audit.js.map +1 -1
  353. package/dist/cli/commands/axes.js.map +1 -1
  354. package/dist/cli/commands/candidates.d.ts.map +1 -1
  355. package/dist/cli/commands/candidates.js +16 -8
  356. package/dist/cli/commands/candidates.js.map +1 -1
  357. package/dist/cli/commands/canonical.js.map +1 -1
  358. package/dist/cli/commands/chain.js +1 -1
  359. package/dist/cli/commands/chain.js.map +1 -1
  360. package/dist/cli/commands/confront.d.ts.map +1 -1
  361. package/dist/cli/commands/confront.js +22 -14
  362. package/dist/cli/commands/confront.js.map +1 -1
  363. package/dist/cli/commands/connectors.d.ts.map +1 -1
  364. package/dist/cli/commands/connectors.js +8 -9
  365. package/dist/cli/commands/connectors.js.map +1 -1
  366. package/dist/cli/commands/coverage.js.map +1 -1
  367. package/dist/cli/commands/derive.d.ts.map +1 -1
  368. package/dist/cli/commands/derive.js +50 -26
  369. package/dist/cli/commands/derive.js.map +1 -1
  370. package/dist/cli/commands/discover.d.ts.map +1 -1
  371. package/dist/cli/commands/discover.js +18 -13
  372. package/dist/cli/commands/discover.js.map +1 -1
  373. package/dist/cli/commands/eval.d.ts.map +1 -1
  374. package/dist/cli/commands/eval.js +29 -26
  375. package/dist/cli/commands/eval.js.map +1 -1
  376. package/dist/cli/commands/evaluate.d.ts +1 -35
  377. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  378. package/dist/cli/commands/evaluate.js +99 -208
  379. package/dist/cli/commands/evaluate.js.map +1 -1
  380. package/dist/cli/commands/explain.d.ts.map +1 -1
  381. package/dist/cli/commands/explain.js +57 -45
  382. package/dist/cli/commands/explain.js.map +1 -1
  383. package/dist/cli/commands/frontier.js.map +1 -1
  384. package/dist/cli/commands/ground.d.ts.map +1 -1
  385. package/dist/cli/commands/ground.js +41 -11
  386. package/dist/cli/commands/ground.js.map +1 -1
  387. package/dist/cli/commands/index.js.map +1 -1
  388. package/dist/cli/commands/map.d.ts.map +1 -1
  389. package/dist/cli/commands/map.js +84 -92
  390. package/dist/cli/commands/map.js.map +1 -1
  391. package/dist/cli/commands/metric.d.ts.map +1 -1
  392. package/dist/cli/commands/metric.js +53 -15
  393. package/dist/cli/commands/metric.js.map +1 -1
  394. package/dist/cli/commands/path.js +4 -4
  395. package/dist/cli/commands/path.js.map +1 -1
  396. package/dist/cli/commands/predict.js.map +1 -1
  397. package/dist/cli/commands/priority.js.map +1 -1
  398. package/dist/cli/commands/probe.d.ts.map +1 -1
  399. package/dist/cli/commands/probe.js +50 -26
  400. package/dist/cli/commands/probe.js.map +1 -1
  401. package/dist/cli/commands/recover.js +1 -1
  402. package/dist/cli/commands/recover.js.map +1 -1
  403. package/dist/cli/commands/regime.d.ts +5 -4
  404. package/dist/cli/commands/regime.d.ts.map +1 -1
  405. package/dist/cli/commands/regime.js +25 -27
  406. package/dist/cli/commands/regime.js.map +1 -1
  407. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  408. package/dist/cli/commands/retrieve.js +22 -14
  409. package/dist/cli/commands/retrieve.js.map +1 -1
  410. package/dist/cli/commands/search.d.ts.map +1 -1
  411. package/dist/cli/commands/search.js +8 -4
  412. package/dist/cli/commands/search.js.map +1 -1
  413. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  414. package/dist/cli/commands/symbolic.js +14 -7
  415. package/dist/cli/commands/symbolic.js.map +1 -1
  416. package/dist/cli/commands/testplan.js +4 -4
  417. package/dist/cli/commands/testplan.js.map +1 -1
  418. package/dist/cli/conventions.d.ts +6 -7
  419. package/dist/cli/conventions.d.ts.map +1 -1
  420. package/dist/cli/conventions.js +19 -28
  421. package/dist/cli/conventions.js.map +1 -1
  422. package/dist/cli/determination.js.map +1 -1
  423. package/dist/cli/errors.js.map +1 -1
  424. package/dist/cli/euler-guard.d.ts +13 -2
  425. package/dist/cli/euler-guard.d.ts.map +1 -1
  426. package/dist/cli/euler-guard.js +17 -3
  427. package/dist/cli/euler-guard.js.map +1 -1
  428. package/dist/cli/eval-numbers.d.ts +4 -9
  429. package/dist/cli/eval-numbers.d.ts.map +1 -1
  430. package/dist/cli/eval-numbers.js +11 -41
  431. package/dist/cli/eval-numbers.js.map +1 -1
  432. package/dist/cli/expr-print.d.ts +29 -2
  433. package/dist/cli/expr-print.d.ts.map +1 -1
  434. package/dist/cli/expr-print.js +46 -2
  435. package/dist/cli/expr-print.js.map +1 -1
  436. package/dist/cli/flag-help.js.map +1 -1
  437. package/dist/cli/graphs.js.map +1 -1
  438. package/dist/cli/library-defaults.d.ts +19 -0
  439. package/dist/cli/library-defaults.d.ts.map +1 -0
  440. package/dist/cli/library-defaults.js +22 -0
  441. package/dist/cli/library-defaults.js.map +1 -0
  442. package/dist/cli/main.js +7 -3
  443. package/dist/cli/main.js.map +1 -1
  444. package/dist/cli/map-evidence.js.map +1 -1
  445. package/dist/cli/output.d.ts +3 -6
  446. package/dist/cli/output.d.ts.map +1 -1
  447. package/dist/cli/output.js.map +1 -1
  448. package/dist/cli/published-url.d.ts +2 -0
  449. package/dist/cli/published-url.d.ts.map +1 -1
  450. package/dist/cli/published-url.js +5 -0
  451. package/dist/cli/published-url.js.map +1 -1
  452. package/dist/cli/record-reach.d.ts +6 -0
  453. package/dist/cli/record-reach.d.ts.map +1 -1
  454. package/dist/cli/record-reach.js +16 -10
  455. package/dist/cli/record-reach.js.map +1 -1
  456. package/dist/cli/record-tables.d.ts +2 -1
  457. package/dist/cli/record-tables.d.ts.map +1 -1
  458. package/dist/cli/record-tables.js +8 -3
  459. package/dist/cli/record-tables.js.map +1 -1
  460. package/dist/cli/record.d.ts.map +1 -1
  461. package/dist/cli/record.js +31 -12
  462. package/dist/cli/record.js.map +1 -1
  463. package/dist/cli/search-index.d.ts +5 -0
  464. package/dist/cli/search-index.d.ts.map +1 -1
  465. package/dist/cli/search-index.js +12 -1
  466. package/dist/cli/search-index.js.map +1 -1
  467. package/dist/cli/statuses.js.map +1 -1
  468. package/dist/cli/top-level-help.js.map +1 -1
  469. package/dist/cli/version.js.map +1 -1
  470. package/dist/cli-api.d.ts +57 -18
  471. package/dist/cli-api.d.ts.map +1 -1
  472. package/dist/cli-api.js +49 -21
  473. package/dist/cli-api.js.map +1 -1
  474. package/dist/composition/adjudication.d.ts +8 -30
  475. package/dist/composition/adjudication.d.ts.map +1 -1
  476. package/dist/composition/adjudication.js +15 -67
  477. package/dist/composition/adjudication.js.map +1 -1
  478. package/dist/composition/aliases.d.ts +1 -1
  479. package/dist/composition/aliases.d.ts.map +1 -1
  480. package/dist/composition/aliases.js +10 -20
  481. package/dist/composition/aliases.js.map +1 -1
  482. package/dist/composition/audit-coverage.d.ts +2 -0
  483. package/dist/composition/audit-coverage.d.ts.map +1 -1
  484. package/dist/composition/audit-coverage.js.map +1 -1
  485. package/dist/composition/axes.d.ts +12 -0
  486. package/dist/composition/axes.d.ts.map +1 -1
  487. package/dist/composition/axes.js +18 -6
  488. package/dist/composition/axes.js.map +1 -1
  489. package/dist/composition/axis-audit.js.map +1 -1
  490. package/dist/composition/bridge-analysis.d.ts +0 -14
  491. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  492. package/dist/composition/bridge-analysis.js +66 -57
  493. package/dist/composition/bridge-analysis.js.map +1 -1
  494. package/dist/composition/bridge-prediction.d.ts +5 -1
  495. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  496. package/dist/composition/bridge-prediction.js +12 -16
  497. package/dist/composition/bridge-prediction.js.map +1 -1
  498. package/dist/composition/buckingham-filter.js.map +1 -1
  499. package/dist/composition/canonical-compare.d.ts.map +1 -1
  500. package/dist/composition/canonical-compare.js +12 -2
  501. package/dist/composition/canonical-compare.js.map +1 -1
  502. package/dist/composition/canonical-graph.d.ts +15 -18
  503. package/dist/composition/canonical-graph.d.ts.map +1 -1
  504. package/dist/composition/canonical-graph.js +59 -85
  505. package/dist/composition/canonical-graph.js.map +1 -1
  506. package/dist/composition/canonical-json.js.map +1 -1
  507. package/dist/composition/canonical-prefactors.d.ts +10 -29
  508. package/dist/composition/canonical-prefactors.d.ts.map +1 -1
  509. package/dist/composition/canonical-prefactors.js +15 -202
  510. package/dist/composition/canonical-prefactors.js.map +1 -1
  511. package/dist/composition/catalog-graph.d.ts.map +1 -1
  512. package/dist/composition/catalog-graph.js +6 -20
  513. package/dist/composition/catalog-graph.js.map +1 -1
  514. package/dist/composition/chain-candidate.d.ts +2 -0
  515. package/dist/composition/chain-candidate.d.ts.map +1 -1
  516. package/dist/composition/chain-candidate.js +2 -0
  517. package/dist/composition/chain-candidate.js.map +1 -1
  518. package/dist/composition/chain-match.js.map +1 -1
  519. package/dist/composition/chain-regime.js.map +1 -1
  520. package/dist/composition/chain-result.js.map +1 -1
  521. package/dist/composition/compose-surface.js.map +1 -1
  522. package/dist/composition/compose-symbolic.js.map +1 -1
  523. package/dist/composition/compose.d.ts.map +1 -1
  524. package/dist/composition/compose.js +154 -36
  525. package/dist/composition/compose.js.map +1 -1
  526. package/dist/composition/composition-recovery.js.map +1 -1
  527. package/dist/composition/consequence.d.ts.map +1 -1
  528. package/dist/composition/consequence.js +15 -6
  529. package/dist/composition/consequence.js.map +1 -1
  530. package/dist/composition/consistency.js.map +1 -1
  531. package/dist/composition/descriptor.d.ts +1 -1
  532. package/dist/composition/descriptor.d.ts.map +1 -1
  533. package/dist/composition/descriptor.js.map +1 -1
  534. package/dist/composition/dimension-adjacency.js.map +1 -1
  535. package/dist/composition/discovery.d.ts +67 -7
  536. package/dist/composition/discovery.d.ts.map +1 -1
  537. package/dist/composition/discovery.js +83 -23
  538. package/dist/composition/discovery.js.map +1 -1
  539. package/dist/composition/edge.d.ts +19 -22
  540. package/dist/composition/edge.d.ts.map +1 -1
  541. package/dist/composition/edge.js +25 -28
  542. package/dist/composition/edge.js.map +1 -1
  543. package/dist/composition/enumerate.d.ts +2 -2
  544. package/dist/composition/enumerate.d.ts.map +1 -1
  545. package/dist/composition/enumerate.js.map +1 -1
  546. package/dist/composition/evaluate-relation.d.ts +29 -5
  547. package/dist/composition/evaluate-relation.d.ts.map +1 -1
  548. package/dist/composition/evaluate-relation.js +100 -72
  549. package/dist/composition/evaluate-relation.js.map +1 -1
  550. package/dist/composition/explain.d.ts +14 -4
  551. package/dist/composition/explain.d.ts.map +1 -1
  552. package/dist/composition/explain.js +53 -19
  553. package/dist/composition/explain.js.map +1 -1
  554. package/dist/composition/expr-eval.d.ts.map +1 -1
  555. package/dist/composition/expr-eval.js +2 -1
  556. package/dist/composition/expr-eval.js.map +1 -1
  557. package/dist/composition/expr-simplify.d.ts.map +1 -1
  558. package/dist/composition/expr-simplify.js +9 -39
  559. package/dist/composition/expr-simplify.js.map +1 -1
  560. package/dist/composition/expr-subst.js.map +1 -1
  561. package/dist/composition/formula-shape.d.ts +9 -0
  562. package/dist/composition/formula-shape.d.ts.map +1 -1
  563. package/dist/composition/formula-shape.js +54 -0
  564. package/dist/composition/formula-shape.js.map +1 -1
  565. package/dist/composition/frontier-account.d.ts +3 -2
  566. package/dist/composition/frontier-account.d.ts.map +1 -1
  567. package/dist/composition/frontier-account.js +7 -3
  568. package/dist/composition/frontier-account.js.map +1 -1
  569. package/dist/composition/graph-viz-svg.js.map +1 -1
  570. package/dist/composition/graph-viz.js.map +1 -1
  571. package/dist/composition/grounding.js.map +1 -1
  572. package/dist/composition/identifiability.js.map +1 -1
  573. package/dist/composition/index.d.ts +9 -5
  574. package/dist/composition/index.d.ts.map +1 -1
  575. package/dist/composition/index.js +7 -4
  576. package/dist/composition/index.js.map +1 -1
  577. package/dist/composition/mathts-quiet.d.ts +28 -0
  578. package/dist/composition/mathts-quiet.d.ts.map +1 -0
  579. package/dist/composition/mathts-quiet.js +56 -0
  580. package/dist/composition/mathts-quiet.js.map +1 -0
  581. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  582. package/dist/composition/mathts-scalar-symbols.js +18 -34
  583. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  584. package/dist/composition/not-composable-seeds.d.ts +3 -1
  585. package/dist/composition/not-composable-seeds.d.ts.map +1 -1
  586. package/dist/composition/not-composable-seeds.js +2 -0
  587. package/dist/composition/not-composable-seeds.js.map +1 -1
  588. package/dist/composition/probe/backend-protocol.js.map +1 -1
  589. package/dist/composition/probe/candidate-store.js.map +1 -1
  590. package/dist/composition/probe/corpus.js.map +1 -1
  591. package/dist/composition/probe/dataset.js.map +1 -1
  592. package/dist/composition/probe/experiment-design.js.map +1 -1
  593. package/dist/composition/probe/expression-gaps.js.map +1 -1
  594. package/dist/composition/probe/falsify.d.ts +14 -3
  595. package/dist/composition/probe/falsify.d.ts.map +1 -1
  596. package/dist/composition/probe/falsify.js +14 -27
  597. package/dist/composition/probe/falsify.js.map +1 -1
  598. package/dist/composition/probe/fingerprint.js.map +1 -1
  599. package/dist/composition/probe/fit.d.ts +1 -1
  600. package/dist/composition/probe/fit.d.ts.map +1 -1
  601. package/dist/composition/probe/fit.js +2 -1
  602. package/dist/composition/probe/fit.js.map +1 -1
  603. package/dist/composition/probe/frontier.js.map +1 -1
  604. package/dist/composition/probe/generator.js.map +1 -1
  605. package/dist/composition/probe/index.d.ts +4 -2
  606. package/dist/composition/probe/index.d.ts.map +1 -1
  607. package/dist/composition/probe/index.js +4 -2
  608. package/dist/composition/probe/index.js.map +1 -1
  609. package/dist/composition/probe/limits.js.map +1 -1
  610. package/dist/composition/probe/metadata.js.map +1 -1
  611. package/dist/composition/probe/pipeline.d.ts +5 -0
  612. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  613. package/dist/composition/probe/pipeline.js +13 -6
  614. package/dist/composition/probe/pipeline.js.map +1 -1
  615. package/dist/composition/probe/problem.d.ts +8 -0
  616. package/dist/composition/probe/problem.d.ts.map +1 -1
  617. package/dist/composition/probe/problem.js +78 -12
  618. package/dist/composition/probe/problem.js.map +1 -1
  619. package/dist/composition/probe/report.js.map +1 -1
  620. package/dist/composition/probe/residual.js.map +1 -1
  621. package/dist/composition/probe/run-manifest.js +2 -2
  622. package/dist/composition/probe/run-manifest.js.map +1 -1
  623. package/dist/composition/probe/scoring.d.ts +2 -1
  624. package/dist/composition/probe/scoring.d.ts.map +1 -1
  625. package/dist/composition/probe/scoring.js +21 -7
  626. package/dist/composition/probe/scoring.js.map +1 -1
  627. package/dist/composition/probe/search-budget.js.map +1 -1
  628. package/dist/composition/probe/serialize.js.map +1 -1
  629. package/dist/composition/probe/structure.js.map +1 -1
  630. package/dist/composition/probe/study.d.ts +4 -3
  631. package/dist/composition/probe/study.d.ts.map +1 -1
  632. package/dist/composition/probe/study.js +5 -3
  633. package/dist/composition/probe/study.js.map +1 -1
  634. package/dist/composition/probe/types.d.ts +3 -1
  635. package/dist/composition/probe/types.d.ts.map +1 -1
  636. package/dist/composition/probe/types.js +2 -0
  637. package/dist/composition/probe/types.js.map +1 -1
  638. package/dist/composition/proposed-bridges.d.ts +11 -4
  639. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  640. package/dist/composition/proposed-bridges.js +14 -6
  641. package/dist/composition/proposed-bridges.js.map +1 -1
  642. package/dist/composition/quantities.d.ts +0 -4
  643. package/dist/composition/quantities.d.ts.map +1 -1
  644. package/dist/composition/quantities.js +5 -5
  645. package/dist/composition/quantities.js.map +1 -1
  646. package/dist/composition/quantity.d.ts +18 -2
  647. package/dist/composition/quantity.d.ts.map +1 -1
  648. package/dist/composition/quantity.js +35 -6
  649. package/dist/composition/quantity.js.map +1 -1
  650. package/dist/composition/representative-values.js.map +1 -1
  651. package/dist/composition/retrodiction.d.ts +18 -0
  652. package/dist/composition/retrodiction.d.ts.map +1 -1
  653. package/dist/composition/retrodiction.js +37 -7
  654. package/dist/composition/retrodiction.js.map +1 -1
  655. package/dist/composition/uncertainty.js.map +1 -1
  656. package/dist/composition/user-equation.d.ts +11 -7
  657. package/dist/composition/user-equation.d.ts.map +1 -1
  658. package/dist/composition/user-equation.js +24 -26
  659. package/dist/composition/user-equation.js.map +1 -1
  660. package/dist/core/axes-registry.d.ts +8 -5
  661. package/dist/core/axes-registry.d.ts.map +1 -1
  662. package/dist/core/axes-registry.js.map +1 -1
  663. package/dist/core/cell.js.map +1 -1
  664. package/dist/core/constants.d.ts +35 -12
  665. package/dist/core/constants.d.ts.map +1 -1
  666. package/dist/core/constants.js +46 -15
  667. package/dist/core/constants.js.map +1 -1
  668. package/dist/core/data-file.d.ts +27 -0
  669. package/dist/core/data-file.d.ts.map +1 -0
  670. package/dist/core/data-file.js +48 -0
  671. package/dist/core/data-file.js.map +1 -0
  672. package/dist/core/flux-rules.js +1 -1
  673. package/dist/core/flux-rules.js.map +1 -1
  674. package/dist/core/json-schema.d.ts +27 -0
  675. package/dist/core/json-schema.d.ts.map +1 -0
  676. package/dist/core/json-schema.js +177 -0
  677. package/dist/core/json-schema.js.map +1 -0
  678. package/dist/core/labeled-tensor.d.ts +6 -1
  679. package/dist/core/labeled-tensor.d.ts.map +1 -1
  680. package/dist/core/labeled-tensor.js +18 -8
  681. package/dist/core/labeled-tensor.js.map +1 -1
  682. package/dist/core/regime-registry.d.ts +6 -2
  683. package/dist/core/regime-registry.d.ts.map +1 -1
  684. package/dist/core/regime-registry.js.map +1 -1
  685. package/dist/core/regime-rule-install.js.map +1 -1
  686. package/dist/core/regimes-builtins.js.map +1 -1
  687. package/dist/core/tensor.d.ts +7 -4
  688. package/dist/core/tensor.d.ts.map +1 -1
  689. package/dist/core/tensor.js +40 -8
  690. package/dist/core/tensor.js.map +1 -1
  691. package/dist/core/types.d.ts +3 -2
  692. package/dist/core/types.d.ts.map +1 -1
  693. package/dist/core/types.js +16 -14
  694. package/dist/core/types.js.map +1 -1
  695. package/dist/core/universal-index.js.map +1 -1
  696. package/dist/diff/bridge-ast-gradient.d.ts +4 -5
  697. package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
  698. package/dist/diff/bridge-ast-gradient.js +16 -23
  699. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  700. package/dist/diff/bridge-gradient.d.ts +24 -80
  701. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  702. package/dist/diff/bridge-gradient.js +21 -98
  703. package/dist/diff/bridge-gradient.js.map +1 -1
  704. package/dist/diff/bridge-specs.d.ts +18 -6
  705. package/dist/diff/bridge-specs.d.ts.map +1 -1
  706. package/dist/diff/bridge-specs.js +17 -5
  707. package/dist/diff/bridge-specs.js.map +1 -1
  708. package/dist/dimensional/algebra.js.map +1 -1
  709. package/dist/dimensional/ast-builders.d.ts +5 -4
  710. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  711. package/dist/dimensional/ast-builders.js +6 -5
  712. package/dist/dimensional/ast-builders.js.map +1 -1
  713. package/dist/dimensional/ast-types.js.map +1 -1
  714. package/dist/dimensional/bridge-check.d.ts.map +1 -1
  715. package/dist/dimensional/bridge-check.js +3 -5
  716. package/dist/dimensional/bridge-check.js.map +1 -1
  717. package/dist/dimensional/buckingham.js.map +1 -1
  718. package/dist/dimensional/connection-validators.d.ts +2 -1
  719. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  720. package/dist/dimensional/connection-validators.js.map +1 -1
  721. package/dist/dimensional/connection.js.map +1 -1
  722. package/dist/dimensional/constant-rows.d.ts +54 -0
  723. package/dist/dimensional/constant-rows.d.ts.map +1 -0
  724. package/dist/dimensional/constant-rows.js +115 -0
  725. package/dist/dimensional/constant-rows.js.map +1 -0
  726. package/dist/dimensional/constants.d.ts +7 -17
  727. package/dist/dimensional/constants.d.ts.map +1 -1
  728. package/dist/dimensional/constants.js +12 -21
  729. package/dist/dimensional/constants.js.map +1 -1
  730. package/dist/dimensional/curvature-composite.js.map +1 -1
  731. package/dist/dimensional/curvature-invariants.js.map +1 -1
  732. package/dist/dimensional/curvature.js.map +1 -1
  733. package/dist/dimensional/dimension-inference.js.map +1 -1
  734. package/dist/dimensional/dimension-spec.d.ts +21 -6
  735. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  736. package/dist/dimensional/dimension-spec.js +150 -160
  737. package/dist/dimensional/dimension-spec.js.map +1 -1
  738. package/dist/dimensional/einstein-equation.js.map +1 -1
  739. package/dist/dimensional/errors.d.ts +3 -1
  740. package/dist/dimensional/errors.d.ts.map +1 -1
  741. package/dist/dimensional/errors.js +2 -2
  742. package/dist/dimensional/errors.js.map +1 -1
  743. package/dist/dimensional/exact-scale.d.ts +79 -0
  744. package/dist/dimensional/exact-scale.d.ts.map +1 -0
  745. package/dist/dimensional/exact-scale.js +222 -0
  746. package/dist/dimensional/exact-scale.js.map +1 -0
  747. package/dist/dimensional/field-equation-helpers.js.map +1 -1
  748. package/dist/dimensional/formula-names.d.ts +13 -12
  749. package/dist/dimensional/formula-names.d.ts.map +1 -1
  750. package/dist/dimensional/formula-names.js +28 -51
  751. package/dist/dimensional/formula-names.js.map +1 -1
  752. package/dist/dimensional/fresh-label.js.map +1 -1
  753. package/dist/dimensional/friedmann-equation.d.ts +3 -3
  754. package/dist/dimensional/friedmann-equation.js +3 -3
  755. package/dist/dimensional/friedmann-equation.js.map +1 -1
  756. package/dist/dimensional/gauge-field.d.ts +2 -3
  757. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  758. package/dist/dimensional/gauge-field.js +0 -1
  759. package/dist/dimensional/gauge-field.js.map +1 -1
  760. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  761. package/dist/dimensional/hyphen-names.js +8 -0
  762. package/dist/dimensional/hyphen-names.js.map +1 -1
  763. package/dist/dimensional/killing-validators.js.map +1 -1
  764. package/dist/dimensional/klein-gordon-equation.js.map +1 -1
  765. package/dist/dimensional/metric-validators.d.ts +2 -1
  766. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  767. package/dist/dimensional/metric-validators.js.map +1 -1
  768. package/dist/dimensional/metric.js.map +1 -1
  769. package/dist/dimensional/natural-units.js.map +1 -1
  770. package/dist/dimensional/quantity-registry.d.ts +23 -1
  771. package/dist/dimensional/quantity-registry.d.ts.map +1 -1
  772. package/dist/dimensional/quantity-registry.js +55 -18
  773. package/dist/dimensional/quantity-registry.js.map +1 -1
  774. package/dist/dimensional/rg-flow.js.map +1 -1
  775. package/dist/dimensional/stress-energy-validators.js.map +1 -1
  776. package/dist/dimensional/symbolic-constants.d.ts +63 -19
  777. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  778. package/dist/dimensional/symbolic-constants.js +114 -92
  779. package/dist/dimensional/symbolic-constants.js.map +1 -1
  780. package/dist/dimensional/tensor-trace.js.map +1 -1
  781. package/dist/dimensional/tensor.js.map +1 -1
  782. package/dist/dimensional/types.js.map +1 -1
  783. package/dist/dimensional/unit-convention.d.ts +0 -2
  784. package/dist/dimensional/unit-convention.d.ts.map +1 -1
  785. package/dist/dimensional/unit-convention.js +2 -2
  786. package/dist/dimensional/unit-convention.js.map +1 -1
  787. package/dist/dimensional/unit-data.d.ts +70 -0
  788. package/dist/dimensional/unit-data.d.ts.map +1 -0
  789. package/dist/dimensional/unit-data.js +139 -0
  790. package/dist/dimensional/unit-data.js.map +1 -0
  791. package/dist/dimensional/units.d.ts +87 -24
  792. package/dist/dimensional/units.d.ts.map +1 -1
  793. package/dist/dimensional/units.js +290 -295
  794. package/dist/dimensional/units.js.map +1 -1
  795. package/dist/dimensional/validator-registry.js.map +1 -1
  796. package/dist/dimensional/validator.d.ts +0 -16
  797. package/dist/dimensional/validator.d.ts.map +1 -1
  798. package/dist/dimensional/validator.js +65 -29
  799. package/dist/dimensional/validator.js.map +1 -1
  800. package/dist/dimensional/weyl-validators.js.map +1 -1
  801. package/dist/index.d.ts +65 -18
  802. package/dist/index.d.ts.map +1 -1
  803. package/dist/index.js +19 -24
  804. package/dist/index.js.map +1 -1
  805. package/dist/numerical/bianchi-residual.js.map +1 -1
  806. package/dist/numerical/binding-value.d.ts +32 -7
  807. package/dist/numerical/binding-value.d.ts.map +1 -1
  808. package/dist/numerical/binding-value.js +218 -209
  809. package/dist/numerical/binding-value.js.map +1 -1
  810. package/dist/numerical/christoffel-flat.js.map +1 -1
  811. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  812. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  813. package/dist/numerical/covariant-eikonal.js +2 -2
  814. package/dist/numerical/covariant-eikonal.js.map +1 -1
  815. package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
  816. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  817. package/dist/numerical/curvature-lowering-helpers.js +6 -3
  818. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  819. package/dist/numerical/derivative-lowering.js.map +1 -1
  820. package/dist/numerical/einstein-equation.js.map +1 -1
  821. package/dist/numerical/engine-registry.js.map +1 -1
  822. package/dist/numerical/errors.d.ts +7 -3
  823. package/dist/numerical/errors.d.ts.map +1 -1
  824. package/dist/numerical/errors.js +5 -5
  825. package/dist/numerical/errors.js.map +1 -1
  826. package/dist/numerical/evaluator-uncertainty.d.ts +34 -0
  827. package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -0
  828. package/dist/numerical/evaluator-uncertainty.js +134 -0
  829. package/dist/numerical/evaluator-uncertainty.js.map +1 -0
  830. package/dist/numerical/formula-contract.d.ts +67 -7
  831. package/dist/numerical/formula-contract.d.ts.map +1 -1
  832. package/dist/numerical/formula-contract.js +68 -42
  833. package/dist/numerical/formula-contract.js.map +1 -1
  834. package/dist/numerical/formula-dimension.d.ts +17 -7
  835. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  836. package/dist/numerical/formula-dimension.js +120 -44
  837. package/dist/numerical/formula-dimension.js.map +1 -1
  838. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  839. package/dist/numerical/formula-mathts.js +10 -3
  840. package/dist/numerical/formula-mathts.js.map +1 -1
  841. package/dist/numerical/formula-registry.d.ts +13 -3
  842. package/dist/numerical/formula-registry.d.ts.map +1 -1
  843. package/dist/numerical/formula-registry.js +7 -2
  844. package/dist/numerical/formula-registry.js.map +1 -1
  845. package/dist/numerical/geodesic-integrator.js.map +1 -1
  846. package/dist/numerical/geometrized.js.map +1 -1
  847. package/dist/numerical/gl4-integrator.d.ts +28 -27
  848. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  849. package/dist/numerical/gl4-integrator.js +44 -45
  850. package/dist/numerical/gl4-integrator.js.map +1 -1
  851. package/dist/numerical/grid-field.js.map +1 -1
  852. package/dist/numerical/index.js.map +1 -1
  853. package/dist/numerical/input-validation.d.ts +3 -6
  854. package/dist/numerical/input-validation.d.ts.map +1 -1
  855. package/dist/numerical/input-validation.js +4 -8
  856. package/dist/numerical/input-validation.js.map +1 -1
  857. package/dist/numerical/killing.d.ts +8 -5
  858. package/dist/numerical/killing.d.ts.map +1 -1
  859. package/dist/numerical/killing.js.map +1 -1
  860. package/dist/numerical/klein-gordon.js.map +1 -1
  861. package/dist/numerical/kretschmann.js.map +1 -1
  862. package/dist/numerical/lowering-utils.js.map +1 -1
  863. package/dist/numerical/lowering.d.ts.map +1 -1
  864. package/dist/numerical/lowering.js +7 -17
  865. package/dist/numerical/lowering.js.map +1 -1
  866. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  867. package/dist/numerical/mathts-engine.js +11 -6
  868. package/dist/numerical/mathts-engine.js.map +1 -1
  869. package/dist/numerical/metric-inverse.js.map +1 -1
  870. package/dist/numerical/null-ic.js.map +1 -1
  871. package/dist/numerical/null-ray-integrator.js +4 -4
  872. package/dist/numerical/null-ray-integrator.js.map +1 -1
  873. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  874. package/dist/numerical/pderiv.d.ts.map +1 -1
  875. package/dist/numerical/pderiv.js +9 -2
  876. package/dist/numerical/pderiv.js.map +1 -1
  877. package/dist/numerical/perihelion-finder.js.map +1 -1
  878. package/dist/numerical/quadrature.d.ts +5 -2
  879. package/dist/numerical/quadrature.d.ts.map +1 -1
  880. package/dist/numerical/quadrature.js +20 -3
  881. package/dist/numerical/quadrature.js.map +1 -1
  882. package/dist/numerical/spacetime-metrics.d.ts +17 -19
  883. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  884. package/dist/numerical/spacetime-metrics.js +158 -250
  885. package/dist/numerical/spacetime-metrics.js.map +1 -1
  886. package/dist/numerical/strides.js.map +1 -1
  887. package/dist/numerical/tensor-engine.d.ts +9 -5
  888. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  889. package/dist/numerical/tensor-engine.js.map +1 -1
  890. package/dist/numerical/types.js.map +1 -1
  891. package/dist/numerical/weyl-lowering.js.map +1 -1
  892. package/dist/relations/category.js.map +1 -1
  893. package/dist/relations/composition-table.d.ts +4 -4
  894. package/dist/relations/composition-table.js +4 -4
  895. package/dist/relations/composition-table.js.map +1 -1
  896. package/dist/relations/conventions.js.map +1 -1
  897. package/dist/relations/domain-regimes.js.map +1 -1
  898. package/dist/relations/regime-registration.js.map +1 -1
  899. package/dist/relations/regime-vocabularies.js.map +1 -1
  900. package/dist/relations/regime.d.ts +18 -8
  901. package/dist/relations/regime.d.ts.map +1 -1
  902. package/dist/relations/regime.js +26 -14
  903. package/dist/relations/regime.js.map +1 -1
  904. package/dist/relations/types.d.ts +26 -6
  905. package/dist/relations/types.d.ts.map +1 -1
  906. package/dist/relations/types.js +15 -3
  907. package/dist/relations/types.js.map +1 -1
  908. package/package.json +10 -14
  909. package/dist/bridges/registry.d.ts +0 -60
  910. package/dist/bridges/registry.d.ts.map +0 -1
  911. package/dist/bridges/registry.js +0 -87
  912. package/dist/bridges/registry.js.map +0 -1
  913. package/dist/cli/poster-source.d.ts +0 -154
  914. package/dist/cli/poster-source.d.ts.map +0 -1
  915. package/dist/cli/poster-source.js +0 -184
  916. package/dist/cli/poster-source.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"formula-shape.d.ts","sourceRoot":"","sources":["../../src/composition/formula-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAK5D,oFAAoF;AACpF,KAAK,YAAY,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAyFnD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAEzD"}
1
+ {"version":3,"file":"formula-shape.d.ts","sourceRoot":"","sources":["../../src/composition/formula-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAK5D,oFAAoF;AACpF,KAAK,YAAY,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAInD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAiC7F;AAuFD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAEzD"}
@@ -12,6 +12,60 @@
12
12
  import { divide, equals, multiply, power } from '../dimensional/algebra.js';
13
13
  import { DIMENSIONLESS } from '../dimensional/types.js';
14
14
  const NUMERIC_NAME = /^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/;
15
+ /**
16
+ * Exponents of every symbol in a product, quotient, or literal integer power.
17
+ * Undefined for a sum or any node that is not that monomial. The one reader
18
+ * of a monomial's exponents: the canonical graph reads a count's exponent
19
+ * from it, and a composed edge reads the junction's exponent from it.
20
+ *
21
+ * @internal
22
+ */
23
+ export function monomialExponents(node) {
24
+ if (node === undefined)
25
+ return undefined;
26
+ if (node.kind === 'symbol')
27
+ return new Map([[node.name, 1]]);
28
+ if (node.kind !== 'op')
29
+ return undefined;
30
+ if (node.op === '*') {
31
+ const acc = new Map();
32
+ for (const arg of node.args) {
33
+ const part = monomialExponents(arg);
34
+ if (part === undefined)
35
+ return undefined;
36
+ for (const [name, exp] of part)
37
+ acc.set(name, (acc.get(name) ?? 0) + exp);
38
+ }
39
+ return acc;
40
+ }
41
+ if (node.op === '/') {
42
+ if (node.args.length !== 2)
43
+ return undefined;
44
+ const numerator = monomialExponents(node.args[0]);
45
+ const denominator = monomialExponents(node.args[1]);
46
+ if (numerator === undefined || denominator === undefined)
47
+ return undefined;
48
+ for (const [name, exp] of denominator)
49
+ numerator.set(name, (numerator.get(name) ?? 0) - exp);
50
+ return numerator;
51
+ }
52
+ if (node.op === '^') {
53
+ const base = node.args[0];
54
+ const expNode = node.args[1];
55
+ if (base === undefined || expNode === undefined || expNode.kind !== 'symbol')
56
+ return undefined;
57
+ const exp = Number(expNode.name);
58
+ if (!Number.isFinite(exp))
59
+ return undefined;
60
+ const inner = monomialExponents(base);
61
+ if (inner === undefined)
62
+ return undefined;
63
+ for (const [name, innerExp] of inner)
64
+ inner.set(name, innerExp * exp);
65
+ return inner;
66
+ }
67
+ return undefined;
68
+ }
15
69
  /** A dimensionless symbol whose name is a number, the way a literal exponent is written. */
16
70
  function numericExponent(node) {
17
71
  if (node.kind !== 'symbol' || !NUMERIC_NAME.test(node.name))
@@ -1 +1 @@
1
- {"version":3,"file":"formula-shape.js","sourceRoot":"","sources":["../../src/composition/formula-shape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formula-shape.js","sourceRoot":"","sources":["../../src/composition/formula-shape.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Whether an encoded formula is a product of powers, or a sum of dimensionful terms.\n *\n * Buckingham-π returns a monomial. A formula that adds dimensionful terms is\n * not that monomial, even when a unique monomial exists in the same variables\n * (fast magnetosonic speed: the monomial is the sound speed; the formula is\n * √(c_s² + v_A²)). A sum whose every addend is dimensionless is still a\n * factor in a monomial: (1+R), (1−e²), (1 + E/(kT)).\n *\n * @module composition/formula-shape\n */\n\nimport type { ExprNode } from '../dimensional/ast-types.js';\nimport { divide, equals, multiply, power } from '../dimensional/algebra.js';\nimport type { Dimension } from '../dimensional/types.js';\nimport { DIMENSIONLESS } from '../dimensional/types.js';\n\n/** `monomial` is a product of powers. `dimensional-sum` adds dimensionful terms. */\ntype FormulaShape = 'monomial' | 'dimensional-sum';\n\nconst NUMERIC_NAME = /^[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/;\n\n/**\n * Exponents of every symbol in a product, quotient, or literal integer power.\n * Undefined for a sum or any node that is not that monomial. The one reader\n * of a monomial's exponents: the canonical graph reads a count's exponent\n * from it, and a composed edge reads the junction's exponent from it.\n *\n * @internal\n */\nexport function monomialExponents(node: ExprNode | undefined): Map<string, number> | undefined {\n if (node === undefined) return undefined;\n if (node.kind === 'symbol') return new Map([[node.name, 1]]);\n if (node.kind !== 'op') return undefined;\n if (node.op === '*') {\n const acc = new Map<string, number>();\n for (const arg of node.args) {\n const part = monomialExponents(arg);\n if (part === undefined) return undefined;\n for (const [name, exp] of part) acc.set(name, (acc.get(name) ?? 0) + exp);\n }\n return acc;\n }\n if (node.op === '/') {\n if (node.args.length !== 2) return undefined;\n const numerator = monomialExponents(node.args[0]);\n const denominator = monomialExponents(node.args[1]);\n if (numerator === undefined || denominator === undefined) return undefined;\n for (const [name, exp] of denominator) numerator.set(name, (numerator.get(name) ?? 0) - exp);\n return numerator;\n }\n if (node.op === '^') {\n const base = node.args[0];\n const expNode = node.args[1];\n if (base === undefined || expNode === undefined || expNode.kind !== 'symbol') return undefined;\n const exp = Number(expNode.name);\n if (!Number.isFinite(exp)) return undefined;\n const inner = monomialExponents(base);\n if (inner === undefined) return undefined;\n for (const [name, innerExp] of inner) inner.set(name, innerExp * exp);\n return inner;\n }\n return undefined;\n}\n\n/** A dimensionless symbol whose name is a number, the way a literal exponent is written. */\nfunction numericExponent(node: ExprNode): number | undefined {\n if (node.kind !== 'symbol' || !NUMERIC_NAME.test(node.name)) return undefined;\n if (!equals(node.dim, DIMENSIONLESS)) return undefined;\n const n = Number(node.name);\n return Number.isFinite(n) ? n : undefined;\n}\n\n/**\n * Dimension of a scalar node this classifier understands. `undefined` means\n * the node is not a product of powers of dimensioned symbols. A sum that\n * cannot be dimensioned is treated as dimensionful.\n */\nfunction dimOf(node: ExprNode): Dimension | undefined {\n if (node.kind === 'symbol') return node.dim;\n if (node.kind === 'abs') return dimOf(node.arg);\n if (node.kind === 'transcendental') {\n const arg = dimOf(node.arg);\n if (arg === undefined || !equals(arg, DIMENSIONLESS)) return undefined;\n return DIMENSIONLESS;\n }\n if (node.kind !== 'op') return undefined;\n if (node.op === '+' || node.op === '-') {\n if (node.args.length === 0) return undefined;\n const dims = node.args.map(dimOf);\n if (dims.some((d) => d === undefined)) return undefined;\n const first = dims[0]!;\n if (!dims.every((d) => equals(d!, first))) return undefined;\n return first;\n }\n if (node.op === '*') {\n let acc: Dimension = DIMENSIONLESS;\n for (const arg of node.args) {\n const d = dimOf(arg);\n if (d === undefined) return undefined;\n acc = multiply(acc, d);\n }\n return acc;\n }\n if (node.op === '/') {\n if (node.args.length !== 2) return undefined;\n const num = dimOf(node.args[0]!);\n const den = dimOf(node.args[1]!);\n if (num === undefined || den === undefined) return undefined;\n return divide(num, den);\n }\n if (node.op === '^') {\n if (node.args.length !== 2) return undefined;\n const base = dimOf(node.args[0]!);\n const exp = numericExponent(node.args[1]!);\n if (base === undefined || exp === undefined) return undefined;\n return power(base, exp);\n }\n return undefined;\n}\n\n/** Scalar children. A tensor node this walker does not understand contributes none. */\nfunction children(node: ExprNode): readonly ExprNode[] {\n if (node.kind === 'op') return node.args;\n if (node.kind === 'abs' || node.kind === 'transcendental' || node.kind === 'dirac-delta') return [node.arg];\n if (node.kind === 'integral') {\n return [node.over, node.integrand, ...(node.lower === undefined ? [] : [node.lower]), ...(node.upper === undefined ? [] : [node.upper])];\n }\n if (node.kind === 'derivative') return [node.of, node.wrt];\n if (node.kind === 'variational-derivative') return [node.functional, node.field, node.over];\n return [];\n}\n\n/**\n * True when `node` adds terms that are not all dimensionless. An addend whose\n * dimension cannot be read counts as dimensionful: a sum we cannot see is not\n * reported as a monomial.\n */\nfunction isDimensionalSum(node: ExprNode): boolean {\n if (node.kind !== 'op' || (node.op !== '+' && node.op !== '-')) return false;\n const dims = node.args.map(dimOf);\n if (dims.some((d) => d === undefined)) return true;\n return dims.some((d) => !equals(d!, DIMENSIONLESS));\n}\n\nfunction hasDimensionalSum(node: ExprNode): boolean {\n if (isDimensionalSum(node)) return true;\n return children(node).some(hasDimensionalSum);\n}\n\n/**\n * Classify `expr`. A node this walker does not understand, and that is not\n * itself a sum, stays a monomial so an unread tensor equation is not\n * reclassified.\n */\nexport function formulaShape(expr: ExprNode): FormulaShape {\n return hasDimensionalSum(expr) ? 'dimensional-sum' : 'monomial';\n}\n"]}
@@ -7,9 +7,10 @@ import type { BridgeEdge } from './edge.js';
7
7
  */
8
8
  export declare const CANDIDATE_NOT_A_BRIDGE_REASON = "a coincidence-heavy REVIEW SURFACE, NOT discovered bridges";
9
9
  /**
10
- * Bridge ids the negative-catalog comment already names as contested.
10
+ * Bridge ids whose catalog row is marked `contested` in `data/bridge-catalog.json`.
11
11
  * A contested row stays out of the null-result list until an adjudication
12
- * exists. A membership rejection is that adjudication.
12
+ * exists. A membership rejection is that adjudication. Derived from the data,
13
+ * never typed here (the owner's decision of 2026-10-09).
13
14
  *
14
15
  * @internal
15
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"frontier-account.d.ts","sourceRoot":"","sources":["../../src/composition/frontier-account.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAO5C;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,+DACoB,CAAC;AAE/D;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAyC,CAAC;AAE5F,oGAAoG;AACpG,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAExE,8FAA8F;AAC9F,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,0HAA0H;AAC1H,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,GAAG,WAAW,GAAG,eAAe,CAAC;CACzE;AAED,wGAAwG;AACxG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,uGAAuG;AACvG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AAED,8JAA8J;AAC9J,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C;AAQD,wFAAwF;AACxF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GACxF,iBAAiB,EAAE,CAQrB;AAoBD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,GAAE,sBAA2B,GACnC,eAAe,CA4BjB;AAED,qGAAqG;AACrG,wBAAgB,sBAAsB,IAAI,eAAe,CAUxD;AAED,iGAAiG;AACjG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAatE"}
1
+ {"version":3,"file":"frontier-account.d.ts","sourceRoot":"","sources":["../../src/composition/frontier-account.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAO5C;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,+DACoB,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAEf,CAAC;AAEpC,oGAAoG;AACpG,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAExE,8FAA8F;AAC9F,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,0HAA0H;AAC1H,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,GAAG,WAAW,GAAG,eAAe,CAAC;CACzE;AAED,wGAAwG;AACxG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,uGAAuG;AACvG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AAED,8JAA8J;AAC9J,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C;AAQD,wFAAwF;AACxF,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GACxF,iBAAiB,EAAE,CAQrB;AAoBD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,OAAO,GAAE,sBAA2B,GACnC,eAAe,CA4BjB;AAED,qGAAqG;AACrG,wBAAgB,sBAAsB,IAAI,eAAe,CAUxD;AAED,iGAAiG;AACjG,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAatE"}
@@ -8,6 +8,7 @@
8
8
  * @internal
9
9
  */
10
10
  import { proposeLinkCandidates } from './bridge-analysis.js';
11
+ import { catalogEntries } from '../bridges/catalog-load.js';
11
12
  import { CATALOG_GRAPH } from './catalog-graph.js';
12
13
  import { scanFrontier } from './probe/frontier.js';
13
14
  import { expressionSearchGaps } from './probe/expression-gaps.js';
@@ -21,13 +22,16 @@ import { listConfrontations } from '../bridges/confrontations.js';
21
22
  */
22
23
  export const CANDIDATE_NOT_A_BRIDGE_REASON = 'a coincidence-heavy REVIEW SURFACE, NOT discovered bridges';
23
24
  /**
24
- * Bridge ids the negative-catalog comment already names as contested.
25
+ * Bridge ids whose catalog row is marked `contested` in `data/bridge-catalog.json`.
25
26
  * A contested row stays out of the null-result list until an adjudication
26
- * exists. A membership rejection is that adjudication.
27
+ * exists. A membership rejection is that adjudication. Derived from the data,
28
+ * never typed here (the owner's decision of 2026-10-09).
27
29
  *
28
30
  * @internal
29
31
  */
30
- export const CONTESTED_BRIDGE_IDS = [`be-${44}`, `be-${46}`, `be-${50}`];
32
+ export const CONTESTED_BRIDGE_IDS = catalogEntries()
33
+ .filter((entry) => entry.contested === true)
34
+ .map((entry) => `be-${entry.id}`);
31
35
  const OBSERVATION_ABSENT = 'observation absent';
32
36
  function byId(rows) {
33
37
  return [...rows].sort((a, b) => a.id.localeCompare(b.id) || a.id.localeCompare(b.id));
@@ -1 +1 @@
1
- {"version":3,"file":"frontier-account.js","sourceRoot":"","sources":["../../src/composition/frontier-account.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontier-account.js","sourceRoot":"","sources":["../../src/composition/frontier-account.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Two lists the catalog already knows how to tell apart: records that were\n * examined and did not become an accepted connection, and connections the\n * catalog does not contain. Neither list is a verdict and neither list\n * changes a score.\n *\n * @module composition/frontier-account\n * @internal\n */\nimport { proposeLinkCandidates } from './bridge-analysis.js';\nimport { catalogEntries } from '../bridges/catalog-load.js';\nimport { CATALOG_GRAPH } from './catalog-graph.js';\nimport type { BridgeEdge } from './edge.js';\nimport { scanFrontier } from './probe/frontier.js';\nimport { expressionSearchGaps } from './probe/expression-gaps.js';\nimport type { FrontierGap } from './probe/types.js';\nimport { REJECTED_BRIDGE_ADJUDICATIONS } from '../bridges/rejected.js';\nimport { listConfrontations } from '../bridges/confrontations.js';\n\n/**\n * The link proposer's existing label, quoted from `upt candidates`.\n * Not a new verdict.\n *\n * @internal\n */\nexport const CANDIDATE_NOT_A_BRIDGE_REASON =\n 'a coincidence-heavy REVIEW SURFACE, NOT discovered bridges';\n\n/**\n * Bridge ids whose catalog row is marked `contested` in `data/bridge-catalog.json`.\n * A contested row stays out of the null-result list until an adjudication\n * exists. A membership rejection is that adjudication. Derived from the data,\n * never typed here (the owner's decision of 2026-10-09).\n *\n * @internal\n */\nexport const CONTESTED_BRIDGE_IDS: readonly string[] = catalogEntries()\n .filter((entry) => entry.contested === true)\n .map((entry) => `be-${entry.id}`);\n\n/** Why an entry cannot be confronted yet: no comparison exists, or its data is absent. @internal */\nexport type ConfrontationMarkStatus = 'unconfrontable' | 'data-pending';\n\n/** One entry's confrontation status, with the reason that entry already carries. @internal */\nexport interface ConfrontationMark {\n readonly id: string;\n readonly status: ConfrontationMarkStatus;\n readonly reason: string;\n}\n\n/** One record that was examined and did not become an accepted connection, and where that finding came from. @internal */\nexport interface NullResultRow {\n readonly id: string;\n readonly reason: string;\n readonly source: 'membership-rejection' | 'candidate' | 'confrontation';\n}\n\n/** One connection the catalog does not contain, named by the two quantities it would join. @internal */\nexport interface FrontierAccountRow {\n readonly id: string;\n readonly left: string;\n readonly right: string;\n readonly reason: string;\n /** A registered observation id, or the words `observation absent`. */\n readonly observation: string;\n}\n\n/** The two lists together: the null results, and the frontier the catalog does not cover. @internal */\nexport interface FrontierAccount {\n readonly nullResults: readonly NullResultRow[];\n readonly frontier: readonly FrontierAccountRow[];\n}\n\n/** Inputs the account reads rather than derives: rejections, contested ids, confrontation marks, and whether catalog-wide expression gaps count. @internal */\nexport interface FrontierAccountOptions {\n readonly rejections?: readonly { id: string; reason: string }[];\n readonly contestedIds?: readonly string[];\n readonly marks?: readonly ConfrontationMark[];\n /**\n * Expression gaps are catalog-wide applied-case templates, not missing\n * edges of a fixture graph. The live catalog includes them because\n * `upt probe scan` emits them. A fixture with no missing edges does not.\n */\n readonly includeExpressionGaps?: boolean;\n}\n\nconst OBSERVATION_ABSENT = 'observation absent';\n\nfunction byId<T extends { id: string }>(rows: readonly T[]): T[] {\n return [...rows].sort((a, b) => a.id.localeCompare(b.id) || a.id.localeCompare(b.id));\n}\n\n/** Read marks only where an entry already carries the status. Invent none. @internal */\nexport function marksFromEntries(\n entries: readonly { bridgeId: number; title: string; status?: string; reason?: string }[],\n): ConfrontationMark[] {\n const out: ConfrontationMark[] = [];\n for (const entry of entries) {\n if (entry.status !== 'unconfrontable' && entry.status !== 'data-pending') continue;\n const reason = entry.reason?.trim() ? entry.reason : entry.title;\n out.push({ id: `be-${entry.bridgeId}`, status: entry.status, reason });\n }\n return out;\n}\n\nfunction sidesOf(gap: FrontierGap): { left: string; right: string } {\n const participants = gap.participants.map((p) => p.id).filter((id) => id !== '');\n if (participants.length >= 2) return { left: participants[0]!, right: participants[1]! };\n if (gap.regimes.length >= 2) return { left: gap.regimes[0]!, right: gap.regimes[1]! };\n return { left: gap.id, right: gap.evidence.summary };\n}\n\nfunction frontierRow(gap: FrontierGap): FrontierAccountRow {\n const sides = sidesOf(gap);\n return {\n id: gap.id,\n left: sides.left,\n right: sides.right,\n reason: gap.kind,\n observation: gap.observations.length > 0 ? gap.observations.join(', ') : OBSERVATION_ABSENT,\n };\n}\n\n/**\n * Null results and frontier rows for one graph. Rejections, contested ids,\n * and confrontation marks are inputs: the function does not invent them.\n *\n * @internal\n */\nexport function accountFromGraph(\n edges: readonly BridgeEdge[],\n options: FrontierAccountOptions = {},\n): FrontierAccount {\n const contested = new Set(options.contestedIds ?? []);\n const rejectionIds = new Set((options.rejections ?? []).map((row) => row.id));\n const nullResults: NullResultRow[] = [];\n\n for (const rejection of options.rejections ?? []) {\n nullResults.push({ id: rejection.id, reason: rejection.reason, source: 'membership-rejection' });\n }\n for (const candidate of proposeLinkCandidates(edges)) {\n nullResults.push({\n id: `candidate:${candidate.a}:${candidate.b}`,\n reason: CANDIDATE_NOT_A_BRIDGE_REASON,\n source: 'candidate',\n });\n }\n for (const mark of options.marks ?? []) {\n if (contested.has(mark.id) && !rejectionIds.has(mark.id)) continue;\n nullResults.push({ id: mark.id, reason: mark.reason, source: 'confrontation' });\n }\n\n const gaps = [\n ...scanFrontier(edges),\n ...(options.includeExpressionGaps ? expressionSearchGaps() : []),\n ];\n return {\n nullResults: byId(nullResults),\n frontier: byId(gaps.map(frontierRow)),\n };\n}\n\n/** The catalog's two lists. Expression gaps are included because probe scan emits them. @internal */\nexport function catalogFrontierAccount(): FrontierAccount {\n return accountFromGraph(CATALOG_GRAPH, {\n rejections: REJECTED_BRIDGE_ADJUDICATIONS.map((row) => ({\n id: `be-${row.beId}`,\n reason: row.reason,\n })),\n contestedIds: CONTESTED_BRIDGE_IDS,\n marks: marksFromEntries(listConfrontations()),\n includeExpressionGaps: true,\n });\n}\n\n/** Both headings and both counts. An empty list is the word `(empty)`, not silence. @internal */\nexport function formatFrontierAccount(account: FrontierAccount): string {\n const lines: string[] = [];\n lines.push(`Null results (${account.nullResults.length})`);\n if (account.nullResults.length === 0) lines.push(' (empty)');\n for (const row of account.nullResults) {\n lines.push(` ${row.id} ${row.reason}`);\n }\n lines.push(`Frontier (${account.frontier.length})`);\n if (account.frontier.length === 0) lines.push(' (empty)');\n for (const row of account.frontier) {\n lines.push(` ${row.left} — ${row.right} ${row.reason} ${row.observation}`);\n }\n return lines.join('\\n');\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"graph-viz-svg.js","sourceRoot":"","sources":["../../src/composition/graph-viz-svg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD,YACE,OAAO,GAAG,+DAA+D;QACvE,mCAAmC;QAErC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AASD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,IAAI,GAAc,CAAC;IACnB,IAAI,CAAC;QACH,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAyB,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,2BAA2B,EAAE,CAAC;IAC1C,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;IACtC,OAAO,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"graph-viz-svg.js","sourceRoot":"","sources":["../../src/composition/graph-viz-svg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD,YACE,OAAO,GAAG,+DAA+D;QACvE,mCAAmC;QAErC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AASD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,IAAI,GAAc,CAAC;IACnB,IAAI,CAAC;QACH,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,CAAyB,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,2BAA2B,EAAE,CAAC;IAC1C,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;IACtC,OAAO,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,CAAC","sourcesContent":["/**\n * SVG rendering for the physics map — render Graphviz DOT source to an SVG\n * string via the optional **`@viz-js/viz`** peer (the real Graphviz compiled to\n * WebAssembly: same `dot` output, in-process, no native binary, no subprocess).\n *\n * Kept separate from `graph-viz.ts` so that module stays pure, synchronous, and\n * dependency-free (text only). The optional-renderer concern — a lazy dynamic\n * import with graceful fallback, mirroring `numerical/formula-registry.ts`'s\n * MathTS-peer pattern — lives here.\n *\n * @module composition/graph-viz-svg\n */\n\n/**\n * Thrown by {@link renderDotToSvg} when the optional `@viz-js/viz` peer is not\n * installed. The message names the install command and the no-install\n * alternative.\n *\n * @public\n */\nexport class SvgRendererUnavailableError extends Error {\n constructor(\n message = 'SVG rendering needs the optional renderer: npm i @viz-js/viz ' +\n '(or use --format=dot | dot -Tsvg)',\n ) {\n super(message);\n this.name = 'SvgRendererUnavailableError';\n }\n}\n\n/** The shape we use from `@viz-js/viz` — its `instance()` resolves a renderer. */\ninterface VizModule {\n instance(): Promise<{\n renderString(src: string, options: { format: string }): string;\n }>;\n}\n\n/**\n * Render Graphviz DOT source (e.g. {@link buildVizModel}'s `toDot()`) to an SVG\n * document string. Lazy-loads the optional `@viz-js/viz` peer.\n *\n * @throws {SvgRendererUnavailableError} if the peer is not installed.\n * @public\n */\nexport async function renderDotToSvg(dot: string): Promise<string> {\n let viz: VizModule;\n try {\n viz = (await import('@viz-js/viz')) as unknown as VizModule;\n } catch {\n throw new SvgRendererUnavailableError();\n }\n const renderer = await viz.instance();\n return renderer.renderString(dot, { format: 'svg' });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"graph-viz.js","sourceRoot":"","sources":["../../src/composition/graph-viz.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph-viz.js","sourceRoot":"","sources":["../../src/composition/graph-viz.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Physics-map visualization — turn the composition hypergraph into Mermaid and\n * Graphviz-DOT **source text**.\n *\n * The graph is bipartite in the drawing: round nodes are *quantities*\n * (`mass`, `temperature`, …) and box nodes are *equations* — laws, bridges, or\n * proposed relations — each an n-ary junction (its source quantities point in,\n * its target points out). This makes \"equations as junctions\" literal and draws\n * n-ary edges faithfully (a single Mermaid/DOT edge can only connect two nodes).\n *\n * The model computes its own connected components over the junctions — so a\n * `--proposed` overlay participates in the clustering — and groups each component\n * into its own subgraph so the genuinely disjointed map stays legible. For the\n * pure-`BridgeEdge` case the component count matches the authoritative\n * {@link linkageMap} (pinned by a drift-guard test).\n *\n * Pure string production: no file I/O (the CLI is the only file-touching layer).\n *\n * @module composition/graph-viz\n */\n\nimport type { BridgeEdge } from './edge.js';\nimport { QUANTITY_IDENTIFICATIONS } from './compose.js';\nimport type { EvidenceTag, RelationType } from '../relations/types.js';\n\n/**\n * Epistemic status of a junction — drives node colour/shape. Bridges carry\n * their catalog confidence; `law` is a diagonal/established-physics edge;\n * `proposed` is a machine-derived, unadjudicated relation (rendered quarantined).\n *\n * @public\n */\nexport type VizStatus =\n | 'law'\n | 'established'\n | 'speculative'\n | 'highly-speculative'\n | 'proposed'\n | 'user'\n | 'poster'\n | 'association';\n\n/**\n * Every `VizStatus`, as VALUES.\n *\n * Exists so the union can be pinned at RUNTIME. `VizStatus` is a type: the\n * public-surface test pins its NAME and nothing pins its MEMBERS, so widening\n * it is invisible to every existing test. This array is what the three places\n * a status must be registered are checked against — `STATUS_STYLE` (a compile\n * error when incomplete), `STATUSES_IN_ORDER` (a plain array that would\n * SILENTLY omit a Mermaid `classDef`), and the published surface.\n *\n * @internal\n */\nexport const ALL_VIZ_STATUSES: readonly VizStatus[] = [\n 'law',\n 'established',\n 'speculative',\n 'highly-speculative',\n 'proposed',\n 'user',\n 'poster',\n 'association',\n];\n\n/**\n * A normalized equation junction: n source quantities → 1 target. The render\n * model's unit of \"equation\", decoupled from both `BridgeEdge` and the internal\n * `ProposedBridge` type (the CLI converts each into this shape).\n *\n * @public\n */\nexport interface VizJunction {\n /** Graph id, e.g. `'be-42'` or `'IC-…'`. */\n readonly id: string;\n /** Short human label. */\n readonly label: string;\n readonly status: VizStatus;\n /** Source quantity names. */\n readonly sources: readonly string[];\n /** Target quantity name. */\n readonly target: string;\n /**\n * The Atlas Phase 1 relation TYPE this junction's edge records, when one was\n * recorded. Absent means \"nobody has audited this edge\", which is a\n * different statement from \"this edge is not an approximation\" — the\n * filtering in {@link buildVizModel} keeps the two apart and counts them\n * separately.\n */\n readonly relation?: RelationType;\n /**\n * The catalog id this junction's edge cross-references, when it has one.\n * Carried so evidence can be DERIVED at read time; no evidence tag is ever\n * stored on a junction.\n */\n readonly beId?: number | null;\n}\n\n/**\n * Why junctions were left out of a filtered map.\n *\n * The two dropped counts are SEPARATE on purpose. An edge dropped for not\n * matching the filter answered the question; an edge dropped for carrying no\n * overlay never got asked. Folding them together would let an unaudited graph\n * render as a complete answer to a question nobody could put to it.\n *\n * @public\n */\nexport interface VizFilterStats {\n /** Junctions considered, before filtering. */\n readonly total: number;\n /** Junctions rendered. */\n readonly kept: number;\n /** Dropped because their recorded metadata did not match the filter. */\n readonly droppedNotMatching: number;\n /** Dropped because they carry no metadata the filter could read. */\n readonly droppedMissingMetadata: number;\n /** The `relation` filter in force, if any. */\n readonly relation?: RelationType;\n /** The `evidence` filter in force, if any. */\n readonly evidence?: EvidenceTag;\n}\n\n/**\n * One connected component of the bipartite graph.\n *\n * @public\n */\nexport interface VizCluster {\n /** Junction ids in this component. */\n readonly junctionIds: readonly string[];\n /** Distinct (canonical) quantity names touched by this component. */\n readonly quantities: readonly string[];\n /** Number of junctions (the cluster \"size\", matching `linkageMap`). */\n readonly size: number;\n /** Contains a `law`/`established` junction (anchored to known physics). */\n readonly anchored: boolean;\n}\n\n/**\n * Options for {@link buildVizModel}.\n *\n * @public\n */\nexport interface VizOptions {\n /** Diagram title (used as the graph label). */\n readonly title?: string;\n /** Already-normalized extra junctions to overlay (e.g. proposed relations). */\n readonly extraJunctions?: readonly VizJunction[];\n /**\n * Keep only junctions whose recorded relation is this type.\n *\n * ⚠ Setting ANY filter changes what a missing overlay MEANS. Unfiltered, an\n * edge with no `relation` is kept — the map is about connectivity and an\n * unaudited edge still connects. Filtered, it is dropped, because it cannot\n * be shown to satisfy the filter. The count of those drops is reported\n * separately in {@link VizFilterStats} and printed in the legend.\n */\n readonly relation?: RelationType;\n /**\n * Keep only junctions whose DERIVED evidence set contains this tag.\n *\n * Evidence is never stored. It is derived from the catalog row named by the\n * junction's `beId`, every time it is asked for; a junction with no numeric\n * `beId` cannot be evaluated and counts as LACKING metadata, not as\n * non-matching.\n */\n readonly evidence?: EvidenceTag;\n /**\n * The derivation used when `evidence` is set. The catalog derivation lives\n * with the CLI (`cli/map-evidence.ts`), which passes it. This module does\n * not import that derivation. A junction with a numeric `beId` and no\n * function here cannot be evaluated, and the filter throws rather than\n * rendering an unfiltered map as a filtered one. A junction with no numeric\n * `beId` is lacking metadata and does not call the function.\n */\n readonly deriveEvidence?: (beId: number) => ReadonlySet<EvidenceTag>;\n}\n\n/**\n * The render model: normalized junctions, their connected components, and the\n * two serializers.\n *\n * @public\n */\nexport interface VizModel {\n readonly junctions: readonly VizJunction[];\n readonly clusters: readonly VizCluster[];\n /** What filtering did. Present even when no filter was set (all kept). */\n readonly filterStats: VizFilterStats;\n /** One-line legend describing the filter, or `null` when none is in force. */\n readonly filterLegend: string | null;\n toMermaid(): string;\n toDot(): string;\n}\n\n/** Fill colour + dashed flag per status. Tweak here to restyle the whole map. */\nconst STATUS_STYLE: Readonly<\n Record<VizStatus, { readonly fill: string; readonly stroke: string; readonly dashed: boolean }>\n> = {\n law: { fill: '#cfe3f7', stroke: '#3a6ea5', dashed: false }, // textbook law — blue\n established: { fill: '#cde7d3', stroke: '#3f8f5b', dashed: false }, // solid bridge — green\n speculative: { fill: '#fdebc8', stroke: '#c9881b', dashed: false }, // amber\n 'highly-speculative': { fill: '#f5c6c6', stroke: '#c0392b', dashed: false }, // red\n proposed: { fill: '#e6e6e6', stroke: '#888888', dashed: true }, // unadjudicated — grey dashed\n user: { fill: '#e9d8fd', stroke: '#6b46c1', dashed: false }, // user-supplied — violet\n // Poster index (Atlas Phase 3). A derivation is a SOLID box: it is a stated\n // claim with a recorded relation, not an unadjudicated guess like `proposed`.\n poster: { fill: '#dbe7ff', stroke: '#4c6ef5', dashed: false }, // indigo\n // An association is DASHED because it asserts no relation at all\n // (`atlas/association.ts`): the dash is the only thing in the drawing that\n // says \"this line is a resemblance, not a claim\". Do not make it solid.\n association: { fill: '#f3f0e7', stroke: '#8d7b4f', dashed: true }, // khaki dashed\n};\n\n/** Map a `BridgeEdge` to a `VizJunction` (raw quantity names).\n *\n * The display label is the compact catalog id (`BE-<n>`) when the edge is\n * catalog-backed, else the edge's own label — a *map* reads better with short\n * junction names; the full formula stays in the catalog. */\nexport function edgeToJunction(edge: BridgeEdge): VizJunction {\n const status: VizStatus = edge.kind === 'law' ? 'law' : edge.confidence;\n return {\n id: edge.id,\n label: edge.beId != null ? `BE-${edge.beId}` : edge.label,\n status,\n sources: edge.sources.map((s) => s.name),\n target: edge.target.name,\n ...(edge.relation ? { relation: edge.relation.type } : {}),\n beId: edge.beId,\n };\n}\n\n/** How one junction fared against the filters. */\ntype FilterVerdict = 'keep' | 'not-matching' | 'missing-metadata';\n\n/** The overlay a filter reads off a junction or an edge. */\ninterface OverlayView {\n readonly relation?: RelationType;\n readonly beId?: number | null;\n}\n\nfunction judge(\n item: OverlayView,\n opts: Pick<VizOptions, 'relation' | 'evidence' | 'deriveEvidence'>,\n): FilterVerdict {\n if (opts.relation !== undefined) {\n if (item.relation === undefined) return 'missing-metadata';\n if (item.relation !== opts.relation) return 'not-matching';\n }\n if (opts.evidence !== undefined) {\n if (item.beId == null) return 'missing-metadata';\n const derive = opts.deriveEvidence;\n if (derive === undefined) {\n throw new Error(\n 'evidence filter has no deriveEvidence function; catalog derivation is not in this module',\n );\n }\n if (!derive(item.beId).has(opts.evidence)) return 'not-matching';\n }\n return 'keep';\n}\n\n/**\n * Apply the same filters `buildVizModel` applies, to a raw edge list — so the\n * TEXT map and the visual map can never disagree about what a filter selects.\n *\n * @internal — CLI support, reached through `src/cli-api.ts`.\n */\nexport function filterEdges(\n edges: readonly BridgeEdge[],\n opts: Pick<VizOptions, 'relation' | 'evidence' | 'deriveEvidence'>,\n): { readonly kept: BridgeEdge[]; readonly stats: VizFilterStats } {\n const kept: BridgeEdge[] = [];\n let droppedNotMatching = 0;\n let droppedMissingMetadata = 0;\n for (const e of edges) {\n switch (judge({ relation: e.relation?.type, beId: e.beId }, opts)) {\n case 'keep':\n kept.push(e);\n break;\n case 'not-matching':\n droppedNotMatching += 1;\n break;\n case 'missing-metadata':\n droppedMissingMetadata += 1;\n break;\n }\n }\n return {\n kept,\n stats: {\n total: edges.length,\n kept: kept.length,\n droppedNotMatching,\n droppedMissingMetadata,\n ...(opts.relation !== undefined ? { relation: opts.relation } : {}),\n ...(opts.evidence !== undefined ? { evidence: opts.evidence } : {}),\n },\n };\n}\n\n/**\n * The legend line. It always states the lacking-metadata count, including when\n * it is zero: a printed `0` says the graph was checked and nothing was hidden,\n * whereas an omitted line says nothing at all.\n *\n * @internal — CLI support, reached through `src/cli-api.ts`.\n */\nexport function formatFilterLegend(stats: VizFilterStats): string | null {\n const terms: string[] = [];\n if (stats.relation !== undefined) terms.push(`relation=${stats.relation}`);\n if (stats.evidence !== undefined) terms.push(`evidence=${stats.evidence}`);\n if (terms.length === 0) return null;\n return (\n `filter: ${terms.join(' ')} — ${stats.kept} of ${stats.total} kept; ` +\n `${stats.droppedNotMatching} dropped (did not match); ` +\n `${stats.droppedMissingMetadata} dropped (no overlay metadata)`\n );\n}\n\n/** Quantity-name canonicalizer from `QUANTITY_IDENTIFICATIONS` (matches `linkageMap`). */\nfunction makeCanon(): (name: string) => string {\n const alias = new Map(QUANTITY_IDENTIFICATIONS.map((id) => [id.from, id.to]));\n return (n) => alias.get(n) ?? n;\n}\n\n/** Distinct canonical quantity names of a junction (sources ∪ target). */\nfunction quantitiesOf(j: VizJunction): string[] {\n return [...new Set([...j.sources, j.target])];\n}\n\n/** Union-find component grouping of junctions sharing a (canonical) quantity. */\nfunction componentsOf(junctions: readonly VizJunction[]): VizCluster[] {\n const parent = junctions.map((_, i) => i);\n const find = (x: number): number =>\n parent[x] === x ? x : (parent[x] = find(parent[x]));\n const union = (a: number, b: number): void => {\n parent[find(a)] = find(b);\n };\n\n const qToJunctions = new Map<string, number[]>();\n junctions.forEach((j, i) => {\n for (const qty of quantitiesOf(j)) {\n const arr = qToJunctions.get(qty) ?? [];\n arr.push(i);\n qToJunctions.set(qty, arr);\n }\n });\n for (const idxs of qToJunctions.values()) {\n for (let k = 1; k < idxs.length; k++) union(idxs[0], idxs[k]);\n }\n\n const groups = new Map<number, number[]>();\n junctions.forEach((_, i) => {\n const r = find(i);\n const arr = groups.get(r) ?? [];\n arr.push(i);\n groups.set(r, arr);\n });\n\n const clusters = [...groups.values()].map((idxs): VizCluster => {\n const js = idxs.map((i) => junctions[i]);\n const quantities = [...new Set(js.flatMap(quantitiesOf))].sort();\n return {\n junctionIds: js.map((j) => j.id),\n quantities,\n size: js.length,\n // DELIBERATE: only `law` and `established` anchor. A `poster`,\n // `association`, `proposed` or `user` junction never does — the poster\n // index maps claims and their supports, it does not assert that any of\n // them is textbook physics. Widening this would make an unanchored\n // cluster read as anchored the moment a poster overlay touched it.\n anchored: js.some((j) => j.status === 'law' || j.status === 'established'),\n };\n });\n // Deterministic: largest first, then by first junction id.\n clusters.sort(\n (a, b) => b.size - a.size || a.junctionIds[0].localeCompare(b.junctionIds[0]),\n );\n return clusters;\n}\n\n/** A stable, collision-free id factory mapping arbitrary keys to safe ids. */\nfunction idFactory(prefix: string): (key: string) => string {\n const seen = new Map<string, string>();\n const used = new Set<string>();\n return (key) => {\n const cached = seen.get(key);\n if (cached) return cached;\n const base = `${prefix}_${key.replace(/[^A-Za-z0-9]/g, '_')}`;\n let id = base;\n let n = 1;\n while (used.has(id)) id = `${base}_${n++}`;\n used.add(id);\n seen.set(key, id);\n return id;\n };\n}\n\n/** Escape a label for Mermaid `[\"…\"]` — XML-entity-encode the characters that\n * break the quoted form or are read as entities (`&`, `\"`, `<`, `>`). */\nconst mmLabel = (s: string): string =>\n s\n .replace(/\\r\\n|\\r|\\n/g, ' ')\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n/** Escape a label for a DOT double-quoted string. */\nconst dotLabel = (s: string): string =>\n s.replace(/\\r\\n|\\r|\\n/g, ' ').replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n\n/**\n * Mermaid `classDef` emission order.\n *\n * ⚠ A plain array, so a status MISSING here does not fail to compile — it\n * silently omits that status's `classDef` and the node renders unstyled. That\n * is why `ALL_VIZ_STATUSES` exists and why a test compares the two sets.\n */\nconst STATUSES_IN_ORDER: readonly VizStatus[] = [\n 'law',\n 'established',\n 'speculative',\n 'highly-speculative',\n 'proposed',\n 'user',\n 'poster',\n 'association',\n];\n\n/**\n * Drive a format-specific cluster renderer over the standard layout, identical\n * for both emitters: multi-junction components first (each its own subgraph,\n * keyed `0`,`1`,…, labelled `anchored cluster (n)` / `cluster (n)`), then a\n * single `iso` subgraph collecting all singletons. The callback owns all\n * per-format string production; this owns only the traversal and labelling.\n */\nfunction forEachClusterGroup(\n clusters: readonly VizCluster[],\n renderCluster: (label: string, junctionIds: readonly string[], key: string) => void,\n): void {\n const multi = clusters.filter((c) => c.size > 1);\n const singletons = clusters.filter((c) => c.size === 1);\n multi.forEach((c, i) =>\n renderCluster(`${c.anchored ? 'anchored ' : ''}cluster (${c.size})`, c.junctionIds, String(i)),\n );\n if (singletons.length) {\n renderCluster(\n `isolated (${singletons.length})`,\n singletons.flatMap((c) => c.junctionIds),\n 'iso',\n );\n }\n}\n\nfunction emitMermaid(\n clusters: readonly VizCluster[],\n byId: ReadonlyMap<string, VizJunction>,\n title: string,\n legend: string | null,\n): string {\n const qid = idFactory('q');\n const jid = idFactory('j');\n const usedStatuses = new Set<VizStatus>();\n const out: string[] = [`flowchart LR`, `%% ${title}`];\n // The legend is a comment AND a rendered node: a comment alone disappears in\n // every renderer, and a filtered map that does not say it is filtered reads\n // as the whole graph.\n if (legend !== null) out.push(`%% ${legend}`);\n\n const renderCluster = (label: string, junctionIds: readonly string[], key: string): void => {\n out.push(` subgraph cl_${key}[\"${mmLabel(label)}\"]`);\n out.push(` direction LR`);\n const declared = new Set<string>();\n const declareQ = (name: string): string => {\n const id = qid(name);\n if (!declared.has(id)) {\n out.push(` ${id}([\"${mmLabel(name)}\"]):::qty`);\n declared.add(id);\n }\n return id;\n };\n for (const id of junctionIds) {\n const j = byId.get(id)!;\n usedStatuses.add(j.status);\n const jId = jid(j.id);\n out.push(` ${jId}[\"${mmLabel(j.label)}\"]:::${j.status}`);\n for (const s of j.sources) out.push(` ${declareQ(s)} --> ${jId}`);\n out.push(` ${jId} --> ${declareQ(j.target)}`);\n }\n out.push(` end`);\n };\n\n forEachClusterGroup(clusters, renderCluster);\n\n if (legend !== null) out.push(` legend[\"${mmLabel(legend)}\"]:::legend`);\n\n for (const st of STATUSES_IN_ORDER) {\n if (!usedStatuses.has(st)) continue;\n const { fill, stroke, dashed } = STATUS_STYLE[st];\n out.push(\n ` classDef ${st} fill:${fill},stroke:${stroke}${dashed ? ',stroke-dasharray:4 3' : ''}`,\n );\n }\n out.push(` classDef qty fill:#ffffff,stroke:#999999`);\n if (legend !== null) out.push(` classDef legend fill:#ffffff,stroke:#333333`);\n return out.join('\\n') + '\\n';\n}\n\nfunction emitDot(\n clusters: readonly VizCluster[],\n byId: ReadonlyMap<string, VizJunction>,\n title: string,\n legend: string | null,\n): string {\n const qid = idFactory('q');\n const jid = idFactory('j');\n const out: string[] = [\n `digraph PhysicsMap {`,\n // DOT's label is a single quoted string and `dotLabel` collapses newlines,\n // so the legend joins the title on one line rather than being dropped.\n ` label=\"${dotLabel(legend === null ? title : `${title} — ${legend}`)}\";`,\n ` rankdir=LR;`,\n ` node [fontname=\"Helvetica\"];`,\n ];\n\n const renderCluster = (label: string, junctionIds: readonly string[], key: string): void => {\n out.push(` subgraph cluster_${key} {`);\n out.push(` label=\"${dotLabel(label)}\";`);\n const declared = new Set<string>();\n const declareQ = (name: string): string => {\n const id = qid(name);\n if (!declared.has(id)) {\n out.push(` ${id} [shape=ellipse,label=\"${dotLabel(name)}\"];`);\n declared.add(id);\n }\n return id;\n };\n for (const id of junctionIds) {\n const j = byId.get(id)!;\n const jId = jid(j.id);\n const { fill, stroke, dashed } = STATUS_STYLE[j.status];\n const style = dashed ? 'filled,dashed' : 'filled';\n out.push(\n ` ${jId} [shape=box,style=\"${style}\",fillcolor=\"${fill}\",color=\"${stroke}\",label=\"${dotLabel(\n j.label,\n )}\"];`,\n );\n for (const s of j.sources) out.push(` ${declareQ(s)} -> ${jId};`);\n out.push(` ${jId} -> ${declareQ(j.target)};`);\n }\n out.push(` }`);\n };\n\n forEachClusterGroup(clusters, renderCluster);\n out.push(`}`);\n return out.join('\\n') + '\\n';\n}\n\n/**\n * Build the bipartite, clustered render model from a graph (+ optional overlay).\n * Quantity names are canonicalized via `QUANTITY_IDENTIFICATIONS` so the\n * clustering matches the authoritative {@link linkageMap}.\n *\n * @public\n */\nexport function buildVizModel(\n edges: readonly BridgeEdge[],\n opts: VizOptions = {},\n): VizModel {\n const canon = makeCanon();\n const normalize = (j: VizJunction): VizJunction => ({\n ...j,\n sources: j.sources.map(canon),\n target: canon(j.target),\n });\n const all: VizJunction[] = [\n ...edges.map((e) => normalize(edgeToJunction(e))),\n ...(opts.extraJunctions ?? []).map(normalize),\n ];\n // Filtering is applied to the OVERLAY junctions too. A proposed or\n // user-supplied junction carries no relation and no beId, so a filtered map\n // drops it as lacking metadata — the same rule as any other edge, and the\n // count says so out loud rather than letting the overlay vanish quietly.\n const junctions: VizJunction[] = [];\n let droppedNotMatching = 0;\n let droppedMissingMetadata = 0;\n for (const j of all) {\n switch (judge(j, opts)) {\n case 'keep':\n junctions.push(j);\n break;\n case 'not-matching':\n droppedNotMatching += 1;\n break;\n case 'missing-metadata':\n droppedMissingMetadata += 1;\n break;\n }\n }\n const filterStats: VizFilterStats = {\n total: all.length,\n kept: junctions.length,\n droppedNotMatching,\n droppedMissingMetadata,\n ...(opts.relation !== undefined ? { relation: opts.relation } : {}),\n ...(opts.evidence !== undefined ? { evidence: opts.evidence } : {}),\n };\n const filterLegend = formatFilterLegend(filterStats);\n // A duplicate junction id (e.g. a proposed overlay colliding with an edge id)\n // would silently drop one from the rendered output — make it a loud error.\n const byId = new Map<string, VizJunction>();\n for (const j of junctions) {\n if (byId.has(j.id)) {\n throw new Error(`buildVizModel: duplicate junction id '${j.id}'`);\n }\n byId.set(j.id, j);\n }\n const clusters = componentsOf(junctions);\n const title = opts.title ?? 'UPT physics map';\n\n return {\n junctions,\n clusters,\n filterStats,\n filterLegend,\n toMermaid: () => emitMermaid(clusters, byId, title, filterLegend),\n toDot: () => emitDot(clusters, byId, title, filterLegend),\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grounding.js","sourceRoot":"","sources":["../../src/composition/grounding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grounding.js","sourceRoot":"","sources":["../../src/composition/grounding.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * PI-instrument Phase 1 — the epistemic-grounding ledger. A pure, derived view\n * over a `VettedCandidate`'s already-computed falsifier results: which gates RAN\n * a real comparison and the candidate SURVIVED (`passed`), which could not test\n * it or produced an unadjudicated result (`gaps`), and the honest ceiling — no\n * mechanism test (axis-compatibility is a proxy, not a mechanism test) and no\n * data confrontation. Annotation-only: it changes no verdict, score, or count.\n *\n * The ledger's job is to expose WEAKNESS so a PI knows how much weight a verdict\n * bears. A gate lands in `passed` ONLY if it ran a real comparison and the\n * candidate survived; anything untestable (an abstained gate) or unadjudicated\n * (a novel machine-derived consequence) is a `gap`, never a strength. There is\n * deliberately NO single \"tier\": magnitude (numeric) and axis (regime) are\n * orthogonal evidence and must not collapse into one rank a PI could misread as\n * credibility.\n *\n * @module composition/grounding\n */\nimport type { VettedCandidate } from './discovery.js';\nimport type { ConsequenceSignal } from './consequence.js';\n\n/** The epistemic-grounding ledger for one discovery candidate. @public */\nexport interface CandidateGrounding {\n /** Gates that ran a real comparison AND the candidate survived. */\n readonly passed: readonly string[];\n /** Gates that could NOT test the candidate, or produced an unadjudicated result. */\n readonly gaps: readonly string[];\n /**\n * Honest ceiling — no mechanism test has run. This is PERMANENT for a\n * dimensional discovery candidate, not a placeholder: axis-compatibility is a\n * regime PROXY, and `entailed` (the strongest available signal — the\n * consequence re-derives a known canonical law) is a structural-consequence\n * check, not a mechanism test. A dedicated mechanism-proxy gate was assessed\n * 2026-07-04 and found NOT buildable without fabricating coupling physics the\n * catalog does not have (Phase 2 grounding; see the PI-instrument Phase 2\n * not-build note). Real mechanism lives in the ESTABLISHED-bridge world\n * (`upt confront`), not in candidate space. The field stays for honesty (the\n * ceiling is never a silent omission) and for the constructive path: growing\n * the canonical registry so `entailed` stops abstaining.\n */\n readonly mechanismTested: false;\n /**\n * Honest ceiling — this candidate is not confronted with real data. This is\n * PERMANENT for a dimensional discovery candidate, not a placeholder: a\n * cross-cluster dimensional identification is a coincidence review surface\n * (0/8 ever adjudicated genuine) with no implied observable to measure. Data\n * confrontation lives in the ESTABLISHED-bridge world (`upt confront`), which\n * the evidence-spine work grows. The scientific loop is closed not by\n * confronting candidates but by the FIREWALL: a candidate must graduate to an\n * established bridge (human review + citation) before it can be data-tested.\n * A propose→confront loop over candidates was assessed 2026-07-04 (PI-instrument\n * Phase 3) and found to have no confrontable target — the honest boundary is\n * that candidates are unconfrontable until promoted. The field stays for\n * honesty and flips only for a candidate that is `entailed` into (or graduates\n * to) a data-confronted relation.\n */\n readonly dataTested: false;\n}\n\n/**\n * Derive the grounding ledger from a candidate's existing falsifier results.\n * `consequence` is the optional consequence-annotation signal (from\n * `annotateConsequences`); omit it when the consequence layer did not run.\n *\n * Designed for `promising` candidates (the ones a PI reviews), but honest for\n * any candidate: it never reports a gate as `passed` unless it actually ran and\n * the candidate survived it.\n *\n * @public\n */\nexport function describeGrounding(\n c: VettedCandidate,\n consequence?: ConsequenceSignal,\n): CandidateGrounding {\n const passed: string[] = [];\n const gaps: string[] = [];\n\n // Numerical-consistency: the retrodiction filter always runs. It is `passed`\n // only when the candidate is actually consistent (a contradictory candidate's\n // failure is its verdict, not a grounding line — this view is for survivors).\n if (c.numericallyConsistent) passed.push('numerical-consistency');\n\n // Magnitude gate: ran only when both endpoints had a representative value.\n // An anchor-invariant ratio is fixed by the graph at every anchor, so its\n // agreement is an identity, not a survived test (persona finding L3).\n if (c.magnitudeChecked && c.magnitudeAnchorInvariant === true) {\n gaps.push(\n 'magnitude (anchor-invariant: the graph fixes this ratio at every anchor, so the match is an identity, not evidence)',\n );\n } else if (c.magnitudeChecked) {\n const parts: string[] = [];\n if (c.ordersApart != null) parts.push(`${c.ordersApart.toFixed(1)} orders`);\n if (c.magnitudeUsedAnchor) parts.push('anchor-derived');\n passed.push(parts.length ? `magnitude (${parts.join(', ')})` : 'magnitude');\n } else {\n gaps.push('magnitude (no representative value)');\n }\n\n // Axis-compatibility: honestly PARTIAL — \"≥1 regime axis resolved and agreed\",\n // never \"fully axis-checked\". Cleared only when an axis was resolved AND none\n // clashed. (A clash is the axis-clash verdict, not a survivor's grounding.)\n if (c.axisChecked && c.axisClashes.length === 0) {\n passed.push('axis-compatible (≥1 regime axis)');\n } else if (!c.axisChecked) {\n gaps.push('axis (regime attributes unresolved)');\n }\n\n // Consequence: ONLY `entailed` clears (the consequence re-derives a known\n // canonical law — a real check against standard physics). `novel-consequence`\n // is an UNADJUDICATED machine-surfaced relation — a weakness to investigate,\n // not a passed test. `inconclusive` means the consequence layer could not test.\n if (consequence === 'entailed') passed.push('consequence: entailed');\n else if (consequence === 'novel-consequence') gaps.push('consequence: novel (unadjudicated)');\n else if (consequence === 'inconclusive') gaps.push('consequence: inconclusive');\n\n return { passed, gaps, mechanismTested: false, dataTested: false };\n}\n\n/** An independent falsifier: a gate that can reject an identification the anchored graph cannot. */\nexport type IndependentFalsifier = 'magnitude' | 'axis' | 'consequence';\n\n/**\n * How far one candidate is from being a testable claim, dimension by dimension.\n * Deliberately NOT a score: the dimensions are orthogonal and are never summed.\n * @internal\n */\nexport interface CandidateReadiness {\n /** Connectivity. It makes a candidate worth a look; it is never evidence. */\n readonly structure: { readonly mergesComponents: boolean; readonly unlocks: number };\n /** `same-kind`: the names share a kind token. `dimension-only`: nothing but the dimension is shared. */\n readonly kind: 'same-kind' | 'dimension-only';\n /**\n * Independent falsifiers that ran and the candidate survived, and those that\n * abstained. An abstention is a missing test, never a pass. Numerical\n * consistency is not listed: it runs from a single anchor and cannot reach\n * the quantities an identification unlocks.\n */\n readonly falsifiers: {\n readonly survived: readonly IndependentFalsifier[];\n readonly abstained: readonly IndependentFalsifier[];\n };\n readonly mechanismTested: false;\n readonly dataTested: false;\n /** What would make the identification testable, each item derived from why a gate abstained. */\n readonly needs: {\n /** The premise every literal identification a≡b rests on. */\n readonly premise: string;\n /** Endpoints that need a representative magnitude for the magnitude falsifier to run. */\n readonly magnitudeFor: readonly string[];\n /** Axes and endpoints that need a stated regime for the axis falsifier to run. */\n readonly regimeFor: readonly { readonly axis: string; readonly endpoints: readonly string[] }[];\n /** The consequence check could not re-derive a known law. */\n readonly derivableConsequence: boolean;\n };\n /** The independent observation that would test the premise. */\n readonly observation: string;\n}\n\n/**\n * Derive a candidate's readiness from its falsifier fields.\n * @internal\n */\nexport function describeReadiness(c: VettedCandidate, consequence?: ConsequenceSignal): CandidateReadiness {\n const survived: IndependentFalsifier[] = [];\n const abstained: IndependentFalsifier[] = [];\n if (c.magnitudeChecked && c.magnitudeAnchorInvariant !== true) survived.push('magnitude');\n else abstained.push('magnitude');\n if (c.axisChecked && c.axisClashes.length === 0) survived.push('axis');\n else if (!c.axisChecked) abstained.push('axis');\n if (consequence === 'entailed') survived.push('consequence');\n else abstained.push('consequence');\n const kind = c.sameKind ? 'same-kind' : 'dimension-only';\n return {\n structure: { mergesComponents: c.mergesComponents, unlocks: c.unlocksFromAnchor.length },\n kind,\n falsifiers: { survived, abstained },\n mechanismTested: false,\n dataTested: false,\n needs: {\n premise:\n kind === 'same-kind'\n ? `${c.a} and ${c.b} are the same physical quantity, not two quantities of one kind`\n : `${c.a} and ${c.b} are the same physical quantity, not only both ${c.dim}`,\n magnitudeFor: c.magnitudeChecked ? [] : [...(c.magnitudeMissing ?? [])],\n regimeFor: c.axisChecked ? [] : (c.axisUnstated ?? []).map((u) => ({ axis: u.axis, endpoints: [...u.endpoints] })),\n derivableConsequence: consequence !== 'entailed',\n },\n observation:\n `measure ${c.a} and ${c.b} in one system that defines both: the identification predicts equal values ` +\n 'within uncertainty. If no system defines both, it has no observable content yet.',\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"identifiability.js","sourceRoot":"","sources":["../../src/composition/identifiability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identifiability.js","sourceRoot":"","sources":["../../src/composition/identifiability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAqDxD;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,KAA4B,EAC5B,UAA6B,EAC7B,eAAe,GAAsC,wBAAwB;IAE7E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC,CAAC;IACjD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,OAAO,EAAE,CAAC;QACf,OAAO,GAAG,KAAK,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC3B,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC9C,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACrD,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;uCACuC;AACvC,SAAS,YAAY,CACnB,KAA4B,EAC5B,UAAkB;IAElB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,OAAO,EAAE,CAAC;QACf,OAAO,GAAG,KAAK,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,SAAS;YACvC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACjB,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAA4B,EAC5B,UAA6B,EAC7B,UAAkB,EAClB,IAAI,GAA2B,EAAE;IAEjC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,wBAAwB,CAAC;IACzE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAEnE,mEAAmE;IACnE,mEAAmE;IACnE,+DAA+D;IAC/D,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CACpC,CAAC;IACF,MAAM,OAAO,GAAG,cAAc,CAAC,oBAAoB,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAE7E,MAAM,WAAW,GAAG,KAAK;SACtB,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU;QAC5B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC9C;SACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,OAA+B,CAAC;IACpC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC;SAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,OAAO,GAAG,kBAAkB,CAAC;IAC/B,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,GAAG,iBAAiB,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,oBAAoB,CAAC;IACjC,CAAC;IAED,MAAM,kBAAkB,GAAG,OAAO;QAChC,CAAC,CAAC,WAAW,CAAC,MAAM;QACpB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAExC,IAAI,gBAAgB,GAAa,EAAE,CAAC;IACpC,IAAI,OAAO,KAAK,kBAAkB,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,gBAAgB,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;aACpD,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CACpE;aACA,IAAI,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,KAAK;QACL,OAAO;QACP,WAAW;QACX,kBAAkB;QAClB,gBAAgB;QAChB,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE;KACvC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,KAA4B,EAC5B,UAA6B,EAC7B,IAAI,GAA2B,EAAE;IAEjC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvB,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,CACpD,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Identifiability classifier (Consequence 1 of\n * docs/planning/Bridge-Inference-Epistemics-Note.md, designed in\n * docs/planning/Identifiability-Classifier-Design-Note.md).\n *\n * Answers a STRUCTURAL question over the directed hypergraph of\n * `BridgeEdge`s: given a set of known quantities and a target quantity,\n * how many INDEPENDENT ways can the graph compute the target from the\n * knowns? The count drives the epistemics-note trichotomy:\n *\n * - under-determined — unreachable; needs more inputs or more physics.\n * - exactly-determined — one derivation; solvable (up to the\n * dimensionless constant dimensional analysis cannot supply).\n * - over-determined — ≥2 derivations; the surplus are FALSIFIABLE\n * consistency constraints (each predicts the target; they must\n * agree). The headline regime.\n * - given — the target is itself a known (degenerate); derivations\n * become cross-checks on the supplied value.\n *\n * This is STRUCTURAL, not parametric: it does not decide whether the\n * resulting nonlinear system has a unique numeric solution (undecidable\n * in general for closed-form evaluators). \"Independent derivation\" means\n * a structurally distinct edge, NOT a provably-independent formula — two\n * edges encoding the same relation are counted as two (an honest\n * over-count). The classifier PROPOSES; humans filter (Part-VI §XXVII-B),\n * exactly as `enumerateCompositions` does.\n *\n * @module composition/identifiability\n */\n\nimport type { BridgeEdge } from './edge.js';\nimport type { QuantityIdentification } from './compose.js';\nimport { QUANTITY_IDENTIFICATIONS } from './compose.js';\n\n/** The four-way structural-identifiability verdict. @public */\nexport type IdentifiabilityVerdict =\n | 'given'\n | 'under-determined'\n | 'exactly-determined'\n | 'over-determined';\n\n/** Options for the classifier. @public */\nexport interface IdentifiabilityOptions {\n /**\n * Quantity identifications honored when expanding determinability\n * (directed name-equivalences: `from` determinable ⟹ `to` determinable).\n * Defaults to the registered {@link QUANTITY_IDENTIFICATIONS}, mirroring\n * how `composeEdges` connects the graph. Pass `[]` for the pure\n * physical-edge graph.\n */\n readonly identifications?: readonly QuantityIdentification[];\n}\n\n/** The result of classifying one target against one known set. @public */\nexport interface IdentifiabilityResult {\n /** The target quantity name that was classified. */\n readonly target: string;\n /** The known-quantity names (deduplicated). */\n readonly known: readonly string[];\n readonly verdict: IdentifiabilityVerdict;\n /**\n * Ids of the distinct edges that independently derive the target from\n * the known set — sources determinable WITHOUT using any edge into the\n * target (so circular self-support is excluded). Empty ⟺ no physical\n * derivation (under-determined, or determined only by identity).\n */\n readonly derivations: readonly string[];\n /**\n * Redundant derivations = falsifiable consistency constraints. For a\n * non-given target the first derivation pins the value and the rest are\n * checks (`max(0, |derivations| − 1)`); for a given (measured) target\n * every derivation is a check (`|derivations|`).\n */\n readonly surplusConstraints: number;\n /**\n * For under-determined targets: the upstream quantities that block\n * determinability — on some path toward the target, not determinable\n * from the known set, not themselves known. Knowing a sufficient subset\n * moves the target toward determined. Empty when determinable.\n */\n readonly blockingFrontier: readonly string[];\n /** Every quantity determinable from the known set (the forward closure). */\n readonly determinable: readonly string[];\n}\n\n/**\n * The monotone forward closure: the least set ⊇ `knownNames` closed under\n * \"all of an edge's sources determinable ⟹ its target determinable\",\n * with identifications expanding it as directed name-equivalences.\n *\n * A parameter-free edge (empty `sources`) fires unconditionally — its\n * target is in every closure (a constant is always determinable).\n *\n * @public\n */\nexport function forwardClosure(\n edges: readonly BridgeEdge[],\n knownNames: readonly string[],\n identifications: readonly QuantityIdentification[] = QUANTITY_IDENTIFICATIONS,\n): Set<string> {\n const determinable = new Set<string>(knownNames);\n let changed = true;\n while (changed) {\n changed = false;\n for (const ident of identifications) {\n if (determinable.has(ident.from) && !determinable.has(ident.to)) {\n determinable.add(ident.to);\n changed = true;\n }\n }\n for (const e of edges) {\n if (determinable.has(e.target.name)) continue;\n if (e.sources.every((s) => determinable.has(s.name))) {\n determinable.add(e.target.name);\n changed = true;\n }\n }\n }\n return determinable;\n}\n\n/** The quantities from which `targetName` is forward-reachable (its\n * backward cone, target included). */\nfunction backwardCone(\n edges: readonly BridgeEdge[],\n targetName: string,\n): Set<string> {\n const cone = new Set<string>([targetName]);\n let changed = true;\n while (changed) {\n changed = false;\n for (const e of edges) {\n if (!cone.has(e.target.name)) continue;\n for (const s of e.sources) {\n if (!cone.has(s.name)) {\n cone.add(s.name);\n changed = true;\n }\n }\n }\n }\n return cone;\n}\n\n/**\n * Classify the structural identifiability of `targetName` given\n * `knownNames` over `edges`. See the module docs and\n * docs/planning/Identifiability-Classifier-Design-Note.md.\n *\n * @public\n */\nexport function classifyIdentifiability(\n edges: readonly BridgeEdge[],\n knownNames: readonly string[],\n targetName: string,\n opts: IdentifiabilityOptions = {},\n): IdentifiabilityResult {\n const identifications = opts.identifications ?? QUANTITY_IDENTIFICATIONS;\n const known = [...new Set(knownNames)];\n\n const determinable = forwardClosure(edges, known, identifications);\n\n // Derivations must not depend on the target itself: close over the\n // graph with every edge INTO the target removed (excludes circular\n // self-support — see the design note's worked counterexample).\n const edgesMinusIntoTarget = edges.filter(\n (e) => e.target.name !== targetName,\n );\n const dMinusT = forwardClosure(edgesMinusIntoTarget, known, identifications);\n\n const derivations = edges\n .filter(\n (e) =>\n e.target.name === targetName &&\n e.sources.every((s) => dMinusT.has(s.name)),\n )\n .map((e) => e.id);\n\n const isGiven = known.includes(targetName);\n let verdict: IdentifiabilityVerdict;\n if (isGiven) {\n verdict = 'given';\n } else if (!determinable.has(targetName)) {\n verdict = 'under-determined';\n } else if (derivations.length >= 2) {\n verdict = 'over-determined';\n } else {\n verdict = 'exactly-determined';\n }\n\n const surplusConstraints = isGiven\n ? derivations.length\n : Math.max(0, derivations.length - 1);\n\n let blockingFrontier: string[] = [];\n if (verdict === 'under-determined') {\n const knownSet = new Set(known);\n blockingFrontier = [...backwardCone(edges, targetName)]\n .filter(\n (q) => q !== targetName && !determinable.has(q) && !knownSet.has(q),\n )\n .sort();\n }\n\n return {\n target: targetName,\n known,\n verdict,\n derivations,\n surplusConstraints,\n blockingFrontier,\n determinable: [...determinable].sort(),\n };\n}\n\n/**\n * Classify every quantity that is some edge's target, against one known\n * set. The natural feeder for a retrodiction harness (mask a node, ask\n * whether the graph recovers it). Sorted by target name.\n *\n * @public\n */\nexport function classifyAll(\n edges: readonly BridgeEdge[],\n knownNames: readonly string[],\n opts: IdentifiabilityOptions = {},\n): IdentifiabilityResult[] {\n const targets = [...new Set(edges.map((e) => e.target.name))].sort();\n return targets.map((t) =>\n classifyIdentifiability(edges, knownNames, t, opts),\n );\n}\n"]}
@@ -3,9 +3,10 @@
3
3
  * `composeEdges()` beside the catalog (NOT replacing it; the catalog
4
4
  * in `src/bridges/index.ts` stays authoritative).
5
5
  *
6
- * See docs/planning/v0.8.0-Design.md and the calibration edges in
7
- * `./edges/calibration.js` for the pre-registered CT-1/CT-1b/CT-2
8
- * targets.
6
+ * See docs/planning/v0.8.0-Design.md for the design. The catalog edges are
7
+ * projected from `data/bridge-catalog.json` by `./catalog-graph.js`; the
8
+ * pre-registered CT-* composed ids are `REGISTERED_COMPOSITION_IDS` in
9
+ * `./enumerate.js`.
9
10
  *
10
11
  * @module composition
11
12
  */
@@ -13,7 +14,9 @@ export type { Quantity, RegimeAttributes } from './quantity.js';
13
14
  export { regimesDiffer } from './quantity.js';
14
15
  export type { BridgeEdge, EdgeConfidence, ValidityDomain } from './edge.js';
15
16
  /** Edge evaluation and the errors it throws. An unset coefficient is `CoefficientUnsetError`. */
16
- export { CoefficientUnsetError, CompositionAliasError, CompositionDimensionError, CompositionJunctionError, DomainViolationError, UndefinedCompositionError, evaluateEdge, } from './edge.js';
17
+ export { CoefficientUnsetError, CompositionAliasError, CompositionDimensionError, CompositionJunctionError, UndefinedCompositionError, evaluateEdge, } from './edge.js';
18
+ /** The errors one evaluation throws: the input checks, then the validity domain. */
19
+ export { DomainViolationError, DuplicateInputError, InputTypeError, MissingInputError, NonFiniteInputError, UnknownInputError, } from '../bridges/evaluation-errors.js';
17
20
  export type { ComposeOptions, QuantityIdentification } from './compose.js';
18
21
  export { composeEdges, minConfidence, QUANTITY_IDENTIFICATIONS, SOURCE_ALIAS_DISPOSITIONS, } from './compose.js';
19
22
  export type { AliasDisposition } from './compose.js';
@@ -28,7 +31,8 @@ export type { UncertaintyResult } from './uncertainty.js';
28
31
  export { propagateUncertainty } from './uncertainty.js';
29
32
  export type { IdentifiabilityVerdict, IdentifiabilityResult, IdentifiabilityOptions, } from './identifiability.js';
30
33
  export { classifyIdentifiability, classifyAll, forwardClosure, } from './identifiability.js';
31
- export type { RetrodictionOutcome, RetrodictionPrediction, RetrodictionResult, RetrodictionReport, RetrodictionOptions, } from './retrodiction.js';
34
+ /** The retrodiction harness's result, prediction, refusal, report and option types. */
35
+ export type { RetrodictionOutcome, RetrodictionPrediction, RetrodictionResult, RetrodictionRefusal, RetrodictionReport, RetrodictionOptions, } from './retrodiction.js';
32
36
  export { retrodict, retrodictNode } from './retrodiction.js';
33
37
  export type { DerivationExplanation, ExplainOptions, QuantityExplanation, } from './explain.js';
34
38
  export { explainQuantity } from './explain.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composition/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composition/index.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,18 @@
3
3
  * `composeEdges()` beside the catalog (NOT replacing it; the catalog
4
4
  * in `src/bridges/index.ts` stays authoritative).
5
5
  *
6
- * See docs/planning/v0.8.0-Design.md and the calibration edges in
7
- * `./edges/calibration.js` for the pre-registered CT-1/CT-1b/CT-2
8
- * targets.
6
+ * See docs/planning/v0.8.0-Design.md for the design. The catalog edges are
7
+ * projected from `data/bridge-catalog.json` by `./catalog-graph.js`; the
8
+ * pre-registered CT-* composed ids are `REGISTERED_COMPOSITION_IDS` in
9
+ * `./enumerate.js`.
9
10
  *
10
11
  * @module composition
11
12
  */
12
13
  export { regimesDiffer } from './quantity.js';
13
14
  /** Edge evaluation and the errors it throws. An unset coefficient is `CoefficientUnsetError`. */
14
- export { CoefficientUnsetError, CompositionAliasError, CompositionDimensionError, CompositionJunctionError, DomainViolationError, UndefinedCompositionError, evaluateEdge, } from './edge.js';
15
+ export { CoefficientUnsetError, CompositionAliasError, CompositionDimensionError, CompositionJunctionError, UndefinedCompositionError, evaluateEdge, } from './edge.js';
16
+ /** The errors one evaluation throws: the input checks, then the validity domain. */
17
+ export { DomainViolationError, DuplicateInputError, InputTypeError, MissingInputError, NonFiniteInputError, UnknownInputError, } from '../bridges/evaluation-errors.js';
15
18
  export { composeEdges, minConfidence, QUANTITY_IDENTIFICATIONS, SOURCE_ALIAS_DISPOSITIONS, } from './compose.js';
16
19
  export { consistencyRatio } from './consistency.js';
17
20
  export { M_SUN_KG } from '../core/constants.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/composition/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,iGAAiG;AACjG,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,GACb,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,uDAAuD;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EACL,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAOxD,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,cAAc,GACf,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAO7D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,6HAA6H;AAC7H,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAUnD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,0IAA0I;AAC1I,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChG,sEAAsE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/composition/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,iGAAiG;AACjG,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,oFAAoF;AACpF,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,uDAAuD;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EACL,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAOxD,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,cAAc,GACf,MAAM,sBAAsB,CAAC;AAW9B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAO7D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,6HAA6H;AAC7H,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAUnD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,0IAA0I;AAC1I,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChG,sEAAsE","sourcesContent":["/**\n * Composition graph (v0.8.0) — graph-lite `Quantity` / `BridgeEdge` /\n * `composeEdges()` beside the catalog (NOT replacing it; the catalog\n * in `src/bridges/index.ts` stays authoritative).\n *\n * See docs/planning/v0.8.0-Design.md for the design. The catalog edges are\n * projected from `data/bridge-catalog.json` by `./catalog-graph.js`; the\n * pre-registered CT-* composed ids are `REGISTERED_COMPOSITION_IDS` in\n * `./enumerate.js`.\n *\n * @module composition\n */\n\nexport type { Quantity, RegimeAttributes } from './quantity.js';\nexport { regimesDiffer } from './quantity.js';\n\nexport type { BridgeEdge, EdgeConfidence, ValidityDomain } from './edge.js';\n/** Edge evaluation and the errors it throws. An unset coefficient is `CoefficientUnsetError`. */\nexport {\n CoefficientUnsetError,\n CompositionAliasError,\n CompositionDimensionError,\n CompositionJunctionError,\n UndefinedCompositionError,\n evaluateEdge,\n} from './edge.js';\n/** The errors one evaluation throws: the input checks, then the validity domain. */\nexport {\n DomainViolationError,\n DuplicateInputError,\n InputTypeError,\n MissingInputError,\n NonFiniteInputError,\n UnknownInputError,\n} from '../bridges/evaluation-errors.js';\n\nexport type { ComposeOptions, QuantityIdentification } from './compose.js';\nexport {\n composeEdges,\n minConfidence,\n QUANTITY_IDENTIFICATIONS,\n SOURCE_ALIAS_DISPOSITIONS,\n} from './compose.js';\nexport type { AliasDisposition } from './compose.js';\n\nexport { consistencyRatio } from './consistency.js';\n\nexport { M_SUN_KG } from '../core/constants.js';\n/** The catalog graph and the edge for one graph id. */\nexport { catalogEdge, CATALOG_GRAPH } from './catalog-graph.js';\n\nexport {\n CANONICAL_GRAPH,\n canonicalToEdges,\n CANONICAL_CONSTANTS,\n} from './canonical-graph.js';\n\nexport type {\n CompositionCandidate,\n EnumerationReport,\n} from './enumerate.js';\nexport {\n enumerateCompositions,\n REGISTERED_COMPOSITION_IDS,\n} from './enumerate.js';\n\nexport type { UncertaintyResult } from './uncertainty.js';\nexport { propagateUncertainty } from './uncertainty.js';\n\nexport type {\n IdentifiabilityVerdict,\n IdentifiabilityResult,\n IdentifiabilityOptions,\n} from './identifiability.js';\nexport {\n classifyIdentifiability,\n classifyAll,\n forwardClosure,\n} from './identifiability.js';\n\n/** The retrodiction harness's result, prediction, refusal, report and option types. */\nexport type {\n RetrodictionOutcome,\n RetrodictionPrediction,\n RetrodictionResult,\n RetrodictionRefusal,\n RetrodictionReport,\n RetrodictionOptions,\n} from './retrodiction.js';\nexport { retrodict, retrodictNode } from './retrodiction.js';\n\nexport type {\n DerivationExplanation,\n ExplainOptions,\n QuantityExplanation,\n} from './explain.js';\nexport { explainQuantity } from './explain.js';\n/** The result of {@link evaluateRelation}. A value carries a dimension. An unset coefficient carries the formula. */\nexport type { Evaluation } from './evaluate-relation.js';\n/** Evaluate a catalog id or a canonical id. A sourced number is `kind: 'value'`. An unset coefficient is `kind: 'unset'`. */\nexport { evaluateRelation } from './evaluate-relation.js';\n\nexport type { Observable, ComposeSymbolicOptions } from './compose-symbolic.js';\nexport { composeSymbolic, SymbolicCompositionError } from './compose-symbolic.js';\nexport { SymbolicEvalError } from './expr-eval.js';\n\nexport type {\n VizStatus,\n VizJunction,\n VizCluster,\n VizOptions,\n VizModel,\n VizFilterStats,\n} from './graph-viz.js';\nexport { buildVizModel, edgeToJunction } from './graph-viz.js';\nexport { renderDotToSvg, SvgRendererUnavailableError } from './graph-viz-svg.js';\nexport type { DimensionAdjacency } from './dimension-adjacency.js';\nexport { dimensionAdjacency } from './dimension-adjacency.js';\nexport type { UserEquation, EquationLanding } from './user-equation.js';\nexport type { EquationAnalysis, EquationHint } from './user-equation.js';\nexport {\n parseUserEquation,\n suggestQuantities,\n suggestByDimension,\n equationLanding,\n analyzeUserEquation,\n UserEquationError,\n} from './user-equation.js';\n/** The catalog or parameter name a spelling means. Two spellings of one quantity that disagree throw {@link SynonymDisagreementError}. */\nexport { resolveQuantityName, SynonymDisagreementError } from '../dimensional/formula-names.js';\n// formatConnectedSummary stays internal — CLI reaches it via cli-api."]}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Load the MathTS peer without its console chatter reaching stderr.
3
+ *
4
+ * MathTS writes with `console.warn`/`console.error` directly (its `warnOnce`,
5
+ * the factorisation fallbacks, the WASM-integrity notice) and offers no option
6
+ * to route or silence them: `ImportOptions.silent` is for importing user
7
+ * functions, not for logging. The only way to keep that text out of a CLI's
8
+ * stderr is to replace the three process-global sinks for the duration of the
9
+ * call, which is what the two helpers here do, and nothing else in `src/` may
10
+ * do.
11
+ *
12
+ * THE INVARIANT: the replacement is process-global, so a concurrent caller in
13
+ * the same process (a worker pool thread, a vitest worker sharing a process)
14
+ * loses its console for the window. The window is therefore confined to the
15
+ * peer's ONE-TIME load and first-use smoke in `expr-simplify.ts` and
16
+ * `mathts-scalar-symbols.ts`: both cache the loaded module, so the sinks are
17
+ * replaced once per process, and never around a per-call parse or simplify.
18
+ * Both helpers restore the sinks in `finally`, so a throw inside the window
19
+ * cannot leave them replaced. `tests/composition/mathts-quiet.test.ts` scans
20
+ * `src/` for any other reassignment and traps the sinks during a call.
21
+ *
22
+ * @module composition/mathts-quiet
23
+ */
24
+ /** Run `fn` with the console sinks replaced, restoring them in `finally`. @internal */
25
+ export declare function quietlySync<T>(fn: () => T): T;
26
+ /** The asynchronous form of {@link quietlySync}: the window spans the awaited promise. @internal */
27
+ export declare function quietly<T>(fn: () => Promise<T>): Promise<T>;
28
+ //# sourceMappingURL=mathts-quiet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mathts-quiet.d.ts","sourceRoot":"","sources":["../../src/composition/mathts-quiet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAsBH,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAO7C;AAED,oGAAoG;AACpG,wBAAsB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOjE"}