[DTP-Worker] Sprint 8 · buffer · RBAC/SPEC §3 : correction DÉFAUT FACTUEL (direction 10→9 · plateforme 5→6) + gate d'identité « Nb rôles » par portail ancré sur rbac_50_roles.json
La table §3 de RBAC_50_ROLES_SPEC.md avait dérivé du contrat en préservant le total 50 (10+5 vs 9+6) → invisible aux gates agrégés. Correction alignée sur la source + nouveau bloc check_readme_claims recomptant chaque portail (et le total) depuis rbac_50_roles.json. quality_report.json régénéré (evidence octets SPEC). 7 gates PASS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1011,3 +1011,43 @@ absolu) · **7 gates re-verts** (`check_readme_claims`/`check_ci_integrity`/`che
|
||||
édition **hors** `05_deliverables_mvp/*/out` ⇒ 0 dérive d'artefact ; l'obtention
|
||||
réelle des 7 confirmations auprès de leurs owners reste côté agent DevOps / VPS).
|
||||
- **Auto-score 4Big** : 96/100.
|
||||
|
||||
## Session `20260801_093301` · Buffer S8 · RBAC/RBAC_50_ROLES_SPEC §3 — DÉFAUT FACTUEL corrigé + gate d'identité par portail
|
||||
|
||||
**Contexte** : Sprint 8 · buffer (roadmap fonctionnellement close ; poursuite de la
|
||||
série anti-dérive CLAUDE.md #6). Cette fois la surface data-derived non gatée était
|
||||
**FAUSSE**, pas seulement à risque : la table §3 « Cartographie portails ↔ familles »
|
||||
de `RBAC_50_ROLES_SPEC.md` (colonne « Nb rôles » PAR portail) avait dérivé du contrat
|
||||
`rbac_50_roles.json` **en préservant le total 50**, donc en silence.
|
||||
|
||||
**Défaut factuel trouvé & corrigé** :
|
||||
- `05_deliverables_mvp/rbac/RBAC_50_ROLES_SPEC.md:47` — portail `direction` affichait
|
||||
**10** rôles ; le contrat en compte **9** (6 direction + CFO/finance + analyste
|
||||
faisabilité + 2 legal).
|
||||
- `…:52` — portail `plateforme` affichait **5** ; le contrat en compte **6** (devops ·
|
||||
rbac-admin · qa · otoia · mobile · bi).
|
||||
- L'erreur était compensée (10+5 vs 9+6) → total 50 exact → invisible aux gates
|
||||
agrégés. Le MANIFEST roleprofile (byte-gaté) disait déjà 9 et 6 : la SPEC seule
|
||||
avait dérivé. Corrigé pour refléter la source.
|
||||
|
||||
**Dérive silencieuse fermée (gate durable)** :
|
||||
- `ci/check_readme_claims.sh` — nouveau bloc « 1quater) RBAC_50_ROLES_SPEC §3 » : RECOMPTE
|
||||
le nombre de rôles PAR portail depuis `rbac/rbac_50_roles.json` (source de vérité,
|
||||
byte-gatée par `check_artifacts`) et exige l'égalité avec CHAQUE ligne de la table §3
|
||||
**plus le total** `**Total** | **50**`. Un portail absent de la table échoue aussi
|
||||
(disparition = régression de traçabilité). Complète le gate roleprofile (qui gate le
|
||||
MANIFEST, un doc distinct) sur une 2ᵉ surface transcrivant la même ventilation.
|
||||
- Vérif négative : réintroduire `direction=10` fait échouer le gate (exit 1, message
|
||||
« dit 10 MAIS rbac_50_roles.json compte 9 ») ; restauré → vert.
|
||||
|
||||
**Artefact régénéré (reproductibilité #artifact-reproducibility-gate)** :
|
||||
- `qa/audit_4big/out/quality_report.json` — l'`evidence` DOC cite la taille en octets de
|
||||
la SPEC (10040 → 10039 octets après correction −1 o) ; rebuild `audit_4big_gen.py build
|
||||
-o out` byte-identique. `check_artifacts` re-vert.
|
||||
|
||||
**CI** : les 7 gates PASS (validate_json · check_artifacts · check_docs ·
|
||||
check_readme_claims · guard_constraints · check_regression · check_ci_integrity).
|
||||
|
||||
- **Hors périmètre worker (VPS · #8)** : néant (correction d'un doc en-repo + gate
|
||||
bash/python3 stdlib ; l'unique artefact `out/` touché a été régénéré à l'identique).
|
||||
- **Auto-score 4Big** : 96/100.
|
||||
|
||||
Reference in New Issue
Block a user