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,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 5, S5.3 — the deterministic, in-tree BASELINE conditions and the
|
|
3
|
+
* recall-at-depth-k scorer.
|
|
4
|
+
*
|
|
5
|
+
* Design note: `docs/planning/Atlas-Phase-5-Design.md` §7.
|
|
6
|
+
*
|
|
7
|
+
* Each baseline ranks a reference corpus against a query. The pre-registered
|
|
8
|
+
* criterion is recall at depth 10 against embeddings, so a baseline is scored by
|
|
9
|
+
* whether the correct reference lands in its top k. Three baselines, in rising
|
|
10
|
+
* order of structure:
|
|
11
|
+
*
|
|
12
|
+
* - **text retrieval** — Jaccard overlap of lower-cased word tokens;
|
|
13
|
+
* - **symbol matching** — Jaccard overlap of the expression's symbol names;
|
|
14
|
+
* - **typed structural search** — exact agreement of the leakage key
|
|
15
|
+
* (dimension-renamed normal form), then symbol overlap as the tie-break.
|
|
16
|
+
*
|
|
17
|
+
* **Every ranking is fully deterministic:** ties break on the reference id, so a
|
|
18
|
+
* rerun can never reorder a tie and move a result across the depth cut.
|
|
19
|
+
*
|
|
20
|
+
* Embeddings and LLM conditions run OUT OF PROCESS; `backend-shapes.ts` holds
|
|
21
|
+
* only their request and response shapes.
|
|
22
|
+
*
|
|
23
|
+
* @module atlas/benchmark/baselines
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
import type { ExprNode } from '../../dimensional/ast-types.js';
|
|
27
|
+
/** One record a baseline can retrieve. @internal */
|
|
28
|
+
export interface CorpusRecord {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly text: string;
|
|
31
|
+
readonly expr?: ExprNode;
|
|
32
|
+
}
|
|
33
|
+
/** A query: an item's text and, when it has one, its expression. @internal */
|
|
34
|
+
export interface RetrievalQuery {
|
|
35
|
+
readonly text: string;
|
|
36
|
+
readonly expr?: ExprNode;
|
|
37
|
+
}
|
|
38
|
+
/** A ranking: reference ids, best first. @internal */
|
|
39
|
+
export type Ranking = readonly string[];
|
|
40
|
+
/** Baseline 1: text retrieval by word-token overlap. @internal */
|
|
41
|
+
export declare function rankByTextOverlap(query: RetrievalQuery, corpus: readonly CorpusRecord[]): Ranking;
|
|
42
|
+
/** Baseline 2: symbol matching by overlap of expression symbol names. @internal */
|
|
43
|
+
export declare function rankBySymbolOverlap(query: RetrievalQuery, corpus: readonly CorpusRecord[]): Ranking;
|
|
44
|
+
/**
|
|
45
|
+
* Baseline 3: typed structural search. A record whose leakage key equals the
|
|
46
|
+
* query's scores above every record that does not; symbol overlap orders within
|
|
47
|
+
* each tier. A query or record with no expression scores zero structurally.
|
|
48
|
+
*
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
export declare function rankByStructure(query: RetrievalQuery, corpus: readonly CorpusRecord[]): Ranking;
|
|
52
|
+
/**
|
|
53
|
+
* Recall at depth k: the fraction of queries for which AT LEAST ONE correct
|
|
54
|
+
* reference appears in the top k of its ranking.
|
|
55
|
+
*
|
|
56
|
+
* A query with no ranking counts as a MISS, never as absent from the
|
|
57
|
+
* denominator: dropping it would raise recall by failing to answer. A query with
|
|
58
|
+
* no correct reference in `truth` is an error in the answer key, and throws.
|
|
59
|
+
*
|
|
60
|
+
* @throws Error if `truth` lists no correct reference for some query.
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
export declare function recallAtK(rankings: ReadonlyMap<string, Ranking>, truth: ReadonlyMap<string, readonly string[]>, k?: number): number;
|
|
64
|
+
//# sourceMappingURL=baselines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baselines.d.ts","sourceRoot":"","sources":["../../../src/atlas/benchmark/baselines.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG/D,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED,sDAAsD;AACtD,MAAM,MAAM,OAAO,GAAG,SAAS,MAAM,EAAE,CAAC;AAqCxC,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAGjG;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAGnG;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAO/F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,EAC7C,CAAC,SAAK,GACL,MAAM,CASR"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 5, S5.3 — the deterministic, in-tree BASELINE conditions and the
|
|
3
|
+
* recall-at-depth-k scorer.
|
|
4
|
+
*
|
|
5
|
+
* Design note: `docs/planning/Atlas-Phase-5-Design.md` §7.
|
|
6
|
+
*
|
|
7
|
+
* Each baseline ranks a reference corpus against a query. The pre-registered
|
|
8
|
+
* criterion is recall at depth 10 against embeddings, so a baseline is scored by
|
|
9
|
+
* whether the correct reference lands in its top k. Three baselines, in rising
|
|
10
|
+
* order of structure:
|
|
11
|
+
*
|
|
12
|
+
* - **text retrieval** — Jaccard overlap of lower-cased word tokens;
|
|
13
|
+
* - **symbol matching** — Jaccard overlap of the expression's symbol names;
|
|
14
|
+
* - **typed structural search** — exact agreement of the leakage key
|
|
15
|
+
* (dimension-renamed normal form), then symbol overlap as the tie-break.
|
|
16
|
+
*
|
|
17
|
+
* **Every ranking is fully deterministic:** ties break on the reference id, so a
|
|
18
|
+
* rerun can never reorder a tie and move a result across the depth cut.
|
|
19
|
+
*
|
|
20
|
+
* Embeddings and LLM conditions run OUT OF PROCESS; `backend-shapes.ts` holds
|
|
21
|
+
* only their request and response shapes.
|
|
22
|
+
*
|
|
23
|
+
* @module atlas/benchmark/baselines
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
import { leakageKey } from './leakage.js';
|
|
27
|
+
const tokens = (text) => new Set(text
|
|
28
|
+
.toLowerCase()
|
|
29
|
+
.split(/[^\p{L}\p{N}]+/u)
|
|
30
|
+
.filter((t) => t.length > 0));
|
|
31
|
+
const jaccard = (a, b) => {
|
|
32
|
+
if (a.size === 0 && b.size === 0)
|
|
33
|
+
return 0;
|
|
34
|
+
let inter = 0;
|
|
35
|
+
for (const x of a)
|
|
36
|
+
if (b.has(x))
|
|
37
|
+
inter++;
|
|
38
|
+
return inter / (a.size + b.size - inter);
|
|
39
|
+
};
|
|
40
|
+
function symbolNames(node, out = new Set()) {
|
|
41
|
+
if (node === undefined)
|
|
42
|
+
return out;
|
|
43
|
+
if (node.kind === 'symbol') {
|
|
44
|
+
// Numeric literals are not symbols a reader would match on.
|
|
45
|
+
if (!Number.isFinite(Number(node.name)))
|
|
46
|
+
out.add(node.name);
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
if (node.kind === 'op')
|
|
50
|
+
for (const a of node.args)
|
|
51
|
+
symbolNames(a, out);
|
|
52
|
+
else if (node.kind === 'transcendental' || node.kind === 'abs')
|
|
53
|
+
symbolNames(node.arg, out);
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
/** Rank by descending score, ties broken by ascending id — never by input order. */
|
|
57
|
+
function rankBy(corpus, score) {
|
|
58
|
+
return corpus
|
|
59
|
+
.map((r) => ({ id: r.id, s: score(r) }))
|
|
60
|
+
.sort((a, b) => (b.s !== a.s ? b.s - a.s : a.id < b.id ? -1 : a.id > b.id ? 1 : 0))
|
|
61
|
+
.map((x) => x.id);
|
|
62
|
+
}
|
|
63
|
+
/** Baseline 1: text retrieval by word-token overlap. @internal */
|
|
64
|
+
export function rankByTextOverlap(query, corpus) {
|
|
65
|
+
const q = tokens(query.text);
|
|
66
|
+
return rankBy(corpus, (r) => jaccard(q, tokens(r.text)));
|
|
67
|
+
}
|
|
68
|
+
/** Baseline 2: symbol matching by overlap of expression symbol names. @internal */
|
|
69
|
+
export function rankBySymbolOverlap(query, corpus) {
|
|
70
|
+
const q = symbolNames(query.expr);
|
|
71
|
+
return rankBy(corpus, (r) => jaccard(q, symbolNames(r.expr)));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Baseline 3: typed structural search. A record whose leakage key equals the
|
|
75
|
+
* query's scores above every record that does not; symbol overlap orders within
|
|
76
|
+
* each tier. A query or record with no expression scores zero structurally.
|
|
77
|
+
*
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
export function rankByStructure(query, corpus) {
|
|
81
|
+
const qKey = query.expr === undefined ? undefined : leakageKey(query.expr);
|
|
82
|
+
const qSyms = symbolNames(query.expr);
|
|
83
|
+
return rankBy(corpus, (r) => {
|
|
84
|
+
const structural = qKey !== undefined && r.expr !== undefined && leakageKey(r.expr) === qKey ? 1 : 0;
|
|
85
|
+
return 2 * structural + jaccard(qSyms, symbolNames(r.expr));
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Recall at depth k: the fraction of queries for which AT LEAST ONE correct
|
|
90
|
+
* reference appears in the top k of its ranking.
|
|
91
|
+
*
|
|
92
|
+
* A query with no ranking counts as a MISS, never as absent from the
|
|
93
|
+
* denominator: dropping it would raise recall by failing to answer. A query with
|
|
94
|
+
* no correct reference in `truth` is an error in the answer key, and throws.
|
|
95
|
+
*
|
|
96
|
+
* @throws Error if `truth` lists no correct reference for some query.
|
|
97
|
+
* @internal
|
|
98
|
+
*/
|
|
99
|
+
export function recallAtK(rankings, truth, k = 10) {
|
|
100
|
+
if (truth.size === 0)
|
|
101
|
+
return Number.NaN;
|
|
102
|
+
let hits = 0;
|
|
103
|
+
for (const [queryId, correct] of truth) {
|
|
104
|
+
if (correct.length === 0)
|
|
105
|
+
throw new Error(`recallAtK: no correct reference for ${queryId}`);
|
|
106
|
+
const top = (rankings.get(queryId) ?? []).slice(0, k);
|
|
107
|
+
if (correct.some((c) => top.includes(c)))
|
|
108
|
+
hits++;
|
|
109
|
+
}
|
|
110
|
+
return hits / truth.size;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=baselines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baselines.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/baselines.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 5, S5.1 — leakage checks for the invalid-bridge benchmark.
|
|
3
|
+
*
|
|
4
|
+
* Design note: `docs/planning/Atlas-Phase-5-Design.md` §3.
|
|
5
|
+
*
|
|
6
|
+
* ## Why not `normalForm` directly
|
|
7
|
+
*
|
|
8
|
+
* The plan said renamed-variable variants "are detected as the same item by
|
|
9
|
+
* normal form". `normalForm` keys symbols by NAME, so `x/t` and `y/s` do not
|
|
10
|
+
* collide (measured). {@link leakageKey} therefore renames every DIMENSIONED
|
|
11
|
+
* symbol to its dimension signature first. That over-merges genuinely different
|
|
12
|
+
* quantities of one dimension, which is the SAFE direction for leakage: a false
|
|
13
|
+
* collision is flagged and reviewed, a missed one contaminates the study.
|
|
14
|
+
*
|
|
15
|
+
* @module atlas/benchmark/leakage
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
import type { ExprNode } from '../../dimensional/ast-types.js';
|
|
19
|
+
import type { BenchmarkItem } from './types.js';
|
|
20
|
+
/**
|
|
21
|
+
* The key under which two items count as the same claim: the normal form of the
|
|
22
|
+
* expression after renaming dimensioned symbols by dimension.
|
|
23
|
+
*
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
export declare function leakageKey(expr: ExprNode): string;
|
|
27
|
+
/** A pair of items that share a leakage key. @internal */
|
|
28
|
+
export interface LeakageCollision {
|
|
29
|
+
readonly key: string;
|
|
30
|
+
readonly ids: readonly string[];
|
|
31
|
+
/** The splits the colliding items sit in. More than one ⇒ LEAKAGE. */
|
|
32
|
+
readonly splits: readonly string[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Group items by leakage key and report every group whose members span MORE THAN
|
|
36
|
+
* ONE split. Such a group means the held-out split contains a claim the
|
|
37
|
+
* in-distribution split already shows, under the same or different names.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export declare function findCrossSplitLeakage(items: readonly BenchmarkItem[]): LeakageCollision[];
|
|
42
|
+
/** A renamed-variable variant that violates the same-split or same-key rule. @internal */
|
|
43
|
+
export interface VariantProblem {
|
|
44
|
+
readonly id: string;
|
|
45
|
+
readonly of: string;
|
|
46
|
+
readonly problem: 'missing-original' | 'different-split' | 'not-same-claim';
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check every `renamedVariant` link: the original exists, sits in the SAME split,
|
|
50
|
+
* and genuinely has the same leakage key (a "variant" that is a different claim
|
|
51
|
+
* is mislabelled, and the label would hide a real item).
|
|
52
|
+
*
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
export declare function checkRenamedVariants(items: readonly BenchmarkItem[]): VariantProblem[];
|
|
56
|
+
//# sourceMappingURL=leakage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leakage.d.ts","sourceRoot":"","sources":["../../../src/atlas/benchmark/leakage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA2BhD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEjD;AAED,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,gBAAgB,EAAE,CAczF;AAED,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;CAC7E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,cAAc,EAAE,CAetF"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 5, S5.1 — leakage checks for the invalid-bridge benchmark.
|
|
3
|
+
*
|
|
4
|
+
* Design note: `docs/planning/Atlas-Phase-5-Design.md` §3.
|
|
5
|
+
*
|
|
6
|
+
* ## Why not `normalForm` directly
|
|
7
|
+
*
|
|
8
|
+
* The plan said renamed-variable variants "are detected as the same item by
|
|
9
|
+
* normal form". `normalForm` keys symbols by NAME, so `x/t` and `y/s` do not
|
|
10
|
+
* collide (measured). {@link leakageKey} therefore renames every DIMENSIONED
|
|
11
|
+
* symbol to its dimension signature first. That over-merges genuinely different
|
|
12
|
+
* quantities of one dimension, which is the SAFE direction for leakage: a false
|
|
13
|
+
* collision is flagged and reviewed, a missed one contaminates the study.
|
|
14
|
+
*
|
|
15
|
+
* @module atlas/benchmark/leakage
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
import { normalForm } from '../../canonical/normal-form.js';
|
|
19
|
+
const isDimensionless = (d) => d.L === 0 && d.M === 0 && d.T === 0 && d.I === 0 && d.Theta === 0 && d.N === 0 && d.J === 0;
|
|
20
|
+
const dimensionName = (d) => `dim[${d.L},${d.M},${d.T},${d.I},${d.Theta},${d.N},${d.J}]`;
|
|
21
|
+
/**
|
|
22
|
+
* Rename every dimensioned symbol leaf to its dimension signature. Dimensionless
|
|
23
|
+
* leaves keep their names: `normalForm` already drops recognised constants and
|
|
24
|
+
* tags unknown dimensionless stubs, and a numeric literal must stay a literal.
|
|
25
|
+
*/
|
|
26
|
+
function renameByDimension(node) {
|
|
27
|
+
if (node.kind === 'symbol') {
|
|
28
|
+
return isDimensionless(node.dim) ? node : { ...node, name: dimensionName(node.dim) };
|
|
29
|
+
}
|
|
30
|
+
if (node.kind === 'op')
|
|
31
|
+
return { ...node, args: node.args.map(renameByDimension) };
|
|
32
|
+
if (node.kind === 'transcendental' || node.kind === 'abs') {
|
|
33
|
+
return { ...node, arg: renameByDimension(node.arg) };
|
|
34
|
+
}
|
|
35
|
+
// Other arms (integral, derivative, tensor nodes) are compared as normalForm
|
|
36
|
+
// compares them — structurally, names included. Stated, not hidden: a renamed
|
|
37
|
+
// variant INSIDE an integral is not caught by this key.
|
|
38
|
+
return node;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The key under which two items count as the same claim: the normal form of the
|
|
42
|
+
* expression after renaming dimensioned symbols by dimension.
|
|
43
|
+
*
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
export function leakageKey(expr) {
|
|
47
|
+
return normalForm(renameByDimension(expr));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Group items by leakage key and report every group whose members span MORE THAN
|
|
51
|
+
* ONE split. Such a group means the held-out split contains a claim the
|
|
52
|
+
* in-distribution split already shows, under the same or different names.
|
|
53
|
+
*
|
|
54
|
+
* @internal
|
|
55
|
+
*/
|
|
56
|
+
export function findCrossSplitLeakage(items) {
|
|
57
|
+
const groups = new Map();
|
|
58
|
+
for (const item of items) {
|
|
59
|
+
const key = leakageKey(item.expr);
|
|
60
|
+
const bucket = groups.get(key);
|
|
61
|
+
if (bucket === undefined)
|
|
62
|
+
groups.set(key, [item]);
|
|
63
|
+
else
|
|
64
|
+
bucket.push(item);
|
|
65
|
+
}
|
|
66
|
+
const out = [];
|
|
67
|
+
for (const [key, bucket] of groups) {
|
|
68
|
+
const splits = [...new Set(bucket.map((i) => i.split))].sort();
|
|
69
|
+
if (splits.length > 1)
|
|
70
|
+
out.push({ key, ids: bucket.map((i) => i.id), splits });
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check every `renamedVariant` link: the original exists, sits in the SAME split,
|
|
76
|
+
* and genuinely has the same leakage key (a "variant" that is a different claim
|
|
77
|
+
* is mislabelled, and the label would hide a real item).
|
|
78
|
+
*
|
|
79
|
+
* @internal
|
|
80
|
+
*/
|
|
81
|
+
export function checkRenamedVariants(items) {
|
|
82
|
+
const byId = new Map(items.map((i) => [i.id, i]));
|
|
83
|
+
const out = [];
|
|
84
|
+
for (const item of items) {
|
|
85
|
+
if (item.renamedVariant === undefined)
|
|
86
|
+
continue;
|
|
87
|
+
const original = byId.get(item.renamedVariant);
|
|
88
|
+
if (original === undefined) {
|
|
89
|
+
out.push({ id: item.id, of: item.renamedVariant, problem: 'missing-original' });
|
|
90
|
+
}
|
|
91
|
+
else if (original.split !== item.split) {
|
|
92
|
+
out.push({ id: item.id, of: item.renamedVariant, problem: 'different-split' });
|
|
93
|
+
}
|
|
94
|
+
else if (leakageKey(original.expr) !== leakageKey(item.expr)) {
|
|
95
|
+
out.push({ id: item.id, of: item.renamedVariant, problem: 'not-same-claim' });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return out;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=leakage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leakage.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/leakage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 5, S5.1 — load and validate benchmark items.
|
|
3
|
+
*
|
|
4
|
+
* Design note: `docs/planning/Atlas-Phase-5-Design.md` §0, §2.
|
|
5
|
+
*
|
|
6
|
+
* This module reads the PUBLIC half of a benchmark directory and nothing else.
|
|
7
|
+
* The answers live in a sibling half that no `src/` file may read;
|
|
8
|
+
* `tests/atlas/benchmark.test.ts` holds the import guard, with a positive
|
|
9
|
+
* control proving the guard can fire.
|
|
10
|
+
*
|
|
11
|
+
* **The loader enforces the one part of the independence rule that code CAN
|
|
12
|
+
* enforce: a frozen item whose `authorship` is not `'independent'` is refused.**
|
|
13
|
+
* Whether the author really was independent is a fact about people, recorded in
|
|
14
|
+
* the pre-registration note and checked by review.
|
|
15
|
+
*
|
|
16
|
+
* @module atlas/benchmark/loader
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
import type { BenchmarkItem } from './types.js';
|
|
20
|
+
/** One reason an item set is not admissible. @internal */
|
|
21
|
+
export interface ItemProblem {
|
|
22
|
+
readonly id: string;
|
|
23
|
+
readonly problem: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Validate an item set against the schema and the rules that make it a benchmark.
|
|
27
|
+
*
|
|
28
|
+
* @param items - the items, as parsed.
|
|
29
|
+
* @param frozen - true for the frozen set (authorship must be `'independent'`),
|
|
30
|
+
* false for the contested staging area (authorship must be `'contested-draft'`).
|
|
31
|
+
* @returns every problem found; empty means admissible. Never throws, so a
|
|
32
|
+
* caller sees ALL problems at once rather than the first.
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare function validateItems(items: readonly BenchmarkItem[], frozen: boolean): ItemProblem[];
|
|
36
|
+
/** Thrown when a benchmark directory holds an inadmissible item set. @internal */
|
|
37
|
+
export declare class BenchmarkAdmissionError extends Error {
|
|
38
|
+
readonly problems: readonly ItemProblem[];
|
|
39
|
+
constructor(problems: readonly ItemProblem[]);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Load the FROZEN items from `<benchmarkDir>/public/items.json`.
|
|
43
|
+
*
|
|
44
|
+
* @throws BenchmarkAdmissionError when any item is inadmissible — a frozen set
|
|
45
|
+
* with one contested draft in it is not a smaller benchmark, it is a broken one.
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
export declare function loadFrozenItems(benchmarkDir: string): BenchmarkItem[];
|
|
49
|
+
/**
|
|
50
|
+
* Load the CONTESTED drafts from `<benchmarkDir>/contested/items.json`. These are
|
|
51
|
+
* never scored; they wait for an independent author to accept or rewrite them.
|
|
52
|
+
*
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
export declare function loadContestedDrafts(benchmarkDir: string): BenchmarkItem[];
|
|
56
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/atlas/benchmark/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,WAAW,EAAE,CA0B7F;AAED,kFAAkF;AAClF,qBAAa,uBAAwB,SAAQ,KAAK;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE;IAArD,YAAqB,QAAQ,EAAE,SAAS,WAAW,EAAE,EAMpD;CACF;AAQD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,EAAE,CAKrE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,EAAE,CAKzE"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 5, S5.1 — load and validate benchmark items.
|
|
3
|
+
*
|
|
4
|
+
* Design note: `docs/planning/Atlas-Phase-5-Design.md` §0, §2.
|
|
5
|
+
*
|
|
6
|
+
* This module reads the PUBLIC half of a benchmark directory and nothing else.
|
|
7
|
+
* The answers live in a sibling half that no `src/` file may read;
|
|
8
|
+
* `tests/atlas/benchmark.test.ts` holds the import guard, with a positive
|
|
9
|
+
* control proving the guard can fire.
|
|
10
|
+
*
|
|
11
|
+
* **The loader enforces the one part of the independence rule that code CAN
|
|
12
|
+
* enforce: a frozen item whose `authorship` is not `'independent'` is refused.**
|
|
13
|
+
* Whether the author really was independent is a fact about people, recorded in
|
|
14
|
+
* the pre-registration note and checked by review.
|
|
15
|
+
*
|
|
16
|
+
* @module atlas/benchmark/loader
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
import { readFileSync } from 'node:fs';
|
|
20
|
+
import { join } from 'node:path';
|
|
21
|
+
import { HELD_OUT_FAMILY } from './types.js';
|
|
22
|
+
/**
|
|
23
|
+
* Validate an item set against the schema and the rules that make it a benchmark.
|
|
24
|
+
*
|
|
25
|
+
* @param items - the items, as parsed.
|
|
26
|
+
* @param frozen - true for the frozen set (authorship must be `'independent'`),
|
|
27
|
+
* false for the contested staging area (authorship must be `'contested-draft'`).
|
|
28
|
+
* @returns every problem found; empty means admissible. Never throws, so a
|
|
29
|
+
* caller sees ALL problems at once rather than the first.
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export function validateItems(items, frozen) {
|
|
33
|
+
const problems = [];
|
|
34
|
+
const seen = new Set();
|
|
35
|
+
for (const item of items) {
|
|
36
|
+
const p = (problem) => {
|
|
37
|
+
problems.push({ id: item.id, problem });
|
|
38
|
+
};
|
|
39
|
+
if (seen.has(item.id))
|
|
40
|
+
p('duplicate id');
|
|
41
|
+
seen.add(item.id);
|
|
42
|
+
const wanted = frozen ? 'independent' : 'contested-draft';
|
|
43
|
+
if (item.authorship !== wanted) {
|
|
44
|
+
p(`authorship '${item.authorship}' where the ${frozen ? 'frozen' : 'contested'} set requires '${wanted}'`);
|
|
45
|
+
}
|
|
46
|
+
// The answer lives in the scorer half. A public item that carries it would
|
|
47
|
+
// hand the key to any condition that reads the public file.
|
|
48
|
+
if ('kind' in item || 'failureKind' in item) {
|
|
49
|
+
p('the public half carries the answer (kind/failureKind); it belongs in scorer/labels.json');
|
|
50
|
+
}
|
|
51
|
+
if ((item.family === HELD_OUT_FAMILY) !== (item.split === 'held-out')) {
|
|
52
|
+
p(`the held-out split is exactly the '${HELD_OUT_FAMILY}' family; got family '${item.family}' in split '${item.split}'`);
|
|
53
|
+
}
|
|
54
|
+
if (item.premises.length === 0)
|
|
55
|
+
p('no premises');
|
|
56
|
+
if (item.source.trim() === '')
|
|
57
|
+
p('no source');
|
|
58
|
+
}
|
|
59
|
+
return problems;
|
|
60
|
+
}
|
|
61
|
+
/** Thrown when a benchmark directory holds an inadmissible item set. @internal */
|
|
62
|
+
export class BenchmarkAdmissionError extends Error {
|
|
63
|
+
problems;
|
|
64
|
+
constructor(problems) {
|
|
65
|
+
super(`benchmark items are not admissible: ${problems
|
|
66
|
+
.map((p) => `${p.id}: ${p.problem}`)
|
|
67
|
+
.join('; ')}`);
|
|
68
|
+
this.problems = problems;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function readItems(file) {
|
|
72
|
+
const parsed = JSON.parse(readFileSync(file, 'utf-8'));
|
|
73
|
+
if (!Array.isArray(parsed))
|
|
74
|
+
throw new Error(`${file}: expected a JSON array of items`);
|
|
75
|
+
return parsed;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Load the FROZEN items from `<benchmarkDir>/public/items.json`.
|
|
79
|
+
*
|
|
80
|
+
* @throws BenchmarkAdmissionError when any item is inadmissible — a frozen set
|
|
81
|
+
* with one contested draft in it is not a smaller benchmark, it is a broken one.
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
|
+
export function loadFrozenItems(benchmarkDir) {
|
|
85
|
+
const items = readItems(join(benchmarkDir, 'public', 'items.json'));
|
|
86
|
+
const problems = validateItems(items, true);
|
|
87
|
+
if (problems.length > 0)
|
|
88
|
+
throw new BenchmarkAdmissionError(problems);
|
|
89
|
+
return items;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Load the CONTESTED drafts from `<benchmarkDir>/contested/items.json`. These are
|
|
93
|
+
* never scored; they wait for an independent author to accept or rewrite them.
|
|
94
|
+
*
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
export function loadContestedDrafts(benchmarkDir) {
|
|
98
|
+
const items = readItems(join(benchmarkDir, 'contested', 'items.json'));
|
|
99
|
+
const problems = validateItems(items, false);
|
|
100
|
+
if (problems.length > 0)
|
|
101
|
+
throw new BenchmarkAdmissionError(problems);
|
|
102
|
+
return items;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/atlas/benchmark/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAS7C;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,KAA+B,EAAE,MAAe;IAC5E,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,OAAe,EAAQ,EAAE;YAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,CAAC,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAElB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC1D,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAC/B,CAAC,CAAC,eAAe,IAAI,CAAC,UAAU,eAAe,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,kBAAkB,MAAM,GAAG,CAAC,CAAC;QAC7G,CAAC;QACD,2EAA2E;QAC3E,4DAA4D;QAC5D,IAAI,MAAM,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC5C,CAAC,CAAC,yFAAyF,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,EAAE,CAAC;YACtE,CAAC,CAAC,sCAAsC,eAAe,yBAAyB,IAAI,CAAC,MAAM,eAAe,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3H,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,CAAC,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,kFAAkF;AAClF,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAC3B,QAAQ;IAA7B,YAAqB,QAAgC;QACnD,KAAK,CACH,uCAAuC,QAAQ;aAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACnC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;wBALiB,QAAQ;IAM7B,CAAC;CACF;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAY,CAAC;IAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;IACvF,OAAO,MAAyB,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 5, S5.2 — the ATLAS condition of the invalid-bridge benchmark.
|
|
3
|
+
*
|
|
4
|
+
* Design note: `docs/planning/Atlas-Phase-5-Design.md` §6.
|
|
5
|
+
*
|
|
6
|
+
* For each item the runner applies three atlas instruments — the applicability
|
|
7
|
+
* checker (S4.1), the composition table (S3) and the regime check (S2) — and
|
|
8
|
+
* emits `accept`, `reject` or `abstain`.
|
|
9
|
+
*
|
|
10
|
+
* ## The decision rule, and why accept is the HARDEST outcome to reach
|
|
11
|
+
*
|
|
12
|
+
* - **reject** when an instrument DEMONSTRABLY fires: a blocking applicability
|
|
13
|
+
* finding, a chain OVERCLAIMED as an exact equivalence, a structural analogy
|
|
14
|
+
* promoted to an equivalence, or a regime inequality checked and violated.
|
|
15
|
+
* - **accept** only when EVERY ENABLED instrument RAN and CLEARED: side conditions were
|
|
16
|
+
* stated, the applicability checker found nothing, the regime was supplied and
|
|
17
|
+
* every inequality was checked and held, and any claimed chain agrees with the
|
|
18
|
+
* table. At least one instrument must have RUN: an item that no enabled
|
|
19
|
+
* instrument applies to abstains, because nothing cleared it. S4.1 already fixed the principle: an empty finding list means "no rule
|
|
20
|
+
* fired", which is weaker than "valid". An item that leaves a check unrun has
|
|
21
|
+
* not been cleared by it.
|
|
22
|
+
* - **abstain** otherwise. Abstention is a first-class outcome and is preferred
|
|
23
|
+
* to a wrong accept (ROADMAP Phase 5, pre-stated criteria).
|
|
24
|
+
*
|
|
25
|
+
* The failure kind a rejection names is a MAPPING from the rule that fired, and
|
|
26
|
+
* it is only as good as that mapping: a dimensional inconsistency is reported as
|
|
27
|
+
* `notation-collision` because that is its commonest cause, not because the rule
|
|
28
|
+
* can see notation. The scorer grades "rejected" and "named the right kind"
|
|
29
|
+
* separately, so an imperfect mapping costs the second score only.
|
|
30
|
+
*
|
|
31
|
+
* @module atlas/benchmark/run-atlas
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
import type { BenchmarkItem, FailureKind } from './types.js';
|
|
35
|
+
/** What the atlas condition concluded about one item. @internal */
|
|
36
|
+
export interface AtlasVerdict {
|
|
37
|
+
readonly itemId: string;
|
|
38
|
+
readonly outcome: 'accept' | 'reject' | 'abstain';
|
|
39
|
+
/** Present on a reject when the rule that fired maps to a failure kind. */
|
|
40
|
+
readonly detectedFailure?: FailureKind;
|
|
41
|
+
/** Every reason, in rule order — including the unrun checks behind an abstention. */
|
|
42
|
+
readonly reasons: readonly string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Which instruments a run uses — the S6.2 ablation. The four named
|
|
46
|
+
* configurations in {@link ABLATION_CONFIGS} are CUMULATIVE.
|
|
47
|
+
*
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
export interface AtlasRunConfig {
|
|
51
|
+
/** The composition table over relation types. */
|
|
52
|
+
readonly types: boolean;
|
|
53
|
+
/** Side-condition rules: unguarded / zero divisors, squaring. */
|
|
54
|
+
readonly assumptions: boolean;
|
|
55
|
+
/** Dimensional consistency and convention agreement. */
|
|
56
|
+
readonly dimensionsAndConventions: boolean;
|
|
57
|
+
/** The regime check at the use site. */
|
|
58
|
+
readonly regimes: boolean;
|
|
59
|
+
}
|
|
60
|
+
/** Every instrument on: the atlas condition as scored. @internal */
|
|
61
|
+
export declare const FULL_CONFIG: AtlasRunConfig;
|
|
62
|
+
/** The four cumulative ablation configurations, in the plan's order. @internal */
|
|
63
|
+
export declare const ABLATION_CONFIGS: ReadonlyArray<readonly [string, AtlasRunConfig]>;
|
|
64
|
+
/**
|
|
65
|
+
* Run the atlas condition on one item. Pure and deterministic; never throws.
|
|
66
|
+
*
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
export declare function runAtlasOnItem(item: BenchmarkItem, config?: AtlasRunConfig): AtlasVerdict;
|
|
70
|
+
/** Run the atlas condition over a set of items, in order. @internal */
|
|
71
|
+
export declare function runAtlasCondition(items: readonly BenchmarkItem[], config?: AtlasRunConfig): AtlasVerdict[];
|
|
72
|
+
//# sourceMappingURL=run-atlas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-atlas.d.ts","sourceRoot":"","sources":["../../../src/atlas/benchmark/run-atlas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,2EAA2E;IAC3E,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,oEAAoE;AACpE,eAAO,MAAM,WAAW,EAAE,cAKzB,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAK7E,CAAC;AA6CF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,GAAE,cAA4B,GAAG,YAAY,CAoHtG;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,GAAE,cAA4B,GACnC,YAAY,EAAE,CAEhB"}
|