Scoring Model¶
Composite Drift Score¶
Individual signal scores are combined into a weighted composite:
Count Dampening¶
Logarithmic dampening prevents signals with many low-confidence findings from dominating:
- \(\overline{s}\) = mean finding score
- \(n\) = finding count
- \(k\) = dampening constant (default: 10)
Effect: 1 finding at 0.5 → dampened to 0.27. 15 findings at 0.5 → full 0.5.
Default Weights¶
19 signals are currently scoring-active. Weights are normalised at runtime; auto_calibrate (default: on) rebalances based on signal variance.
| Signal | Weight | Rationale |
|---|---|---|
| Pattern Fragmentation (PFS) | 0.16 | Highest ablation-study impact on F1 |
| Architecture Violation (AVS) | 0.16 | Critical for maintainability |
| Mutant Duplicate (MDS) | 0.13 | Common AI pattern |
| Explainability Deficit (EDS) | 0.09 | Important but noisy |
| System Misalignment (SMS) | 0.08 | Cross-module novelty detection |
| Doc-Implementation Drift (DIA) | 0.04 | Promoted from report-only (v0.7.0) |
| Broad Exception Monoculture (BEM) | 0.04 | Promoted from report-only (v0.7.0) |
| Test Polarity Deficit (TPD) | 0.04 | Promoted from report-only (v0.7.0) |
| Naming Contract Violation (NBV) | 0.04 | Added in v0.7.0 (ADR-008) |
| Guard Clause Deficit (GCD) | 0.03 | Promoted from report-only (v0.7.0) |
| Bypass Accumulation (BAT) | 0.03 | Added in v0.7.0 (ADR-008) |
| Exception Contract Drift (ECM) | 0.03 | Added in v0.7.1 (ADR-008) |
| Phantom Reference (PHR) | 0.02 | Promoted for scoring in ADR-039 |
| Missing Authorization (MAZ) | 0.02 | Promoted for scoring in ADR-039 |
| Cohesion Deficit (COD) | 0.01 | Added in v0.7.3 as cohesion-focused coherence detector |
| Hardcoded Secret (HSC) | 0.01 | Promoted for scoring in ADR-039 |
| Insecure Default (ISD) | 0.01 | Promoted for scoring in ADR-039 |
| Co-Change Coupling (CCC) | 0.005 | Added in v0.8.0 for hidden git-history coupling without explicit imports |
| Fan-Out Explosion (FOE) | 0.005 | Promoted for scoring in ADR-039 |
Report-only Signals (weight=0.0)¶
The following signals are intentionally report-only in the default model and do not contribute to the composite score:
| Signal | Weight | Status |
|---|---|---|
| Temporal Volatility (TVS) | 0.0 | Report-only pending re-validation |
| TS Architecture (TSA) | 0.0 | Report-only |
| Circular Import (CIR) | 0.0 | Report-only |
| Dead Code Accumulation (DCA) | 0.0 | Report-only |
| Cognitive Complexity (CXS) | 0.0 | Report-only |
Core weights were originally calibrated via ablation study (remove each signal, measure F1 delta, assign proportional weight). Promoted signals received conservative initial weights. See ADR-003.
Historical note¶
Current default model snapshot: 24 total signals (19 scoring-active, 5 report-only).
The v0.5 benchmark study used 6 core signals at higher weights (PFS=0.22, AVS=0.22, MDS=0.17, TVS=0.17, EDS=0.12, SMS=0.10) with 4 report-only signals at weight 0.00. Precision claims in the study apply to that model. See ADR-007 for the original report-only rationale.
Severity Mapping¶
| Score Range | Severity |
|---|---|
| ≥ 0.80 | CRITICAL |
| ≥ 0.60 and < 0.80 | HIGH |
| ≥ 0.40 and < 0.60 | MEDIUM |
| ≥ 0.20 and < 0.40 | LOW |
| < 0.20 | INFO |
Module-Level Scoring¶
Findings are grouped by module path. Each module receives:
- Per-signal scores
- Composite score
- AI attribution ratio (% findings from AI-generated code)
- Top signal identifier