universal-physics-tensor 9.0.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (824) hide show
  1. package/README.md +19 -16
  2. package/data/atlas/atlas.json +55 -44
  3. package/data/atlas/atlas.jsonld +1 -1
  4. package/data/atlas/diffusion.json +19 -18
  5. package/data/atlas/oscillators.json +15 -10
  6. package/data/atlas/waves.json +23 -18
  7. package/data/bridge-catalog.json +886 -1473
  8. package/data/bridge-catalog.schema.json +349 -132
  9. package/data/quantities.json +53 -19
  10. package/data/schemas/atlas-record.v0.json +184 -46
  11. package/data/units.json +33 -4
  12. package/dist/atlas/applicability.d.ts.map +1 -1
  13. package/dist/atlas/applicability.js +14 -3
  14. package/dist/atlas/applicability.js.map +1 -1
  15. package/dist/atlas/association.js.map +1 -1
  16. package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
  17. package/dist/atlas/benchmark/backend-shapes.js +5 -1
  18. package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
  19. package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
  20. package/dist/atlas/benchmark/baselines.js +8 -0
  21. package/dist/atlas/benchmark/baselines.js.map +1 -1
  22. package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
  23. package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
  24. package/dist/atlas/benchmark/hybrid-retrieval.js +15 -8
  25. package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
  26. package/dist/atlas/benchmark/leakage.js.map +1 -1
  27. package/dist/atlas/benchmark/loader.js.map +1 -1
  28. package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
  29. package/dist/atlas/benchmark/run-atlas.js +14 -2
  30. package/dist/atlas/benchmark/run-atlas.js.map +1 -1
  31. package/dist/atlas/benchmark/stats.d.ts +1 -1
  32. package/dist/atlas/benchmark/stats.d.ts.map +1 -1
  33. package/dist/atlas/benchmark/stats.js +1 -1
  34. package/dist/atlas/benchmark/stats.js.map +1 -1
  35. package/dist/atlas/benchmark/study.js.map +1 -1
  36. package/dist/atlas/benchmark/types.js.map +1 -1
  37. package/dist/atlas/bridge-record.d.ts +4 -4
  38. package/dist/atlas/bridge-record.d.ts.map +1 -1
  39. package/dist/atlas/bridge-record.js +6 -6
  40. package/dist/atlas/bridge-record.js.map +1 -1
  41. package/dist/atlas/catalog-formal-ref.js.map +1 -1
  42. package/dist/atlas/chain-pipeline.d.ts +0 -11
  43. package/dist/atlas/chain-pipeline.d.ts.map +1 -1
  44. package/dist/atlas/chain-pipeline.js +5 -16
  45. package/dist/atlas/chain-pipeline.js.map +1 -1
  46. package/dist/atlas/composition-table.js.map +1 -1
  47. package/dist/atlas/conventions.js.map +1 -1
  48. package/dist/atlas/coverage.d.ts +2 -2
  49. package/dist/atlas/coverage.js.map +1 -1
  50. package/dist/atlas/derivation.js.map +1 -1
  51. package/dist/atlas/derive-evidence.d.ts +6 -4
  52. package/dist/atlas/derive-evidence.d.ts.map +1 -1
  53. package/dist/atlas/derive-evidence.js +7 -2
  54. package/dist/atlas/derive-evidence.js.map +1 -1
  55. package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
  56. package/dist/atlas/diffusion/bridges-closure.js +0 -5
  57. package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
  58. package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
  59. package/dist/atlas/diffusion/bridges.js +0 -3
  60. package/dist/atlas/diffusion/bridges.js.map +1 -1
  61. package/dist/atlas/diffusion/dimensions.js.map +1 -1
  62. package/dist/atlas/diffusion/index.d.ts +1 -1
  63. package/dist/atlas/diffusion/index.d.ts.map +1 -1
  64. package/dist/atlas/diffusion/index.js.map +1 -1
  65. package/dist/atlas/diffusion/models.js.map +1 -1
  66. package/dist/atlas/diffusion/numerics.js.map +1 -1
  67. package/dist/atlas/error-algebra.d.ts +6 -0
  68. package/dist/atlas/error-algebra.d.ts.map +1 -1
  69. package/dist/atlas/error-algebra.js +26 -0
  70. package/dist/atlas/error-algebra.js.map +1 -1
  71. package/dist/atlas/export.d.ts +18 -2
  72. package/dist/atlas/export.d.ts.map +1 -1
  73. package/dist/atlas/export.js +9 -3
  74. package/dist/atlas/export.js.map +1 -1
  75. package/dist/atlas/families.d.ts +19 -2
  76. package/dist/atlas/families.d.ts.map +1 -1
  77. package/dist/atlas/families.js +26 -3
  78. package/dist/atlas/families.js.map +1 -1
  79. package/dist/atlas/family.d.ts +27 -0
  80. package/dist/atlas/family.d.ts.map +1 -0
  81. package/dist/atlas/family.js +12 -0
  82. package/dist/atlas/family.js.map +1 -0
  83. package/dist/atlas/index.d.ts +3 -2
  84. package/dist/atlas/index.d.ts.map +1 -1
  85. package/dist/atlas/index.js +2 -1
  86. package/dist/atlas/index.js.map +1 -1
  87. package/dist/atlas/link-prediction.d.ts +1 -1
  88. package/dist/atlas/link-prediction.d.ts.map +1 -1
  89. package/dist/atlas/link-prediction.js.map +1 -1
  90. package/dist/atlas/model.js.map +1 -1
  91. package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
  92. package/dist/atlas/oscillators/bridges-coarse.js +0 -1
  93. package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
  94. package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
  95. package/dist/atlas/oscillators/bridges-exact.js +0 -3
  96. package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
  97. package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
  98. package/dist/atlas/oscillators/bridges-limits.js +0 -2
  99. package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
  100. package/dist/atlas/oscillators/dimensions.js.map +1 -1
  101. package/dist/atlas/oscillators/index.d.ts +1 -16
  102. package/dist/atlas/oscillators/index.d.ts.map +1 -1
  103. package/dist/atlas/oscillators/index.js.map +1 -1
  104. package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
  105. package/dist/atlas/oscillators/models.js.map +1 -1
  106. package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
  107. package/dist/atlas/oscillators/norm-transport.js.map +1 -1
  108. package/dist/atlas/oscillators/norms.js.map +1 -1
  109. package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
  110. package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
  111. package/dist/atlas/oscillators/phase-translation.js.map +1 -1
  112. package/dist/atlas/oscillators/position-translation.js.map +1 -1
  113. package/dist/atlas/oscillators/rejections.js.map +1 -1
  114. package/dist/atlas/path-bound.js.map +1 -1
  115. package/dist/atlas/physjs-entries.generated.js.map +1 -1
  116. package/dist/atlas/physjs-ref.d.ts +79 -45
  117. package/dist/atlas/physjs-ref.d.ts.map +1 -1
  118. package/dist/atlas/physjs-ref.js +143 -62
  119. package/dist/atlas/physjs-ref.js.map +1 -1
  120. package/dist/atlas/physjs-reviewed.d.ts +31 -0
  121. package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
  122. package/dist/atlas/physjs-reviewed.js +194 -0
  123. package/dist/atlas/physjs-reviewed.js.map +1 -0
  124. package/dist/atlas/poster/associations.js.map +1 -1
  125. package/dist/atlas/poster/derivations.js.map +1 -1
  126. package/dist/atlas/poster/statements.js.map +1 -1
  127. package/dist/atlas/proof-target.js.map +1 -1
  128. package/dist/atlas/public.d.ts +2 -1
  129. package/dist/atlas/public.d.ts.map +1 -1
  130. package/dist/atlas/public.js +2 -1
  131. package/dist/atlas/public.js.map +1 -1
  132. package/dist/atlas/regime.js.map +1 -1
  133. package/dist/atlas/serialize.d.ts +18 -12
  134. package/dist/atlas/serialize.d.ts.map +1 -1
  135. package/dist/atlas/serialize.js +28 -18
  136. package/dist/atlas/serialize.js.map +1 -1
  137. package/dist/atlas/statement.js.map +1 -1
  138. package/dist/atlas/translation-registry.js.map +1 -1
  139. package/dist/atlas/translation.js.map +1 -1
  140. package/dist/atlas/types.d.ts +9 -2
  141. package/dist/atlas/types.d.ts.map +1 -1
  142. package/dist/atlas/types.js +1 -1
  143. package/dist/atlas/types.js.map +1 -1
  144. package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
  145. package/dist/atlas/waves/bridges-closure.js +0 -3
  146. package/dist/atlas/waves/bridges-closure.js.map +1 -1
  147. package/dist/atlas/waves/bridges.d.ts.map +1 -1
  148. package/dist/atlas/waves/bridges.js +0 -4
  149. package/dist/atlas/waves/bridges.js.map +1 -1
  150. package/dist/atlas/waves/index.d.ts +1 -1
  151. package/dist/atlas/waves/index.d.ts.map +1 -1
  152. package/dist/atlas/waves/index.js.map +1 -1
  153. package/dist/atlas/waves/models.js.map +1 -1
  154. package/dist/atlas/waves/numerics.js.map +1 -1
  155. package/dist/atlas/witness-artifact.js.map +1 -1
  156. package/dist/atlas/witness-dominance.d.ts +4 -3
  157. package/dist/atlas/witness-dominance.d.ts.map +1 -1
  158. package/dist/atlas/witness-dominance.js +15 -5
  159. package/dist/atlas/witness-dominance.js.map +1 -1
  160. package/dist/atlas/witness-numeric.d.ts +8 -4
  161. package/dist/atlas/witness-numeric.d.ts.map +1 -1
  162. package/dist/atlas/witness-numeric.js +27 -2
  163. package/dist/atlas/witness-numeric.js.map +1 -1
  164. package/dist/atlas/witness-result.d.ts +7 -1
  165. package/dist/atlas/witness-result.d.ts.map +1 -1
  166. package/dist/atlas/witness-result.js.map +1 -1
  167. package/dist/atlas/witness-specs.js.map +1 -1
  168. package/dist/atlas/witness-symbolic.js.map +1 -1
  169. package/dist/atlas/witnesses/quantum-support.js.map +1 -1
  170. package/dist/bridges/caller-table.d.ts +1 -1
  171. package/dist/bridges/caller-table.d.ts.map +1 -1
  172. package/dist/bridges/caller-table.js.map +1 -1
  173. package/dist/bridges/carrier-sign.d.ts.map +1 -1
  174. package/dist/bridges/carrier-sign.js +8 -3
  175. package/dist/bridges/carrier-sign.js.map +1 -1
  176. package/dist/bridges/catalog-adapter.d.ts +12 -3
  177. package/dist/bridges/catalog-adapter.d.ts.map +1 -1
  178. package/dist/bridges/catalog-adapter.js +17 -9
  179. package/dist/bridges/catalog-adapter.js.map +1 -1
  180. package/dist/bridges/catalog-load.d.ts +12 -2
  181. package/dist/bridges/catalog-load.d.ts.map +1 -1
  182. package/dist/bridges/catalog-load.js +171 -8
  183. package/dist/bridges/catalog-load.js.map +1 -1
  184. package/dist/bridges/catalog-types.d.ts +48 -24
  185. package/dist/bridges/catalog-types.d.ts.map +1 -1
  186. package/dist/bridges/catalog-types.js.map +1 -1
  187. package/dist/bridges/coefficient-statement.js +1 -5
  188. package/dist/bridges/coefficient-statement.js.map +1 -1
  189. package/dist/bridges/confrontation-coverage.js.map +1 -1
  190. package/dist/bridges/confrontations.d.ts +1 -1
  191. package/dist/bridges/confrontations.d.ts.map +1 -1
  192. package/dist/bridges/confrontations.js +1 -1
  193. package/dist/bridges/confrontations.js.map +1 -1
  194. package/dist/bridges/evaluation-errors.d.ts +15 -2
  195. package/dist/bridges/evaluation-errors.d.ts.map +1 -1
  196. package/dist/bridges/evaluation-errors.js +20 -2
  197. package/dist/bridges/evaluation-errors.js.map +1 -1
  198. package/dist/bridges/evaluator-inputs.js.map +1 -1
  199. package/dist/bridges/evaluators.d.ts +17 -2
  200. package/dist/bridges/evaluators.d.ts.map +1 -1
  201. package/dist/bridges/evaluators.js +49 -16
  202. package/dist/bridges/evaluators.js.map +1 -1
  203. package/dist/bridges/expr-parse.d.ts +27 -4
  204. package/dist/bridges/expr-parse.d.ts.map +1 -1
  205. package/dist/bridges/expr-parse.js +90 -10
  206. package/dist/bridges/expr-parse.js.map +1 -1
  207. package/dist/bridges/holds.d.ts +5 -1
  208. package/dist/bridges/holds.d.ts.map +1 -1
  209. package/dist/bridges/holds.js +18 -3
  210. package/dist/bridges/holds.js.map +1 -1
  211. package/dist/bridges/index.d.ts +15 -14
  212. package/dist/bridges/index.d.ts.map +1 -1
  213. package/dist/bridges/index.js +14 -15
  214. package/dist/bridges/index.js.map +1 -1
  215. package/dist/bridges/input-contract.js.map +1 -1
  216. package/dist/bridges/membership.d.ts +5 -3
  217. package/dist/bridges/membership.d.ts.map +1 -1
  218. package/dist/bridges/membership.js +5 -6
  219. package/dist/bridges/membership.js.map +1 -1
  220. package/dist/bridges/notices.js.map +1 -1
  221. package/dist/bridges/observations/types.js.map +1 -1
  222. package/dist/bridges/rejected.d.ts +11 -17
  223. package/dist/bridges/rejected.d.ts.map +1 -1
  224. package/dist/bridges/rejected.js +13 -68
  225. package/dist/bridges/rejected.js.map +1 -1
  226. package/dist/bridges/relation-eval.d.ts +5 -6
  227. package/dist/bridges/relation-eval.d.ts.map +1 -1
  228. package/dist/bridges/relation-eval.js +9 -38
  229. package/dist/bridges/relation-eval.js.map +1 -1
  230. package/dist/bridges/rhs-registry.js.map +1 -1
  231. package/dist/bridges/sensitivity.d.ts +11 -3
  232. package/dist/bridges/sensitivity.d.ts.map +1 -1
  233. package/dist/bridges/sensitivity.js +24 -10
  234. package/dist/bridges/sensitivity.js.map +1 -1
  235. package/dist/bridges/tensor-index.js.map +1 -1
  236. package/dist/bridges/types.d.ts +1 -7
  237. package/dist/bridges/types.d.ts.map +1 -1
  238. package/dist/bridges/types.js +1 -4
  239. package/dist/bridges/types.js.map +1 -1
  240. package/dist/canonical/canonical-equation.js.map +1 -1
  241. package/dist/canonical/dimensional-fields.js.map +1 -1
  242. package/dist/canonical/entries/_l1-build.js.map +1 -1
  243. package/dist/canonical/entries/atomic.js.map +1 -1
  244. package/dist/canonical/entries/condensed-matter.js +4 -4
  245. package/dist/canonical/entries/condensed-matter.js.map +1 -1
  246. package/dist/canonical/entries/dimensional-classics.js +2 -2
  247. package/dist/canonical/entries/dimensional-classics.js.map +1 -1
  248. package/dist/canonical/entries/electromagnetism.js +2 -2
  249. package/dist/canonical/entries/electromagnetism.js.map +1 -1
  250. package/dist/canonical/entries/fluids-waves.js.map +1 -1
  251. package/dist/canonical/entries/mechanics.js.map +1 -1
  252. package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
  253. package/dist/canonical/entries/nonmonomial.js +29 -22
  254. package/dist/canonical/entries/nonmonomial.js.map +1 -1
  255. package/dist/canonical/entries/relativity.js.map +1 -1
  256. package/dist/canonical/entries/statistical-mechanics.js +5 -5
  257. package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
  258. package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
  259. package/dist/canonical/linkage.d.ts +29 -4
  260. package/dist/canonical/linkage.d.ts.map +1 -1
  261. package/dist/canonical/linkage.js +31 -29
  262. package/dist/canonical/linkage.js.map +1 -1
  263. package/dist/canonical/normal-form.d.ts +0 -8
  264. package/dist/canonical/normal-form.d.ts.map +1 -1
  265. package/dist/canonical/normal-form.js +17 -12
  266. package/dist/canonical/normal-form.js.map +1 -1
  267. package/dist/canonical/registry.js.map +1 -1
  268. package/dist/canonical/residual.js.map +1 -1
  269. package/dist/canonical/seed-l-layer.d.ts +7 -1
  270. package/dist/canonical/seed-l-layer.d.ts.map +1 -1
  271. package/dist/canonical/seed-l-layer.js +7 -1
  272. package/dist/canonical/seed-l-layer.js.map +1 -1
  273. package/dist/canonical/structural.d.ts +21 -0
  274. package/dist/canonical/structural.d.ts.map +1 -1
  275. package/dist/canonical/structural.js +24 -4
  276. package/dist/canonical/structural.js.map +1 -1
  277. package/dist/cases/brownian-sphere.js +4 -4
  278. package/dist/cases/brownian-sphere.js.map +1 -1
  279. package/dist/cases/damped-resonator.js +2 -2
  280. package/dist/cases/damped-resonator.js.map +1 -1
  281. package/dist/cases/index.js.map +1 -1
  282. package/dist/cases/kepler-rv.js.map +1 -1
  283. package/dist/cases/lumped-cooling.js +1 -1
  284. package/dist/cases/lumped-cooling.js.map +1 -1
  285. package/dist/cases/quadrature.js.map +1 -1
  286. package/dist/cases/resistor-noise.js +3 -3
  287. package/dist/cases/resistor-noise.js.map +1 -1
  288. package/dist/cases/skin-depth.js.map +1 -1
  289. package/dist/cases/types.js.map +1 -1
  290. package/dist/cli/args.d.ts +7 -2
  291. package/dist/cli/args.d.ts.map +1 -1
  292. package/dist/cli/args.js +18 -2
  293. package/dist/cli/args.js.map +1 -1
  294. package/dist/cli/bindings.d.ts +13 -0
  295. package/dist/cli/bindings.d.ts.map +1 -0
  296. package/dist/cli/bindings.js +32 -0
  297. package/dist/cli/bindings.js.map +1 -0
  298. package/dist/cli/closed-form-range.js.map +1 -1
  299. package/dist/cli/command.js.map +1 -1
  300. package/dist/cli/commands/_atlas-map.d.ts +3 -3
  301. package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
  302. package/dist/cli/commands/_atlas-map.js +43 -18
  303. package/dist/cli/commands/_atlas-map.js.map +1 -1
  304. package/dist/cli/commands/_atlas-route.js.map +1 -1
  305. package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
  306. package/dist/cli/commands/_discovery-opts.js +42 -7
  307. package/dist/cli/commands/_discovery-opts.js.map +1 -1
  308. package/dist/cli/commands/atlas.d.ts.map +1 -1
  309. package/dist/cli/commands/atlas.js +1 -3
  310. package/dist/cli/commands/atlas.js.map +1 -1
  311. package/dist/cli/commands/audit.d.ts.map +1 -1
  312. package/dist/cli/commands/audit.js +13 -20
  313. package/dist/cli/commands/audit.js.map +1 -1
  314. package/dist/cli/commands/axes.js.map +1 -1
  315. package/dist/cli/commands/candidates.d.ts.map +1 -1
  316. package/dist/cli/commands/candidates.js +16 -8
  317. package/dist/cli/commands/candidates.js.map +1 -1
  318. package/dist/cli/commands/canonical.js.map +1 -1
  319. package/dist/cli/commands/chain.js +1 -1
  320. package/dist/cli/commands/chain.js.map +1 -1
  321. package/dist/cli/commands/confront.d.ts.map +1 -1
  322. package/dist/cli/commands/confront.js +22 -14
  323. package/dist/cli/commands/confront.js.map +1 -1
  324. package/dist/cli/commands/connectors.js.map +1 -1
  325. package/dist/cli/commands/coverage.js.map +1 -1
  326. package/dist/cli/commands/derive.d.ts.map +1 -1
  327. package/dist/cli/commands/derive.js +42 -17
  328. package/dist/cli/commands/derive.js.map +1 -1
  329. package/dist/cli/commands/discover.d.ts.map +1 -1
  330. package/dist/cli/commands/discover.js +15 -9
  331. package/dist/cli/commands/discover.js.map +1 -1
  332. package/dist/cli/commands/eval.d.ts.map +1 -1
  333. package/dist/cli/commands/eval.js +13 -10
  334. package/dist/cli/commands/eval.js.map +1 -1
  335. package/dist/cli/commands/evaluate.d.ts.map +1 -1
  336. package/dist/cli/commands/evaluate.js +53 -31
  337. package/dist/cli/commands/evaluate.js.map +1 -1
  338. package/dist/cli/commands/explain.d.ts.map +1 -1
  339. package/dist/cli/commands/explain.js +14 -7
  340. package/dist/cli/commands/explain.js.map +1 -1
  341. package/dist/cli/commands/frontier.js.map +1 -1
  342. package/dist/cli/commands/ground.d.ts.map +1 -1
  343. package/dist/cli/commands/ground.js +40 -10
  344. package/dist/cli/commands/ground.js.map +1 -1
  345. package/dist/cli/commands/index.js.map +1 -1
  346. package/dist/cli/commands/map.d.ts.map +1 -1
  347. package/dist/cli/commands/map.js +82 -89
  348. package/dist/cli/commands/map.js.map +1 -1
  349. package/dist/cli/commands/metric.d.ts.map +1 -1
  350. package/dist/cli/commands/metric.js +53 -18
  351. package/dist/cli/commands/metric.js.map +1 -1
  352. package/dist/cli/commands/path.js +4 -4
  353. package/dist/cli/commands/path.js.map +1 -1
  354. package/dist/cli/commands/predict.js.map +1 -1
  355. package/dist/cli/commands/priority.js.map +1 -1
  356. package/dist/cli/commands/probe.d.ts.map +1 -1
  357. package/dist/cli/commands/probe.js +50 -26
  358. package/dist/cli/commands/probe.js.map +1 -1
  359. package/dist/cli/commands/recover.js +1 -1
  360. package/dist/cli/commands/recover.js.map +1 -1
  361. package/dist/cli/commands/regime.d.ts +5 -4
  362. package/dist/cli/commands/regime.d.ts.map +1 -1
  363. package/dist/cli/commands/regime.js +24 -26
  364. package/dist/cli/commands/regime.js.map +1 -1
  365. package/dist/cli/commands/retrieve.d.ts.map +1 -1
  366. package/dist/cli/commands/retrieve.js +22 -14
  367. package/dist/cli/commands/retrieve.js.map +1 -1
  368. package/dist/cli/commands/search.d.ts.map +1 -1
  369. package/dist/cli/commands/search.js +8 -4
  370. package/dist/cli/commands/search.js.map +1 -1
  371. package/dist/cli/commands/symbolic.d.ts.map +1 -1
  372. package/dist/cli/commands/symbolic.js +13 -9
  373. package/dist/cli/commands/symbolic.js.map +1 -1
  374. package/dist/cli/commands/testplan.js +1 -1
  375. package/dist/cli/commands/testplan.js.map +1 -1
  376. package/dist/cli/conventions.js.map +1 -1
  377. package/dist/cli/determination.js.map +1 -1
  378. package/dist/cli/errors.js.map +1 -1
  379. package/dist/cli/euler-guard.js.map +1 -1
  380. package/dist/cli/eval-numbers.js.map +1 -1
  381. package/dist/cli/expr-print.d.ts +29 -2
  382. package/dist/cli/expr-print.d.ts.map +1 -1
  383. package/dist/cli/expr-print.js +46 -2
  384. package/dist/cli/expr-print.js.map +1 -1
  385. package/dist/cli/flag-help.js.map +1 -1
  386. package/dist/cli/graphs.js.map +1 -1
  387. package/dist/cli/library-defaults.d.ts +19 -0
  388. package/dist/cli/library-defaults.d.ts.map +1 -0
  389. package/dist/cli/library-defaults.js +22 -0
  390. package/dist/cli/library-defaults.js.map +1 -0
  391. package/dist/cli/main.js +7 -3
  392. package/dist/cli/main.js.map +1 -1
  393. package/dist/cli/map-evidence.js.map +1 -1
  394. package/dist/cli/output.d.ts +3 -6
  395. package/dist/cli/output.d.ts.map +1 -1
  396. package/dist/cli/output.js.map +1 -1
  397. package/dist/cli/published-url.js.map +1 -1
  398. package/dist/cli/record-reach.d.ts +6 -0
  399. package/dist/cli/record-reach.d.ts.map +1 -1
  400. package/dist/cli/record-reach.js +16 -10
  401. package/dist/cli/record-reach.js.map +1 -1
  402. package/dist/cli/record-tables.js +1 -1
  403. package/dist/cli/record-tables.js.map +1 -1
  404. package/dist/cli/record.d.ts.map +1 -1
  405. package/dist/cli/record.js +31 -12
  406. package/dist/cli/record.js.map +1 -1
  407. package/dist/cli/search-index.d.ts +5 -0
  408. package/dist/cli/search-index.d.ts.map +1 -1
  409. package/dist/cli/search-index.js +12 -1
  410. package/dist/cli/search-index.js.map +1 -1
  411. package/dist/cli/statuses.js.map +1 -1
  412. package/dist/cli/top-level-help.js.map +1 -1
  413. package/dist/cli/version.js.map +1 -1
  414. package/dist/cli-api.d.ts +15 -9
  415. package/dist/cli-api.d.ts.map +1 -1
  416. package/dist/cli-api.js +14 -13
  417. package/dist/cli-api.js.map +1 -1
  418. package/dist/composition/adjudication.js.map +1 -1
  419. package/dist/composition/aliases.js.map +1 -1
  420. package/dist/composition/audit-coverage.d.ts +2 -0
  421. package/dist/composition/audit-coverage.d.ts.map +1 -1
  422. package/dist/composition/audit-coverage.js.map +1 -1
  423. package/dist/composition/axes.d.ts +12 -0
  424. package/dist/composition/axes.d.ts.map +1 -1
  425. package/dist/composition/axes.js +18 -6
  426. package/dist/composition/axes.js.map +1 -1
  427. package/dist/composition/axis-audit.js.map +1 -1
  428. package/dist/composition/bridge-analysis.d.ts +0 -18
  429. package/dist/composition/bridge-analysis.d.ts.map +1 -1
  430. package/dist/composition/bridge-analysis.js +57 -47
  431. package/dist/composition/bridge-analysis.js.map +1 -1
  432. package/dist/composition/bridge-prediction.d.ts +5 -1
  433. package/dist/composition/bridge-prediction.d.ts.map +1 -1
  434. package/dist/composition/bridge-prediction.js +12 -16
  435. package/dist/composition/bridge-prediction.js.map +1 -1
  436. package/dist/composition/buckingham-filter.js.map +1 -1
  437. package/dist/composition/canonical-compare.d.ts.map +1 -1
  438. package/dist/composition/canonical-compare.js +12 -2
  439. package/dist/composition/canonical-compare.js.map +1 -1
  440. package/dist/composition/canonical-graph.d.ts +8 -9
  441. package/dist/composition/canonical-graph.d.ts.map +1 -1
  442. package/dist/composition/canonical-graph.js +25 -67
  443. package/dist/composition/canonical-graph.js.map +1 -1
  444. package/dist/composition/canonical-json.js.map +1 -1
  445. package/dist/composition/canonical-prefactors.js.map +1 -1
  446. package/dist/composition/catalog-graph.d.ts.map +1 -1
  447. package/dist/composition/catalog-graph.js +6 -20
  448. package/dist/composition/catalog-graph.js.map +1 -1
  449. package/dist/composition/chain-candidate.d.ts +2 -0
  450. package/dist/composition/chain-candidate.d.ts.map +1 -1
  451. package/dist/composition/chain-candidate.js +2 -0
  452. package/dist/composition/chain-candidate.js.map +1 -1
  453. package/dist/composition/chain-match.js.map +1 -1
  454. package/dist/composition/chain-regime.js.map +1 -1
  455. package/dist/composition/chain-result.js.map +1 -1
  456. package/dist/composition/compose-surface.js.map +1 -1
  457. package/dist/composition/compose-symbolic.js.map +1 -1
  458. package/dist/composition/compose.d.ts.map +1 -1
  459. package/dist/composition/compose.js +153 -36
  460. package/dist/composition/compose.js.map +1 -1
  461. package/dist/composition/composition-recovery.js.map +1 -1
  462. package/dist/composition/consequence.d.ts.map +1 -1
  463. package/dist/composition/consequence.js +15 -6
  464. package/dist/composition/consequence.js.map +1 -1
  465. package/dist/composition/consistency.js.map +1 -1
  466. package/dist/composition/descriptor.d.ts +1 -1
  467. package/dist/composition/descriptor.d.ts.map +1 -1
  468. package/dist/composition/descriptor.js.map +1 -1
  469. package/dist/composition/dimension-adjacency.js.map +1 -1
  470. package/dist/composition/discovery.d.ts +21 -11
  471. package/dist/composition/discovery.d.ts.map +1 -1
  472. package/dist/composition/discovery.js +81 -21
  473. package/dist/composition/discovery.js.map +1 -1
  474. package/dist/composition/edge.d.ts +19 -8
  475. package/dist/composition/edge.d.ts.map +1 -1
  476. package/dist/composition/edge.js +24 -11
  477. package/dist/composition/edge.js.map +1 -1
  478. package/dist/composition/enumerate.d.ts +2 -2
  479. package/dist/composition/enumerate.d.ts.map +1 -1
  480. package/dist/composition/enumerate.js.map +1 -1
  481. package/dist/composition/evaluate-relation.js.map +1 -1
  482. package/dist/composition/explain.d.ts +14 -9
  483. package/dist/composition/explain.d.ts.map +1 -1
  484. package/dist/composition/explain.js +46 -13
  485. package/dist/composition/explain.js.map +1 -1
  486. package/dist/composition/expr-eval.js.map +1 -1
  487. package/dist/composition/expr-simplify.d.ts.map +1 -1
  488. package/dist/composition/expr-simplify.js +9 -39
  489. package/dist/composition/expr-simplify.js.map +1 -1
  490. package/dist/composition/expr-subst.js.map +1 -1
  491. package/dist/composition/formula-shape.d.ts +9 -0
  492. package/dist/composition/formula-shape.d.ts.map +1 -1
  493. package/dist/composition/formula-shape.js +54 -0
  494. package/dist/composition/formula-shape.js.map +1 -1
  495. package/dist/composition/frontier-account.d.ts +3 -2
  496. package/dist/composition/frontier-account.d.ts.map +1 -1
  497. package/dist/composition/frontier-account.js +7 -3
  498. package/dist/composition/frontier-account.js.map +1 -1
  499. package/dist/composition/graph-viz-svg.js.map +1 -1
  500. package/dist/composition/graph-viz.js.map +1 -1
  501. package/dist/composition/grounding.js.map +1 -1
  502. package/dist/composition/identifiability.js.map +1 -1
  503. package/dist/composition/index.d.ts +6 -4
  504. package/dist/composition/index.d.ts.map +1 -1
  505. package/dist/composition/index.js +4 -3
  506. package/dist/composition/index.js.map +1 -1
  507. package/dist/composition/mathts-quiet.d.ts +28 -0
  508. package/dist/composition/mathts-quiet.d.ts.map +1 -0
  509. package/dist/composition/mathts-quiet.js +56 -0
  510. package/dist/composition/mathts-quiet.js.map +1 -0
  511. package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
  512. package/dist/composition/mathts-scalar-symbols.js +18 -34
  513. package/dist/composition/mathts-scalar-symbols.js.map +1 -1
  514. package/dist/composition/not-composable-seeds.d.ts +3 -1
  515. package/dist/composition/not-composable-seeds.d.ts.map +1 -1
  516. package/dist/composition/not-composable-seeds.js +2 -0
  517. package/dist/composition/not-composable-seeds.js.map +1 -1
  518. package/dist/composition/probe/backend-protocol.js.map +1 -1
  519. package/dist/composition/probe/candidate-store.js.map +1 -1
  520. package/dist/composition/probe/corpus.js.map +1 -1
  521. package/dist/composition/probe/dataset.js.map +1 -1
  522. package/dist/composition/probe/experiment-design.js.map +1 -1
  523. package/dist/composition/probe/expression-gaps.js.map +1 -1
  524. package/dist/composition/probe/falsify.d.ts +14 -3
  525. package/dist/composition/probe/falsify.d.ts.map +1 -1
  526. package/dist/composition/probe/falsify.js +14 -27
  527. package/dist/composition/probe/falsify.js.map +1 -1
  528. package/dist/composition/probe/fingerprint.js.map +1 -1
  529. package/dist/composition/probe/fit.d.ts +1 -1
  530. package/dist/composition/probe/fit.d.ts.map +1 -1
  531. package/dist/composition/probe/fit.js +2 -1
  532. package/dist/composition/probe/fit.js.map +1 -1
  533. package/dist/composition/probe/frontier.js.map +1 -1
  534. package/dist/composition/probe/generator.js.map +1 -1
  535. package/dist/composition/probe/index.d.ts +4 -2
  536. package/dist/composition/probe/index.d.ts.map +1 -1
  537. package/dist/composition/probe/index.js +4 -2
  538. package/dist/composition/probe/index.js.map +1 -1
  539. package/dist/composition/probe/limits.js.map +1 -1
  540. package/dist/composition/probe/metadata.js.map +1 -1
  541. package/dist/composition/probe/pipeline.d.ts +5 -0
  542. package/dist/composition/probe/pipeline.d.ts.map +1 -1
  543. package/dist/composition/probe/pipeline.js +13 -6
  544. package/dist/composition/probe/pipeline.js.map +1 -1
  545. package/dist/composition/probe/problem.d.ts +8 -0
  546. package/dist/composition/probe/problem.d.ts.map +1 -1
  547. package/dist/composition/probe/problem.js +78 -12
  548. package/dist/composition/probe/problem.js.map +1 -1
  549. package/dist/composition/probe/report.js.map +1 -1
  550. package/dist/composition/probe/residual.js.map +1 -1
  551. package/dist/composition/probe/run-manifest.js +2 -2
  552. package/dist/composition/probe/run-manifest.js.map +1 -1
  553. package/dist/composition/probe/scoring.d.ts +2 -1
  554. package/dist/composition/probe/scoring.d.ts.map +1 -1
  555. package/dist/composition/probe/scoring.js +21 -7
  556. package/dist/composition/probe/scoring.js.map +1 -1
  557. package/dist/composition/probe/search-budget.js.map +1 -1
  558. package/dist/composition/probe/serialize.js.map +1 -1
  559. package/dist/composition/probe/structure.js.map +1 -1
  560. package/dist/composition/probe/study.d.ts +4 -3
  561. package/dist/composition/probe/study.d.ts.map +1 -1
  562. package/dist/composition/probe/study.js +5 -3
  563. package/dist/composition/probe/study.js.map +1 -1
  564. package/dist/composition/probe/types.d.ts +3 -1
  565. package/dist/composition/probe/types.d.ts.map +1 -1
  566. package/dist/composition/probe/types.js +2 -0
  567. package/dist/composition/probe/types.js.map +1 -1
  568. package/dist/composition/proposed-bridges.d.ts +11 -4
  569. package/dist/composition/proposed-bridges.d.ts.map +1 -1
  570. package/dist/composition/proposed-bridges.js +11 -4
  571. package/dist/composition/proposed-bridges.js.map +1 -1
  572. package/dist/composition/quantities.d.ts +0 -4
  573. package/dist/composition/quantities.d.ts.map +1 -1
  574. package/dist/composition/quantities.js +5 -5
  575. package/dist/composition/quantities.js.map +1 -1
  576. package/dist/composition/quantity.d.ts +18 -2
  577. package/dist/composition/quantity.d.ts.map +1 -1
  578. package/dist/composition/quantity.js +35 -6
  579. package/dist/composition/quantity.js.map +1 -1
  580. package/dist/composition/representative-values.js.map +1 -1
  581. package/dist/composition/retrodiction.d.ts +16 -6
  582. package/dist/composition/retrodiction.d.ts.map +1 -1
  583. package/dist/composition/retrodiction.js +34 -9
  584. package/dist/composition/retrodiction.js.map +1 -1
  585. package/dist/composition/uncertainty.js.map +1 -1
  586. package/dist/composition/user-equation.js.map +1 -1
  587. package/dist/core/axes-registry.d.ts +8 -5
  588. package/dist/core/axes-registry.d.ts.map +1 -1
  589. package/dist/core/axes-registry.js.map +1 -1
  590. package/dist/core/cell.js.map +1 -1
  591. package/dist/core/constants.d.ts +8 -8
  592. package/dist/core/constants.d.ts.map +1 -1
  593. package/dist/core/constants.js +8 -10
  594. package/dist/core/constants.js.map +1 -1
  595. package/dist/core/data-file.js.map +1 -1
  596. package/dist/core/flux-rules.js +1 -1
  597. package/dist/core/flux-rules.js.map +1 -1
  598. package/dist/core/json-schema.d.ts +1 -1
  599. package/dist/core/json-schema.d.ts.map +1 -1
  600. package/dist/core/json-schema.js +31 -7
  601. package/dist/core/json-schema.js.map +1 -1
  602. package/dist/core/labeled-tensor.d.ts +6 -1
  603. package/dist/core/labeled-tensor.d.ts.map +1 -1
  604. package/dist/core/labeled-tensor.js +18 -8
  605. package/dist/core/labeled-tensor.js.map +1 -1
  606. package/dist/core/regime-registry.d.ts +6 -2
  607. package/dist/core/regime-registry.d.ts.map +1 -1
  608. package/dist/core/regime-registry.js.map +1 -1
  609. package/dist/core/regime-rule-install.js.map +1 -1
  610. package/dist/core/regimes-builtins.js.map +1 -1
  611. package/dist/core/tensor.d.ts +7 -4
  612. package/dist/core/tensor.d.ts.map +1 -1
  613. package/dist/core/tensor.js +40 -8
  614. package/dist/core/tensor.js.map +1 -1
  615. package/dist/core/types.js.map +1 -1
  616. package/dist/core/universal-index.js.map +1 -1
  617. package/dist/diff/bridge-ast-gradient.d.ts +4 -5
  618. package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
  619. package/dist/diff/bridge-ast-gradient.js +10 -6
  620. package/dist/diff/bridge-ast-gradient.js.map +1 -1
  621. package/dist/diff/bridge-gradient.d.ts +24 -80
  622. package/dist/diff/bridge-gradient.d.ts.map +1 -1
  623. package/dist/diff/bridge-gradient.js +21 -98
  624. package/dist/diff/bridge-gradient.js.map +1 -1
  625. package/dist/diff/bridge-specs.d.ts +16 -5
  626. package/dist/diff/bridge-specs.d.ts.map +1 -1
  627. package/dist/diff/bridge-specs.js +16 -4
  628. package/dist/diff/bridge-specs.js.map +1 -1
  629. package/dist/dimensional/algebra.js.map +1 -1
  630. package/dist/dimensional/ast-builders.d.ts +5 -4
  631. package/dist/dimensional/ast-builders.d.ts.map +1 -1
  632. package/dist/dimensional/ast-builders.js +6 -5
  633. package/dist/dimensional/ast-builders.js.map +1 -1
  634. package/dist/dimensional/ast-types.js.map +1 -1
  635. package/dist/dimensional/bridge-check.js.map +1 -1
  636. package/dist/dimensional/buckingham.js.map +1 -1
  637. package/dist/dimensional/connection-validators.d.ts +2 -1
  638. package/dist/dimensional/connection-validators.d.ts.map +1 -1
  639. package/dist/dimensional/connection-validators.js.map +1 -1
  640. package/dist/dimensional/connection.js.map +1 -1
  641. package/dist/dimensional/constant-rows.d.ts.map +1 -1
  642. package/dist/dimensional/constant-rows.js +9 -5
  643. package/dist/dimensional/constant-rows.js.map +1 -1
  644. package/dist/dimensional/constants.d.ts +5 -6
  645. package/dist/dimensional/constants.d.ts.map +1 -1
  646. package/dist/dimensional/constants.js +5 -6
  647. package/dist/dimensional/constants.js.map +1 -1
  648. package/dist/dimensional/curvature-composite.js.map +1 -1
  649. package/dist/dimensional/curvature-invariants.js.map +1 -1
  650. package/dist/dimensional/curvature.js.map +1 -1
  651. package/dist/dimensional/dimension-inference.js.map +1 -1
  652. package/dist/dimensional/dimension-spec.d.ts +13 -7
  653. package/dist/dimensional/dimension-spec.d.ts.map +1 -1
  654. package/dist/dimensional/dimension-spec.js +49 -23
  655. package/dist/dimensional/dimension-spec.js.map +1 -1
  656. package/dist/dimensional/einstein-equation.js.map +1 -1
  657. package/dist/dimensional/errors.d.ts +3 -1
  658. package/dist/dimensional/errors.d.ts.map +1 -1
  659. package/dist/dimensional/errors.js +2 -2
  660. package/dist/dimensional/errors.js.map +1 -1
  661. package/dist/dimensional/exact-scale.js.map +1 -1
  662. package/dist/dimensional/field-equation-helpers.js.map +1 -1
  663. package/dist/dimensional/formula-names.js.map +1 -1
  664. package/dist/dimensional/fresh-label.js.map +1 -1
  665. package/dist/dimensional/friedmann-equation.d.ts +3 -3
  666. package/dist/dimensional/friedmann-equation.js +3 -3
  667. package/dist/dimensional/friedmann-equation.js.map +1 -1
  668. package/dist/dimensional/gauge-field.d.ts +2 -3
  669. package/dist/dimensional/gauge-field.d.ts.map +1 -1
  670. package/dist/dimensional/gauge-field.js +0 -1
  671. package/dist/dimensional/gauge-field.js.map +1 -1
  672. package/dist/dimensional/hyphen-names.d.ts.map +1 -1
  673. package/dist/dimensional/hyphen-names.js +8 -0
  674. package/dist/dimensional/hyphen-names.js.map +1 -1
  675. package/dist/dimensional/killing-validators.js.map +1 -1
  676. package/dist/dimensional/klein-gordon-equation.js.map +1 -1
  677. package/dist/dimensional/metric-validators.d.ts +2 -1
  678. package/dist/dimensional/metric-validators.d.ts.map +1 -1
  679. package/dist/dimensional/metric-validators.js.map +1 -1
  680. package/dist/dimensional/metric.js.map +1 -1
  681. package/dist/dimensional/natural-units.js.map +1 -1
  682. package/dist/dimensional/quantity-registry.d.ts +13 -0
  683. package/dist/dimensional/quantity-registry.d.ts.map +1 -1
  684. package/dist/dimensional/quantity-registry.js +14 -6
  685. package/dist/dimensional/quantity-registry.js.map +1 -1
  686. package/dist/dimensional/rg-flow.js.map +1 -1
  687. package/dist/dimensional/stress-energy-validators.js.map +1 -1
  688. package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
  689. package/dist/dimensional/symbolic-constants.js +7 -2
  690. package/dist/dimensional/symbolic-constants.js.map +1 -1
  691. package/dist/dimensional/tensor-trace.js.map +1 -1
  692. package/dist/dimensional/tensor.js.map +1 -1
  693. package/dist/dimensional/types.js.map +1 -1
  694. package/dist/dimensional/unit-convention.d.ts +0 -2
  695. package/dist/dimensional/unit-convention.d.ts.map +1 -1
  696. package/dist/dimensional/unit-convention.js +2 -2
  697. package/dist/dimensional/unit-convention.js.map +1 -1
  698. package/dist/dimensional/unit-data.d.ts.map +1 -1
  699. package/dist/dimensional/unit-data.js +9 -5
  700. package/dist/dimensional/unit-data.js.map +1 -1
  701. package/dist/dimensional/units.d.ts.map +1 -1
  702. package/dist/dimensional/units.js +38 -20
  703. package/dist/dimensional/units.js.map +1 -1
  704. package/dist/dimensional/validator-registry.js.map +1 -1
  705. package/dist/dimensional/validator.d.ts +0 -16
  706. package/dist/dimensional/validator.d.ts.map +1 -1
  707. package/dist/dimensional/validator.js +65 -29
  708. package/dist/dimensional/validator.js.map +1 -1
  709. package/dist/dimensional/weyl-validators.js.map +1 -1
  710. package/dist/index.d.ts +50 -5
  711. package/dist/index.d.ts.map +1 -1
  712. package/dist/index.js +12 -20
  713. package/dist/index.js.map +1 -1
  714. package/dist/numerical/bianchi-residual.js.map +1 -1
  715. package/dist/numerical/binding-value.d.ts +11 -6
  716. package/dist/numerical/binding-value.d.ts.map +1 -1
  717. package/dist/numerical/binding-value.js +126 -122
  718. package/dist/numerical/binding-value.js.map +1 -1
  719. package/dist/numerical/christoffel-flat.js.map +1 -1
  720. package/dist/numerical/connection-lowering-helpers.js.map +1 -1
  721. package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
  722. package/dist/numerical/covariant-eikonal.js +2 -2
  723. package/dist/numerical/covariant-eikonal.js.map +1 -1
  724. package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
  725. package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
  726. package/dist/numerical/curvature-lowering-helpers.js +6 -3
  727. package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
  728. package/dist/numerical/derivative-lowering.js.map +1 -1
  729. package/dist/numerical/einstein-equation.js.map +1 -1
  730. package/dist/numerical/engine-registry.js.map +1 -1
  731. package/dist/numerical/errors.d.ts +7 -3
  732. package/dist/numerical/errors.d.ts.map +1 -1
  733. package/dist/numerical/errors.js +5 -5
  734. package/dist/numerical/errors.js.map +1 -1
  735. package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -1
  736. package/dist/numerical/evaluator-uncertainty.js +19 -2
  737. package/dist/numerical/evaluator-uncertainty.js.map +1 -1
  738. package/dist/numerical/formula-contract.d.ts +63 -7
  739. package/dist/numerical/formula-contract.d.ts.map +1 -1
  740. package/dist/numerical/formula-contract.js +61 -42
  741. package/dist/numerical/formula-contract.js.map +1 -1
  742. package/dist/numerical/formula-dimension.d.ts +8 -7
  743. package/dist/numerical/formula-dimension.d.ts.map +1 -1
  744. package/dist/numerical/formula-dimension.js +58 -36
  745. package/dist/numerical/formula-dimension.js.map +1 -1
  746. package/dist/numerical/formula-mathts.d.ts.map +1 -1
  747. package/dist/numerical/formula-mathts.js +5 -2
  748. package/dist/numerical/formula-mathts.js.map +1 -1
  749. package/dist/numerical/formula-registry.d.ts +13 -3
  750. package/dist/numerical/formula-registry.d.ts.map +1 -1
  751. package/dist/numerical/formula-registry.js +7 -2
  752. package/dist/numerical/formula-registry.js.map +1 -1
  753. package/dist/numerical/geodesic-integrator.js.map +1 -1
  754. package/dist/numerical/geometrized.js.map +1 -1
  755. package/dist/numerical/gl4-integrator.d.ts +28 -27
  756. package/dist/numerical/gl4-integrator.d.ts.map +1 -1
  757. package/dist/numerical/gl4-integrator.js +41 -42
  758. package/dist/numerical/gl4-integrator.js.map +1 -1
  759. package/dist/numerical/grid-field.js.map +1 -1
  760. package/dist/numerical/index.js.map +1 -1
  761. package/dist/numerical/input-validation.d.ts +3 -6
  762. package/dist/numerical/input-validation.d.ts.map +1 -1
  763. package/dist/numerical/input-validation.js +4 -8
  764. package/dist/numerical/input-validation.js.map +1 -1
  765. package/dist/numerical/killing.d.ts +8 -5
  766. package/dist/numerical/killing.d.ts.map +1 -1
  767. package/dist/numerical/killing.js.map +1 -1
  768. package/dist/numerical/klein-gordon.js.map +1 -1
  769. package/dist/numerical/kretschmann.js.map +1 -1
  770. package/dist/numerical/lowering-utils.js.map +1 -1
  771. package/dist/numerical/lowering.d.ts.map +1 -1
  772. package/dist/numerical/lowering.js +7 -17
  773. package/dist/numerical/lowering.js.map +1 -1
  774. package/dist/numerical/mathts-engine.d.ts.map +1 -1
  775. package/dist/numerical/mathts-engine.js +11 -6
  776. package/dist/numerical/mathts-engine.js.map +1 -1
  777. package/dist/numerical/metric-inverse.js.map +1 -1
  778. package/dist/numerical/null-ic.js.map +1 -1
  779. package/dist/numerical/null-ray-integrator.js +4 -4
  780. package/dist/numerical/null-ray-integrator.js.map +1 -1
  781. package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
  782. package/dist/numerical/pderiv.d.ts.map +1 -1
  783. package/dist/numerical/pderiv.js +9 -2
  784. package/dist/numerical/pderiv.js.map +1 -1
  785. package/dist/numerical/perihelion-finder.js.map +1 -1
  786. package/dist/numerical/quadrature.d.ts +5 -2
  787. package/dist/numerical/quadrature.d.ts.map +1 -1
  788. package/dist/numerical/quadrature.js +20 -3
  789. package/dist/numerical/quadrature.js.map +1 -1
  790. package/dist/numerical/spacetime-metrics.d.ts +13 -19
  791. package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
  792. package/dist/numerical/spacetime-metrics.js +126 -248
  793. package/dist/numerical/spacetime-metrics.js.map +1 -1
  794. package/dist/numerical/strides.js.map +1 -1
  795. package/dist/numerical/tensor-engine.d.ts +9 -5
  796. package/dist/numerical/tensor-engine.d.ts.map +1 -1
  797. package/dist/numerical/tensor-engine.js.map +1 -1
  798. package/dist/numerical/types.js.map +1 -1
  799. package/dist/numerical/weyl-lowering.js.map +1 -1
  800. package/dist/relations/category.js.map +1 -1
  801. package/dist/relations/composition-table.d.ts +4 -4
  802. package/dist/relations/composition-table.js +4 -4
  803. package/dist/relations/composition-table.js.map +1 -1
  804. package/dist/relations/conventions.js.map +1 -1
  805. package/dist/relations/domain-regimes.js.map +1 -1
  806. package/dist/relations/regime-registration.js.map +1 -1
  807. package/dist/relations/regime-vocabularies.js.map +1 -1
  808. package/dist/relations/regime.d.ts +18 -8
  809. package/dist/relations/regime.d.ts.map +1 -1
  810. package/dist/relations/regime.js +26 -14
  811. package/dist/relations/regime.js.map +1 -1
  812. package/dist/relations/types.d.ts +18 -5
  813. package/dist/relations/types.d.ts.map +1 -1
  814. package/dist/relations/types.js +5 -3
  815. package/dist/relations/types.js.map +1 -1
  816. package/package.json +10 -14
  817. package/dist/bridges/registry.d.ts +0 -60
  818. package/dist/bridges/registry.d.ts.map +0 -1
  819. package/dist/bridges/registry.js +0 -87
  820. package/dist/bridges/registry.js.map +0 -1
  821. package/dist/cli/poster-source.d.ts +0 -154
  822. package/dist/cli/poster-source.d.ts.map +0 -1
  823. package/dist/cli/poster-source.js +0 -184
  824. package/dist/cli/poster-source.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"composition-table.js","sourceRoot":"","sources":["../../src/relations/composition-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"composition-table.js","sourceRoot":"","sources":["../../src/relations/composition-table.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The composition table for `RelationType` — a literal 8×8 matrix.\n *\n * `composeRelation(first, second)` answers: if one bridge asserts `first` and a\n * second bridge asserts `second`, what relation does the chain assert? The\n * argument order is the `First ∘ Second` column order of design note\n * `docs/planning/Atlas-Phase-1-Design.md` §2.1.\n *\n * **The table is a deliberate UNDER-approximation of Blueprint v2 §4.2.** Every\n * cell not named in §2.1 is `'no-composite-claim'`, because a wrong composite\n * type is a false physical claim while silence is only silence. Nine of the\n * sixty-four cells are defined; the remaining fifty-five are silent, and the\n * reasons for the notable silences are §2.2.\n *\n * The ninth cell, `approximation ∘ exact-equivalence = approximation`, is the\n * reviewed widening of `docs/planning/ADR-transported-norm-composition.md`. The\n * table stays a pure function of relation types: the cell says what a route\n * WOULD assert, and `boundPath` (`src/atlas/path-bound.ts`) decides whether a\n * given route carries a bound, which it does only when the exact bridge declares\n * a norm transport from the norm the approximation states.\n *\n * Two cells the implementation plan asserts are NOT defined here, on the\n * authority of the design note (§0 and §2.2 item 5):\n *\n * - `exact-equivalence ∘ approximation`. An exact equivalence contributes\n * `IDENTITY_BOUND` only *in the norm a given bridge states* (see\n * `src/atlas/error-algebra.ts`); with the exact edge first, that norm would have to be\n * pulled back through the map, which the ADR leaves undefined (its §3).\n * - `structural-analogy ∘ structural-analogy`. Analogy is not transitive: the\n * shared structure can dilute to nothing across a chain.\n *\n * Widening this table is a reviewed act — `tests/atlas/composition-table.test.ts`\n * pins the count of silent cells.\n *\n * Pure: no I/O, no registry reads, and no import from `src/composition/`.\n *\n * @module relations/composition-table\n */\n\nimport type { RelationType } from './types.js';\n\n/** What `composeRelation` returns when the chain asserts nothing. @public */\nexport type NoCompositeClaim = 'no-composite-claim';\n\n/** The result of composing two relations. @public */\nexport type CompositionResult = RelationType | NoCompositeClaim;\n\n/** The `'no-composite-claim'` value `composeRelation` returns when the chain asserts nothing. @public */\nexport const NO_COMPOSITE_CLAIM: NoCompositeClaim = 'no-composite-claim';\n\n/**\n * Every row of every column, written out. `Record<RelationType, …>` makes the\n * exhaustiveness structural: a ninth `RelationType` member fails to compile\n * here rather than silently acquiring a row of `'no-composite-claim'`.\n *\n * @public\n */\nexport const COMPOSITION_TABLE: Readonly<\n Record<RelationType, Readonly<Record<RelationType, CompositionResult>>>\n> = {\n derivation: {\n derivation: 'derivation',\n 'exact-equivalence': 'derivation',\n restriction: NO_COMPOSITE_CLAIM,\n approximation: NO_COMPOSITE_CLAIM,\n 'coarse-graining': NO_COMPOSITE_CLAIM,\n 'analytic-continuation': NO_COMPOSITE_CLAIM,\n 'structural-analogy': NO_COMPOSITE_CLAIM,\n 'deformation-quantization': NO_COMPOSITE_CLAIM,\n },\n 'exact-equivalence': {\n derivation: 'derivation',\n 'exact-equivalence': 'exact-equivalence',\n restriction: 'restriction',\n approximation: NO_COMPOSITE_CLAIM,\n 'coarse-graining': NO_COMPOSITE_CLAIM,\n 'analytic-continuation': NO_COMPOSITE_CLAIM,\n 'structural-analogy': NO_COMPOSITE_CLAIM,\n 'deformation-quantization': NO_COMPOSITE_CLAIM,\n },\n restriction: {\n derivation: NO_COMPOSITE_CLAIM,\n 'exact-equivalence': 'restriction',\n restriction: 'restriction',\n approximation: NO_COMPOSITE_CLAIM,\n 'coarse-graining': NO_COMPOSITE_CLAIM,\n 'analytic-continuation': NO_COMPOSITE_CLAIM,\n 'structural-analogy': NO_COMPOSITE_CLAIM,\n 'deformation-quantization': NO_COMPOSITE_CLAIM,\n },\n approximation: {\n derivation: NO_COMPOSITE_CLAIM,\n // Licensed per route by a declared norm transport on the exact bridge; see the module comment.\n 'exact-equivalence': 'approximation',\n restriction: NO_COMPOSITE_CLAIM,\n approximation: NO_COMPOSITE_CLAIM,\n 'coarse-graining': NO_COMPOSITE_CLAIM,\n 'analytic-continuation': NO_COMPOSITE_CLAIM,\n 'structural-analogy': NO_COMPOSITE_CLAIM,\n 'deformation-quantization': NO_COMPOSITE_CLAIM,\n },\n 'coarse-graining': {\n derivation: NO_COMPOSITE_CLAIM,\n 'exact-equivalence': NO_COMPOSITE_CLAIM,\n restriction: NO_COMPOSITE_CLAIM,\n approximation: NO_COMPOSITE_CLAIM,\n 'coarse-graining': 'coarse-graining',\n 'analytic-continuation': NO_COMPOSITE_CLAIM,\n 'structural-analogy': NO_COMPOSITE_CLAIM,\n 'deformation-quantization': NO_COMPOSITE_CLAIM,\n },\n 'analytic-continuation': {\n derivation: NO_COMPOSITE_CLAIM,\n 'exact-equivalence': NO_COMPOSITE_CLAIM,\n restriction: NO_COMPOSITE_CLAIM,\n approximation: NO_COMPOSITE_CLAIM,\n 'coarse-graining': NO_COMPOSITE_CLAIM,\n 'analytic-continuation': NO_COMPOSITE_CLAIM,\n 'structural-analogy': NO_COMPOSITE_CLAIM,\n 'deformation-quantization': NO_COMPOSITE_CLAIM,\n },\n 'structural-analogy': {\n derivation: NO_COMPOSITE_CLAIM,\n 'exact-equivalence': NO_COMPOSITE_CLAIM,\n restriction: NO_COMPOSITE_CLAIM,\n approximation: NO_COMPOSITE_CLAIM,\n 'coarse-graining': NO_COMPOSITE_CLAIM,\n 'analytic-continuation': NO_COMPOSITE_CLAIM,\n 'structural-analogy': NO_COMPOSITE_CLAIM,\n 'deformation-quantization': NO_COMPOSITE_CLAIM,\n },\n 'deformation-quantization': {\n derivation: NO_COMPOSITE_CLAIM,\n 'exact-equivalence': NO_COMPOSITE_CLAIM,\n restriction: NO_COMPOSITE_CLAIM,\n approximation: NO_COMPOSITE_CLAIM,\n 'coarse-graining': NO_COMPOSITE_CLAIM,\n 'analytic-continuation': NO_COMPOSITE_CLAIM,\n 'structural-analogy': NO_COMPOSITE_CLAIM,\n 'deformation-quantization': NO_COMPOSITE_CLAIM,\n },\n};\n\n/**\n * The relation a chain of two bridges asserts, or `'no-composite-claim'` when\n * this sprint declines to assert one. A table lookup — no rules, no inference.\n *\n * @public\n */\nexport function composeRelation(\n first: RelationType,\n second: RelationType,\n): CompositionResult {\n return COMPOSITION_TABLE[first][second];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/relations/conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH;;;;;GAKG;AACH,MAAM,eAAe,GAA6B;IAChD,cAAc;IACd,iBAAiB;IACjB,sBAAsB;IACtB,YAAY;IACZ,qBAAqB;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAA0B,EAC1B,CAA0B;IAE1B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,kDAAkD;QAClD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACvD,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CACnC,CAA0B,EAC1B,CAA0B;IAE1B,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAClC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAChB,gFAAgF;QAChF,OAAO,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/relations/conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH;;;;;GAKG;AACH,MAAM,eAAe,GAA6B;IAChD,cAAc;IACd,iBAAiB;IACjB,sBAAsB;IACtB,YAAY;IACZ,qBAAqB;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAA0B,EAC1B,CAA0B;IAE1B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,kDAAkD;QAClD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACvD,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CACnC,CAA0B,EAC1B,CAA0B;IAE1B,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAClC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAChB,gFAAgF;QAChF,OAAO,CAAC,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * Atlas Phase 1 — convention comparison.\n *\n * `Conventions` (`./types.ts`) records the sign and unit choices a\n * record depends on. Two records that disagree on one of those choices are not\n * directly comparable, and this module says WHICH keys disagree.\n *\n * **`undefined` is \"unknown\", never \"mismatch\", and that asymmetry is the\n * whole design.** A record that declares nothing about the metric signature\n * has not chosen `'+---'`; it has not said. Reporting the absence as a\n * disagreement would manufacture conflicts out of missing data — and because\n * almost every record in the repo declares nothing today, it would manufacture\n * them at scale. The same reasoning that makes design note §3 require a\n * NON-EMPTY `conventions` before `convention-checked` can be derived applies\n * in the mirror here: absence earns neither a tag nor an accusation.\n *\n * A mismatch is therefore reported only when BOTH sides declare the key and\n * the declared values differ.\n *\n * @module relations/conventions\n */\n\nimport type { Conventions } from './types.js';\n\n/** The keys `checkConventions` compares. @internal */\nexport type ConventionKey = keyof Conventions;\n\n/**\n * Every key of `Conventions`, as values. Written out rather than derived,\n * because a type has no runtime extent; `tests/atlas/conventions.test.ts`\n * pins this list against the interface so a new field cannot be added to\n * `Conventions` and silently skipped by the comparison.\n */\nconst CONVENTION_KEYS: readonly ConventionKey[] = [\n 'heatWorkSign',\n 'metricSignature',\n 'fourierNormalization',\n 'unitSystem',\n 'capacitorChargeSign',\n];\n\n/**\n * The convention keys on which `a` and `b` DECLARE different values.\n *\n * Returns an empty list when they agree, when either side is absent, and when\n * neither declares a key in common.\n *\n * ⚠ **An empty list is NOT a statement that the two are compatible** — it means\n * no DECLARED pair disagrees. Eve (E1, 2026-09-21) flagged that this conflates\n * the safe case with the dangerous one: record A declaring `metricSignature:\n * '-+++'` while B simply never declared it returns `[]`, exactly like genuine\n * agreement, and a caller printing nothing leads a reader to infer \"checked, no\n * conflict\". Silence is not agreement. Use {@link unknownConventionKeys} to\n * surface that case, and prefer reporting the two together.\n *\n * @param a - one record's conventions, or `undefined` when it declares none.\n * @param b - the other record's conventions, or `undefined`.\n * @returns the mismatched keys, in `Conventions` declaration order.\n *\n * @internal\n */\nexport function checkConventions(\n a: Conventions | undefined,\n b: Conventions | undefined,\n): readonly ConventionKey[] {\n if (a === undefined || b === undefined) return [];\n return CONVENTION_KEYS.filter((k) => {\n const av = a[k];\n const bv = b[k];\n // Either side silent ⇒ unknown, not disagreement.\n if (av === undefined || bv === undefined) return false;\n return av !== bv;\n });\n}\n\n/**\n * The convention keys where exactly ONE side declares a value — the cases\n * {@link checkConventions} deliberately does not call mismatches.\n *\n * This exists because \"no declared pair disagrees\" and \"these two are\n * compatible\" are different claims, and only the first is checkable from the\n * data. A key listed here is a question, not a conflict: the records MIGHT use\n * opposite sign conventions and one simply never said. Reporting it separately\n * lets a reader distinguish *verified agreement* from *nobody wrote it down*,\n * which is the distinction an empty mismatch list destroys.\n *\n * Both sides absent is NOT unknown — it is simply a key nobody uses, so it is\n * omitted. Only an asymmetric declaration is reported.\n *\n * @internal\n */\nexport function unknownConventionKeys(\n a: Conventions | undefined,\n b: Conventions | undefined,\n): readonly ConventionKey[] {\n const av = a ?? {};\n const bv = b ?? {};\n return CONVENTION_KEYS.filter((k) => {\n const x = av[k];\n const y = bv[k];\n // Exactly one declared: the asymmetric case. Neither declared ⇒ not a question.\n return (x === undefined) !== (y === undefined);\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"domain-regimes.js","sourceRoot":"","sources":["../../src/relations/domain-regimes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;AAClE,CAAC;AAED,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,CAAU,EAAE,CAAC;IACrE,oBAAoB,CAAC;QACnB,IAAI;QACJ,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"domain-regimes.js","sourceRoot":"","sources":["../../src/relations/domain-regimes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;AAClE,CAAC;AAED,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,CAAU,EAAE,CAAC;IACrE,oBAAoB,CAAC;QACnB,IAAI;QACJ,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;KAC/D,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * Domains whose inequality list is empty.\n *\n * Plasma, piezoelectricity, and Tolman are names a caller can survey. No\n * bound is written down here: a plasma-β, a piezoelectric inequality, and a\n * Tolman gradient are not catalog statements. The command reports the empty\n * list as vacuous. Input guards on an evaluator are not this registration.\n *\n * @module relations/domain-regimes\n */\n\nimport { registerRegimeDomain } from './regime-registration.js';\nimport type { Regime } from './types.js';\n\nfunction vacuous(name: string): Regime {\n return { family: name, inequalities: [], groupDefinitions: {} };\n}\n\nfor (const name of ['plasma', 'piezoelectricity', 'tolman'] as const) {\n registerRegimeDomain({\n name,\n records: [{ id: name, kind: 'domain', regime: vacuous(name) }],\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"regime-registration.js","sourceRoot":"","sources":["../../src/relations/regime-registration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH,MAAM,aAAa,GAA+B,EAAE,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAsC;IACzE,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,WAAW,YAAY,CAAC,IAAI,yBAAyB,CAAC,CAAC;IACzE,CAAC;IACD,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"regime-registration.js","sourceRoot":"","sources":["../../src/relations/regime-registration.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH,MAAM,aAAa,GAA+B,EAAE,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAsC;IACzE,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,WAAW,YAAY,CAAC,IAAI,yBAAyB,CAAC,CAAC;IACzE,CAAC;IACD,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,yBAAyB;IACvC,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["/**\n * Names `upt regime` can survey that are not atlas families.\n *\n * An atlas family is models, bridges, and rejections. A domain module adds a\n * name and the records that carry inequalities, and does not construct those.\n * This is not `src/core/regime-registry.ts`, which stores tensor-cell regimes.\n *\n * @module relations/regime-registration\n */\n\nimport type { Regime } from './types.js';\n\n/** One record a domain registration surveys. @internal */\nexport interface RegimeDomainRecord {\n readonly id: string;\n readonly kind: 'domain';\n readonly regime: Regime;\n readonly sideConditions?: readonly string[];\n}\n\n/** A name plus the records whose inequalities the command evaluates. @internal */\nexport interface RegimeDomainRegistration {\n readonly name: string;\n readonly records: readonly RegimeDomainRecord[];\n}\n\nconst registrations: RegimeDomainRegistration[] = [];\n\n/**\n * Add a domain. A second registration of the same name is a programming error:\n * the command would otherwise survey one and hide the other.\n *\n * @internal\n */\nexport function registerRegimeDomain(registration: RegimeDomainRegistration): void {\n if (registrations.some((existing) => existing.name === registration.name)) {\n throw new Error(`regime '${registration.name}' is already registered`);\n }\n registrations.push(registration);\n}\n\n/** Domain registrations, in the order they were added. @internal */\nexport function domainRegimeRegistrations(): readonly RegimeDomainRegistration[] {\n return registrations;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"regime-vocabularies.js","sourceRoot":"","sources":["../../src/relations/regime-vocabularies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
1
+ {"version":3,"file":"regime-vocabularies.js","sourceRoot":"","sources":["../../src/relations/regime-vocabularies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG","sourcesContent":["/**\n * Names for the three regime vocabularies. They are not one type, and\n * nothing here converts a value from one into another. The join gate does\n * not import this module.\n *\n * - Tensor-cell registry: `defineRegime` in `src/core/regime-registry.ts`.\n * A named value on a scale, force, symmetry, information, topology, or\n * dimension axis, with provenance.\n * - π-group regime: `regimeHolds` and `regimeOverlap` in `src/relations/regime.ts`.\n * Inequalities on Buckingham groups. `regimeHolds` is tri-state.\n * - Quantity attributes: `regimesDiffer` in `src/composition/quantity.ts`,\n * gated by `GATE_AXES` in `src/composition/axes.ts`. Scale and force on a\n * quantity. That module is not imported: this layer importing composition\n * is an upward edge.\n *\n * @module relations/regime-vocabularies\n */\n\nimport type { RegimeValueBase } from '../core/regime-registry.js';\nimport type { Regime } from './types.js';\n\n/**\n * The value `defineRegime` returns. `src/relations/` importing\n * `src/core/regime-registry.ts` is a downward edge.\n *\n * @internal\n */\nexport type TensorCellRegime = RegimeValueBase;\n\n/**\n * The inequalities `regimeHolds` checks.\n *\n * @internal\n */\nexport type PiGroupRegime = Regime;\n\n/**\n * The quantity-attribute vocabulary, named and not imported.\n * `regimesDiffer` stays in `src/composition/quantity.ts`.\n *\n * @internal\n */\nexport type QuantityAttributeRegime = never;\n"]}
@@ -57,15 +57,25 @@ export interface RegimeCheck {
57
57
  readonly violated: readonly RegimeInequality[];
58
58
  /** NOT checked: the π-group value was absent or non-finite. */
59
59
  readonly unchecked: readonly RegimeInequality[];
60
+ /**
61
+ * How many inequalities a finite value reached. `ok: true` with
62
+ * `checked: 0` is a VACUOUS pass: the regime states no inequality (the
63
+ * plasma, piezoelectricity and Tolman registrations), so nothing was
64
+ * checked and nothing held. That is a different fact from a pass over a
65
+ * non-empty list, and a coverage count must not add it (AGENTS law 4).
66
+ */
67
+ readonly checked: number;
60
68
  }
61
69
  /**
62
70
  * Check a regime against measured group values.
63
71
  *
64
72
  * A group with no supplied value, or a non-finite one, is UNCHECKED — not
65
73
  * violated and not satisfied. See {@link RegimeCheck} for why the distinction
66
- * is load-bearing. A regime with no inequalities returns `true`: there was
67
- * nothing to check and nothing went unchecked, so the claim "every inequality
68
- * was checked and satisfied" is vacuously true rather than unknown.
74
+ * is load-bearing. A regime with no inequalities returns `true` with
75
+ * `checked: 0`: there was nothing to check and nothing went unchecked, so the
76
+ * claim "every inequality was checked and satisfied" is vacuously true rather
77
+ * than unknown, and `checked` says that nothing was checked. A caller that
78
+ * counts coverage reads `checked`, never `ok` alone.
69
79
  *
70
80
  * A violation outranks an absence: once one inequality is CHECKED and fails,
71
81
  * the regime does not hold, whatever the unmeasured coordinates would say.
@@ -130,8 +140,6 @@ export declare function regimeOverlap(a: Regime, b: Regime): RegimeOverlap;
130
140
  export interface RegionSample {
131
141
  /** The π-group value at this cell, keyed by `PiGroup.formula`. */
132
142
  readonly point: Readonly<Record<string, number>>;
133
- /** Ids of the records whose regime returned `true` here. */
134
- readonly coveredBy: readonly string[];
135
143
  }
136
144
  /** A record carrying a regime — `AtlasModel` and `AtlasBridge` both fit. @internal */
137
145
  export interface RegimeBearing {
@@ -147,9 +155,11 @@ export interface RegimeBearing {
147
155
  * library invented, so "uncovered" would measure the guess rather than the
148
156
  * atlas. The caller states where it wants to know about.
149
157
  *
150
- * COVERED means some regime returned `true`. An `'unknown'` is NOT coverage,
151
- * by the same rule that makes {@link regimeHolds} tri-state: a regime whose
152
- * groups the sample axes never mention has not been shown to apply anywhere.
158
+ * COVERED means some regime returned `true` with at least one inequality
159
+ * checked. An `'unknown'` is NOT coverage, by the same rule that makes
160
+ * {@link regimeHolds} tri-state: a regime whose groups the sample axes never
161
+ * mention has not been shown to apply anywhere. Neither is a vacuous pass: a
162
+ * regime that states no inequality has checked nothing at the point.
153
163
  *
154
164
  * Records of another family are skipped, so a mixed list is safe to pass.
155
165
  *
@@ -1 +1 @@
1
- {"version":3,"file":"regime.d.ts","sourceRoot":"","sources":["../../src/relations/regime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEjF,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,SAAS,mBAAmB,EAAE,EAC1C,mBAAmB,EAAE,SAAS,MAAM,EAAE,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACjD;AAeD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC5C,WAAW,CAab;AAID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,EAAE,CAqB7E;AA8FD,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa,CAWjE;AAED,qFAAqF;AACrF,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,sFAAsF;AACtF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GACnD,SAAS,YAAY,EAAE,CAUzB"}
1
+ {"version":3,"file":"regime.d.ts","sourceRoot":"","sources":["../../src/relations/regime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAEjF,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,SAAS,mBAAmB,EAAE,EAC1C,mBAAmB,EAAE,SAAS,MAAM,EAAE,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAeD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC5C,WAAW,CAeb;AAID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,EAAE,CAqB7E;AA8FD,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa,CAWjE;AAED,qFAAqF;AACrF,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClD;AAED,sFAAsF;AACtF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GACnD,SAAS,YAAY,EAAE,CAgBzB"}
@@ -57,9 +57,11 @@ function satisfies(value, ineq) {
57
57
  *
58
58
  * A group with no supplied value, or a non-finite one, is UNCHECKED — not
59
59
  * violated and not satisfied. See {@link RegimeCheck} for why the distinction
60
- * is load-bearing. A regime with no inequalities returns `true`: there was
61
- * nothing to check and nothing went unchecked, so the claim "every inequality
62
- * was checked and satisfied" is vacuously true rather than unknown.
60
+ * is load-bearing. A regime with no inequalities returns `true` with
61
+ * `checked: 0`: there was nothing to check and nothing went unchecked, so the
62
+ * claim "every inequality was checked and satisfied" is vacuously true rather
63
+ * than unknown, and `checked` says that nothing was checked. A caller that
64
+ * counts coverage reads `checked`, never `ok` alone.
63
65
  *
64
66
  * A violation outranks an absence: once one inequality is CHECKED and fails,
65
67
  * the regime does not hold, whatever the unmeasured coordinates would say.
@@ -69,17 +71,19 @@ function satisfies(value, ineq) {
69
71
  export function regimeHolds(regime, groupValues) {
70
72
  const violated = [];
71
73
  const unchecked = [];
74
+ let checked = 0;
72
75
  for (const ineq of regime.inequalities) {
73
76
  const value = groupValues[ineq.group];
74
77
  if (typeof value !== 'number' || !Number.isFinite(value)) {
75
78
  unchecked.push(ineq);
79
+ continue;
76
80
  }
77
- else if (!satisfies(value, ineq)) {
81
+ checked += 1;
82
+ if (!satisfies(value, ineq))
78
83
  violated.push(ineq);
79
- }
80
84
  }
81
85
  const ok = violated.length > 0 ? false : unchecked.length > 0 ? 'unknown' : true;
82
- return { ok, violated, unchecked };
86
+ return { ok, violated, unchecked, checked };
83
87
  }
84
88
  // ── Sprint 2: regime algebra and admission ──────────────────────────────────
85
89
  /**
@@ -268,9 +272,11 @@ export function regimeOverlap(a, b) {
268
272
  * library invented, so "uncovered" would measure the guess rather than the
269
273
  * atlas. The caller states where it wants to know about.
270
274
  *
271
- * COVERED means some regime returned `true`. An `'unknown'` is NOT coverage,
272
- * by the same rule that makes {@link regimeHolds} tri-state: a regime whose
273
- * groups the sample axes never mention has not been shown to apply anywhere.
275
+ * COVERED means some regime returned `true` with at least one inequality
276
+ * checked. An `'unknown'` is NOT coverage, by the same rule that makes
277
+ * {@link regimeHolds} tri-state: a regime whose groups the sample axes never
278
+ * mention has not been shown to apply anywhere. Neither is a vacuous pass: a
279
+ * regime that states no inequality has checked nothing at the point.
274
280
  *
275
281
  * Records of another family are skipped, so a mixed list is safe to pass.
276
282
  *
@@ -280,11 +286,17 @@ export function uncoveredRegions(family, models, samples) {
280
286
  const inFamily = models.filter((m) => m.regime.family === family);
281
287
  const uncovered = [];
282
288
  for (const point of gridPoints(samples)) {
283
- const coveredBy = inFamily
284
- .filter((m) => regimeHolds(m.regime, point).ok === true)
285
- .map((m) => m.id);
286
- if (coveredBy.length === 0)
287
- uncovered.push({ point, coveredBy });
289
+ // `checked > 0`: a regime with no inequality passes vacuously and has shown
290
+ // nothing about this point, so it covers nothing (the rule in `regimeHolds`'s
291
+ // doc comment: coverage reads `checked`, never `ok` alone).
292
+ const covered = inFamily.some((m) => {
293
+ const check = regimeHolds(m.regime, point);
294
+ return check.ok === true && check.checked > 0;
295
+ });
296
+ // An uncovered cell is covered by nothing, by definition; the sample
297
+ // carries the point and no list that could only ever be empty.
298
+ if (!covered)
299
+ uncovered.push({ point });
288
300
  }
289
301
  return uncovered;
290
302
  }
@@ -1 +1 @@
1
- {"version":3,"file":"regime.js","sourceRoot":"","sources":["../../src/relations/regime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"regime.js","sourceRoot":"","sources":["../../src/relations/regime.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Regime derivation — π-groups as the coordinates a regime is written in.\n *\n * Dimensionless inputs are passed INTO `buckinghamPi` as zero-dimension\n * variables and come back as their own trivial groups, keyed by their own\n * names in `PiGroup.formula`. Nothing is synthesized here. (Measured in\n * design note §10 Q1 by executing `buckinghamPi`; the implementation plan's\n * \"plus one trivial group per dimensionless input\" would double-add.)\n *\n * `admitApproximation` stays in `src/atlas/regime.ts`: it is generic over\n * `AtlasBridge`, and moving it would drag that record into this vocabulary.\n *\n * @module relations/regime\n */\n\nimport { buckinghamPi } from '../dimensional/buckingham.js';\nimport type { DimensionalVariable, PiGroup } from '../dimensional/buckingham.js';\nimport { DIMENSIONLESS } from '../dimensional/types.js';\nimport type { Regime, RegimeInequality } from './types.js';\n\n/**\n * Derive the regime coordinates of a family, keyed by `PiGroup.formula`.\n *\n * A dimensionally-independent set has no groups and yields an empty record.\n *\n * @internal\n */\nexport function deriveRegimeGroups(\n family: string,\n parameters: readonly DimensionalVariable[],\n dimensionlessInputs: readonly string[],\n): Record<string, PiGroup> {\n const variables: DimensionalVariable[] = [\n ...parameters,\n ...dimensionlessInputs.map((name) => ({ name, dim: DIMENSIONLESS })),\n ];\n if (variables.length === 0) {\n throw new Error(`deriveRegimeGroups(${family}) requires at least one variable`);\n }\n // buckinghamPi rejects duplicate names itself; the message is clearer here.\n const names = variables.map((v) => v.name);\n if (new Set(names).size !== names.length) {\n throw new Error(\n `deriveRegimeGroups(${family}) requires unique names across parameters and ` +\n `dimensionless inputs; got [${names.join(', ')}]`,\n );\n }\n const groups: Record<string, PiGroup> = {};\n for (const group of buckinghamPi(variables).piGroups) groups[group.formula] = group;\n return groups;\n}\n\n/**\n * Result of {@link regimeHolds} — TRI-STATE, not a boolean.\n *\n * Design note §1, Adam A2 RED #2. The first draft of this rule returned a\n * boolean and folded \"could not check\" into one of the two answers. Both\n * foldings are wrong in a way that is invisible at the call site:\n *\n * - Folding absence into `true` is a SILENT PASS. A caller who supplies\n * `{ Ma: 0.1 }` and never computes `Re` gets a confident \"the regime\n * holds\" while `Re = 50` grossly violates it. The omission of the very\n * data that would reveal the violation is what produces the pass.\n * - Folding absence into `false` reports a VIOLATION that was never\n * observed, which is a different false claim and destroys the caller's\n * ability to tell \"I measured this and it failed\" from \"I never measured\n * this\". Only the first licenses saying the regime is violated.\n *\n * So `ok` carries three answers and the two failure sets are kept apart.\n *\n * @public\n */\nexport interface RegimeCheck {\n /**\n * `true` — every inequality was CHECKED and satisfied.\n * `false` — at least one was checked and VIOLATED.\n * `'unknown'` — nothing was violated, but at least one could NOT be checked.\n *\n * `'unknown'` is a failure to confirm validity, NEVER validity. A caller\n * asking \"may I use this model here?\" must test `=== true`; `!== false` is\n * the silent pass this type exists to prevent.\n */\n readonly ok: boolean | 'unknown';\n /** CHECKED and violated — carried whole so the caller can name them. */\n readonly violated: readonly RegimeInequality[];\n /** NOT checked: the π-group value was absent or non-finite. */\n readonly unchecked: readonly RegimeInequality[];\n /**\n * How many inequalities a finite value reached. `ok: true` with\n * `checked: 0` is a VACUOUS pass: the regime states no inequality (the\n * plasma, piezoelectricity and Tolman registrations), so nothing was\n * checked and nothing held. That is a different fact from a pass over a\n * non-empty list, and a coverage count must not add it (AGENTS law 4).\n */\n readonly checked: number;\n}\n\nfunction satisfies(value: number, ineq: RegimeInequality): boolean {\n switch (ineq.op) {\n case '<':\n return value < ineq.bound;\n case '<=':\n return value <= ineq.bound;\n case '>':\n return value > ineq.bound;\n case '>=':\n return value >= ineq.bound;\n }\n}\n\n/**\n * Check a regime against measured group values.\n *\n * A group with no supplied value, or a non-finite one, is UNCHECKED — not\n * violated and not satisfied. See {@link RegimeCheck} for why the distinction\n * is load-bearing. A regime with no inequalities returns `true` with\n * `checked: 0`: there was nothing to check and nothing went unchecked, so the\n * claim \"every inequality was checked and satisfied\" is vacuously true rather\n * than unknown, and `checked` says that nothing was checked. A caller that\n * counts coverage reads `checked`, never `ok` alone.\n *\n * A violation outranks an absence: once one inequality is CHECKED and fails,\n * the regime does not hold, whatever the unmeasured coordinates would say.\n *\n * @public\n */\nexport function regimeHolds(\n regime: Regime,\n groupValues: Readonly<Record<string, number>>,\n): RegimeCheck {\n const violated: RegimeInequality[] = [];\n const unchecked: RegimeInequality[] = [];\n let checked = 0;\n for (const ineq of regime.inequalities) {\n const value = groupValues[ineq.group];\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n unchecked.push(ineq);\n continue;\n }\n checked += 1;\n if (!satisfies(value, ineq)) violated.push(ineq);\n }\n const ok = violated.length > 0 ? false : unchecked.length > 0 ? 'unknown' : true;\n return { ok, violated, unchecked, checked };\n}\n\n// ── Sprint 2: regime algebra and admission ──────────────────────────────────\n\n/**\n * Merge two regimes into the regime that holds where BOTH hold.\n *\n * The conjunction is the whole operation: an inequality from either side is an\n * inequality of the intersection, so the list is concatenated rather than\n * reduced. No attempt is made to simplify `x < 1` and `x < 2` into one\n * inequality — the redundant one is still true, and a simplifier that dropped\n * the wrong one would be a silent change of claim.\n *\n * `groupDefinitions` are merged and CHECKED, not overwritten. Two regimes that\n * key the same `PiGroup.formula` to different exponent vectors are not\n * traceable to one dimension matrix, and quietly keeping one would hand the\n * caller a regime whose group definitions no longer describe its inequalities.\n *\n * @throws Error if the families differ, or if a shared group name carries\n * conflicting definitions.\n * @internal\n */\nexport function intersectRegimes(a: Regime, b: Regime): Regime {\n if (a.family !== b.family) {\n throw new Error(\n `intersectRegimes: families differ ('${a.family}' vs '${b.family}'); ` +\n 'a regime is stated in the groups of its own family',\n );\n }\n const groupDefinitions: Record<string, PiGroup> = { ...a.groupDefinitions };\n for (const [name, group] of Object.entries(b.groupDefinitions)) {\n const existing = groupDefinitions[name];\n if (existing !== undefined && !samePiGroup(existing, group)) {\n throw new Error(\n `intersectRegimes: group '${name}' is defined differently in the two regimes`,\n );\n }\n groupDefinitions[name] = group;\n }\n return {\n family: a.family,\n inequalities: [...a.inequalities, ...b.inequalities],\n groupDefinitions,\n };\n}\n\n/**\n * Group names whose π-groups differ across `regimes`. The path command leaves\n * those names unchecked on every step that defines them. It does not call\n * {@link intersectRegimes}: that function still throws when the families differ.\n *\n * The same key with the same exponent vector is not a collision. A zero\n * exponent is ignored, matching `--at` derivation.\n *\n * @internal\n */\nexport function collidingRegimeGroups(\n regimes: readonly Regime[],\n): readonly { readonly group: string; readonly families: readonly string[] }[] {\n const seen = new Map<string, { sig: string; families: string[] }>();\n const collisions = new Map<string, string[]>();\n for (const regime of regimes) {\n for (const [name, group] of Object.entries(regime.groupDefinitions)) {\n const sig = exponentSignature(group);\n const prev = seen.get(name);\n if (prev === undefined) {\n seen.set(name, { sig, families: [regime.family] });\n continue;\n }\n if (prev.sig === sig) {\n if (!prev.families.includes(regime.family)) prev.families.push(regime.family);\n continue;\n }\n const families = collisions.get(name) ?? [...prev.families];\n if (!families.includes(regime.family)) families.push(regime.family);\n collisions.set(name, families);\n }\n }\n return [...collisions.entries()].map(([group, families]) => ({ group, families }));\n}\n\nfunction exponentSignature(group: PiGroup): string {\n return Object.entries(group.exponents)\n .filter(([, exp]) => exp !== 0)\n .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))\n .map(([name, exp]) => `${name}:${exp}`)\n .join(',');\n}\n\nfunction samePiGroup(x: PiGroup, y: PiGroup): boolean {\n const names = new Set([...Object.keys(x.exponents), ...Object.keys(y.exponents)]);\n for (const name of names) {\n if ((x.exponents[name] ?? 0) !== (y.exponents[name] ?? 0)) return false;\n }\n return true;\n}\n\n/** A closed-or-open interval on one π-group. Unbounded ends are ±Infinity. */\ninterface GroupInterval {\n lo: number;\n loOpen: boolean;\n hi: number;\n hiOpen: boolean;\n}\n\nfunction fullInterval(): GroupInterval {\n return { lo: -Infinity, loOpen: true, hi: Infinity, hiOpen: true };\n}\n\n/** Narrow `iv` in place by one inequality. */\nfunction narrow(iv: GroupInterval, ineq: RegimeInequality): void {\n switch (ineq.op) {\n case '<':\n case '<=': {\n const open = ineq.op === '<';\n if (ineq.bound < iv.hi || (ineq.bound === iv.hi && open)) {\n iv.hi = ineq.bound;\n iv.hiOpen = open;\n }\n return;\n }\n case '>':\n case '>=': {\n const open = ineq.op === '>';\n if (ineq.bound > iv.lo || (ineq.bound === iv.lo && open)) {\n iv.lo = ineq.bound;\n iv.loOpen = open;\n }\n return;\n }\n }\n}\n\n/** The per-group intervals the inequalities of a regime carve out. */\nfunction intervalsOf(regime: Regime): Map<string, GroupInterval> {\n const out = new Map<string, GroupInterval>();\n for (const ineq of regime.inequalities) {\n let iv = out.get(ineq.group);\n if (iv === undefined) {\n iv = fullInterval();\n out.set(ineq.group, iv);\n }\n narrow(iv, ineq);\n }\n return out;\n}\n\nfunction isEmpty(iv: GroupInterval): boolean {\n if (iv.lo > iv.hi) return true;\n return iv.lo === iv.hi && (iv.loOpen || iv.hiOpen);\n}\n\nfunction intersectIntervals(x: GroupInterval, y: GroupInterval): GroupInterval {\n const lo = Math.max(x.lo, y.lo);\n const hi = Math.min(x.hi, y.hi);\n return {\n lo,\n loOpen: (x.lo === lo && x.loOpen) || (y.lo === lo && y.loOpen),\n hi,\n hiOpen: (x.hi === hi && x.hiOpen) || (y.hi === hi && y.hiOpen),\n };\n}\n\n/** Is every point of `inner` a point of `outer`? */\nfunction contains(outer: GroupInterval, inner: GroupInterval): boolean {\n if (isEmpty(inner)) return true;\n const loOk =\n outer.lo < inner.lo || (outer.lo === inner.lo && (!outer.loOpen || inner.loOpen));\n const hiOk =\n outer.hi > inner.hi || (outer.hi === inner.hi && (!outer.hiOpen || inner.hiOpen));\n return loOk && hiOk;\n}\n\n/** How two regimes sit relative to each other. @internal */\nexport type RegimeOverlap = 'disjoint' | 'overlap' | 'nested';\n\n/**\n * Classify two regimes on the group names they SHARE.\n *\n * Shared names only, and that restriction is the whole subtlety. A group one\n * regime constrains and the other says nothing about cannot separate them:\n * silence is not a constraint, so treating the unconstrained side as empty\n * would report `'disjoint'` for two regimes that genuinely overlap. The answer\n * is therefore about the shared coordinates, and says nothing about the\n * private ones.\n *\n * - `'disjoint'` — some shared group has intervals that cannot both hold.\n * - `'nested'` — the shared box of one regime contains the other (equal boxes,\n * and the no-shared-group case, are nested: each contains the other).\n * - `'overlap'` — they meet, and neither contains the other.\n *\n * @internal\n */\nexport function regimeOverlap(a: Regime, b: Regime): RegimeOverlap {\n const ia = intervalsOf(a);\n const ib = intervalsOf(b);\n const shared = [...ia.keys()].filter((name) => ib.has(name));\n\n for (const name of shared) {\n if (isEmpty(intersectIntervals(ia.get(name)!, ib.get(name)!))) return 'disjoint';\n }\n const aInB = shared.every((name) => contains(ib.get(name)!, ia.get(name)!));\n const bInA = shared.every((name) => contains(ia.get(name)!, ib.get(name)!));\n return aInB || bInA ? 'nested' : 'overlap';\n}\n\n/** One grid cell of a sampled group box, and the regimes that cover it. @internal */\nexport interface RegionSample {\n /** The π-group value at this cell, keyed by `PiGroup.formula`. */\n readonly point: Readonly<Record<string, number>>;\n}\n\n/** A record carrying a regime — `AtlasModel` and `AtlasBridge` both fit. @internal */\nexport interface RegimeBearing {\n readonly id: string;\n readonly regime: Regime;\n}\n\n/**\n * Grid-sample a group box and list the cells no regime covers.\n *\n * `samples` IS the box: one explicit axis of values per π-group name. The box\n * is not derived from the bounds the regimes themselves carry, and that is\n * deliberate — a synthesized box would report coverage against an extent this\n * library invented, so \"uncovered\" would measure the guess rather than the\n * atlas. The caller states where it wants to know about.\n *\n * COVERED means some regime returned `true` with at least one inequality\n * checked. An `'unknown'` is NOT coverage, by the same rule that makes\n * {@link regimeHolds} tri-state: a regime whose groups the sample axes never\n * mention has not been shown to apply anywhere. Neither is a vacuous pass: a\n * regime that states no inequality has checked nothing at the point.\n *\n * Records of another family are skipped, so a mixed list is safe to pass.\n *\n * @internal\n */\nexport function uncoveredRegions(\n family: string,\n models: readonly RegimeBearing[],\n samples: Readonly<Record<string, readonly number[]>>,\n): readonly RegionSample[] {\n const inFamily = models.filter((m) => m.regime.family === family);\n const uncovered: RegionSample[] = [];\n for (const point of gridPoints(samples)) {\n // `checked > 0`: a regime with no inequality passes vacuously and has shown\n // nothing about this point, so it covers nothing (the rule in `regimeHolds`'s\n // doc comment: coverage reads `checked`, never `ok` alone).\n const covered = inFamily.some((m) => {\n const check = regimeHolds(m.regime, point);\n return check.ok === true && check.checked > 0;\n });\n // An uncovered cell is covered by nothing, by definition; the sample\n // carries the point and no list that could only ever be empty.\n if (!covered) uncovered.push({ point });\n }\n return uncovered;\n}\n\n/** Cartesian product of the named axes. An axis with no values yields nothing. */\nfunction gridPoints(\n samples: Readonly<Record<string, readonly number[]>>,\n): readonly Record<string, number>[] {\n let points: Record<string, number>[] = [{}];\n for (const [group, axis] of Object.entries(samples)) {\n const next: Record<string, number>[] = [];\n for (const base of points) {\n for (const value of axis) next.push({ ...base, [group]: value });\n }\n points = next;\n }\n return points;\n}\n"]}
@@ -17,9 +17,11 @@ export type EvidenceTag = 'proposed' | 'reviewed' | 'dimension-checked' | 'conve
17
17
  *
18
18
  * Lives HERE, not in `coverage.ts` (which re-exports it), because
19
19
  * `tests/atlas/derived-tag-literals.test.ts` allows the literals
20
- * `'formally-proved'` and `'symbolically-checked'` under `src/atlas/` in
21
- * exactly two files: this one and `derive-evidence.ts`. A tag that can only be
22
- * DERIVED must not be spellable anywhere a record could hand-set it.
20
+ * `'formally-proved'` and `'symbolically-checked'` under `src/atlas/` and
21
+ * `src/relations/` in exactly three files: this one (`src/relations/types.ts`,
22
+ * where the union and the tag list are declared), `src/atlas/types.ts`, and
23
+ * `src/atlas/derive-evidence.ts`. A tag that can only be DERIVED must not be
24
+ * spellable anywhere a record could hand-set it.
23
25
  *
24
26
  * @internal
25
27
  */
@@ -32,12 +34,23 @@ export declare const ALL_EVIDENCE_TAGS: readonly ["proposed", "reviewed", "dimen
32
34
  * - `'back-translation'` — a reviewer who had not seen the source translated
33
35
  * the formal statement back to prose and it matched.
34
36
  * - `'sanity-lemmas'` — the statement was instantiated on known cases in
35
- * `tests/atlas/formal-sanity.test.ts`.
37
+ * `tests/atlas/formal-sanity.test.ts`. A PhysJS reference carries it only
38
+ * when its key is in `PHYSJS_SANITY_LEMMA_KEYS` and its manifest row is
39
+ * also reviewed (below).
40
+ * - `'reviewed-manifest'` — the manifest row (key, theorem, kind, covers
41
+ * line, proof status, axioms, nested statements) was read against the
42
+ * bridge it keys and pinned by its hash in `src/atlas/physjs-reviewed.ts`;
43
+ * `physjsFormalRef` recomputes the hash and emits this value only on a
44
+ * match. The statement was not instantiated on a known case.
36
45
  * - `'unreviewed'` — recorded, not checked. **Earns no tag, by construction.**
46
+ * A PhysJS key whose row is not in the reviewed table, or that is ahead of
47
+ * the catalog, derives this value.
48
+ *
49
+ * No value here is hand-set on a record: `physjsFormalRef` derives it.
37
50
  *
38
51
  * @internal
39
52
  */
40
- export type FormalFidelity = 'two-formalizers' | 'back-translation' | 'sanity-lemmas' | 'unreviewed';
53
+ export type FormalFidelity = 'two-formalizers' | 'back-translation' | 'sanity-lemmas' | 'reviewed-manifest' | 'unreviewed';
41
54
  /**
42
55
  * What a formal reference certifies.
43
56
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/relations/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/relations/types.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,11 @@
12
12
  *
13
13
  * Lives HERE, not in `coverage.ts` (which re-exports it), because
14
14
  * `tests/atlas/derived-tag-literals.test.ts` allows the literals
15
- * `'formally-proved'` and `'symbolically-checked'` under `src/atlas/` in
16
- * exactly two files: this one and `derive-evidence.ts`. A tag that can only be
17
- * DERIVED must not be spellable anywhere a record could hand-set it.
15
+ * `'formally-proved'` and `'symbolically-checked'` under `src/atlas/` and
16
+ * `src/relations/` in exactly three files: this one (`src/relations/types.ts`,
17
+ * where the union and the tag list are declared), `src/atlas/types.ts`, and
18
+ * `src/atlas/derive-evidence.ts`. A tag that can only be DERIVED must not be
19
+ * spellable anywhere a record could hand-set it.
18
20
  *
19
21
  * @internal
20
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/relations/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8BH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,UAAU;IACV,UAAU;IACV,mBAAmB;IACnB,oBAAoB;IACpB,sBAAsB;IACtB,uBAAuB;IACvB,iBAAiB;IACjB,0BAA0B;IAC1B,6BAA6B;IAC7B,uBAAuB;IACvB,cAAc;IACd,YAAY;CAC6B,CAAC;AAqB5C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAU,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/relations/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8BH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,UAAU;IACV,UAAU;IACV,mBAAmB;IACnB,oBAAoB;IACpB,sBAAsB;IACtB,uBAAuB;IACvB,iBAAiB;IACjB,0BAA0B;IAC1B,6BAA6B;IAC7B,uBAAuB;IACvB,cAAc;IACd,YAAY;CAC6B,CAAC;AAiC5C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAU,CAAC","sourcesContent":["/**\n * Shared relation vocabulary.\n *\n * Objects and morphisms are `./category.ts`. Composition delegates to\n * `composeRelation`. `src/atlas/types.ts` re-exports these names, so the\n * public `atlas` namespace and the atlas subpath are unchanged.\n *\n * @module relations/types\n */\n\nimport type { PiGroup } from '../dimensional/buckingham.js';\n\n/** The relation a bridge asserts between its premises and its conclusion. @public */\nexport type RelationType =\n | 'derivation'\n | 'exact-equivalence'\n | 'restriction'\n | 'approximation'\n | 'coarse-graining'\n | 'analytic-continuation'\n | 'structural-analogy'\n | 'deformation-quantization';\n\n/** What kind of support a record carries. Carried only if its witness passes. @public */\nexport type EvidenceTag =\n | 'proposed'\n | 'reviewed'\n | 'dimension-checked'\n | 'convention-checked'\n | 'symbolically-checked'\n | 'numerically-supported'\n | 'formally-proved'\n | 'formally-proved-property'\n | 'formally-proved-cross-check'\n | 'empirically-supported'\n | 'contradicted'\n | 'unresolved';\n\n/**\n * Every `EvidenceTag`, in declaration order, so a report can name all of them.\n *\n * Lives HERE, not in `coverage.ts` (which re-exports it), because\n * `tests/atlas/derived-tag-literals.test.ts` allows the literals\n * `'formally-proved'` and `'symbolically-checked'` under `src/atlas/` and\n * `src/relations/` in exactly three files: this one (`src/relations/types.ts`,\n * where the union and the tag list are declared), `src/atlas/types.ts`, and\n * `src/atlas/derive-evidence.ts`. A tag that can only be DERIVED must not be\n * spellable anywhere a record could hand-set it.\n *\n * @internal\n */\nexport const ALL_EVIDENCE_TAGS = [\n 'proposed',\n 'reviewed',\n 'dimension-checked',\n 'convention-checked',\n 'symbolically-checked',\n 'numerically-supported',\n 'formally-proved',\n 'formally-proved-property',\n 'formally-proved-cross-check',\n 'empirically-supported',\n 'contradicted',\n 'unresolved',\n] as const satisfies readonly EvidenceTag[];\n\n/**\n * How a formal reference's statement was checked against the physics it claims\n * to state (Phase 4 design note §3).\n *\n * - `'two-formalizers'` — two people formalized it independently and agreed.\n * - `'back-translation'` — a reviewer who had not seen the source translated\n * the formal statement back to prose and it matched.\n * - `'sanity-lemmas'` — the statement was instantiated on known cases in\n * `tests/atlas/formal-sanity.test.ts`. A PhysJS reference carries it only\n * when its key is in `PHYSJS_SANITY_LEMMA_KEYS` and its manifest row is\n * also reviewed (below).\n * - `'reviewed-manifest'` — the manifest row (key, theorem, kind, covers\n * line, proof status, axioms, nested statements) was read against the\n * bridge it keys and pinned by its hash in `src/atlas/physjs-reviewed.ts`;\n * `physjsFormalRef` recomputes the hash and emits this value only on a\n * match. The statement was not instantiated on a known case.\n * - `'unreviewed'` — recorded, not checked. **Earns no tag, by construction.**\n * A PhysJS key whose row is not in the reviewed table, or that is ahead of\n * the catalog, derives this value.\n *\n * No value here is hand-set on a record: `physjsFormalRef` derives it.\n *\n * @internal\n */\nexport type FormalFidelity =\n | 'two-formalizers'\n | 'back-translation'\n | 'sanity-lemmas'\n | 'reviewed-manifest'\n | 'unreviewed';\n\n/**\n * What a formal reference certifies.\n *\n * `'bridge'` is the only kind that derives `formally-proved`. `'property'`\n * and `'cross-check'` derive their own labels. A reduction, a limit, and a\n * derivation-step are recorded and derive neither.\n *\n * @internal\n */\nexport const FORMAL_REF_KINDS = ['bridge', 'property', 'cross-check', 'reduction', 'limit', 'derivation-step'] as const;\n\n/**\n * One of {@link FORMAL_REF_KINDS}. A PhysJS reference takes the `kind` its\n * manifest entry records.\n *\n * @internal\n */\nexport type FormalRefKind = (typeof FORMAL_REF_KINDS)[number];\n\n/**\n * A machine-checked counterpart of a record's claim in a proof assistant.\n *\n * A proof of the WRONG statement proves nothing about the physics, so the\n * reference carries its `fidelity` — how anyone knows the formal statement says\n * what the bridge says. `formally-proved` is derived from `kind` and `fidelity`\n * and never set. A property and a cross-check are shown under their own labels\n * and are not a proved bridge.\n *\n * @internal\n */\nexport interface FormalRef {\n readonly system: 'lean4-physlib' | 'lean4-physjs' | 'other';\n /** The formal statement's name or text, as it appears in `system`. */\n readonly statement: string;\n /** The library version or commit the statement was checked against. */\n readonly version: string;\n /** Axioms the proof depends on beyond the system's core. */\n readonly axioms: readonly string[];\n readonly fidelity: FormalFidelity;\n readonly kind: FormalRefKind;\n /** Permalink to the theorem's source file at `version`'s commit. */\n readonly url: string;\n /**\n * What the statement certifies, and the limit of that certification.\n * A reviewed reference's line contains `covers its statement only`.\n */\n readonly covers: string;\n}\n\n/** Whether the limit a bridge takes is regular or singular. @public */\nexport type LimitCharacter = 'regular' | 'singular' | 'unknown';\n\n/**\n * One inequality on a regime coordinate. The coordinate is either a π-group\n * `buckinghamPi` produced from the family's dimensioned parameters (keyed by\n * `PiGroup.formula`), or a dimensionless INPUT of the model (an initial datum\n * such as θ0, a wavenumber-lattice product qa) declared as a\n * `DimensionalVariable` with the zero dimension, which is its own trivial\n * group. Derived quantities such as ζ = ½ (m k / b²)^(−½) are NOT groups:\n * write the inequality on the group (`m k / b² > 1/4`) and record the display\n * alias in `alias`.\n *\n * @public\n */\nexport interface RegimeInequality {\n /** `PiGroup.formula`, or the dimensionless input's name. */\n readonly group: string;\n readonly op: '<' | '<=' | '>' | '>=';\n readonly bound: number;\n /** `'ζ < 1'` — for display only, never evaluated. */\n readonly alias?: string;\n}\n\n/** Where in parameter space a model or bridge is claimed to apply. @public */\nexport interface Regime {\n /** `'oscillators'`. */\n readonly family: string;\n readonly inequalities: readonly RegimeInequality[];\n /** Traceability back to the dimension matrix, keyed by `PiGroup.formula`. */\n readonly groupDefinitions: Readonly<Record<string, PiGroup>>;\n}\n\n/** A Lipschitz-plus-offset error bound with a mandatory horizon. @public */\nexport interface ApproximationBound {\n /** Lipschitz constant of the map, in the stated norm. */\n readonly K: number;\n /**\n * Uniform error, same norm: the SUPREMUM OF THE BOUND OVER THE WHOLE\n * DECLARED DOMAIN (`domain` / `parameterRange`), never a sample of it at\n * one convenient fixture point.\n *\n * A parameter-dependent bound evaluated at a fixture is not a bound on the\n * domain it claims: the record would read as covering every admissible\n * parameter while holding only at the one point it was measured. When the\n * supremum is approached but not attained at an open edge of the domain,\n * `delta` is that supremum, and `deltaAt` is what a caller uses to get the\n * tighter value at its own point.\n */\n readonly delta: number;\n /**\n * `'relative period error, normalized by the value of the reduced model'`,\n * `'sup |x − x_reduced| for t ≥ 5 m/b'`, …\n *\n * A RELATIVE norm divides |exact − reduced| by the REDUCED model's value, and\n * says so in this string. The other reading, by the exact value, gives a\n * different number: at x = ck/ω₀ = 1 the non-relativistic kinetic frequency\n * exceeds the exact Klein–Gordon one by 20.7% of the exact value, and by\n * 17.2% of its own value. `tests/atlas/relative-norm-convention.test.ts` recomputes\n * every relative `delta` from closed-form physics and pins the convention.\n */\n readonly norm: string;\n /** Where the bound holds. */\n readonly domain: string;\n /** MANDATORY prose horizon: `'t ≪ 16 T0/θ0²'`. */\n readonly horizon: string;\n /** MANDATORY machine form of `horizon`: true while the bound is claimed to hold. */\n readonly horizonHolds: (t: number, params: Readonly<Record<string, number>>) => boolean;\n /**\n * MACHINE FORM OF `delta`, mirroring what `horizonHolds` is to `horizon`:\n * the bound AT A POINT of the declared domain, in the same norm.\n *\n * `horizon` had a machine counterpart and `delta` had none, so an\n * implementer holding a correct parameter-dependent bound could only freeze\n * it at a single point and hope the reader noticed. `deltaAt` is where that\n * dependence goes; `delta` stays the supremum over the domain, and\n * `deltaAt(p) <= delta` for every admissible `p`.\n *\n * Optional on the interface so a genuinely constant bound need not restate\n * itself, and so `coarse-graining` bounds are unaffected; MANDATORY for an\n * `approximation`, enforced at admission by `admitApproximation`.\n */\n readonly deltaAt?: (params: Readonly<Record<string, number>>) => number;\n /**\n * What `deltaAt` rests on. `'closed-form'`: it returns the EXACT error in\n * closed form, so it is a proven bound, holding with equality. `'numerically-\n * supported'`: a formula that witnesses support numerically but no proof\n * covers. `upt path` prints a point bound only when every step is closed-form.\n */\n readonly deltaAtBasis?: 'closed-form' | 'numerically-supported';\n /** `'θ0 ≤ 0.5 rad'`. */\n readonly parameterRange?: string;\n readonly limitCharacter: LimitCharacter;\n /**\n * What the error is uniform in.\n *\n * `null` means NOT YET ANALYSED. That is a legitimate recorded state:\n * `makeApproximation` accepts it, and the check lives at use (`boundPath`),\n * not at construction. An empty array means the same thing — a universal\n * over nothing must not count as analysed. A non-empty array names the\n * scopes the error is uniform in. A variable a side condition says the\n * error is NOT uniform in is not listed.\n */\n readonly uniformity: readonly string[] | null;\n}\n\n/** A case a bridge does NOT cover, and the witness that shows it. @public */\nexport interface Counterexample {\n readonly description: string;\n /** `'W2b'`. */\n readonly witness: string;\n}\n\n/**\n * The relation a record asserts, as a DISCRIMINATED UNION over `RelationType`.\n *\n * This is the Phase 1 overlay (design note §1.2, \"One overlay, not two\"). Its\n * purpose is to move `AtlasBridge`'s two CONDITIONAL requirements — written\n * there only as doc comments — into the type system:\n *\n * - `approximation` REQUIRES `bound`, and `ApproximationBound` itself\n * mandates `horizon` + `horizonHolds`. So an approximation without a\n * machine horizon is a COMPILE error, not a runtime one.\n * - `exact-equivalence` REQUIRES `inverse`.\n *\n * Deliberately conservative elsewhere. The design note §2.2 names the fields\n * the other members WOULD need (an analyticity domain, a checkable\n * `preserves` set, an ħ-order) and records that none of them exists before\n * Phase 2. Inventing them here would encode claims the data cannot support,\n * so every other member carries only `transformation`.\n *\n * @internal\n */\nexport type RelationContract =\n | { readonly type: 'derivation'; readonly transformation: string }\n | {\n readonly type: 'exact-equivalence';\n readonly transformation: string;\n /** REQUIRED: `'x = x0 u, t = τ/ω0'`. An equivalence without an inverse is not one. */\n readonly inverse: string;\n }\n | { readonly type: 'restriction'; readonly transformation: string }\n | {\n readonly type: 'approximation';\n readonly transformation: string;\n /** REQUIRED, and mandates its own machine horizon. */\n readonly bound: ApproximationBound;\n }\n | {\n readonly type: 'coarse-graining';\n readonly transformation: string;\n /** Optional: errors accumulate through `composeBounds` when present. */\n readonly bound?: ApproximationBound;\n }\n | { readonly type: 'analytic-continuation'; readonly transformation: string }\n | { readonly type: 'structural-analogy'; readonly transformation: string }\n | { readonly type: 'deformation-quantization'; readonly transformation: string };\n\n/**\n * Sign and unit choices a record depends on. Every field is optional, and a\n * field is only meaningful when the record actually depends on that choice.\n *\n * Non-emptiness matters downstream: design note §3 requires `conventions` to\n * declare AT LEAST ONE field before `convention-checked` can be derived,\n * because `[].every(…)` is vacuously true and would hand out a free tag.\n *\n * @internal\n */\nexport interface Conventions {\n /** First law as `dU = Q − W` or `dU = Q + W`. */\n readonly heatWorkSign?: 'Q-W' | 'Q+W';\n readonly metricSignature?: '-+++' | '+---';\n readonly fourierNormalization?: 'unitary' | 'physics' | 'none';\n readonly unitSystem?: 'SI' | 'gaussian' | 'natural';\n readonly capacitorChargeSign?: '+' | '-';\n}\n\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "universal-physics-tensor",
3
- "version": "9.0.0",
3
+ "version": "10.0.0",
4
4
  "description": "Computational framework for exploring unified physics through tensor formalism",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -29,11 +29,6 @@
29
29
  "default": "./dist/atlas/index.js"
30
30
  }
31
31
  },
32
- "directories": {
33
- "doc": "docs",
34
- "example": "examples",
35
- "test": "tests"
36
- },
37
32
  "scripts": {
38
33
  "prepare": "git config core.hooksPath .githooks || exit 0",
39
34
  "build": "tsc",
@@ -50,7 +45,7 @@
50
45
  "test:watch": "vitest",
51
46
  "prepublishOnly": "npm run validate",
52
47
  "bench": "vitest bench",
53
- "bench:ci": "vitest bench --reporter=verbose",
48
+ "bench:ci": "vitest bench --run --outputJson bench/results.json",
54
49
  "docs:deps": "bun tools/create-dependency-graph/create-dependency-graph.ts --root=. --include-tests",
55
50
  "physjs:table": "bun scripts/generate-physjs-table.ts",
56
51
  "docs:cli": "bun scripts/cli-reference.ts",
@@ -61,12 +56,13 @@
61
56
  "atlas:c3-export": "bun tools/criterion3-export/export.ts",
62
57
  "atlas:c3-labels": "bun tools/criterion3-study/labels.ts",
63
58
  "atlas:c3-run": "bun tools/criterion3-study/run.ts",
64
- "catalog:json": "npm run build && node scripts/emit-catalog-json.mjs",
59
+ "catalog:json": "npm run build && node scripts/check-catalog-json.mjs",
65
60
  "atlas:json": "npm run build && node scripts/emit-atlas-json.mjs",
66
61
  "atlas:witness-results": "npm run build && node scripts/emit-witness-results.mjs",
67
62
  "atlas:study": "npm run build && node scripts/run-atlas-study.mjs",
68
- "typecheck": "tsc --noEmit && tsc -p tsconfig.tests.json",
69
- "validate": "npm run build && npm run typecheck && npm test && npm run audit:plans && npm run package:check",
63
+ "typecheck": "tsc --noEmit && npm run typecheck:tests",
64
+ "typecheck:tests": "tsc -p tsconfig.tests.json",
65
+ "validate": "npm run build && npm run smoke && npm run typecheck:tests && vitest run && npm run audit:plans && npm run package:check",
70
66
  "package:check": "node scripts/package-smoke.mjs"
71
67
  },
72
68
  "files": [
@@ -95,12 +91,12 @@
95
91
  },
96
92
  "repository": {
97
93
  "type": "git",
98
- "url": "git+https://github.com/danielsimonjr/universal-physics-tensor.git"
94
+ "url": "git+https://github.com/danielsimonjr/Universal-Physics-Tensor.git"
99
95
  },
100
96
  "bugs": {
101
- "url": "https://github.com/danielsimonjr/universal-physics-tensor/issues"
97
+ "url": "https://github.com/danielsimonjr/Universal-Physics-Tensor/issues"
102
98
  },
103
- "homepage": "https://github.com/danielsimonjr/universal-physics-tensor#readme",
99
+ "homepage": "https://github.com/danielsimonjr/Universal-Physics-Tensor#readme",
104
100
  "dependencies": {
105
101
  "@danielsimonjr/mathts-autograd": "^0.3.16",
106
102
  "@danielsimonjr/mathts-core": "^0.16.0",
@@ -113,7 +109,7 @@
113
109
  "@danielsimonjr/mathts-workerpool": "^0.2.6"
114
110
  },
115
111
  "devDependencies": {
116
- "@types/node": "^26.0.0",
112
+ "@types/node": "^22.0.0",
117
113
  "@vitest/coverage-v8": "^4.1.7",
118
114
  "@viz-js/viz": "^3.28.0",
119
115
  "fast-check": "^4.8.0",
@@ -1,60 +0,0 @@
1
- /**
2
- * One registration for a catalog bridge.
3
- *
4
- * The catalog array, the right-hand side map, the evaluator map, and the
5
- * edge list are projections of this registry. A second `BRIDGE_EQUATIONS`
6
- * literal is a scan hit. An `ab-*` id is an atlas model and is rejected.
7
- *
8
- * @module bridges/registry
9
- */
10
- import type { ExprNode } from '../dimensional/validator.js';
11
- /** The fields a registration may carry. Each projection reads one of them. */
12
- export interface BridgeRegistration {
13
- /** Numeric catalog id, when the other parts do not already carry it. */
14
- readonly id?: number | string;
15
- /** Catalog row. `id` is the catalog id. */
16
- readonly entry?: {
17
- readonly id: number;
18
- };
19
- /** Encoded right-hand side. Absent when the bridge has no AST. */
20
- readonly rhs?: ExprNode;
21
- /** Id-keyed evaluator. */
22
- readonly evaluator?: {
23
- readonly bridgeId: number;
24
- };
25
- /**
26
- * Composition edge. `beId: null` stays on the edge list. The edge `id`
27
- * is what a second registration of the same edge matches.
28
- */
29
- readonly edge?: {
30
- readonly id: string;
31
- readonly beId: number | null;
32
- };
33
- }
34
- /** The four projections, in registration order. */
35
- export interface BridgeRegistry {
36
- register(parts: BridgeRegistration): void;
37
- equations(): {
38
- readonly id: number;
39
- }[];
40
- rhs(): ReadonlyMap<number, ExprNode>;
41
- evaluators(): ReadonlyMap<number, {
42
- readonly bridgeId: number;
43
- }>;
44
- edges(): {
45
- readonly id: string;
46
- readonly beId: number | null;
47
- }[];
48
- }
49
- /**
50
- * An empty registry. Tests use this. Production uses {@link registerBridge}.
51
- */
52
- export declare function createBridgeRegistry(): BridgeRegistry;
53
- /** The production registry. Snapshots are taken by the modules that export them. */
54
- export declare const bridgeRegistry: BridgeRegistry;
55
- /**
56
- * Register one bridge, or one part of one, on the production registry.
57
- * An id that starts with `ab-` throws.
58
- */
59
- export declare function registerBridge(parts: BridgeRegistration): void;
60
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/bridges/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,kEAAkE;IAClE,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACvE;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1C,SAAS,IAAI;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,KAAK,IAAI;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;CAClE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAkErD;AAED,oFAAoF;AACpF,eAAO,MAAM,cAAc,gBAAyB,CAAC;AAErD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAE9D"}