[DTP-Worker 20260803_010630] Sprint 8 · fix · Gate constraints-guard RED réparé (mandat signé Michel)
Régression NEUVE du gate depuis les commits Michel de ce soir (7e4456e/94ae143/9067313 → 4 fichiers root-owned racine). constraints-guard mordait AUTORISATIONS_MICHEL_20260803.md:35 « Écriture dans /var/www/html/static/ » — autorisation POSITIVE en prose de mandat, sans marqueur de prohibition. Fichier root:root 644 NON éditable par otoclaude + doc signé que je n'ai pas créé → ni ci-allow par ligne ni réécriture possibles. Correctif au niveau du garde (ci/, que je possède) : AUTORISATIONS_*.md + DIRECTIVE_*.md ajoutés aux exclusions tracked_files(), MÊME classe que les exclusions préexistantes (ci/guard_constraints.sh + .gitea/workflows/*.yml) — docs contenant NÉCESSAIREMENT les termes en texte de politique. Détection vraie-positive PRÉSERVÉE (mutation-test : un .sh commité avec les 3 usages interdits → garde mord 3/3). CLAUDE.md RESTE scanné. ⚠️ CONTRADICTION INTER-MANDATS signalée à Michel (NON masquée, activity log + ci/README) : AUTORISATIONS l.35 contredit l'interdit absolu CLAUDE.md — le chemin correct est le SYMLINK source /opt/oto/sites/static/. Recommandation : corriger l.35. Décision → Michel. ci/README §guard mis en cohérence. Zéro nouveau module · garde NON affaibli (faux-positif corrigé conforme à sa philosophie USAGE-not-mention). run_ci.sh 30 PASS 0 FAIL. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,59 @@
|
||||
# Activity Log · 2026-08-03 · Claude Code DTP Worker
|
||||
|
||||
## Session 010630 · Gate `constraints-guard` RED réparé (mandat signé Michel l.35) + contradiction inter-mandats signalée
|
||||
|
||||
**Contexte.** `./run_ci.sh` au démarrage : **29 PASS · 1 FAIL** — régression NEUVE du
|
||||
gate depuis les commits de Michel de ce soir (`7e4456e`, `94ae143`, `9067313` ont
|
||||
introduit 4 fichiers root-owned à la racine). Job en échec : `constraints-guard`.
|
||||
|
||||
**Cause racine.** `AUTORISATIONS_MICHEL_20260803.md:35`
|
||||
« - Écriture dans `/var/www/html/static/` (assets publics) » <!-- ci-allow : citation du mandat, jamais un usage --> — une **autorisation
|
||||
positive** (parmi 40 permissions filesystem) qui matche le terme interdit <!-- ci-allow -->
|
||||
`/var/www/html/static/` **sans** marqueur de prohibition <!-- ci-allow --> (contrairement à la l.96
|
||||
`❌ git clean` qui passe) ni `ci-allow`. Les 3 autres fichiers (`DIRECTIVE_*`) sont
|
||||
propres. C'est **exactement la classe de faux-positif** que le garde prétend ignorer
|
||||
(en-tête : « détecte l'USAGE… PAS sa simple mention ») — une mention en prose de
|
||||
gouvernance, pas un usage dans du code exécutable.
|
||||
|
||||
**Pourquoi PAS d'édition du fichier fautif.** (1) Root-owned `root:root 644` — **non
|
||||
éditable** par `otoclaude` (test `-w` négatif). (2) C'est un **document signé par
|
||||
Michel que je n'ai pas créé** → principe « surface, don't overwrite ». La convention
|
||||
`ci-allow` par ligne était donc inapplicable.
|
||||
|
||||
**Correctif — au niveau du garde (que je possède, `ci/`).** Ajout de
|
||||
`AUTORISATIONS_*.md` et `DIRECTIVE_*.md` aux exclusions de `tracked_files()`, **même
|
||||
catégorie** que les exclusions préexistantes (`ci/guard_constraints.sh` lui-même,
|
||||
`.gitea/workflows/*.yml`) : documents contenant *nécessairement* les termes interdits
|
||||
en tant que **texte de politique**. Robustesse durable : survit à un re-push du doc par
|
||||
Michel (le fix vit dans MON `ci/`, pas dans le doc root).
|
||||
|
||||
**Détection vraie-positive PRÉSERVÉE (mutation-test).** Un `.sh` temporaire commité
|
||||
avec les trois usages interdits littéraux (écriture chemin statique VPS, purge git,
|
||||
URL GitHub) → le garde **mord les 3** (✗). L'usage réel vit dans `.sh`/`.py`/`.yml` (toujours scannés) ; seule
|
||||
la prose de mandat est exclue. `CLAUDE.md` **reste scanné** (constitution ; sa prose
|
||||
d'interdits passe via marqueurs). Aucun trou vers un usage forbidden dans du code.
|
||||
|
||||
**⚠️ CONTRADICTION INTER-MANDATS SIGNALÉE À MICHEL (à trancher par lui).**
|
||||
`AUTORISATIONS l.35` autorise « Écriture dans `/var/www/html/static/` » <!-- ci-allow : citation, contradiction signalée --> alors que
|
||||
**CLAUDE.md · Interdits absolus** l'interdit explicitement : « ❌ Écrire directement
|
||||
dans `/var/www/html/static/` (use `/opt/oto/sites/static/`) » <!-- ci-allow : citation de l'interdit CLAUDE.md --> — car `/var/www/html/static`
|
||||
est un **SYMLINK** dont la source à écrire est `/opt/oto/sites/static/` (cf. section VPS
|
||||
de CLAUDE.md). La l.35 est donc vraisemblablement une **imprécision de rédaction** :
|
||||
Michel veut autoriser le déploiement d'assets publics, qui passe correctement par
|
||||
`/opt/oto/sites/static/`. **Recommandation** : corriger la l.35 en
|
||||
`/opt/oto/sites/static/ (assets publics · source du symlink)`. Je ne masque pas ce
|
||||
signal (documenté ici + `ci/README.md`) ; je ne le tranche pas non plus (décision
|
||||
architecture → Michel).
|
||||
|
||||
**Vérifications.** `./run_ci.sh` → **30 PASS · 0 FAIL · 0 SKIP** (rétabli).
|
||||
`ci/README.md` §guard mis en cohérence (exclusions documentées + contradiction notée).
|
||||
**Zéro nouveau module · zéro gate ajouté (#5)** — le garde n'est pas affaibli (mutation
|
||||
7/7 RED sur usage code), il est corrigé d'un faux-positif conforme à sa propre
|
||||
philosophie. Aucune commande touchant au VPS (#8) · aucun
|
||||
`git clean` <!-- ci-allow : mention de l'interdit absolu, jamais exécuté -->.
|
||||
|
||||
|
||||
|
||||
## Session 000623 · Audit 2 surfaces d'intégrité inter-artefacts neuves + ouverture canal 2 du jour
|
||||
|
||||
**Contexte.** `./run_ci.sh` au démarrage : **30 PASS · 0 FAIL · 0 SKIP** — gate vert,
|
||||
|
||||
Reference in New Issue
Block a user