[DTP-Worker 20260812_060044] hardening correctness · criteria.py — 3ᵉ détecteur regex durci (le SEUL non durci de la famille « détecter la forme, pas une graphie »)

_ADD_PARSER_RE exigeait la parenthèse collée (add_parser\(|add_subparsers\() → `add_subparsers ()` / `add_parser ("build")` (espace avant `(`, Python valide, PEP 8 déconseille sans imposer) silencieusement loupés → sous-scorage −20 pts du critère CLI d'un module sain (symptôme fd99362). Durci en add_parser\s*\(|add_subparsers\s*\(, harmonisé aux 2 frères déjà durcis (_TEST_DEF_RE `def\s+`, _MAIN_GUARD_RE `\s*==\s*`) et à la doctrine écrite du fichier (l.18-30 « détecter la forme, pas une graphie »). 4e fix de cette classe dans ce fichier après ac595d0/fd99362/35de616.

Fix latent (aucun module n'utilise l'espace → quality_report.json byte-identique, check_artifacts vert) mais teeth-prouvé (ancien regex False sur les 2 formes espacées, nouveau True + True sur les formes normales). Cores computationnels commissions/bancable audités CLEAN par ailleurs. run_ci 33 PASS 0 FAIL 0 SKIP · 0 gate (#5) · 0 chiffre inventé (#6) · 0 VPS (#8).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-12 06:05:35 +00:00
parent 1513e69a79
commit 37c68aca28
2 changed files with 24 additions and 1 deletions
@@ -22,7 +22,11 @@ import re
# autorité byte-gatée de la colonne « Tests » des fiches — les deux compteurs du
# MÊME concept doivent coïncider (sinon dérive d'évidence #6, cf. le fix ASCII).
_TEST_DEF_RE = re.compile(r"^\s*def\s+(test_\w+)\s*\(", re.MULTILINE)
_ADD_PARSER_RE = re.compile(r"add_parser\(|add_subparsers\(")
# `\s*` avant `(` : `add_subparsers ()` / `add_parser ("build")` sont du Python
# valide (PEP 8 déconseille l'espace mais le langage l'autorise). Même doctrine
# que ses détecteurs sœurs `_TEST_DEF_RE` / `_MAIN_GUARD_RE` — détecter la forme,
# pas une graphie (sinon sous-scorage silencieux d'un CLI sain · #6).
_ADD_PARSER_RE = re.compile(r"add_parser\s*\(|add_subparsers\s*\(")
# Garde `if __name__ == "__main__":` — les DEUX styles de guillemets sont du
# Python valide (PEP 8 n'impose rien), l'ordre des opérandes peut être inversé
# (« Yoda »), et l'espacement autour de `==` est libre. Un littéral figé