[DTP-Worker] Sprint 8 · buffer L75 · « Vert trompeur » ironique : le README de l'auditeur 4Big (le module qui COMPTE les modules) figeait son propre total à la main « 17/17 modules » alors que quality_report.json en dit 22 — non gaté (check_readme_claims ne couvrait que le README d'entrée, pas ce README de module ; auditeur auto-exclu SoD ⇒ 0 signal) → 17→22 + règle L38 rendue count-free + bloc gate recomputant verdict/pass/modules/min_score depuis totals (2 morsures)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -32,6 +32,9 @@
|
||||
# 03_agents/erpnext_backend/AGENT.md (« source unique ») :
|
||||
# • N tests · M suites · verdict (matrice de régression du repo)
|
||||
# → qa/regression run
|
||||
# 05_deliverables_mvp/qa/audit_4big/README.md (« Résultat courant ») :
|
||||
# • N/M modules à K/100, verdict (l'auditeur compte les modules mais figeait
|
||||
# son PROPRE total à la main : 17→22) → qa/audit_4big totals
|
||||
# 03_agents/*/AGENT.md (tables de livrables · colonne « Tests ») :
|
||||
# • chaque cellule « Tests » par suite gatée → plan.suites[path]
|
||||
# (+ count_tests pour le self_module qa/regression, exclu de la matrice)
|
||||
@@ -219,6 +222,39 @@ else:
|
||||
bad(f"Fiche Backend · {BE} dit {'/'.join(mbe.groups())} MAIS regression_run dit "
|
||||
f"{'/'.join(be_exp)} ({be_src}) → régénérer la fiche")
|
||||
|
||||
# ============================================================================
|
||||
# README de l'auditeur 4Big (05_deliverables_mvp/qa/audit_4big/README.md) ·
|
||||
# section « Résultat courant » — même classe de « vert trompeur ».
|
||||
# ----------------------------------------------------------------------------
|
||||
# Ironie parfaite : le module qui COMPTE les modules affichait son propre total
|
||||
# SAISI À LA MAIN (« 17/17 modules à 100/100 »). Ce compte s'est PÉRIMÉ en silence
|
||||
# quand des modules ont été ajoutés (17 → 22) — le README de l'auditeur contredisait
|
||||
# son propre artefact `quality_report.json` (totals.modules = 22). Le gate racine
|
||||
# ne couvrait QUE le README d'entrée, pas ce README de module. On RECALCULE ici
|
||||
# depuis le même artefact faisant autorité (totals, déjà chargé dans `q`) et on
|
||||
# exige l'égalité avec ce que la section « Résultat courant » ÉCRIT.
|
||||
# ============================================================================
|
||||
A4 = f"{D}/qa/audit_4big/README.md"
|
||||
try:
|
||||
a4_txt = re.sub(r"\s+", " ", open(A4, encoding="utf-8").read())
|
||||
except OSError as e:
|
||||
bad(f"README audit_4big · {A4} illisible : {e}"); a4_txt = ""
|
||||
|
||||
a4_exp = (qv, str(q["pass"]), str(q["modules"]), str(q["min_score"]))
|
||||
a4_pat = (r"\*\*Verdict `(PASS|FAIL)`\*\* [—-] \*\*(\d+)/(\d+)\*\* "
|
||||
r"modules à \*\*(\d+)/100\*\*")
|
||||
a4_src = f"verdict={a4_exp[0]} pass={a4_exp[1]} modules={a4_exp[2]} min_score={a4_exp[3]}"
|
||||
ma4 = re.search(a4_pat, a4_txt)
|
||||
if ma4 is None:
|
||||
bad(f"README audit_4big · « Résultat courant » — claim INTROUVABLE dans {A4} "
|
||||
f"(attendu {a4_src})")
|
||||
elif ma4.groups() == a4_exp:
|
||||
good(f"README audit_4big · Résultat courant — {A4} "
|
||||
f"{'/'.join(ma4.groups())} == quality_report ({a4_src})")
|
||||
else:
|
||||
bad(f"README audit_4big · {A4} dit {'/'.join(ma4.groups())} MAIS quality_report "
|
||||
f"dit {'/'.join(a4_exp)} ({a4_src}) → régénérer le README")
|
||||
|
||||
# ============================================================================
|
||||
# Fiches agents · comptes de tests PAR SUITE (colonne « Tests » des tables) —
|
||||
# même classe de « vert trompeur », au grain le PLUS FIN.
|
||||
|
||||
Reference in New Issue
Block a user