d6a8d73aec
Repo VERT/convergé à l'ouverture (run_ci 33 PASS·0 FAIL·0 SKIP). Balayage lecture-seule multi-surface avant tout travail (anti-gate-N+1 #5) : 24/24 modules CI-câblés+régression-couverts+fiche-documentés ; docstring↔code CLEAN (3 classes, sous-agent Explore) ; registre décisions ouvertes D-01..D-05 encore ouverts + citations file:line encore exactes (re-vérifiées) ; publiciste build/ gitignore-d, fiche exacte ; sweep CWD-hétérogène écarté (faux positifs — gate exécute les gen depuis leur module par conception). FINDING — axe robustesse non couvert : check_artifacts prouve la direction AVANT (produit⊆commité, itère les fichiers produits l.71-93) mais JAMAIS l'INVERSE (un out/ commité orphelin, plus émis par build, passerait silencieusement). Sweep exécuté (lecture seule, rejouable) : 58 fichiers out/ commités, 57 reproduits par build. Le seul « orphelin » = qa/regression/out/regression_run.json, BY DESIGN artefact d'EXÉCUTION (run, pas build) exclu du contrat build (docstring check_artifacts l.21-24) et byte-gaté séparément par check_regression.sh → 0 orphelin réel, bijection inverse tient. PAS un gate (#5) : AVANT déjà gaté ; INVERSE empiriquement propre + transitivement attrapé (tout consommateur reproductible lisant un out/ périmé casse check_artifacts). Consigné comme sweep rejouable, sibling des sweeps hash-seed/locale-TZ/forward-compat. Portée : 0 prod, 0 artefact rebuild, 0 gate ajouté (#5), 0 chiffre saisi (#6 — 8/24/33/58/57 recomputés), 0 VPS (#8). Seule édition : le journal. run_ci 33 PASS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>