From 12cfaaa2ed36d91fea97de8cdd57fc3270564d20 Mon Sep 17 00:00:00 2001 From: Claude Code DTP Worker Date: Mon, 3 Aug 2026 08:42:59 +0000 Subject: [PATCH] =?UTF-8?q?[DTP-Worker=2020260803=5F083713]=20Sprint=208?= =?UTF-8?q?=20QA=20=C2=B7=20fix=20=C2=B7=20gate=20constraints-guard=20RED?= =?UTF-8?q?=20r=C3=A9par=C3=A9=20(doc=20REFERENCE=20OTO=5FDESIGN=5FSYSTEM?= =?UTF-8?q?=5Fv1=20=C2=A715=20=3D=20mention=20VPS,=20pas=20usage)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Régression neuve depuis commit 9c062ef : OTO_DESIGN_SYSTEM_v1.md §15 « Fichiers canoniques sur VPS » liste /var/www/html/static/ en inventaire descriptif (chemin servi = symlink de /opt/oto/sites/static). Faux-positif de la classe que le garde ignore (USAGE, pas mention) ; doc root-owned non éditable + non créé par le worker → fix au niveau du garde (précédent session 010630). - ci/guard_constraints.sh : OTO_DESIGN_SYSTEM_*.md (glob) ajouté aux exclusions tracked_files(), même catégorie qu'AUTORISATIONS_*/DIRECTIVE_* ; en-tête documenté. - ci/README.md : §exclusions + NB inconsistance chemin-servi-vs-source mis à jour. - Mutation-test : garde mord toujours les 3 usages code réels (static VPS/GitHub/Stripe). - Inconsistance chemin servi (/var/www/html/static) vs source (/opt/oto/sites/static) du §15 re-signalée à Michel (non tranchée par le garde). run_ci.sh : 30 PASS · 0 FAIL · 0 SKIP (rétabli). Zéro nouveau module, zéro gate ajouté (#5). Co-Authored-By: Claude Opus 4.8 (1M context) --- 05_activity_log/2026-08-03.md | 48 +++++++++++++++++++++++++++++++++++ ci/README.md | 12 ++++++--- ci/guard_constraints.sh | 13 +++++++++- 3 files changed, 69 insertions(+), 4 deletions(-) diff --git a/05_activity_log/2026-08-03.md b/05_activity_log/2026-08-03.md index 30aea20..7c01064 100644 --- a/05_activity_log/2026-08-03.md +++ b/05_activity_log/2026-08-03.md @@ -1,5 +1,53 @@ # Activity Log · 2026-08-03 · Claude Code DTP Worker +## Session 083713 · Gate `constraints-guard` RED réparé — nouveau doc REFERENCE `OTO_DESIGN_SYSTEM_v1.md` (mention VPS, pas usage) + inconsistance chemin re-signalée à Michel + +**Contexte.** `./run_ci.sh` au démarrage : **29 PASS · 1 FAIL** — régression NEUVE +(`constraints-guard`) apparue avec le commit `9c062ef` (« REFERENCE · OTO Design System +v1 »), qui a ajouté `OTO_DESIGN_SYSTEM_v1.md` à la racine. Toutes les autres dimensions +vertes ; arbre propre. + +**Cause racine (faux-positif · classe identique à la session 010630).** Le §15 du doc +« **Fichiers canoniques sur VPS** » liste, en **inventaire** descriptif, deux emplacements +`/var/www/html/static/` (assets concierge + scripts UI canoniques). Le garde (dont +l'en-tête déclare « détecte l'**USAGE**… PAS sa simple **mention** ») a mordu ces deux +lignes — mais ce sont des **mentions** d'emplacements *servis* par nginx +(`/var/www/html/static` = **SYMLINK** de `/opt/oto/sites/static`, cf. CLAUDE.md §VPS), pas +une **écriture exécutable**. L'usage réel vivrait dans un `.sh`/`.py`/`.yml` — toujours +scannés. + +**Pourquoi PAS d'édition du doc fautif.** (1) Root-owned `root:root 644` — **non éditable** +par `otoclaude` (`-w` négatif) → l'escape `ci-allow` par ligne est **inapplicable**. +(2) Document **ajouté par un commit REFERENCE que je n'ai pas créé** → principe « surface, +don't overwrite ». Exactement la situation de la session 010630 (fichiers root-owned de +Michel). + +**Correctif — au niveau du garde que je possède (`ci/`), 2+ solutions pesées.** +- *Option retenue* : ajout de `OTO_DESIGN_SYSTEM_*.md` (glob → survit à un futur `_v2`) aux + exclusions de `tracked_files()`, **même catégorie** que `AUTORISATIONS_*.md`/`DIRECTIVE_*.md` + (docs racine énumérant *nécessairement* des chemins VPS en tant que mention). En-tête du + garde + `ci/README.md` §exclusions mis en cohérence (raison + inventaire-vs-usage documentés). +- *Option écartée* : demander à Michel de rendre le doc éditable pour y poser des `ci-allow` + — plus lourd, casse à chaque re-push du doc ; le fix dans MON `ci/` est durable. + +**Détection vraie-positive PRÉSERVÉE (mutation-test, [[guard-constraints-flags-usage-not-mention]]).** +Un `.sh` temporaire commité avec les 3 usages littéraux (écriture chemin statique VPS, URL +GitHub, appel Stripe) → le garde **mord les 3** (✗). Seule la prose de référence/gouvernance +`.md` est exclue ; `CLAUDE.md` (constitution) **reste scanné**. Aucun trou vers un usage +forbidden dans du code. + +**⚠️ INCONSISTANCE RE-SIGNALÉE À MICHEL (non tranchée par le garde).** Le §15 liste le chemin +**servi** `/var/www/html/static/` alors que le mandat (CLAUDE.md · Interdits absolus + §VPS) +préfère la **source** `/opt/oto/sites/static/` (le premier étant le symlink du second). Même +inconsistance chemin-servi-vs-source que la l.35 d'`AUTORISATIONS_*.md` déjà signalée le +010630. Documentée ici + `ci/README.md`, **pas masquée, pas tranchée** (décision archi → Michel). + +**Vérifications.** `./run_ci.sh` → **30 PASS · 0 FAIL · 0 SKIP** (rétabli). Mes propres +mentions du chemin dans `ci/README.md` (description de l'exclusion) marquées `ci-allow` +(motif l.100 préexistant). **Zéro nouveau module · zéro gate ajouté (#5)** — le garde n'est +pas affaibli (mutation 3/3 RED sur usage code), corrigé d'un faux-positif conforme à sa +propre philosophie. Aucune commande touchant au VPS (#8) · aucun `git clean` . + ## Session 063711 · Sprint 5/8 · Canal 2 `daily_reports/` remis à jour (3 sessions manquantes depuis 040643) **Contexte + choix de tâche.** `./run_ci.sh` au démarrage : **30 PASS · 0 FAIL · 0 SKIP**, diff --git a/ci/README.md b/ci/README.md index 7c3be53..92499d4 100644 --- a/ci/README.md +++ b/ci/README.md @@ -92,15 +92,21 @@ Escape hatch documenté : ajouter `ci-allow` sur une ligne pour l'exclure. **Exclusions de fichiers** (`tracked_files()`) — documents qui contiennent *nécessairement* les termes interdits en tant que **texte de politique** (mention), jamais en usage exécutable : le garde lui-même (il énumère les termes), les workflows -CI (ils le référencent), et les **mandats signés de Michel à la racine** +CI (ils le référencent), les **mandats signés de Michel à la racine** (`AUTORISATIONS_*.md`, `DIRECTIVE_*.md`) — prose de gouvernance listant règles ET -autorisations. L'usage *réel* d'un terme interdit vivrait dans un `.sh`/`.py`/`.yml` +autorisations —, et le **design system de référence** (`OTO_DESIGN_SYSTEM_*.md`, +root-owned, ajouté par commit `REFERENCE`) dont le §15 « Fichiers canoniques sur VPS » +est un **inventaire** d'emplacements servis (`/var/www/html/static/`, symlink de +`/opt/oto/sites/static/`) — mention descriptive, pas une écriture. L'usage *réel* d'un +terme interdit vivrait dans un `.sh`/`.py`/`.yml` (**toujours scannés**), donc aucune détection vraie-positive n'est perdue (mutation-test à l'appui). **`CLAUDE.md` reste scanné** : sa prose d'interdits passe via les marqueurs de prohibition. NB · `AUTORISATIONS_*.md` l.35 « Écriture dans `/var/www/html/static/` » **contredit** l'interdit absolu de CLAUDE.md (le chemin correct est le SYMLINK source `/opt/oto/sites/static/`) — contradiction inter-mandats **signalée à Michel** (à trancher -par lui, pas masquée par le garde). +par lui, pas masquée par le garde). Même inconsistance chemin-**servi**-vs-**source** dans +`OTO_DESIGN_SYSTEM_v1.md` §15 (liste `/var/www/html/static/` au lieu de la source +`/opt/oto/sites/static/`) — **re-signalée à Michel**, non tranchée par le garde. **Non-dérive documentée — `michel/otov7-platform` (CLAUDE.md #2) N'EST PAS une coquille de `michel/oto-enterprise-os-dtp`, à ne PAS « corriger ».** Un audit doc-vs-réalité relève diff --git a/ci/guard_constraints.sh b/ci/guard_constraints.sh index d18de13..ef5c9e5 100755 --- a/ci/guard_constraints.sh +++ b/ci/guard_constraints.sh @@ -46,12 +46,23 @@ ok() { printf ' \033[32m✓\033[0m %s\n' "$1"; } # CONTREDIT l'interdit absolu de CLAUDE.md (le chemin correct est le SYMLINK # source /opt/oto/sites/static/). Contradiction inter-mandats signalée à # Michel (activity log 2026-08-03) — à trancher par lui, pas par le garde. +# - le DESIGN SYSTEM de référence à la racine (OTO_DESIGN_SYSTEM_*.md) : +# document root-owned, ajouté par un commit REFERENCE (non créé par un agent +# worker, non éditable → escape ci-allow par ligne inapplicable). Son §15 +# « Fichiers canoniques sur VPS » est un INVENTAIRE des emplacements servis +# (nginx sert /var/www/html/static, SYMLINK de /opt/oto/sites/static) — une +# mention descriptive, pas une écriture exécutable. Même raison que ci-dessus : +# l'usage réel vivrait dans du code (.sh/.py/.yml, toujours scanné). NB · ce +# §15 liste le chemin SERVI /var/www/html/static/ alors que le mandat préfère +# la SOURCE /opt/oto/sites/static/ — même inconsistance chemin-servi-vs-source +# que la l.35 d'AUTORISATIONS, re-signalée à Michel (activity log 2026-08-03). tracked_files() { git ls-files -- . \ ':(exclude)ci/guard_constraints.sh' \ ':(exclude).gitea/workflows/*.yml' \ ':(exclude)AUTORISATIONS_*.md' \ - ':(exclude)DIRECTIVE_*.md' + ':(exclude)DIRECTIVE_*.md' \ + ':(exclude)OTO_DESIGN_SYSTEM_*.md' } # scan_forbidden