universal-physics-tensor 8.0.0 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -21
- package/data/atlas/atlas.json +75 -64
- package/data/atlas/atlas.jsonld +1 -1
- package/data/atlas/diffusion.json +23 -22
- package/data/atlas/oscillators.json +21 -16
- package/data/atlas/waves.json +33 -28
- package/data/bridge-catalog.json +1356 -1791
- package/data/bridge-catalog.schema.json +789 -46
- package/data/quantities.json +280 -234
- package/data/quantities.schema.json +52 -0
- package/data/schemas/atlas-record.v0.json +184 -46
- package/data/units.json +1178 -0
- package/data/units.schema.json +124 -0
- package/dist/atlas/applicability.d.ts.map +1 -1
- package/dist/atlas/applicability.js +14 -3
- package/dist/atlas/applicability.js.map +1 -1
- package/dist/atlas/association.d.ts +1 -1
- package/dist/atlas/association.js.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.d.ts.map +1 -1
- package/dist/atlas/benchmark/backend-shapes.js +5 -1
- package/dist/atlas/benchmark/backend-shapes.js.map +1 -1
- package/dist/atlas/benchmark/baselines.d.ts.map +1 -1
- package/dist/atlas/benchmark/baselines.js +8 -0
- package/dist/atlas/benchmark/baselines.js.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts +3 -2
- package/dist/atlas/benchmark/hybrid-retrieval.d.ts.map +1 -1
- package/dist/atlas/benchmark/hybrid-retrieval.js +16 -12
- package/dist/atlas/benchmark/hybrid-retrieval.js.map +1 -1
- package/dist/atlas/benchmark/leakage.js.map +1 -1
- package/dist/atlas/benchmark/loader.js.map +1 -1
- package/dist/atlas/benchmark/run-atlas.d.ts.map +1 -1
- package/dist/atlas/benchmark/run-atlas.js +14 -2
- package/dist/atlas/benchmark/run-atlas.js.map +1 -1
- package/dist/atlas/benchmark/stats.d.ts +1 -1
- package/dist/atlas/benchmark/stats.d.ts.map +1 -1
- package/dist/atlas/benchmark/stats.js +1 -1
- package/dist/atlas/benchmark/stats.js.map +1 -1
- package/dist/atlas/benchmark/study.js.map +1 -1
- package/dist/atlas/benchmark/types.js.map +1 -1
- package/dist/atlas/bridge-record.d.ts +4 -4
- package/dist/atlas/bridge-record.d.ts.map +1 -1
- package/dist/atlas/bridge-record.js +6 -6
- package/dist/atlas/bridge-record.js.map +1 -1
- package/dist/atlas/catalog-formal-ref.js.map +1 -1
- package/dist/atlas/chain-pipeline.d.ts +0 -11
- package/dist/atlas/chain-pipeline.d.ts.map +1 -1
- package/dist/atlas/chain-pipeline.js +5 -16
- package/dist/atlas/chain-pipeline.js.map +1 -1
- package/dist/atlas/composition-table.js.map +1 -1
- package/dist/atlas/conventions.js.map +1 -1
- package/dist/atlas/coverage.d.ts +2 -2
- package/dist/atlas/coverage.js.map +1 -1
- package/dist/atlas/derivation.js.map +1 -1
- package/dist/atlas/derive-evidence.d.ts +6 -4
- package/dist/atlas/derive-evidence.d.ts.map +1 -1
- package/dist/atlas/derive-evidence.js +7 -2
- package/dist/atlas/derive-evidence.js.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges-closure.js +0 -5
- package/dist/atlas/diffusion/bridges-closure.js.map +1 -1
- package/dist/atlas/diffusion/bridges.d.ts.map +1 -1
- package/dist/atlas/diffusion/bridges.js +0 -3
- package/dist/atlas/diffusion/bridges.js.map +1 -1
- package/dist/atlas/diffusion/dimensions.js.map +1 -1
- package/dist/atlas/diffusion/index.d.ts +1 -1
- package/dist/atlas/diffusion/index.d.ts.map +1 -1
- package/dist/atlas/diffusion/index.js.map +1 -1
- package/dist/atlas/diffusion/models.js.map +1 -1
- package/dist/atlas/diffusion/numerics.js.map +1 -1
- package/dist/atlas/error-algebra.d.ts +6 -0
- package/dist/atlas/error-algebra.d.ts.map +1 -1
- package/dist/atlas/error-algebra.js +26 -0
- package/dist/atlas/error-algebra.js.map +1 -1
- package/dist/atlas/export.d.ts +18 -2
- package/dist/atlas/export.d.ts.map +1 -1
- package/dist/atlas/export.js +9 -3
- package/dist/atlas/export.js.map +1 -1
- package/dist/atlas/families.d.ts +19 -2
- package/dist/atlas/families.d.ts.map +1 -1
- package/dist/atlas/families.js +26 -3
- package/dist/atlas/families.js.map +1 -1
- package/dist/atlas/family.d.ts +27 -0
- package/dist/atlas/family.d.ts.map +1 -0
- package/dist/atlas/family.js +12 -0
- package/dist/atlas/family.js.map +1 -0
- package/dist/atlas/index.d.ts +3 -2
- package/dist/atlas/index.d.ts.map +1 -1
- package/dist/atlas/index.js +2 -1
- package/dist/atlas/index.js.map +1 -1
- package/dist/atlas/link-prediction.d.ts +1 -1
- package/dist/atlas/link-prediction.d.ts.map +1 -1
- package/dist/atlas/link-prediction.js.map +1 -1
- package/dist/atlas/model.js.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-coarse.js +0 -1
- package/dist/atlas/oscillators/bridges-coarse.js.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-exact.js +0 -3
- package/dist/atlas/oscillators/bridges-exact.js.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.d.ts.map +1 -1
- package/dist/atlas/oscillators/bridges-limits.js +0 -2
- package/dist/atlas/oscillators/bridges-limits.js.map +1 -1
- package/dist/atlas/oscillators/dimensions.js.map +1 -1
- package/dist/atlas/oscillators/index.d.ts +1 -16
- package/dist/atlas/oscillators/index.d.ts.map +1 -1
- package/dist/atlas/oscillators/index.js.map +1 -1
- package/dist/atlas/oscillators/limit-witnesses.js.map +1 -1
- package/dist/atlas/oscillators/models.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport-witness.js.map +1 -1
- package/dist/atlas/oscillators/norm-transport.js.map +1 -1
- package/dist/atlas/oscillators/norms.js.map +1 -1
- package/dist/atlas/oscillators/pendulum-motion.js.map +1 -1
- package/dist/atlas/oscillators/phase-carriage.js.map +1 -1
- package/dist/atlas/oscillators/phase-translation.js.map +1 -1
- package/dist/atlas/oscillators/position-translation.js.map +1 -1
- package/dist/atlas/oscillators/rejections.js.map +1 -1
- package/dist/atlas/path-bound.js.map +1 -1
- package/dist/atlas/physjs-entries.generated.d.ts +1601 -220
- package/dist/atlas/physjs-entries.generated.d.ts.map +1 -1
- package/dist/atlas/physjs-entries.generated.js +1854 -345
- package/dist/atlas/physjs-entries.generated.js.map +1 -1
- package/dist/atlas/physjs-ref.d.ts +151 -117
- package/dist/atlas/physjs-ref.d.ts.map +1 -1
- package/dist/atlas/physjs-ref.js +244 -211
- package/dist/atlas/physjs-ref.js.map +1 -1
- package/dist/atlas/physjs-reviewed.d.ts +31 -0
- package/dist/atlas/physjs-reviewed.d.ts.map +1 -0
- package/dist/atlas/physjs-reviewed.js +194 -0
- package/dist/atlas/physjs-reviewed.js.map +1 -0
- package/dist/atlas/poster/associations.js.map +1 -1
- package/dist/atlas/poster/derivations.js.map +1 -1
- package/dist/atlas/poster/statements.js.map +1 -1
- package/dist/atlas/proof-target.d.ts +16 -8
- package/dist/atlas/proof-target.d.ts.map +1 -1
- package/dist/atlas/proof-target.js +34 -31
- package/dist/atlas/proof-target.js.map +1 -1
- package/dist/atlas/public.d.ts +2 -1
- package/dist/atlas/public.d.ts.map +1 -1
- package/dist/atlas/public.js +2 -1
- package/dist/atlas/public.js.map +1 -1
- package/dist/atlas/regime.js.map +1 -1
- package/dist/atlas/serialize.d.ts +18 -12
- package/dist/atlas/serialize.d.ts.map +1 -1
- package/dist/atlas/serialize.js +28 -18
- package/dist/atlas/serialize.js.map +1 -1
- package/dist/atlas/statement.js.map +1 -1
- package/dist/atlas/translation-registry.js.map +1 -1
- package/dist/atlas/translation.js.map +1 -1
- package/dist/atlas/types.d.ts +9 -2
- package/dist/atlas/types.d.ts.map +1 -1
- package/dist/atlas/types.js +1 -1
- package/dist/atlas/types.js.map +1 -1
- package/dist/atlas/waves/bridges-closure.d.ts.map +1 -1
- package/dist/atlas/waves/bridges-closure.js +0 -3
- package/dist/atlas/waves/bridges-closure.js.map +1 -1
- package/dist/atlas/waves/bridges.d.ts.map +1 -1
- package/dist/atlas/waves/bridges.js +0 -4
- package/dist/atlas/waves/bridges.js.map +1 -1
- package/dist/atlas/waves/index.d.ts +1 -1
- package/dist/atlas/waves/index.d.ts.map +1 -1
- package/dist/atlas/waves/index.js.map +1 -1
- package/dist/atlas/waves/models.js.map +1 -1
- package/dist/atlas/waves/numerics.js.map +1 -1
- package/dist/atlas/witness-artifact.js.map +1 -1
- package/dist/atlas/witness-dominance.d.ts +4 -3
- package/dist/atlas/witness-dominance.d.ts.map +1 -1
- package/dist/atlas/witness-dominance.js +15 -5
- package/dist/atlas/witness-dominance.js.map +1 -1
- package/dist/atlas/witness-numeric.d.ts +8 -4
- package/dist/atlas/witness-numeric.d.ts.map +1 -1
- package/dist/atlas/witness-numeric.js +27 -2
- package/dist/atlas/witness-numeric.js.map +1 -1
- package/dist/atlas/witness-result.d.ts +7 -1
- package/dist/atlas/witness-result.d.ts.map +1 -1
- package/dist/atlas/witness-result.js.map +1 -1
- package/dist/atlas/witness-specs.js.map +1 -1
- package/dist/atlas/witness-symbolic.js.map +1 -1
- package/dist/atlas/witnesses/quantum-support.js.map +1 -1
- package/dist/bridges/caller-table.d.ts +1 -1
- package/dist/bridges/caller-table.d.ts.map +1 -1
- package/dist/bridges/caller-table.js.map +1 -1
- package/dist/bridges/carrier-sign.d.ts.map +1 -1
- package/dist/bridges/carrier-sign.js +8 -3
- package/dist/bridges/carrier-sign.js.map +1 -1
- package/dist/bridges/catalog-adapter.d.ts +12 -3
- package/dist/bridges/catalog-adapter.d.ts.map +1 -1
- package/dist/bridges/catalog-adapter.js +22 -14
- package/dist/bridges/catalog-adapter.js.map +1 -1
- package/dist/bridges/catalog-load.d.ts +19 -2
- package/dist/bridges/catalog-load.d.ts.map +1 -1
- package/dist/bridges/catalog-load.js +233 -14
- package/dist/bridges/catalog-load.js.map +1 -1
- package/dist/bridges/catalog-types.d.ts +96 -27
- package/dist/bridges/catalog-types.d.ts.map +1 -1
- package/dist/bridges/catalog-types.js.map +1 -1
- package/dist/bridges/coefficient-statement.js +1 -5
- package/dist/bridges/coefficient-statement.js.map +1 -1
- package/dist/bridges/confrontation-coverage.js.map +1 -1
- package/dist/bridges/confrontations.d.ts +1 -1
- package/dist/bridges/confrontations.d.ts.map +1 -1
- package/dist/bridges/confrontations.js +1 -1
- package/dist/bridges/confrontations.js.map +1 -1
- package/dist/bridges/evaluation-errors.d.ts +89 -0
- package/dist/bridges/evaluation-errors.d.ts.map +1 -0
- package/dist/bridges/evaluation-errors.js +136 -0
- package/dist/bridges/evaluation-errors.js.map +1 -0
- package/dist/bridges/evaluator-inputs.d.ts +5 -3
- package/dist/bridges/evaluator-inputs.d.ts.map +1 -1
- package/dist/bridges/evaluator-inputs.js +24 -24
- package/dist/bridges/evaluator-inputs.js.map +1 -1
- package/dist/bridges/evaluators.d.ts +48 -8
- package/dist/bridges/evaluators.d.ts.map +1 -1
- package/dist/bridges/evaluators.js +173 -38
- package/dist/bridges/evaluators.js.map +1 -1
- package/dist/bridges/expr-parse.d.ts +38 -7
- package/dist/bridges/expr-parse.d.ts.map +1 -1
- package/dist/bridges/expr-parse.js +129 -156
- package/dist/bridges/expr-parse.js.map +1 -1
- package/dist/bridges/holds.d.ts +16 -8
- package/dist/bridges/holds.d.ts.map +1 -1
- package/dist/bridges/holds.js +130 -236
- package/dist/bridges/holds.js.map +1 -1
- package/dist/bridges/index.d.ts +15 -14
- package/dist/bridges/index.d.ts.map +1 -1
- package/dist/bridges/index.js +14 -15
- package/dist/bridges/index.js.map +1 -1
- package/dist/bridges/input-contract.d.ts +65 -0
- package/dist/bridges/input-contract.d.ts.map +1 -0
- package/dist/bridges/input-contract.js +97 -0
- package/dist/bridges/input-contract.js.map +1 -0
- package/dist/bridges/membership.d.ts +5 -3
- package/dist/bridges/membership.d.ts.map +1 -1
- package/dist/bridges/membership.js +5 -6
- package/dist/bridges/membership.js.map +1 -1
- package/dist/bridges/notices.d.ts +11 -0
- package/dist/bridges/notices.d.ts.map +1 -0
- package/dist/bridges/notices.js +22 -0
- package/dist/bridges/notices.js.map +1 -0
- package/dist/bridges/observations/types.js.map +1 -1
- package/dist/bridges/rejected.d.ts +11 -17
- package/dist/bridges/rejected.d.ts.map +1 -1
- package/dist/bridges/rejected.js +13 -68
- package/dist/bridges/rejected.js.map +1 -1
- package/dist/bridges/relation-eval.d.ts +5 -6
- package/dist/bridges/relation-eval.d.ts.map +1 -1
- package/dist/bridges/relation-eval.js +9 -38
- package/dist/bridges/relation-eval.js.map +1 -1
- package/dist/bridges/rhs-registry.js.map +1 -1
- package/dist/bridges/sensitivity.d.ts +11 -3
- package/dist/bridges/sensitivity.d.ts.map +1 -1
- package/dist/bridges/sensitivity.js +24 -10
- package/dist/bridges/sensitivity.js.map +1 -1
- package/dist/bridges/tensor-index.js.map +1 -1
- package/dist/bridges/types.d.ts +1 -7
- package/dist/bridges/types.d.ts.map +1 -1
- package/dist/bridges/types.js +1 -4
- package/dist/bridges/types.js.map +1 -1
- package/dist/canonical/canonical-equation.d.ts +31 -0
- package/dist/canonical/canonical-equation.d.ts.map +1 -1
- package/dist/canonical/canonical-equation.js.map +1 -1
- package/dist/canonical/dimensional-fields.js.map +1 -1
- package/dist/canonical/entries/_l1-build.js.map +1 -1
- package/dist/canonical/entries/atomic.d.ts.map +1 -1
- package/dist/canonical/entries/atomic.js +11 -1
- package/dist/canonical/entries/atomic.js.map +1 -1
- package/dist/canonical/entries/condensed-matter.d.ts.map +1 -1
- package/dist/canonical/entries/condensed-matter.js +7 -4
- package/dist/canonical/entries/condensed-matter.js.map +1 -1
- package/dist/canonical/entries/dimensional-classics.d.ts.map +1 -1
- package/dist/canonical/entries/dimensional-classics.js +50 -2
- package/dist/canonical/entries/dimensional-classics.js.map +1 -1
- package/dist/canonical/entries/electromagnetism.d.ts.map +1 -1
- package/dist/canonical/entries/electromagnetism.js +32 -2
- package/dist/canonical/entries/electromagnetism.js.map +1 -1
- package/dist/canonical/entries/fluids-waves.d.ts.map +1 -1
- package/dist/canonical/entries/fluids-waves.js +34 -0
- package/dist/canonical/entries/fluids-waves.js.map +1 -1
- package/dist/canonical/entries/mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/mechanics.js +24 -0
- package/dist/canonical/entries/mechanics.js.map +1 -1
- package/dist/canonical/entries/nonmonomial.d.ts.map +1 -1
- package/dist/canonical/entries/nonmonomial.js +42 -24
- package/dist/canonical/entries/nonmonomial.js.map +1 -1
- package/dist/canonical/entries/relativity.d.ts.map +1 -1
- package/dist/canonical/entries/relativity.js +6 -0
- package/dist/canonical/entries/relativity.js.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.d.ts.map +1 -1
- package/dist/canonical/entries/statistical-mechanics.js +24 -5
- package/dist/canonical/entries/statistical-mechanics.js.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.d.ts.map +1 -1
- package/dist/canonical/entries/thermo-nuclear-cosmo.js +15 -0
- package/dist/canonical/entries/thermo-nuclear-cosmo.js.map +1 -1
- package/dist/canonical/linkage.d.ts +29 -4
- package/dist/canonical/linkage.d.ts.map +1 -1
- package/dist/canonical/linkage.js +31 -29
- package/dist/canonical/linkage.js.map +1 -1
- package/dist/canonical/normal-form.d.ts +0 -8
- package/dist/canonical/normal-form.d.ts.map +1 -1
- package/dist/canonical/normal-form.js +17 -12
- package/dist/canonical/normal-form.js.map +1 -1
- package/dist/canonical/registry.js.map +1 -1
- package/dist/canonical/residual.js.map +1 -1
- package/dist/canonical/seed-l-layer.d.ts +7 -1
- package/dist/canonical/seed-l-layer.d.ts.map +1 -1
- package/dist/canonical/seed-l-layer.js +7 -1
- package/dist/canonical/seed-l-layer.js.map +1 -1
- package/dist/canonical/structural.d.ts +21 -0
- package/dist/canonical/structural.d.ts.map +1 -1
- package/dist/canonical/structural.js +24 -4
- package/dist/canonical/structural.js.map +1 -1
- package/dist/cases/brownian-sphere.js +4 -4
- package/dist/cases/brownian-sphere.js.map +1 -1
- package/dist/cases/damped-resonator.js +2 -2
- package/dist/cases/damped-resonator.js.map +1 -1
- package/dist/cases/index.d.ts +9 -2
- package/dist/cases/index.d.ts.map +1 -1
- package/dist/cases/index.js +26 -7
- package/dist/cases/index.js.map +1 -1
- package/dist/cases/kepler-rv.js +6 -6
- package/dist/cases/kepler-rv.js.map +1 -1
- package/dist/cases/lumped-cooling.js +1 -1
- package/dist/cases/lumped-cooling.js.map +1 -1
- package/dist/cases/quadrature.js.map +1 -1
- package/dist/cases/resistor-noise.js +3 -3
- package/dist/cases/resistor-noise.js.map +1 -1
- package/dist/cases/skin-depth.js.map +1 -1
- package/dist/cases/types.js.map +1 -1
- package/dist/cli/args.d.ts +7 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +18 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/bindings.d.ts +13 -0
- package/dist/cli/bindings.d.ts.map +1 -0
- package/dist/cli/bindings.js +32 -0
- package/dist/cli/bindings.js.map +1 -0
- package/dist/cli/closed-form-range.js.map +1 -1
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/_atlas-map.d.ts +3 -3
- package/dist/cli/commands/_atlas-map.d.ts.map +1 -1
- package/dist/cli/commands/_atlas-map.js +43 -18
- package/dist/cli/commands/_atlas-map.js.map +1 -1
- package/dist/cli/commands/_atlas-route.js.map +1 -1
- package/dist/cli/commands/_discovery-opts.d.ts +2 -1
- package/dist/cli/commands/_discovery-opts.d.ts.map +1 -1
- package/dist/cli/commands/_discovery-opts.js +48 -18
- package/dist/cli/commands/_discovery-opts.js.map +1 -1
- package/dist/cli/commands/atlas.d.ts.map +1 -1
- package/dist/cli/commands/atlas.js +7 -12
- package/dist/cli/commands/atlas.js.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +13 -21
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/axes.js.map +1 -1
- package/dist/cli/commands/candidates.d.ts.map +1 -1
- package/dist/cli/commands/candidates.js +16 -8
- package/dist/cli/commands/candidates.js.map +1 -1
- package/dist/cli/commands/canonical.js.map +1 -1
- package/dist/cli/commands/chain.js +1 -1
- package/dist/cli/commands/chain.js.map +1 -1
- package/dist/cli/commands/confront.d.ts.map +1 -1
- package/dist/cli/commands/confront.js +22 -14
- package/dist/cli/commands/confront.js.map +1 -1
- package/dist/cli/commands/connectors.d.ts.map +1 -1
- package/dist/cli/commands/connectors.js +8 -9
- package/dist/cli/commands/connectors.js.map +1 -1
- package/dist/cli/commands/coverage.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +50 -26
- 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 +18 -13
- package/dist/cli/commands/discover.js.map +1 -1
- package/dist/cli/commands/eval.d.ts.map +1 -1
- package/dist/cli/commands/eval.js +29 -26
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts +1 -35
- package/dist/cli/commands/evaluate.d.ts.map +1 -1
- package/dist/cli/commands/evaluate.js +99 -208
- 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 +57 -45
- package/dist/cli/commands/explain.js.map +1 -1
- package/dist/cli/commands/frontier.js.map +1 -1
- package/dist/cli/commands/ground.d.ts.map +1 -1
- package/dist/cli/commands/ground.js +41 -11
- package/dist/cli/commands/ground.js.map +1 -1
- 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 +84 -92
- package/dist/cli/commands/map.js.map +1 -1
- package/dist/cli/commands/metric.d.ts.map +1 -1
- package/dist/cli/commands/metric.js +53 -15
- package/dist/cli/commands/metric.js.map +1 -1
- package/dist/cli/commands/path.js +4 -4
- package/dist/cli/commands/path.js.map +1 -1
- package/dist/cli/commands/predict.js.map +1 -1
- package/dist/cli/commands/priority.js.map +1 -1
- package/dist/cli/commands/probe.d.ts.map +1 -1
- package/dist/cli/commands/probe.js +50 -26
- package/dist/cli/commands/probe.js.map +1 -1
- package/dist/cli/commands/recover.js +1 -1
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/regime.d.ts +5 -4
- package/dist/cli/commands/regime.d.ts.map +1 -1
- package/dist/cli/commands/regime.js +25 -27
- package/dist/cli/commands/regime.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts.map +1 -1
- package/dist/cli/commands/retrieve.js +22 -14
- package/dist/cli/commands/retrieve.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +8 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/symbolic.d.ts.map +1 -1
- package/dist/cli/commands/symbolic.js +14 -7
- package/dist/cli/commands/symbolic.js.map +1 -1
- package/dist/cli/commands/testplan.js +4 -4
- package/dist/cli/commands/testplan.js.map +1 -1
- package/dist/cli/conventions.d.ts +6 -7
- package/dist/cli/conventions.d.ts.map +1 -1
- package/dist/cli/conventions.js +19 -28
- package/dist/cli/conventions.js.map +1 -1
- package/dist/cli/determination.js.map +1 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/euler-guard.d.ts +13 -2
- package/dist/cli/euler-guard.d.ts.map +1 -1
- package/dist/cli/euler-guard.js +17 -3
- package/dist/cli/euler-guard.js.map +1 -1
- package/dist/cli/eval-numbers.d.ts +4 -9
- package/dist/cli/eval-numbers.d.ts.map +1 -1
- package/dist/cli/eval-numbers.js +11 -41
- package/dist/cli/eval-numbers.js.map +1 -1
- package/dist/cli/expr-print.d.ts +29 -2
- package/dist/cli/expr-print.d.ts.map +1 -1
- package/dist/cli/expr-print.js +46 -2
- package/dist/cli/expr-print.js.map +1 -1
- package/dist/cli/flag-help.js.map +1 -1
- package/dist/cli/graphs.js.map +1 -1
- package/dist/cli/library-defaults.d.ts +19 -0
- package/dist/cli/library-defaults.d.ts.map +1 -0
- package/dist/cli/library-defaults.js +22 -0
- package/dist/cli/library-defaults.js.map +1 -0
- package/dist/cli/main.js +7 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/map-evidence.js.map +1 -1
- package/dist/cli/output.d.ts +3 -6
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/published-url.d.ts +2 -0
- package/dist/cli/published-url.d.ts.map +1 -1
- package/dist/cli/published-url.js +5 -0
- package/dist/cli/published-url.js.map +1 -1
- package/dist/cli/record-reach.d.ts +6 -0
- package/dist/cli/record-reach.d.ts.map +1 -1
- package/dist/cli/record-reach.js +16 -10
- package/dist/cli/record-reach.js.map +1 -1
- package/dist/cli/record-tables.d.ts +2 -1
- package/dist/cli/record-tables.d.ts.map +1 -1
- package/dist/cli/record-tables.js +8 -3
- package/dist/cli/record-tables.js.map +1 -1
- package/dist/cli/record.d.ts.map +1 -1
- package/dist/cli/record.js +31 -12
- package/dist/cli/record.js.map +1 -1
- package/dist/cli/search-index.d.ts +5 -0
- package/dist/cli/search-index.d.ts.map +1 -1
- package/dist/cli/search-index.js +12 -1
- package/dist/cli/search-index.js.map +1 -1
- package/dist/cli/statuses.js.map +1 -1
- package/dist/cli/top-level-help.js.map +1 -1
- package/dist/cli/version.js.map +1 -1
- package/dist/cli-api.d.ts +57 -18
- package/dist/cli-api.d.ts.map +1 -1
- package/dist/cli-api.js +49 -21
- package/dist/cli-api.js.map +1 -1
- package/dist/composition/adjudication.d.ts +8 -30
- package/dist/composition/adjudication.d.ts.map +1 -1
- package/dist/composition/adjudication.js +15 -67
- package/dist/composition/adjudication.js.map +1 -1
- package/dist/composition/aliases.d.ts +1 -1
- package/dist/composition/aliases.d.ts.map +1 -1
- package/dist/composition/aliases.js +10 -20
- package/dist/composition/aliases.js.map +1 -1
- package/dist/composition/audit-coverage.d.ts +2 -0
- package/dist/composition/audit-coverage.d.ts.map +1 -1
- package/dist/composition/audit-coverage.js.map +1 -1
- package/dist/composition/axes.d.ts +12 -0
- package/dist/composition/axes.d.ts.map +1 -1
- package/dist/composition/axes.js +18 -6
- package/dist/composition/axes.js.map +1 -1
- package/dist/composition/axis-audit.js.map +1 -1
- package/dist/composition/bridge-analysis.d.ts +0 -14
- package/dist/composition/bridge-analysis.d.ts.map +1 -1
- package/dist/composition/bridge-analysis.js +66 -57
- package/dist/composition/bridge-analysis.js.map +1 -1
- package/dist/composition/bridge-prediction.d.ts +5 -1
- package/dist/composition/bridge-prediction.d.ts.map +1 -1
- package/dist/composition/bridge-prediction.js +12 -16
- package/dist/composition/bridge-prediction.js.map +1 -1
- package/dist/composition/buckingham-filter.js.map +1 -1
- package/dist/composition/canonical-compare.d.ts.map +1 -1
- package/dist/composition/canonical-compare.js +12 -2
- package/dist/composition/canonical-compare.js.map +1 -1
- package/dist/composition/canonical-graph.d.ts +15 -18
- package/dist/composition/canonical-graph.d.ts.map +1 -1
- package/dist/composition/canonical-graph.js +59 -85
- package/dist/composition/canonical-graph.js.map +1 -1
- package/dist/composition/canonical-json.js.map +1 -1
- package/dist/composition/canonical-prefactors.d.ts +10 -29
- package/dist/composition/canonical-prefactors.d.ts.map +1 -1
- package/dist/composition/canonical-prefactors.js +15 -202
- package/dist/composition/canonical-prefactors.js.map +1 -1
- package/dist/composition/catalog-graph.d.ts.map +1 -1
- package/dist/composition/catalog-graph.js +6 -20
- package/dist/composition/catalog-graph.js.map +1 -1
- package/dist/composition/chain-candidate.d.ts +2 -0
- package/dist/composition/chain-candidate.d.ts.map +1 -1
- package/dist/composition/chain-candidate.js +2 -0
- package/dist/composition/chain-candidate.js.map +1 -1
- package/dist/composition/chain-match.js.map +1 -1
- package/dist/composition/chain-regime.js.map +1 -1
- package/dist/composition/chain-result.js.map +1 -1
- package/dist/composition/compose-surface.js.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 +154 -36
- package/dist/composition/compose.js.map +1 -1
- package/dist/composition/composition-recovery.js.map +1 -1
- package/dist/composition/consequence.d.ts.map +1 -1
- package/dist/composition/consequence.js +15 -6
- package/dist/composition/consequence.js.map +1 -1
- package/dist/composition/consistency.js.map +1 -1
- package/dist/composition/descriptor.d.ts +1 -1
- package/dist/composition/descriptor.d.ts.map +1 -1
- package/dist/composition/descriptor.js.map +1 -1
- package/dist/composition/dimension-adjacency.js.map +1 -1
- package/dist/composition/discovery.d.ts +67 -7
- package/dist/composition/discovery.d.ts.map +1 -1
- package/dist/composition/discovery.js +83 -23
- package/dist/composition/discovery.js.map +1 -1
- package/dist/composition/edge.d.ts +19 -22
- package/dist/composition/edge.d.ts.map +1 -1
- package/dist/composition/edge.js +25 -28
- package/dist/composition/edge.js.map +1 -1
- package/dist/composition/enumerate.d.ts +2 -2
- package/dist/composition/enumerate.d.ts.map +1 -1
- package/dist/composition/enumerate.js.map +1 -1
- package/dist/composition/evaluate-relation.d.ts +29 -5
- package/dist/composition/evaluate-relation.d.ts.map +1 -1
- package/dist/composition/evaluate-relation.js +100 -72
- package/dist/composition/evaluate-relation.js.map +1 -1
- package/dist/composition/explain.d.ts +14 -4
- package/dist/composition/explain.d.ts.map +1 -1
- package/dist/composition/explain.js +53 -19
- package/dist/composition/explain.js.map +1 -1
- package/dist/composition/expr-eval.d.ts.map +1 -1
- package/dist/composition/expr-eval.js +2 -1
- package/dist/composition/expr-eval.js.map +1 -1
- package/dist/composition/expr-simplify.d.ts.map +1 -1
- package/dist/composition/expr-simplify.js +9 -39
- package/dist/composition/expr-simplify.js.map +1 -1
- package/dist/composition/expr-subst.js.map +1 -1
- package/dist/composition/formula-shape.d.ts +9 -0
- package/dist/composition/formula-shape.d.ts.map +1 -1
- package/dist/composition/formula-shape.js +54 -0
- package/dist/composition/formula-shape.js.map +1 -1
- package/dist/composition/frontier-account.d.ts +3 -2
- package/dist/composition/frontier-account.d.ts.map +1 -1
- package/dist/composition/frontier-account.js +7 -3
- package/dist/composition/frontier-account.js.map +1 -1
- package/dist/composition/graph-viz-svg.js.map +1 -1
- package/dist/composition/graph-viz.js.map +1 -1
- package/dist/composition/grounding.js.map +1 -1
- package/dist/composition/identifiability.js.map +1 -1
- package/dist/composition/index.d.ts +9 -5
- package/dist/composition/index.d.ts.map +1 -1
- package/dist/composition/index.js +7 -4
- package/dist/composition/index.js.map +1 -1
- package/dist/composition/mathts-quiet.d.ts +28 -0
- package/dist/composition/mathts-quiet.d.ts.map +1 -0
- package/dist/composition/mathts-quiet.js +56 -0
- package/dist/composition/mathts-quiet.js.map +1 -0
- package/dist/composition/mathts-scalar-symbols.d.ts.map +1 -1
- package/dist/composition/mathts-scalar-symbols.js +18 -34
- package/dist/composition/mathts-scalar-symbols.js.map +1 -1
- package/dist/composition/not-composable-seeds.d.ts +3 -1
- package/dist/composition/not-composable-seeds.d.ts.map +1 -1
- package/dist/composition/not-composable-seeds.js +2 -0
- package/dist/composition/not-composable-seeds.js.map +1 -1
- package/dist/composition/probe/backend-protocol.js.map +1 -1
- package/dist/composition/probe/candidate-store.js.map +1 -1
- package/dist/composition/probe/corpus.js.map +1 -1
- package/dist/composition/probe/dataset.js.map +1 -1
- package/dist/composition/probe/experiment-design.js.map +1 -1
- package/dist/composition/probe/expression-gaps.js.map +1 -1
- package/dist/composition/probe/falsify.d.ts +14 -3
- package/dist/composition/probe/falsify.d.ts.map +1 -1
- package/dist/composition/probe/falsify.js +14 -27
- package/dist/composition/probe/falsify.js.map +1 -1
- package/dist/composition/probe/fingerprint.js.map +1 -1
- package/dist/composition/probe/fit.d.ts +1 -1
- package/dist/composition/probe/fit.d.ts.map +1 -1
- package/dist/composition/probe/fit.js +2 -1
- package/dist/composition/probe/fit.js.map +1 -1
- package/dist/composition/probe/frontier.js.map +1 -1
- package/dist/composition/probe/generator.js.map +1 -1
- package/dist/composition/probe/index.d.ts +4 -2
- package/dist/composition/probe/index.d.ts.map +1 -1
- package/dist/composition/probe/index.js +4 -2
- package/dist/composition/probe/index.js.map +1 -1
- package/dist/composition/probe/limits.js.map +1 -1
- package/dist/composition/probe/metadata.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 +13 -6
- package/dist/composition/probe/pipeline.js.map +1 -1
- package/dist/composition/probe/problem.d.ts +8 -0
- package/dist/composition/probe/problem.d.ts.map +1 -1
- package/dist/composition/probe/problem.js +78 -12
- package/dist/composition/probe/problem.js.map +1 -1
- package/dist/composition/probe/report.js.map +1 -1
- package/dist/composition/probe/residual.js.map +1 -1
- package/dist/composition/probe/run-manifest.js +2 -2
- package/dist/composition/probe/run-manifest.js.map +1 -1
- package/dist/composition/probe/scoring.d.ts +2 -1
- package/dist/composition/probe/scoring.d.ts.map +1 -1
- package/dist/composition/probe/scoring.js +21 -7
- package/dist/composition/probe/scoring.js.map +1 -1
- package/dist/composition/probe/search-budget.js.map +1 -1
- package/dist/composition/probe/serialize.js.map +1 -1
- package/dist/composition/probe/structure.js.map +1 -1
- package/dist/composition/probe/study.d.ts +4 -3
- package/dist/composition/probe/study.d.ts.map +1 -1
- package/dist/composition/probe/study.js +5 -3
- package/dist/composition/probe/study.js.map +1 -1
- package/dist/composition/probe/types.d.ts +3 -1
- package/dist/composition/probe/types.d.ts.map +1 -1
- package/dist/composition/probe/types.js +2 -0
- package/dist/composition/probe/types.js.map +1 -1
- package/dist/composition/proposed-bridges.d.ts +11 -4
- package/dist/composition/proposed-bridges.d.ts.map +1 -1
- package/dist/composition/proposed-bridges.js +14 -6
- package/dist/composition/proposed-bridges.js.map +1 -1
- package/dist/composition/quantities.d.ts +0 -4
- package/dist/composition/quantities.d.ts.map +1 -1
- package/dist/composition/quantities.js +5 -5
- package/dist/composition/quantities.js.map +1 -1
- package/dist/composition/quantity.d.ts +18 -2
- package/dist/composition/quantity.d.ts.map +1 -1
- package/dist/composition/quantity.js +35 -6
- package/dist/composition/quantity.js.map +1 -1
- package/dist/composition/representative-values.js.map +1 -1
- package/dist/composition/retrodiction.d.ts +18 -0
- package/dist/composition/retrodiction.d.ts.map +1 -1
- package/dist/composition/retrodiction.js +37 -7
- package/dist/composition/retrodiction.js.map +1 -1
- package/dist/composition/uncertainty.js.map +1 -1
- package/dist/composition/user-equation.d.ts +11 -7
- package/dist/composition/user-equation.d.ts.map +1 -1
- package/dist/composition/user-equation.js +24 -26
- package/dist/composition/user-equation.js.map +1 -1
- package/dist/core/axes-registry.d.ts +8 -5
- package/dist/core/axes-registry.d.ts.map +1 -1
- package/dist/core/axes-registry.js.map +1 -1
- package/dist/core/cell.js.map +1 -1
- package/dist/core/constants.d.ts +35 -12
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +46 -15
- package/dist/core/constants.js.map +1 -1
- package/dist/core/data-file.d.ts +27 -0
- package/dist/core/data-file.d.ts.map +1 -0
- package/dist/core/data-file.js +48 -0
- package/dist/core/data-file.js.map +1 -0
- package/dist/core/flux-rules.js +1 -1
- package/dist/core/flux-rules.js.map +1 -1
- package/dist/core/json-schema.d.ts +27 -0
- package/dist/core/json-schema.d.ts.map +1 -0
- package/dist/core/json-schema.js +177 -0
- package/dist/core/json-schema.js.map +1 -0
- package/dist/core/labeled-tensor.d.ts +6 -1
- package/dist/core/labeled-tensor.d.ts.map +1 -1
- package/dist/core/labeled-tensor.js +18 -8
- package/dist/core/labeled-tensor.js.map +1 -1
- package/dist/core/regime-registry.d.ts +6 -2
- package/dist/core/regime-registry.d.ts.map +1 -1
- package/dist/core/regime-registry.js.map +1 -1
- package/dist/core/regime-rule-install.js.map +1 -1
- package/dist/core/regimes-builtins.js.map +1 -1
- package/dist/core/tensor.d.ts +7 -4
- package/dist/core/tensor.d.ts.map +1 -1
- package/dist/core/tensor.js +40 -8
- package/dist/core/tensor.js.map +1 -1
- package/dist/core/types.d.ts +3 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +16 -14
- package/dist/core/types.js.map +1 -1
- package/dist/core/universal-index.js.map +1 -1
- package/dist/diff/bridge-ast-gradient.d.ts +4 -5
- package/dist/diff/bridge-ast-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-ast-gradient.js +16 -23
- package/dist/diff/bridge-ast-gradient.js.map +1 -1
- package/dist/diff/bridge-gradient.d.ts +24 -80
- package/dist/diff/bridge-gradient.d.ts.map +1 -1
- package/dist/diff/bridge-gradient.js +21 -98
- package/dist/diff/bridge-gradient.js.map +1 -1
- package/dist/diff/bridge-specs.d.ts +18 -6
- package/dist/diff/bridge-specs.d.ts.map +1 -1
- package/dist/diff/bridge-specs.js +17 -5
- package/dist/diff/bridge-specs.js.map +1 -1
- package/dist/dimensional/algebra.js.map +1 -1
- package/dist/dimensional/ast-builders.d.ts +5 -4
- package/dist/dimensional/ast-builders.d.ts.map +1 -1
- package/dist/dimensional/ast-builders.js +6 -5
- package/dist/dimensional/ast-builders.js.map +1 -1
- package/dist/dimensional/ast-types.js.map +1 -1
- package/dist/dimensional/bridge-check.d.ts.map +1 -1
- package/dist/dimensional/bridge-check.js +3 -5
- package/dist/dimensional/bridge-check.js.map +1 -1
- package/dist/dimensional/buckingham.js.map +1 -1
- package/dist/dimensional/connection-validators.d.ts +2 -1
- package/dist/dimensional/connection-validators.d.ts.map +1 -1
- package/dist/dimensional/connection-validators.js.map +1 -1
- package/dist/dimensional/connection.js.map +1 -1
- package/dist/dimensional/constant-rows.d.ts +54 -0
- package/dist/dimensional/constant-rows.d.ts.map +1 -0
- package/dist/dimensional/constant-rows.js +115 -0
- package/dist/dimensional/constant-rows.js.map +1 -0
- package/dist/dimensional/constants.d.ts +7 -17
- package/dist/dimensional/constants.d.ts.map +1 -1
- package/dist/dimensional/constants.js +12 -21
- package/dist/dimensional/constants.js.map +1 -1
- package/dist/dimensional/curvature-composite.js.map +1 -1
- package/dist/dimensional/curvature-invariants.js.map +1 -1
- package/dist/dimensional/curvature.js.map +1 -1
- package/dist/dimensional/dimension-inference.js.map +1 -1
- package/dist/dimensional/dimension-spec.d.ts +21 -6
- package/dist/dimensional/dimension-spec.d.ts.map +1 -1
- package/dist/dimensional/dimension-spec.js +150 -160
- package/dist/dimensional/dimension-spec.js.map +1 -1
- package/dist/dimensional/einstein-equation.js.map +1 -1
- package/dist/dimensional/errors.d.ts +3 -1
- package/dist/dimensional/errors.d.ts.map +1 -1
- package/dist/dimensional/errors.js +2 -2
- package/dist/dimensional/errors.js.map +1 -1
- package/dist/dimensional/exact-scale.d.ts +79 -0
- package/dist/dimensional/exact-scale.d.ts.map +1 -0
- package/dist/dimensional/exact-scale.js +222 -0
- package/dist/dimensional/exact-scale.js.map +1 -0
- package/dist/dimensional/field-equation-helpers.js.map +1 -1
- package/dist/dimensional/formula-names.d.ts +13 -12
- package/dist/dimensional/formula-names.d.ts.map +1 -1
- package/dist/dimensional/formula-names.js +28 -51
- package/dist/dimensional/formula-names.js.map +1 -1
- package/dist/dimensional/fresh-label.js.map +1 -1
- package/dist/dimensional/friedmann-equation.d.ts +3 -3
- package/dist/dimensional/friedmann-equation.js +3 -3
- package/dist/dimensional/friedmann-equation.js.map +1 -1
- package/dist/dimensional/gauge-field.d.ts +2 -3
- package/dist/dimensional/gauge-field.d.ts.map +1 -1
- package/dist/dimensional/gauge-field.js +0 -1
- package/dist/dimensional/gauge-field.js.map +1 -1
- package/dist/dimensional/hyphen-names.d.ts.map +1 -1
- package/dist/dimensional/hyphen-names.js +8 -0
- package/dist/dimensional/hyphen-names.js.map +1 -1
- package/dist/dimensional/killing-validators.js.map +1 -1
- package/dist/dimensional/klein-gordon-equation.js.map +1 -1
- package/dist/dimensional/metric-validators.d.ts +2 -1
- package/dist/dimensional/metric-validators.d.ts.map +1 -1
- package/dist/dimensional/metric-validators.js.map +1 -1
- package/dist/dimensional/metric.js.map +1 -1
- package/dist/dimensional/natural-units.js.map +1 -1
- package/dist/dimensional/quantity-registry.d.ts +23 -1
- package/dist/dimensional/quantity-registry.d.ts.map +1 -1
- package/dist/dimensional/quantity-registry.js +55 -18
- package/dist/dimensional/quantity-registry.js.map +1 -1
- package/dist/dimensional/rg-flow.js.map +1 -1
- package/dist/dimensional/stress-energy-validators.js.map +1 -1
- package/dist/dimensional/symbolic-constants.d.ts +63 -19
- package/dist/dimensional/symbolic-constants.d.ts.map +1 -1
- package/dist/dimensional/symbolic-constants.js +114 -92
- package/dist/dimensional/symbolic-constants.js.map +1 -1
- package/dist/dimensional/tensor-trace.js.map +1 -1
- package/dist/dimensional/tensor.js.map +1 -1
- package/dist/dimensional/types.js.map +1 -1
- package/dist/dimensional/unit-convention.d.ts +0 -2
- package/dist/dimensional/unit-convention.d.ts.map +1 -1
- package/dist/dimensional/unit-convention.js +2 -2
- package/dist/dimensional/unit-convention.js.map +1 -1
- package/dist/dimensional/unit-data.d.ts +70 -0
- package/dist/dimensional/unit-data.d.ts.map +1 -0
- package/dist/dimensional/unit-data.js +139 -0
- package/dist/dimensional/unit-data.js.map +1 -0
- package/dist/dimensional/units.d.ts +87 -24
- package/dist/dimensional/units.d.ts.map +1 -1
- package/dist/dimensional/units.js +290 -295
- package/dist/dimensional/units.js.map +1 -1
- package/dist/dimensional/validator-registry.js.map +1 -1
- package/dist/dimensional/validator.d.ts +0 -16
- package/dist/dimensional/validator.d.ts.map +1 -1
- package/dist/dimensional/validator.js +65 -29
- package/dist/dimensional/validator.js.map +1 -1
- package/dist/dimensional/weyl-validators.js.map +1 -1
- package/dist/index.d.ts +65 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -24
- package/dist/index.js.map +1 -1
- package/dist/numerical/bianchi-residual.js.map +1 -1
- package/dist/numerical/binding-value.d.ts +32 -7
- package/dist/numerical/binding-value.d.ts.map +1 -1
- package/dist/numerical/binding-value.js +218 -209
- package/dist/numerical/binding-value.js.map +1 -1
- package/dist/numerical/christoffel-flat.js.map +1 -1
- package/dist/numerical/connection-lowering-helpers.js.map +1 -1
- package/dist/numerical/covariant-eikonal.d.ts.map +1 -1
- package/dist/numerical/covariant-eikonal.js +2 -2
- package/dist/numerical/covariant-eikonal.js.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.d.ts +20 -0
- package/dist/numerical/curvature-lowering-helpers.d.ts.map +1 -1
- package/dist/numerical/curvature-lowering-helpers.js +6 -3
- package/dist/numerical/curvature-lowering-helpers.js.map +1 -1
- package/dist/numerical/derivative-lowering.js.map +1 -1
- package/dist/numerical/einstein-equation.js.map +1 -1
- package/dist/numerical/engine-registry.js.map +1 -1
- package/dist/numerical/errors.d.ts +7 -3
- package/dist/numerical/errors.d.ts.map +1 -1
- package/dist/numerical/errors.js +5 -5
- package/dist/numerical/errors.js.map +1 -1
- package/dist/numerical/evaluator-uncertainty.d.ts +34 -0
- package/dist/numerical/evaluator-uncertainty.d.ts.map +1 -0
- package/dist/numerical/evaluator-uncertainty.js +134 -0
- package/dist/numerical/evaluator-uncertainty.js.map +1 -0
- package/dist/numerical/formula-contract.d.ts +67 -7
- package/dist/numerical/formula-contract.d.ts.map +1 -1
- package/dist/numerical/formula-contract.js +68 -42
- package/dist/numerical/formula-contract.js.map +1 -1
- package/dist/numerical/formula-dimension.d.ts +17 -7
- package/dist/numerical/formula-dimension.d.ts.map +1 -1
- package/dist/numerical/formula-dimension.js +120 -44
- package/dist/numerical/formula-dimension.js.map +1 -1
- package/dist/numerical/formula-mathts.d.ts.map +1 -1
- package/dist/numerical/formula-mathts.js +10 -3
- package/dist/numerical/formula-mathts.js.map +1 -1
- package/dist/numerical/formula-registry.d.ts +13 -3
- package/dist/numerical/formula-registry.d.ts.map +1 -1
- package/dist/numerical/formula-registry.js +7 -2
- package/dist/numerical/formula-registry.js.map +1 -1
- package/dist/numerical/geodesic-integrator.js.map +1 -1
- package/dist/numerical/geometrized.js.map +1 -1
- package/dist/numerical/gl4-integrator.d.ts +28 -27
- package/dist/numerical/gl4-integrator.d.ts.map +1 -1
- package/dist/numerical/gl4-integrator.js +44 -45
- package/dist/numerical/gl4-integrator.js.map +1 -1
- package/dist/numerical/grid-field.js.map +1 -1
- package/dist/numerical/index.js.map +1 -1
- package/dist/numerical/input-validation.d.ts +3 -6
- package/dist/numerical/input-validation.d.ts.map +1 -1
- package/dist/numerical/input-validation.js +4 -8
- package/dist/numerical/input-validation.js.map +1 -1
- package/dist/numerical/killing.d.ts +8 -5
- package/dist/numerical/killing.d.ts.map +1 -1
- package/dist/numerical/killing.js.map +1 -1
- package/dist/numerical/klein-gordon.js.map +1 -1
- package/dist/numerical/kretschmann.js.map +1 -1
- package/dist/numerical/lowering-utils.js.map +1 -1
- package/dist/numerical/lowering.d.ts.map +1 -1
- package/dist/numerical/lowering.js +7 -17
- package/dist/numerical/lowering.js.map +1 -1
- package/dist/numerical/mathts-engine.d.ts.map +1 -1
- package/dist/numerical/mathts-engine.js +11 -6
- package/dist/numerical/mathts-engine.js.map +1 -1
- package/dist/numerical/metric-inverse.js.map +1 -1
- package/dist/numerical/null-ic.js.map +1 -1
- package/dist/numerical/null-ray-integrator.js +4 -4
- package/dist/numerical/null-ray-integrator.js.map +1 -1
- package/dist/numerical/painleve-gullstrand-metric.js.map +1 -1
- package/dist/numerical/pderiv.d.ts.map +1 -1
- package/dist/numerical/pderiv.js +9 -2
- package/dist/numerical/pderiv.js.map +1 -1
- package/dist/numerical/perihelion-finder.js.map +1 -1
- package/dist/numerical/quadrature.d.ts +5 -2
- package/dist/numerical/quadrature.d.ts.map +1 -1
- package/dist/numerical/quadrature.js +20 -3
- package/dist/numerical/quadrature.js.map +1 -1
- package/dist/numerical/spacetime-metrics.d.ts +17 -19
- package/dist/numerical/spacetime-metrics.d.ts.map +1 -1
- package/dist/numerical/spacetime-metrics.js +158 -250
- package/dist/numerical/spacetime-metrics.js.map +1 -1
- package/dist/numerical/strides.js.map +1 -1
- package/dist/numerical/tensor-engine.d.ts +9 -5
- package/dist/numerical/tensor-engine.d.ts.map +1 -1
- package/dist/numerical/tensor-engine.js.map +1 -1
- package/dist/numerical/types.js.map +1 -1
- package/dist/numerical/weyl-lowering.js.map +1 -1
- package/dist/relations/category.js.map +1 -1
- package/dist/relations/composition-table.d.ts +4 -4
- package/dist/relations/composition-table.js +4 -4
- package/dist/relations/composition-table.js.map +1 -1
- package/dist/relations/conventions.js.map +1 -1
- package/dist/relations/domain-regimes.js.map +1 -1
- package/dist/relations/regime-registration.js.map +1 -1
- package/dist/relations/regime-vocabularies.js.map +1 -1
- package/dist/relations/regime.d.ts +18 -8
- package/dist/relations/regime.d.ts.map +1 -1
- package/dist/relations/regime.js +26 -14
- package/dist/relations/regime.js.map +1 -1
- package/dist/relations/types.d.ts +26 -6
- package/dist/relations/types.d.ts.map +1 -1
- package/dist/relations/types.js +15 -3
- package/dist/relations/types.js.map +1 -1
- package/package.json +10 -14
- package/dist/bridges/registry.d.ts +0 -60
- package/dist/bridges/registry.d.ts.map +0 -1
- package/dist/bridges/registry.js +0 -87
- package/dist/bridges/registry.js.map +0 -1
- package/dist/cli/poster-source.d.ts +0 -154
- package/dist/cli/poster-source.d.ts.map +0 -1
- package/dist/cli/poster-source.js +0 -184
- package/dist/cli/poster-source.js.map +0 -1
|
@@ -48,13 +48,22 @@ export function classifyProposal(proposal, canonical = CANONICAL_EQUATIONS) {
|
|
|
48
48
|
*/
|
|
49
49
|
export function describeDerivedClaim(proposal, canonical = CANONICAL_EQUATIONS) {
|
|
50
50
|
const { identification, sourceEquationIds, solvedFor } = proposal.derivedFrom;
|
|
51
|
+
// `deriveProposedBridges` resolves the first source id for the smaller
|
|
52
|
+
// endpoint name and the second for the larger, so each id's target is known
|
|
53
|
+
// even when the source is a catalog bridge the canonical registry does not
|
|
54
|
+
// hold (then `canonical.find` is undefined; the sentence once printed
|
|
55
|
+
// "equals ? (undefined)" there, 9.0.0 audit §7 T1).
|
|
56
|
+
const [t0, t1] = [identification.a, identification.b].sort();
|
|
57
|
+
const endpointOf = (id) => (id === sourceEquationIds[0] ? t0 : t1);
|
|
51
58
|
const sources = sourceEquationIds
|
|
52
59
|
.map((id) => canonical.find((e) => e.id === id))
|
|
53
60
|
.filter((e) => e !== undefined);
|
|
54
61
|
const home = sources.find((e) => e.dimensional.governing.some((g) => g.name === solvedFor)) ?? sources[0];
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
const
|
|
62
|
+
const homeId = home?.id ?? sourceEquationIds[0];
|
|
63
|
+
const otherId = sourceEquationIds.find((id) => id !== homeId) ?? sourceEquationIds[1];
|
|
64
|
+
const other = sources.find((e) => e.id === otherId);
|
|
65
|
+
const homeTarget = home?.dimensional.target.name ?? endpointOf(homeId);
|
|
66
|
+
const otherTarget = other?.dimensional.target.name ?? endpointOf(otherId);
|
|
58
67
|
const derivedNF = normalForm(proposal.scalarAst);
|
|
59
68
|
const sameTarget = canonical.filter((e) => e.scalarAst && e.dimensional.target.name === proposal.target.name);
|
|
60
69
|
const sameGov = sameTarget.filter((e) => sameGoverning(e.dimensional.governing, proposal.governing));
|
|
@@ -65,9 +74,9 @@ export function describeDerivedClaim(proposal, canonical = CANONICAL_EQUATIONS)
|
|
|
65
74
|
tested: false,
|
|
66
75
|
symbol: {
|
|
67
76
|
name: solvedFor,
|
|
68
|
-
fromEquation:
|
|
69
|
-
meaning: `${solvedFor} is the ${solvedFor} of ${home
|
|
70
|
-
`${homeTarget} equals ${otherTarget} (${
|
|
77
|
+
fromEquation: homeId,
|
|
78
|
+
meaning: `${solvedFor} is the ${solvedFor} of ${homeId}${home !== undefined ? ` (${home.name})` : ''}: the ${solvedFor} for which ` +
|
|
79
|
+
`${homeTarget} equals ${otherTarget} (${otherId}) — an equal-${identification.dim} scale; ` +
|
|
71
80
|
`the ${otherTarget} side is not given a ${solvedFor}`,
|
|
72
81
|
},
|
|
73
82
|
assumptions: sources.map((e) => ({ equation: e.id, assumptions: [...e.assumptions] })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consequence.js","sourceRoot":"","sources":["../../src/composition/consequence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"consequence.js","sourceRoot":"","sources":["../../src/composition/consequence.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Consequence propagation — the machine pre-classifier for the human\n * adjudication ledger. A POST-PASS annotation over ranked candidates (mirrors\n * `annotateAdjudications`): reuse `deriveProposedBridges` to derive each\n * promising candidate's monomial consequence, then compare its `normalForm`\n * against the canonical registry (SAME target AND SAME governing set) to label\n * it `entailed` (re-derives known physics), `novel-consequence` (valid, no\n * match), or `inconclusive` (no monomial consequence). Annotation-only: never\n * mutates the catalog/graph, never re-orders or re-scores, never writes to\n * ADJUDICATIONS. The underlying ProposedBridge stays `status:'unadjudicated'`.\n *\n * @module composition/consequence\n */\nimport type { VettedCandidate } from './discovery.js';\nimport type { ProposedBridge } from './proposed-bridges.js';\nimport { deriveProposedBridges } from './proposed-bridges.js';\nimport { normalForm } from '../canonical/normal-form.js';\nimport { CANONICAL_EQUATIONS } from '../canonical/registry.js';\nimport type { CanonicalEquation } from '../canonical/canonical-equation.js';\n\n/** @public */\nexport type ConsequenceSignal = 'entailed' | 'novel-consequence' | 'inconclusive';\n\n/** @public */\nexport interface ConsequenceEvidence {\n readonly target: string;\n readonly governing: readonly string[];\n readonly derivedNormalForm: string;\n /** The id of the canonical equation whose normalForm matched, or null. */\n readonly canonicalMatch: string | null;\n readonly sourceEquationIds: readonly [string, string];\n}\n\n/** @public */\nexport type ConsequenceAnnotatedCandidate = VettedCandidate & {\n readonly consequence?: {\n readonly signal: ConsequenceSignal;\n readonly evidence: readonly ConsequenceEvidence[];\n };\n};\n\n/** Governing-name set equality (order-insensitive). */\nfunction sameGoverning(a: readonly { name: string }[], b: readonly { name: string }[]): boolean {\n if (a.length !== b.length) return false;\n const sa = new Set(a.map((g) => g.name));\n return b.every((g) => sa.has(g.name));\n}\n\n/**\n * Classify ONE derived proposal against the canonical registry.\n * `entailed` iff some canonical equation with a `scalarAst` has the SAME target\n * name AND SAME governing set AND a matching `normalForm`. Otherwise\n * `novel-consequence`. There is NO contradiction signal — a differing normalForm\n * for the same target is NOT a contradiction (design r2: E=mc² vs E=hf).\n * @public\n */\nexport function classifyProposal(\n proposal: Pick<ProposedBridge, 'target' | 'governing' | 'scalarAst' | 'derivedFrom'>,\n canonical: readonly CanonicalEquation[] = CANONICAL_EQUATIONS,\n): { readonly signal: Exclude<ConsequenceSignal, 'inconclusive'>; readonly evidence: ConsequenceEvidence } {\n const derivedNF = normalForm(proposal.scalarAst);\n let canonicalMatch: string | null = null;\n for (const ce of canonical) {\n if (!ce.scalarAst) continue;\n if (ce.dimensional.target.name !== proposal.target.name) continue;\n if (!sameGoverning(ce.dimensional.governing, proposal.governing)) continue;\n if (normalForm(ce.scalarAst) === derivedNF) {\n canonicalMatch = ce.id; // CanonicalEquation.id is a top-level `readonly id: string` (verified)\n break;\n }\n }\n return {\n signal: canonicalMatch ? 'entailed' : 'novel-consequence',\n evidence: {\n target: proposal.target.name,\n governing: proposal.governing.map((g) => g.name),\n derivedNormalForm: derivedNF,\n canonicalMatch,\n sourceEquationIds: proposal.derivedFrom.sourceEquationIds,\n },\n };\n}\n\n/**\n * What a derived proposal claims, in a form that travels with it: the premise,\n * whether it is a known law or a conditional identity, what the solved-for\n * symbol means, the source equations' assumptions, and the exact scope of the\n * canonical-match check.\n * @internal\n */\nexport interface DerivedClaim {\n /** The unadjudicated identification the relation rests on. */\n readonly premise: string;\n /** `known-law`: re-derives a registry equation. `conditional-identity`: holds only if the premise does. */\n readonly relation: 'known-law' | 'conditional-identity';\n /** No derived proposal has been confronted with a measurement. */\n readonly tested: false;\n readonly symbol: { readonly name: string; readonly fromEquation: string; readonly meaning: string };\n readonly assumptions: readonly { readonly equation: string; readonly assumptions: readonly string[] }[];\n readonly canonicalMatch: {\n readonly id: string | null;\n readonly sameTarget: number;\n readonly sameTargetAndGoverning: number;\n readonly scope: 'the canonical registry only';\n };\n}\n\ntype ClaimEquation = Pick<CanonicalEquation, 'id' | 'name' | 'assumptions' | 'scalarAst'> & {\n readonly dimensional: Pick<CanonicalEquation['dimensional'], 'target' | 'governing'>;\n};\n\n/**\n * Describe the claim a derived proposal makes. Pure; the proposal is unchanged.\n * @internal\n */\nexport function describeDerivedClaim(\n proposal: Pick<ProposedBridge, 'target' | 'governing' | 'scalarAst' | 'derivedFrom'>,\n canonical: readonly ClaimEquation[] = CANONICAL_EQUATIONS,\n): DerivedClaim {\n const { identification, sourceEquationIds, solvedFor } = proposal.derivedFrom;\n // `deriveProposedBridges` resolves the first source id for the smaller\n // endpoint name and the second for the larger, so each id's target is known\n // even when the source is a catalog bridge the canonical registry does not\n // hold (then `canonical.find` is undefined; the sentence once printed\n // \"equals ? (undefined)\" there, 9.0.0 audit §7 T1).\n const [t0, t1] = [identification.a, identification.b].sort();\n const endpointOf = (id: string): string => (id === sourceEquationIds[0] ? t0 : t1);\n const sources = sourceEquationIds\n .map((id) => canonical.find((e) => e.id === id))\n .filter((e): e is ClaimEquation => e !== undefined);\n const home = sources.find((e) => e.dimensional.governing.some((g) => g.name === solvedFor)) ?? sources[0];\n const homeId = home?.id ?? sourceEquationIds[0];\n const otherId = sourceEquationIds.find((id) => id !== homeId) ?? sourceEquationIds[1];\n const other = sources.find((e) => e.id === otherId);\n const homeTarget = home?.dimensional.target.name ?? endpointOf(homeId);\n const otherTarget = other?.dimensional.target.name ?? endpointOf(otherId);\n\n const derivedNF = normalForm(proposal.scalarAst);\n const sameTarget = canonical.filter((e) => e.scalarAst && e.dimensional.target.name === proposal.target.name);\n const sameGov = sameTarget.filter((e) => sameGoverning(e.dimensional.governing, proposal.governing));\n const match = sameGov.find((e) => normalForm(e.scalarAst!) === derivedNF);\n\n return {\n premise: `${identification.a} ≡ ${identification.b}`,\n relation: match ? 'known-law' : 'conditional-identity',\n tested: false,\n symbol: {\n name: solvedFor,\n fromEquation: homeId,\n meaning:\n `${solvedFor} is the ${solvedFor} of ${homeId}${home !== undefined ? ` (${home.name})` : ''}: the ${solvedFor} for which ` +\n `${homeTarget} equals ${otherTarget} (${otherId}) — an equal-${identification.dim} scale; ` +\n `the ${otherTarget} side is not given a ${solvedFor}`,\n },\n assumptions: sources.map((e) => ({ equation: e.id, assumptions: [...e.assumptions] })),\n canonicalMatch: {\n id: match?.id ?? null,\n sameTarget: sameTarget.length,\n sameTargetAndGoverning: sameGov.length,\n scope: 'the canonical registry only',\n },\n };\n}\n\n/**\n * Annotate ranked candidates with their consequence signal. Order-preserving,\n * 1:1 with the input; only `promising` candidates are classified (they are the\n * only ones `deriveProposedBridges` processes). A promising candidate with no\n * derived proposal is `inconclusive`. Generic over the input candidate type so\n * it composes with other post-pass annotators (e.g. `annotateAdjudications`)\n * without forgetting fields the caller already attached.\n * @public\n */\nexport function annotateConsequences<T extends VettedCandidate>(\n candidates: readonly T[],\n): readonly (T & {\n readonly consequence?: {\n readonly signal: ConsequenceSignal;\n readonly evidence: readonly ConsequenceEvidence[];\n };\n})[] {\n const promising = candidates.filter((c) => c.verdict === 'promising');\n const proposals = deriveProposedBridges(promising);\n\n // Group proposals + their classification by the sorted candidate-pair key.\n const byPair = new Map<string, { signal: ConsequenceSignal; evidence: ConsequenceEvidence[] }>();\n for (const p of proposals) {\n const key = [p.derivedFrom.identification.a, p.derivedFrom.identification.b].sort().join('~');\n const cls = classifyProposal(p);\n const cur = byPair.get(key);\n if (!cur) {\n byPair.set(key, { signal: cls.signal, evidence: [cls.evidence] });\n } else {\n cur.evidence.push(cls.evidence);\n // entailed dominates novel: if ANY consequence re-derives known physics, the pair is entailed.\n if (cls.signal === 'entailed') cur.signal = 'entailed';\n }\n }\n\n return candidates.map((c) => {\n if (c.verdict !== 'promising') return c;\n const key = [c.a, c.b].sort().join('~');\n const hit = byPair.get(key);\n const signal: ConsequenceSignal = hit ? hit.signal : 'inconclusive';\n return { ...c, consequence: { signal, evidence: hit?.evidence ?? [] } };\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consistency.js","sourceRoot":"","sources":["../../src/composition/consistency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAAa,EACb,CAAa,EACb,MAA8B;IAE9B,OAAO,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"consistency.js","sourceRoot":"","sources":["../../src/composition/consistency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAAa,EACb,CAAa,EACb,MAA8B;IAE9B,OAAO,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["/**\n * Composition graph — shared-source consistency relations (v0.8.0\n * CT-2, per docs/planning/v0.8.0-Design.md §2).\n *\n * `consistencyRatio` is a PARALLEL graph operation, honestly distinct\n * from sequential composition: two edges that share source quantities\n * are evaluated on the same inputs and their quotient taken. When the\n * shared quantities cancel algebraically (as G, M, c do between BE-51\n * lensing and BE-52 perihelion precession), the ratio is a\n * parameter-free consistency relation — varying the shared inputs must\n * leave it invariant.\n *\n * @module composition/consistency\n */\n\nimport type { BridgeEdge } from './edge.js';\nimport { evaluateEdge } from './edge.js';\n\n/**\n * Domain-checked quotient `a(inputs) / b(inputs)` of two edges sharing\n * source quantities. Throws {@link DomainViolationError} if either\n * edge's validity domain rejects the inputs.\n *\n * @public\n */\nexport function consistencyRatio(\n a: BridgeEdge,\n b: BridgeEdge,\n inputs: Record<string, number>,\n): number {\n return evaluateEdge(a, inputs) / evaluateEdge(b, inputs);\n}\n"]}
|
|
@@ -25,7 +25,7 @@ import type { BridgeEdge } from './edge.js';
|
|
|
25
25
|
import type { ExprNode } from '../dimensional/validator.js';
|
|
26
26
|
/** One bridge, joined across the catalog's three id-keyed registries. */
|
|
27
27
|
interface BridgeDescriptor {
|
|
28
|
-
/** Catalog id (
|
|
28
|
+
/** Catalog id (the range is the catalog's; NOTES.md records it). */
|
|
29
29
|
readonly id: number;
|
|
30
30
|
/** Catalog metadata (from `BRIDGE_EQUATIONS`). */
|
|
31
31
|
readonly entry: BridgeEquationEntry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/composition/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,yEAAyE;AACzE,UAAU,gBAAgB;IACxB,
|
|
1
|
+
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../src/composition/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,yEAAyE;AACzE,UAAU,gBAAgB;IACxB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,iFAAiF;IACjF,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;CACvC;AAsBD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAe,CAAC;AAErF;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CASrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../src/composition/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,gBAAgB,EAA4B,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAoBnD,MAAM,WAAW,GAA0C,CAAC,GAAG,EAAE;IAC/D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;YAAE,SAAS;QAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAClB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;YACd,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK;YACL,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,EAAE,CAAC;AAEL;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA0C,WAAW,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,QAAyB;IACjD,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAClB,2CAA2C,EAAE,QAAQ,EAAE,IAAI,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../src/composition/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,gBAAgB,EAA4B,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAoBnD,MAAM,WAAW,GAA0C,CAAC,GAAG,EAAE;IAC/D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;YAAE,SAAS;QAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAClB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE;YACd,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK;YACL,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,EAAE,CAAC;AAEL;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA0C,WAAW,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,QAAyB;IACjD,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAClB,2CAA2C,EAAE,QAAQ,EAAE,IAAI,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC","sourcesContent":["/**\n * Unified per-bridge descriptor — one lookup that JOINS the catalog's three\n * id-keyed registries so a consumer reads a single object instead of\n * cross-referencing three hand-maintained sources:\n *\n * 1. `BRIDGE_EQUATIONS` — catalog metadata (status, refs, signature, …)\n * 2. `BRIDGE_RHS_BY_ID` — faithful right-hand-side AST (where encoded)\n * 3. `CATALOG_GRAPH` — composition-graph edge(s) keyed by `beId`\n *\n * This is a DERIVED facade, not a fourth source of truth: every field still\n * lives in its home registry. The point is anti-drift — the failure mode behind\n * the stale `DATA_CONFRONTED = {23,36}` set and the `6.075e-12` value was the\n * registries silently disagreeing. They are now (a) reachable through one\n * accessor and (b) cross-checked by one guard\n * (`tests/bridges/descriptor-consistency.test.ts`), so a future id that exists\n * in one registry but not another fails loudly instead of drifting.\n *\n * The join lives here, beside `catalog-graph.ts`, because `composition/` owns\n * the graph and already imports `bridges/`. `bridges/` does not import it back.\n *\n * @module composition/descriptor\n */\nimport { BRIDGE_EQUATIONS, type BridgeEquationEntry } from '../bridges/index.js';\nimport { BRIDGE_RHS_BY_ID, parseBridgeId } from '../bridges/rhs-registry.js';\nimport { CATALOG_GRAPH } from './catalog-graph.js';\nimport type { BridgeEdge } from './edge.js';\nimport type { ExprNode } from '../dimensional/validator.js';\n\n/** One bridge, joined across the catalog's three id-keyed registries. */\ninterface BridgeDescriptor {\n /** Catalog id (the range is the catalog's; NOTES.md records it). */\n readonly id: number;\n /** Catalog metadata (from `BRIDGE_EQUATIONS`). */\n readonly entry: BridgeEquationEntry;\n /** Faithful RHS AST (from `BRIDGE_RHS_BY_ID`), or `undefined` if not encoded. */\n readonly rhs: ExprNode | undefined;\n /**\n * Composition-graph edges carrying this `beId` (from `CATALOG_GRAPH`).\n * Usually one; a few bridges have several (e.g. BE-42 + BE-42-via-rs).\n * Empty when the bridge has no graph edge.\n */\n readonly edges: readonly BridgeEdge[];\n}\n\nconst DESCRIPTORS: ReadonlyMap<number, BridgeDescriptor> = (() => {\n const edgesById = new Map<number, BridgeEdge[]>();\n for (const e of CATALOG_GRAPH) {\n if (e.beId === null) continue;\n const list = edgesById.get(e.beId);\n if (list) list.push(e);\n else edgesById.set(e.beId, [e]);\n }\n const m = new Map<number, BridgeDescriptor>();\n for (const entry of BRIDGE_EQUATIONS) {\n m.set(entry.id, {\n id: entry.id,\n entry,\n rhs: BRIDGE_RHS_BY_ID.get(entry.id),\n edges: edgesById.get(entry.id) ?? [],\n });\n }\n return m;\n})();\n\n/**\n * Every bridge descriptor, keyed by catalog id. The single joined view of the\n * three registries.\n *\n * @internal\n */\nexport const BRIDGE_DESCRIPTORS: ReadonlyMap<number, BridgeDescriptor> = DESCRIPTORS;\n\n/**\n * Look up one bridge by id (a number, `'42'`, or `'BE-42'` — case-insensitive).\n * Returns the joined descriptor (metadata + RHS + edges). Throws if the id is\n * unparseable or not catalogued.\n *\n * @internal\n */\nexport function getBridge(bridgeId: number | string): BridgeDescriptor {\n const id = parseBridgeId(bridgeId);\n const d = DESCRIPTORS.get(id);\n if (d === undefined) {\n throw new RangeError(\n `getBridge: no catalogued bridge with id ${id} (BE-${id}).`,\n );\n }\n return d;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimension-adjacency.js","sourceRoot":"","sources":["../../src/composition/dimension-adjacency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAY3D;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAwE,EACxE,aAA6C;IAE7C,MAAM,UAAU,GAAG,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,2BAA2B;QACvF,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC;YAAE,SAAS,CAAC,uCAAuC;QACnF,MAAM,UAAU,GAAG,UAAU;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACf,IAAI,EAAE,CAAC;QACV,IAAI,UAAU,CAAC,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
|
1
|
+
{"version":3,"file":"dimension-adjacency.js","sourceRoot":"","sources":["../../src/composition/dimension-adjacency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAY3D;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAwE,EACxE,aAA6C;IAE7C,MAAM,UAAU,GAAG,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS,CAAC,2BAA2B;QACvF,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC;YAAE,SAAS,CAAC,uCAAuC;QACnF,MAAM,UAAU,GAAG,UAAU;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACf,IAAI,EAAE,CAAC;QACV,IAAI,UAAU,CAAC,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC","sourcesContent":["/**\n * Dimension-adjacency — a review surface for quantities that are absent from a\n * reference vocabulary BY NAME but match a reference quantity BY DIMENSION.\n *\n * Name-based graph linkage misses connections hidden by a name divergence (e.g.\n * the catalog's `thermal-de-broglie-wavelength` vs the canonical L-layer's\n * `thermal-wavelength` — the same physical quantity). This sweep surfaces such\n * candidates so a reviewer can spot true aliases and registry gaps.\n *\n * It is strictly a **review surface, never an auto-merge**: same dimension does\n * NOT imply same quantity (`effective-mass` ≠ `mass`, every dimensionless\n * coupling shares `[dimensionless]`), so dimensionless quantities are excluded\n * and the output is for human adjudication only.\n *\n * @module composition/dimension-adjacency\n */\n\nimport type { Dimension } from '../dimensional/types.js';\nimport { DIMENSIONLESS } from '../dimensional/types.js';\nimport { equals, format } from '../dimensional/algebra.js';\n\n/** A name-divergent quantity and the reference quantities it dimension-matches. */\nexport interface DimensionAdjacency {\n /** The quantity name (absent from the reference vocabulary). */\n readonly name: string;\n /** Its formatted dimension. */\n readonly dim: string;\n /** Reference quantities of the SAME dimension — candidates for review. */\n readonly candidates: readonly string[];\n}\n\n/**\n * For every distinct quantity whose `name` is absent from `referenceDims` but\n * whose `dim` matches ≥1 reference quantity (dimensionless excluded), list the\n * same-dimension reference candidates. Sorted by quantity name; candidates\n * sorted. A review surface — same dimension ≠ same quantity.\n *\n * @public\n */\nexport function dimensionAdjacency(\n quantities: Iterable<{ readonly name: string; readonly dim: Dimension }>,\n referenceDims: ReadonlyMap<string, Dimension>,\n): DimensionAdjacency[] {\n const refEntries = [...referenceDims.entries()];\n const out = new Map<string, DimensionAdjacency>();\n for (const q of quantities) {\n if (out.has(q.name) || referenceDims.has(q.name)) continue; // dedupe + name-match skip\n if (equals(q.dim, DIMENSIONLESS)) continue; // too generic to be a useful candidate\n const candidates = refEntries\n .filter(([, d]) => equals(d, q.dim))\n .map(([n]) => n)\n .sort();\n if (candidates.length) out.set(q.name, { name: q.name, dim: format(q.dim), candidates });\n }\n return [...out.values()].sort((a, b) => a.name.localeCompare(b.name));\n}\n"]}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* (Direction 2).
|
|
4
4
|
*
|
|
5
5
|
* `proposeLinkCandidates` surfaces cross-cluster quantity pairs that share a
|
|
6
|
-
* dimension
|
|
6
|
+
* dimension and hands the raw coincidences to a human (the counts at a given
|
|
7
|
+
* catalog are measured by the tests and recorded in NOTES.md). This
|
|
7
8
|
* module closes the loop: it HYPOTHESIZES each candidate identification
|
|
8
9
|
* `a ≡ b` and tests it with the machinery that already exists —
|
|
9
10
|
*
|
|
@@ -61,13 +62,16 @@ export interface VettedCandidate {
|
|
|
61
62
|
*/
|
|
62
63
|
readonly unlocksFromAnchor: readonly string[];
|
|
63
64
|
/**
|
|
64
|
-
* Retrodiction over the graph WITH the hypothesized identification
|
|
65
|
-
*
|
|
66
|
-
*
|
|
65
|
+
* Retrodiction over the graph WITH the hypothesized identification creates
|
|
66
|
+
* no numerical contradiction in the anchor-reachable subgraph. The strong
|
|
67
|
+
* filter. A node whose routes already disagree in the base graph is the
|
|
68
|
+
* graph's finding (`retrodict` reports it) and does not make a candidate
|
|
69
|
+
* inconsistent; only a disagreement the hypothesis CREATES does.
|
|
67
70
|
*/
|
|
68
71
|
readonly numericallyConsistent: boolean;
|
|
69
|
-
/** Nodes that became inconsistent under the identification
|
|
70
|
-
*
|
|
72
|
+
/** Nodes that became inconsistent under the identification and were not
|
|
73
|
+
* inconsistent in the base graph (the falsification, when
|
|
74
|
+
* `numericallyConsistent` is false). Sorted. */
|
|
71
75
|
readonly inconsistentNodes: readonly string[];
|
|
72
76
|
/**
|
|
73
77
|
* Orders of magnitude between the representative values of a and b
|
|
@@ -171,7 +175,7 @@ export interface DiscoveryOptions {
|
|
|
171
175
|
readonly identifications?: readonly QuantityIdentification[];
|
|
172
176
|
/**
|
|
173
177
|
* Max orders of magnitude two identified quantities may differ before the
|
|
174
|
-
* identification is falsified as a `magnitude-clash`. Default
|
|
178
|
+
* identification is falsified as a `magnitude-clash`. Default {@link DEFAULT_MAX_ORDERS_OF_MAGNITUDE} — generous
|
|
175
179
|
* enough for O(1) dimensionless prefactors and unit-convention slack, strict
|
|
176
180
|
* enough to kill the scale-clash decoys.
|
|
177
181
|
*/
|
|
@@ -196,6 +200,53 @@ export interface DiscoveryOptions {
|
|
|
196
200
|
* @internal
|
|
197
201
|
*/
|
|
198
202
|
export declare const ANCHOR_DEFAULT: Readonly<Record<string, number>>;
|
|
203
|
+
/**
|
|
204
|
+
* The magnitude-clash threshold when the caller gives none: how many orders of magnitude two
|
|
205
|
+
* identified quantities may differ. Exported so the CLI states the default it runs with.
|
|
206
|
+
* @internal
|
|
207
|
+
*/
|
|
208
|
+
export declare const DEFAULT_MAX_ORDERS_OF_MAGNITUDE = 3;
|
|
209
|
+
/**
|
|
210
|
+
* Candidate-invariant state for the discovery funnel — everything in
|
|
211
|
+
* `vetLinkCandidate` that depends only on `(edges, opts)`, not on the specific
|
|
212
|
+
* candidate. Computed once by `buildDiscoveryContext` and shared across every
|
|
213
|
+
* candidate so `rankDiscoveries` does loop-invariant work once instead of N
|
|
214
|
+
* times. Holds read-only structures — `vetInContext` never mutates them, so
|
|
215
|
+
* sharing is safe. `tests/composition/discovery.test.ts` pins that directly:
|
|
216
|
+
* two builds are equal, and vetting every candidate leaves the context equal
|
|
217
|
+
* to a snapshot taken before.
|
|
218
|
+
*
|
|
219
|
+
* @internal
|
|
220
|
+
*/
|
|
221
|
+
export interface DiscoveryContext {
|
|
222
|
+
readonly baseIdents: readonly QuantityIdentification[];
|
|
223
|
+
readonly groundTruth: Readonly<Record<string, number>>;
|
|
224
|
+
/** `Object.keys(groundTruth)` — the anchor known-set names. */
|
|
225
|
+
readonly anchor: readonly string[];
|
|
226
|
+
readonly repVals: Readonly<Record<string, RepresentativeValue>>;
|
|
227
|
+
readonly maxOrders: number;
|
|
228
|
+
/** Registry-only attribute lookup for the D1 axis gate (opts override or
|
|
229
|
+
* `REGISTRY_ATTRIBUTES_BY_NAME`). */
|
|
230
|
+
readonly attributesByName: ReadonlyMap<string, RegimeAttributes>;
|
|
231
|
+
/** `forwardEvaluate(edges, groundTruth, baseIdents)` — anchor magnitudes. */
|
|
232
|
+
readonly anchorValues: ReadonlyMap<string, number>;
|
|
233
|
+
/** The same evaluation with every anchor input times {@link ANCHOR_PROBE_FACTOR}. */
|
|
234
|
+
readonly anchorValuesProbe: ReadonlyMap<string, number>;
|
|
235
|
+
/** `quantityComponents(edges, baseIdents)` — base component roots. */
|
|
236
|
+
readonly comps: ReadonlyMap<string, string>;
|
|
237
|
+
/** `forwardClosure(edges, anchor, baseIdents)` — base determinable set. */
|
|
238
|
+
readonly closureBase: ReadonlySet<string>;
|
|
239
|
+
/**
|
|
240
|
+
* The targets the retrodiction of the anchor finds inconsistent with no
|
|
241
|
+
* hypothesized identification (empty when the base is consistent). An
|
|
242
|
+
* identification of two quantities outside {@link closureBase} cannot fire,
|
|
243
|
+
* so that candidate's numeric report is this one.
|
|
244
|
+
*/
|
|
245
|
+
readonly baseInconsistentNodes: readonly string[];
|
|
246
|
+
}
|
|
247
|
+
/** Resolve options and compute the candidate-invariant discovery state once.
|
|
248
|
+
* @internal */
|
|
249
|
+
export declare function buildDiscoveryContext(edges: readonly BridgeEdge[], opts: DiscoveryOptions): DiscoveryContext;
|
|
199
250
|
/**
|
|
200
251
|
* Vet one link candidate by hypothesizing the identification a≡b and
|
|
201
252
|
* measuring its structural and numerical consequences. See module docs.
|
|
@@ -203,6 +254,15 @@ export declare const ANCHOR_DEFAULT: Readonly<Record<string, number>>;
|
|
|
203
254
|
* @internal
|
|
204
255
|
*/
|
|
205
256
|
export declare function vetLinkCandidate(edges: readonly BridgeEdge[], candidate: LinkCandidate, opts?: DiscoveryOptions): VettedCandidate;
|
|
257
|
+
/**
|
|
258
|
+
* The per-candidate vetting body, given pre-computed candidate-invariant
|
|
259
|
+
* `ctx`. The hypothesis-augmented closure is per-candidate. Retrodiction is
|
|
260
|
+
* per-candidate only when an endpoint is already in the anchor closure;
|
|
261
|
+
* otherwise the identification cannot fire and the base report stands.
|
|
262
|
+
*
|
|
263
|
+
* @internal
|
|
264
|
+
*/
|
|
265
|
+
export declare function vetInContext(edges: readonly BridgeEdge[], candidate: LinkCandidate, ctx: DiscoveryContext): VettedCandidate;
|
|
206
266
|
/**
|
|
207
267
|
* Run the full discovery funnel: propose cross-cluster candidates, vet each
|
|
208
268
|
* against the inference suite, and rank — `promising` first, then by score.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/composition/discovery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/composition/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* (Direction 2).
|
|
4
4
|
*
|
|
5
5
|
* `proposeLinkCandidates` surfaces cross-cluster quantity pairs that share a
|
|
6
|
-
* dimension
|
|
6
|
+
* dimension and hands the raw coincidences to a human (the counts at a given
|
|
7
|
+
* catalog are measured by the tests and recorded in NOTES.md). This
|
|
7
8
|
* module closes the loop: it HYPOTHESIZES each candidate identification
|
|
8
9
|
* `a ≡ b` and tests it with the machinery that already exists —
|
|
9
10
|
*
|
|
@@ -34,8 +35,8 @@
|
|
|
34
35
|
*/
|
|
35
36
|
import { QUANTITY_IDENTIFICATIONS, effectiveAttributes } from './compose.js';
|
|
36
37
|
import { GATE_AXES } from './axes.js';
|
|
37
|
-
import { forwardClosure } from './identifiability.js';
|
|
38
|
-
import { retrodict, forwardEvaluate } from './retrodiction.js';
|
|
38
|
+
import { classifyIdentifiability, forwardClosure } from './identifiability.js';
|
|
39
|
+
import { retrodict, retrodictNode, forwardEvaluate } from './retrodiction.js';
|
|
39
40
|
import { proposeLinkCandidates } from './bridge-analysis.js';
|
|
40
41
|
import { M_SUN_KG } from '../core/constants.js';
|
|
41
42
|
import { REPRESENTATIVE_VALUES } from './representative-values.js';
|
|
@@ -118,6 +119,12 @@ function quantityComponents(edges, idents) {
|
|
|
118
119
|
* @internal
|
|
119
120
|
*/
|
|
120
121
|
export const ANCHOR_DEFAULT = { mass: M_SUN_KG };
|
|
122
|
+
/**
|
|
123
|
+
* The magnitude-clash threshold when the caller gives none: how many orders of magnitude two
|
|
124
|
+
* identified quantities may differ. Exported so the CLI states the default it runs with.
|
|
125
|
+
* @internal
|
|
126
|
+
*/
|
|
127
|
+
export const DEFAULT_MAX_ORDERS_OF_MAGNITUDE = 3;
|
|
121
128
|
/**
|
|
122
129
|
* Factor every anchor input is multiplied by to probe whether a magnitude ratio
|
|
123
130
|
* depends on the anchor at all (persona finding L3). Three decades moves any
|
|
@@ -149,7 +156,7 @@ function nameSubsumes(a, b) {
|
|
|
149
156
|
}
|
|
150
157
|
/** Resolve options and compute the candidate-invariant discovery state once.
|
|
151
158
|
* @internal */
|
|
152
|
-
function buildDiscoveryContext(edges, opts) {
|
|
159
|
+
export function buildDiscoveryContext(edges, opts) {
|
|
153
160
|
const baseIdents = opts.identifications ?? QUANTITY_IDENTIFICATIONS;
|
|
154
161
|
const groundTruth = opts.groundTruth ?? ANCHOR_DEFAULT;
|
|
155
162
|
const anchor = Object.keys(groundTruth);
|
|
@@ -159,7 +166,7 @@ function buildDiscoveryContext(edges, opts) {
|
|
|
159
166
|
groundTruth,
|
|
160
167
|
anchor,
|
|
161
168
|
repVals: opts.representativeValues ?? REPRESENTATIVE_VALUES,
|
|
162
|
-
maxOrders: opts.maxOrdersOfMagnitude ??
|
|
169
|
+
maxOrders: opts.maxOrdersOfMagnitude ?? DEFAULT_MAX_ORDERS_OF_MAGNITUDE,
|
|
163
170
|
attributesByName: opts.quantityAttributes ?? REGISTRY_ATTRIBUTES_BY_NAME,
|
|
164
171
|
// Candidate-invariant: the anchor's forward evaluation, the base component
|
|
165
172
|
// partition, and the base forward closure all depend only on (edges, opts).
|
|
@@ -167,13 +174,63 @@ function buildDiscoveryContext(edges, opts) {
|
|
|
167
174
|
anchorValuesProbe: forwardEvaluate(edges, Object.fromEntries(Object.entries(groundTruth).map(([k, v]) => [k, v * ANCHOR_PROBE_FACTOR])), baseIdents),
|
|
168
175
|
comps: quantityComponents(edges, baseIdents),
|
|
169
176
|
closureBase: forwardClosure(edges, anchor, baseIdents),
|
|
170
|
-
baseNumericallyConsistent: baseReport.allConsistent,
|
|
171
177
|
baseInconsistentNodes: baseReport.results
|
|
172
178
|
.filter((r) => r.outcome === 'inconsistent')
|
|
173
179
|
.map((r) => r.target)
|
|
174
180
|
.sort(),
|
|
175
181
|
};
|
|
176
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* The quantities whose value can depend on one of `seeds`: the seeds, every
|
|
185
|
+
* `to` of an identification from the set, and every target of an edge with a
|
|
186
|
+
* source in the set, to a fixed point. An over-approximation (an edge that
|
|
187
|
+
* does not fire still lists its target), which is the safe side: a target
|
|
188
|
+
* left out would keep its base retrodiction unexamined.
|
|
189
|
+
*/
|
|
190
|
+
function dependents(edges, seeds, idents) {
|
|
191
|
+
const set = new Set(seeds);
|
|
192
|
+
let changed = true;
|
|
193
|
+
while (changed) {
|
|
194
|
+
changed = false;
|
|
195
|
+
for (const id of idents) {
|
|
196
|
+
if (set.has(id.from) && !set.has(id.to)) {
|
|
197
|
+
set.add(id.to);
|
|
198
|
+
changed = true;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
for (const e of edges) {
|
|
202
|
+
if (set.has(e.target.name))
|
|
203
|
+
continue;
|
|
204
|
+
if (e.sources.some((s) => set.has(s.name))) {
|
|
205
|
+
set.add(e.target.name);
|
|
206
|
+
changed = true;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return set;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* The nodes the hypothesis `a ≡ b` makes inconsistent that the base graph did
|
|
214
|
+
* not already have: inconsistent(hypothesis) minus inconsistent(base). Only a
|
|
215
|
+
* node downstream of `a` or `b` can change, so only those nodes are
|
|
216
|
+
* classified and retrodicted, with the same over-determined rule and the
|
|
217
|
+
* same tolerance `retrodict` applies to the whole graph. Sorted.
|
|
218
|
+
*/
|
|
219
|
+
function newInconsistencies(edges, groundTruth, anchor, candidate, withHyp, baseInconsistentNodes) {
|
|
220
|
+
const base = new Set(baseInconsistentNodes);
|
|
221
|
+
const nodes = [];
|
|
222
|
+
for (const target of [...dependents(edges, [candidate.a, candidate.b], withHyp)].sort()) {
|
|
223
|
+
if (base.has(target))
|
|
224
|
+
continue;
|
|
225
|
+
const classified = classifyIdentifiability(edges, anchor, target, { identifications: withHyp });
|
|
226
|
+
if (classified.verdict !== 'over-determined')
|
|
227
|
+
continue;
|
|
228
|
+
const result = retrodictNode(edges, groundTruth, target, { identifications: withHyp });
|
|
229
|
+
if (result.outcome === 'inconsistent')
|
|
230
|
+
nodes.push(target);
|
|
231
|
+
}
|
|
232
|
+
return nodes;
|
|
233
|
+
}
|
|
177
234
|
/**
|
|
178
235
|
* Vet one link candidate by hypothesizing the identification a≡b and
|
|
179
236
|
* measuring its structural and numerical consequences. See module docs.
|
|
@@ -191,8 +248,8 @@ export function vetLinkCandidate(edges, candidate, opts = {}) {
|
|
|
191
248
|
*
|
|
192
249
|
* @internal
|
|
193
250
|
*/
|
|
194
|
-
function vetInContext(edges, candidate, ctx) {
|
|
195
|
-
const { baseIdents, groundTruth, anchor, repVals, maxOrders, anchorValues, anchorValuesProbe, comps, closureBase, attributesByName,
|
|
251
|
+
export function vetInContext(edges, candidate, ctx) {
|
|
252
|
+
const { baseIdents, groundTruth, anchor, repVals, maxOrders, anchorValues, anchorValuesProbe, comps, closureBase, attributesByName, baseInconsistentNodes, } = ctx;
|
|
196
253
|
// Magnitude gate: an INDEPENDENT falsifier the single-anchor graph can't make.
|
|
197
254
|
// Only fires when both endpoints have a representative value; abstains (and
|
|
198
255
|
// never false-rejects) otherwise. A value comes from the sourced static table
|
|
@@ -288,26 +345,29 @@ function vetInContext(edges, candidate, ctx) {
|
|
|
288
345
|
const mergesComponents = comps.has(candidate.a) &&
|
|
289
346
|
comps.has(candidate.b) &&
|
|
290
347
|
comps.get(candidate.a) !== comps.get(candidate.b);
|
|
348
|
+
// Neither endpoint in the anchor closure means the identification cannot
|
|
349
|
+
// fire: `forwardClosure` copies a value across `a ≡ b` only from a
|
|
350
|
+
// determinable side. The hypothesis closure is then the base closure, and no
|
|
351
|
+
// value in the graph moves, so neither closure nor retrodiction is recomputed
|
|
352
|
+
// (9.0.0 audit §4 C9: 4004 of 4196 catalog candidates are this case).
|
|
353
|
+
const touchesClosure = closureBase.has(candidate.a) || closureBase.has(candidate.b);
|
|
291
354
|
// Closure unlock: forward closure from the anchor, with vs without. The base
|
|
292
355
|
// closure is candidate-invariant (ctx); only the hypothesis closure is fresh.
|
|
293
|
-
const closureHyp = forwardClosure(edges, anchor, withHyp);
|
|
356
|
+
const closureHyp = touchesClosure ? forwardClosure(edges, anchor, withHyp) : closureBase;
|
|
294
357
|
const unlocksFromAnchor = [...closureHyp]
|
|
295
358
|
.filter((q) => !closureBase.has(q))
|
|
296
359
|
.sort();
|
|
297
|
-
// Numeric:
|
|
298
|
-
//
|
|
299
|
-
//
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
.filter((r) => r.outcome === 'inconsistent')
|
|
309
|
-
.map((r) => r.target)
|
|
310
|
-
.sort();
|
|
360
|
+
// Numeric: the hypothesis must not CREATE a disagreement. A node whose
|
|
361
|
+
// routes already disagree in the base graph is the graph's finding
|
|
362
|
+
// (`retrodict` reports it), not this candidate's, so the attribution is
|
|
363
|
+
// inconsistent(hypothesis) minus inconsistent(base) (9.0.0 audit §4 C4).
|
|
364
|
+
// Only a target downstream of `a` or `b` can change under the hypothesis;
|
|
365
|
+
// every other target's retrodiction is the base one, so only those targets
|
|
366
|
+
// are retrodicted (§4 C9).
|
|
367
|
+
const inconsistentNodes = touchesClosure
|
|
368
|
+
? newInconsistencies(edges, groundTruth, anchor, candidate, withHyp, baseInconsistentNodes)
|
|
369
|
+
: [];
|
|
370
|
+
const numericallyConsistent = inconsistentNodes.length === 0;
|
|
311
371
|
// Verdict precedence: a magnitude clash is the most decisive, most
|
|
312
372
|
// interpretable falsification, checked before the graph contradiction;
|
|
313
373
|
// the regime-label prior (axis-clash) is weaker than both numeric
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/composition/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,8EAA8E;AAC9E,oEAAoE;AACpE,oEAAoE;AACpE,4EAA4E;AAC5E,2EAA2E;AAC3E,0CAA0C;AAC1C;4DAC4D;AAC5D,MAAM,CAAC,MAAM,2BAA2B,GAA0C,IAAI,GAAG,CACvF,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CACxE,CAAC;AAEF,gFAAgF;AAChF,iFAAiF;AACjF,gEAAgE;AAChE,kFAAkF;AAClF,2EAA2E;AAE3E,+EAA+E;AAC/E,sEAAsE;AACtE,2EAA2E;AAC3E,yEAAyE;AACzE,iFAAiF;AACjF,MAAM,sBAAsB,GAA2C,CAAC,GAAG,EAAE;IAC3E,MAAM,CAAC,GAAG,IAAI,GAAG,EAAuB,CAAC;IACzC,KAAK,MAAM,EAAE,IAAI,mBAAmB,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,wBAAwB,GAAwB,CAAC,GAAG,EAAE;IAC1D,MAAM,CAAC,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5B,KAAK,MAAM,EAAE,IAAI,mBAAmB,EAAE,CAAC;QACrC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,EAAE,CAAC;AAuJL;+DAC+D;AAC/D,SAAS,kBAAkB,CACzB,KAA4B,EAC5B,MAAyC;IAEzC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;QAC/C,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACnB,GAAG,GAAG,IAAI,CAAC;QACb,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QACrC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,MAAM;QAAE,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAqC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,mFAAmF;AACnF,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,CAAS,EAAE,CAAS;IACxC,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAuCD;gBACgB;AAChB,SAAS,qBAAqB,CAC5B,KAA4B,EAC5B,IAAsB;IAEtB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,IAAI,wBAAwB,CAAC;IACpE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,cAAc,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC;IAClF,OAAO;QACL,UAAU;QACV,WAAW;QACX,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,oBAAoB,IAAI,qBAAqB;QAC3D,SAAS,EAAE,IAAI,CAAC,oBAAoB,IAAI,CAAC;QACzC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,IAAI,2BAA2B;QACxE,2EAA2E;QAC3E,4EAA4E;QAC5E,YAAY,EAAE,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC;QAC7D,iBAAiB,EAAE,eAAe,CAChC,KAAK,EACL,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAC1E,EACD,UAAU,CACX;QACD,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC;QAC5C,WAAW,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC;QACtD,yBAAyB,EAAE,UAAU,CAAC,aAAa;QACnD,qBAAqB,EAAE,UAAU,CAAC,OAAO;aACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aACpB,IAAI,EAAE;KACV,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAA4B,EAC5B,SAAwB,EACxB,IAAI,GAAqB,EAAE;IAE3B,OAAO,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CACnB,KAA4B,EAC5B,SAAwB,EACxB,GAAqB;IAErB,MAAM,EACJ,UAAU,EACV,WAAW,EACX,MAAM,EACN,OAAO,EACP,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,GACtB,GAAG,GAAG,CAAC;IAER,+EAA+E;IAC/E,4EAA4E;IAC5E,8EAA8E;IAC9E,uEAAuE;IACvE,8EAA8E;IAC9E,8EAA8E;IAC9E,MAAM,WAAW,GAAG,CAClB,IAAY,EACwC,EAAE;QACtD,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,yEAAyE;QACzE,2EAA2E;QAC3E,2EAA2E;QAC3E,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC;YACjE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;gBACvC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,gBAAgB,GAAG,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,CAAC;IAC9D,MAAM,mBAAmB,GACvB,gBAAgB,IAAI,CAAC,EAAG,CAAC,UAAU,IAAI,EAAG,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,gBAAgB;QAClC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,cAAc,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,GAAG,SAAS,CAAC;IAEvE,wEAAwE;IACxE,kEAAkE;IAClE,MAAM,OAAO,GAAG,CACd,IAAY,EACZ,CAAyC,EACrB,EAAE;QACtB,IAAI,CAAC,CAAC,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC;QAClC,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC,CAAC;IACF,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAG,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAG,CAAC,CAAC;QACrC,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/G,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,qBAAqB,CAAC;QACxF,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAEzD,yEAAyE;IACzE,sEAAsE;IACtE,2DAA2D;IAC3D,kEAAkE;IAClE,mEAAmE;IACnE,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,YAAY,GAA4C,EAAE,CAAC;IACjE,0EAA0E;IAC1E,iFAAiF;IACjF,MAAM,IAAI,GAAG,MAA4C,CAAC;IAC1D,MAAM,IAAI,GAAG,MAA4C,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACzC,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI;gBACJ,SAAS,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAC9F,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAC/B;aACF,CAAC,CAAC;YACH,SAAS,CAAC,UAAU;QACtB,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,EAAE,KAAK,EAAE;YAAE,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,WAAW,CAAC,IAAI,EAAE,CAAC;IACnB,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAEzC,wEAAwE;IACxE,8DAA8D;IAC9D,MAAM,SAAS,GAAG,+BAA+B,SAAS,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,qBAAqB,SAAS,CAAC,GAAG,EAAE,CAAC;IAClH,MAAM,UAAU,GAA6B;QAC3C,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE;QACjD,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE;KAClD,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC,CAAC;IAE/C,uEAAuE;IACvE,MAAM,gBAAgB,GACpB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACtB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACtB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEpD,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,iBAAiB,GAAG,CAAC,GAAG,UAAU,CAAC;SACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClC,IAAI,EAAE,CAAC;IAEV,uEAAuE;IACvE,yEAAyE;IACzE,6EAA6E;IAC7E,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,cAAc;QAC3B,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;QAC7D,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,qBAAqB,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;IACtG,MAAM,iBAAiB,GACrB,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;QAC5B,CAAC,CAAC,MAAM,CAAC,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC;aAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aACpB,IAAI,EAAE,CAAC;IAEhB,mEAAmE;IACnE,uEAAuE;IACvE,kEAAkE;IAClE,6EAA6E;IAC7E,IAAI,OAAmC,CAAC;IACxC,IAAI,cAAc;QAAE,OAAO,GAAG,iBAAiB,CAAC;SAC3C,IAAI,CAAC,qBAAqB;QAAE,OAAO,GAAG,eAAe,CAAC;SACtD,IAAI,SAAS;QAAE,OAAO,GAAG,YAAY,CAAC;SACtC,IAAI,gBAAgB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS;QACrE,OAAO,GAAG,WAAW,CAAC;;QACnB,OAAO,GAAG,OAAO,CAAC;IAEvB,2EAA2E;IAC3E,2EAA2E;IAC3E,2CAA2C;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,cAAc,IAAI,CAAC,qBAAqB,IAAI,SAAS,EAAE,CAAC;QAC1D,KAAK,GAAG,CAAC,CAAC,CAAC;IACb,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,KAAK,GAAG,CAAC,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/C,KAAK,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,KAAK,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,gBAAgB,GACpB,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACzC,wBAAwB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE5C,OAAO;QACL,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,gBAAgB;QAChB,iBAAiB;QACjB,qBAAqB;QACrB,iBAAiB;QACjB,WAAW;QACX,gBAAgB;QAChB,mBAAmB;QACnB,wBAAwB;QACxB,gBAAgB,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CACrG,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAC/B;QACD,YAAY;QACZ,SAAS;QACT,OAAO;QACP,KAAK;QACL,WAAW;QACX,WAAW;QACX,cAAc;QACd,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,KAA4B,EAC5B,IAAI,GAAqB,EAAE;IAE3B,MAAM,YAAY,GAA+C;QAC/D,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,CAAC;QACR,iBAAiB,EAAE,CAAC;QACpB,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;KAChB,CAAC;IACF,MAAM,GAAG,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,CACT,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;QACjD,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;QACjB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CACzB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/composition/discovery.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Discovery loop — vet link candidates through the verification primitives\n * (Direction 2).\n *\n * `proposeLinkCandidates` surfaces cross-cluster quantity pairs that share a\n * dimension and hands the raw coincidences to a human (the counts at a given\n * catalog are measured by the tests and recorded in NOTES.md). This\n * module closes the loop: it HYPOTHESIZES each candidate identification\n * `a ≡ b` and tests it with the machinery that already exists —\n *\n * - mergesComponents — does identifying a≡b connect two previously\n * disconnected parts of the graph? (structural\n * significance)\n * - unlocksFromAnchor — what becomes determinable from an anchor input\n * set WITH the identification that was not before?\n * (`forwardClosure`)\n * - numericallyConsistent — does retrodiction over the graph stay\n * all-consistent once the identification is\n * added, or does it introduce a contradiction?\n * (`retrodict` — the STRONG filter)\n *\n * so the physicist adjudicates a handful of VETTED, provenance-traced\n * candidates instead of dimensional noise.\n *\n * ⚠ Still a REVIEW SURFACE, never automated discovery (Part-VI §XXVII-B). A\n * shared dimension is a weak prior; the weight is on the numeric and\n * structural signals, and the numeric check only exercises the part of the\n * graph reachable from the anchor. `promising` means \"worth a physicist's\n * minute\", not \"true\".\n *\n * INTERNAL — not on the public surface (mirrors bridge-analysis.ts);\n * surfaced via `upt discover`.\n *\n * @module composition/discovery\n */\n\nimport type { BridgeEdge } from './edge.js';\nimport type { QuantityIdentification } from './compose.js';\nimport { QUANTITY_IDENTIFICATIONS, effectiveAttributes } from './compose.js';\nimport { GATE_AXES } from './axes.js';\nimport type { RegimeAttributes } from './quantity.js';\nimport { classifyIdentifiability, forwardClosure } from './identifiability.js';\nimport { retrodict, retrodictNode, forwardEvaluate } from './retrodiction.js';\nimport { proposeLinkCandidates } from './bridge-analysis.js';\nimport type { LinkCandidate } from './bridge-analysis.js';\nimport { M_SUN_KG } from '../core/constants.js';\nimport { REPRESENTATIVE_VALUES } from './representative-values.js';\nimport type { RepresentativeValue } from './representative-values.js';\nimport { conventionScaleToSI } from '../dimensional/unit-convention.js';\nimport { allQuantities } from './quantities.js';\nimport { CANONICAL_EQUATIONS } from '../canonical/registry.js';\nimport { format } from '../dimensional/algebra.js';\n\n// ── registry-only attribute lookup (D1 axis gate; Option-A resolution) ─────\n// Built from the centralized `Quantity` nodes ONLY (never canonical\n// per-equation stamps — audit adjudication F1). Names that aren't a\n// registry node (most bare canonical-equation variables) are simply absent,\n// so they always abstain — the canonical-only axis-clash=0 invariant holds\n// by construction, not by a special case.\n/** The canonical quantity→attributes map (registry nodes + per-equation stamps).\n * Exported for the axis-discrimination audit. @internal */\nexport const REGISTRY_ATTRIBUTES_BY_NAME: ReadonlyMap<string, RegimeAttributes> = new Map(\n allQuantities().map((quantity) => [quantity.name, quantity.attributes]),\n);\n\n// The axes the D1 regime-label gate compares are `GATE_AXES`, imported from the\n// `axes.ts` registry (`AXES.filter(gated)`) at the top of this module. Currently\n// scale + force; the 2026-07-05 extensible-axis expansion added\n// symmetry/topology/statistics as UNGATED attributes (they only abstain until the\n// discrimination audit earns them a gate — flip `gated: true` in axes.ts).\n\n// ── canonical-kind indexes (Sub-project C) ──────────────────────────────────\n// Discovery quantity names and canonical variable names are different\n// namespaces; the alignable axis is the DIMENSION. These are informational\n// annotations on each candidate (no verdict/score effect): they give the\n// physicist standard-physics context, not a hard filter (the registry is small).\nconst CANONICAL_KINDS_BY_DIM: ReadonlyMap<string, readonly string[]> = (() => {\n const m = new Map<string, Set<string>>();\n for (const ce of CANONICAL_EQUATIONS) {\n const key = format(ce.dimensional.target.dim);\n (m.get(key) ?? m.set(key, new Set()).get(key)!).add(ce.domain);\n }\n return new Map([...m].map(([k, v]) => [k, [...v].sort()]));\n})();\n\nconst CANONICAL_QUANTITY_NAMES: ReadonlySet<string> = (() => {\n const s = new Set<string>();\n for (const ce of CANONICAL_EQUATIONS) {\n s.add(ce.dimensional.target.name);\n for (const g of ce.dimensional.governing) s.add(g.name);\n }\n return s;\n})();\n\n/** A candidate after vetting against the inference suite. @hypothesis @public */\nexport interface VettedCandidate {\n readonly a: string;\n readonly b: string;\n /** Shared SI dimension (from the proposer). */\n readonly dim: string;\n /** One endpoint is in the anchored (established) cluster. */\n readonly touchesCore: boolean;\n /** The names share a word token (same physical KIND). */\n readonly sameKind: boolean;\n /**\n * Identifying a≡b merges two distinct connected components of the\n * quantity graph — it connects physics the catalog keeps separate.\n */\n readonly mergesComponents: boolean;\n /**\n * Quantities newly determinable from the anchor known-set once the\n * identification is added (structural unlock). Sorted.\n */\n readonly unlocksFromAnchor: readonly string[];\n /**\n * Retrodiction over the graph WITH the hypothesized identification creates\n * no numerical contradiction in the anchor-reachable subgraph. The strong\n * filter. A node whose routes already disagree in the base graph is the\n * graph's finding (`retrodict` reports it) and does not make a candidate\n * inconsistent; only a disagreement the hypothesis CREATES does.\n */\n readonly numericallyConsistent: boolean;\n /** Nodes that became inconsistent under the identification and were not\n * inconsistent in the base graph (the falsification, when\n * `numericallyConsistent` is false). Sorted. */\n readonly inconsistentNodes: readonly string[];\n /**\n * Orders of magnitude between the representative values of a and b\n * (`|log10|va| − log10|vb||`), or `null` when either has no representative\n * value (the gate abstained — see `magnitudeChecked`).\n */\n readonly ordersApart: number | null;\n /** Both endpoints had a representative value, so the magnitude gate ran. */\n readonly magnitudeChecked: boolean;\n /** The magnitude gate read at least one endpoint value from the graph at\n * the anchor (no static table entry) rather than the sourced table. */\n readonly magnitudeUsedAnchor: boolean;\n /**\n * The magnitude comparison used an anchor-derived value, and the ratio of the\n * two magnitudes does NOT move when every anchor input is rescaled by\n * {@link ANCHOR_PROBE_FACTOR}. The graph then fixes the ratio at every\n * anchor, so agreement in magnitude is an identity of the graph and not\n * evidence for the identification. The case that exposed it: the anchor sets\n * the temperature to the Hawking temperature of the anchor mass M, and then\n * the thermal wavelength is exactly 4π ℓ_P for EVERY M. Its anchor-derived\n * magnitude is not a representative magnitude of the quantity at all.\n * A quantity whose value really is a constant belongs in the\n * representative-value table, where it is not anchor-derived.\n * A clash stays a clash (the graph itself fixes the two apart); only a pass is\n * withheld, in `describeGrounding`. Optional on the type so hand-built\n * candidates need not state it; the funnel always sets it.\n */\n readonly magnitudeAnchorInvariant?: boolean;\n /**\n * The endpoints with no representative magnitude (neither in the sourced\n * table nor valued at the anchor) — why the magnitude gate abstained. Empty\n * when it ran. Optional on the type; the funnel always sets it.\n */\n readonly magnitudeMissing?: readonly string[];\n /**\n * Per gate axis that abstained, the endpoints that state no value on it —\n * why the axis gate had nothing to compare. Optional; the funnel always sets it.\n */\n readonly axisUnstated?: readonly { readonly axis: string; readonly endpoints: readonly string[] }[];\n /**\n * One endpoint name's hyphen-token set is a strict subset of the other's\n * (`mass` ⊂ `reference-mass`) — a generic↔specific identification of the\n * same KIND. Near-tautological (identifying a generic quantity with one of\n * its own specializations), so it is barred from `promising`.\n */\n readonly subsuming: boolean;\n /**\n * - `magnitude-clash` — representative values differ by more than the\n * threshold N orders (an independent falsification the\n * single-anchor graph cannot make). Checked first.\n * - `contradictory` — breaks numerical consistency (a graph falsification).\n * - `axis-clash` — the identification's stated `scale`/`force` regime\n * attributes disagree. A regime-LABEL prior against a\n * literal identity (D1), not a physical test: it\n * compares catalog labels and runs no computation, so\n * it is never counted or described as a falsification.\n * - `promising` — consistent AND connects disconnected physics AND\n * unlocks ≥1 quantity. Worth physicist review.\n * - `inert` — consistent but structurally/numerically idle (a\n * dimensional coincidence with no consequence).\n */\n readonly verdict: 'promising' | 'inert' | 'contradictory' | 'magnitude-clash' | 'axis-clash';\n /** Composite ranking score (higher = more worth review). */\n readonly score: number;\n /**\n * At least one of the `scale`/`force` axes had a resolved (non-conflicting)\n * value on BOTH endpoints, so the axis-compatibility gate produced a real\n * comparison (whether or not it clashed). `false` means every gate axis\n * abstained (silent on one/both sides, or a fold conflict) — the gate had\n * nothing to check. Populated on EVERY candidate, independent of verdict.\n */\n readonly axisChecked: boolean;\n /**\n * Per-axis clash descriptions (`'scale: quantum ≠ cosmological'`), sorted.\n * Empty when no gate axis clashed — including when `axisChecked` is\n * `false`, and even when a stronger falsifier (magnitude/contradictory)\n * won the verdict (no falsifier shadows another's annotation).\n */\n readonly axisClashes: readonly string[];\n /**\n * Standard-physics domains whose canonical equation has a TARGET of this\n * candidate's dimension (Sub-project C). Informational context — an empty\n * list means no canonical equation targets this dimension.\n */\n readonly canonicalKinds: readonly string[];\n /** At least one endpoint name is a quantity a canonical equation uses\n * (weak name-based prior; informational). */\n readonly touchesCanonical: boolean;\n}\n\n/** Options for the discovery loop. @internal */\nexport interface DiscoveryOptions {\n /**\n * Numeric anchor for the consistency check (and the closure unlock).\n * Default `{ mass: M_sun }` — the pre-registered retrodiction anchor.\n */\n readonly groundTruth?: Readonly<Record<string, number>>;\n /** Extra identifications honored as the baseline (default registered). */\n readonly identifications?: readonly QuantityIdentification[];\n /**\n * Max orders of magnitude two identified quantities may differ before the\n * identification is falsified as a `magnitude-clash`. Default {@link DEFAULT_MAX_ORDERS_OF_MAGNITUDE} — generous\n * enough for O(1) dimensionless prefactors and unit-convention slack, strict\n * enough to kill the scale-clash decoys.\n */\n readonly maxOrdersOfMagnitude?: number;\n /**\n * Sourced order-of-magnitude values for the gate (default\n * `REPRESENTATIVE_VALUES`). Injectable for testing and so the future\n * canonical-equation registry can supply them centrally.\n */\n readonly representativeValues?: Readonly<Record<string, RepresentativeValue>>;\n /**\n * Registry-only `scale`/`force`/`information` attributes by quantity name,\n * for the D1 axis-compatibility gate (default: every centralized\n * `Quantity.attributes`). Injectable for testing — never canonical\n * per-equation stamps (Option-A resolution).\n */\n readonly quantityAttributes?: ReadonlyMap<string, RegimeAttributes>;\n}\n\n/** Union-find over quantity names; merges each edge's endpoints and every\n * identification's from↔to. Returns name → component-root. */\nfunction quantityComponents(\n edges: readonly BridgeEdge[],\n idents: readonly QuantityIdentification[],\n): Map<string, string> {\n const parent = new Map<string, string>();\n const find = (x: string): string => {\n if (!parent.has(x)) parent.set(x, x);\n let r = x;\n while (parent.get(r) !== r) r = parent.get(r)!;\n let cur = x;\n while (parent.get(cur) !== r) {\n const next = parent.get(cur)!;\n parent.set(cur, r);\n cur = next;\n }\n return r;\n };\n const union = (a: string, b: string) => {\n parent.set(find(a), find(b));\n };\n for (const e of edges) {\n const names = [...e.sources.map((s) => s.name), e.target.name];\n for (let i = 1; i < names.length; i++) union(names[0], names[i]);\n }\n for (const id of idents) union(id.from, id.to);\n const roots = new Map<string, string>();\n for (const name of parent.keys()) roots.set(name, find(name));\n return roots;\n}\n\n/**\n * The ground truth the funnel anchors magnitudes to when the caller gives none: one solar mass.\n * Exported so the CLI can print the anchor a result is relative to (audit I3).\n * @internal\n */\nexport const ANCHOR_DEFAULT: Readonly<Record<string, number>> = { mass: M_SUN_KG };\n\n/**\n * The magnitude-clash threshold when the caller gives none: how many orders of magnitude two\n * identified quantities may differ. Exported so the CLI states the default it runs with.\n * @internal\n */\nexport const DEFAULT_MAX_ORDERS_OF_MAGNITUDE = 3;\n\n/**\n * Factor every anchor input is multiplied by to probe whether a magnitude ratio\n * depends on the anchor at all (persona finding L3). Three decades moves any\n * log-ratio that depends on the anchor far beyond {@link ANCHOR_INVARIANCE_TOL}.\n * @internal\n */\nconst ANCHOR_PROBE_FACTOR = 1e3;\n\n/** Decades within which a log-ratio counts as unchanged by the probe. @internal */\nconst ANCHOR_INVARIANCE_TOL = 1e-9;\n\n/**\n * One name's hyphen-token set is a STRICT subset of the other's\n * (`mass` ⊂ `reference-mass`, `mass` ⊂ `planck-mass`) — i.e. identifying a\n * generic quantity with one of its own specializations of the same kind.\n * Such an identification is near-tautological (it asserts the specialization\n * IS its genus), not a discovered cross-cluster link, so it is barred from\n * `promising`. Returns false for equal token sets and for pairs sharing only\n * a partial token (`schwarzschild-radius` ⊄ `foerster-radius`).\n */\nfunction nameSubsumes(a: string, b: string): boolean {\n const ta = new Set(a.split('-'));\n const tb = new Set(b.split('-'));\n if (ta.size === tb.size) return false;\n const [small, big] = ta.size < tb.size ? [ta, tb] : [tb, ta];\n for (const t of small) if (!big.has(t)) return false;\n return true;\n}\n\n/**\n * Candidate-invariant state for the discovery funnel — everything in\n * `vetLinkCandidate` that depends only on `(edges, opts)`, not on the specific\n * candidate. Computed once by `buildDiscoveryContext` and shared across every\n * candidate so `rankDiscoveries` does loop-invariant work once instead of N\n * times. Holds read-only structures — `vetInContext` never mutates them, so\n * sharing is safe. `tests/composition/discovery.test.ts` pins that directly:\n * two builds are equal, and vetting every candidate leaves the context equal\n * to a snapshot taken before.\n *\n * @internal\n */\nexport interface DiscoveryContext {\n readonly baseIdents: readonly QuantityIdentification[];\n readonly groundTruth: Readonly<Record<string, number>>;\n /** `Object.keys(groundTruth)` — the anchor known-set names. */\n readonly anchor: readonly string[];\n readonly repVals: Readonly<Record<string, RepresentativeValue>>;\n readonly maxOrders: number;\n /** Registry-only attribute lookup for the D1 axis gate (opts override or\n * `REGISTRY_ATTRIBUTES_BY_NAME`). */\n readonly attributesByName: ReadonlyMap<string, RegimeAttributes>;\n /** `forwardEvaluate(edges, groundTruth, baseIdents)` — anchor magnitudes. */\n readonly anchorValues: ReadonlyMap<string, number>;\n /** The same evaluation with every anchor input times {@link ANCHOR_PROBE_FACTOR}. */\n readonly anchorValuesProbe: ReadonlyMap<string, number>;\n /** `quantityComponents(edges, baseIdents)` — base component roots. */\n readonly comps: ReadonlyMap<string, string>;\n /** `forwardClosure(edges, anchor, baseIdents)` — base determinable set. */\n readonly closureBase: ReadonlySet<string>;\n /**\n * The targets the retrodiction of the anchor finds inconsistent with no\n * hypothesized identification (empty when the base is consistent). An\n * identification of two quantities outside {@link closureBase} cannot fire,\n * so that candidate's numeric report is this one.\n */\n readonly baseInconsistentNodes: readonly string[];\n}\n\n/** Resolve options and compute the candidate-invariant discovery state once.\n * @internal */\nexport function buildDiscoveryContext(\n edges: readonly BridgeEdge[],\n opts: DiscoveryOptions,\n): DiscoveryContext {\n const baseIdents = opts.identifications ?? QUANTITY_IDENTIFICATIONS;\n const groundTruth = opts.groundTruth ?? ANCHOR_DEFAULT;\n const anchor = Object.keys(groundTruth);\n const baseReport = retrodict(edges, groundTruth, { identifications: baseIdents });\n return {\n baseIdents,\n groundTruth,\n anchor,\n repVals: opts.representativeValues ?? REPRESENTATIVE_VALUES,\n maxOrders: opts.maxOrdersOfMagnitude ?? DEFAULT_MAX_ORDERS_OF_MAGNITUDE,\n attributesByName: opts.quantityAttributes ?? REGISTRY_ATTRIBUTES_BY_NAME,\n // Candidate-invariant: the anchor's forward evaluation, the base component\n // partition, and the base forward closure all depend only on (edges, opts).\n anchorValues: forwardEvaluate(edges, groundTruth, baseIdents),\n anchorValuesProbe: forwardEvaluate(\n edges,\n Object.fromEntries(\n Object.entries(groundTruth).map(([k, v]) => [k, v * ANCHOR_PROBE_FACTOR]),\n ),\n baseIdents,\n ),\n comps: quantityComponents(edges, baseIdents),\n closureBase: forwardClosure(edges, anchor, baseIdents),\n baseInconsistentNodes: baseReport.results\n .filter((r) => r.outcome === 'inconsistent')\n .map((r) => r.target)\n .sort(),\n };\n}\n\n/**\n * The quantities whose value can depend on one of `seeds`: the seeds, every\n * `to` of an identification from the set, and every target of an edge with a\n * source in the set, to a fixed point. An over-approximation (an edge that\n * does not fire still lists its target), which is the safe side: a target\n * left out would keep its base retrodiction unexamined.\n */\nfunction dependents(\n edges: readonly BridgeEdge[],\n seeds: readonly string[],\n idents: readonly QuantityIdentification[],\n): Set<string> {\n const set = new Set<string>(seeds);\n let changed = true;\n while (changed) {\n changed = false;\n for (const id of idents) {\n if (set.has(id.from) && !set.has(id.to)) {\n set.add(id.to);\n changed = true;\n }\n }\n for (const e of edges) {\n if (set.has(e.target.name)) continue;\n if (e.sources.some((s) => set.has(s.name))) {\n set.add(e.target.name);\n changed = true;\n }\n }\n }\n return set;\n}\n\n/**\n * The nodes the hypothesis `a ≡ b` makes inconsistent that the base graph did\n * not already have: inconsistent(hypothesis) minus inconsistent(base). Only a\n * node downstream of `a` or `b` can change, so only those nodes are\n * classified and retrodicted, with the same over-determined rule and the\n * same tolerance `retrodict` applies to the whole graph. Sorted.\n */\nfunction newInconsistencies(\n edges: readonly BridgeEdge[],\n groundTruth: Readonly<Record<string, number>>,\n anchor: readonly string[],\n candidate: LinkCandidate,\n withHyp: readonly QuantityIdentification[],\n baseInconsistentNodes: readonly string[],\n): string[] {\n const base = new Set(baseInconsistentNodes);\n const nodes: string[] = [];\n for (const target of [...dependents(edges, [candidate.a, candidate.b], withHyp)].sort()) {\n if (base.has(target)) continue;\n const classified = classifyIdentifiability(edges, anchor, target, { identifications: withHyp });\n if (classified.verdict !== 'over-determined') continue;\n const result = retrodictNode(edges, groundTruth, target, { identifications: withHyp });\n if (result.outcome === 'inconsistent') nodes.push(target);\n }\n return nodes;\n}\n\n/**\n * Vet one link candidate by hypothesizing the identification a≡b and\n * measuring its structural and numerical consequences. See module docs.\n *\n * @internal\n */\nexport function vetLinkCandidate(\n edges: readonly BridgeEdge[],\n candidate: LinkCandidate,\n opts: DiscoveryOptions = {},\n): VettedCandidate {\n return vetInContext(edges, candidate, buildDiscoveryContext(edges, opts));\n}\n\n/**\n * The per-candidate vetting body, given pre-computed candidate-invariant\n * `ctx`. The hypothesis-augmented closure is per-candidate. Retrodiction is\n * per-candidate only when an endpoint is already in the anchor closure;\n * otherwise the identification cannot fire and the base report stands.\n *\n * @internal\n */\nexport function vetInContext(\n edges: readonly BridgeEdge[],\n candidate: LinkCandidate,\n ctx: DiscoveryContext,\n): VettedCandidate {\n const {\n baseIdents,\n groundTruth,\n anchor,\n repVals,\n maxOrders,\n anchorValues,\n anchorValuesProbe,\n comps,\n closureBase,\n attributesByName,\n baseInconsistentNodes,\n } = ctx;\n\n // Magnitude gate: an INDEPENDENT falsifier the single-anchor graph can't make.\n // Only fires when both endpoints have a representative value; abstains (and\n // never false-rejects) otherwise. A value comes from the sourced static table\n // first, else — for graph-derived quantities the table omits by design\n // (schwarzschild-radius, thermal-de-broglie-wavelength) — from the quantity's\n // value AT THE REGISTERED ANCHOR, which is a definite magnitude for this run.\n const magnitudeOf = (\n name: string,\n ): { value: number; fromAnchor: boolean } | undefined => {\n const rv = repVals[name];\n // Both paths apply the same finite-and-nonzero gate: a 0/∞/NaN magnitude\n // would make log10 blow up (log10(0) = -∞), spoofing or silently disabling\n // the falsifier. Symmetric validation across the table and anchor sources.\n if (rv !== undefined && Number.isFinite(rv.value) && rv.value !== 0)\n return { value: rv.value, fromAnchor: false };\n const av = anchorValues.get(name);\n if (av !== undefined) {\n const value = av * conventionScaleToSI(name);\n if (Number.isFinite(value) && value !== 0)\n return { value, fromAnchor: true };\n }\n return undefined;\n };\n const va = magnitudeOf(candidate.a);\n const vb = magnitudeOf(candidate.b);\n const magnitudeChecked = va !== undefined && vb !== undefined;\n const magnitudeUsedAnchor =\n magnitudeChecked && (va!.fromAnchor || vb!.fromAnchor);\n const ordersApart = magnitudeChecked\n ? Math.abs(Math.log10(Math.abs(va!.value)) - Math.log10(Math.abs(vb!.value)))\n : null;\n const magnitudeClash = ordersApart !== null && ordersApart > maxOrders;\n\n // Anchor-invariance probe: re-read each anchor-derived magnitude at the\n // rescaled anchor. A table value is a constant and does not move.\n const probeOf = (\n name: string,\n m: { value: number; fromAnchor: boolean },\n ): number | undefined => {\n if (!m.fromAnchor) return m.value;\n const probe = anchorValuesProbe.get(name);\n return probe === undefined ? undefined : probe * conventionScaleToSI(name);\n };\n let magnitudeAnchorInvariant = false;\n if (magnitudeUsedAnchor) {\n const pa = probeOf(candidate.a, va!);\n const pb = probeOf(candidate.b, vb!);\n if (pa !== undefined && pb !== undefined && pa !== 0 && pb !== 0 && Number.isFinite(pa) && Number.isFinite(pb)) {\n const la = Math.log10(Math.abs(va!.value));\n const lb = Math.log10(Math.abs(vb!.value));\n const lpa = Math.log10(Math.abs(pa));\n const lpb = Math.log10(Math.abs(pb));\n magnitudeAnchorInvariant = Math.abs((lpa - lpb) - (la - lb)) <= ANCHOR_INVARIANCE_TOL;\n }\n }\n\n // A generic↔specialization identification (mass ≟ reference-mass) is\n // near-tautological — barred from `promising` regardless of structure.\n const subsuming = nameSubsumes(candidate.a, candidate.b);\n\n // Axis-compatibility gate (D1): a literal identity cannot have endpoints\n // whose STATED scale/force regimes disagree. Either side silent on an\n // axis (including a fold-conflict, resolved as unstated by\n // `effectiveAttributes`) abstains that axis rather than clashing.\n // Populated on every candidate, independent of which verdict wins.\n const attrsA = effectiveAttributes(candidate.a, attributesByName, baseIdents);\n const attrsB = effectiveAttributes(candidate.b, attributesByName, baseIdents);\n const checkedAxes: string[] = [];\n const axisClashes: string[] = [];\n const axisUnstated: { axis: string; endpoints: string[] }[] = [];\n // GATE_AXES is registry-derived (string[]); every registry axis name is a\n // RegimeAttributes key whose value is a string union — read via a string record.\n const recA = attrsA as Record<string, string | undefined>;\n const recB = attrsB as Record<string, string | undefined>;\n for (const axis of GATE_AXES) {\n const av = recA[axis];\n const bv = recB[axis];\n if (av === undefined || bv === undefined) {\n axisUnstated.push({\n axis,\n endpoints: [av === undefined ? candidate.a : null, bv === undefined ? candidate.b : null].filter(\n (e): e is string => e !== null,\n ),\n });\n continue; // abstain\n }\n checkedAxes.push(axis);\n if (av !== bv) axisClashes.push(`${axis}: ${av} ≠ ${bv}`);\n }\n axisClashes.sort();\n const axisChecked = checkedAxes.length > 0;\n const axisClash = axisClashes.length > 0;\n\n // The hypothesized identification, added in both directions so a≡b is a\n // full merge (identifications are directional in the engine).\n const rationale = `HYPOTHESIS (unadjudicated): ${candidate.a} ≡ ${candidate.b} — same dimension ${candidate.dim}`;\n const hypothesis: QuantityIdentification[] = [\n { from: candidate.a, to: candidate.b, rationale },\n { from: candidate.b, to: candidate.a, rationale },\n ];\n const withHyp = [...baseIdents, ...hypothesis];\n\n // Structural: does a≡b merge two components? (base partition from ctx)\n const mergesComponents =\n comps.has(candidate.a) &&\n comps.has(candidate.b) &&\n comps.get(candidate.a) !== comps.get(candidate.b);\n\n // Neither endpoint in the anchor closure means the identification cannot\n // fire: `forwardClosure` copies a value across `a ≡ b` only from a\n // determinable side. The hypothesis closure is then the base closure, and no\n // value in the graph moves, so neither closure nor retrodiction is recomputed\n // (9.0.0 audit §4 C9: 4004 of 4196 catalog candidates are this case).\n const touchesClosure = closureBase.has(candidate.a) || closureBase.has(candidate.b);\n\n // Closure unlock: forward closure from the anchor, with vs without. The base\n // closure is candidate-invariant (ctx); only the hypothesis closure is fresh.\n const closureHyp = touchesClosure ? forwardClosure(edges, anchor, withHyp) : closureBase;\n const unlocksFromAnchor = [...closureHyp]\n .filter((q) => !closureBase.has(q))\n .sort();\n\n // Numeric: the hypothesis must not CREATE a disagreement. A node whose\n // routes already disagree in the base graph is the graph's finding\n // (`retrodict` reports it), not this candidate's, so the attribution is\n // inconsistent(hypothesis) minus inconsistent(base) (9.0.0 audit §4 C4).\n // Only a target downstream of `a` or `b` can change under the hypothesis;\n // every other target's retrodiction is the base one, so only those targets\n // are retrodicted (§4 C9).\n const inconsistentNodes = touchesClosure\n ? newInconsistencies(edges, groundTruth, anchor, candidate, withHyp, baseInconsistentNodes)\n : [];\n const numericallyConsistent = inconsistentNodes.length === 0;\n\n // Verdict precedence: a magnitude clash is the most decisive, most\n // interpretable falsification, checked before the graph contradiction;\n // the regime-label prior (axis-clash) is weaker than both numeric\n // falsifiers and is not one itself, but still outranks promising/inert (D1).\n let verdict: VettedCandidate['verdict'];\n if (magnitudeClash) verdict = 'magnitude-clash';\n else if (!numericallyConsistent) verdict = 'contradictory';\n else if (axisClash) verdict = 'axis-clash';\n else if (mergesComponents && unlocksFromAnchor.length > 0 && !subsuming)\n verdict = 'promising';\n else verdict = 'inert';\n\n // Score: all falsifications sink to the bottom; a subsuming (tautological)\n // identification sinks within `inert`; otherwise reward structural merges,\n // unlocks, and the proposer's weak priors.\n let score = 0;\n if (magnitudeClash || !numericallyConsistent || axisClash) {\n score = -1;\n } else if (subsuming) {\n score = 0;\n } else {\n score += mergesComponents ? 4 : 0;\n score += Math.min(unlocksFromAnchor.length, 4);\n score += candidate.touchesCore ? 1 : 0;\n score += candidate.sameKind ? 1 : 0;\n }\n\n const canonicalKinds = CANONICAL_KINDS_BY_DIM.get(candidate.dim) ?? [];\n const touchesCanonical =\n CANONICAL_QUANTITY_NAMES.has(candidate.a) ||\n CANONICAL_QUANTITY_NAMES.has(candidate.b);\n\n return {\n a: candidate.a,\n b: candidate.b,\n dim: candidate.dim,\n touchesCore: candidate.touchesCore,\n sameKind: candidate.sameKind,\n mergesComponents,\n unlocksFromAnchor,\n numericallyConsistent,\n inconsistentNodes,\n ordersApart,\n magnitudeChecked,\n magnitudeUsedAnchor,\n magnitudeAnchorInvariant,\n magnitudeMissing: [va === undefined ? candidate.a : null, vb === undefined ? candidate.b : null].filter(\n (e): e is string => e !== null,\n ),\n axisUnstated,\n subsuming,\n verdict,\n score,\n axisChecked,\n axisClashes,\n canonicalKinds,\n touchesCanonical,\n };\n}\n\n/**\n * Run the full discovery funnel: propose cross-cluster candidates, vet each\n * against the inference suite, and rank — `promising` first, then by score.\n * The output is the physicist's worklist (vetted, provenance-traced), not a\n * list of discoveries.\n *\n * @public\n */\nexport function rankDiscoveries(\n edges: readonly BridgeEdge[],\n opts: DiscoveryOptions = {},\n): VettedCandidate[] {\n const VERDICT_RANK: Record<VettedCandidate['verdict'], number> = {\n promising: 0,\n inert: 1,\n 'magnitude-clash': 2,\n contradictory: 3,\n 'axis-clash': 4,\n };\n const ctx = buildDiscoveryContext(edges, opts);\n const candidates = proposeLinkCandidates(edges);\n const vetted = candidates.map((c) => vetInContext(edges, c, ctx));\n vetted.sort(\n (x, y) =>\n VERDICT_RANK[x.verdict] - VERDICT_RANK[y.verdict] ||\n y.score - x.score ||\n x.a.localeCompare(y.a) ||\n x.b.localeCompare(y.b),\n );\n return vetted;\n}\n"]}
|