context-probe 0.1.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/LICENSE +183 -0
- package/README.ja.md +323 -0
- package/README.md +323 -0
- package/dist/src/analyzers/architecture-contract-declarations-dart.d.ts +2 -0
- package/dist/src/analyzers/architecture-contract-declarations-dart.js +129 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma-core.d.ts +2 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma-core.js +89 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma-shared.d.ts +10 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma-shared.js +56 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma.d.ts +1 -0
- package/dist/src/analyzers/architecture-contract-declarations-ecma.js +1 -0
- package/dist/src/analyzers/architecture-contract-declarations-shared.d.ts +8 -0
- package/dist/src/analyzers/architecture-contract-declarations-shared.js +21 -0
- package/dist/src/analyzers/architecture-contract-declarations.d.ts +2 -0
- package/dist/src/analyzers/architecture-contract-declarations.js +2 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-analysis.d.ts +8 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-analysis.js +70 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-core.d.ts +8 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-core.js +4 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-entry.d.ts +19 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-entry.js +89 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-scope.d.ts +8 -0
- package/dist/src/analyzers/architecture-contract-score-baseline-scope.js +18 -0
- package/dist/src/analyzers/architecture-contract-score-baseline.d.ts +1 -0
- package/dist/src/analyzers/architecture-contract-score-baseline.js +1 -0
- package/dist/src/analyzers/architecture-contract-score-current.d.ts +3 -0
- package/dist/src/analyzers/architecture-contract-score-current.js +39 -0
- package/dist/src/analyzers/architecture-contract-score-shared.d.ts +18 -0
- package/dist/src/analyzers/architecture-contract-score-shared.js +9 -0
- package/dist/src/analyzers/architecture-contract-scoring.d.ts +15 -0
- package/dist/src/analyzers/architecture-contract-scoring.js +70 -0
- package/dist/src/analyzers/architecture-contract-stats-core.d.ts +9 -0
- package/dist/src/analyzers/architecture-contract-stats-core.js +20 -0
- package/dist/src/analyzers/architecture-contract-stats-file.d.ts +23 -0
- package/dist/src/analyzers/architecture-contract-stats-file.js +77 -0
- package/dist/src/analyzers/architecture-contract-stats.d.ts +2 -0
- package/dist/src/analyzers/architecture-contract-stats.js +1 -0
- package/dist/src/analyzers/architecture-contract-types.d.ts +24 -0
- package/dist/src/analyzers/architecture-contract-types.js +1 -0
- package/dist/src/analyzers/architecture-contracts.d.ts +2 -0
- package/dist/src/analyzers/architecture-contracts.js +1 -0
- package/dist/src/analyzers/architecture-cti-ingest.d.ts +19 -0
- package/dist/src/analyzers/architecture-cti-ingest.js +64 -0
- package/dist/src/analyzers/architecture-delivery-normalization-core.d.ts +6 -0
- package/dist/src/analyzers/architecture-delivery-normalization-core.js +83 -0
- package/dist/src/analyzers/architecture-delivery-normalization-shared.d.ts +16 -0
- package/dist/src/analyzers/architecture-delivery-normalization-shared.js +1 -0
- package/dist/src/analyzers/architecture-delivery-normalization-spec.d.ts +13 -0
- package/dist/src/analyzers/architecture-delivery-normalization-spec.js +52 -0
- package/dist/src/analyzers/architecture-delivery-normalization.d.ts +6 -0
- package/dist/src/analyzers/architecture-delivery-normalization.js +4 -0
- package/dist/src/analyzers/architecture-evolution-efficiency.d.ts +8 -0
- package/dist/src/analyzers/architecture-evolution-efficiency.js +76 -0
- package/dist/src/analyzers/architecture-evolution-locality.d.ts +7 -0
- package/dist/src/analyzers/architecture-evolution-locality.js +129 -0
- package/dist/src/analyzers/architecture-evolution-shared.d.ts +33 -0
- package/dist/src/analyzers/architecture-evolution-shared.js +29 -0
- package/dist/src/analyzers/architecture-evolution.d.ts +3 -0
- package/dist/src/analyzers/architecture-evolution.js +2 -0
- package/dist/src/analyzers/architecture-observation-ingest-delivery.d.ts +9 -0
- package/dist/src/analyzers/architecture-observation-ingest-delivery.js +62 -0
- package/dist/src/analyzers/architecture-observation-ingest-shared.d.ts +13 -0
- package/dist/src/analyzers/architecture-observation-ingest-shared.js +12 -0
- package/dist/src/analyzers/architecture-observation-ingest-telemetry.d.ts +10 -0
- package/dist/src/analyzers/architecture-observation-ingest-telemetry.js +71 -0
- package/dist/src/analyzers/architecture-observation-ingest.d.ts +5 -0
- package/dist/src/analyzers/architecture-observation-ingest.js +2 -0
- package/dist/src/analyzers/architecture-observation-normalization-shared.d.ts +10 -0
- package/dist/src/analyzers/architecture-observation-normalization-shared.js +19 -0
- package/dist/src/analyzers/architecture-operations-common-ops.d.ts +16 -0
- package/dist/src/analyzers/architecture-operations-common-ops.js +76 -0
- package/dist/src/analyzers/architecture-operations.d.ts +27 -0
- package/dist/src/analyzers/architecture-operations.js +56 -0
- package/dist/src/analyzers/architecture-pattern-runtime-fallback.d.ts +8 -0
- package/dist/src/analyzers/architecture-pattern-runtime-fallback.js +79 -0
- package/dist/src/analyzers/architecture-pattern-runtime-family.d.ts +7 -0
- package/dist/src/analyzers/architecture-pattern-runtime-family.js +56 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization-blocks.d.ts +12 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization-blocks.js +41 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization-math.d.ts +10 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization-math.js +19 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization.d.ts +21 -0
- package/dist/src/analyzers/architecture-pattern-runtime-normalization.js +103 -0
- package/dist/src/analyzers/architecture-pattern-runtime-resolution-shared.d.ts +16 -0
- package/dist/src/analyzers/architecture-pattern-runtime-resolution-shared.js +65 -0
- package/dist/src/analyzers/architecture-pattern-runtime-resolution.d.ts +15 -0
- package/dist/src/analyzers/architecture-pattern-runtime-resolution.js +99 -0
- package/dist/src/analyzers/architecture-pattern-runtime-shared.d.ts +2 -0
- package/dist/src/analyzers/architecture-pattern-runtime-shared.js +1 -0
- package/dist/src/analyzers/architecture-pattern-runtime-types.d.ts +29 -0
- package/dist/src/analyzers/architecture-pattern-runtime-types.js +1 -0
- package/dist/src/analyzers/architecture-pattern-runtime.d.ts +7 -0
- package/dist/src/analyzers/architecture-pattern-runtime.js +20 -0
- package/dist/src/analyzers/architecture-purity-signals.d.ts +6 -0
- package/dist/src/analyzers/architecture-purity-signals.js +21 -0
- package/dist/src/analyzers/architecture-purity.d.ts +2 -0
- package/dist/src/analyzers/architecture-purity.js +1 -0
- package/dist/src/analyzers/architecture-scenarios.d.ts +22 -0
- package/dist/src/analyzers/architecture-scenarios.js +95 -0
- package/dist/src/analyzers/architecture-source-loader-command.d.ts +8 -0
- package/dist/src/analyzers/architecture-source-loader-command.js +73 -0
- package/dist/src/analyzers/architecture-source-loader-core.d.ts +22 -0
- package/dist/src/analyzers/architecture-source-loader-core.js +41 -0
- package/dist/src/analyzers/architecture-source-loader-file.d.ts +8 -0
- package/dist/src/analyzers/architecture-source-loader-file.js +28 -0
- package/dist/src/analyzers/architecture-source-loader-shared.d.ts +24 -0
- package/dist/src/analyzers/architecture-source-loader-shared.js +4 -0
- package/dist/src/analyzers/architecture-source-loader.d.ts +2 -0
- package/dist/src/analyzers/architecture-source-loader.js +1 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-band.d.ts +10 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-band.js +78 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-core.d.ts +6 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-core.js +30 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-shared.d.ts +16 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-shared.js +1 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-spec.d.ts +10 -0
- package/dist/src/analyzers/architecture-telemetry-normalization-spec.js +20 -0
- package/dist/src/analyzers/architecture-telemetry-normalization.d.ts +6 -0
- package/dist/src/analyzers/architecture-telemetry-normalization.js +4 -0
- package/dist/src/analyzers/architecture-topology-core.d.ts +7 -0
- package/dist/src/analyzers/architecture-topology-core.js +4 -0
- package/dist/src/analyzers/architecture-topology-shared.d.ts +2 -0
- package/dist/src/analyzers/architecture-topology-shared.js +9 -0
- package/dist/src/analyzers/architecture-topology-signals.d.ts +21 -0
- package/dist/src/analyzers/architecture-topology-signals.js +98 -0
- package/dist/src/analyzers/architecture-topology.d.ts +2 -0
- package/dist/src/analyzers/architecture-topology.js +1 -0
- package/dist/src/analyzers/architecture.d.ts +16 -0
- package/dist/src/analyzers/architecture.js +44 -0
- package/dist/src/analyzers/code-contracts.d.ts +4 -0
- package/dist/src/analyzers/code-contracts.js +74 -0
- package/dist/src/analyzers/code-dart.d.ts +3 -0
- package/dist/src/analyzers/code-dart.js +57 -0
- package/dist/src/analyzers/code-ecma.d.ts +2 -0
- package/dist/src/analyzers/code-ecma.js +53 -0
- package/dist/src/analyzers/code-shared.d.ts +19 -0
- package/dist/src/analyzers/code-shared.js +64 -0
- package/dist/src/analyzers/code.d.ts +3 -0
- package/dist/src/analyzers/code.js +34 -0
- package/dist/src/analyzers/contract-files.d.ts +13 -0
- package/dist/src/analyzers/contract-files.js +80 -0
- package/dist/src/analyzers/cti-complexity-components.d.ts +12 -0
- package/dist/src/analyzers/cti-complexity-components.js +83 -0
- package/dist/src/analyzers/cti-complexity-recorder.d.ts +31 -0
- package/dist/src/analyzers/cti-complexity-recorder.js +58 -0
- package/dist/src/analyzers/cti-complexity.d.ts +7 -0
- package/dist/src/analyzers/cti-complexity.js +15 -0
- package/dist/src/analyzers/cti-helpers.d.ts +7 -0
- package/dist/src/analyzers/cti-helpers.js +40 -0
- package/dist/src/analyzers/cti.d.ts +2 -0
- package/dist/src/analyzers/cti.js +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +95 -0
- package/dist/src/command-architecture-inputs-loaders-config.d.ts +24 -0
- package/dist/src/command-architecture-inputs-loaders-config.js +17 -0
- package/dist/src/command-architecture-inputs-loaders-data.d.ts +22 -0
- package/dist/src/command-architecture-inputs-loaders-data.js +105 -0
- package/dist/src/command-architecture-inputs-loaders.d.ts +42 -0
- package/dist/src/command-architecture-inputs-loaders.js +12 -0
- package/dist/src/command-architecture-inputs-provenance.d.ts +2 -0
- package/dist/src/command-architecture-inputs-provenance.js +29 -0
- package/dist/src/command-architecture-inputs-resolved.d.ts +44 -0
- package/dist/src/command-architecture-inputs-resolved.js +72 -0
- package/dist/src/command-architecture-inputs-sources.d.ts +2 -0
- package/dist/src/command-architecture-inputs-sources.js +1 -0
- package/dist/src/command-architecture-inputs.d.ts +4 -0
- package/dist/src/command-architecture-inputs.js +63 -0
- package/dist/src/command-architecture.d.ts +2 -0
- package/dist/src/command-architecture.js +35 -0
- package/dist/src/command-domain.d.ts +2 -0
- package/dist/src/command-domain.js +124 -0
- package/dist/src/command-extraction-helpers.d.ts +13 -0
- package/dist/src/command-extraction-helpers.js +33 -0
- package/dist/src/command-helpers.d.ts +4 -0
- package/dist/src/command-helpers.js +3 -0
- package/dist/src/command-history.d.ts +2 -0
- package/dist/src/command-history.js +61 -0
- package/dist/src/command-input-loaders-architecture-compat-delivery-complexity.d.ts +3 -0
- package/dist/src/command-input-loaders-architecture-compat-delivery-complexity.js +132 -0
- package/dist/src/command-input-loaders-architecture-compat-pattern-runtime.d.ts +2 -0
- package/dist/src/command-input-loaders-architecture-compat-pattern-runtime.js +54 -0
- package/dist/src/command-input-loaders-architecture-compat-scenario.d.ts +3 -0
- package/dist/src/command-input-loaders-architecture-compat-scenario.js +94 -0
- package/dist/src/command-input-loaders-architecture-compat-shared.d.ts +17 -0
- package/dist/src/command-input-loaders-architecture-compat-shared.js +109 -0
- package/dist/src/command-input-loaders-architecture-compat-telemetry.d.ts +3 -0
- package/dist/src/command-input-loaders-architecture-compat-telemetry.js +137 -0
- package/dist/src/command-input-loaders-architecture-compat-topology-boundary.d.ts +3 -0
- package/dist/src/command-input-loaders-architecture-compat-topology-boundary.js +178 -0
- package/dist/src/command-input-loaders-architecture-compat.d.ts +4 -0
- package/dist/src/command-input-loaders-architecture-compat.js +4 -0
- package/dist/src/command-input-loaders-architecture-config.d.ts +34 -0
- package/dist/src/command-input-loaders-architecture-config.js +25 -0
- package/dist/src/command-input-loaders-architecture-data.d.ts +17 -0
- package/dist/src/command-input-loaders-architecture-data.js +47 -0
- package/dist/src/command-input-loaders-architecture.d.ts +2 -0
- package/dist/src/command-input-loaders-architecture.js +2 -0
- package/dist/src/command-input-loaders-core.d.ts +20 -0
- package/dist/src/command-input-loaders-core.js +58 -0
- package/dist/src/command-input-loaders.d.ts +2 -0
- package/dist/src/command-input-loaders.js +2 -0
- package/dist/src/command-path-helpers.d.ts +6 -0
- package/dist/src/command-path-helpers.js +15 -0
- package/dist/src/command-score-driven.d.ts +19 -0
- package/dist/src/command-score-driven.js +96 -0
- package/dist/src/command-score.d.ts +3 -0
- package/dist/src/command-score.js +78 -0
- package/dist/src/command-shadow-rollout-batch.d.ts +5 -0
- package/dist/src/command-shadow-rollout-batch.js +85 -0
- package/dist/src/command-shadow-rollout-gate.d.ts +5 -0
- package/dist/src/command-shadow-rollout-gate.js +33 -0
- package/dist/src/command-shadow-rollout-observe.d.ts +5 -0
- package/dist/src/command-shadow-rollout-observe.js +43 -0
- package/dist/src/command-shadow-rollout-shared.d.ts +4 -0
- package/dist/src/command-shadow-rollout-shared.js +23 -0
- package/dist/src/command-shadow-rollout.d.ts +2 -0
- package/dist/src/command-shadow-rollout.js +16 -0
- package/dist/src/command-types.d.ts +4 -0
- package/dist/src/command-types.js +1 -0
- package/dist/src/commands.d.ts +6 -0
- package/dist/src/commands.js +66 -0
- package/dist/src/core/aggregate-fitness-core.d.ts +24 -0
- package/dist/src/core/aggregate-fitness-core.js +40 -0
- package/dist/src/core/aggregate-fitness-evidence.d.ts +2 -0
- package/dist/src/core/aggregate-fitness-evidence.js +24 -0
- package/dist/src/core/aggregate-fitness-mapping.d.ts +17 -0
- package/dist/src/core/aggregate-fitness-mapping.js +57 -0
- package/dist/src/core/aggregate-fitness-scoring.d.ts +24 -0
- package/dist/src/core/aggregate-fitness-scoring.js +71 -0
- package/dist/src/core/aggregate-fitness-shared.d.ts +21 -0
- package/dist/src/core/aggregate-fitness-shared.js +127 -0
- package/dist/src/core/aggregate-fitness.d.ts +2 -0
- package/dist/src/core/aggregate-fitness.js +1 -0
- package/dist/src/core/architecture-purity-core.d.ts +3 -0
- package/dist/src/core/architecture-purity-core.js +94 -0
- package/dist/src/core/architecture-purity-types.d.ts +18 -0
- package/dist/src/core/architecture-purity-types.js +1 -0
- package/dist/src/core/architecture-scenario-quality.d.ts +5 -0
- package/dist/src/core/architecture-scenario-quality.js +52 -0
- package/dist/src/core/architecture-scoring-evidence-architecture.d.ts +10 -0
- package/dist/src/core/architecture-scoring-evidence-architecture.js +50 -0
- package/dist/src/core/architecture-scoring-evidence-findings.d.ts +2 -0
- package/dist/src/core/architecture-scoring-evidence-findings.js +2 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-ingest.d.ts +5 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-ingest.js +68 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-shared.d.ts +20 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-shared.js +24 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-source.d.ts +7 -0
- package/dist/src/core/architecture-scoring-evidence-inputs-source.js +16 -0
- package/dist/src/core/architecture-scoring-evidence-inputs.d.ts +2 -0
- package/dist/src/core/architecture-scoring-evidence-inputs.js +2 -0
- package/dist/src/core/architecture-scoring-evidence-observability.d.ts +12 -0
- package/dist/src/core/architecture-scoring-evidence-observability.js +75 -0
- package/dist/src/core/architecture-scoring-evidence.d.ts +30 -0
- package/dist/src/core/architecture-scoring-evidence.js +76 -0
- package/dist/src/core/architecture-scoring-evolution-inputs.d.ts +10 -0
- package/dist/src/core/architecture-scoring-evolution-inputs.js +56 -0
- package/dist/src/core/architecture-scoring-inputs-complexity.d.ts +7 -0
- package/dist/src/core/architecture-scoring-inputs-complexity.js +24 -0
- package/dist/src/core/architecture-scoring-inputs-observability.d.ts +11 -0
- package/dist/src/core/architecture-scoring-inputs-observability.js +84 -0
- package/dist/src/core/architecture-scoring-inputs-static.d.ts +13 -0
- package/dist/src/core/architecture-scoring-inputs-static.js +48 -0
- package/dist/src/core/architecture-scoring-inputs.d.ts +9 -0
- package/dist/src/core/architecture-scoring-inputs.js +16 -0
- package/dist/src/core/architecture-scoring-metric-shared.d.ts +11 -0
- package/dist/src/core/architecture-scoring-metric-shared.js +3 -0
- package/dist/src/core/architecture-scoring-metrics-composite.d.ts +3 -0
- package/dist/src/core/architecture-scoring-metrics-composite.js +56 -0
- package/dist/src/core/architecture-scoring-metrics-core.d.ts +3 -0
- package/dist/src/core/architecture-scoring-metrics-core.js +81 -0
- package/dist/src/core/architecture-scoring-metrics-evolution.d.ts +3 -0
- package/dist/src/core/architecture-scoring-metrics-evolution.js +74 -0
- package/dist/src/core/architecture-scoring-metrics-runtime.d.ts +3 -0
- package/dist/src/core/architecture-scoring-metrics-runtime.js +68 -0
- package/dist/src/core/architecture-scoring-metrics.d.ts +4 -0
- package/dist/src/core/architecture-scoring-metrics.js +14 -0
- package/dist/src/core/architecture-scoring-types.d.ts +94 -0
- package/dist/src/core/architecture-scoring-types.js +1 -0
- package/dist/src/core/architecture-scoring.d.ts +9 -0
- package/dist/src/core/architecture-scoring.js +82 -0
- package/dist/src/core/artifacts.d.ts +3 -0
- package/dist/src/core/artifacts.js +58 -0
- package/dist/src/core/boundary-fitness-attraction.d.ts +4 -0
- package/dist/src/core/boundary-fitness-attraction.js +11 -0
- package/dist/src/core/boundary-fitness-contexts.d.ts +7 -0
- package/dist/src/core/boundary-fitness-contexts.js +80 -0
- package/dist/src/core/boundary-fitness-core.d.ts +28 -0
- package/dist/src/core/boundary-fitness-core.js +132 -0
- package/dist/src/core/boundary-fitness-evidence.d.ts +17 -0
- package/dist/src/core/boundary-fitness-evidence.js +27 -0
- package/dist/src/core/boundary-fitness-separation.d.ts +13 -0
- package/dist/src/core/boundary-fitness-separation.js +14 -0
- package/dist/src/core/boundary-fitness-shared.d.ts +3 -0
- package/dist/src/core/boundary-fitness-shared.js +17 -0
- package/dist/src/core/boundary-fitness-signals.d.ts +21 -0
- package/dist/src/core/boundary-fitness-signals.js +104 -0
- package/dist/src/core/boundary-fitness.d.ts +3 -0
- package/dist/src/core/boundary-fitness.js +2 -0
- package/dist/src/core/command-analytics.d.ts +32 -0
- package/dist/src/core/command-analytics.js +80 -0
- package/dist/src/core/contracts/analysis.d.ts +105 -0
- package/dist/src/core/contracts/analysis.js +1 -0
- package/dist/src/core/contracts/architecture-complexity.d.ts +20 -0
- package/dist/src/core/contracts/architecture-complexity.js +1 -0
- package/dist/src/core/contracts/architecture-constraints.d.ts +62 -0
- package/dist/src/core/contracts/architecture-constraints.js +1 -0
- package/dist/src/core/contracts/architecture-contract-baseline.d.ts +33 -0
- package/dist/src/core/contracts/architecture-contract-baseline.js +1 -0
- package/dist/src/core/contracts/architecture-delivery.d.ts +42 -0
- package/dist/src/core/contracts/architecture-delivery.js +1 -0
- package/dist/src/core/contracts/architecture-normalization.d.ts +6 -0
- package/dist/src/core/contracts/architecture-normalization.js +1 -0
- package/dist/src/core/contracts/architecture-pattern-runtime.d.ts +69 -0
- package/dist/src/core/contracts/architecture-pattern-runtime.js +1 -0
- package/dist/src/core/contracts/architecture-scenarios.d.ts +62 -0
- package/dist/src/core/contracts/architecture-scenarios.js +1 -0
- package/dist/src/core/contracts/architecture-telemetry.d.ts +47 -0
- package/dist/src/core/contracts/architecture-telemetry.js +1 -0
- package/dist/src/core/contracts/architecture-topology.d.ts +35 -0
- package/dist/src/core/contracts/architecture-topology.js +1 -0
- package/dist/src/core/contracts/architecture.d.ts +9 -0
- package/dist/src/core/contracts/architecture.js +9 -0
- package/dist/src/core/contracts/common.d.ts +87 -0
- package/dist/src/core/contracts/common.js +1 -0
- package/dist/src/core/contracts/domain-design-score.d.ts +14 -0
- package/dist/src/core/contracts/domain-design-score.js +1 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-batch.d.ts +58 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-batch.js +1 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-gate.d.ts +46 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-gate.js +1 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-observation.d.ts +17 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-observation.js +1 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-registry.d.ts +15 -0
- package/dist/src/core/contracts/domain-design-shadow-rollout-registry.js +1 -0
- package/dist/src/core/contracts/domain-design.d.ts +5 -0
- package/dist/src/core/contracts/domain-design.js +5 -0
- package/dist/src/core/contracts/domain-model.d.ts +35 -0
- package/dist/src/core/contracts/domain-model.js +1 -0
- package/dist/src/core/contracts/governance-extraction.d.ts +65 -0
- package/dist/src/core/contracts/governance-extraction.js +1 -0
- package/dist/src/core/contracts/governance-policy.d.ts +23 -0
- package/dist/src/core/contracts/governance-policy.js +1 -0
- package/dist/src/core/contracts/governance-review.d.ts +31 -0
- package/dist/src/core/contracts/governance-review.js +1 -0
- package/dist/src/core/contracts/governance-runtime.d.ts +12 -0
- package/dist/src/core/contracts/governance-runtime.js +1 -0
- package/dist/src/core/contracts/governance-scoring.d.ts +41 -0
- package/dist/src/core/contracts/governance-scoring.js +1 -0
- package/dist/src/core/contracts/governance.d.ts +5 -0
- package/dist/src/core/contracts/governance.js +5 -0
- package/dist/src/core/contracts.d.ts +6 -0
- package/dist/src/core/contracts.js +6 -0
- package/dist/src/core/document-extractor-glossary.d.ts +3 -0
- package/dist/src/core/document-extractor-glossary.js +90 -0
- package/dist/src/core/document-extractor-identity.d.ts +18 -0
- package/dist/src/core/document-extractor-identity.js +37 -0
- package/dist/src/core/document-extractor-shared.d.ts +3 -0
- package/dist/src/core/document-extractor-shared.js +2 -0
- package/dist/src/core/document-extractor-statements-classification-cli.d.ts +3 -0
- package/dist/src/core/document-extractor-statements-classification-cli.js +50 -0
- package/dist/src/core/document-extractor-statements-classification-core.d.ts +17 -0
- package/dist/src/core/document-extractor-statements-classification-core.js +91 -0
- package/dist/src/core/document-extractor-statements-classification-heuristic.d.ts +3 -0
- package/dist/src/core/document-extractor-statements-classification-heuristic.js +32 -0
- package/dist/src/core/document-extractor-statements-classification.d.ts +2 -0
- package/dist/src/core/document-extractor-statements-classification.js +2 -0
- package/dist/src/core/document-extractor-statements-segments.d.ts +3 -0
- package/dist/src/core/document-extractor-statements-segments.js +38 -0
- package/dist/src/core/document-extractor-statements.d.ts +1 -0
- package/dist/src/core/document-extractor-statements.js +1 -0
- package/dist/src/core/document-extractor-text-normalization.d.ts +5 -0
- package/dist/src/core/document-extractor-text-normalization.js +29 -0
- package/dist/src/core/document-extractor-text-review.d.ts +3 -0
- package/dist/src/core/document-extractor-text-review.js +15 -0
- package/dist/src/core/document-extractor-text-signals.d.ts +11 -0
- package/dist/src/core/document-extractor-text-signals.js +115 -0
- package/dist/src/core/document-extractor-text.d.ts +3 -0
- package/dist/src/core/document-extractor-text.js +3 -0
- package/dist/src/core/document-extractor-types.d.ts +30 -0
- package/dist/src/core/document-extractor-types.js +1 -0
- package/dist/src/core/document-extractors-review.d.ts +4 -0
- package/dist/src/core/document-extractors-review.js +10 -0
- package/dist/src/core/document-extractors-runner.d.ts +15 -0
- package/dist/src/core/document-extractors-runner.js +31 -0
- package/dist/src/core/document-extractors.d.ts +24 -0
- package/dist/src/core/document-extractors.js +130 -0
- package/dist/src/core/domain-design-matching.d.ts +2 -0
- package/dist/src/core/domain-design-matching.js +85 -0
- package/dist/src/core/domain-design-scoring-context.d.ts +25 -0
- package/dist/src/core/domain-design-scoring-context.js +66 -0
- package/dist/src/core/domain-design-scoring-core-docs.d.ts +5 -0
- package/dist/src/core/domain-design-scoring-core-docs.js +8 -0
- package/dist/src/core/domain-design-scoring-core.d.ts +24 -0
- package/dist/src/core/domain-design-scoring-core.js +137 -0
- package/dist/src/core/domain-design-scoring-docs-afs.d.ts +2 -0
- package/dist/src/core/domain-design-scoring-docs-afs.js +40 -0
- package/dist/src/core/domain-design-scoring-docs-bfs.d.ts +2 -0
- package/dist/src/core/domain-design-scoring-docs-bfs.js +46 -0
- package/dist/src/core/domain-design-scoring-docs-core.d.ts +12 -0
- package/dist/src/core/domain-design-scoring-docs-core.js +47 -0
- package/dist/src/core/domain-design-scoring-docs-drf.d.ts +2 -0
- package/dist/src/core/domain-design-scoring-docs-drf.js +55 -0
- package/dist/src/core/domain-design-scoring-docs-shared.d.ts +25 -0
- package/dist/src/core/domain-design-scoring-docs-shared.js +1 -0
- package/dist/src/core/domain-design-scoring-docs-uli.d.ts +2 -0
- package/dist/src/core/domain-design-scoring-docs-uli.js +39 -0
- package/dist/src/core/domain-design-scoring-docs.d.ts +1 -0
- package/dist/src/core/domain-design-scoring-docs.js +1 -0
- package/dist/src/core/domain-design-scoring-locality.d.ts +27 -0
- package/dist/src/core/domain-design-scoring-locality.js +87 -0
- package/dist/src/core/domain-design-scoring-mccs.d.ts +18 -0
- package/dist/src/core/domain-design-scoring-mccs.js +29 -0
- package/dist/src/core/domain-design-scoring-pilot.d.ts +13 -0
- package/dist/src/core/domain-design-scoring-pilot.js +57 -0
- package/dist/src/core/domain-design-scoring-response-shared.d.ts +20 -0
- package/dist/src/core/domain-design-scoring-response-shared.js +30 -0
- package/dist/src/core/domain-design-scoring-response.d.ts +18 -0
- package/dist/src/core/domain-design-scoring-response.js +27 -0
- package/dist/src/core/domain-design-scoring-support-drf.d.ts +17 -0
- package/dist/src/core/domain-design-scoring-support-drf.js +118 -0
- package/dist/src/core/domain-design-scoring-support-persistence.d.ts +6 -0
- package/dist/src/core/domain-design-scoring-support-persistence.js +8 -0
- package/dist/src/core/domain-design-scoring-support-uli.d.ts +12 -0
- package/dist/src/core/domain-design-scoring-support-uli.js +31 -0
- package/dist/src/core/domain-design-scoring-support.d.ts +3 -0
- package/dist/src/core/domain-design-scoring-support.js +3 -0
- package/dist/src/core/domain-design-scoring.d.ts +1 -0
- package/dist/src/core/domain-design-scoring.js +1 -0
- package/dist/src/core/formula-parser-tokenize.d.ts +14 -0
- package/dist/src/core/formula-parser-tokenize.js +58 -0
- package/dist/src/core/formula-parser.d.ts +1 -0
- package/dist/src/core/formula-parser.js +91 -0
- package/dist/src/core/formula.d.ts +1 -0
- package/dist/src/core/formula.js +1 -0
- package/dist/src/core/history-locality.d.ts +5 -0
- package/dist/src/core/history-locality.js +48 -0
- package/dist/src/core/history-normalization.d.ts +13 -0
- package/dist/src/core/history-normalization.js +105 -0
- package/dist/src/core/history-persistence-analysis.d.ts +6 -0
- package/dist/src/core/history-persistence-analysis.js +26 -0
- package/dist/src/core/history-persistence-clusters.d.ts +6 -0
- package/dist/src/core/history-persistence-clusters.js +9 -0
- package/dist/src/core/history-persistence-comparison.d.ts +6 -0
- package/dist/src/core/history-persistence-comparison.js +66 -0
- package/dist/src/core/history-persistence-components.d.ts +8 -0
- package/dist/src/core/history-persistence-components.js +99 -0
- package/dist/src/core/history-persistence-stability.d.ts +8 -0
- package/dist/src/core/history-persistence-stability.js +79 -0
- package/dist/src/core/history-persistence.d.ts +2 -0
- package/dist/src/core/history-persistence.js +2 -0
- package/dist/src/core/history-shared.d.ts +27 -0
- package/dist/src/core/history-shared.js +145 -0
- package/dist/src/core/history.d.ts +3 -0
- package/dist/src/core/history.js +3 -0
- package/dist/src/core/io.d.ts +9 -0
- package/dist/src/core/io.js +86 -0
- package/dist/src/core/measurement-metadata.d.ts +13 -0
- package/dist/src/core/measurement-metadata.js +142 -0
- package/dist/src/core/model.d.ts +3 -0
- package/dist/src/core/model.js +33 -0
- package/dist/src/core/policy-defaults-architecture.d.ts +2 -0
- package/dist/src/core/policy-defaults-architecture.js +75 -0
- package/dist/src/core/policy-defaults-domain.d.ts +2 -0
- package/dist/src/core/policy-defaults-domain.js +51 -0
- package/dist/src/core/policy-defaults-profiles.d.ts +2 -0
- package/dist/src/core/policy-defaults-profiles.js +24 -0
- package/dist/src/core/policy-defaults.d.ts +2 -0
- package/dist/src/core/policy-defaults.js +4 -0
- package/dist/src/core/policy-formulas.d.ts +5 -0
- package/dist/src/core/policy-formulas.js +5 -0
- package/dist/src/core/policy.d.ts +4 -0
- package/dist/src/core/policy.js +20 -0
- package/dist/src/core/progress.d.ts +8 -0
- package/dist/src/core/progress.js +40 -0
- package/dist/src/core/providers-normalization.d.ts +7 -0
- package/dist/src/core/providers-normalization.js +27 -0
- package/dist/src/core/providers-prompt.d.ts +4 -0
- package/dist/src/core/providers-prompt.js +63 -0
- package/dist/src/core/providers-runner.d.ts +3 -0
- package/dist/src/core/providers-runner.js +32 -0
- package/dist/src/core/providers-types.d.ts +10 -0
- package/dist/src/core/providers-types.js +1 -0
- package/dist/src/core/providers.d.ts +4 -0
- package/dist/src/core/providers.js +30 -0
- package/dist/src/core/report-actionability.d.ts +4 -0
- package/dist/src/core/report-actionability.js +57 -0
- package/dist/src/core/report-architecture.d.ts +2 -0
- package/dist/src/core/report-architecture.js +80 -0
- package/dist/src/core/report-domain.d.ts +2 -0
- package/dist/src/core/report-domain.js +50 -0
- package/dist/src/core/report-gate.d.ts +3 -0
- package/dist/src/core/report-gate.js +54 -0
- package/dist/src/core/report-shared-format.d.ts +2 -0
- package/dist/src/core/report-shared-format.js +6 -0
- package/dist/src/core/report-shared-guidance.d.ts +2 -0
- package/dist/src/core/report-shared-guidance.js +98 -0
- package/dist/src/core/report-shared-predicates.d.ts +17 -0
- package/dist/src/core/report-shared-predicates.js +9 -0
- package/dist/src/core/report-shared.d.ts +4 -0
- package/dist/src/core/report-shared.js +3 -0
- package/dist/src/core/report.d.ts +3 -0
- package/dist/src/core/report.js +10 -0
- package/dist/src/core/response.d.ts +8 -0
- package/dist/src/core/response.js +67 -0
- package/dist/src/core/review-items.d.ts +2 -0
- package/dist/src/core/review-items.js +116 -0
- package/dist/src/core/review-resolutions.d.ts +3 -0
- package/dist/src/core/review-resolutions.js +43 -0
- package/dist/src/core/review.d.ts +2 -0
- package/dist/src/core/review.js +2 -0
- package/dist/src/core/scaffold-aggregation.d.ts +13 -0
- package/dist/src/core/scaffold-aggregation.js +18 -0
- package/dist/src/core/scaffold-architecture-balances.d.ts +3 -0
- package/dist/src/core/scaffold-architecture-balances.js +25 -0
- package/dist/src/core/scaffold-architecture-drafts-builders.d.ts +19 -0
- package/dist/src/core/scaffold-architecture-drafts-builders.js +114 -0
- package/dist/src/core/scaffold-architecture-drafts-profiles.d.ts +11 -0
- package/dist/src/core/scaffold-architecture-drafts-profiles.js +183 -0
- package/dist/src/core/scaffold-architecture-drafts.d.ts +12 -0
- package/dist/src/core/scaffold-architecture-drafts.js +4 -0
- package/dist/src/core/scaffold-architecture-layer-candidates.d.ts +3 -0
- package/dist/src/core/scaffold-architecture-layer-candidates.js +32 -0
- package/dist/src/core/scaffold-architecture-layers.d.ts +3 -0
- package/dist/src/core/scaffold-architecture-layers.js +15 -0
- package/dist/src/core/scaffold-architecture-orchestration.d.ts +5 -0
- package/dist/src/core/scaffold-architecture-orchestration.js +36 -0
- package/dist/src/core/scaffold-architecture-ordering.d.ts +4 -0
- package/dist/src/core/scaffold-architecture-ordering.js +55 -0
- package/dist/src/core/scaffold-architecture.d.ts +1 -0
- package/dist/src/core/scaffold-architecture.js +1 -0
- package/dist/src/core/scaffold-domain-aggregates-candidates.d.ts +4 -0
- package/dist/src/core/scaffold-domain-aggregates-candidates.js +8 -0
- package/dist/src/core/scaffold-domain-aggregates-core.d.ts +1 -0
- package/dist/src/core/scaffold-domain-aggregates-core.js +1 -0
- package/dist/src/core/scaffold-domain-aggregates-dedupe.d.ts +2 -0
- package/dist/src/core/scaffold-domain-aggregates-dedupe.js +18 -0
- package/dist/src/core/scaffold-domain-aggregates-explicit.d.ts +4 -0
- package/dist/src/core/scaffold-domain-aggregates-explicit.js +43 -0
- package/dist/src/core/scaffold-domain-aggregates-inferred.d.ts +4 -0
- package/dist/src/core/scaffold-domain-aggregates-inferred.js +117 -0
- package/dist/src/core/scaffold-domain-aggregates-shared.d.ts +23 -0
- package/dist/src/core/scaffold-domain-aggregates-shared.js +91 -0
- package/dist/src/core/scaffold-domain-aggregates.d.ts +1 -0
- package/dist/src/core/scaffold-domain-aggregates.js +1 -0
- package/dist/src/core/scaffold-domain-context-candidates.d.ts +5 -0
- package/dist/src/core/scaffold-domain-context-candidates.js +65 -0
- package/dist/src/core/scaffold-domain-context-naming.d.ts +8 -0
- package/dist/src/core/scaffold-domain-context-naming.js +117 -0
- package/dist/src/core/scaffold-domain-contexts.d.ts +11 -0
- package/dist/src/core/scaffold-domain-contexts.js +75 -0
- package/dist/src/core/scaffold-domain-docs.d.ts +17 -0
- package/dist/src/core/scaffold-domain-docs.js +18 -0
- package/dist/src/core/scaffold-domain.d.ts +7 -0
- package/dist/src/core/scaffold-domain.js +62 -0
- package/dist/src/core/scaffold-naming.d.ts +4 -0
- package/dist/src/core/scaffold-naming.js +32 -0
- package/dist/src/core/scaffold-options.d.ts +2 -0
- package/dist/src/core/scaffold-options.js +10 -0
- package/dist/src/core/scaffold-shared.d.ts +5 -0
- package/dist/src/core/scaffold-shared.js +4 -0
- package/dist/src/core/scaffold-source-group-classification.d.ts +3 -0
- package/dist/src/core/scaffold-source-group-classification.js +91 -0
- package/dist/src/core/scaffold-source-group-constants.d.ts +3 -0
- package/dist/src/core/scaffold-source-group-constants.js +52 -0
- package/dist/src/core/scaffold-source-group-merge.d.ts +5 -0
- package/dist/src/core/scaffold-source-group-merge.js +56 -0
- package/dist/src/core/scaffold-source-group-naming.d.ts +4 -0
- package/dist/src/core/scaffold-source-group-naming.js +66 -0
- package/dist/src/core/scaffold-source-groups.d.ts +5 -0
- package/dist/src/core/scaffold-source-groups.js +123 -0
- package/dist/src/core/scaffold-types.d.ts +30 -0
- package/dist/src/core/scaffold-types.js +1 -0
- package/dist/src/core/scaffold.d.ts +2 -0
- package/dist/src/core/scaffold.js +2 -0
- package/dist/src/core/scoring-shared.d.ts +12 -0
- package/dist/src/core/scoring-shared.js +39 -0
- package/dist/src/core/scoring.d.ts +2 -0
- package/dist/src/core/scoring.js +2 -0
- package/dist/src/core/shadow-rollout-gate-reasons.d.ts +8 -0
- package/dist/src/core/shadow-rollout-gate-reasons.js +22 -0
- package/dist/src/core/shadow-rollout-gate-summary.d.ts +2 -0
- package/dist/src/core/shadow-rollout-gate-summary.js +36 -0
- package/dist/src/core/shadow-rollout-gate.d.ts +2 -0
- package/dist/src/core/shadow-rollout-gate.js +50 -0
- package/dist/src/core/shadow-rollout-registry.d.ts +5 -0
- package/dist/src/core/shadow-rollout-registry.js +31 -0
- package/dist/src/core/shadow-rollout-summary.d.ts +4 -0
- package/dist/src/core/shadow-rollout-summary.js +39 -0
- package/dist/src/core/shadow-rollout.d.ts +3 -0
- package/dist/src/core/shadow-rollout.js +3 -0
- package/dist/src/core/shared-utils.d.ts +4 -0
- package/dist/src/core/shared-utils.js +15 -0
- package/dist/src/core/trace.d.ts +14 -0
- package/dist/src/core/trace.js +118 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.js +7 -0
- package/dist/src/packs/index.d.ts +2 -0
- package/dist/src/packs/index.js +36 -0
- package/package.json +68 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { evidenceRefs } from "./architecture-scoring-metric-shared.js";
|
|
2
|
+
import { evaluateFormula } from "./formula.js";
|
|
3
|
+
import { confidenceFromSignals } from "./response.js";
|
|
4
|
+
import { toMetricScore } from "./scoring-shared.js";
|
|
5
|
+
export function buildRuntimeArchitectureMetricScores(args) {
|
|
6
|
+
const { options, policy, context, evidence } = args;
|
|
7
|
+
const scores = [];
|
|
8
|
+
if (policy.metrics.OAS) {
|
|
9
|
+
const oasUnknowns = [
|
|
10
|
+
...(options.telemetrySource?.unknowns ?? []),
|
|
11
|
+
...(context.telemetryNormalizationResult?.unknowns ?? []),
|
|
12
|
+
...(context.telemetryExportIngestResult?.unknowns ?? []),
|
|
13
|
+
...(context.patternRuntimeNormalizationResult?.unknowns ?? []),
|
|
14
|
+
...context.operationsScore.unknowns,
|
|
15
|
+
...(options.telemetryObservations &&
|
|
16
|
+
(options.telemetryRawObservations ||
|
|
17
|
+
options.telemetryNormalizationProfile ||
|
|
18
|
+
options.telemetryExport ||
|
|
19
|
+
options.telemetrySourceRequested)
|
|
20
|
+
? ["Telemetry observations were provided explicitly, so raw/export/source telemetry inputs were not used."]
|
|
21
|
+
: []),
|
|
22
|
+
...(options.telemetryRawObservations && options.telemetryExport
|
|
23
|
+
? ["Raw telemetry observations were provided explicitly, so the telemetry export was not used."]
|
|
24
|
+
: []),
|
|
25
|
+
...(options.telemetrySourceRequested &&
|
|
26
|
+
(options.telemetryObservations ||
|
|
27
|
+
(options.telemetryRawObservations && options.telemetryNormalizationProfile) ||
|
|
28
|
+
options.telemetryExport)
|
|
29
|
+
? ["A higher-priority telemetry input was present, so the telemetry source was not used."]
|
|
30
|
+
: []),
|
|
31
|
+
...(options.patternRuntimeObservations && context.telemetryExportIngestResult?.patternRuntimeObservations
|
|
32
|
+
? [
|
|
33
|
+
"Pattern runtime observations were provided explicitly, so pattern runtime data inside the telemetry export was not used.",
|
|
34
|
+
]
|
|
35
|
+
: []),
|
|
36
|
+
...(options.patternRuntimeObservations &&
|
|
37
|
+
options.patternRuntimeRawRequested &&
|
|
38
|
+
options.patternRuntimeNormalizationProfileRequested
|
|
39
|
+
? ["Pattern runtime observations were provided explicitly, so raw pattern runtime input was not used."]
|
|
40
|
+
: []),
|
|
41
|
+
...(context.usablePatternRuntimeRaw && context.telemetryExportIngestResult?.patternRuntimeObservations
|
|
42
|
+
? [
|
|
43
|
+
"Raw pattern runtime input was provided explicitly, so pattern runtime data inside the telemetry export was not used.",
|
|
44
|
+
]
|
|
45
|
+
: []),
|
|
46
|
+
];
|
|
47
|
+
scores.push(toMetricScore("OAS", evaluateFormula(policy.metrics.OAS.formula, {
|
|
48
|
+
CommonOps: context.operationsScore.CommonOps,
|
|
49
|
+
PatternRuntime: context.operationsScore.PatternRuntime,
|
|
50
|
+
}), {
|
|
51
|
+
CommonOps: context.operationsScore.CommonOps,
|
|
52
|
+
PatternRuntime: context.operationsScore.PatternRuntime,
|
|
53
|
+
band_count: context.operationsScore.bandCount,
|
|
54
|
+
weighted_band_coverage: context.operationsScore.weightedBandCoverage,
|
|
55
|
+
}, evidenceRefs(evidence.telemetrySource, evidence.telemetryInput, evidence.telemetryExport, evidence.telemetryNormalization, evidence.patternRuntimeNormalization, evidence.operations), confidenceFromSignals([
|
|
56
|
+
context.operationsScore.confidence,
|
|
57
|
+
...(context.patternRuntimeNormalizationResult ? [context.patternRuntimeNormalizationResult.confidence] : []),
|
|
58
|
+
...(context.telemetryNormalizationResult
|
|
59
|
+
? [context.telemetryNormalizationResult.confidence]
|
|
60
|
+
: options.telemetrySource
|
|
61
|
+
? [options.telemetrySource.confidence, context.telemetryExportIngestResult?.confidence ?? 0.8]
|
|
62
|
+
: context.telemetryExportIngestResult
|
|
63
|
+
? [context.telemetryExportIngestResult.confidence]
|
|
64
|
+
: [0.85]),
|
|
65
|
+
]), Array.from(new Set(oasUnknowns))));
|
|
66
|
+
}
|
|
67
|
+
return scores;
|
|
68
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ArchitectureEvidenceBundle } from "./architecture-scoring-evidence.js";
|
|
2
|
+
import type { ArchitecturePolicy, ArchitectureScoringContext, ComputeArchitectureScoresOptions } from "./architecture-scoring-types.js";
|
|
3
|
+
import type { MetricScore } from "./contracts.js";
|
|
4
|
+
export declare function buildArchitectureMetricScores(options: ComputeArchitectureScoresOptions, policy: ArchitecturePolicy, context: ArchitectureScoringContext, evidence: ArchitectureEvidenceBundle): MetricScore[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { buildCompositeArchitectureMetricScores } from "./architecture-scoring-metrics-composite.js";
|
|
2
|
+
import { buildCoreArchitectureMetricScores } from "./architecture-scoring-metrics-core.js";
|
|
3
|
+
import { buildEvolutionArchitectureMetricScores } from "./architecture-scoring-metrics-evolution.js";
|
|
4
|
+
import { buildRuntimeArchitectureMetricScores } from "./architecture-scoring-metrics-runtime.js";
|
|
5
|
+
export function buildArchitectureMetricScores(options, policy, context, evidence) {
|
|
6
|
+
const builderArgs = { options, policy, context, evidence };
|
|
7
|
+
const scores = [
|
|
8
|
+
...buildCoreArchitectureMetricScores(builderArgs),
|
|
9
|
+
...buildRuntimeArchitectureMetricScores(builderArgs),
|
|
10
|
+
...buildEvolutionArchitectureMetricScores(builderArgs),
|
|
11
|
+
];
|
|
12
|
+
scores.push(...buildCompositeArchitectureMetricScores(builderArgs, scores));
|
|
13
|
+
return scores;
|
|
14
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { detectDirectionViolations, scoreDependencyDirection } from "../analyzers/architecture.js";
|
|
2
|
+
import type { scoreInterfaceProtocolStability } from "../analyzers/architecture-contracts.js";
|
|
3
|
+
import type { ingestComplexityExportBundle } from "../analyzers/architecture-cti-ingest.js";
|
|
4
|
+
import type { normalizeDeliveryObservations } from "../analyzers/architecture-delivery-normalization.js";
|
|
5
|
+
import type { scoreArchitectureEvolutionEfficiency, scoreArchitectureEvolutionLocality } from "../analyzers/architecture-evolution.js";
|
|
6
|
+
import type { ingestDeliveryExportBundle, ingestTelemetryExportBundle } from "../analyzers/architecture-observation-ingest.js";
|
|
7
|
+
import type { scoreOperationalAdequacy } from "../analyzers/architecture-operations.js";
|
|
8
|
+
import type { normalizePatternRuntimeObservations } from "../analyzers/architecture-pattern-runtime-normalization.js";
|
|
9
|
+
import type { scoreBoundaryPurity } from "../analyzers/architecture-purity.js";
|
|
10
|
+
import type { scoreQualityScenarioFit } from "../analyzers/architecture-scenarios.js";
|
|
11
|
+
import type { ResolvedCanonicalSource } from "../analyzers/architecture-source-loader.js";
|
|
12
|
+
import type { normalizeTelemetryObservations } from "../analyzers/architecture-telemetry-normalization.js";
|
|
13
|
+
import type { scoreTopologyIsolation } from "../analyzers/architecture-topology.js";
|
|
14
|
+
import type { scoreComplexityTax } from "../analyzers/cti.js";
|
|
15
|
+
import type { ArchitectureBoundaryMap, ArchitectureComplexityExportBundle, ArchitectureConstraints, ArchitectureContractBaseline, ArchitectureDeliveryExportBundle, ArchitectureDeliveryNormalizationProfile, ArchitectureDeliveryObservationSet, ArchitectureDeliveryRawObservationSet, ArchitecturePatternRuntimeNormalizationProfile, ArchitecturePatternRuntimeObservationSet, ArchitecturePatternRuntimeRawObservationSet, ArchitectureScenarioCatalog, ArchitectureScenarioQualitySummary, ArchitectureTelemetryExportBundle, ArchitectureTelemetryNormalizationProfile, ArchitectureTelemetryObservationSet, ArchitectureTelemetryRawObservationSet, ArchitectureTopologyModel, CochangeCommit, LocalityWatchlistItem, PolicyConfig, ProvenanceRef, ScenarioObservationSet, TopologyRuntimeObservationSet } from "./contracts.js";
|
|
16
|
+
import type { getDomainPolicy } from "./policy.js";
|
|
17
|
+
export interface ComputeArchitectureScoresOptions {
|
|
18
|
+
repoPath: string;
|
|
19
|
+
constraints: ArchitectureConstraints;
|
|
20
|
+
policyConfig: PolicyConfig;
|
|
21
|
+
profileName: string;
|
|
22
|
+
scenarioCatalog?: ArchitectureScenarioCatalog;
|
|
23
|
+
scenarioObservations?: ScenarioObservationSet;
|
|
24
|
+
scenarioObservationSource?: ResolvedCanonicalSource<ScenarioObservationSet>;
|
|
25
|
+
scenarioObservationSourceRequested?: boolean;
|
|
26
|
+
topologyModel?: ArchitectureTopologyModel;
|
|
27
|
+
boundaryMap?: ArchitectureBoundaryMap;
|
|
28
|
+
contractBaseline?: ArchitectureContractBaseline;
|
|
29
|
+
contractBaselineSource?: ResolvedCanonicalSource<ArchitectureContractBaseline>;
|
|
30
|
+
contractBaselineSourceRequested?: boolean;
|
|
31
|
+
runtimeObservations?: TopologyRuntimeObservationSet;
|
|
32
|
+
deliveryObservations?: ArchitectureDeliveryObservationSet;
|
|
33
|
+
deliveryRawObservations?: ArchitectureDeliveryRawObservationSet;
|
|
34
|
+
deliveryExport?: ArchitectureDeliveryExportBundle;
|
|
35
|
+
deliverySource?: ResolvedCanonicalSource<ArchitectureDeliveryExportBundle>;
|
|
36
|
+
deliverySourceRequested?: boolean;
|
|
37
|
+
deliveryNormalizationProfile?: ArchitectureDeliveryNormalizationProfile;
|
|
38
|
+
telemetryObservations?: ArchitectureTelemetryObservationSet;
|
|
39
|
+
telemetryRawObservations?: ArchitectureTelemetryRawObservationSet;
|
|
40
|
+
telemetryExport?: ArchitectureTelemetryExportBundle;
|
|
41
|
+
telemetrySource?: ResolvedCanonicalSource<ArchitectureTelemetryExportBundle>;
|
|
42
|
+
telemetrySourceRequested?: boolean;
|
|
43
|
+
telemetryNormalizationProfile?: ArchitectureTelemetryNormalizationProfile;
|
|
44
|
+
patternRuntimeObservations?: ArchitecturePatternRuntimeObservationSet;
|
|
45
|
+
patternRuntimeRawObservations?: ArchitecturePatternRuntimeRawObservationSet;
|
|
46
|
+
patternRuntimeRawRequested?: boolean;
|
|
47
|
+
patternRuntimeNormalizationProfile?: ArchitecturePatternRuntimeNormalizationProfile;
|
|
48
|
+
patternRuntimeNormalizationProfileRequested?: boolean;
|
|
49
|
+
complexityExport?: ArchitectureComplexityExportBundle;
|
|
50
|
+
complexitySource?: ResolvedCanonicalSource<ArchitectureComplexityExportBundle>;
|
|
51
|
+
complexitySourceRequested?: boolean;
|
|
52
|
+
additionalProvenance?: ProvenanceRef[];
|
|
53
|
+
}
|
|
54
|
+
export type ArchitecturePolicy = ReturnType<typeof getDomainPolicy>;
|
|
55
|
+
export type DirectionScore = ReturnType<typeof scoreDependencyDirection>;
|
|
56
|
+
export type ArchitectureViolations = ReturnType<typeof detectDirectionViolations>;
|
|
57
|
+
export type PurityScore = ReturnType<typeof scoreBoundaryPurity>;
|
|
58
|
+
export type ProtocolScore = Awaited<ReturnType<typeof scoreInterfaceProtocolStability>>;
|
|
59
|
+
export type ScenarioScore = ReturnType<typeof scoreQualityScenarioFit>;
|
|
60
|
+
export type TopologyScore = ReturnType<typeof scoreTopologyIsolation>;
|
|
61
|
+
export type TelemetryExportIngestResult = ReturnType<typeof ingestTelemetryExportBundle>;
|
|
62
|
+
export type PatternRuntimeNormalizationResult = ReturnType<typeof normalizePatternRuntimeObservations>;
|
|
63
|
+
export type TelemetryNormalizationResult = ReturnType<typeof normalizeTelemetryObservations>;
|
|
64
|
+
export type OperationsScore = ReturnType<typeof scoreOperationalAdequacy>;
|
|
65
|
+
export type DeliveryExportIngestResult = ReturnType<typeof ingestDeliveryExportBundle>;
|
|
66
|
+
export type DeliveryNormalizationResult = ReturnType<typeof normalizeDeliveryObservations>;
|
|
67
|
+
export type ComplexityExportIngestResult = ReturnType<typeof ingestComplexityExportBundle>;
|
|
68
|
+
export type ComplexityScore = ReturnType<typeof scoreComplexityTax>;
|
|
69
|
+
export type EvolutionLocalityScore = ReturnType<typeof scoreArchitectureEvolutionLocality>;
|
|
70
|
+
export type EvolutionEfficiencyScore = ReturnType<typeof scoreArchitectureEvolutionEfficiency>;
|
|
71
|
+
export interface ArchitectureScoringContext {
|
|
72
|
+
directionScore: DirectionScore;
|
|
73
|
+
purityScore: PurityScore;
|
|
74
|
+
protocolScore: ProtocolScore;
|
|
75
|
+
scenarioScore: ScenarioScore;
|
|
76
|
+
topologyScore: TopologyScore;
|
|
77
|
+
telemetryExportIngestResult?: TelemetryExportIngestResult;
|
|
78
|
+
patternRuntimeNormalizationResult?: PatternRuntimeNormalizationResult;
|
|
79
|
+
telemetryNormalizationResult?: TelemetryNormalizationResult;
|
|
80
|
+
operationsScore: OperationsScore;
|
|
81
|
+
deliveryExportIngestResult?: DeliveryExportIngestResult;
|
|
82
|
+
deliveryNormalizationResult?: DeliveryNormalizationResult;
|
|
83
|
+
complexityExportIngestResult?: ComplexityExportIngestResult;
|
|
84
|
+
complexityScore: ComplexityScore;
|
|
85
|
+
architectureCommits: CochangeCommit[];
|
|
86
|
+
architectureHistoryDiagnostics: string[];
|
|
87
|
+
evolutionLocalityScore: EvolutionLocalityScore;
|
|
88
|
+
evolutionEfficiencyScore: EvolutionEfficiencyScore;
|
|
89
|
+
localityValue: number;
|
|
90
|
+
localityWatchlist: LocalityWatchlistItem[];
|
|
91
|
+
scenarioQuality?: ArchitectureScenarioQualitySummary;
|
|
92
|
+
violations: ArchitectureViolations;
|
|
93
|
+
usablePatternRuntimeRaw: boolean;
|
|
94
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArchitectureScoringContext, ArchitectureViolations, ComputeArchitectureScoresOptions } from "./architecture-scoring-types.js";
|
|
2
|
+
import type { CommandResponse, MetricScore } from "./contracts.js";
|
|
3
|
+
export declare function computeArchitectureScores(options: ComputeArchitectureScoresOptions): Promise<CommandResponse<{
|
|
4
|
+
domainId: "architecture_design";
|
|
5
|
+
metrics: MetricScore[];
|
|
6
|
+
violations: ArchitectureViolations;
|
|
7
|
+
scenarioQuality?: ArchitectureScoringContext["scenarioQuality"];
|
|
8
|
+
localityWatchlist?: ArchitectureScoringContext["localityWatchlist"];
|
|
9
|
+
}>>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { buildArchitectureEvidence, collectArchitectureEvidence } from "./architecture-scoring-evidence.js";
|
|
2
|
+
import { resolveArchitectureEvolutionInputs } from "./architecture-scoring-evolution-inputs.js";
|
|
3
|
+
import { resolveArchitectureScoringInputs } from "./architecture-scoring-inputs.js";
|
|
4
|
+
import { buildArchitectureMetricScores } from "./architecture-scoring-metrics.js";
|
|
5
|
+
import { getDomainPolicy } from "./policy.js";
|
|
6
|
+
import { confidenceFromSignals, createResponse, toProvenance } from "./response.js";
|
|
7
|
+
export async function computeArchitectureScores(options) {
|
|
8
|
+
const startedAt = Date.now();
|
|
9
|
+
const analysisStartedAt = Date.now();
|
|
10
|
+
const { repoPath, policyConfig, profileName } = options;
|
|
11
|
+
const policy = getDomainPolicy(policyConfig, profileName, "architecture_design");
|
|
12
|
+
const inputResults = await resolveArchitectureScoringInputs(options, policy);
|
|
13
|
+
const historyStartedAt = Date.now();
|
|
14
|
+
const evolutionResults = await resolveArchitectureEvolutionInputs(options, policy, inputResults.deliveryNormalizationResult);
|
|
15
|
+
const historyMs = Date.now() - historyStartedAt;
|
|
16
|
+
const context = {
|
|
17
|
+
directionScore: inputResults.directionScore,
|
|
18
|
+
purityScore: inputResults.purityScore,
|
|
19
|
+
protocolScore: inputResults.protocolScore,
|
|
20
|
+
scenarioScore: inputResults.scenarioScore,
|
|
21
|
+
topologyScore: inputResults.topologyScore,
|
|
22
|
+
...(inputResults.telemetryExportIngestResult
|
|
23
|
+
? { telemetryExportIngestResult: inputResults.telemetryExportIngestResult }
|
|
24
|
+
: {}),
|
|
25
|
+
...(inputResults.patternRuntimeNormalizationResult
|
|
26
|
+
? { patternRuntimeNormalizationResult: inputResults.patternRuntimeNormalizationResult }
|
|
27
|
+
: {}),
|
|
28
|
+
...(inputResults.telemetryNormalizationResult
|
|
29
|
+
? { telemetryNormalizationResult: inputResults.telemetryNormalizationResult }
|
|
30
|
+
: {}),
|
|
31
|
+
operationsScore: inputResults.operationsScore,
|
|
32
|
+
...(inputResults.deliveryExportIngestResult
|
|
33
|
+
? { deliveryExportIngestResult: inputResults.deliveryExportIngestResult }
|
|
34
|
+
: {}),
|
|
35
|
+
...(inputResults.deliveryNormalizationResult
|
|
36
|
+
? { deliveryNormalizationResult: inputResults.deliveryNormalizationResult }
|
|
37
|
+
: {}),
|
|
38
|
+
...(inputResults.complexityExportIngestResult
|
|
39
|
+
? { complexityExportIngestResult: inputResults.complexityExportIngestResult }
|
|
40
|
+
: {}),
|
|
41
|
+
complexityScore: inputResults.complexityScore,
|
|
42
|
+
architectureCommits: evolutionResults.architectureCommits,
|
|
43
|
+
architectureHistoryDiagnostics: evolutionResults.architectureHistoryDiagnostics,
|
|
44
|
+
evolutionLocalityScore: evolutionResults.evolutionLocalityScore,
|
|
45
|
+
evolutionEfficiencyScore: evolutionResults.evolutionEfficiencyScore,
|
|
46
|
+
localityValue: evolutionResults.localityValue,
|
|
47
|
+
localityWatchlist: evolutionResults.evolutionLocalityScore.watchlist,
|
|
48
|
+
...(inputResults.scenarioQuality ? { scenarioQuality: inputResults.scenarioQuality } : {}),
|
|
49
|
+
violations: inputResults.violations,
|
|
50
|
+
usablePatternRuntimeRaw: inputResults.usablePatternRuntimeRaw,
|
|
51
|
+
};
|
|
52
|
+
const architectureEvidence = buildArchitectureEvidence(options, context);
|
|
53
|
+
const scores = buildArchitectureMetricScores(options, policy, context, architectureEvidence);
|
|
54
|
+
const evidence = collectArchitectureEvidence(architectureEvidence);
|
|
55
|
+
return createResponse({
|
|
56
|
+
domainId: "architecture_design",
|
|
57
|
+
metrics: scores,
|
|
58
|
+
violations: inputResults.violations,
|
|
59
|
+
...(context.scenarioQuality ? { scenarioQuality: context.scenarioQuality } : {}),
|
|
60
|
+
...(context.localityWatchlist.length > 0 ? { localityWatchlist: context.localityWatchlist } : {}),
|
|
61
|
+
}, {
|
|
62
|
+
status: evolutionResults.architectureHistoryDiagnostics.length > 0 ? "warning" : "ok",
|
|
63
|
+
evidence,
|
|
64
|
+
confidence: confidenceFromSignals(scores.map((score) => score.confidence)),
|
|
65
|
+
unknowns: Array.from(new Set(scores.flatMap((score) => score.unknowns))),
|
|
66
|
+
diagnostics: evolutionResults.architectureHistoryDiagnostics,
|
|
67
|
+
provenance: [
|
|
68
|
+
toProvenance(repoPath, "architecture_design"),
|
|
69
|
+
toProvenance(repoPath, `profile=${profileName}`),
|
|
70
|
+
...(options.additionalProvenance ?? []),
|
|
71
|
+
],
|
|
72
|
+
meta: {
|
|
73
|
+
runtime: {
|
|
74
|
+
totalMs: Date.now() - startedAt,
|
|
75
|
+
stages: {
|
|
76
|
+
historyMs,
|
|
77
|
+
analysisMs: Date.now() - analysisStartedAt - historyMs,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { hashText, isDocumentFile, isSourceFile, listFiles, readText, relativePath } from "./io.js";
|
|
2
|
+
function inferArtifactType(filePath) {
|
|
3
|
+
if (isDocumentFile(filePath)) {
|
|
4
|
+
return "document";
|
|
5
|
+
}
|
|
6
|
+
if (isSourceFile(filePath)) {
|
|
7
|
+
return "source_code";
|
|
8
|
+
}
|
|
9
|
+
if (filePath.endsWith(".json") || filePath.endsWith(".yaml") || filePath.endsWith(".yml")) {
|
|
10
|
+
return "config";
|
|
11
|
+
}
|
|
12
|
+
return "unknown";
|
|
13
|
+
}
|
|
14
|
+
export async function registerArtifacts(root) {
|
|
15
|
+
const files = await listFiles(root);
|
|
16
|
+
const artifacts = [];
|
|
17
|
+
for (const filePath of files) {
|
|
18
|
+
const content = await readText(filePath);
|
|
19
|
+
artifacts.push({
|
|
20
|
+
artifactId: `ART-${hashText(`${filePath}:${content}`).slice(0, 8)}`,
|
|
21
|
+
type: inferArtifactType(filePath),
|
|
22
|
+
path: relativePath(root, filePath),
|
|
23
|
+
size: content.length,
|
|
24
|
+
hash: hashText(content),
|
|
25
|
+
collectedAt: new Date().toISOString(),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return artifacts;
|
|
29
|
+
}
|
|
30
|
+
export async function normalizeDocuments(root) {
|
|
31
|
+
const files = await listFiles(root);
|
|
32
|
+
const fragments = [];
|
|
33
|
+
for (const filePath of files.filter((filePath) => isDocumentFile(filePath) && !filePath.toLowerCase().endsWith(".ja.md"))) {
|
|
34
|
+
const content = await readText(filePath);
|
|
35
|
+
const relative = relativePath(root, filePath);
|
|
36
|
+
const paragraphs = content
|
|
37
|
+
.split(/\n\s*\n/g)
|
|
38
|
+
.map((entry) => entry.trim())
|
|
39
|
+
.filter(Boolean);
|
|
40
|
+
let searchCursor = 0;
|
|
41
|
+
for (const paragraph of paragraphs) {
|
|
42
|
+
const startIndex = content.indexOf(paragraph, searchCursor);
|
|
43
|
+
const lineStart = content.slice(0, Math.max(0, startIndex)).split("\n").length;
|
|
44
|
+
const lineEnd = lineStart + paragraph.split("\n").length - 1;
|
|
45
|
+
searchCursor = startIndex + paragraph.length;
|
|
46
|
+
fragments.push({
|
|
47
|
+
fragmentId: `FRG-${hashText(`${relative}:${paragraph}`).slice(0, 10)}`,
|
|
48
|
+
artifactId: `ART-${hashText(`${relative}:${content}`).slice(0, 8)}`,
|
|
49
|
+
kind: paragraph.startsWith("#") ? "heading" : "paragraph",
|
|
50
|
+
text: paragraph,
|
|
51
|
+
path: relative,
|
|
52
|
+
lineStart,
|
|
53
|
+
lineEnd,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return fragments.sort((left, right) => left.path.localeCompare(right.path));
|
|
58
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { clamp01 } from "./boundary-fitness-shared.js";
|
|
2
|
+
import { localizationScore } from "./boundary-fitness-signals.js";
|
|
3
|
+
export function computeAttractionScore(signals) {
|
|
4
|
+
if (signals.length === 0) {
|
|
5
|
+
return 0.45;
|
|
6
|
+
}
|
|
7
|
+
const weightedAttraction = signals.map((signal) => localizationScore(signal.contexts) * signal.confidence);
|
|
8
|
+
const attractionWeight = signals.map((signal) => signal.confidence);
|
|
9
|
+
return clamp01(weightedAttraction.reduce((sum, value) => sum + value, 0) /
|
|
10
|
+
Math.max(0.0001, attractionWeight.reduce((sum, value) => sum + value, 0)));
|
|
11
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DomainModel, Fragment, GlossaryTerm, TermTraceLink } from "./contracts.js";
|
|
2
|
+
export declare function buildFragmentContextMentions(fragments: Fragment[], model: DomainModel): Map<string, string[]>;
|
|
3
|
+
export declare function collectTermContexts(term: GlossaryTerm, link: TermTraceLink | undefined, fragmentContextMentions: Map<string, string[]>, model: DomainModel): string[];
|
|
4
|
+
export declare function collectStatementContexts(statement: string, fragmentIds: string[], fragmentContextMentions: Map<string, string[]>, mappedTerms: Array<{
|
|
5
|
+
labels: string[];
|
|
6
|
+
contexts: string[];
|
|
7
|
+
}>, model: DomainModel): string[];
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { scoreTextAgainstLabel } from "./domain-design-matching.js";
|
|
2
|
+
import { matchGlobs } from "./io.js";
|
|
3
|
+
function escapeRegExp(value) {
|
|
4
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
5
|
+
}
|
|
6
|
+
function isAsciiLabel(value) {
|
|
7
|
+
return /^[A-Za-z0-9 _-]+$/.test(value);
|
|
8
|
+
}
|
|
9
|
+
function contextMentionPattern(name) {
|
|
10
|
+
if (isAsciiLabel(name)) {
|
|
11
|
+
return new RegExp(`(^|[^A-Za-z0-9_])${escapeRegExp(name)}([^A-Za-z0-9_]|$)`, "i");
|
|
12
|
+
}
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
function detectContextMentions(text, model) {
|
|
16
|
+
return model.contexts
|
|
17
|
+
.filter((context) => {
|
|
18
|
+
const pattern = contextMentionPattern(context.name);
|
|
19
|
+
if (pattern) {
|
|
20
|
+
return pattern.test(text);
|
|
21
|
+
}
|
|
22
|
+
return text.includes(context.name);
|
|
23
|
+
})
|
|
24
|
+
.map((context) => context.name);
|
|
25
|
+
}
|
|
26
|
+
function mapOccurrenceToContexts(occurrence, model) {
|
|
27
|
+
if (occurrence.kind !== "code") {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
return model.contexts
|
|
31
|
+
.filter((context) => matchGlobs(occurrence.path, context.pathGlobs))
|
|
32
|
+
.map((context) => context.name);
|
|
33
|
+
}
|
|
34
|
+
function unique(values) {
|
|
35
|
+
return Array.from(new Set(values));
|
|
36
|
+
}
|
|
37
|
+
export function buildFragmentContextMentions(fragments, model) {
|
|
38
|
+
return new Map(fragments.map((fragment) => [fragment.fragmentId, unique(detectContextMentions(fragment.text, model))]));
|
|
39
|
+
}
|
|
40
|
+
export function collectTermContexts(term, link, fragmentContextMentions, model) {
|
|
41
|
+
const contexts = new Set();
|
|
42
|
+
for (const occurrence of link?.occurrences ?? []) {
|
|
43
|
+
for (const contextName of mapOccurrenceToContexts(occurrence, model)) {
|
|
44
|
+
contexts.add(contextName);
|
|
45
|
+
}
|
|
46
|
+
if (occurrence.kind === "document" && occurrence.fragmentId) {
|
|
47
|
+
for (const contextName of fragmentContextMentions.get(occurrence.fragmentId) ?? []) {
|
|
48
|
+
contexts.add(contextName);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
for (const fragmentId of term.fragmentIds) {
|
|
53
|
+
for (const contextName of fragmentContextMentions.get(fragmentId) ?? []) {
|
|
54
|
+
contexts.add(contextName);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return Array.from(contexts);
|
|
58
|
+
}
|
|
59
|
+
export function collectStatementContexts(statement, fragmentIds, fragmentContextMentions, mappedTerms, model) {
|
|
60
|
+
const contexts = new Set();
|
|
61
|
+
for (const contextName of detectContextMentions(statement, model)) {
|
|
62
|
+
contexts.add(contextName);
|
|
63
|
+
}
|
|
64
|
+
for (const fragmentId of fragmentIds) {
|
|
65
|
+
for (const contextName of fragmentContextMentions.get(fragmentId) ?? []) {
|
|
66
|
+
contexts.add(contextName);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
for (const term of mappedTerms) {
|
|
70
|
+
if (term.contexts.length === 0) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (term.labels.some((label) => scoreTextAgainstLabel(statement, label) > 0)) {
|
|
74
|
+
for (const contextName of term.contexts) {
|
|
75
|
+
contexts.add(contextName);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return Array.from(contexts);
|
|
80
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BoundaryLeakFinding, ContractUsageReport, DomainModel, Evidence, Fragment, GlossaryTerm, InvariantCandidate, ModelCodeLink, RuleCandidate, TermTraceLink } from "./contracts.js";
|
|
2
|
+
import type { ProgressReporter } from "./progress.js";
|
|
3
|
+
export interface BoundaryFitnessResult {
|
|
4
|
+
A: number;
|
|
5
|
+
R: number;
|
|
6
|
+
confidence: number;
|
|
7
|
+
evidence: Evidence[];
|
|
8
|
+
unknowns: string[];
|
|
9
|
+
diagnostics: string[];
|
|
10
|
+
details: {
|
|
11
|
+
localizedSignals: number;
|
|
12
|
+
ambiguousSignals: number;
|
|
13
|
+
explicitSeparationSignals: number;
|
|
14
|
+
mappedTerms: number;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export declare function computeBoundaryFitness(input: {
|
|
18
|
+
model: DomainModel;
|
|
19
|
+
fragments: Fragment[];
|
|
20
|
+
terms: GlossaryTerm[];
|
|
21
|
+
links: TermTraceLink[];
|
|
22
|
+
rules: RuleCandidate[];
|
|
23
|
+
invariants: InvariantCandidate[];
|
|
24
|
+
contractUsage: ContractUsageReport;
|
|
25
|
+
leakFindings: BoundaryLeakFinding[];
|
|
26
|
+
modelCodeLinks: ModelCodeLink[];
|
|
27
|
+
reportProgress?: ProgressReporter;
|
|
28
|
+
}): BoundaryFitnessResult;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { computeAttractionScore } from "./boundary-fitness-attraction.js";
|
|
2
|
+
import { buildFragmentContextMentions, collectTermContexts } from "./boundary-fitness-contexts.js";
|
|
3
|
+
import { buildBoundaryFitnessEvidence } from "./boundary-fitness-evidence.js";
|
|
4
|
+
import { computeCodeBoundaryStrength, computeSeparationScore } from "./boundary-fitness-separation.js";
|
|
5
|
+
import { average, clamp01, hasSeparationSignal, unique } from "./boundary-fitness-shared.js";
|
|
6
|
+
import { buildAttractionSignals } from "./boundary-fitness-signals.js";
|
|
7
|
+
export function computeBoundaryFitness(input) {
|
|
8
|
+
const computed = computeBoundaryFitnessComponents(input);
|
|
9
|
+
return {
|
|
10
|
+
A: computed.A,
|
|
11
|
+
R: computed.R,
|
|
12
|
+
confidence: computed.confidence,
|
|
13
|
+
evidence: computed.evidence,
|
|
14
|
+
unknowns: unique(computed.unknowns),
|
|
15
|
+
diagnostics: computed.diagnostics,
|
|
16
|
+
details: computed.details,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function computeBoundaryFitnessComponents(input) {
|
|
20
|
+
const unknowns = [];
|
|
21
|
+
const diagnostics = [];
|
|
22
|
+
input.reportProgress?.({
|
|
23
|
+
phase: "docs",
|
|
24
|
+
message: "BFS: mapping document fragments to domain contexts.",
|
|
25
|
+
});
|
|
26
|
+
const fragmentContextMentions = buildFragmentContextMentions(input.fragments, input.model);
|
|
27
|
+
const linkByTermId = new Map(input.links.map((link) => [link.termId, link]));
|
|
28
|
+
const termContextEntries = [];
|
|
29
|
+
let lastHeartbeatAt = Date.now();
|
|
30
|
+
for (const [index, term] of input.terms.entries()) {
|
|
31
|
+
const now = Date.now();
|
|
32
|
+
if (now - lastHeartbeatAt >= 5000) {
|
|
33
|
+
input.reportProgress?.({
|
|
34
|
+
phase: "docs",
|
|
35
|
+
message: `BFS: mapped ${index}/${input.terms.length} glossary term context(s).`,
|
|
36
|
+
elapsedMs: now - lastHeartbeatAt,
|
|
37
|
+
});
|
|
38
|
+
lastHeartbeatAt = now;
|
|
39
|
+
}
|
|
40
|
+
termContextEntries.push([
|
|
41
|
+
term.termId,
|
|
42
|
+
collectTermContexts(term, linkByTermId.get(term.termId), fragmentContextMentions, input.model),
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
const termContexts = new Map(termContextEntries);
|
|
46
|
+
input.reportProgress?.({
|
|
47
|
+
phase: "docs",
|
|
48
|
+
message: "BFS: building attraction signals from glossary, rules, and invariants.",
|
|
49
|
+
});
|
|
50
|
+
const attractionSignals = buildAttractionSignals({
|
|
51
|
+
terms: input.terms,
|
|
52
|
+
termContexts,
|
|
53
|
+
rules: input.rules,
|
|
54
|
+
invariants: input.invariants,
|
|
55
|
+
fragments: input.fragments,
|
|
56
|
+
fragmentContextMentions,
|
|
57
|
+
model: input.model,
|
|
58
|
+
...(input.reportProgress ? { reportProgress: input.reportProgress } : {}),
|
|
59
|
+
});
|
|
60
|
+
const localizedSignals = attractionSignals.filter((signal) => signal.contexts.length === 1);
|
|
61
|
+
const ambiguousSignals = attractionSignals.filter((signal) => signal.contexts.length > 1);
|
|
62
|
+
const A = computeAttractionScore(attractionSignals);
|
|
63
|
+
if (attractionSignals.length === 0) {
|
|
64
|
+
unknowns.push("Terms, rules, and invariants tied to contexts are too weakly observed, so A(P) is provisional.");
|
|
65
|
+
}
|
|
66
|
+
const separationFragments = input.fragments.filter((fragment) => {
|
|
67
|
+
const mentions = fragmentContextMentions.get(fragment.fragmentId) ?? [];
|
|
68
|
+
return mentions.length >= 2 && hasSeparationSignal(fragment.text);
|
|
69
|
+
});
|
|
70
|
+
const explicitSeparationScore = separationFragments.length > 0 ? 1 : 0.5;
|
|
71
|
+
if (separationFragments.length === 0) {
|
|
72
|
+
unknowns.push("Explicit separation evidence such as ownership or security is limited, so part of R(P) is approximate.");
|
|
73
|
+
}
|
|
74
|
+
const modelCoverageScore = average(input.modelCodeLinks.map((link) => link.coverage), 0.55);
|
|
75
|
+
input.reportProgress?.({
|
|
76
|
+
phase: "docs",
|
|
77
|
+
message: "BFS: evaluating code-level separation and model coverage.",
|
|
78
|
+
});
|
|
79
|
+
const codeBoundaryStrength = computeCodeBoundaryStrength({
|
|
80
|
+
applicableReferences: input.contractUsage.applicableReferences,
|
|
81
|
+
adherence: input.contractUsage.adherence,
|
|
82
|
+
leakCount: input.leakFindings.length,
|
|
83
|
+
modelCoverageScore,
|
|
84
|
+
});
|
|
85
|
+
if (input.contractUsage.applicableReferences === 0) {
|
|
86
|
+
unknowns.push("There are too few cross-context references to derive strong code-level separation evidence.");
|
|
87
|
+
}
|
|
88
|
+
const R = computeSeparationScore({
|
|
89
|
+
attractionSignalCount: attractionSignals.length,
|
|
90
|
+
localizedSignalCount: localizedSignals.length,
|
|
91
|
+
explicitSeparationScore,
|
|
92
|
+
codeBoundaryStrength,
|
|
93
|
+
modelCoverageScore,
|
|
94
|
+
});
|
|
95
|
+
const confidenceSignals = [
|
|
96
|
+
attractionSignals.length > 0
|
|
97
|
+
? average(attractionSignals.map((signal) => signal.confidence), 0.55)
|
|
98
|
+
: 0.5,
|
|
99
|
+
separationFragments.length > 0 ? 0.8 : 0.55,
|
|
100
|
+
input.model.contexts.length >= 2 ? 0.85 : 0.35,
|
|
101
|
+
input.contractUsage.applicableReferences > 0 ? 0.85 : 0.6,
|
|
102
|
+
];
|
|
103
|
+
if (input.model.contexts.length < 2) {
|
|
104
|
+
unknowns.push("Fewer than two contexts were defined, so BFS should be interpreted carefully.");
|
|
105
|
+
}
|
|
106
|
+
if (input.modelCodeLinks.some((link) => link.coverage === 0)) {
|
|
107
|
+
diagnostics.push("Some contexts could not be linked to code, which lowers model coverage.");
|
|
108
|
+
}
|
|
109
|
+
input.reportProgress?.({
|
|
110
|
+
phase: "docs",
|
|
111
|
+
message: "BFS: building evidence and confidence summary.",
|
|
112
|
+
});
|
|
113
|
+
return {
|
|
114
|
+
A,
|
|
115
|
+
R,
|
|
116
|
+
confidence: clamp01(average(confidenceSignals, 0.55)),
|
|
117
|
+
evidence: buildBoundaryFitnessEvidence({
|
|
118
|
+
localizedSignals,
|
|
119
|
+
ambiguousSignals,
|
|
120
|
+
separationFragments,
|
|
121
|
+
fragmentContextMentions,
|
|
122
|
+
}),
|
|
123
|
+
unknowns,
|
|
124
|
+
diagnostics,
|
|
125
|
+
details: {
|
|
126
|
+
localizedSignals: localizedSignals.length,
|
|
127
|
+
ambiguousSignals: ambiguousSignals.length,
|
|
128
|
+
explicitSeparationSignals: separationFragments.length,
|
|
129
|
+
mappedTerms: Array.from(termContexts.values()).filter((contexts) => contexts.length > 0).length,
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Fragment } from "./contracts.js";
|
|
2
|
+
import { toEvidence } from "./response.js";
|
|
3
|
+
type AttractionSignal = {
|
|
4
|
+
summary: string;
|
|
5
|
+
contexts: string[];
|
|
6
|
+
confidence: number;
|
|
7
|
+
kind: string;
|
|
8
|
+
fragmentIds?: string[];
|
|
9
|
+
linkedEntities?: string[];
|
|
10
|
+
};
|
|
11
|
+
export declare function buildBoundaryFitnessEvidence(input: {
|
|
12
|
+
localizedSignals: AttractionSignal[];
|
|
13
|
+
ambiguousSignals: AttractionSignal[];
|
|
14
|
+
separationFragments: Fragment[];
|
|
15
|
+
fragmentContextMentions: Map<string, string[]>;
|
|
16
|
+
}): ReturnType<typeof toEvidence>[];
|
|
17
|
+
export {};
|