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,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 1, S1.3 — evidence tags, DERIVED AT READ TIME.
|
|
3
|
+
*
|
|
4
|
+
* Design note: `docs/planning/Atlas-Phase-1-Design.md` §3 and §4.
|
|
5
|
+
*
|
|
6
|
+
* **The contract of this module: it has no write path.** No record stores an
|
|
7
|
+
* evidence set; every tag is computed from the artifacts a record actually
|
|
8
|
+
* carries, each time it is asked for. A tag is emitted ONLY when the artifact
|
|
9
|
+
* it names is present and passing. There is no default-true tag, no tag
|
|
10
|
+
* derived from another tag, no tag derived from `reviewStatus`, and no tag
|
|
11
|
+
* derived from prose. A record carrying no passing witness derives exactly
|
|
12
|
+
* `{'proposed'}`.
|
|
13
|
+
*
|
|
14
|
+
* ## The empty-set trap (design note §3, Adam A1 RED — confirmed by execution)
|
|
15
|
+
*
|
|
16
|
+
* `convention-checked` is the ONLY rule in the table whose quantifier is
|
|
17
|
+
* universal (`every`). Written as "`conventions` is present AND every declared
|
|
18
|
+
* field is consumed by a witness", it hands the tag to a record with ZERO
|
|
19
|
+
* witnesses, because `conventions = {}` declares nothing and `[].every(…)` is
|
|
20
|
+
* vacuously true. {@link deriveEvidence} therefore requires a NON-EMPTY
|
|
21
|
+
* declaration before the universal runs, and
|
|
22
|
+
* `tests/atlas/derive-evidence.test.ts` pins the empty-object case.
|
|
23
|
+
*
|
|
24
|
+
* **The general rule, for anything added here later:** a universal quantifier
|
|
25
|
+
* in a tag derivation must be paired with a non-emptiness check, or the tag is
|
|
26
|
+
* free. The other rules are existentials (`some`), which are false on the
|
|
27
|
+
* empty set and therefore safe.
|
|
28
|
+
*
|
|
29
|
+
* ## What "passing" means, and why the caller supplies it
|
|
30
|
+
*
|
|
31
|
+
* `Witness` records an id and the test file that runs it; nothing on the
|
|
32
|
+
* record says whether that test passed. Proving it is a filesystem act (see
|
|
33
|
+
* `tests/atlas/evidence-rule.test.ts`, which matches witness ids against test
|
|
34
|
+
* titles), and this module is pure. So the set of passing witness ids is an
|
|
35
|
+
* ARGUMENT, and it is REQUIRED — {@link NO_PASSING_WITNESSES} must be passed
|
|
36
|
+
* explicitly when nothing is verified.
|
|
37
|
+
*
|
|
38
|
+
* It used to DEFAULT to empty, which sounds conservative and was in fact a
|
|
39
|
+
* defect (Eve E1 RED, confirmed by execution). Defaulting the other way, to
|
|
40
|
+
* "all", would have been the free-tag defect above in a second location — but
|
|
41
|
+
* defaulting to empty created the mirror-image failure: a forgotten argument
|
|
42
|
+
* produced an answer identical to a real negative. A catalog-wide check written
|
|
43
|
+
* that way could only ever report "no row gains evidence", whatever the rows
|
|
44
|
+
* held, so it could not fail. Requiring the argument makes a vacuous result a
|
|
45
|
+
* STATED choice, and `tests/atlas/coverage.test.ts` now carries a positive
|
|
46
|
+
* control so that a negative result carries information.
|
|
47
|
+
*
|
|
48
|
+
* @module atlas/derive-evidence
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
import type { Conventions, EvidenceTag, FormalFidelity } from './types.js';
|
|
52
|
+
/**
|
|
53
|
+
* The verdict of `adjudicateBridgeEntry` (`src/bridges/membership.ts`),
|
|
54
|
+
* restated structurally so this module takes no dependency on `src/bridges`
|
|
55
|
+
* (the dependency must run one way — design note §1).
|
|
56
|
+
*
|
|
57
|
+
* `tests/atlas/derive-evidence.test.ts` pins this union against the real
|
|
58
|
+
* `BridgeVerdict` at compile time AND at runtime over the live catalog, so a
|
|
59
|
+
* fourth verdict fails the test rather than silently falling through.
|
|
60
|
+
*
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
export type MembershipVerdict = 'bridge' | 'not-a-bridge' | 'unadjudicated';
|
|
64
|
+
/**
|
|
65
|
+
* A witness as this derivation reads it.
|
|
66
|
+
*
|
|
67
|
+
* Structural, not an import of `Witness`, for two reasons that are findings in
|
|
68
|
+
* their own right (both reported to the Lead):
|
|
69
|
+
*
|
|
70
|
+
* - `Witness.kind` is `'symbolic' | 'numeric' | 'formal'` — there is NO
|
|
71
|
+
* `'dimensional'` member, so `dimension-checked` has no source on today's
|
|
72
|
+
* data. The kind is widened here to include `'dimensional'` so the rule is
|
|
73
|
+
* written once and correctly; it simply never fires until such a witness
|
|
74
|
+
* exists. Widening it is not inventing evidence: no record carries one.
|
|
75
|
+
* - `Witness` records no list of the convention fields a check consumes, so
|
|
76
|
+
* `consumes` is optional here. Absent ⇒ the witness consumes nothing ⇒
|
|
77
|
+
* `convention-checked` cannot be earned. Conservative by construction.
|
|
78
|
+
*
|
|
79
|
+
* @internal
|
|
80
|
+
*/
|
|
81
|
+
export interface WitnessLike {
|
|
82
|
+
readonly id: string;
|
|
83
|
+
readonly kind: 'symbolic' | 'numeric' | 'formal' | 'dimensional';
|
|
84
|
+
/** Convention fields this check actually consumes, when it declares any. */
|
|
85
|
+
readonly consumes?: readonly (keyof Conventions)[];
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* A counterexample as this derivation reads it.
|
|
89
|
+
*
|
|
90
|
+
* `Counterexample` (`src/atlas/types.ts`) carries `description` and `witness`
|
|
91
|
+
* and has NO `resolvedBy` field — so on today's data every counterexample is
|
|
92
|
+
* unresolved. `resolvedBy` is read here as an optional property rather than
|
|
93
|
+
* assumed absent, so that adding it later resolves counterexamples without
|
|
94
|
+
* touching this file. This module adds no field to any type.
|
|
95
|
+
*
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
export interface CounterexampleLike {
|
|
99
|
+
readonly description?: string;
|
|
100
|
+
readonly witness?: string;
|
|
101
|
+
/** Present and non-empty ⇒ the counterexample is resolved and does not contradict. */
|
|
102
|
+
readonly resolvedBy?: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* A rejection as this projection reads it — structural, so this module still
|
|
106
|
+
* imports nothing from `src/bridges`.
|
|
107
|
+
*
|
|
108
|
+
* @internal
|
|
109
|
+
*/
|
|
110
|
+
export interface RejectionLike {
|
|
111
|
+
readonly beId: number;
|
|
112
|
+
readonly reason: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* A row's counterexamples INCLUDING the one its rejection constitutes.
|
|
116
|
+
*
|
|
117
|
+
* ROADMAP §7 Phase 1 asks for "a `RejectedBridgeAdjudication` ⇒ `contradicted`
|
|
118
|
+
* with the counterexample LINKED". The linking half is what matters and was
|
|
119
|
+
* missing: BE-35 had a counterexample written by hand and earned `contradicted`
|
|
120
|
+
* honestly, while BE-28, BE-29, BE-32 and BE-40 had none — and an earlier rule
|
|
121
|
+
* papered over that by FORCING `contradicted` onto every rejected row, which
|
|
122
|
+
* manufactured a refutation from nothing (Eve E1).
|
|
123
|
+
*
|
|
124
|
+
* This is the linking done properly. The rejection's own `reason` IS the
|
|
125
|
+
* counterexample: a row rejected for being single-regime is refuted AS A BRIDGE
|
|
126
|
+
* by exactly that argument. Projecting it means `contradicted` is then EARNED
|
|
127
|
+
* through the ordinary derivation rather than asserted by a special case.
|
|
128
|
+
*
|
|
129
|
+
* **It is a projection, not a copy.** The reason string is never duplicated into
|
|
130
|
+
* a catalog row; `bridges/rejected.ts` remains its single source, which is what
|
|
131
|
+
* the ROADMAP means by "cross-linked ... rather than duplicating it". The caller
|
|
132
|
+
* supplies the rejection, so this module still owns no view of WHICH ids are
|
|
133
|
+
* rejected.
|
|
134
|
+
*
|
|
135
|
+
* @internal
|
|
136
|
+
*/
|
|
137
|
+
export declare function counterexamplesWithRejection(record: EvidenceInput, rejection: RejectionLike | undefined): readonly CounterexampleLike[];
|
|
138
|
+
/** The artifacts a record carries, all optional. @internal */
|
|
139
|
+
export interface EvidenceInput {
|
|
140
|
+
readonly witnesses?: readonly WitnessLike[];
|
|
141
|
+
readonly conventions?: Conventions;
|
|
142
|
+
readonly counterexamples?: readonly CounterexampleLike[];
|
|
143
|
+
/**
|
|
144
|
+
* The record's formal reference, read ONLY for its fidelity. Structural so a
|
|
145
|
+
* caller can pass an `AtlasBridge` directly.
|
|
146
|
+
*/
|
|
147
|
+
readonly formalRef?: {
|
|
148
|
+
readonly fidelity: FormalFidelity;
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* The empty passing set, for a caller that genuinely has nothing marked passing.
|
|
153
|
+
*
|
|
154
|
+
* ⚠ This is EXPORTED and must be passed EXPLICITLY. It used to be a default
|
|
155
|
+
* parameter value, and that was a defect found by post-implementation review
|
|
156
|
+
* (Eve, E1) and confirmed by execution: a record carrying three passing
|
|
157
|
+
* witnesses and a consumed convention derived `{'proposed'}` under the default —
|
|
158
|
+
* byte-identical to an empty record. A caller who simply forgot the argument got
|
|
159
|
+
* an answer indistinguishable from a real negative.
|
|
160
|
+
*
|
|
161
|
+
* That made a catalog-wide check VACUOUS rather than reassuring. "No row gains
|
|
162
|
+
* evidence" was the only outcome the call could produce, whatever the rows
|
|
163
|
+
* contained, so the check could not fail and proved nothing. Requiring the
|
|
164
|
+
* argument forces the caller to STATE which witnesses were verified, which is
|
|
165
|
+
* exactly the decision that must never be implicit.
|
|
166
|
+
*/
|
|
167
|
+
export declare const NO_PASSING_WITNESSES: ReadonlySet<string>;
|
|
168
|
+
/**
|
|
169
|
+
* Derive the evidence set of one record.
|
|
170
|
+
*
|
|
171
|
+
* @param record - the artifacts the record carries.
|
|
172
|
+
* @param passingWitnessIds - ids of witnesses VERIFIED to pass. REQUIRED: pass
|
|
173
|
+
* {@link NO_PASSING_WITNESSES} explicitly when nothing is verified, so that a
|
|
174
|
+
* vacuous result is a stated choice rather than a forgotten argument.
|
|
175
|
+
* @returns a fresh set; never cached, never stored.
|
|
176
|
+
* @internal
|
|
177
|
+
*/
|
|
178
|
+
export declare function deriveEvidence(record: EvidenceInput, passingWitnessIds: ReadonlySet<string>): ReadonlySet<EvidenceTag>;
|
|
179
|
+
/**
|
|
180
|
+
* Derive the evidence set of a catalog row, under the adjudication precedence
|
|
181
|
+
* of design note §4. The verdict is supplied by the caller — it comes from
|
|
182
|
+
* `adjudicateBridgeEntry`, which owns the rejected-id registry
|
|
183
|
+
* (`REJECTED_BRIDGE_IDS`). Reading that registry here would make this file a
|
|
184
|
+
* second source of truth about which ids are rejected.
|
|
185
|
+
*
|
|
186
|
+
* | Verdict | Derives |
|
|
187
|
+
* |---|---|
|
|
188
|
+
* | `'not-a-bridge'` | {@link deriveEvidence} runs normally — see below |
|
|
189
|
+
* | `'unadjudicated'` | `{'proposed'}` only — never a refutation, never support |
|
|
190
|
+
* | `'bridge'` | {@link deriveEvidence} runs normally |
|
|
191
|
+
*
|
|
192
|
+
* ## ⚠ `'not-a-bridge'` no longer forces `'contradicted'` (Eve E1, 2026-09-21)
|
|
193
|
+
*
|
|
194
|
+
* It used to, "regardless of witnesses", and that rule — written by me in design
|
|
195
|
+
* note §4 — **violated §3 of the same document.** `contradicted` means THE CLAIM
|
|
196
|
+
* IS REFUTED. `not-a-bridge` means THE ROW IS NOT A REGIME-CROSSING BRIDGE.
|
|
197
|
+
* Those are different assertions about different things, and conflating them made
|
|
198
|
+
* the library report BE-35 as `status: 'established'` and `evidence:
|
|
199
|
+
* {'contradicted'}` in the same breath — from which a reader cannot tell whether
|
|
200
|
+
* the equation is a true in-regime identity the bridge graph ignores, or a
|
|
201
|
+
* refuted statement.
|
|
202
|
+
*
|
|
203
|
+
* Measured when the rule was removed: of the five rejected rows, only **BE-35**
|
|
204
|
+
* carries an actual counterexample, and it derives `{'contradicted'}` NATURALLY
|
|
205
|
+
* through the normal path. **BE-28, BE-29, BE-32 and BE-40 carry none** — the old
|
|
206
|
+
* rule was manufacturing a refutation for four rows with no refuting artifact
|
|
207
|
+
* whatsoever. That is exactly what §3 forbids: a tag is emitted only when the
|
|
208
|
+
* artifact it names is present and passing.
|
|
209
|
+
*
|
|
210
|
+
* Membership already has a single owner — `adjudicateBridgeEntry` — and it does
|
|
211
|
+
* not need restating in the evidence vocabulary. Removing the case leaves each
|
|
212
|
+
* fact with exactly one source, which is what §4 was trying to achieve and this
|
|
213
|
+
* rule was quietly undermining.
|
|
214
|
+
*
|
|
215
|
+
* @internal
|
|
216
|
+
*/
|
|
217
|
+
export declare function deriveEvidenceForVerdict(verdict: MembershipVerdict, record: EvidenceInput, passingWitnessIds: ReadonlySet<string>): ReadonlySet<EvidenceTag>;
|
|
218
|
+
//# sourceMappingURL=derive-evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive-evidence.d.ts","sourceRoot":"","sources":["../../src/atlas/derive-evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,cAAc,GAAG,eAAe,CAAC;AAE5E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC;IACjE,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,CAAC;CACpD;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,aAAa,GAAG,SAAS,GACnC,SAAS,kBAAkB,EAAE,CAqB/B;AAED,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACzD;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;KAAE,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAqB,CAAC;AAmB3E;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,WAAW,CAAC,WAAW,CAAC,CAyC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,WAAW,CAAC,WAAW,CAAC,CAY1B"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 1, S1.3 — evidence tags, DERIVED AT READ TIME.
|
|
3
|
+
*
|
|
4
|
+
* Design note: `docs/planning/Atlas-Phase-1-Design.md` §3 and §4.
|
|
5
|
+
*
|
|
6
|
+
* **The contract of this module: it has no write path.** No record stores an
|
|
7
|
+
* evidence set; every tag is computed from the artifacts a record actually
|
|
8
|
+
* carries, each time it is asked for. A tag is emitted ONLY when the artifact
|
|
9
|
+
* it names is present and passing. There is no default-true tag, no tag
|
|
10
|
+
* derived from another tag, no tag derived from `reviewStatus`, and no tag
|
|
11
|
+
* derived from prose. A record carrying no passing witness derives exactly
|
|
12
|
+
* `{'proposed'}`.
|
|
13
|
+
*
|
|
14
|
+
* ## The empty-set trap (design note §3, Adam A1 RED — confirmed by execution)
|
|
15
|
+
*
|
|
16
|
+
* `convention-checked` is the ONLY rule in the table whose quantifier is
|
|
17
|
+
* universal (`every`). Written as "`conventions` is present AND every declared
|
|
18
|
+
* field is consumed by a witness", it hands the tag to a record with ZERO
|
|
19
|
+
* witnesses, because `conventions = {}` declares nothing and `[].every(…)` is
|
|
20
|
+
* vacuously true. {@link deriveEvidence} therefore requires a NON-EMPTY
|
|
21
|
+
* declaration before the universal runs, and
|
|
22
|
+
* `tests/atlas/derive-evidence.test.ts` pins the empty-object case.
|
|
23
|
+
*
|
|
24
|
+
* **The general rule, for anything added here later:** a universal quantifier
|
|
25
|
+
* in a tag derivation must be paired with a non-emptiness check, or the tag is
|
|
26
|
+
* free. The other rules are existentials (`some`), which are false on the
|
|
27
|
+
* empty set and therefore safe.
|
|
28
|
+
*
|
|
29
|
+
* ## What "passing" means, and why the caller supplies it
|
|
30
|
+
*
|
|
31
|
+
* `Witness` records an id and the test file that runs it; nothing on the
|
|
32
|
+
* record says whether that test passed. Proving it is a filesystem act (see
|
|
33
|
+
* `tests/atlas/evidence-rule.test.ts`, which matches witness ids against test
|
|
34
|
+
* titles), and this module is pure. So the set of passing witness ids is an
|
|
35
|
+
* ARGUMENT, and it is REQUIRED — {@link NO_PASSING_WITNESSES} must be passed
|
|
36
|
+
* explicitly when nothing is verified.
|
|
37
|
+
*
|
|
38
|
+
* It used to DEFAULT to empty, which sounds conservative and was in fact a
|
|
39
|
+
* defect (Eve E1 RED, confirmed by execution). Defaulting the other way, to
|
|
40
|
+
* "all", would have been the free-tag defect above in a second location — but
|
|
41
|
+
* defaulting to empty created the mirror-image failure: a forgotten argument
|
|
42
|
+
* produced an answer identical to a real negative. A catalog-wide check written
|
|
43
|
+
* that way could only ever report "no row gains evidence", whatever the rows
|
|
44
|
+
* held, so it could not fail. Requiring the argument makes a vacuous result a
|
|
45
|
+
* STATED choice, and `tests/atlas/coverage.test.ts` now carries a positive
|
|
46
|
+
* control so that a negative result carries information.
|
|
47
|
+
*
|
|
48
|
+
* @module atlas/derive-evidence
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* A row's counterexamples INCLUDING the one its rejection constitutes.
|
|
53
|
+
*
|
|
54
|
+
* ROADMAP §7 Phase 1 asks for "a `RejectedBridgeAdjudication` ⇒ `contradicted`
|
|
55
|
+
* with the counterexample LINKED". The linking half is what matters and was
|
|
56
|
+
* missing: BE-35 had a counterexample written by hand and earned `contradicted`
|
|
57
|
+
* honestly, while BE-28, BE-29, BE-32 and BE-40 had none — and an earlier rule
|
|
58
|
+
* papered over that by FORCING `contradicted` onto every rejected row, which
|
|
59
|
+
* manufactured a refutation from nothing (Eve E1).
|
|
60
|
+
*
|
|
61
|
+
* This is the linking done properly. The rejection's own `reason` IS the
|
|
62
|
+
* counterexample: a row rejected for being single-regime is refuted AS A BRIDGE
|
|
63
|
+
* by exactly that argument. Projecting it means `contradicted` is then EARNED
|
|
64
|
+
* through the ordinary derivation rather than asserted by a special case.
|
|
65
|
+
*
|
|
66
|
+
* **It is a projection, not a copy.** The reason string is never duplicated into
|
|
67
|
+
* a catalog row; `bridges/rejected.ts` remains its single source, which is what
|
|
68
|
+
* the ROADMAP means by "cross-linked ... rather than duplicating it". The caller
|
|
69
|
+
* supplies the rejection, so this module still owns no view of WHICH ids are
|
|
70
|
+
* rejected.
|
|
71
|
+
*
|
|
72
|
+
* @internal
|
|
73
|
+
*/
|
|
74
|
+
export function counterexamplesWithRejection(record, rejection) {
|
|
75
|
+
const own = record.counterexamples ?? [];
|
|
76
|
+
if (rejection === undefined)
|
|
77
|
+
return own;
|
|
78
|
+
// Do not double-count. A row may ALREADY cite the rejection by hand — BE-35
|
|
79
|
+
// does, with `witness: 'src/bridges/rejected.ts - REJECTED_BRIDGE_ADJUDICATIONS,
|
|
80
|
+
// beId 35'`. My first predicate matched only the machine key `rejection:<id>`
|
|
81
|
+
// and so missed it, appending the SAME argument a second time in different
|
|
82
|
+
// words, which is exactly the duplication the ROADMAP says to avoid. The
|
|
83
|
+
// predicate therefore accepts either form: the machine key, or any witness
|
|
84
|
+
// that names the rejection registry together with this beId.
|
|
85
|
+
const key = `rejection:${rejection.beId}`;
|
|
86
|
+
const alreadyLinked = own.some((c) => {
|
|
87
|
+
const w = c.witness ?? '';
|
|
88
|
+
if (w === key)
|
|
89
|
+
return true;
|
|
90
|
+
return w.includes('REJECTED_BRIDGE_ADJUDICATIONS') && w.includes(String(rejection.beId));
|
|
91
|
+
});
|
|
92
|
+
if (alreadyLinked)
|
|
93
|
+
return own;
|
|
94
|
+
return [
|
|
95
|
+
...own,
|
|
96
|
+
{ description: rejection.reason, witness: `rejection:${rejection.beId}` },
|
|
97
|
+
];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The empty passing set, for a caller that genuinely has nothing marked passing.
|
|
101
|
+
*
|
|
102
|
+
* ⚠ This is EXPORTED and must be passed EXPLICITLY. It used to be a default
|
|
103
|
+
* parameter value, and that was a defect found by post-implementation review
|
|
104
|
+
* (Eve, E1) and confirmed by execution: a record carrying three passing
|
|
105
|
+
* witnesses and a consumed convention derived `{'proposed'}` under the default —
|
|
106
|
+
* byte-identical to an empty record. A caller who simply forgot the argument got
|
|
107
|
+
* an answer indistinguishable from a real negative.
|
|
108
|
+
*
|
|
109
|
+
* That made a catalog-wide check VACUOUS rather than reassuring. "No row gains
|
|
110
|
+
* evidence" was the only outcome the call could produce, whatever the rows
|
|
111
|
+
* contained, so the check could not fail and proved nothing. Requiring the
|
|
112
|
+
* argument forces the caller to STATE which witnesses were verified, which is
|
|
113
|
+
* exactly the decision that must never be implicit.
|
|
114
|
+
*/
|
|
115
|
+
export const NO_PASSING_WITNESSES = new Set();
|
|
116
|
+
/** The fields `Conventions` may declare. Kept in one place so the check is total. */
|
|
117
|
+
const CONVENTION_FIELDS = [
|
|
118
|
+
'heatWorkSign',
|
|
119
|
+
'metricSignature',
|
|
120
|
+
'fourierNormalization',
|
|
121
|
+
'unitSystem',
|
|
122
|
+
'capacitorChargeSign',
|
|
123
|
+
];
|
|
124
|
+
/** The convention fields a record actually declares (a `undefined` value declares nothing). */
|
|
125
|
+
function declaredConventionFields(conventions) {
|
|
126
|
+
if (conventions === undefined)
|
|
127
|
+
return [];
|
|
128
|
+
return CONVENTION_FIELDS.filter((field) => conventions[field] !== undefined);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Derive the evidence set of one record.
|
|
132
|
+
*
|
|
133
|
+
* @param record - the artifacts the record carries.
|
|
134
|
+
* @param passingWitnessIds - ids of witnesses VERIFIED to pass. REQUIRED: pass
|
|
135
|
+
* {@link NO_PASSING_WITNESSES} explicitly when nothing is verified, so that a
|
|
136
|
+
* vacuous result is a stated choice rather than a forgotten argument.
|
|
137
|
+
* @returns a fresh set; never cached, never stored.
|
|
138
|
+
* @internal
|
|
139
|
+
*/
|
|
140
|
+
export function deriveEvidence(record, passingWitnessIds) {
|
|
141
|
+
const tags = new Set();
|
|
142
|
+
const passing = (record.witnesses ?? []).filter((w) => passingWitnessIds.has(w.id));
|
|
143
|
+
// Existentials over the passing witnesses — false on the empty set.
|
|
144
|
+
// `symbolically-checked` has exactly ONE derivation: a passing symbolic
|
|
145
|
+
// witness. Which symbolic witnesses pass is DEFINED by the committed results
|
|
146
|
+
// artifact (`data/atlas/witness-results.json`, Phase 4 §3) — the caller feeds
|
|
147
|
+
// it in through `passingWitnessIds` via `artifactPassingWitnessIds`.
|
|
148
|
+
if (passing.some((w) => w.kind === 'dimensional'))
|
|
149
|
+
tags.add('dimension-checked');
|
|
150
|
+
if (passing.some((w) => w.kind === 'symbolic'))
|
|
151
|
+
tags.add('symbolically-checked');
|
|
152
|
+
// `formally-proved` iff a formal reference exists AND someone checked that
|
|
153
|
+
// its statement says what the record says. `'unreviewed'` records a reference
|
|
154
|
+
// without earning the tag — a proof of the wrong statement proves nothing.
|
|
155
|
+
if (record.formalRef !== undefined && record.formalRef.fidelity !== 'unreviewed') {
|
|
156
|
+
tags.add('formally-proved');
|
|
157
|
+
}
|
|
158
|
+
if (passing.some((w) => w.kind === 'numeric'))
|
|
159
|
+
tags.add('numerically-supported');
|
|
160
|
+
// The ONE universal in the table — guarded by non-emptiness. See §3 above.
|
|
161
|
+
const declared = declaredConventionFields(record.conventions);
|
|
162
|
+
if (declared.length > 0 &&
|
|
163
|
+
declared.every((field) => passing.some((w) => (w.consumes ?? []).includes(field)))) {
|
|
164
|
+
tags.add('convention-checked');
|
|
165
|
+
}
|
|
166
|
+
// Existential: a counterexample with no resolution.
|
|
167
|
+
if ((record.counterexamples ?? []).some((c) => c.resolvedBy === undefined || c.resolvedBy === '')) {
|
|
168
|
+
tags.add('contradicted');
|
|
169
|
+
}
|
|
170
|
+
if (tags.size === 0)
|
|
171
|
+
tags.add('proposed');
|
|
172
|
+
return tags;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Derive the evidence set of a catalog row, under the adjudication precedence
|
|
176
|
+
* of design note §4. The verdict is supplied by the caller — it comes from
|
|
177
|
+
* `adjudicateBridgeEntry`, which owns the rejected-id registry
|
|
178
|
+
* (`REJECTED_BRIDGE_IDS`). Reading that registry here would make this file a
|
|
179
|
+
* second source of truth about which ids are rejected.
|
|
180
|
+
*
|
|
181
|
+
* | Verdict | Derives |
|
|
182
|
+
* |---|---|
|
|
183
|
+
* | `'not-a-bridge'` | {@link deriveEvidence} runs normally — see below |
|
|
184
|
+
* | `'unadjudicated'` | `{'proposed'}` only — never a refutation, never support |
|
|
185
|
+
* | `'bridge'` | {@link deriveEvidence} runs normally |
|
|
186
|
+
*
|
|
187
|
+
* ## ⚠ `'not-a-bridge'` no longer forces `'contradicted'` (Eve E1, 2026-09-21)
|
|
188
|
+
*
|
|
189
|
+
* It used to, "regardless of witnesses", and that rule — written by me in design
|
|
190
|
+
* note §4 — **violated §3 of the same document.** `contradicted` means THE CLAIM
|
|
191
|
+
* IS REFUTED. `not-a-bridge` means THE ROW IS NOT A REGIME-CROSSING BRIDGE.
|
|
192
|
+
* Those are different assertions about different things, and conflating them made
|
|
193
|
+
* the library report BE-35 as `status: 'established'` and `evidence:
|
|
194
|
+
* {'contradicted'}` in the same breath — from which a reader cannot tell whether
|
|
195
|
+
* the equation is a true in-regime identity the bridge graph ignores, or a
|
|
196
|
+
* refuted statement.
|
|
197
|
+
*
|
|
198
|
+
* Measured when the rule was removed: of the five rejected rows, only **BE-35**
|
|
199
|
+
* carries an actual counterexample, and it derives `{'contradicted'}` NATURALLY
|
|
200
|
+
* through the normal path. **BE-28, BE-29, BE-32 and BE-40 carry none** — the old
|
|
201
|
+
* rule was manufacturing a refutation for four rows with no refuting artifact
|
|
202
|
+
* whatsoever. That is exactly what §3 forbids: a tag is emitted only when the
|
|
203
|
+
* artifact it names is present and passing.
|
|
204
|
+
*
|
|
205
|
+
* Membership already has a single owner — `adjudicateBridgeEntry` — and it does
|
|
206
|
+
* not need restating in the evidence vocabulary. Removing the case leaves each
|
|
207
|
+
* fact with exactly one source, which is what §4 was trying to achieve and this
|
|
208
|
+
* rule was quietly undermining.
|
|
209
|
+
*
|
|
210
|
+
* @internal
|
|
211
|
+
*/
|
|
212
|
+
export function deriveEvidenceForVerdict(verdict, record, passingWitnessIds) {
|
|
213
|
+
switch (verdict) {
|
|
214
|
+
// 'not-a-bridge' falls through to the normal derivation on purpose: a row
|
|
215
|
+
// is refuted by a COUNTEREXAMPLE, not by failing a membership test. See the
|
|
216
|
+
// block comment above for the measurement that forced this change.
|
|
217
|
+
case 'not-a-bridge':
|
|
218
|
+
return deriveEvidence(record, passingWitnessIds);
|
|
219
|
+
case 'unadjudicated':
|
|
220
|
+
return new Set(['proposed']);
|
|
221
|
+
case 'bridge':
|
|
222
|
+
return deriveEvidence(record, passingWitnessIds);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=derive-evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derive-evidence.js","sourceRoot":"","sources":["../../src/atlas/derive-evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAsEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAqB,EACrB,SAAoC;IAEpC,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;IACzC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACxC,4EAA4E;IAC5E,iFAAiF;IACjF,8EAA8E;IAC9E,2EAA2E;IAC3E,yEAAyE;IACzE,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAM,GAAG,GAAG,aAAa,SAAS,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAC3B,OAAO,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IACH,IAAI,aAAa;QAAE,OAAO,GAAG,CAAC;IAC9B,OAAO;QACL,GAAG,GAAG;QACN,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,SAAS,CAAC,IAAI,EAAE,EAAE;KAC1E,CAAC;AACJ,CAAC;AAcD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,EAAU,CAAC;AAE3E,qFAAqF;AACrF,MAAM,iBAAiB,GAAG;IACxB,cAAc;IACd,iBAAiB;IACjB,sBAAsB;IACtB,YAAY;IACZ,qBAAqB;CAC4B,CAAC;AAEpD,+FAA+F;AAC/F,SAAS,wBAAwB,CAC/B,WAAoC;IAEpC,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAqB,EACrB,iBAAsC;IAEtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IAEpC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpF,oEAAoE;IACpE,wEAAwE;IACxE,6EAA6E;IAC7E,8EAA8E;IAC9E,qEAAqE;IACrE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAEjF,2EAA2E;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QACjF,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAEjF,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9D,IACE,QAAQ,CAAC,MAAM,GAAG,CAAC;QACnB,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAClF,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACjC,CAAC;IAED,oDAAoD;IACpD,IACE,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,EAAE,CACzD,EACD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA0B,EAC1B,MAAqB,EACrB,iBAAsC;IAEtC,QAAQ,OAAO,EAAE,CAAC;QAChB,0EAA0E;QAC1E,4EAA4E;QAC5E,mEAAmE;QACnE,KAAK,cAAc;YACjB,OAAO,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACnD,KAAK,eAAe;YAClB,OAAO,IAAI,GAAG,CAAc,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5C,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Atlas Phase 4 — the five diffusion-family bridges added to close Sprint 4's
|
|
3
|
+
* "≥ 20 bridges" exit criterion.
|
|
4
|
+
*
|
|
5
|
+
* Design note: `docs/planning/Atlas-Phase-4-Design.md` §4 (Sprint 4 closure).
|
|
6
|
+
*
|
|
7
|
+
* | Bridge | Relation | Witnesses |
|
|
8
|
+
* |---|---|---|
|
|
9
|
+
* | Langevin → Fick | `coarse-graining` | WD4 (convergence), WD4b (ballistic regime) |
|
|
10
|
+
* | Langevin + Stokes drag → Fick | `derivation`, **hyperedge** | WD5 (canonical + water), WD5s (CAS) |
|
|
11
|
+
* | telegraph → Fick | `approximation` (singular, τ → 0) | WD6 (convergence), WD6b (oscillatory modes) |
|
|
12
|
+
* | telegraph → 1-D wave | `approximation` (τDq² → ∞, t ≪ τ) | WD7 (convergence) |
|
|
13
|
+
* | heat → Laplace | `restriction` (steady state) | WD8 (convergence in time) |
|
|
14
|
+
*
|
|
15
|
+
* Every regime inequality keys a `PiGroup.formula` derived from the dimension
|
|
16
|
+
* matrix. Every `delta` is the EXACT error at its domain edge; every error
|
|
17
|
+
* function used for it is monotone on the domain, so the edge value is the
|
|
18
|
+
* supremum.
|
|
19
|
+
*
|
|
20
|
+
* @module atlas/diffusion/bridges-closure
|
|
21
|
+
*/
|
|
22
|
+
import type { AtlasBridge } from '../types.js';
|
|
23
|
+
/** τ_p/t ceiling of the Langevin → Fick regime: WD4's fine resolution, t = 100 τ_p. @internal */
|
|
24
|
+
export declare const LANGEVIN_MAX_TAU_RATIO = 0.01;
|
|
25
|
+
/** ε = τDq² ceiling of the telegraph → Fick domain. @internal */
|
|
26
|
+
export declare const TELEGRAPH_FICK_MAX_EPS = 0.05;
|
|
27
|
+
/** ε = τDq² floor of the telegraph → wave domain. @internal */
|
|
28
|
+
export declare const TELEGRAPH_WAVE_MIN_EPS = 25;
|
|
29
|
+
/** Fourier-number floor of the steady-state restriction. @internal */
|
|
30
|
+
export declare const STEADY_MIN_FOURIER = 1;
|
|
31
|
+
/** Bridge: Langevin → Fick, the Einstein coarse-graining D = k_BT/γ. @internal */
|
|
32
|
+
export declare const BRIDGE_LANGEVIN_DIFFUSION: AtlasBridge;
|
|
33
|
+
/**
|
|
34
|
+
* Bridge: Langevin + Stokes drag → Fick with the Stokes–Einstein coefficient.
|
|
35
|
+
*
|
|
36
|
+
* A HYPEREDGE: the Langevin model supplies D = k_BT/γ with γ free; Stokes drag
|
|
37
|
+
* supplies γ = 6πηa for a sphere. Neither alone gives D in terms of the fluid.
|
|
38
|
+
*
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export declare const BRIDGE_STOKES_EINSTEIN: AtlasBridge;
|
|
42
|
+
/**
|
|
43
|
+
* Bridge: telegraph → Fick, the SINGULAR limit τ → 0.
|
|
44
|
+
*
|
|
45
|
+
* Singular because the highest time derivative is lost: the telegraph equation
|
|
46
|
+
* needs two initial conditions and diffusion takes one, so a fast mode
|
|
47
|
+
* `e^{−t/τ}` forms an initial layer. The bound therefore holds only AFTER that
|
|
48
|
+
* layer, and the machine horizon has a LOWER edge as well as an upper one.
|
|
49
|
+
*
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
export declare const BRIDGE_TELEGRAPH_DIFFUSION: AtlasBridge;
|
|
53
|
+
/**
|
|
54
|
+
* Bridge: telegraph → 1-D wave, for strongly underdamped modes over short times.
|
|
55
|
+
*
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
export declare const BRIDGE_TELEGRAPH_WAVE: AtlasBridge;
|
|
59
|
+
/** Bridge: heat → Laplace, the steady-state restriction. @internal */
|
|
60
|
+
export declare const BRIDGE_HEAT_LAPLACE: AtlasBridge;
|
|
61
|
+
/** The diffusion-family closure bridges. @internal */
|
|
62
|
+
export declare const DIFFUSION_CLOSURE_BRIDGES: readonly AtlasBridge[];
|
|
63
|
+
//# sourceMappingURL=bridges-closure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridges-closure.d.ts","sourceRoot":"","sources":["../../../src/atlas/diffusion/bridges-closure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAwBpC,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,EAAE,WA0DvC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,WA4DpC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,WA0ExC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAkDnC,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,EAAE,WAsCjC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,yBAAyB,EAAE,SAAS,WAAW,EAM3D,CAAC"}
|