From 4c741a71189a45db40bc3692b0f8f1f35a8c7ac0 Mon Sep 17 00:00:00 2001 From: Claude Code DTP Worker Date: Thu, 6 Aug 2026 07:23:09 +0000 Subject: [PATCH] =?UTF-8?q?[DTP-Worker=2020260806=5F071503]=20DOC=20anti-f?= =?UTF-8?q?ootgun=20in-fiche=20=E2=80=94=20colonne=20=C2=AB=20Sortie=20?= =?UTF-8?q?=C2=BB=20de=20frontend=5Fconsole/AGENT.md=20:=20documenter=20l'?= =?UTF-8?q?omission=20MANIFEST=20volontaire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Un Explore adversarial a re-flagué (2e fois) la cellule « Sortie » du chat_otoia comme « manque MANIFEST.json » — faux positif connu (fiche-sortie-cell-omits-manifest- by-design) : les DEUX rangs (portails+chat) listent le payload seul, MANIFEST omis par convention, docstrings/READMEs énumèrent les 3 (byte-gatés). La récurrence prouve un footgun non documenté (brûle des cycles d'audit, risque un fix #5/#6 cassant le gate regex-parsé). Mitigation : blockquote « Note de lecture » après la table, rédigé pour éviter les regex ancrées du gate (aucun compteur cartes/liens/rôles ni **N tests**). check_readme_claims PASS · check_docs PASS · run_ci 33 PASS 0 FAIL 0 SKIP · 0 artefact reconstruit · 0 gate ajouté (#5) · 0 chiffre inventé (#6) · 0 commande VPS (#8) Co-Authored-By: Claude Opus 4.8 (1M context) --- 03_agents/frontend_console/AGENT.md | 8 ++++++ 05_activity_log/2026-08-06.md | 44 +++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/03_agents/frontend_console/AGENT.md b/03_agents/frontend_console/AGENT.md index 5df78a5..52a8f4f 100644 --- a/03_agents/frontend_console/AGENT.md +++ b/03_agents/frontend_console/AGENT.md @@ -33,6 +33,14 @@ le câblage de l'endpoint OTOIA et l'application du thème desk restent côté * - **Chat OTOIA** : CLI `python3 chat_otoia_gen.py build|validate` · **14 invariants** · **31 tests** · job CI `chat-otoia-tests` (gated). +> **Note de lecture — colonne « Sortie ».** Les cellules listent le **payload +> métier** ; chaque générateur écrit **en plus** un `out/MANIFEST.json` (compteurs +> auto-vérifiés) **volontairement omis** de la table par convention éditoriale. +> L'énumération exhaustive des trois fichiers vit dans les docstrings et READMEs +> de module (byte-gatés). Ne PAS ajouter le MANIFEST à cette cellule : elle est +> lue par regex par `ci/check_readme_claims.sh` (compteurs `cartes/liens/rôles`, +> comptes de tests) et l'omission est intentionnelle, pas une dérive. + ## Source de vérité unique (zéro invention · #6) La matière première est le **contrat RBAC** `05_deliverables_mvp/rbac/rbac_50_roles.json`, **jamais la spec de mise en page** : diff --git a/05_activity_log/2026-08-06.md b/05_activity_log/2026-08-06.md index e7958a7..ce8e5ed 100644 --- a/05_activity_log/2026-08-06.md +++ b/05_activity_log/2026-08-06.md @@ -581,3 +581,47 @@ byte-identique. Mémoire `enforcement-oracle-must-stay-independent` créée. **Portée / anti-churn.** Édité : `renderer.py` (1 commentaire) + ce journal + mémoire. **0 artefact reconstruit**, **0 gate ajouté** (#5), **0 chiffre inventé** (#6 — les 6 marqueurs déjà présents, re-dérivés du gate), **0 commande VPS** (#8). Structure du gate inchangée (33 checks). + +--- + +## Session `20260806_071503` — anti-footgun in-fiche : documenter l'omission MANIFEST volontaire de la colonne « Sortie » · 0 artefact reconstruit + +**État au démarrage.** `./run_ci.sh` = **33 PASS · 0 FAIL · 0 SKIP**, arbre propre, roadmap +intégralement livrée + gatée. HEAD `ddcafc5` (commentaire anti-footgun `renderer.py`, output +inchangé). Les ~15 derniers commits sont des sweeps vérif-only / currency à rendement décroissant +(la session précédente le notait). Objectif : **éviter d'ajouter un énième « CLEAN sweep »** et +trouver une amélioration *durable* réelle. + +**Chasse au défaut (Explore adversarial).** Dispatché un agent lecture-seule sur 3 surfaces +(fiches `03_agents/*/AGENT.md` ↔ modules réels · READMEs ↔ `*_gen.py` · liens label↔cible). +Retour : **1 candidat** — `frontend_console/AGENT.md:29` « colonne Sortie du chat_otoia omet +`MANIFEST.json` » alors que `chat_otoia_gen.py:237` écrit bien les 3 fichiers. + +**Réfutation via mémoire — FAUX POSITIF connu.** C'est exactement `fiche-sortie-cell-omits- +manifest-by-design` : la colonne « Sortie » liste le **payload métier** seul ; le MANIFEST est +omis **dans les DEUX rangs** (portails + chat) = convention éditoriale, PAS une dérive ; les +docstrings/READMEs énumèrent bien les 3 (byte-gatés). « Corriger » violerait #5/#6 et risquerait +de casser le gate (la cellule est regex-parsée par `check_readme_claims.sh`). **0 édition de ce +faux positif.** + +**Signal actionnable.** Le fait qu'un Explore **re-flague la MÊME cellule cette session** (déjà +flaguée session 234409) = preuve que la convention est un **footgun non documenté** : elle brûle +des cycles d'audit et risque un « fix » erroné (ajout MANIFEST à la cellule gate-parsée → churn +#5, voire RED). Exactement le motif de la session précédente (commentaire anti-footgun remonté au +**site** dans `renderer.py`). + +**Livrable — note anti-footgun in-fiche.** Ajouté au `frontend_console/AGENT.md` (juste après la +table + les puces Portails/Chat) un blockquote `> **Note de lecture — colonne « Sortie ».**` +expliquant que la cellule liste le payload seul, que chaque générateur écrit **en plus** un +`out/MANIFEST.json` **volontairement omis** par convention, que l'énumération exhaustive vit dans +docstrings/READMEs byte-gatés, et **« ne PAS l'ajouter »** (cellule regex-parsée). Rédigé pour +**éviter les regex ancrées** du gate (aucun motif `N cartes/M liens/K rôles`, aucun +`**N tests** · job CI`). + +**Vérif.** `check_readme_claims.sh` exit 0 · `check_docs.sh` exit 0 · `./run_ci.sh` = +**33 PASS · 0 FAIL · 0 SKIP**. Mémoire `fiche-sortie-cell-omits-manifest-by-design` mise à jour +(récurrence + mitigation in-fiche consignées). + +**Portée / anti-churn.** Édité : `frontend_console/AGENT.md` (1 blockquote de prose) + ce journal ++ mémoire. **0 artefact reconstruit**, **0 gate ajouté** (#5), **0 chiffre saisi à la main** (#6 — +la note ne contient aucun compteur), **0 commande VPS** (#8). Structure du gate inchangée (33 checks).