universal-physics-tensor 0.45.2 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -66
- package/bin/upt.mjs +22 -22
- package/dist/atlas/applicability.d.ts +108 -0
- package/dist/atlas/applicability.d.ts.map +1 -0
- package/dist/atlas/applicability.js +301 -0
- package/dist/atlas/applicability.js.map +1 -0
- package/dist/atlas/association.d.ts +92 -0
- package/dist/atlas/association.d.ts.map +1 -0
- package/dist/atlas/association.js +112 -0
- package/dist/atlas/association.js.map +1 -0
- package/dist/atlas/benchmark/backend-shapes.d.ts +47 -0
- package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -0
- package/dist/atlas/benchmark/backend-shapes.js +58 -0
- package/dist/atlas/benchmark/backend-shapes.js.map +1 -0
- package/dist/atlas/benchmark/baselines.d.ts +64 -0
- package/dist/atlas/benchmark/baselines.d.ts.map +1 -0
- package/dist/atlas/benchmark/baselines.js +112 -0
- package/dist/atlas/benchmark/baselines.js.map +1 -0
- package/dist/atlas/benchmark/leakage.d.ts +56 -0
- package/dist/atlas/benchmark/leakage.d.ts.map +1 -0
- package/dist/atlas/benchmark/leakage.js +100 -0
- package/dist/atlas/benchmark/leakage.js.map +1 -0
- package/dist/atlas/benchmark/loader.d.ts +56 -0
- package/dist/atlas/benchmark/loader.d.ts.map +1 -0
- package/dist/atlas/benchmark/loader.js +104 -0
- package/dist/atlas/benchmark/loader.js.map +1 -0
- package/dist/atlas/benchmark/run-atlas.d.ts +72 -0
- package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -0
- package/dist/atlas/benchmark/run-atlas.js +210 -0
- package/dist/atlas/benchmark/run-atlas.js.map +1 -0
- package/dist/atlas/benchmark/stats.d.ts +90 -0
- package/dist/atlas/benchmark/stats.d.ts.map +1 -0
- package/dist/atlas/benchmark/stats.js +159 -0
- package/dist/atlas/benchmark/stats.js.map +1 -0
- package/dist/atlas/benchmark/study.d.ts +120 -0
- package/dist/atlas/benchmark/study.d.ts.map +1 -0
- package/dist/atlas/benchmark/study.js +192 -0
- package/dist/atlas/benchmark/study.js.map +1 -0
- package/dist/atlas/benchmark/types.d.ts +79 -0
- package/dist/atlas/benchmark/types.d.ts.map +1 -0
- package/dist/atlas/benchmark/types.js +46 -0
- package/dist/atlas/benchmark/types.js.map +1 -0
- package/dist/atlas/composition-table.d.ts +55 -0
- package/dist/atlas/composition-table.d.ts.map +1 -0
- package/dist/atlas/composition-table.js +133 -0
- package/dist/atlas/composition-table.js.map +1 -0
- package/dist/atlas/conventions.d.ts +63 -0
- package/dist/atlas/conventions.d.ts.map +1 -0
- package/dist/atlas/conventions.js +93 -0
- package/dist/atlas/conventions.js.map +1 -0
- package/dist/atlas/coverage.d.ts +93 -0
- package/dist/atlas/coverage.d.ts.map +1 -0
- package/dist/atlas/coverage.js +69 -0
- package/dist/atlas/coverage.js.map +1 -0
- package/dist/atlas/derivation.d.ts +137 -0
- package/dist/atlas/derivation.d.ts.map +1 -0
- package/dist/atlas/derivation.js +190 -0
- package/dist/atlas/derivation.js.map +1 -0
- package/dist/atlas/derive-evidence.d.ts +218 -0
- package/dist/atlas/derive-evidence.d.ts.map +1 -0
- package/dist/atlas/derive-evidence.js +225 -0
- package/dist/atlas/derive-evidence.js.map +1 -0
- package/dist/atlas/diffusion/bridges-closure.d.ts +63 -0
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -0
- package/dist/atlas/diffusion/bridges-closure.js +350 -0
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -0
- package/dist/atlas/diffusion/bridges.d.ts +36 -0
- package/dist/atlas/diffusion/bridges.d.ts.map +1 -0
- package/dist/atlas/diffusion/bridges.js +226 -0
- package/dist/atlas/diffusion/bridges.js.map +1 -0
- package/dist/atlas/diffusion/dimensions.d.ts +21 -0
- package/dist/atlas/diffusion/dimensions.d.ts.map +1 -0
- package/dist/atlas/diffusion/dimensions.js +21 -0
- package/dist/atlas/diffusion/dimensions.js.map +1 -0
- package/dist/atlas/diffusion/index.d.ts +16 -0
- package/dist/atlas/diffusion/index.d.ts.map +1 -0
- package/dist/atlas/diffusion/index.js +23 -0
- package/dist/atlas/diffusion/index.js.map +1 -0
- package/dist/atlas/diffusion/models.d.ts +24 -0
- package/dist/atlas/diffusion/models.d.ts.map +1 -0
- package/dist/atlas/diffusion/models.js +139 -0
- package/dist/atlas/diffusion/models.js.map +1 -0
- package/dist/atlas/diffusion/numerics.d.ts +181 -0
- package/dist/atlas/diffusion/numerics.d.ts.map +1 -0
- package/dist/atlas/diffusion/numerics.js +251 -0
- package/dist/atlas/diffusion/numerics.js.map +1 -0
- package/dist/atlas/error-algebra.d.ts +52 -0
- package/dist/atlas/error-algebra.d.ts.map +1 -0
- package/dist/atlas/error-algebra.js +55 -0
- package/dist/atlas/error-algebra.js.map +1 -0
- package/dist/atlas/export.d.ts +48 -0
- package/dist/atlas/export.d.ts.map +1 -0
- package/dist/atlas/export.js +106 -0
- package/dist/atlas/export.js.map +1 -0
- package/dist/atlas/families.d.ts +14 -0
- package/dist/atlas/families.d.ts.map +1 -0
- package/dist/atlas/families.js +20 -0
- package/dist/atlas/families.js.map +1 -0
- package/dist/atlas/index.d.ts +90 -0
- package/dist/atlas/index.d.ts.map +1 -0
- package/dist/atlas/index.js +69 -0
- package/dist/atlas/index.js.map +1 -0
- package/dist/atlas/link-prediction.d.ts +71 -0
- package/dist/atlas/link-prediction.d.ts.map +1 -0
- package/dist/atlas/link-prediction.js +128 -0
- package/dist/atlas/link-prediction.js.map +1 -0
- package/dist/atlas/model.d.ts +70 -0
- package/dist/atlas/model.d.ts.map +1 -0
- package/dist/atlas/model.js +26 -0
- package/dist/atlas/model.js.map +1 -0
- package/dist/atlas/oscillators/bridges-coarse.d.ts +71 -0
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -0
- package/dist/atlas/oscillators/bridges-coarse.js +146 -0
- package/dist/atlas/oscillators/bridges-coarse.js.map +1 -0
- package/dist/atlas/oscillators/bridges-exact.d.ts +70 -0
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -0
- package/dist/atlas/oscillators/bridges-exact.js +230 -0
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -0
- package/dist/atlas/oscillators/bridges-limits.d.ts +118 -0
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -0
- package/dist/atlas/oscillators/bridges-limits.js +345 -0
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -0
- package/dist/atlas/oscillators/dimensions.d.ts +34 -0
- package/dist/atlas/oscillators/dimensions.d.ts.map +1 -0
- package/dist/atlas/oscillators/dimensions.js +34 -0
- package/dist/atlas/oscillators/dimensions.js.map +1 -0
- package/dist/atlas/oscillators/index.d.ts +38 -0
- package/dist/atlas/oscillators/index.d.ts.map +1 -0
- package/dist/atlas/oscillators/index.js +37 -0
- package/dist/atlas/oscillators/index.js.map +1 -0
- package/dist/atlas/oscillators/models.d.ts +25 -0
- package/dist/atlas/oscillators/models.d.ts.map +1 -0
- package/dist/atlas/oscillators/models.js +160 -0
- package/dist/atlas/oscillators/models.js.map +1 -0
- package/dist/atlas/oscillators/rejections.d.ts +21 -0
- package/dist/atlas/oscillators/rejections.d.ts.map +1 -0
- package/dist/atlas/oscillators/rejections.js +54 -0
- package/dist/atlas/oscillators/rejections.js.map +1 -0
- package/dist/atlas/path-bound.d.ts +143 -0
- package/dist/atlas/path-bound.d.ts.map +1 -0
- package/dist/atlas/path-bound.js +268 -0
- package/dist/atlas/path-bound.js.map +1 -0
- package/dist/atlas/poster/associations.d.ts +66 -0
- package/dist/atlas/poster/associations.d.ts.map +1 -0
- package/dist/atlas/poster/associations.js +90 -0
- package/dist/atlas/poster/associations.js.map +1 -0
- package/dist/atlas/poster/derivations.d.ts +156 -0
- package/dist/atlas/poster/derivations.d.ts.map +1 -0
- package/dist/atlas/poster/derivations.js +430 -0
- package/dist/atlas/poster/derivations.js.map +1 -0
- package/dist/atlas/poster/statements.d.ts +198 -0
- package/dist/atlas/poster/statements.d.ts.map +1 -0
- package/dist/atlas/poster/statements.js +365 -0
- package/dist/atlas/poster/statements.js.map +1 -0
- package/dist/atlas/public.d.ts +26 -0
- package/dist/atlas/public.d.ts.map +1 -0
- package/dist/atlas/public.js +21 -0
- package/dist/atlas/public.js.map +1 -0
- package/dist/atlas/regime.d.ts +171 -0
- package/dist/atlas/regime.d.ts.map +1 -0
- package/dist/atlas/regime.js +309 -0
- package/dist/atlas/regime.js.map +1 -0
- package/dist/atlas/serialize.d.ts +50 -0
- package/dist/atlas/serialize.d.ts.map +1 -0
- package/dist/atlas/serialize.js +180 -0
- package/dist/atlas/serialize.js.map +1 -0
- package/dist/atlas/statement.d.ts +165 -0
- package/dist/atlas/statement.d.ts.map +1 -0
- package/dist/atlas/statement.js +176 -0
- package/dist/atlas/statement.js.map +1 -0
- package/dist/atlas/types.d.ts +325 -0
- package/dist/atlas/types.d.ts.map +1 -0
- package/dist/atlas/types.js +61 -0
- package/dist/atlas/types.js.map +1 -0
- package/dist/atlas/waves/bridges-closure.d.ts +39 -0
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -0
- package/dist/atlas/waves/bridges-closure.js +226 -0
- package/dist/atlas/waves/bridges-closure.js.map +1 -0
- package/dist/atlas/waves/bridges.d.ts +49 -0
- package/dist/atlas/waves/bridges.d.ts.map +1 -0
- package/dist/atlas/waves/bridges.js +266 -0
- package/dist/atlas/waves/bridges.js.map +1 -0
- package/dist/atlas/waves/index.d.ts +16 -0
- package/dist/atlas/waves/index.d.ts.map +1 -0
- package/dist/atlas/waves/index.js +23 -0
- package/dist/atlas/waves/index.js.map +1 -0
- package/dist/atlas/waves/models.d.ts +29 -0
- package/dist/atlas/waves/models.d.ts.map +1 -0
- package/dist/atlas/waves/models.js +127 -0
- package/dist/atlas/waves/models.js.map +1 -0
- package/dist/atlas/waves/numerics.d.ts +149 -0
- package/dist/atlas/waves/numerics.d.ts.map +1 -0
- package/dist/atlas/waves/numerics.js +218 -0
- package/dist/atlas/waves/numerics.js.map +1 -0
- package/dist/atlas/witness-artifact.d.ts +65 -0
- package/dist/atlas/witness-artifact.d.ts.map +1 -0
- package/dist/atlas/witness-artifact.js +78 -0
- package/dist/atlas/witness-artifact.js.map +1 -0
- package/dist/atlas/witness-numeric.d.ts +81 -0
- package/dist/atlas/witness-numeric.d.ts.map +1 -0
- package/dist/atlas/witness-numeric.js +105 -0
- package/dist/atlas/witness-numeric.js.map +1 -0
- package/dist/atlas/witness-result.d.ts +77 -0
- package/dist/atlas/witness-result.d.ts.map +1 -0
- package/dist/atlas/witness-result.js +39 -0
- package/dist/atlas/witness-result.js.map +1 -0
- package/dist/atlas/witness-specs.d.ts +110 -0
- package/dist/atlas/witness-specs.d.ts.map +1 -0
- package/dist/atlas/witness-specs.js +372 -0
- package/dist/atlas/witness-specs.js.map +1 -0
- package/dist/atlas/witness-symbolic.d.ts +79 -0
- package/dist/atlas/witness-symbolic.d.ts.map +1 -0
- package/dist/atlas/witness-symbolic.js +140 -0
- package/dist/atlas/witness-symbolic.js.map +1 -0
- package/dist/atlas/witnesses/quantum-support.d.ts +50 -0
- package/dist/atlas/witnesses/quantum-support.d.ts.map +1 -0
- package/dist/atlas/witnesses/quantum-support.js +48 -0
- package/dist/atlas/witnesses/quantum-support.js.map +1 -0
- package/dist/bridges/be11-decoherence-confrontation.js.map +1 -1
- package/dist/bridges/be21-kss-confrontation.js.map +1 -1
- package/dist/bridges/be23-planckian-confrontation.js.map +1 -1
- package/dist/bridges/be35-bootstrap-confrontation.js.map +1 -1
- package/dist/bridges/be36-gw170817-confrontation.js.map +1 -1
- package/dist/bridges/be37-cassini-confrontation.js.map +1 -1
- package/dist/bridges/be48-collapse-confrontation.js.map +1 -1
- package/dist/bridges/be51-lensing-confrontation.d.ts.map +1 -1
- package/dist/bridges/be51-lensing-confrontation.js +5 -3
- package/dist/bridges/be51-lensing-confrontation.js.map +1 -1
- package/dist/bridges/be52-mercury-confrontation.d.ts.map +1 -1
- package/dist/bridges/be52-mercury-confrontation.js +4 -1
- package/dist/bridges/be52-mercury-confrontation.js.map +1 -1
- package/dist/bridges/be55-quantum-hall-confrontation.js.map +1 -1
- package/dist/bridges/be56-casimir-confrontation.js.map +1 -1
- package/dist/bridges/be58-johnson-nyquist-confrontation.js.map +1 -1
- package/dist/bridges/be59-ac-josephson-confrontation.js.map +1 -1
- package/dist/bridges/be60-fractional-qh-confrontation.js.map +1 -1
- package/dist/bridges/be61-wiedemann-franz-confrontation.js.map +1 -1
- package/dist/bridges/be62-bcs-gap-confrontation.js.map +1 -1
- package/dist/bridges/be63-chandrasekhar-mass-confrontation.js.map +1 -1
- package/dist/bridges/be64-eddington-luminosity-confrontation.js.map +1 -1
- package/dist/bridges/be65-jeans-mass-confrontation.js.map +1 -1
- package/dist/bridges/bridge-equations.d.ts +2 -2
- package/dist/bridges/bridge-equations.d.ts.map +1 -1
- package/dist/bridges/bridge-equations.js +2 -2
- package/dist/bridges/bridge-equations.js.map +1 -1
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +7 -0
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/equations/_be-helpers.d.ts +2 -2
- package/dist/bridges/equations/_be-helpers.js +2 -2
- package/dist/bridges/equations/be-20-vacuum-energy.js.map +1 -1
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts +59 -72
- package/dist/bridges/equations/be-35-conformal-bootstrap.d.ts.map +1 -1
- package/dist/bridges/equations/be-35-conformal-bootstrap.js +66 -98
- package/dist/bridges/equations/be-35-conformal-bootstrap.js.map +1 -1
- package/dist/bridges/equations/be-48-grw-localization.d.ts +9 -8
- package/dist/bridges/equations/be-48-grw-localization.d.ts.map +1 -1
- package/dist/bridges/equations/be-48-grw-localization.js +9 -8
- package/dist/bridges/equations/be-48-grw-localization.js.map +1 -1
- package/dist/bridges/gravitational-lensing.d.ts +10 -0
- package/dist/bridges/gravitational-lensing.d.ts.map +1 -1
- package/dist/bridges/gravitational-lensing.js.map +1 -1
- package/dist/bridges/index.d.ts +125 -7
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +483 -20
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/observations/types.d.ts +14 -0
- package/dist/bridges/observations/types.d.ts.map +1 -1
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/perihelion-precession.d.ts +10 -0
- package/dist/bridges/perihelion-precession.d.ts.map +1 -1
- package/dist/bridges/perihelion-precession.js.map +1 -1
- package/dist/bridges/rhs-registry.js +2 -2
- package/dist/canonical/canonical-equation.d.ts +15 -0
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/entries/_l1-build.d.ts +1 -1
- package/dist/canonical/entries/_l1-build.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +23 -0
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
- package/dist/canonical/entries/nonmonomial.js +93 -0
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/residual.d.ts +28 -0
- package/dist/canonical/residual.d.ts.map +1 -0
- package/dist/canonical/residual.js +31 -0
- package/dist/canonical/residual.js.map +1 -0
- package/dist/cli/command.d.ts +8 -0
- package/dist/cli/command.d.ts.map +1 -1
- package/dist/cli/command.js +10 -0
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts +3 -0
- package/dist/cli/commands/atlas.d.ts.map +1 -0
- package/dist/cli/commands/atlas.js +158 -0
- package/dist/cli/commands/atlas.js.map +1 -0
- package/dist/cli/commands/audit.js +3 -3
- package/dist/cli/commands/candidates.js +3 -3
- package/dist/cli/commands/canonical.js +3 -3
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +8 -1
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.js +7 -7
- package/dist/cli/commands/coverage.js +3 -3
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +40 -9
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/discover.d.ts.map +1 -1
- package/dist/cli/commands/discover.js +46 -27
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +2 -1
- package/dist/cli/commands/evaluate.js.map +1 -1
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +19 -6
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/index.d.ts +3 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +3 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/map.d.ts.map +1 -1
- package/dist/cli/commands/map.js +187 -36
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/path.d.ts +3 -0
- package/dist/cli/commands/path.d.ts.map +1 -0
- package/dist/cli/commands/path.js +228 -0
- package/dist/cli/commands/path.js.map +1 -0
- package/dist/cli/commands/predict.js +4 -4
- package/dist/cli/commands/priority.js +2 -2
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +59 -2
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.d.ts.map +1 -1
- package/dist/cli/commands/recover.js +25 -6
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +41 -0
- package/dist/cli/commands/regime.d.ts.map +1 -0
- package/dist/cli/commands/regime.js +243 -0
- package/dist/cli/commands/regime.js.map +1 -0
- package/dist/cli/commands/symbolic.js +5 -5
- package/dist/cli/errors.d.ts +13 -1
- package/dist/cli/errors.d.ts.map +1 -1
- package/dist/cli/errors.js +13 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/graphs.d.ts.map +1 -1
- package/dist/cli/graphs.js +5 -1
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +29 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output.d.ts +6 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +21 -1
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +23 -1
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-prediction.d.ts.map +1 -1
- package/dist/composition/bridge-prediction.js +0 -0
- package/dist/composition/bridge-prediction.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts +65 -0
- package/dist/composition/canonical-compare.d.ts.map +1 -0
- package/dist/composition/canonical-compare.js +237 -0
- package/dist/composition/canonical-compare.js.map +1 -0
- package/dist/composition/canonical-graph.d.ts +2 -2
- package/dist/composition/canonical-graph.js +2 -2
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +32 -0
- package/dist/composition/canonical-prefactors.d.ts.map +1 -0
- package/dist/composition/canonical-prefactors.js +80 -0
- package/dist/composition/canonical-prefactors.js.map +1 -0
- package/dist/composition/compose-symbolic.d.ts.map +1 -1
- package/dist/composition/compose-symbolic.js.map +1 -1
- package/dist/composition/compose.d.ts.map +1 -1
- package/dist/composition/compose.js +80 -1
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/discovery.d.ts +20 -3
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +30 -4
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +64 -0
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +29 -0
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/edges/calibration.d.ts.map +1 -1
- package/dist/composition/edges/calibration.js +46 -0
- package/dist/composition/edges/calibration.js.map +1 -1
- package/dist/composition/edges/catalog-quantum.d.ts.map +1 -1
- package/dist/composition/edges/catalog-quantum.js +9 -0
- package/dist/composition/edges/catalog-quantum.js.map +1 -1
- package/dist/composition/edges/catalog-tranche.d.ts.map +1 -1
- package/dist/composition/edges/catalog-tranche.js +18 -0
- package/dist/composition/edges/catalog-tranche.js.map +1 -1
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/explain.d.ts +9 -1
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +34 -8
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts +13 -0
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +25 -0
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/graph-viz-svg.d.ts.map +1 -1
- package/dist/composition/graph-viz.d.ts +118 -1
- package/dist/composition/graph-viz.d.ts.map +1 -1
- package/dist/composition/graph-viz.js +189 -6
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.d.ts.map +1 -1
- package/dist/composition/grounding.js +6 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +4 -2
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +2 -1
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/poster-source.d.ts +153 -0
- package/dist/composition/poster-source.d.ts.map +1 -0
- package/dist/composition/poster-source.js +183 -0
- package/dist/composition/poster-source.js.map +1 -0
- package/dist/composition/probe/backend-protocol.d.ts +34 -1
- package/dist/composition/probe/backend-protocol.d.ts.map +1 -1
- package/dist/composition/probe/backend-protocol.js +9 -2
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.d.ts.map +1 -1
- package/dist/composition/probe/corpus.d.ts +12 -0
- package/dist/composition/probe/corpus.d.ts.map +1 -1
- package/dist/composition/probe/corpus.js +100 -0
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/generator.d.ts +14 -0
- package/dist/composition/probe/generator.d.ts.map +1 -1
- package/dist/composition/probe/generator.js +24 -2
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/limits.js.map +1 -1
- package/dist/composition/probe/pipeline.d.ts +5 -0
- package/dist/composition/probe/pipeline.d.ts.map +1 -1
- package/dist/composition/probe/pipeline.js +20 -3
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.d.ts.map +1 -1
- package/dist/composition/probe/report.js +2 -0
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.d.ts.map +1 -1
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +2 -2
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +1 -1
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.d.ts +52 -2
- package/dist/composition/uncertainty.d.ts.map +1 -1
- package/dist/composition/uncertainty.js +38 -2
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/core/constants.d.ts +13 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +13 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/flux-rules.d.ts.map +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/regime-registry.d.ts.map +1 -1
- package/dist/core/regime-rule-install.js.map +1 -1
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +1 -1
- package/dist/diff/bridge-gradient.js +1 -1
- package/dist/dimensional/ast-types.d.ts +31 -1
- package/dist/dimensional/ast-types.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.d.ts +1 -1
- package/dist/dimensional/bridge-check.js +1 -1
- package/dist/dimensional/buckingham.d.ts.map +1 -1
- package/dist/dimensional/connection.d.ts +2 -0
- package/dist/dimensional/connection.d.ts.map +1 -1
- package/dist/dimensional/connection.js +2 -0
- package/dist/dimensional/connection.js.map +1 -1
- package/dist/dimensional/curvature-composite.d.ts +5 -3
- package/dist/dimensional/curvature-composite.d.ts.map +1 -1
- package/dist/dimensional/curvature-composite.js +1 -0
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/curvature-invariants.d.ts +2 -0
- package/dist/dimensional/curvature-invariants.d.ts.map +1 -1
- package/dist/dimensional/curvature-invariants.js +2 -0
- package/dist/dimensional/curvature-invariants.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/einstein-equation.d.ts +3 -3
- package/dist/dimensional/einstein-equation.js +3 -3
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/metric.d.ts +5 -2
- package/dist/dimensional/metric.d.ts.map +1 -1
- package/dist/dimensional/metric.js +5 -2
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/tensor-trace.js.map +1 -1
- package/dist/dimensional/validator-registry.js.map +1 -1
- package/dist/dimensional/validator.d.ts +3 -2
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +23 -4
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +104 -0
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/float64-engine.d.ts.map +1 -1
- package/dist/numerical/float64-engine.js +51 -24
- package/dist/numerical/float64-engine.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula.d.ts.map +1 -1
- package/dist/numerical/formula.js.map +1 -1
- package/dist/numerical/geometrized.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +3 -3
- package/dist/numerical/gl4-integrator.js +3 -3
- package/dist/numerical/killing.d.ts +47 -5
- package/dist/numerical/killing.d.ts.map +1 -1
- package/dist/numerical/killing.js +41 -3
- package/dist/numerical/killing.js.map +1 -1
- package/dist/numerical/klein-gordon.d.ts +2 -2
- package/dist/numerical/klein-gordon.js +2 -2
- package/dist/numerical/lowering.d.ts +2 -2
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +5 -3
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/perihelion-finder.d.ts +15 -13
- package/dist/numerical/perihelion-finder.d.ts.map +1 -1
- package/dist/numerical/perihelion-finder.js +15 -13
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/weyl-lowering.d.ts.map +1 -1
- package/dist/numerical/weyl-lowering.js +90 -40
- package/dist/numerical/weyl-lowering.js.map +1 -1
- package/package.json +163 -104
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 6, S6.1 — scoring a benchmark condition against the answer key.
|
|
3
|
+
*
|
|
4
|
+
* Design note: `docs/planning/Atlas-Phase-5-Design.md` §9.
|
|
5
|
+
*
|
|
6
|
+
* This module receives the answer key as an ARGUMENT. It never reads the scorer
|
|
7
|
+
* half of the fixture tree itself: the import guard forbids any `src/` path into
|
|
8
|
+
* it. The orchestration script (`scripts/run-atlas-study.mjs`) loads the labels
|
|
9
|
+
* and passes them in.
|
|
10
|
+
*
|
|
11
|
+
* **An empty item set produces NO metrics, not zero metrics.** `scoreCondition`
|
|
12
|
+
* throws on it: a table of zeros and NaNs from an empty set is indistinguishable,
|
|
13
|
+
* at a glance, from a condition that failed everything.
|
|
14
|
+
*
|
|
15
|
+
* @module atlas/benchmark/study
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
import { FAILURE_KINDS } from './types.js';
|
|
19
|
+
import { mcnemar, pairedDifferenceInterval, wilsonInterval } from './stats.js';
|
|
20
|
+
const KNOWN_FAILURES = new Set(FAILURE_KINDS);
|
|
21
|
+
/**
|
|
22
|
+
* Check an answer key against the item ids it must cover: exactly one label per
|
|
23
|
+
* item, no label for an unknown item, a known failure kind on every invalid
|
|
24
|
+
* label and none on a valid one. Takes the key as an ARGUMENT, like everything
|
|
25
|
+
* here, because no `src/` file may read the scorer half.
|
|
26
|
+
*
|
|
27
|
+
* @param itemIds - the ids of the frozen items.
|
|
28
|
+
* @param labels - the answer key.
|
|
29
|
+
* @returns every problem found, labels first in key order, then missing labels
|
|
30
|
+
* in item order; empty means the key fits.
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
export function validateLabels(itemIds, labels) {
|
|
34
|
+
const problems = [];
|
|
35
|
+
const ids = new Set(itemIds);
|
|
36
|
+
const seen = new Set();
|
|
37
|
+
for (const l of labels) {
|
|
38
|
+
const p = (problem) => {
|
|
39
|
+
problems.push({ id: l.itemId, problem });
|
|
40
|
+
};
|
|
41
|
+
if (seen.has(l.itemId))
|
|
42
|
+
p('duplicate label');
|
|
43
|
+
seen.add(l.itemId);
|
|
44
|
+
if (!ids.has(l.itemId))
|
|
45
|
+
p('label for an item not in the set');
|
|
46
|
+
if (l.kind === 'invalid') {
|
|
47
|
+
if (l.failureKind === undefined)
|
|
48
|
+
p('an invalid label must name its failureKind');
|
|
49
|
+
else if (!KNOWN_FAILURES.has(l.failureKind))
|
|
50
|
+
p(`unknown failureKind '${l.failureKind}'`);
|
|
51
|
+
}
|
|
52
|
+
else if (l.failureKind !== undefined) {
|
|
53
|
+
p('a valid label must not carry a failureKind');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
for (const id of itemIds)
|
|
57
|
+
if (!seen.has(id))
|
|
58
|
+
problems.push({ id, problem: 'no label' });
|
|
59
|
+
return problems;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Score one condition against the answer key.
|
|
63
|
+
*
|
|
64
|
+
* @throws Error when the key is empty (no measurement exists), or when an answer
|
|
65
|
+
* names an item the key does not contain.
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
export function scoreCondition(condition, answers, labels) {
|
|
69
|
+
if (labels.length === 0) {
|
|
70
|
+
throw new Error(`scoreCondition(${condition}): the answer key is empty — there is nothing to measure`);
|
|
71
|
+
}
|
|
72
|
+
const byId = new Map(answers.map((a) => [a.itemId, a]));
|
|
73
|
+
const labelIds = new Set(labels.map((l) => l.itemId));
|
|
74
|
+
for (const a of answers) {
|
|
75
|
+
if (!labelIds.has(a.itemId))
|
|
76
|
+
throw new Error(`scoreCondition(${condition}): answer for unknown item ${a.itemId}`);
|
|
77
|
+
}
|
|
78
|
+
let nValid = 0;
|
|
79
|
+
let nInvalid = 0;
|
|
80
|
+
let invalidRejected = 0;
|
|
81
|
+
let kindNamedCorrectly = 0;
|
|
82
|
+
let wrongAccepts = 0;
|
|
83
|
+
let validAccepted = 0;
|
|
84
|
+
let falseRejects = 0;
|
|
85
|
+
let abstentions = 0;
|
|
86
|
+
let unanswered = 0;
|
|
87
|
+
for (const label of labels) {
|
|
88
|
+
const answer = byId.get(label.itemId);
|
|
89
|
+
if (answer === undefined)
|
|
90
|
+
unanswered++;
|
|
91
|
+
else if (answer.outcome === 'abstain')
|
|
92
|
+
abstentions++;
|
|
93
|
+
if (label.kind === 'valid') {
|
|
94
|
+
nValid++;
|
|
95
|
+
if (answer?.outcome === 'accept')
|
|
96
|
+
validAccepted++;
|
|
97
|
+
if (answer?.outcome === 'reject')
|
|
98
|
+
falseRejects++;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
nInvalid++;
|
|
102
|
+
if (answer?.outcome === 'accept')
|
|
103
|
+
wrongAccepts++;
|
|
104
|
+
if (answer?.outcome === 'reject') {
|
|
105
|
+
invalidRejected++;
|
|
106
|
+
if (answer.detectedFailure !== undefined && answer.detectedFailure === label.failureKind) {
|
|
107
|
+
kindNamedCorrectly++;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
condition,
|
|
114
|
+
nValid,
|
|
115
|
+
nInvalid,
|
|
116
|
+
invalidRejected,
|
|
117
|
+
invalidRejectionInterval: nInvalid === 0 ? { lower: Number.NaN, upper: Number.NaN } : wilsonInterval(invalidRejected, nInvalid),
|
|
118
|
+
kindNamedCorrectly,
|
|
119
|
+
wrongAccepts,
|
|
120
|
+
validAccepted,
|
|
121
|
+
falseRejects,
|
|
122
|
+
abstentions,
|
|
123
|
+
unanswered,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Compare two conditions on the SAME invalid items. An item counts as "right"
|
|
128
|
+
* for a condition when it was rejected; an unanswered item is "wrong", not dropped.
|
|
129
|
+
*
|
|
130
|
+
* @throws Error when there are no invalid items.
|
|
131
|
+
* @internal
|
|
132
|
+
*/
|
|
133
|
+
export function pairedRejection(conditionA, answersA, conditionB, answersB, labels) {
|
|
134
|
+
const invalid = labels.filter((l) => l.kind === 'invalid');
|
|
135
|
+
if (invalid.length === 0)
|
|
136
|
+
throw new Error('pairedRejection: no invalid items to compare on');
|
|
137
|
+
const rejectedBy = (answers) => new Set(answers.filter((x) => x.outcome === 'reject').map((x) => x.itemId));
|
|
138
|
+
const ra = rejectedBy(answersA);
|
|
139
|
+
const rb = rejectedBy(answersB);
|
|
140
|
+
let a = 0;
|
|
141
|
+
let b = 0;
|
|
142
|
+
let c = 0;
|
|
143
|
+
let d = 0;
|
|
144
|
+
for (const l of invalid) {
|
|
145
|
+
const x = ra.has(l.itemId);
|
|
146
|
+
const y = rb.has(l.itemId);
|
|
147
|
+
if (x && y)
|
|
148
|
+
a++;
|
|
149
|
+
else if (x)
|
|
150
|
+
b++;
|
|
151
|
+
else if (y)
|
|
152
|
+
c++;
|
|
153
|
+
else
|
|
154
|
+
d++;
|
|
155
|
+
}
|
|
156
|
+
const table = { a, b, c, d };
|
|
157
|
+
const difference = pairedDifferenceInterval(table);
|
|
158
|
+
return {
|
|
159
|
+
conditionA,
|
|
160
|
+
conditionB,
|
|
161
|
+
table,
|
|
162
|
+
difference,
|
|
163
|
+
mcnemar: mcnemar(table),
|
|
164
|
+
aBetterExcludingZero: difference.lower > 0,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Score a sequence of named condition runs as an ablation: each row is scored,
|
|
169
|
+
* and each row after the first is compared, paired on the same invalid items,
|
|
170
|
+
* against the row before it — so the table shows what each added layer bought.
|
|
171
|
+
*
|
|
172
|
+
* @internal
|
|
173
|
+
*/
|
|
174
|
+
export function scoreAblation(runs, labels) {
|
|
175
|
+
const rows = [];
|
|
176
|
+
for (let i = 0; i < runs.length; i++) {
|
|
177
|
+
const [name, answers] = runs[i];
|
|
178
|
+
const metrics = scoreCondition(name, answers, labels);
|
|
179
|
+
if (i === 0)
|
|
180
|
+
rows.push({ configuration: name, metrics });
|
|
181
|
+
else {
|
|
182
|
+
const [prevName, prevAnswers] = runs[i - 1];
|
|
183
|
+
rows.push({
|
|
184
|
+
configuration: name,
|
|
185
|
+
metrics,
|
|
186
|
+
stepOverPrevious: pairedRejection(name, answers, prevName, prevAnswers, labels),
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return rows;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=study.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"study.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/study.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 5, S5.1 — the invalid-bridge benchmark's item schema.
|
|
3
|
+
*
|
|
4
|
+
* Design note: `docs/planning/Atlas-Phase-5-Design.md` §2.
|
|
5
|
+
*
|
|
6
|
+
* ⚠ **No agent authors a frozen item** (design note §0). This file defines the
|
|
7
|
+
* SHAPE an independent author fills in; it contains no items.
|
|
8
|
+
*
|
|
9
|
+
* @module atlas/benchmark/types
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
import type { ExprNode } from '../../dimensional/ast-types.js';
|
|
13
|
+
import type { Conventions, RegimeInequality, RelationType } from '../types.js';
|
|
14
|
+
/** The eight failure kinds, sampled evenly (ROADMAP Phase 5). @internal */
|
|
15
|
+
export declare const FAILURE_KINDS: readonly ['omitted-premise', 'domain-violation', 'convention-mismatch', 'notation-collision', 'dimensional-coincidence', 'non-uniform-limit', 'false-inverse', 'analogy-promoted'];
|
|
16
|
+
/** One failure kind. @internal */
|
|
17
|
+
export type FailureKind = (typeof FAILURE_KINDS)[number];
|
|
18
|
+
/**
|
|
19
|
+
* Who wrote an item. Only `'independent'` may be frozen; `'contested-draft'`
|
|
20
|
+
* is what an agent may produce, into `contested/`, and nothing else.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export type Authorship = 'independent' | 'contested-draft';
|
|
25
|
+
/** Which split an item scores in. @internal */
|
|
26
|
+
export type BenchmarkSplit = 'in-distribution' | 'held-out';
|
|
27
|
+
/**
|
|
28
|
+
* The held-out family. Corrected from the plan's "first-order relaxation",
|
|
29
|
+
* which Phase 0 already encodes as `model-first-order` (design note §4).
|
|
30
|
+
*
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
export declare const HELD_OUT_FAMILY = "fluid-statics";
|
|
34
|
+
/**
|
|
35
|
+
* Markers that identify the held-out family in model ids, dynamics and bridge
|
|
36
|
+
* ids. `tests/atlas/benchmark.test.ts` scans the atlas for them, and proves the
|
|
37
|
+
* scan can fire with the ORIGINAL family's markers as a positive control.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export declare const HELD_OUT_MARKERS: readonly string[];
|
|
42
|
+
/**
|
|
43
|
+
* One benchmark item, as its PUBLIC half carries it — never the answer. Whether
|
|
44
|
+
* the item is valid, and which failure kind it has, live only in the scorer
|
|
45
|
+
* half (`ItemLabel` in `study.ts`), so a condition that reads the public file
|
|
46
|
+
* cannot read the key.
|
|
47
|
+
*
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
export interface BenchmarkItem {
|
|
51
|
+
readonly id: string;
|
|
52
|
+
readonly premises: readonly string[];
|
|
53
|
+
readonly conclusion: string;
|
|
54
|
+
readonly claimedRelation: RelationType;
|
|
55
|
+
readonly family: string;
|
|
56
|
+
readonly split: BenchmarkSplit;
|
|
57
|
+
/** The claimed relation as an AST, so the leakage check can run. */
|
|
58
|
+
readonly expr: ExprNode;
|
|
59
|
+
/** The id of the item this one renames, when it is a renamed-variable variant. */
|
|
60
|
+
readonly renamedVariant?: string;
|
|
61
|
+
readonly authorship: Authorship;
|
|
62
|
+
/** Where the item came from: an erratum, a documented misconception, a textbook. */
|
|
63
|
+
readonly source: string;
|
|
64
|
+
/** The claim's stated side conditions, as prose. `[]` states "none". */
|
|
65
|
+
readonly sideConditions?: readonly string[];
|
|
66
|
+
/** Conventions declared by the premises and by the conclusion. */
|
|
67
|
+
readonly conventions?: {
|
|
68
|
+
readonly premise?: Conventions;
|
|
69
|
+
readonly conclusion?: Conventions;
|
|
70
|
+
};
|
|
71
|
+
/** When the claim is a CHAIN: the two relations composed to reach `claimedRelation`. */
|
|
72
|
+
readonly composedFrom?: readonly [RelationType, RelationType];
|
|
73
|
+
/** The regime the claim is used in: its inequalities and the π-group values at the use site. */
|
|
74
|
+
readonly regime?: {
|
|
75
|
+
readonly inequalities: readonly RegimeInequality[];
|
|
76
|
+
readonly values: Readonly<Record<string, number>>;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/atlas/benchmark/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/E,2EAA2E;AAC3E,eAAO,MAAM,aAAa,YACxB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,CACV,CAAC;AAEX,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAE3D,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAQ7C,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAMxB,wEAAwE;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,kEAAkE;IAClE,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;QAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;KACnC,CAAC;IACF,wFAAwF;IACxF,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9D,gGAAgG;IAChG,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;QACnD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACnD,CAAC;CACH"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 5, S5.1 — the invalid-bridge benchmark's item schema.
|
|
3
|
+
*
|
|
4
|
+
* Design note: `docs/planning/Atlas-Phase-5-Design.md` §2.
|
|
5
|
+
*
|
|
6
|
+
* ⚠ **No agent authors a frozen item** (design note §0). This file defines the
|
|
7
|
+
* SHAPE an independent author fills in; it contains no items.
|
|
8
|
+
*
|
|
9
|
+
* @module atlas/benchmark/types
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
/** The eight failure kinds, sampled evenly (ROADMAP Phase 5). @internal */
|
|
13
|
+
export const FAILURE_KINDS = [
|
|
14
|
+
'omitted-premise',
|
|
15
|
+
'domain-violation',
|
|
16
|
+
'convention-mismatch',
|
|
17
|
+
'notation-collision',
|
|
18
|
+
'dimensional-coincidence',
|
|
19
|
+
'non-uniform-limit',
|
|
20
|
+
'false-inverse',
|
|
21
|
+
'analogy-promoted',
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* The held-out family. Corrected from the plan's "first-order relaxation",
|
|
25
|
+
* which Phase 0 already encodes as `model-first-order` (design note §4).
|
|
26
|
+
*
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
export const HELD_OUT_FAMILY = 'fluid-statics';
|
|
30
|
+
/**
|
|
31
|
+
* Markers that identify the held-out family in model ids, dynamics and bridge
|
|
32
|
+
* ids. `tests/atlas/benchmark.test.ts` scans the atlas for them, and proves the
|
|
33
|
+
* scan can fire with the ORIGINAL family's markers as a positive control.
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export const HELD_OUT_MARKERS = [
|
|
38
|
+
'hydrostat',
|
|
39
|
+
'buoyan',
|
|
40
|
+
'archimed',
|
|
41
|
+
'pascal',
|
|
42
|
+
'barometric',
|
|
43
|
+
'fluid-static',
|
|
44
|
+
'fluid statics',
|
|
45
|
+
];
|
|
46
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,oBAAoB;IACpB,yBAAyB;IACzB,mBAAmB;IACnB,eAAe;IACf,kBAAkB;CACV,CAAC;AAgBX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,WAAW;IACX,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,cAAc;IACd,eAAe;CAChB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composition table for `RelationType` — a literal 8×8 matrix.
|
|
3
|
+
*
|
|
4
|
+
* `composeRelation(first, second)` answers: if one bridge asserts `first` and a
|
|
5
|
+
* second bridge asserts `second`, what relation does the chain assert? The
|
|
6
|
+
* argument order is the `First ∘ Second` column order of design note
|
|
7
|
+
* `docs/planning/Atlas-Phase-1-Design.md` §2.1.
|
|
8
|
+
*
|
|
9
|
+
* **The table is a deliberate UNDER-approximation of Blueprint v2 §4.2.** Every
|
|
10
|
+
* cell not named in §2.1 is `'no-composite-claim'`, because a wrong composite
|
|
11
|
+
* type is a false physical claim while silence is only silence. Eight of the
|
|
12
|
+
* sixty-four cells are defined; the remaining fifty-six are silent, and the
|
|
13
|
+
* reasons for the notable silences are §2.2.
|
|
14
|
+
*
|
|
15
|
+
* Two cells the implementation plan asserts are NOT defined here, on the
|
|
16
|
+
* authority of the design note (§0 and §2.2 item 5):
|
|
17
|
+
*
|
|
18
|
+
* - `exact-equivalence ∘ approximation`, either order. An exact equivalence
|
|
19
|
+
* contributes `IDENTITY_BOUND` only *in the norm a given bridge states* (see
|
|
20
|
+
* `./error-algebra.ts`), and no field in Sprint 1 records a norm, so
|
|
21
|
+
* norm-compatibility cannot be checked. A `norm?` field unblocks it in
|
|
22
|
+
* Phase 2.
|
|
23
|
+
* - `structural-analogy ∘ structural-analogy`. Analogy is not transitive: the
|
|
24
|
+
* shared structure can dilute to nothing across a chain.
|
|
25
|
+
*
|
|
26
|
+
* Widening this table is a reviewed act — `tests/atlas/composition-table.test.ts`
|
|
27
|
+
* pins the count of silent cells.
|
|
28
|
+
*
|
|
29
|
+
* Pure: no I/O, no registry reads, and no import from `src/composition/`.
|
|
30
|
+
*
|
|
31
|
+
* @module atlas/composition-table
|
|
32
|
+
*/
|
|
33
|
+
import type { RelationType } from './types.js';
|
|
34
|
+
/** What `composeRelation` returns when the chain asserts nothing. @public */
|
|
35
|
+
export type NoCompositeClaim = 'no-composite-claim';
|
|
36
|
+
/** The result of composing two relations. @public */
|
|
37
|
+
export type CompositionResult = RelationType | NoCompositeClaim;
|
|
38
|
+
/** @public */
|
|
39
|
+
export declare const NO_COMPOSITE_CLAIM: NoCompositeClaim;
|
|
40
|
+
/**
|
|
41
|
+
* Every row of every column, written out. `Record<RelationType, …>` makes the
|
|
42
|
+
* exhaustiveness structural: a ninth `RelationType` member fails to compile
|
|
43
|
+
* here rather than silently acquiring a row of `'no-composite-claim'`.
|
|
44
|
+
*
|
|
45
|
+
* @public
|
|
46
|
+
*/
|
|
47
|
+
export declare const COMPOSITION_TABLE: Readonly<Record<RelationType, Readonly<Record<RelationType, CompositionResult>>>>;
|
|
48
|
+
/**
|
|
49
|
+
* The relation a chain of two bridges asserts, or `'no-composite-claim'` when
|
|
50
|
+
* this sprint declines to assert one. A table lookup — no rules, no inference.
|
|
51
|
+
*
|
|
52
|
+
* @public
|
|
53
|
+
*/
|
|
54
|
+
export declare function composeRelation(first: RelationType, second: RelationType): CompositionResult;
|
|
55
|
+
//# sourceMappingURL=composition-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition-table.d.ts","sourceRoot":"","sources":["../../src/atlas/composition-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,qDAAqD;AACrD,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAEhE,cAAc;AACd,eAAO,MAAM,kBAAkB,EAAE,gBAAuC,CAAC;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CACtC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAkFxE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,GACnB,iBAAiB,CAEnB"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composition table for `RelationType` — a literal 8×8 matrix.
|
|
3
|
+
*
|
|
4
|
+
* `composeRelation(first, second)` answers: if one bridge asserts `first` and a
|
|
5
|
+
* second bridge asserts `second`, what relation does the chain assert? The
|
|
6
|
+
* argument order is the `First ∘ Second` column order of design note
|
|
7
|
+
* `docs/planning/Atlas-Phase-1-Design.md` §2.1.
|
|
8
|
+
*
|
|
9
|
+
* **The table is a deliberate UNDER-approximation of Blueprint v2 §4.2.** Every
|
|
10
|
+
* cell not named in §2.1 is `'no-composite-claim'`, because a wrong composite
|
|
11
|
+
* type is a false physical claim while silence is only silence. Eight of the
|
|
12
|
+
* sixty-four cells are defined; the remaining fifty-six are silent, and the
|
|
13
|
+
* reasons for the notable silences are §2.2.
|
|
14
|
+
*
|
|
15
|
+
* Two cells the implementation plan asserts are NOT defined here, on the
|
|
16
|
+
* authority of the design note (§0 and §2.2 item 5):
|
|
17
|
+
*
|
|
18
|
+
* - `exact-equivalence ∘ approximation`, either order. An exact equivalence
|
|
19
|
+
* contributes `IDENTITY_BOUND` only *in the norm a given bridge states* (see
|
|
20
|
+
* `./error-algebra.ts`), and no field in Sprint 1 records a norm, so
|
|
21
|
+
* norm-compatibility cannot be checked. A `norm?` field unblocks it in
|
|
22
|
+
* Phase 2.
|
|
23
|
+
* - `structural-analogy ∘ structural-analogy`. Analogy is not transitive: the
|
|
24
|
+
* shared structure can dilute to nothing across a chain.
|
|
25
|
+
*
|
|
26
|
+
* Widening this table is a reviewed act — `tests/atlas/composition-table.test.ts`
|
|
27
|
+
* pins the count of silent cells.
|
|
28
|
+
*
|
|
29
|
+
* Pure: no I/O, no registry reads, and no import from `src/composition/`.
|
|
30
|
+
*
|
|
31
|
+
* @module atlas/composition-table
|
|
32
|
+
*/
|
|
33
|
+
/** @public */
|
|
34
|
+
export const NO_COMPOSITE_CLAIM = 'no-composite-claim';
|
|
35
|
+
/**
|
|
36
|
+
* Every row of every column, written out. `Record<RelationType, …>` makes the
|
|
37
|
+
* exhaustiveness structural: a ninth `RelationType` member fails to compile
|
|
38
|
+
* here rather than silently acquiring a row of `'no-composite-claim'`.
|
|
39
|
+
*
|
|
40
|
+
* @public
|
|
41
|
+
*/
|
|
42
|
+
export const COMPOSITION_TABLE = {
|
|
43
|
+
derivation: {
|
|
44
|
+
derivation: 'derivation',
|
|
45
|
+
'exact-equivalence': 'derivation',
|
|
46
|
+
restriction: NO_COMPOSITE_CLAIM,
|
|
47
|
+
approximation: NO_COMPOSITE_CLAIM,
|
|
48
|
+
'coarse-graining': NO_COMPOSITE_CLAIM,
|
|
49
|
+
'analytic-continuation': NO_COMPOSITE_CLAIM,
|
|
50
|
+
'structural-analogy': NO_COMPOSITE_CLAIM,
|
|
51
|
+
'deformation-quantization': NO_COMPOSITE_CLAIM,
|
|
52
|
+
},
|
|
53
|
+
'exact-equivalence': {
|
|
54
|
+
derivation: 'derivation',
|
|
55
|
+
'exact-equivalence': 'exact-equivalence',
|
|
56
|
+
restriction: 'restriction',
|
|
57
|
+
approximation: NO_COMPOSITE_CLAIM,
|
|
58
|
+
'coarse-graining': NO_COMPOSITE_CLAIM,
|
|
59
|
+
'analytic-continuation': NO_COMPOSITE_CLAIM,
|
|
60
|
+
'structural-analogy': NO_COMPOSITE_CLAIM,
|
|
61
|
+
'deformation-quantization': NO_COMPOSITE_CLAIM,
|
|
62
|
+
},
|
|
63
|
+
restriction: {
|
|
64
|
+
derivation: NO_COMPOSITE_CLAIM,
|
|
65
|
+
'exact-equivalence': 'restriction',
|
|
66
|
+
restriction: 'restriction',
|
|
67
|
+
approximation: NO_COMPOSITE_CLAIM,
|
|
68
|
+
'coarse-graining': NO_COMPOSITE_CLAIM,
|
|
69
|
+
'analytic-continuation': NO_COMPOSITE_CLAIM,
|
|
70
|
+
'structural-analogy': NO_COMPOSITE_CLAIM,
|
|
71
|
+
'deformation-quantization': NO_COMPOSITE_CLAIM,
|
|
72
|
+
},
|
|
73
|
+
approximation: {
|
|
74
|
+
derivation: NO_COMPOSITE_CLAIM,
|
|
75
|
+
'exact-equivalence': NO_COMPOSITE_CLAIM,
|
|
76
|
+
restriction: NO_COMPOSITE_CLAIM,
|
|
77
|
+
approximation: NO_COMPOSITE_CLAIM,
|
|
78
|
+
'coarse-graining': NO_COMPOSITE_CLAIM,
|
|
79
|
+
'analytic-continuation': NO_COMPOSITE_CLAIM,
|
|
80
|
+
'structural-analogy': NO_COMPOSITE_CLAIM,
|
|
81
|
+
'deformation-quantization': NO_COMPOSITE_CLAIM,
|
|
82
|
+
},
|
|
83
|
+
'coarse-graining': {
|
|
84
|
+
derivation: NO_COMPOSITE_CLAIM,
|
|
85
|
+
'exact-equivalence': NO_COMPOSITE_CLAIM,
|
|
86
|
+
restriction: NO_COMPOSITE_CLAIM,
|
|
87
|
+
approximation: NO_COMPOSITE_CLAIM,
|
|
88
|
+
'coarse-graining': 'coarse-graining',
|
|
89
|
+
'analytic-continuation': NO_COMPOSITE_CLAIM,
|
|
90
|
+
'structural-analogy': NO_COMPOSITE_CLAIM,
|
|
91
|
+
'deformation-quantization': NO_COMPOSITE_CLAIM,
|
|
92
|
+
},
|
|
93
|
+
'analytic-continuation': {
|
|
94
|
+
derivation: NO_COMPOSITE_CLAIM,
|
|
95
|
+
'exact-equivalence': NO_COMPOSITE_CLAIM,
|
|
96
|
+
restriction: NO_COMPOSITE_CLAIM,
|
|
97
|
+
approximation: NO_COMPOSITE_CLAIM,
|
|
98
|
+
'coarse-graining': NO_COMPOSITE_CLAIM,
|
|
99
|
+
'analytic-continuation': NO_COMPOSITE_CLAIM,
|
|
100
|
+
'structural-analogy': NO_COMPOSITE_CLAIM,
|
|
101
|
+
'deformation-quantization': NO_COMPOSITE_CLAIM,
|
|
102
|
+
},
|
|
103
|
+
'structural-analogy': {
|
|
104
|
+
derivation: NO_COMPOSITE_CLAIM,
|
|
105
|
+
'exact-equivalence': NO_COMPOSITE_CLAIM,
|
|
106
|
+
restriction: NO_COMPOSITE_CLAIM,
|
|
107
|
+
approximation: NO_COMPOSITE_CLAIM,
|
|
108
|
+
'coarse-graining': NO_COMPOSITE_CLAIM,
|
|
109
|
+
'analytic-continuation': NO_COMPOSITE_CLAIM,
|
|
110
|
+
'structural-analogy': NO_COMPOSITE_CLAIM,
|
|
111
|
+
'deformation-quantization': NO_COMPOSITE_CLAIM,
|
|
112
|
+
},
|
|
113
|
+
'deformation-quantization': {
|
|
114
|
+
derivation: NO_COMPOSITE_CLAIM,
|
|
115
|
+
'exact-equivalence': NO_COMPOSITE_CLAIM,
|
|
116
|
+
restriction: NO_COMPOSITE_CLAIM,
|
|
117
|
+
approximation: NO_COMPOSITE_CLAIM,
|
|
118
|
+
'coarse-graining': NO_COMPOSITE_CLAIM,
|
|
119
|
+
'analytic-continuation': NO_COMPOSITE_CLAIM,
|
|
120
|
+
'structural-analogy': NO_COMPOSITE_CLAIM,
|
|
121
|
+
'deformation-quantization': NO_COMPOSITE_CLAIM,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* The relation a chain of two bridges asserts, or `'no-composite-claim'` when
|
|
126
|
+
* this sprint declines to assert one. A table lookup — no rules, no inference.
|
|
127
|
+
*
|
|
128
|
+
* @public
|
|
129
|
+
*/
|
|
130
|
+
export function composeRelation(first, second) {
|
|
131
|
+
return COMPOSITION_TABLE[first][second];
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=composition-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composition-table.js","sourceRoot":"","sources":["../../src/atlas/composition-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAUH,cAAc;AACd,MAAM,CAAC,MAAM,kBAAkB,GAAqB,oBAAoB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAE1B;IACF,UAAU,EAAE;QACV,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,YAAY;QACjC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,mBAAmB,EAAE;QACnB,UAAU,EAAE,YAAY;QACxB,mBAAmB,EAAE,mBAAmB;QACxC,WAAW,EAAE,aAAa;QAC1B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,WAAW,EAAE;QACX,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,aAAa;QAClC,WAAW,EAAE,aAAa;QAC1B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,aAAa,EAAE;QACb,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,iBAAiB,EAAE;QACjB,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,iBAAiB;QACpC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,uBAAuB,EAAE;QACvB,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,oBAAoB,EAAE;QACpB,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;IACD,0BAA0B,EAAE;QAC1B,UAAU,EAAE,kBAAkB;QAC9B,mBAAmB,EAAE,kBAAkB;QACvC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,kBAAkB;QACjC,iBAAiB,EAAE,kBAAkB;QACrC,uBAAuB,EAAE,kBAAkB;QAC3C,oBAAoB,EAAE,kBAAkB;QACxC,0BAA0B,EAAE,kBAAkB;KAC/C;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAmB,EACnB,MAAoB;IAEpB,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 1 — convention comparison.
|
|
3
|
+
*
|
|
4
|
+
* `Conventions` (`src/atlas/types.ts`) records the sign and unit choices a
|
|
5
|
+
* record depends on. Two records that disagree on one of those choices are not
|
|
6
|
+
* directly comparable, and this module says WHICH keys disagree.
|
|
7
|
+
*
|
|
8
|
+
* **`undefined` is "unknown", never "mismatch", and that asymmetry is the
|
|
9
|
+
* whole design.** A record that declares nothing about the metric signature
|
|
10
|
+
* has not chosen `'+---'`; it has not said. Reporting the absence as a
|
|
11
|
+
* disagreement would manufacture conflicts out of missing data — and because
|
|
12
|
+
* almost every record in the repo declares nothing today, it would manufacture
|
|
13
|
+
* them at scale. The same reasoning that makes design note §3 require a
|
|
14
|
+
* NON-EMPTY `conventions` before `convention-checked` can be derived applies
|
|
15
|
+
* in the mirror here: absence earns neither a tag nor an accusation.
|
|
16
|
+
*
|
|
17
|
+
* A mismatch is therefore reported only when BOTH sides declare the key and
|
|
18
|
+
* the declared values differ.
|
|
19
|
+
*
|
|
20
|
+
* @module atlas/conventions
|
|
21
|
+
*/
|
|
22
|
+
import type { Conventions } from './types.js';
|
|
23
|
+
/** The keys `checkConventions` compares. @internal */
|
|
24
|
+
export type ConventionKey = keyof Conventions;
|
|
25
|
+
/**
|
|
26
|
+
* The convention keys on which `a` and `b` DECLARE different values.
|
|
27
|
+
*
|
|
28
|
+
* Returns an empty list when they agree, when either side is absent, and when
|
|
29
|
+
* neither declares a key in common.
|
|
30
|
+
*
|
|
31
|
+
* ⚠ **An empty list is NOT a statement that the two are compatible** — it means
|
|
32
|
+
* no DECLARED pair disagrees. Eve (E1, 2026-09-21) flagged that this conflates
|
|
33
|
+
* the safe case with the dangerous one: record A declaring `metricSignature:
|
|
34
|
+
* '-+++'` while B simply never declared it returns `[]`, exactly like genuine
|
|
35
|
+
* agreement, and a caller printing nothing leads a reader to infer "checked, no
|
|
36
|
+
* conflict". Silence is not agreement. Use {@link unknownConventionKeys} to
|
|
37
|
+
* surface that case, and prefer reporting the two together.
|
|
38
|
+
*
|
|
39
|
+
* @param a - one record's conventions, or `undefined` when it declares none.
|
|
40
|
+
* @param b - the other record's conventions, or `undefined`.
|
|
41
|
+
* @returns the mismatched keys, in `Conventions` declaration order.
|
|
42
|
+
*
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
export declare function checkConventions(a: Conventions | undefined, b: Conventions | undefined): readonly ConventionKey[];
|
|
46
|
+
/**
|
|
47
|
+
* The convention keys where exactly ONE side declares a value — the cases
|
|
48
|
+
* {@link checkConventions} deliberately does not call mismatches.
|
|
49
|
+
*
|
|
50
|
+
* This exists because "no declared pair disagrees" and "these two are
|
|
51
|
+
* compatible" are different claims, and only the first is checkable from the
|
|
52
|
+
* data. A key listed here is a question, not a conflict: the records MIGHT use
|
|
53
|
+
* opposite sign conventions and one simply never said. Reporting it separately
|
|
54
|
+
* lets a reader distinguish *verified agreement* from *nobody wrote it down*,
|
|
55
|
+
* which is the distinction an empty mismatch list destroys.
|
|
56
|
+
*
|
|
57
|
+
* Both sides absent is NOT unknown — it is simply a key nobody uses, so it is
|
|
58
|
+
* omitted. Only an asymmetric declaration is reported.
|
|
59
|
+
*
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
export declare function unknownConventionKeys(a: Conventions | undefined, b: Conventions | undefined): readonly ConventionKey[];
|
|
63
|
+
//# sourceMappingURL=conventions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../../src/atlas/conventions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,sDAAsD;AACtD,MAAM,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC;AAgB9C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,WAAW,GAAG,SAAS,EAC1B,CAAC,EAAE,WAAW,GAAG,SAAS,GACzB,SAAS,aAAa,EAAE,CAS1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,WAAW,GAAG,SAAS,EAC1B,CAAC,EAAE,WAAW,GAAG,SAAS,GACzB,SAAS,aAAa,EAAE,CAS1B"}
|