/** * Garde de régression pour la métrique "recoverable-before-model" (v2.7). * * Design: docs/superpowers/specs/2026-07-07-recoverable-before-model-metric-design.md §4.C * * Intention du design doc : `countReachingModel(corpus, { pattern: on }) ≤ * countReachingModel(corpus, { pattern: off })`, pour transformer la métrique * en garde-fou — un nouveau pattern déterministe qui ne réduit jamais le * bucket AI-reachable est redondant ou masqué par un pattern de priorité * plus basse. * * Contrainte réelle de `token_level_merge` : ce n'est PAS un opt-in (toujours * dans `PATTERNS`, priority 65 — cf. packages/core/CLAUDE.md, "dérogation * délibérée"). Il n'existe donc pas de flag `{ token_level_merge: off }` à * passer à `resolve()`. On ne peut pas littéralement A/B tester le pipeline. * * Surrogate utilisé ici, dérivé de l'ordre de priorité (classifier.ts, * `65 < 970 < 998 < 999`) : un hunk classifié `token_level_merge` a par * construction déjà échoué tous les patterns triviaux (priority 10–60) — s'il * n'existait pas, la classification continuerait vers `refactoring_aware_merge` * (970, désactivé ici) puis `llm_proposed`/`complex` (998/999). Donc, sans * `refactoringAware` activé, chaque hunk réellement capturé par * `token_level_merge` serait tombé dans le bucket model/unresolved en son * absence. `countReachingModel(off)` hypothétique = `countReachingModel(on)` * + (nombre de hunks classifiés `token_level_merge`). * * Ça rend le test non-tautologique : si `token_level_merge` cesse de capturer * quoi que ce soit dans le corpus (pattern cassé, masqué par un pattern * inséré à une priorité plus basse, detect() régressé), `tokenLevelMergeCount` * tombe à 0 et l'assertion stricte échoue. */ export {}; //# sourceMappingURL=regression-guard-tiers.test.d.ts.map