[DTP-Worker] Sprint 8 · buffer · Publiciste/branding : les 4 TOKENS DESIGN CANONIQUES de la marque luxury — fond dark #0a0a12 + accent doré #f0b429, titres Fraunces + corps Cormorant Garamond (contrainte NON-NÉGOCIABLE CLAUDE.md #4) — étaient RECOPIÉS à QUATRE endroits tous NON gatés : (a) les CONSTANTES lib/branding.py (COLOR_BG/COLOR_ACCENT/FONT_DISPLAY/FONT_BODY), source unique importée par le générateur & substituée dans le gabarit {{COLOR_BG}}…, hors out/ donc INVISIBLE à check_artifacts ; (b) le docstring du fichier ; (c) le README ; (d) le tuple d'oracle HARDCODÉ de tests/test_publiciste.py. Le seul contrôle existant (test_marque_luxury) assert que le RENDU contient ces marqueurs mais ils sont une copie de plus JAMAIS comparée à CLAUDE.md — même patron EXACT que les paramètres canoniques faisabilite/generator (CANONICAL↔CLAUDE.md #9/#10). Gate ajouté : les 4 tokens recomputés de la ligne #4 de CLAUDE.md (zéro duplication) ; (a) branding.py CONSTANTES == #4 (hex insensible casse, fontes exact), (b) docstring cite les 4, (c) README cite les 2 fontes, (d) oracle du test == #4 (set-diff). 6 morsures vérifiées (constante accent/display · CLAUDE.md #4 accent → mord SIMULTANÉMENT les 3 copies aval · docstring · README · oracle), restauré vert, 7 gates re-verts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-08-01 02:41:10 +00:00
parent 3a91c9d52f
commit 68004265d6
3 changed files with 199 additions and 1 deletions
+55
View File
@@ -303,3 +303,58 @@ mobile∉`OTO Ventes` · exit 0. Working tree byte-restauré (`git checkout --`,
édition **hors** `05_deliverables_mvp/*/out` ⇒ 0 dérive d'artefact ; l'attachement
réel des rôles aux Workspaces `bench` reste côté VPS).
- **Auto-score 4Big** : 96/100.
## Session `20260801_023211` · Buffer S8 · Domaine Publiciste/branding : les **4 TOKENS DESIGN CANONIQUES** de la marque luxury — fond dark `#0a0a12` + accent doré `#f0b429`, titres **Fraunces** + corps **Cormorant Garamond** (contrainte NON-NÉGOCIABLE **CLAUDE.md #4**) — étaient RECOPIÉS à **QUATRE** endroits **tous NON gatés** : (a) les CONSTANTES `lib/branding.py` (`COLOR_BG`/`COLOR_ACCENT`/`FONT_DISPLAY`/`FONT_BODY`), la source unique importée par le générateur & substituée dans le gabarit (`{{COLOR_BG}}…`), hors `out/` donc **invisible à check_artifacts** ; (b) le **docstring** du même fichier ; (c) le README (ligne du gabarit) ; (d) le **tuple d'oracle HARDCODÉ** de `tests/test_publiciste.py`.
**Tâche** : **Sprint 8 · buffer** (DevOps CI/CD · QA). Roadmap fonctionnellement
close ; poursuite de la série anti-dérive (CLAUDE.md #6). **Même patron EXACT** que
les paramètres canoniques `faisabilite/generator` **ancrés sur CLAUDE.md #9/#10**
(`CANONICAL` ↔ contrainte) — appliqué à la **contrainte #4** (identité visuelle) et
à son consommateur `publiciste/branding`, module **entièrement hors CI** jusqu'ici
(grep `branding|0a0a12|f0b429|Fraunces` dans `ci/` = 0 avant cette session).
**Dérive silencieuse fermée** :
- `05_deliverables_mvp/publiciste/lib/branding.py:13-20` — les 4 CONSTANTES ·
`05_deliverables_mvp/publiciste/lib/branding.py:3-4` — le docstring qui les cite ·
`05_deliverables_mvp/publiciste/README.md:43` — « Gabarit dark+doré (Fraunces +
Cormorant Garamond) » · `05_deliverables_mvp/publiciste/tests/test_publiciste.py:193`
`for token in ("#0a0a12", "#f0b429", "Fraunces", "Cormorant Garamond")`.
- Source faisant autorité : **CLAUDE.md #4** (ligne 18) — la contrainte
constitutionnelle, comme #9/#10 le sont pour le générateur de faisabilité.
- Piège : le SEUL contrôle existant (`test_marque_luxury`) assert que le RENDU
HTML CONTIENT ces 4 marqueurs — mais ils sont **HARDCODÉS dans le test**, une
copie de plus **jamais comparée à CLAUDE.md**. Si #4 change (accent
`#f0b429``#c9a227`) et qu'on aligne `branding.py`, l'oracle du test reste périmé
(rouge trompeur) ; si RIEN ne bouge, tout reste vert alors que le site public
`vente.otov7.com` émettrait la mauvaise couleur — invention silencieuse de la
classe même que #6 interdit, qu'aucune suite `tests/` (qui teste des FONCTIONS,
pas l'ancrage à CLAUDE.md) n'attrape.
- **État courant** : **aucun token périmé** — les 4 constantes + docstring + README
+ oracle du test recoupent CLAUDE.md #4 exactement (anti-invention #6, rien à
réécrire). Le défaut est la **surface ungated** (module hors CI).
**Gate ajouté** (`ci/check_readme_claims.sh`, nouveau bloc « Publiciste/branding »
avant `sys.exit`) : (0) **ancrage** — les 4 tokens recomputés de la ligne #4 de
CLAUDE.md (2 couleurs backtickées + 2 fontes de la parenthèse `(… + …)`) ; (a)
`branding.py` CONSTANTES == #4 (hex **insensible à la casse**, fontes à l'exact
strip) ; (b) **docstring** (texte AVANT les constantes) cite les 4 EXACTS ; (c)
README cite les 2 fontes ; (d) **oracle du test** — le tuple `for token in (...)`
== les 4 tokens de #4 (set-diff : absent ET en trop). Un claim absent échoue AUSSI
(traçabilité #6).
**6 morsures vérifiées** : `branding.py` accent `#f0b429→#e0a420` (constante
périmée) · `branding.py` display `Fraunces→Playfair Display` · **CLAUDE.md #4**
accent `→#c9a227` (mord **SIMULTANÉMENT** les 3 copies aval : constante + docstring
+ oracle du test — prouve la valeur de l'ANCRAGE) · docstring retire l'accent de la
prose (claim absent) · README échange une fonte (`Cormorant Garamond→Georgia`) ·
oracle du test retire `Fraunces` ; restauré = green : 4 tokens sains · constantes ==
#4 · docstring 4 tokens · README 2 fontes · oracle == #4 · exit 0. Working tree
byte-restauré (`git checkout --`, **JAMAIS** `git clean`, interdit absolu) ·
**7 gates re-verts**.
- `ci/README.md` (table récap du pipeline + paragraphe détaillé « Tokens design
canoniques `publiciste/branding` ancrés sur CLAUDE.md #4 ») mis à jour.
- **Hors périmètre worker (VPS · #8)** : néant (gate bash/python3 stdlib en-repo ;
édition **hors** `05_deliverables_mvp/*/out` ⇒ 0 dérive d'artefact ; le déploiement
réel du site `vente.otov7.com` reste côté VPS).
- **Auto-score 4Big** : 96/100.