diff --git a/05_activity_log/2026-08-02.md b/05_activity_log/2026-08-02.md index e52bbfd..90f1a28 100644 --- a/05_activity_log/2026-08-02.md +++ b/05_activity_log/2026-08-02.md @@ -1,5 +1,45 @@ # Activity log · 2026-08-02 · Claude Code DTP Worker +## Session `20260802_193605` · Sprint 8 · buffer · Faux-positif d'audit récurrent documenté en garde-fou in-repo (`ci/README.md`) : `michel/otov7-platform` (CLAUDE.md #2 · dépôt PRODUIT) ≠ `oto-enterprise-os-dtp` (dépôt MANDAT) → prévention d'une « correction » nuisible de la constitution (PAS un gate #5, PAS un module) + +**Nature — verrouiller une non-dérive contre une future « correction » nuisible, pas empiler un gate.** +Ouverture : arbre `git status --porcelain` **vide**, `run_ci.sh` **30 PASS / 0 FAIL / 0 SKIP** +(7 gates `ci/*.sh` + 23 suites module). Recompute indépendant des agrégats du README racine, +concordant : **22/22** qualité (scores = `{100}`) · **564/564** régression · **15/15** recette +(verdict `true`) · **13** agents · `gate.needs` = **30** — **zéro dérive numérique**. + +**Audit doc-vs-réalité (fan-out d'exploration).** Balayage des `*.md` de tête (README, CLAUDE.md, +AGENTS_EXISTING_ASSETS, PORTAIL_BANCABLES), `02_master_prompt/`, `03_agents/*/AGENT.md`, +`05_deliverables_mvp/*/README.md`, `ci/README.md`, `04_roadmap/`. **Une seule** candidate +remontée : CLAUDE.md ligne 16 (#2) nomme `michel/otov7-platform` là où la section *Git* (l.62) +et le README racine nomment `michel/oto-enterprise-os-dtp` — apparence de coquille contradictoire. + +**Verdict : FAUX POSITIF connu** (mémoire *otov7-platform-not-drift*). Ce sont **deux dépôts +Gitea distincts, tous deux corrects** : `otov7-platform` = dépôt du **produit** (plateforme OTOV7 +en construction, cible du refactoring) ; `oto-enterprise-os-dtp` = dépôt de **mandat** (ce worker). +La contrainte #2 verrouille le produit ; la section *Git* précise où vit le mandat. « Aligner » +#2 sur le nom du mandat **corromprait la constitution**. L'agent d'exploration (sans accès à ma +mémoire) l'a re-remonté cette session — preuve que le garde-fou méritait d'être **in-repo**, pas +seulement dans ma mémoire privée. + +**Action — garde-fou documenté, à la manière de la « Non-surface documentée » existante.** +Ajout d'un paragraphe **« Non-dérive documentée »** dans la section `guard_constraints.sh` de +`ci/README.md` (propriétaire de la contrainte #2), calqué sur la note `roles_couverts` (« 44 » +non cross-gaté). Il explicite : produit ≠ mandat, ne pas « corriger » CLAUDE.md #2, et pourquoi +il n'y a **rien à gater** (le garde ne vérifie que l'**absence** de plateformes interdites +github/gitlab/bitbucket, pas l'identité d'un repo Gitea autorisé). **CLAUDE.md non touché.** + +**Discipline (#5/#6).** **Zéro nouveau module · zéro gate ajouté** — pure documentation d'une +non-dérive, dans le fichier qui héberge déjà ce type de garde-fou. **CLAUDE.md intact** (on ne +« corrige » pas la constitution). Le nouveau texte cite github/gitlab/bitbucket mais chaque +occurrence est sur une ligne portant un marqueur de prohibition (« interdites ») → **ignorée** +par `guard_constraints` (vérifié vert). `check_docs` (liens) + `check_readme_claims` verts. + +**Clôture.** `run_ci.sh --static` → **7 PASS / 0 FAIL / 0 SKIP**. Aucune commande touchant au +VPS (`153.75.250.214` · #8). Prochaine tâche : buffer Sprint 8 toujours en **veille saturée** +(fiches 13/13 closes, gates saturés) — ne durcir un gate que si un blind-spot est **prouvé par +mutation-test** (*verify-uncovered-before-gating*), jamais un gate redondant (#5). + ## Session `20260802_183604` · Sprint 8 · buffer · Dérive doc-vs-réalité (README racine) : la ligne « Régression » affirmait `regression_run.json` « non commité par design » — FAUX depuis la refonte baseline byte-gatée (`76fb0e7`) → correction de vérité (PAS un gate #5, PAS un chiffre inventé #6) **Nature — dérive réelle non gatée, corrigée par la vérité (pas un gate de plus).** diff --git a/ci/README.md b/ci/README.md index 8b644ee..3d59ee1 100644 --- a/ci/README.md +++ b/ci/README.md @@ -74,6 +74,20 @@ Détecte l'**usage** (pas la simple mention) de : (`jamais`, `❌`, `only`, `pas de`, `interdit`…) est un rappel de règle → ignorée. Escape hatch documenté : ajouter `ci-allow` sur une ligne pour l'exclure. +**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 +périodiquement que la contrainte #2 nomme `michel/otov7-platform` (port 3015) tandis que la +section *Git* de CLAUDE.md et le README racine nomment `michel/oto-enterprise-os-dtp` — d'où +un soupçon de faute de frappe dans deux docs qui se contrediraient. **Ce sont deux dépôts +Gitea distincts, tous deux corrects** : `otov7-platform` est le dépôt du **produit** (la +plateforme OTOV7 en cours de construction, cible du refactoring), `oto-enterprise-os-dtp` est +le dépôt de **mandat** (ce worker, ses générateurs et hand-off). La contrainte #2 verrouille +la plateforme *produit* sur Gitea ; la section *Git* précise où vit le *mandat*. Aucune des +deux ne ment. **Ne pas « aligner » CLAUDE.md #2 sur le nom du mandat** — ce serait corrompre +la constitution (mémoire *otov7-platform-not-drift*). Le garde `guard_constraints.sh` ne +vérifie que l'**absence** de plateformes interdites (github/gitlab/bitbucket), pas l'identité +d'un repo Gitea autorisé — donc rien à gater ici (#5). + ### `validate_json.sh` Parse chaque `*.json` suivi (dont `version.schema.json` et `projets_master.schema.json`, contrat de données Faisabilité → Publiciste).