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
package/README.md
ADDED
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
# AI-Assisted Design Measurement Platform
|
|
2
|
+
|
|
3
|
+
Japanese version: [README.ja.md](README.ja.md)
|
|
4
|
+
|
|
5
|
+
This is a docs-first repository for measuring design quality with evidence, using AI-assisted extraction together with deterministic analyzers. The current implementation covers domain-design and architecture-design evaluation, and the documentation is split so future packs can extend the same measurement model without changing the reading model.
|
|
6
|
+
|
|
7
|
+
Japanese documents are the primary source of truth. English documents mirror the same structure and document roles.
|
|
8
|
+
|
|
9
|
+
## Start Reading
|
|
10
|
+
|
|
11
|
+
1. [docs/README.md](docs/README.md)
|
|
12
|
+
2. [docs/guides/user-guide.md](docs/guides/user-guide.md)
|
|
13
|
+
3. [docs/guides/repo-apply-playbook.md](docs/guides/repo-apply-playbook.md)
|
|
14
|
+
4. [docs/concepts/measurement-model.md](docs/concepts/measurement-model.md)
|
|
15
|
+
5. [docs/reference/domain-design-metrics.md](docs/reference/domain-design-metrics.md)
|
|
16
|
+
6. [docs/reference/architecture-design-metrics.md](docs/reference/architecture-design-metrics.md)
|
|
17
|
+
7. [docs/implementation/runtime-and-commands.md](docs/implementation/runtime-and-commands.md)
|
|
18
|
+
|
|
19
|
+
## Documentation Map
|
|
20
|
+
|
|
21
|
+
- [docs/README.md](docs/README.md): documentation index
|
|
22
|
+
- [docs/guides/user-guide.md](docs/guides/user-guide.md): quickest path for first-time CLI use
|
|
23
|
+
- [docs/guides/repo-apply-playbook.md](docs/guides/repo-apply-playbook.md): practical path for applying `context-probe` to an existing repo
|
|
24
|
+
- [docs/concepts/](docs/concepts): conceptual specifications and measurement model
|
|
25
|
+
- [docs/reference/](docs/reference): how to interpret metrics and summary scores
|
|
26
|
+
- [docs/implementation/](docs/implementation): how the current CLI computes and reports the metrics
|
|
27
|
+
- [docs/operations/](docs/operations): policy, CI, and collector operation guidance
|
|
28
|
+
- [docs/roadmap/](docs/roadmap): phased rollout and experimental notes
|
|
29
|
+
|
|
30
|
+
## First Commands To Learn
|
|
31
|
+
|
|
32
|
+
- `score.compute`
|
|
33
|
+
- `report.generate`
|
|
34
|
+
- `gate.evaluate`
|
|
35
|
+
- `review.list_unknowns`
|
|
36
|
+
|
|
37
|
+
## Core Principles
|
|
38
|
+
|
|
39
|
+
- Use AI as an evidence extractor and ambiguity reducer, not as the scorer.
|
|
40
|
+
- Compute scores through fixed formulas and deterministic analysis.
|
|
41
|
+
- Attach `evidence`, `confidence`, `unknowns`, and `provenance` to every metric.
|
|
42
|
+
- Prefer candidate comparison and time-series comparison over cross-organization ranking.
|
|
43
|
+
- Add new evaluation domains as packs on top of a shared measurement foundation.
|
|
44
|
+
|
|
45
|
+
## Current Implementation
|
|
46
|
+
|
|
47
|
+
- TypeScript / Node CLI implementation is available.
|
|
48
|
+
- Phase 1 capabilities include dependency analysis, boundary-leak detection, evolutionary locality, score computation, reporting, and gate evaluation.
|
|
49
|
+
- Phase 2 entry points include external CLI extractors for `doc.extract_*`, evidence-backed term links via `trace.*`, and review log support via `review.resolve`.
|
|
50
|
+
- Pack boundaries for `domain_design` and `architecture_design` are already present for future expansion.
|
|
51
|
+
|
|
52
|
+
## Quick Start
|
|
53
|
+
|
|
54
|
+
Choose the shortest path for your goal:
|
|
55
|
+
|
|
56
|
+
- First-time CLI use: [docs/guides/user-guide.md](docs/guides/user-guide.md)
|
|
57
|
+
- Apply `context-probe` to an existing repo: [docs/guides/repo-apply-playbook.md](docs/guides/repo-apply-playbook.md)
|
|
58
|
+
- Run and maintain this repository's self-measurement: [docs/operations/self-measurement-runbook.md](docs/operations/self-measurement-runbook.md)
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npm install
|
|
62
|
+
npm run dev -- --help
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
If you want to try the published package entry point:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npx context-probe --help
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If you want the compiled CLI as well:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npm run build
|
|
75
|
+
node dist/src/cli.js --help
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Scaffold Inputs First
|
|
79
|
+
|
|
80
|
+
If you do not have a reviewed `--model` or `--constraints` file yet, scaffold one first and inspect `result.yaml`.
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npm run dev -- model.scaffold \
|
|
84
|
+
--repo . \
|
|
85
|
+
--docs-root docs
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npm run dev -- constraints.scaffold \
|
|
90
|
+
--repo .
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`constraints.scaffold` also returns reviewable starter drafts for architecture inputs in `result.drafts`: `scenarioCatalog`, `topologyModel`, and `boundaryMap`. Use those drafts as the starting point for docs-first repos when you need architecture input files before the first scoring run.
|
|
94
|
+
|
|
95
|
+
Treat every scaffold output as a review-first draft, not as an authoritative input. If you are applying `context-probe` to a new repo, the stable path is:
|
|
96
|
+
|
|
97
|
+
1. scaffold `model` and `constraints`
|
|
98
|
+
2. curate the YAML you actually want to keep
|
|
99
|
+
3. run a starter `score.compute`
|
|
100
|
+
4. add observation snapshots where proxy-heavy metrics matter
|
|
101
|
+
5. save an assessment note alongside the curated inputs
|
|
102
|
+
|
|
103
|
+
The full repo-application workflow is documented in [docs/guides/repo-apply-playbook.md](docs/guides/repo-apply-playbook.md).
|
|
104
|
+
|
|
105
|
+
### Measure Domain Design
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
npm run dev -- score.compute \
|
|
109
|
+
--repo . \
|
|
110
|
+
--model config/self-measurement/domain-model.yaml \
|
|
111
|
+
--policy fixtures/policies/default.yaml \
|
|
112
|
+
--domain domain_design
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Add `--docs-root docs` when you want document-derived metrics included in the run.
|
|
116
|
+
|
|
117
|
+
For large repos, `domain_design` is an authoritative run: keep the full model and docs inputs, let it finish, and read the final `status`, `result`, `unknowns`, `diagnostics`, and `provenance` instead of switching to a reduced profile just to shorten the wall time.
|
|
118
|
+
|
|
119
|
+
When you run the CLI in a TTY, or set `CONTEXT_PROBE_PROGRESS=1`, the scorer emits stage progress lines to stderr while it works. That output is advisory; the final JSON response remains the source of truth.
|
|
120
|
+
|
|
121
|
+
### Generate a Markdown Report
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npm run dev -- report.generate \
|
|
125
|
+
--repo . \
|
|
126
|
+
--model config/self-measurement/domain-model.yaml \
|
|
127
|
+
--policy fixtures/policies/default.yaml \
|
|
128
|
+
--domain domain_design \
|
|
129
|
+
--format md
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Measure Architecture Design
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npm run dev -- score.compute \
|
|
136
|
+
--repo . \
|
|
137
|
+
--constraints config/self-measurement/architecture-constraints.yaml \
|
|
138
|
+
--policy fixtures/policies/default.yaml \
|
|
139
|
+
--domain architecture_design
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
For architecture runs, `--constraints` is required instead of `--model`.
|
|
143
|
+
|
|
144
|
+
If you want self-measurement with fewer proxy fallbacks in `QSF`, `TIS`, `OAS`, and `EES`, pass the reviewed supporting inputs from `config/self-measurement/` as well.
|
|
145
|
+
|
|
146
|
+
Refresh the measured and derived architecture snapshots before a self-measurement run:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
npm run self:architecture:refresh
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Capture the intentional `IPS` contract baseline separately:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
npm run self:architecture:baseline
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Audit freshness drift without rewriting snapshots:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
npm run self:architecture:audit
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Run the CI-shaped local check that combines the advisory freshness audit with a score smoke:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npm run self:architecture:check
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
For release-time validation and packaging, use [docs/operations/release-preflight.md](docs/operations/release-preflight.md).
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
npm run dev -- score.compute \
|
|
174
|
+
--domain architecture_design \
|
|
175
|
+
--repo . \
|
|
176
|
+
--constraints config/self-measurement/architecture-constraints.yaml \
|
|
177
|
+
--complexity-export config/self-measurement/architecture-complexity-export.yaml \
|
|
178
|
+
--boundary-map config/self-measurement/architecture-boundary-map.yaml \
|
|
179
|
+
--contract-baseline config/self-measurement/architecture-contract-baseline.yaml \
|
|
180
|
+
--scenario-catalog config/self-measurement/architecture-scenarios.yaml \
|
|
181
|
+
--scenario-observations config/self-measurement/architecture-scenario-observations.yaml \
|
|
182
|
+
--topology-model config/self-measurement/architecture-topology.yaml \
|
|
183
|
+
--runtime-observations config/self-measurement/architecture-runtime-observations.yaml \
|
|
184
|
+
--telemetry-observations config/self-measurement/architecture-telemetry-observations.yaml \
|
|
185
|
+
--pattern-runtime-observations config/self-measurement/architecture-pattern-runtime-observations.yaml \
|
|
186
|
+
--delivery-observations config/self-measurement/architecture-delivery-observations.yaml \
|
|
187
|
+
--policy fixtures/policies/default.yaml
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
These are reviewable snapshots, not live collectors. `scenario-observations` comes from local benchmarks. `telemetry`, `pattern runtime`, `delivery`, and the raw `architecture-complexity-snapshot.yaml` remain curated observation inputs. `complexity-export` is a derived artifact built from that raw complexity snapshot. `npm run self:architecture:refresh` refreshes the measured `scenario-observations` and the derived `boundary-map`. `npm run self:architecture:complexity` regenerates `architecture-complexity-export.yaml` from the curated complexity snapshot. `npm run self:architecture:baseline` captures the current contract surface into a reviewable `IPS` baseline and intentionally stays outside `refresh` so baseline deltas remain meaningful. `npm run self:architecture:audit` is the CI-friendly advisory check for freshness drift, and `npm run self:architecture:check` is the local/CI operational check that runs that audit plus a score smoke.
|
|
191
|
+
|
|
192
|
+
The expected maintenance loop is:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
npm run self:architecture:refresh
|
|
196
|
+
npm run self:architecture:complexity
|
|
197
|
+
npm run self:architecture:baseline # only when you intentionally want a new IPS comparison point
|
|
198
|
+
npm run self:architecture:check
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Coverage is also part of the quality gate now:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
npm run test:coverage
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
The operational sequence is summarized in [docs/operations/self-measurement-runbook.md](docs/operations/self-measurement-runbook.md).
|
|
208
|
+
|
|
209
|
+
For this repository specifically, some architecture unknowns are still expected limitations of a small CLI codebase: `ALR`, `FCC`, `SICR`, and `SLA` remain evidence-limited, and `PCS` remains a proxy composite. Treat those as self-measurement caveats, not immediate defects.
|
|
210
|
+
|
|
211
|
+
### Ingest Brownfield Evidence Through Source Config
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
npm run dev -- score.compute \
|
|
215
|
+
--domain architecture_design \
|
|
216
|
+
--repo fixtures/validation/scoring/qsf/repo \
|
|
217
|
+
--constraints fixtures/validation/scoring/qsf/constraints.yaml \
|
|
218
|
+
--policy fixtures/policies/default.yaml \
|
|
219
|
+
--contract-baseline-source fixtures/examples/architecture-sources/contract-baseline-source.file.yaml \
|
|
220
|
+
--scenario-catalog fixtures/validation/scoring/qsf/scenarios.yaml \
|
|
221
|
+
--scenario-observation-source fixtures/examples/architecture-sources/scenario-observation-source.command.yaml \
|
|
222
|
+
--telemetry-source fixtures/examples/architecture-sources/telemetry-source.command.yaml \
|
|
223
|
+
--telemetry-normalization-profile fixtures/validation/scoring/oas/raw-normalization-profile.yaml \
|
|
224
|
+
--complexity-source fixtures/examples/architecture-sources/complexity-source.command.yaml \
|
|
225
|
+
--profile layered
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Collector and source-config details are documented in [docs/operations/architecture-source-collectors.md](docs/operations/architecture-source-collectors.md).
|
|
229
|
+
|
|
230
|
+
### List Unknowns That Need Human Review
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
npm run dev -- review.list_unknowns \
|
|
234
|
+
--repo . \
|
|
235
|
+
--model config/self-measurement/domain-model.yaml \
|
|
236
|
+
--policy fixtures/policies/default.yaml \
|
|
237
|
+
--domain domain_design
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Advanced: Extract Glossary Terms With Codex CLI
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
npm run dev -- doc.extract_glossary \
|
|
244
|
+
--docs-root docs \
|
|
245
|
+
--extractor cli \
|
|
246
|
+
--provider codex
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Advanced: Re-run Extraction With a Review Log
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
npm run dev -- doc.extract_glossary \
|
|
253
|
+
--docs-root docs \
|
|
254
|
+
--extractor cli \
|
|
255
|
+
--provider claude \
|
|
256
|
+
--review-log path/to/review-log.json \
|
|
257
|
+
--apply-review-log
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Measure This Repository
|
|
261
|
+
|
|
262
|
+
Minimal self-measurement definitions are stored in [config/self-measurement/domain-model.yaml](config/self-measurement/domain-model.yaml), [config/self-measurement/architecture-constraints.yaml](config/self-measurement/architecture-constraints.yaml), [config/self-measurement/architecture-complexity-snapshot.yaml](config/self-measurement/architecture-complexity-snapshot.yaml), and [config/self-measurement/architecture-complexity-export.yaml](config/self-measurement/architecture-complexity-export.yaml).
|
|
263
|
+
|
|
264
|
+
### 1. Enable Git History
|
|
265
|
+
|
|
266
|
+
`ELS` reads Git history. In an uninitialized environment it will fall back to warnings and low confidence. If you have not initialized Git locally yet, run:
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
git init
|
|
270
|
+
git add .
|
|
271
|
+
git -c user.name="Context Probe" -c user.email="context-probe@example.com" commit -m "chore: initialize context-probe"
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### 2. Compute Domain-Design Score
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
npm run dev -- score.compute \
|
|
278
|
+
--domain domain_design \
|
|
279
|
+
--repo . \
|
|
280
|
+
--model config/self-measurement/domain-model.yaml \
|
|
281
|
+
--policy fixtures/policies/default.yaml
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### 3. Compute Architecture-Design Score
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
npm run dev -- score.compute \
|
|
288
|
+
--domain architecture_design \
|
|
289
|
+
--repo . \
|
|
290
|
+
--constraints config/self-measurement/architecture-constraints.yaml \
|
|
291
|
+
--complexity-export config/self-measurement/architecture-complexity-export.yaml \
|
|
292
|
+
--boundary-map config/self-measurement/architecture-boundary-map.yaml \
|
|
293
|
+
--scenario-catalog config/self-measurement/architecture-scenarios.yaml \
|
|
294
|
+
--scenario-observations config/self-measurement/architecture-scenario-observations.yaml \
|
|
295
|
+
--topology-model config/self-measurement/architecture-topology.yaml \
|
|
296
|
+
--runtime-observations config/self-measurement/architecture-runtime-observations.yaml \
|
|
297
|
+
--telemetry-observations config/self-measurement/architecture-telemetry-observations.yaml \
|
|
298
|
+
--pattern-runtime-observations config/self-measurement/architecture-pattern-runtime-observations.yaml \
|
|
299
|
+
--delivery-observations config/self-measurement/architecture-delivery-observations.yaml \
|
|
300
|
+
--policy fixtures/policies/default.yaml
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Without those supporting files, architecture self-measurement will still run, but many metrics fall back to neutral or proxy behavior.
|
|
304
|
+
|
|
305
|
+
### 4. Generate a Markdown Report
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
npm run dev -- report.generate \
|
|
309
|
+
--domain domain_design \
|
|
310
|
+
--repo . \
|
|
311
|
+
--model config/self-measurement/domain-model.yaml \
|
|
312
|
+
--policy fixtures/policies/default.yaml \
|
|
313
|
+
--format md
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
## Verification
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
npm run check
|
|
320
|
+
npm test
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
`npm test` includes extraction-quality regression checks backed by the curated golden corpus under `fixtures/validation/extraction/`. Those checks exercise the existing CLI commands such as `doc.extract_*`, `trace.link_terms`, and `review.list_unknowns` with `must_include`, `must_exclude`, `must_link_to_code`, and `max_review_items`.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { createContractSymbol, uniqueSymbols } from "./architecture-contract-declarations-shared.js";
|
|
2
|
+
const DART_CLASS_PATTERN = /^(?:(?:abstract|base|interface|final|sealed)\s+)*class\s+([A-Za-z_]\w*)\b/;
|
|
3
|
+
const DART_MIXIN_CLASS_PATTERN = /^(?:(?:base|abstract)\s+)*mixin\s+class\s+([A-Za-z_]\w*)\b/;
|
|
4
|
+
const DART_ENUM_PATTERN = /^enum\s+([A-Za-z_]\w*)\b/;
|
|
5
|
+
const DART_TYPEDEF_PATTERN = /^typedef\s+([A-Za-z_]\w*)\b/;
|
|
6
|
+
const DART_EXTENSION_TYPE_PATTERN = /^extension\s+type\s+([A-Za-z_]\w*)\b/;
|
|
7
|
+
const DART_FUNCTION_PATTERN = /^(?:external\s+)?(?:[A-Za-z_<>[\]?., ]+\s+)?([A-Za-z_]\w*)\s*\([^;]*\)\s*(?:=>|\{)/;
|
|
8
|
+
const DART_VALUE_PATTERN = /^(?:late\s+final|late|final|const|var|[A-Za-z_<>[\]?., ]+)\s+([A-Za-z_]\w*)\s*=/;
|
|
9
|
+
function stripComments(sourceText) {
|
|
10
|
+
return sourceText.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "");
|
|
11
|
+
}
|
|
12
|
+
function countBraceDelta(line) {
|
|
13
|
+
const opens = line.match(/\{/g)?.length ?? 0;
|
|
14
|
+
const closes = line.match(/\}/g)?.length ?? 0;
|
|
15
|
+
return opens - closes;
|
|
16
|
+
}
|
|
17
|
+
function isPublicDartSymbol(symbol) {
|
|
18
|
+
return Boolean(symbol && !symbol.startsWith("_"));
|
|
19
|
+
}
|
|
20
|
+
function collectDartTopLevelLines(sourceText) {
|
|
21
|
+
const lines = stripComments(sourceText).split("\n");
|
|
22
|
+
const topLevelLines = [];
|
|
23
|
+
let braceDepth = 0;
|
|
24
|
+
for (const line of lines) {
|
|
25
|
+
const trimmed = line.trim();
|
|
26
|
+
if (braceDepth === 0 && trimmed.length > 0 && !trimmed.startsWith("@")) {
|
|
27
|
+
topLevelLines.push(trimmed);
|
|
28
|
+
}
|
|
29
|
+
braceDepth = Math.max(0, braceDepth + countBraceDelta(line));
|
|
30
|
+
}
|
|
31
|
+
return topLevelLines;
|
|
32
|
+
}
|
|
33
|
+
export function analyzeDartContractDeclarations(pathValue, sourceText) {
|
|
34
|
+
const findings = [];
|
|
35
|
+
const symbols = [];
|
|
36
|
+
const topLevelLines = collectDartTopLevelLines(sourceText);
|
|
37
|
+
let exportCount = 0;
|
|
38
|
+
let stableExports = 0;
|
|
39
|
+
let riskyExports = 0;
|
|
40
|
+
let anyExports = 0;
|
|
41
|
+
for (const line of topLevelLines) {
|
|
42
|
+
let symbol;
|
|
43
|
+
let kind;
|
|
44
|
+
let stable = false;
|
|
45
|
+
let risky = false;
|
|
46
|
+
symbol = DART_MIXIN_CLASS_PATTERN.exec(line)?.[1];
|
|
47
|
+
if (isPublicDartSymbol(symbol)) {
|
|
48
|
+
stable = true;
|
|
49
|
+
kind = "class";
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
symbol = DART_CLASS_PATTERN.exec(line)?.[1];
|
|
53
|
+
if (isPublicDartSymbol(symbol)) {
|
|
54
|
+
stable = true;
|
|
55
|
+
kind = "class";
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
symbol = DART_ENUM_PATTERN.exec(line)?.[1];
|
|
59
|
+
if (isPublicDartSymbol(symbol)) {
|
|
60
|
+
stable = true;
|
|
61
|
+
kind = "enum";
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
symbol = DART_TYPEDEF_PATTERN.exec(line)?.[1];
|
|
65
|
+
if (isPublicDartSymbol(symbol)) {
|
|
66
|
+
stable = true;
|
|
67
|
+
kind = "type_alias";
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
symbol = DART_EXTENSION_TYPE_PATTERN.exec(line)?.[1];
|
|
71
|
+
if (isPublicDartSymbol(symbol)) {
|
|
72
|
+
stable = true;
|
|
73
|
+
kind = "type_alias";
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
symbol = DART_FUNCTION_PATTERN.exec(line)?.[1] ?? DART_VALUE_PATTERN.exec(line)?.[1];
|
|
77
|
+
if (isPublicDartSymbol(symbol)) {
|
|
78
|
+
risky = true;
|
|
79
|
+
kind = DART_FUNCTION_PATTERN.test(line) ? "function" : "value";
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if ((!stable && !risky) || !symbol || !kind) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
exportCount += 1;
|
|
90
|
+
const loose = /\bdynamic\b/.test(line);
|
|
91
|
+
if (stable) {
|
|
92
|
+
stableExports += 1;
|
|
93
|
+
}
|
|
94
|
+
if (risky) {
|
|
95
|
+
riskyExports += 1;
|
|
96
|
+
findings.push({
|
|
97
|
+
kind: "contract_backward_compatibility_risk",
|
|
98
|
+
path: pathValue,
|
|
99
|
+
confidence: 0.84,
|
|
100
|
+
note: `${pathValue} contains a public contract derived from a function or value.`,
|
|
101
|
+
...(symbol ? { symbol } : {}),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
if (loose) {
|
|
105
|
+
anyExports += 1;
|
|
106
|
+
findings.push({
|
|
107
|
+
kind: "breaking_change_risk",
|
|
108
|
+
path: pathValue,
|
|
109
|
+
confidence: 0.88,
|
|
110
|
+
note: `${pathValue} contains 'dynamic' in a public contract.`,
|
|
111
|
+
...(symbol ? { symbol } : {}),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
symbols.push(createContractSymbol({
|
|
115
|
+
name: symbol,
|
|
116
|
+
kind,
|
|
117
|
+
stability: stable ? "stable" : "risky",
|
|
118
|
+
loose,
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
exportCount,
|
|
123
|
+
stableExports,
|
|
124
|
+
riskyExports,
|
|
125
|
+
anyExports,
|
|
126
|
+
symbols: uniqueSymbols(symbols),
|
|
127
|
+
findings,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { declarationContainsAny, getDeclarationName, getEcmaExportKind, getRiskyExportKind, getVariableDeclarationNames, hasExportModifier, isRiskyEcmaExport, isStableEcmaExport, } from "./architecture-contract-declarations-ecma-shared.js";
|
|
3
|
+
import { createContractSymbol, uniqueSymbols } from "./architecture-contract-declarations-shared.js";
|
|
4
|
+
export function analyzeEcmaContractDeclarations(pathValue, sourceText) {
|
|
5
|
+
const sourceFile = ts.createSourceFile(pathValue, sourceText, ts.ScriptTarget.ES2022, true);
|
|
6
|
+
const findings = [];
|
|
7
|
+
const symbols = [];
|
|
8
|
+
let exportCount = 0;
|
|
9
|
+
let stableExports = 0;
|
|
10
|
+
let riskyExports = 0;
|
|
11
|
+
let anyExports = 0;
|
|
12
|
+
sourceFile.forEachChild((node) => {
|
|
13
|
+
if (!hasExportModifier(node) && !ts.isExportAssignment(node)) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const loose = declarationContainsAny(node, sourceFile);
|
|
17
|
+
if (loose) {
|
|
18
|
+
anyExports += 1;
|
|
19
|
+
}
|
|
20
|
+
if (isStableEcmaExport(node)) {
|
|
21
|
+
exportCount += 1;
|
|
22
|
+
stableExports += 1;
|
|
23
|
+
const symbol = getDeclarationName(node);
|
|
24
|
+
const kind = getEcmaExportKind(node);
|
|
25
|
+
if (symbol) {
|
|
26
|
+
symbols.push(createContractSymbol({
|
|
27
|
+
name: symbol,
|
|
28
|
+
kind,
|
|
29
|
+
stability: "stable",
|
|
30
|
+
loose,
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
if (loose) {
|
|
34
|
+
findings.push({
|
|
35
|
+
kind: "breaking_change_risk",
|
|
36
|
+
path: pathValue,
|
|
37
|
+
confidence: 0.88,
|
|
38
|
+
note: `${pathValue} contains 'any' in a public contract.`,
|
|
39
|
+
...(symbol ? { symbol } : {}),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!isRiskyEcmaExport(node)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
exportCount += 1;
|
|
48
|
+
riskyExports += 1;
|
|
49
|
+
const symbolNames = ts.isVariableStatement(node)
|
|
50
|
+
? getVariableDeclarationNames(node)
|
|
51
|
+
: [getDeclarationName(node) ?? (ts.isExportAssignment(node) ? "default" : "default")];
|
|
52
|
+
const kind = getRiskyExportKind(node);
|
|
53
|
+
if (symbolNames.length === 0) {
|
|
54
|
+
symbolNames.push("default");
|
|
55
|
+
}
|
|
56
|
+
for (const symbol of symbolNames) {
|
|
57
|
+
symbols.push(createContractSymbol({
|
|
58
|
+
name: symbol,
|
|
59
|
+
kind,
|
|
60
|
+
stability: "risky",
|
|
61
|
+
loose,
|
|
62
|
+
}));
|
|
63
|
+
findings.push({
|
|
64
|
+
kind: "contract_backward_compatibility_risk",
|
|
65
|
+
path: pathValue,
|
|
66
|
+
confidence: 0.86,
|
|
67
|
+
note: `${pathValue} exports a public contract outside interface/type/enum declarations.`,
|
|
68
|
+
...(symbol ? { symbol } : {}),
|
|
69
|
+
});
|
|
70
|
+
if (loose) {
|
|
71
|
+
findings.push({
|
|
72
|
+
kind: "breaking_change_risk",
|
|
73
|
+
path: pathValue,
|
|
74
|
+
confidence: 0.88,
|
|
75
|
+
note: `${pathValue} contains 'any' in a public contract.`,
|
|
76
|
+
...(symbol ? { symbol } : {}),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
exportCount,
|
|
83
|
+
stableExports,
|
|
84
|
+
riskyExports,
|
|
85
|
+
anyExports,
|
|
86
|
+
symbols: uniqueSymbols(symbols),
|
|
87
|
+
findings,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { ArchitectureContractBaselineSymbolKind } from "../core/contracts.js";
|
|
3
|
+
export declare function hasExportModifier(node: ts.Node): boolean;
|
|
4
|
+
export declare function getDeclarationName(node: ts.Node): string | undefined;
|
|
5
|
+
export declare function isStableEcmaExport(node: ts.Node): boolean;
|
|
6
|
+
export declare function isRiskyEcmaExport(node: ts.Node): boolean;
|
|
7
|
+
export declare function declarationContainsAny(node: ts.Node, sourceFile: ts.SourceFile): boolean;
|
|
8
|
+
export declare function getVariableDeclarationNames(node: ts.VariableStatement): string[];
|
|
9
|
+
export declare function getEcmaExportKind(node: ts.Node): ArchitectureContractBaselineSymbolKind;
|
|
10
|
+
export declare function getRiskyExportKind(node: ts.Node): ArchitectureContractBaselineSymbolKind;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
export function hasExportModifier(node) {
|
|
3
|
+
if (!ts.canHaveModifiers(node)) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
const modifiers = ts.getModifiers(node);
|
|
7
|
+
return Boolean(modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword));
|
|
8
|
+
}
|
|
9
|
+
export function getDeclarationName(node) {
|
|
10
|
+
const namedNode = node;
|
|
11
|
+
if (namedNode.name && ts.isIdentifier(namedNode.name)) {
|
|
12
|
+
return namedNode.name.text;
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
export function isStableEcmaExport(node) {
|
|
17
|
+
return ts.isInterfaceDeclaration(node) || ts.isTypeAliasDeclaration(node) || ts.isEnumDeclaration(node);
|
|
18
|
+
}
|
|
19
|
+
export function isRiskyEcmaExport(node) {
|
|
20
|
+
return (ts.isClassDeclaration(node) ||
|
|
21
|
+
ts.isFunctionDeclaration(node) ||
|
|
22
|
+
ts.isVariableStatement(node) ||
|
|
23
|
+
ts.isExportAssignment(node));
|
|
24
|
+
}
|
|
25
|
+
export function declarationContainsAny(node, sourceFile) {
|
|
26
|
+
return /\bany\b/.test(node.getText(sourceFile));
|
|
27
|
+
}
|
|
28
|
+
export function getVariableDeclarationNames(node) {
|
|
29
|
+
return node.declarationList.declarations.flatMap((declaration) => {
|
|
30
|
+
if (ts.isIdentifier(declaration.name)) {
|
|
31
|
+
return [declaration.name.text];
|
|
32
|
+
}
|
|
33
|
+
return [];
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
export function getEcmaExportKind(node) {
|
|
37
|
+
if (ts.isInterfaceDeclaration(node)) {
|
|
38
|
+
return "interface";
|
|
39
|
+
}
|
|
40
|
+
if (ts.isTypeAliasDeclaration(node)) {
|
|
41
|
+
return "type_alias";
|
|
42
|
+
}
|
|
43
|
+
return "enum";
|
|
44
|
+
}
|
|
45
|
+
export function getRiskyExportKind(node) {
|
|
46
|
+
if (ts.isClassDeclaration(node)) {
|
|
47
|
+
return "class";
|
|
48
|
+
}
|
|
49
|
+
if (ts.isFunctionDeclaration(node)) {
|
|
50
|
+
return "function";
|
|
51
|
+
}
|
|
52
|
+
if (ts.isVariableStatement(node)) {
|
|
53
|
+
return "value";
|
|
54
|
+
}
|
|
55
|
+
return "default_export";
|
|
56
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { analyzeEcmaContractDeclarations } from "./architecture-contract-declarations-ecma-core.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { analyzeEcmaContractDeclarations } from "./architecture-contract-declarations-ecma-core.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArchitectureContractBaselineSymbol, ArchitectureContractBaselineSymbolKind } from "../core/contracts.js";
|
|
2
|
+
export declare function createContractSymbol(input: {
|
|
3
|
+
name: string;
|
|
4
|
+
kind: ArchitectureContractBaselineSymbolKind;
|
|
5
|
+
stability: "stable" | "risky";
|
|
6
|
+
loose: boolean;
|
|
7
|
+
}): ArchitectureContractBaselineSymbol;
|
|
8
|
+
export declare function uniqueSymbols(symbols: ArchitectureContractBaselineSymbol[]): ArchitectureContractBaselineSymbol[];
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function createContractSymbol(input) {
|
|
2
|
+
return {
|
|
3
|
+
name: input.name,
|
|
4
|
+
kind: input.kind,
|
|
5
|
+
stability: input.stability,
|
|
6
|
+
looseness: input.loose ? "loose" : "strict",
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export function uniqueSymbols(symbols) {
|
|
10
|
+
const seen = new Set();
|
|
11
|
+
const results = [];
|
|
12
|
+
for (const symbol of symbols) {
|
|
13
|
+
const key = `${symbol.name}:${symbol.kind}:${symbol.stability}:${symbol.looseness}`;
|
|
14
|
+
if (seen.has(key)) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
seen.add(key);
|
|
18
|
+
results.push(symbol);
|
|
19
|
+
}
|
|
20
|
+
return results;
|
|
21
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArchitectureConstraints, ArchitectureContractBaseline } from "../core/contracts.js";
|
|
2
|
+
import type { BaselineComparisonSummary } from "./architecture-contract-score-shared.js";
|
|
3
|
+
import type { ContractFileStats } from "./architecture-contract-stats.js";
|
|
4
|
+
export declare function analyzeBaselineComparison(options: {
|
|
5
|
+
baseline: ArchitectureContractBaseline;
|
|
6
|
+
currentStats: ContractFileStats[];
|
|
7
|
+
constraints: ArchitectureConstraints;
|
|
8
|
+
}): BaselineComparisonSummary | undefined;
|