[DTP-Worker 20260802_060518] Sprint 8 · buffer · Traçabilité : ancrage de la CITATION roadmap_ref VERBATIM (l.N + libellé) des 4 MANIFESTs sur la ligne réelle de la roadmap
Gate anti-dérive #6 : demo/scenarios · frontend/chat_otoia · frontend/portails · mobile/app_config publient un roadmap_ref « …l.A[-B] « <bullet> » » dans out/MANIFEST.json (byte-gaté). check_artifacts ne prouve QUE spec==MANIFEST ; INV11 n'ancre que les roadmap_line NUMÉRIQUES de qa/acceptance. Reformuler/ renuméroter la roadmap laissait les 4 citations périmées en silence (silent-green prouvé : reword l.63 ⇒ 6 gates verts, chat_otoia cite toujours l'ancien texte). check_readme_claims : découvre chaque MANIFEST à citation et exige (1) fichier == roadmap canonique, (2) libellé normalisé ⊆ lignes A..B réelles, (3) spec == MANIFEST ; 4 modules connus EXIGÉS présents (anti-évaporation). 5 checks verts · 7 morsures (M1 silent-green reword roadmap · M2 renumber · M3 drift citation · M4 wrong file · M5 spec≠manifest · M6 évaporation · M7 hors-plage). Suite complète exit 0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,53 @@
|
||||
# Activity log · 2026-08-02 · Claude Code DTP Worker
|
||||
|
||||
## Sprint 8 · buffer · Traçabilité roadmap — ancrage de la CITATION `roadmap_ref` VERBATIM (n° ligne + libellé) des artefacts sur la ligne RÉELLE de la roadmap
|
||||
|
||||
**Contexte** — Série anti-dérive Sprint 8 (CLAUDE.md #6 « zéro invention · toujours
|
||||
vérifier sources archives »). Le pattern « citation vérifiée, pas déclarée » (INV11
|
||||
de `qa/acceptance` ancre les `roadmap_line` NUMÉRIQUES de son artefact au bullet
|
||||
DELIVERABLE réel) portait un angle mort : **quatre** modules — `demo/scenarios`,
|
||||
`frontend/chat_otoia`, `frontend/portails`, `mobile/app_config` — publient dans leur
|
||||
`out/MANIFEST.json` (byte-gaté) un champ `roadmap_ref` de forme
|
||||
`« …ROADMAP… · Sprint N l.A[-B] « <libellé bullet> » »`, où le **libellé est une
|
||||
transcription VERBATIM** du bullet de la roadmap à la ligne citée. Or **aucun gate**
|
||||
ne vérifiait que la ligne A[-B] porte réellement ce texte : `check_artifacts` ne
|
||||
prouve QUE `spec==MANIFEST` byte-for-byte (la MÊME citation recopiée des deux côtés,
|
||||
jamais contredite) ; INV11 ne touche QUE les `roadmap_line` numériques de SON
|
||||
artefact ; l'ancrage Expo mobile ne teste que « roadmap » + « Expo N » dans
|
||||
`expo_sdk_source`, pas la citation complète.
|
||||
|
||||
**Le « vert trompeur »** — RÉORDONNER la roadmap (les n° de ligne glissent) ou
|
||||
REFORMULER un bullet laisse ces 4 citations pointer une ligne qui dit AUTRE CHOSE :
|
||||
un agent lisant le MANIFEST pour retrouver la promesse d'origine tomberait sur le
|
||||
mauvais bullet. **Prouvé par mutation** : reformuler le bullet l.63 (`Chat OTOIA
|
||||
embedded…`) laissait les **6 gates VERTS** pendant que `chat_otoia/out/MANIFEST.json`
|
||||
citait encore « … Chat OTOIA embedded … » à l.63. Aucune suite `tests/` (FONCTIONS
|
||||
de résolution, jamais l'ancre à la roadmap) ne mord.
|
||||
|
||||
**Gate ajouté** (`ci/check_readme_claims.sh`, bloc « Traçabilité roadmap », juste
|
||||
avant `sys.exit`) — DÉCOUVRE tous les `out/MANIFEST.json` (glob 1 & 2 niveaux)
|
||||
portant un `roadmap_ref` citant `(l.A[-B] «…»)` et exige, par module : **(1)** le
|
||||
fichier cité == la roadmap canonique ; **(2)** le libellé, NORMALISÉ (markdown
|
||||
`**`/`- ` retirés · espaces compressés · NFC), est SOUS-CHAÎNE des lignes A..B
|
||||
réelles (robuste à la troncature du bullet et à la plage multi-lignes `l.56-57`) ;
|
||||
**(3)** le spec du module porte le MÊME `roadmap_ref` (identité spec↔artefact publié).
|
||||
Bornes de ligne hors-plage attrapées (renumérotation). Les **4 modules connus** sont
|
||||
EXIGÉS présents (anti-évaporation #6 : retirer un `roadmap_ref` échoue) ; tout AUTRE
|
||||
MANIFEST à citation est ancré en bonus (future-proof).
|
||||
|
||||
**Vérif** — 5 checks verts sur l'arbre propre (4 citations ancrées + recensement
|
||||
« 4 modules attendus présents »). **7 morsures** adversariales, gate lancé SEUL,
|
||||
reverts par `cp` ciblé (jamais `git checkout` large — cf. incident consigné) :
|
||||
**M1 SILENT-GREEN** — reformuler le bullet l.63 (AUTORITÉ), MANIFEST inchangé ⇒
|
||||
libellé ABSENT (preuve que l'autorité est la ROADMAP, pas la cohérence interne de
|
||||
l'artefact) · M2 renuméroter le MANIFEST `l.63→l.62` (ligne existante mais autre
|
||||
bullet) ⇒ ABSENT · M3 dériver le libellé du MANIFEST lui-même ⇒ ABSENT · M4 citer
|
||||
un autre fichier roadmap ⇒ fichier ≠ canonique · M5 dériver la citation du SEUL spec
|
||||
⇒ spec ≠ MANIFEST (artefact incohérent) · M6 retirer `roadmap_ref` du MANIFEST ⇒
|
||||
ÉVAPORÉE ['frontend/chat_otoia'] · M7 citer `l.9999` ⇒ plage hors roadmap (1..92).
|
||||
Suite complète re-verte : `check_artifacts` · `check_docs` · `guard_constraints` ·
|
||||
`check_ci_integrity` · `check_regression` · `check_readme_claims` tous exit 0.
|
||||
|
||||
## 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
|
||||
|
||||
Reference in New Issue
Block a user