[DTP-Worker] Sprint 8 · buffer L75 · Domaine CRM (2e surface) : la phrase « SÉPARATION DES POUVOIRS » du README workflow_vente ÉNUMÉRAIT À LA MAIN ses transitions quatre-yeux (« confirmer réservation, signer contrat, approuver CONFOTUR, annuler/résilier — allow_self_approval = 0 ») sans AUCUN gate d'IDENTITÉ. Le bloc CRM existant gate le COMPTE états/transitions (9/11 · titre pipeline README workflow + « N états » README dossier_vente) MAIS PAS l'IDENTITÉ des transitions marquées separation_of_duties — surface data-derived distincte du MÊME README. Cet ensemble dérive de crm/workflow_vente/out/workflow.json (byte-gaté par check_artifacts) : chaque transition porte allow_self_approval ; l'ensemble QUATRE-YEUX = {action | allow_self_approval == 0} — précisément ce que le README énumère. Le bloc de COMPTE reste AVEUGLE au contenu : (a) DÉCLASSER une transition sensible (ex. « Signer contrat » repasse à self=1 dans le contrat) laisse le compte à 9/11 pendant que l'artefact retire l'action de l'ensemble — la prose reste à 5 actions FAUSSES ; (b) PROMOUVOIR une transition (« Déposer CONFOTUR » → self=0) l'ajoute sans que le compte bouge et la prose l'OMET ; (c) un ÉCHANGE/RENOMMAGE d'action passe aussi — « vert trompeur » qu'aucune suite tests/ (qui teste des FONCTIONS de graphe, pas la prose) n'attrape → nouveau bloc dans check_readme_claims recomputant l'ENSEMBLE des actions quatre-yeux depuis workflow.json (zéro duplication du flag du générateur) et exigeant que la phrase l'énumère EXACTEMENT. Contrôle par ENSEMBLE (absent ET en trop mordus via set-diff), normalisation casse ignorée + suffixe « (perdu) » élidé (les deux transitions vers l'état Perdu — Annuler/Résilier — que la prose groupe « annuler/résilier »). Même patron que l'énumération des onglets Mobile, des open items de l'audit 5D ou de la carte de renormalisation 4Big. Cohérence croisée en bonus : 0 < |quatre-yeux| < |transitions| (l'ensemble sensible est NON VIDE — sinon la garde est vacante — et STRICT — sinon tout le graphe serait bloqué en quatre-yeux). Un claim absent échoue AUSSI (4 morsures vérifiées : déclassement Signer contrat capté là où le compte reste 9/11 · promotion Déposer CONFOTUR captée · échange prose signer contrat→signer bail capté · énumération supprimée = INTROUVABLE ; restauré = green : {annuler, approuver confotur, confirmer réservation, résilier, signer contrat} == workflow.json). État courant : aucune action périmée (anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md (table + détail) mis à jour · 7 gates re-verts.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1812,3 +1812,21 @@ verrouillés) · `guard_constraints` · `validate_json`.
|
||||
**Hors périmètre worker (VPS · #8)** : néant (gate bash/python3 stdlib en-repo).
|
||||
|
||||
**Auto-score 4Big** : 96/100.
|
||||
|
||||
## Sprint 8 · buffer · CRM séparation des pouvoirs (2e surface workflow_vente)
|
||||
- **Constat** : le README `crm/workflow_vente` énumérait À LA MAIN les transitions
|
||||
quatre-yeux (« confirmer réservation, signer contrat, approuver CONFOTUR,
|
||||
annuler/résilier — `allow_self_approval = 0` »). Le bloc CRM existant ne gatait
|
||||
que le COMPTE états/transitions (9/11) — aveugle à l'IDENTITÉ des transitions à
|
||||
`separation_of_duties`.
|
||||
- **Gate ajouté** (`ci/check_readme_claims.sh`) : recompute l'ENSEMBLE
|
||||
`{action | allow_self_approval == 0}` depuis `out/workflow.json` (byte-gaté) et
|
||||
exige que la phrase README l'énumère EXACTEMENT (set-diff absent ET en trop ;
|
||||
casse ignorée + suffixe « (perdu) » élidé). Bonus : `0 < |quatre-yeux| < |trans|`.
|
||||
- **4 morsures vérifiées** : déclassement `Signer contrat` (self 0→1) capté là où
|
||||
le compte reste 9/11 · promotion `Déposer CONFOTUR` (self 1→0) captée · échange
|
||||
prose `signer contrat`→`signer bail` capté · énumération supprimée = INTROUVABLE ;
|
||||
restauré = green (`{annuler, approuver confotur, confirmer réservation, résilier,
|
||||
signer contrat}` == workflow.json).
|
||||
- État courant : aucune action périmée (anti-invention #6) — le défaut est la
|
||||
surface ungated. `ci/README.md` (table + détail) mis à jour · **7 gates re-verts**.
|
||||
|
||||
Reference in New Issue
Block a user