[DTP-Worker 20260802_123546] Sprint 8 · buffer · Dérive doc-vs-réalité « 12 agents » sur les 2 docs de mandat de tête (AGENTS_EXISTING_ASSETS titre + MASTER_PROMPT §28) : le 13e agent (publiciste) est livré+gaté 100/100 → correction 12→13 (source unique 03_agents/) + clarification statut publiciste (LIVRÉ mandat · runtime VPS hors #8) + extension check_readme_claims réutilisant n_agents pour ancrer ces 2 docs (surface prouvée non couverte par mutation-test)
This commit is contained in:
@@ -25,7 +25,7 @@ Livrer une plateforme intégrée BIM + ERPNext + Console luxury + OTOIA orchestr
|
||||
- **Speckle** : bim-cloud.otov7.com (viewer 3D)
|
||||
- **Design system** : `#0a0a12` dark + `#f0b429` doré · Fraunces + Cormorant Garamond
|
||||
|
||||
## Tes 12 agents spécialisés (voir `03_agents/`)
|
||||
## Tes 13 agents spécialisés (voir `03_agents/`)
|
||||
Chaque agent a son propre `AGENT.md` avec scope + outils + non-négociables.
|
||||
|
||||
## Ton livrable final (semaine 8)
|
||||
|
||||
@@ -1284,3 +1284,48 @@ Aucune commande touchant au VPS.
|
||||
|
||||
**Non fait (hors périmètre #8)** — déploiement serveur réel, runner Gitea, Playwright
|
||||
serveur : VPS `153.75.250.214`, plan ordonné `devops/deploy_runbook`.
|
||||
|
||||
---
|
||||
|
||||
## Session 20260802_123546 · Dérive « 12 agents » sur les docs de mandat de tête (hors README)
|
||||
|
||||
**Contexte** — Reprise en **Sprint 8 · buffer**. Relu CLAUDE.md, roadmap (0 item
|
||||
ouvert), MEMORY.md, journal du jour. Re-vérification indépendante multi-angle de la
|
||||
santé (recompute `python3` sur artefacts commités) : **7 gates → exit 0** · qualité
|
||||
**22/22 @ 100/100** (verdict PASS · scores tous à 100, pas seulement le seuil) ·
|
||||
régression **22 suites / 564 tests / 0 échec**, **13/13 modules** présents dans la
|
||||
matrice · recette **15/15 `in_repo`** · constantes canoniques (3 %/8.5 %/52 %) toutes
|
||||
ancrées · README (13 agents ×2, 22/22, 15 promesses) exact vs artefacts.
|
||||
|
||||
**Blind-spot RÉEL trouvé** (surface distincte de l'audit fiches `03_agents/*` clos au
|
||||
`2bc3afb`) — audit des **docs de mandat de TÊTE**, non couverts par le gate de claims
|
||||
(scopé README.md uniquement). `PORTAIL_BANCABLES_4BIG.md` vérifié exact (commande +
|
||||
sorties `50_financier_bancable/{fr,en,es}.md` concordent avec `bancable_gen.py`). Mais
|
||||
**deux docs affichaient encore « 12 agents »** :
|
||||
- `AGENTS_EXISTING_ASSETS.md:1` (titre) · `02_master_prompt/MASTER_PROMPT_DTP_v2.md:28`.
|
||||
|
||||
Réalité re-dérivée : **13 agents** — 13 répertoires `03_agents/`, README canonique
|
||||
« 13 agents » (×2, déjà gaté), le 13e (**publiciste**) **LIVRÉ+GATÉ** (fiche +
|
||||
générateur `05_deliverables_mvp/publiciste/` **100/100** + suite de régression
|
||||
`publiciste`). Les « 12 » précédaient l'ajout du publiciste → dérive doc-vs-réalité.
|
||||
|
||||
**Réalisé**
|
||||
- **Correction du compte** 12 → 13 dans les deux docs (fait objectif, `03_agents/`
|
||||
= source unique · #6 anti-invention).
|
||||
- **Clarification publiciste** (`AGENTS_EXISTING_ASSETS.md` §13) : marqueur « (à créer) »
|
||||
levé, **note « Statut mandat : LIVRÉ »** pointant fiche + générateur gaté, tout en
|
||||
**préservant** la liste « À développer » comme **runtime VPS** hors périmètre worker
|
||||
(#8) — respecte la convention « VPS-runtime `à créer` ≠ dérive » (memory
|
||||
`fiche-accuracy-audit-closed`). Deux liens Markdown ajoutés → résolus (`check_docs`).
|
||||
- **Extension du gate** `check_readme_claims.sh` (surface prouvée NON couverte par
|
||||
mutation-test) : nouvelle boucle qui **réutilise le `n_agents` déjà dérivé** de
|
||||
`git ls-files 03_agents/*/AGENT.md` (pas de nouvelle machinerie · #5 pas de doublon)
|
||||
et exige que les DEUX docs de tête citent exactement ce compte. Classe
|
||||
`doc-numeric-claims-gate`.
|
||||
|
||||
**Vérifications** — nouveau check **mutation-testé** (12 réinjecté → gate ROUGE
|
||||
« dit 12 MAIS 03_agents/ en compte 13 », restauré → exit 0). **7 gates re-joués →
|
||||
exit 0**. Aucune commande touchant au VPS.
|
||||
|
||||
**Non fait (hors périmètre #8)** — runtime VPS publiciste (`publiciste.py`, systemd/
|
||||
inotify, WhatsApp), déploiement serveur : hors périmètre worker.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Actifs existants OTOV7 · Mapping vers les 12 agents DTP
|
||||
# Actifs existants OTOV7 · Mapping vers les 13 agents DTP
|
||||
|
||||
## Principe : NE PAS REPARTIR DE ZÉRO
|
||||
Chaque agent hérite/réutilise les modules déjà présents avant de créer du nouveau code.
|
||||
@@ -112,9 +112,16 @@ Chaque agent hérite/réutilise les modules déjà présents avant de créer du
|
||||
4. **Capabilities OTOIA** = fondation → chaque agent DTP branche dessus
|
||||
5. **Éliminer le vieux** : si un module est obsolète, l'archiver dans `_ARCHIVES/`, ne pas laisser deux versions
|
||||
|
||||
## 13. Publiciste Agent — NOUVEAU (à créer)
|
||||
## 13. Publiciste Agent — NOUVEAU
|
||||
**Rôle** : Maintient automatiquement le site public `vente.otov7.com` à partir des faisabilités.
|
||||
|
||||
> **Statut mandat** : la fiche + le générateur déterministe côté dépôt sont **LIVRÉS**
|
||||
> ([`03_agents/publiciste/AGENT.md`](03_agents/publiciste/AGENT.md) ·
|
||||
> [`05_deliverables_mvp/publiciste/`](05_deliverables_mvp/publiciste/README.md), gated
|
||||
> 100/100 · suite de régression `publiciste`). La liste **« À développer »** ci-dessous
|
||||
> recense le **runtime VPS** (orchestrateur `publiciste.py`, triggers systemd/inotify,
|
||||
> notifications WhatsApp) qui reste hors périmètre worker (`CLAUDE.md` #8).
|
||||
|
||||
**Ressources existantes à réutiliser** :
|
||||
- `/opt/oto/config/projets_config.json` (déjà en place)
|
||||
- `/opt/oto/config/projets_editor.py` (API GET/POST déjà en place)
|
||||
|
||||
@@ -216,6 +216,35 @@ if re.search(r"verdict `true`", norm):
|
||||
else:
|
||||
bad("Recette · verdict `true` non cité dans README (attendu)")
|
||||
|
||||
# ============================================================================
|
||||
# Comptes d'agents dans les docs de mandat de tête (hors README) · même classe.
|
||||
# ----------------------------------------------------------------------------
|
||||
# Le README est déjà gaté (« 13 agents » ×2 ci-dessus, recompté depuis
|
||||
# 03_agents/*/AGENT.md). Or DEUX autres docs de tête retranscrivent ce même
|
||||
# compte en dur et se périmaient en silence : ils affichaient « 12 agents » alors
|
||||
# que le 13e (publiciste) était livré+gaté (fiche + générateur 100/100 + suite de
|
||||
# régression). Aucun gate ne les comparait à la réalité du disque. On réutilise
|
||||
# le `n_agents` DÉJÀ dérivé de `git ls-files 03_agents/*/AGENT.md` (source unique,
|
||||
# pas de nouvelle machinerie) et on exige que chaque doc cite exactement ce compte.
|
||||
# ============================================================================
|
||||
for path, pat, label in [
|
||||
("AGENTS_EXISTING_ASSETS.md",
|
||||
r"Mapping vers les (\d+) agents DTP", "Actifs existants · titre"),
|
||||
("02_master_prompt/MASTER_PROMPT_DTP_v2.md",
|
||||
r"Tes (\d+) agents spécialisés", "Master prompt · titre"),
|
||||
]:
|
||||
try:
|
||||
doc = re.sub(r"\s+", " ", open(path, encoding="utf-8").read())
|
||||
except OSError as e:
|
||||
bad(f"{label} — {path} illisible : {e}"); continue
|
||||
m = re.search(pat, doc)
|
||||
if m is None:
|
||||
bad(f"{label} — compte d'agents INTROUVABLE dans {path} (attendu {n_agents}) · motif=/{pat}/")
|
||||
elif m.group(1) == str(n_agents):
|
||||
good(f"{label} — {path} cite {m.group(1)} == 03_agents/ ({n_agents})")
|
||||
else:
|
||||
bad(f"{label} — {path} dit {m.group(1)} MAIS 03_agents/ en compte {n_agents} → corriger le doc")
|
||||
|
||||
# ============================================================================
|
||||
# Fiche QA (03_agents/qa/AGENT.md) · même classe de « vert trompeur » —
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user