[DTP-Worker] Sprint 8 · buffer · Legal/CONFOTUR (2e surface) : la CROSS-COHÉRENCE PERMISSIONS du DocType — le CŒUR sécurité du livrable — énumérait EN PROSE, PAR rôle, son portail ET son jeu d'ACTIONS RBAC sans AUCUN gate d'IDENTITÉ.
Le §« Cœur du livrable : cross-cohérence » →Permissions du README legal/confotur énumère À LA MAIN, PAR rôle, role_id + portail + actions (« mot pour mot les permissions_cibles RBAC … ni ajout ni retrait ») : `ventes-confotur` (Ventes) → read/write/create/print · `legal-onapi` (Direction) → read/write/create · `legal-directeur` (Direction) → read/write/**submit**/report. Le bloc CONFOTUR existant ne gate QUE le COMPTE (« 3 rôles ») — AVEUGLE à leur identité. Ces 3 lignes sont DATA-DERIVED d'out/MANIFEST.json (roles_rbac_utilises[] : role_id · portail · permissions, recomputé du contrat rbac_50_roles.json à chaque build) et projetées dans out/doctype_confotur_application.json (permissions[] par nom de rôle) — les DEUX byte-gatés par check_artifacts. PIÈGE : le compte « 3 rôles » ne voit pas l'identité → PROMOUVOIR ventes-confotur à submit (élévation de privilège cassant la séparation des pouvoirs dont is_submittable est déduit) · RETIRER une action · RÉAFFECTER un portail · RENOMMER un rôle · AJOUTER une ligne fantôme laissait la prose périmée pendant que les artefacts disent autre chose → l'agent ERPNext Backend câblerait le mauvais jeu de permissions (le risque même que la cross-cohérence veut prévenir) — « vert trompeur » qu'aucune suite tests/ (qui teste des FONCTIONS de mapping RBAC, pas la prose) n'attrape. Même patron d'IDENTITÉ que le catalogue RBAC fixtures_gen (singleton set_user_permissions) et la cross-cohérence e-CF DGII. Nouveau bloc dans ci/check_readme_claims.sh (après le bloc de comptes CONFOTUR) : (1) jeu d'actions + portail de CHAQUE rôle recomputés de roles_rbac_utilises[], prose exigée EXACTE (set-diff · casse normalisée) ; (2) identité d'ensemble README⇔MANIFEST (aucun rôle fantôme NI manquant). Cohérences croisées en bonus (mordent un artefact INTERNEMENT incohérent) : MANIFEST ⇄ DocType d'accord sur le jeu d'actions par rôle · séparation des pouvoirs — submit porté par EXACTEMENT un rôle (legal-directeur) et is_submittable==True déduit de sa présence (README:31). Un claim absent échoue AUSSI. 7 morsures vérifiées : README promeut ventes-confotur à submit (en trop=[submit]) · README réaffecte legal-onapi Direction→Ventes (portail) · README retire report de legal-directeur (absents=[report]) · README renomme un role_id (fantôme=[legal-conseil] + manquant=[legal-onapi]) · énumération supprimée (INTROUVABLE) · artefact MANIFEST promeut ventes-confotur à submit (README périmé + séparation cassée + incohérence MANIFEST⇄DocType) · artefact DocType is_submittable=false alors qu'un rôle porte submit (incohérence interne) ; restauré = green : 3 rôles portail+actions == MANIFEST · identité d'ensemble · submit singleton · is_submittable=True · exit 0. État courant : aucun jeu d'actions périmé (anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md (table + détail « 2e surface CONFOTUR ») mis à jour · working tree byte-restauré (git checkout --, JAMAIS git clean) · 7 gates re-verts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+30
-2
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user