[DTP-Worker 20260802_053514] Sprint 8 · buffer · RBAC SPEC §6 : ancrage de l'ÉNUMÉRATION des DocTypes custom (2ᵉ surface prose) sur le catalogue byte-gaté du contrat
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,52 @@
|
||||
# Activity log · 2026-08-02 · Claude Code DTP Worker
|
||||
|
||||
## Sprint 8 · buffer · RBAC SPEC §6 — ancrage de l'ÉNUMÉRATION des DocTypes `custom` sur le catalogue du contrat (2ᵉ surface prose)
|
||||
|
||||
**Contexte** — Série anti-dérive Sprint 8 (CLAUDE.md #6 « zéro invention »). Le
|
||||
générateur `rbac_fixtures_gen` émet `MANIFEST.custom_doctypes_a_confirmer` =
|
||||
l'ensemble des DocTypes `custom: true` du contrat `rbac_50_roles.json` (les DocTypes
|
||||
DTP **à créer** côté VPS avant import — `Faisabilité`, `Publiciste Log`, `CONFOTUR
|
||||
Application`, `API Access`). Cet ensemble data-derived est transcrit À LA MAIN à
|
||||
**deux** surfaces prose : (1) `rbac/fixtures_gen/README.md` — **déjà gatée** (bloc
|
||||
« RBAC fixtures · catalogue custom ») ; (2) `RBAC_50_ROLES_SPEC.md §6` l.117
|
||||
(« **DocTypes `custom: true`** (`Faisabilité`, `Publiciste Log`, `CONFOTUR
|
||||
Application`, `API Access`) ») — **NON gatée**. Le bloc `apply_plan` ne gate que le
|
||||
COMPTE (`len(custom_doctypes)`), aveugle aux NOMS ; `check_artifacts` est aveugle
|
||||
(la SPEC n'est pas un `out/*.json`).
|
||||
|
||||
**Le « vert trompeur »** — AJOUTER un DocType `custom` au contrat (le MANIFEST
|
||||
rebâtit l'entrée) ou RENOMMER/ÉCHANGER l'un des 4 laisse §6 à ses 4 noms périmés en
|
||||
silence : la cible d'application VPS énumérée par la SPEC ne correspond plus aux
|
||||
DocTypes que l'agent ERPNext doit réellement créer. Vérifié par mutation : dropper
|
||||
`Publiciste Log` de §6 laissait le gate à **exit 0**. Même patron que la 2ᵉ surface
|
||||
CONFOTUR/entités (README gaté, fiche non).
|
||||
|
||||
**Gate ajouté** (`ci/check_readme_claims.sh`, extension du bloc « RBAC fixtures »,
|
||||
point 3) — RÉUTILISE `fx_cdt` (= `MANIFEST.custom_doctypes_a_confirmer`, byte-gaté,
|
||||
déjà dérivé par le point 1) et le normaliseur d'accents `_fx_acc` (zéro duplication
|
||||
du contrat) : capte l'énumération §6 (`DocTypes `custom: true`** (…)` sur le texte
|
||||
whitespace-normalisé, robuste au retour-ligne 117↔118), extrait les tokens
|
||||
backtickés, et exige set-diff EXACT == catalogue MANIFEST (absent ET en trop, casse/
|
||||
accents neutralisés). Énumération INTROUVABLE = échec (anti-évaporation #6).
|
||||
|
||||
**Vérif** — 1 check vert sur l'arbre propre (les 4 == MANIFEST). **5 morsures**
|
||||
adversariales : A dropper `Publiciste Log` ⇒ absent · B renommer `API Access`→`API
|
||||
Acces` ⇒ absent+en-trop · C ajouter `Ghost DocType` fantôme ⇒ en-trop · **D
|
||||
SILENT-GREEN : le MANIFEST GAGNE un 5ᵉ DocType custom (§6 inchangé) ⇒ mord « absents=
|
||||
[new custom dt] » — preuve que l'autorité est l'ARTEFACT, pas la cohérence interne
|
||||
de la SPEC** · E énumération §6 supprimée ⇒ INTROUVABLE. Reverts par chemin ciblé
|
||||
(jamais `git checkout` large — cf. incident consigné). Suite complète re-verte :
|
||||
`check_artifacts` · `check_docs` · `guard_constraints` · `check_ci_integrity` ·
|
||||
`check_regression` · `check_readme_claims` tous exit 0.
|
||||
|
||||
**Note process** — un candidat initial (ancrage des attributs de rôle des fiches
|
||||
`mobile`/`rendu`/`ifc_speckle`) s'est révélé DÉJÀ couvert par les blocs existants
|
||||
« Fiche Mobile » / « Fiches Faisabilité » : la ligne d'index `MEMORY.md` était
|
||||
périmée vs le corps détaillé de la mémoire (classe close le 2026-08-01). Doublon
|
||||
écarté (interdit #5 « jamais accumuler doublons »), index mémoire corrigé.
|
||||
|
||||
---
|
||||
|
||||
## Sprint 8 · buffer · RBAC SPEC §2 — ancrage de l'ÉNUMÉRATION des `scope_donnees` (ligne Row-level) sur l'ENUM du schéma
|
||||
|
||||
**Contexte** — Série anti-dérive Sprint 8 (CLAUDE.md #6 « zéro invention de
|
||||
|
||||
Reference in New Issue
Block a user