[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:
Claude Code DTP Worker
2026-08-02 12:42:52 +00:00
parent 2e71c5f51e
commit cb8d931abb
4 changed files with 84 additions and 3 deletions
+29
View File
@@ -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 » —
# ----------------------------------------------------------------------------