0752e35988
Classe « seuil data-derived recopié dans une garde de validation + sa prose, jamais ancré » (déjà couverte pour min_doc_bytes/min_test_methods de l'auditeur 4Big). Livrable Sprint 7 demo/scenarios : la garantie #3 du README énonce deux planchers RÉELLEMENT imposés par check_invariants bloc (c) — len(sc["beats"])<3, len(mods)<2 — mais recopiés à la main à 3 surfaces (comparaison `<`, message d'erreur « (min N) », prose README), aucune gatée. Muter « ≥ 3 beats »→« ≥ 4 » laissait check_readme_claims exit 0 (prouvé ungate). Gate re-dérive les 2 minima depuis la SEULE comparaison `<` (source unique #5) et exige message + prose == plancher effectif ; surface INTROUVABLE échoue (#6). 7 morsures adversariales (dont M3 SILENT-GREEN : code resserré `<3`→`<4` ⇒ message ET README mordent, preuve autorité=CODE). 39 tests OK (générateur inchangé) ; suite CI complète re-verte. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>