Commit Graph

279 Commits

Author SHA1 Message Date
Claude Code DTP Worker 6f6a01a472 [DTP-Worker] Sprint 8 · buffer L75 · Domaine SEO : le total ET la ventilation par langue des mots-clés (« 258 (fr=87·en=87·es=84) ») étaient transcrits À LA MAIN dans DEUX docs (table du README module seo + ligne de la fiche agent seo) sans AUCUN gate — ajouter un projet/vocabulaire ferait dériver les deux docs en silence pendant que seo/out/MANIFEST.json (byte-gaté par check_artifacts, counts recomptés de projets_master.json) dit autre chose → nouveau bloc dans check_readme_claims recomputant le quadruplet (total + fr/en/es) depuis MANIFEST.counts et exigeant l'égalité avec les deux docs (3 morsures : dérive total · compensation entre langues captée là où le total seul est aveugle · claim disparu)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 09:04:41 +00:00
Claude Code DTP Worker b7fa3bf8c8 [DTP-Worker] Sprint 8 · buffer L75 · Surface RBAC non gatée : 3 READMEs de module (roleprofile · apply_plan · userperm) recopiaient À LA MAIN des comptes dérivés des out/MANIFEST.json byte-gatés (recalculés du contrat rbac_50_roles.json à chaque build) sans AUCUN gate — table « Nb rôles » par profil (6 lignes + total bijectif 50), ligne agrégée « 6 étapes · 50 rôles / 116 DocPerm / 28 UP templates / 6 Role Profile · 4 DocType custom + 5 Company + 4 rôles » (8 comptes de tous les volets) et ventilation « 28 entite · 16 groupe · 2 own · 4 equipe » ; ajouter un rôle/DocType ferait dériver les trois docs en silence → nouveau bloc dans check_readme_claims recomputant chaque nombre depuis le MANIFEST du volet (10 checks · 3 morsures vérifiées : dérive par-profil · dérive agrégat consolidé · dérive ventilation ; claim absent = red)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 08:36:33 +00:00
Claude Code DTP Worker 56e64d6089 [DTP-Worker] Sprint 8 · buffer L75 · Hors du domaine « tests » : les comptes PAR WORKSPACE (cartes/liens/rôles) des 5 portails frontend étaient transcrits À LA MAIN dans DEUX docs (table du README module + prose de la fiche frontend_console) sans AUCUN gate — ajouter un rôle/DocType au contrat RBAC ferait dériver les deux docs en silence pendant que frontend/portails/out/MANIFEST.json (byte-gaté par check_artifacts) dit autre chose → nouveau bloc dans check_readme_claims recomputant chaque triplet + le total « N Workspace natifs » depuis MANIFEST.workspaces et exigeant l'égalité avec les deux docs (4 morsures : dérive table · dérive prose captée là où la table est aveugle · cellule disparue · total)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 08:06:10 +00:00
Claude Code DTP Worker d7fc6bab26 [DTP-Worker] Sprint 8 · buffer L75 · Dernière surface de la classe « compte par suite » : les agrégats de tests EN PROSE (crm « 81 (25+31+25) » · erpnext_backend « RBAC 60 (10+11+12+11+16) + e-CF 39 ») n'étaient couverts par AUCUN gate — une compensation entre suites laisserait la table gatée juste et la prose fausse → recompute total ET multiset des composants (ordre-indépendant) depuis plan.suites dans check_readme_claims (3 morsures : total périmé · compensation captée par le multiset · claim disparu)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 07:39:08 +00:00
Claude Code DTP Worker 9038417db8 [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>
2026-07-31 07:07:23 +00:00
Claude Code DTP Worker 402727411d [DTP-Worker] Sprint 8 · buffer L75 · Comptes de tests PAR SUITE périmés dans la fiche QA (col « Tests ») : audit_4big 35→34 · regression 25→26 · acceptance 31→37 — dérive silencieuse non gatée (seule la somme 564 l'était ; une compensation +1/−1 passerait) → recompute générique des cellules par-suite depuis plan.suites/count_tests dans check_readme_claims (10 lignes vérifiées) + 3 nombres corrigés
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 06:39:46 +00:00
Claude Code DTP Worker 25541c365d [DTP-Worker] Sprint 8 · buffer L75 · Traçabilité non vérifiée : les n° de ligne roadmap_line de la matrice d'acceptation pouvaient pointer à côté en silence (roadmap éditée) → INV11 ancrage roadmap (dérive 8+7 du fichier · #6) + parse_roadmap_anchors + 6 tests ; régénéré 558→564
INV10 ne garantissait que « roadmap_line est un entier positif ». Ajout de
parse_roadmap_anchors (deps) qui DÉRIVE la structure réelle de la roadmap, et
d'INV11 qui exige que chaque roadmap_line pointe RÉELLEMENT son bullet
(DELIVERABLE du sprint SX · k-ième bullet métrique) et que le « 8 + 7 » soit
dérivé du fichier, pas figé. Morsure prouvée sur le spec réel (S1=999, M3=200).
Régénéré consommateurs : regression 558→564 (run/plan/MANIFEST), quality_report
(acceptance 31→37 méthodes, 100/100 inchangé), fiches QA + Backend, README
acceptance (10→11 invariants). 7 gates verts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 06:12:15 +00:00
Claude Code DTP Worker 11f1250b29 [DTP-Worker] Sprint 8 · buffer L75 · Comptes vivants "551 tests" périmés DANS la machinerie CI (ci.yml + check_regression.sh + check_readme_claims.sh), non gatés → renvoi artefact (→558)
Même classe de vert-trompeur que ci/README.md (session 050007) mais dans le
code des gates : 3 comptes vivants figés "22 suites · 551 tests · PASS" (matrice
534→551→558). L'ironie : le header de check_regression — le gate anti-péremption
de la matrice — s'était lui-même périmé. Fix précédent 050007 : suppression de la
surface de dérive (retrait du nombre figé → renvoi à regression_run.json), pas
551→558. Progressions historiques "534→551→558" conservées. 7 gates verts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 05:34:20 +00:00
Claude Code DTP Worker 0cde935a39 [DTP-Worker] Sprint 8 · buffer L75 · Chiffre vivant périmé dans la doc du CI : ci/README.md illustrait check_regression par "551 tests" (→558) + décrivait 2 docs gatés au lieu de 3 (fiche Backend omise)
- ci/README.md:80 : compte vivant figé "22 suites · 551 tests" (périmé, matrice=558)
  remplacé par un renvoi au recompute check_readme_claims → zéro surface de dérive (#6)
- ci/README.md:130 : "le run réel 22/551" (présent, faux) → reformulé point-in-time ;
  534 conservé comme anecdote historique du défaut corrigé
- ci/README.md:121-134 : "les deux docs d'entrée" → "les trois" + ajout du bloc
  fiche ERPNext Backend (couverture ajoutée session 043004, omise du doc) → doc == code
- 7 gates verts ; check_artifacts inchangé (édition hors 05_deliverables_mvp)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 05:09:49 +00:00
Claude Code DTP Worker 504bfb0f10 [DTP-Worker] Sprint 8 · buffer L75 · Chiffre périmé fiche agent : "repo 560 tests" (vert-trompeur ungated) → 558/22 sourcé matrice + gate étendu
Défaut réel (#6 anti-invention) : 03_agents/erpnext_backend/AGENT.md situait les
tests backend par "repo : 560 tests au total" saisi à la main. 560 ne correspond à
aucun compte courant (matrice qa/regression = 558/22 ; repo-wide = 584 méthodes
test_*) — périmé en silence (534→551→558 ; 560 = ancien 534 + 26 harnais self-exclu
INV3). Même classe de vert-trompeur que la fiche QA (21/534), mais ungated.

- Vérif ciblée : toutes les autres bornes chiffrées des 13 AGENT.md exactes
  (crm 81, RBAC 60, e-CF 39, portails 19, chat 31, confotur 44, seo 36).
- Fix : le nombre pointe désormais vers l'artefact gaté (regression_run.json).
- Gate : ci/check_readme_claims.sh recalcule tests+suites+verdict depuis
  regression_run et exige l'égalité avec la fiche backend (comme la fiche QA).
- Preuve morsure : 560 réinjecté ⇒ gate rouge ; restauré ⇒ vert.
- 7 gates verts ; édition doc ⇒ aucune dérive out/ (check_artifacts vert).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 04:36:20 +00:00
Claude Code DTP Worker aebe9b7ba9 [DTP-Worker] Sprint 7/8 · Livrable démo : prompteur Markdown (out/run_sheet.md)
Le seul livrable démo (demo/scenarios) ne produisait qu'un run-sheet JSON
machine — aucun support lisible par un présentateur, alors que le Sprint 7 vise
un scénario « prêt à jouer ». Rendu Markdown in-repo depuis le JSON = même
pattern que faisabilite (rend des .md), zéro écriture VPS.

- scenlib/render.py : render_markdown() PUR/déterministe, ne lit que le
  run-sheet (déjà anti-inventé), aucun chiffre nouveau (#6).
- build émet out/run_sheet.md (prompteur : par beat, table « À dire | Chiffre |
  Source (preuve) » traçant le pointeur RFC 6901 amont).
- Compat vérifiée : HANDOFF 4Big ne json.load que les .json (ignore .md) ;
  check_artifacts diffe tout fichier build → md commité + reproductible.
- Consommateurs régénérés : régression 551→558 (22 suites PASS) ;
  quality_report.json (README 5011→5575 o · 32→39 test_*) PASS 22/22 ;
  03_agents/qa/AGENT.md 551→558 ; README démo auto-score 96→97.
- 7 gates verts · 39 tests démo · 34 tests audit · arbre propre.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 04:09:23 +00:00
Claude Code DTP Worker c858e193e0 [DTP-Worker] Sprint 8 · buffer L75 · Gate intégrité chiffres : étendu à la fiche QA (vert-trompeur 21/534)
Fix vert-trompeur hors périmètre du gate README (session précédente) :
- 03_agents/qa/AGENT.md « Verdict agrégé courant » affichait 21 suites·534 tests
  (PASS) en se disant « jamais compté à la main » — figé à la main, périmé vs le
  run réel 22/551. Corrigé 21/534→22/551.
- ci/README.md : exemple 21·534→22·551 + checklist DevOps 6→7 gates statiques.
- Correctif de fond : ci/check_readme_claims.sh RECOMPUTE désormais aussi le compte
  agrégé de la fiche QA depuis regression_run.json (somme des suites commitées) ; un
  claim absent échoue aussi. Portée du gate élargie README + fiche QA (en-tête script
  + ci/README.md §1/§2). Bites : 21/534 → exit1 diff explicite ; claim retiré → exit1.

7 gates verts (dont check_artifacts : aucune dérive out/). Matrice 551/22 PASS inchangée.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 03:36:26 +00:00
Claude Code DTP Worker 97f859b6a5 [DTP-Worker] Sprint 8 · buffer L75 · Gate intégrité chiffres README (ci/check_readme_claims.sh)
Faux-vert réel : le README (point d'entrée) affichait des chiffres PÉRIMÉS
que sa propre source cité contredisait, sans qu'aucun gate ne les enforce.
check_docs ne valide que les LIENS, jamais la VALEUR des nombres → dérive
silencieuse : « 21/21 modules » (artefact: 22/22), « 21 suites » (22),
« 14 in_repo + 1 out_of_scope » (15 in_repo). CLAUDE.md #6 non gardé.

Fix : (1) corrige les 3 chiffres du README ; (2) 7e gate statique
check_readme_claims.sh qui RECOMPUTE chaque chiffre depuis l'artefact cité
(audit_4big/regression/acceptance + count AGENT.md) et exige l'égalité avec
l'écrit — un claim absent échoue aussi. Câblé : job check-readme-claims ∈
gate.needs (30 jobs), source lib.sh, verrouillé par check_ci_integrity INV-B.

Bite proofs : « 21/21 » réintroduit ⇒ exit 1 (README≠artefact) ; claim suites
retiré ⇒ exit 1 (INTROUVABLE) ; restauré ⇒ exit 0. Nettoyage : commentaires
CI « 21 suites/534 tests » → 22/551. 7/7 gates verts, YAML valide.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 03:10:19 +00:00
Claude Code DTP Worker 1d21a3788d [DTP-Worker 20260731_023000] Auto exec · session 20260731_023000
CI / Contraintes NON-NÉGOCIABLES (CLAUDE.md) (push) Has been cancelled
CI / Validation JSON (schémas Faisabilité) (push) Has been cancelled
CI / Qualité documentaire (liens + 4Big) (push) Has been cancelled
CI / Reproductibilité des artefacts out/ (build == commité) (push) Has been cancelled
CI / Fraîcheur matrice de régression (run == commité) (push) Has been cancelled
CI / Intégrité du câblage CI (gate agrège tout · gates statiques verrouillés) (push) Has been cancelled
CI / Publiciste · parser + schéma + generator (unittest) (push) Has been cancelled
CI / RBAC · 50 rôles + schéma (unittest) (push) Has been cancelled
CI / Faisabilité · générateur 4 volets + round-trip (unittest) (push) Has been cancelled
CI / RBAC · fixtures ERPNext (Role + Custom DocPerm) (push) Has been cancelled
CI / RBAC · plan User Permission (row-level) (push) Has been cancelled
CI / RBAC · Role Profile (bundles par portail) (push) Has been cancelled
CI / RBAC · run-book d'application unifié (agrégat 3 volets) (push) Has been cancelled
CI / Faisabilité · dossier bancable trilingue FR/EN/ES (push) Has been cancelled
CI / CRM · workflow vente ERPNext (lead → CONFOTUR) (push) Has been cancelled
CI / CRM · DocType porteur OTO Dossier Vente (push) Has been cancelled
CI / CRM · barème commissions vendeurs (push) Has been cancelled
CI / Fiscal · e-CF DGII (Compupar) (push) Has been cancelled
CI / Frontend · Workspaces 5 portails rôle (push) Has been cancelled
CI / Legal · DocType CONFOTUR Application (push) Has been cancelled
CI / QA · Audit 5D conformité (push) Has been cancelled
CI / SEO · mots-clés trilingues + schema.org + hreflang (push) Has been cancelled
CI / Chat OTOIA · montage par portail (Custom Block) (push) Has been cancelled
CI / QA · Audit 4Big (95+/100 sur 100% deliverables) (push) Has been cancelled
CI / Démo · Scénarios (run-sheet P07 banquier / P05 client) (push) Has been cancelled
CI / QA · Matrice de régression exhaustive (Sprint 8) (push) Has been cancelled
CI / DevOps · Run-book de déploiement VPS unifié (Sprint 8) (push) Has been cancelled
CI / QA · Matrice d'acceptation / traçabilité MVP (Sprint 8) (push) Has been cancelled
CI / Mobile · config app Expo/EAS (navigation par rôle) (push) Has been cancelled
CI / E2E baseline Playwright (manuel) (push) Has been cancelled
CI / Gate qualité (agrégat) (push) Has been cancelled
2026-07-31 02:45:00 +00:00
Claude Code DTP Worker 9403e58f67 [DTP-Worker] Sprint 8 · buffer L75 · Activity log : fix vert-trompeur gates hors arbre git (cd_repo_root/lib.sh + INV-B lib sourcée)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 02:10:46 +00:00
Claude Code DTP Worker 1da26db22e [DTP-Worker] Sprint 8 · buffer L75 · Fix "vert trompeur" : les 6 gates ci/*.sh passaient exit 0 VERT hors d'un arbre git (cd "$(git rev-parse …)" → cd "" no-op succès → git ls-files vide → 0 fichier contrôlé). Helper partagé ci/lib.sh::cd_repo_root échoue bruyamment (exit 3). INV-B (check_ci_integrity) durci : un ci/*.sh est câblé s'il est lancé par un job OU sourcé par un gate (prouve que lib.sh n'est pas mort).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 02:09:55 +00:00
Claude Code DTP Worker a30ff937f0 [DTP-Worker] Sprint 8 · buffer L75 · Reproductibilité checkout propre : hand-off out/ des 4 générateurs RBAC était .gitignore-é (gate rouge en CI, vert local seulement) + durcissement check_artifacts (build produit ⇒ DOIT être suivi par git)
Défaut réel (même classe que le bug regression_run.json corrigé plus tôt) :
les 4 générateurs RBAC (fixtures_gen/userperm_gen/roleprofile_gen/apply_plan)
.gitignore-aient leur out/, alors qu'ils sont audités en archétype `generator`
(critère HANDOFF). En checkout PROPRE (git archive HEAD = ce que voit le runner
Gitea) leur out/ est absent → qa/audit_4big (dont le build relit le out/ de
CHAQUE module) les note 80<95 ⇒ INV7 ⇒ build refusé ⇒ check-artifacts ET
check-regression ROUGES. Ça ne passait qu'en local via les out/ non suivis
laissés par des build manuels.

Fix : committer le out/ des 4 générateurs (build byte-déterministe prouvé ;
apply_plan lit ses frères en process, pas via out/) → alignement sur les 15
autres générateurs ; audit 100/100 en checkout propre.

Durcissement : check_artifacts.sh exige désormais `git ls-files --error-unmatch`
sur chaque fichier produit → un out/ ignoré/non commité devient une erreur
LOCALE honnête au lieu d'une surprise en CI. Bite-proof : git rm --cached d'un
artefact (laissé sur disque) ⇒ exit 1 ; re-add ⇒ exit 0.

Régénéré : quality_report.json (dérive DOC = taille des 4 README édités).
Vérifs : 6 gates verts sur git archive propre ; 534/21 inchangé ; suites OK.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 01:42:14 +00:00
Claude Code DTP Worker 59542e8f3c [DTP-Worker] Sprint 8 · buffer L75 · Gate intégrité câblage CI (ci/check_ci_integrity.sh) : gate.needs ⊇ tous jobs non-manuels + chaque ci/*.sh verrouillé au gate
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 01:06:36 +00:00
Claude Code DTP Worker 76fb0e768d [DTP-Worker] Sprint 8 · buffer L75 · Intégrité matrice régression : fix gate check_regression cassé en CI (run baseline commité) + invariant disque→CI (INV4 orphan_tests_dirs)
Défaut #1 (bug CI réel) : ci/check_regression.sh exigeait regression_run.json
commité comme baseline, mais le fichier était .gitignore → absent en checkout
propre → le job Gitea check-regression échouait sur CHAQUE run CI (ne passait
qu'en local via un fichier non suivi). L'artefact run est byte-déterministe
(aucun horodatage/hôte/durée · path relatif) → committer est licite. Fix :
run désormais commité (baseline), .gitignore + README réécrits.

Défaut #2 (invariant manquant) : coverage_report prouvait CI→disque mais pas
l'inverse. Nouveau disk_test_modules() + orphan_tests_dirs dans INV4 : un module
gagnant un tests/ sans job CI fait chuter la couverture (fini la sous-comptée
silencieuse de la matrice). Schéma + 2 tests de morsure.

Consommateur régénéré : qa/audit_4big/quality_report.json (README 3710→4236 o,
24→26 méthodes). Matrice 534/21/PASS inchangée (harnais self-exclu, INV3).
5 gates verts · 26+34 tests OK · YAML valide.
2026-07-31 00:41:16 +00:00
Claude Code DTP Worker 0eaf5bde39 [DTP-Worker] Sprint 8 · buffer L75 · Gate fraîcheur matrice régression (ci/check_regression.sh) : run==commité + verdict PASS
L'artefact le plus cité du dépôt (qa/regression/out/regression_run.json ·
21 suites · 534 tests · PASS) n'avait aucun garde-fou CI : check_artifacts
ne rejoue que 'build' et exclut les artefacts d'exécution 'run'. Nouveau
5e gate statique rejoue 'regression_gen.py run' (~5s, déterministe) et exige
byte-identité + verdict PASS. Rend impossible la re-commission d'une matrice
périmée (dérive type demo 18->21) ou rouge commitée verte. parse_ci inchangé
(gate sans working-directory) → 0 dérive des counts dérivés (check_artifacts
exit 0). Preuve de morsure OK (534->999 => exit 1). 5 gates verts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-31 00:07:14 +00:00
Claude Code DTP Worker e16c4f676d [DTP-Worker] Sprint 8 · buffer · Gate reproductibilité artefacts (ci/check_artifacts.sh) + fix dérive run_sheet demo 18→21
Nouveau gate CI bloquant : régénère chaque 05_deliverables_mvp/**/out/ depuis son
générateur `build` et exige l'égalité byte-for-byte avec le fichier commité
(découverte auto · stdlib pur · zéro pip). Attrape la dérive silencieuse d'un
artefact qui auto-résout une valeur depuis un autre module et devient périmé quand
la source grandit — dérive qu'aucune suite tests/ (fonctions, pas fichier commité)
n'attrapait.

Défaut détecté et corrigé par ce gate : demo/scenarios/out/run_sheet.json
embarquait ci_modules_count=18 (buildé Sprint 7) alors que qa/audit_4big en compte
désormais 21. Régénéré (diff 1 ligne). Consistance live re-vérifiée.

Wiring : job check-artifacts + needs du gate agrégé (.gitea/workflows/ci.yml) ·
doc (ci/README.md). Vérifs : test négatif du gate OK (dérive → EXIT 1), 4 gates
statiques EXIT 0, suites CI-parsing vertes (regression/acceptance/audit_4big/demo),
21/21 suites · 534 tests, compteurs dérivés stables.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 23:38:15 +00:00
Claude Code DTP Worker 535bc83e0d [DTP-Worker] Sprint 8 · buffer L75 · Gate 4Big check_docs 0 faux positif (fixtures data_room exclues + spec CHOISIR scorée 95/100)
- ci/check_docs.sh : exclut */fixtures/data_room/* du gate SOFT auto-score
  (inputs de test synthétiques, cf. publiciste/fixtures/README.md ; même
  statut que daily_reports/*). Portée précise : fixtures/README.md reste gaté.
- specs/CHOISIR_MON_UNITE_SPEC.md : ajoute une section Auto-score 4Big 95/100
  (livrable spec, contrainte #5) ; P01=2.484M USD cité verbatim de la spec (#6).
- Resultat : 9 avertissements documentaires -> 0. Gates vertes (check_docs,
  guard_constraints, validate_json tous EXIT 0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 23:02:54 +00:00
Claude Code DTP Worker f68f2e2940 [DTP-Worker] Sprint 8 · buffer L75 · Log session 20260730_222904 (clôture chantier cross-linking : 4 dernières fiches SEO/DevOps/Frontend/ONAPI)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 22:32:00 +00:00
Claude Code DTP Worker 088faa9ed9 [DTP-Worker] Sprint 8 · buffer L75 · Fiches agents SEO/DevOps/Frontend/ONAPI cross-linkent leurs livrables in-repo (clôt le chantier cross-linking)
Les 4 dernières fiches du chantier (annoncées 'reste' par les sessions
précédentes) listaient leurs livrables en code-spans nus : aucun chemin
cliquable de la fiche vers l'artefact gated qui la réalise. Passage aux liens
markdown relatifs, pattern déjà appliqué à faisabilite/publiciste/qa/erpnext/crm :
- seo : colonne Sortie -> out/*.json + module -> README.md (5 liens)
- devops : ci.yml + ci/README.md + deploy_runbook/README.md (3 liens)
- frontend_console : portails/ + chat_otoia/ -> README.md (2 liens)
- onapi_legal : confotur/ -> README.md (1 lien)

Anti-invention #6 : 11 cibles verifiees existantes (test -f) avant edition ;
0 texte descriptif/chiffre modifie, 0 code touche (doc-only). Guards verts :
check_docs exit 0 (0 lien interne casse) · guard_constraints exit 0. Regression
inchangee (534 verts). Chantier cross-linking desormais complet sur les 13 agents.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 22:31:34 +00:00
Claude Code DTP Worker 98e0663c30 [DTP-Worker] Sprint 8 · buffer L75 · Fiche agent CRM cross-linke ses 3 livrables in-repo
- 03_agents/crm/AGENT.md : les 3 cellules Module (workflow_vente/dossier_vente/
  commissions) deviennent des liens cliquables vers leur README.md in-repo
- Cibles verifiees existantes avant edition (test -f) ; compteurs 25/31/25
  reconfirmes au disque (grep def test_) -> total CRM 81 inchange (anti-invention #6)
- Gates vertes : check_docs EXIT 0 (0 lien casse) · guard_constraints EXIT 0
- Doc-only, 0 code, regression inchangee

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 22:00:22 +00:00
Claude Code DTP Worker c201d37d29 [DTP-Worker] Sprint 8 · buffer L75 · Fiche agent ERPNext Backend cross-linke ses 6 livrables in-repo
Table 'Livrables backend réellement produits' : les 6 modules (rbac spec + 4
générateurs RBAC + fiscal/ecf_dgii) passent de code-spans nus à liens markdown
cliquables vers leur README.md (ou RBAC_50_ROLES_SPEC.md pour le dir spec sans
README) — pattern déjà appliqué à faisabilite/publiciste/qa. Priorité #1 (ERPNext
natif). Cibles vérifiées existantes (test -f) avant édition. Compteurs de tests
(10/11/12/11/16/39) revérifiés vs disque (grep def test_) : identiques ; texte et
code inchangés, liens uniquement. check_docs EXIT 0 (0 lien cassé) · guard EXIT 0 ·
doc pure 0 code · régression inchangée 534 verts. Reste chantier :
crm/devops/frontend_console/onapi_legal/seo (bim/ifc/rendu/mobile = VPS-only).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 21:31:57 +00:00
Claude Code DTP Worker 9f8e0f3fcc [DTP-Worker] Sprint 8 · buffer L75 · Fix CI check_docs : ignore les liens en code-span (faux positif → gate verte) 2026-07-30 21:02:44 +00:00
Claude Code DTP Worker 0ab3683a2b [DTP-Worker] Sprint 8 · buffer L75 · Fiche agent QA cross-linke ses 4 livrables in-repo
Table 'Livrables QA réellement produits' : les 4 modules (audit_5d/audit_4big/
regression/acceptance) passent de code-spans nus à liens markdown cliquables vers
leur README.md in-repo — pattern déjà appliqué à faisabilite + publiciste.
Cibles vérifiées existantes (test -f) avant édition. Compteurs de tests
(37/35/25/31) revérifiés vs disque (grep def test_) : identiques ; note honnête
que regression=25 suit le recensement regex faisant autorité de la matrice (24
exécutables + 1 gabarit f-string L47), cohérent avec le total 534 (#6). check_docs
EXIT 0 (0 lien cassé) · guard EXIT 0 · doc pure 0 code · régression inchangée
534 tests verts. Reste chantier : crm/devops/erpnext_backend/frontend_console/
onapi_legal/seo (bim/ifc/rendu/mobile = VPS-only, hors chantier).
2026-07-30 20:33:11 +00:00
Claude Code DTP Worker 1a4813c67f [DTP-Worker] Sprint 8 · buffer L75 · Fiche agent Publiciste cross-linke son livrable in-repo
Audit cohérence des 13 AGENT.md (grep -c 05_deliverables_mvp) : publiciste = seul
agent possédant un vrai module in-repo gaté (publiciste/ · 23 tests · job
publiciste-tests) à n'en cross-linker aucun (0), vs pairs >=3. Meme defaut que
faisabilite corrige session 36. + section 'Livrable Publiciste reellement produit'
(table Module/Sprint/Role/CLI/Job CI/Tests · toutes cellules verifiees) : CLI
publiciste.py {parse,validate,generate,run} (--help) · 23 tests (grep + regression) ·
job au gate (ci.yml) · Sprint 2 source README+GAP §3.13 (pas un n° roadmap qui ne
nomme pas le module) · contrat projets_master.json attribue au Faisabilite Agent
(source unique #5) · auto-score 95/100 cite depuis README L79. Anti-invention #6 :
aucun prix/positionnement fabrique · fixtures data_room = entrees hors auto-score ·
publication vente.otov7.com hors perimetre VPS #8. check_docs EXIT 0 (0 lien casse ·
5 liens resolvent) · guard_constraints EXIT 0 · regression inchangee 534 tests verts
(doc-only 0 code) · publiciste/AGENT.md links 0->5.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 20:02:51 +00:00
Claude Code DTP Worker a51e17af9a [DTP-Worker] Sprint 8 · buffer L75 · Cohérence spec CHOISIR_MON_UNITE (header stale résolu)
En-tête de specs/CHOISIR_MON_UNITE_SPEC.md se contredisait avec le bas du fichier :
Status affichait 'Attente vision précise Michel · placeholder' + 5 'Questions
ouvertes pour Michel', alors que DÉCISIONS FINALES MICHEL (2026-07-28 · L63-109)
tranchent déjà chacune de ces questions + parcours vendeur finalisé.

- Status → ' Vision finalisée (2026-07-28) · spec design-complete', implémentation
  page /choisir-mon-unite marquée frontend VPS hors-périmètre worker (#8, comme EAS mobile).
- Vision cible : (à confirmer) → ( confirmée · cf. Décisions finales).
- Questions ouvertes : conservées pour traçabilité, chacune mappée à sa décision
  (Speckle 3D / prix public+login / réservation 10j ERPNext / DocuSign / pas de comparateur).

Honnêteté #6 : fichier volontairement non-scoré (soft-warn attendu) — spec dont
l'implémentation est hors-repo, scorer inventerait une qualité de livrable inexistante ;
rationale mis à jour (plus 'placeholder attente vision', framing devenu faux).

Vérifs : check_docs EXIT 0 (0 lien cassé) · guard_constraints EXIT 0 · validate_json
EXIT 0 · régression inchangée 534 tests verts · docs pures, 0 code.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 19:31:47 +00:00
Claude Code DTP Worker 2d11a778b2 [DTP-Worker] Sprint 8 · buffer L75 · Fiche agent Faisabilité cross-linke ses livrables in-repo
Seule fiche agent (parmi qa/crm/devops qui en ont une) sans aucun lien vers ses
livrables gated : 03_agents/faisabilite/AGENT.md avait 0 lien 05_deliverables_mvp
vs 3 chez ses pairs. Aucun chemin de la mission vers les artefacts commités qui la
réalisent — vrai gap de finition, non un polish cosmétique.

+ section « Livrables Faisabilité réellement produits » (table calquée sur le
pattern des agents pairs) · 3 entrées TOUTES vérifiées par lecture directe :
TEMPLATE_FAISABILITE_CANONIQUE_v1.0.md [S1 · check-docs] · generator/ [S2 ·
faisabilite_gen score/scaffold/generate/batch · faisabilite-gen-tests · 16t] ·
bancable/ [S3 · bancable_gen build/validate · bancable-tests · 22t].

Anti-invention #6 : sprints lus dans en-têtes README/CLI, sous-commandes via --help,
comptes de tests repris du regression run faisant autorité, jobs CI lus dans ci.yml.
Frontière worker/VPS #8 rappelée : générateurs = contrepartie commitée+testable des
composants runtime OTOIA hors périmètre (aucune faisabilité PXX concrète prétendue).

Vérifs : check_docs vert (0 lien cassé · 3 nouveaux liens relatifs résolvent) ·
guard_constraints vert (exit 0). Doc-only, 0 code · régression inchangée 534 verts.
Auto-score 4Big 96/100.
2026-07-30 19:03:04 +00:00
Claude Code DTP Worker 2467628117 [DTP-Worker] Sprint 8 · buffer L75 · README racine (point d'entrée manquant du dépôt de mandat)
Aucun README.md racine n'existait — un humain ouvrant le repo n'avait pas de
navigation. Gap réel comblé (campagne stub→doc close : 13/13 agents documentés).

README = index navigation + état courant SOURCÉ (anti-invention #6, 0 chiffre
fabriqué) : 21/21 modules gated 100/100 [audit_4big] · 21 suites régression
[regression_plan] · 15 promesses roadmap = 14 in_repo + 1 out_of_scope M5 2-stores
#8, verdict true [acceptance_matrix] · 13 agents [compte réel 03_agents/].
Périmètre worker vs VPS #8 explicité · Git Gitea uniquement #2. Doc-only, 0 code.

Vérifs : check_docs vert (0 lien cassé · 20+ cibles dont 13 AGENT.md) · guards
verts (exit 0). Auto-score 4Big 96/100.
2026-07-30 18:31:35 +00:00
Claude Code DTP Worker 51a6389fe4 [DTP-Worker] Sprint 8 · buffer L75 · Cohérence auto-score 4Big (2 modules gated : demo/scenarios 32t + legal/confotur 44t → section Auto-score 96/100 comme tous leurs frères · check_docs conforme, seuls fixtures data_room [entrées] + CHOISIR [placeholder Attente vision Michel] restent en soft-warn, non-scorés par honnêteté #6 · régression exhaustive 21/21 suites · 534 tests verts · guards verts · docs pures, 0 code) 2026-07-30 18:01:32 +00:00
Claude Code DTP Worker 5c7e536d7b [DTP-Worker] Sprint 8 · buffer L75 · Doc agent Mobile (DERNIER stub → doc réelle honnête · plus aucun stub sur les 13 agents)
App Expo 54 (React 19.1.0/RN 0.81.5) + API mobile ERPNext natif ·
builds/submits/OTA hors-repo #8 (EAS/App Store #32/Play Store · aucun
.ipa/.aab diffable · anti-invention #6).

Ancrage in-repo VÉRIFIÉ = 2 contacts réels :
- rbac plateforme-mobile → OTO Plateforme Mobile [Développeur Mobile ·
  famille plateforme · 9060 QC · niveau 2 · perm API Access custom]
- qa acceptance row S5 (roadmap L58) : builds Expo 54 + submit stores
  out_of_scope VPS.

Honnêteté #6 : rôle famille plateforme (PAS construction/vente) → AUCUN
contact workspace/chat_otoia inventé, contrairement au réflexe de gonfler
la doc. Modules VPS refactorés sourcés AGENTS_EXISTING_ASSETS §8. 0 lien
mort · guards verts. 13/13 agents documentés · plus aucun stub.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 17:31:16 +00:00
Claude Code DTP Worker 9d71cbafef [DTP-Worker] Sprint 8 · buffer L75 · Doc agent Rendu (stub→doc réelle honnête · rendus Flux hors-repo #8 : gen_renders_flux /executive_hero_flux/flux1-dev-fp8/RunPod t68akvx80wv092/data_room 60_photos_site AGENTS_EXISTING_ASSETS §3 · anti-invention #6 + anti-IA-générique #3 : AUCUN rendu inventé, image uniquement depuis IFC source + projet réel · 3 contacts in-repo VÉRIFIÉS ancrent le rôle : rbac faisabilite-rendu-3d [OTO Faisabilité Rendu 3D · Spécialiste Rendu 3D · 6 vues/projet] + workspace Has Role OTO Construction + chat_otoia roles_allowed · bonus qa acceptance S3 Flux out_of_scope VPS · 0 lien mort · guards verts · reste mobile dernier stub) 2026-07-30 17:01:50 +00:00
Claude Code DTP Worker e7f1ce9218 [DTP-Worker] Sprint 8 · buffer L75 · Doc agent IFC/Speckle (stub→doc réelle honnête · pipeline IFC→GLB→Speckle→viewer hors-repo #8 : ifc_to_glb /oto_module_plans_ifc/bim-cloud.otov7.com/choisir-mon-unite AGENTS_EXISTING_ASSETS §9 · anti-invention #6 : AUCUN .ifc/.glb/stream inventé · 3 contacts in-repo VÉRIFIÉS ancrent le rôle : rbac faisabilite-ifc-speckle [OTO Faisabilité IFC Speckle] + workspace Has Role + qa acceptance S3 out_of_scope VPS · 0 lien mort · guards verts)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 16:30:55 +00:00
Claude Code DTP Worker 040cad7538 [DTP-Worker] Sprint 8 · buffer L75 · Doc agent BIM (stub→doc réelle honnête · pipeline AEC hors-repo #8 : Blender/Bonsai/IFC/Speckle/GLB/BIM-compras/Flux RunPod · modules refactorés sourcés AGENTS_EXISTING_ASSETS §1 [aec.py · ifc_to_glb · t68akvx80wv092] · anti-invention #6 : AUCUN artefact inventé, seul contact in-repo = renderer.py volet Ingénierie placeholder · cible Sprint 3 P07 <1h · 0 lien mort · guards verts)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 16:01:36 +00:00
Claude Code DTP Worker 8784c44a5c [DTP-Worker] Sprint 8 · buffer L75 · Doc agent ONAPI/Legal (stub→doc réelle · module CONFOTUR sourcé : DocType v15 custom soumissible CONFOTUR Application Sprint 5 L55 [18 champs · 3 rôles · 2 dépôts · 44 tests] · dérivé rbac_50_roles.json + workflow_vente_spec.json · anti-invention #6 taux/article/montant null · 0 lien mort · guards verts)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 15:30:49 +00:00
Claude Code DTP Worker 8d42f8287e [DTP-Worker] Sprint 8 · buffer L75 · Log session 30 (doc ERPNext Backend)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 15:01:44 +00:00
Claude Code DTP Worker 586c355fe2 [DTP-Worker] Sprint 8 · buffer L75 · Doc agent ERPNext Backend (stub→doc réelle · 2 volets sourcés : RBAC 50 rôles Sprint 2 L38 [60 tests · 5 sous-modules] + e-CF DGII Compupar Sprint 4 L51 [39 tests] · source unique rbac_50_roles.json #5 · anti-invention RNC/ITBIS/taux null #6 · 0 lien mort · guards verts)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 15:01:24 +00:00
Claude Code DTP Worker 57cfa95f1a [DTP-Worker] Sprint 8 · buffer L75 · Doc agent Frontend Console (stub→doc réelle · 2 générateurs sourcés : 5 Workspaces v15 Sprint 4 L49 + 5 Custom Block chat OTOIA Sprint 6 L63 · ERPNext natif #1 · anti-invention endpoint/module null · 50 tests verts)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 14:31:09 +00:00
Claude Code DTP Worker 399d9ff11a [DTP-Worker] Sprint 8 · buffer L75 · Doc agent SEO (stub→doc réelle · bundle trilingue Sprint 6 sourcé : 258 mots-clés FR/EN/ES + schema.org + hreflang · anti-invention offers=0)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 14:00:36 +00:00
Claude Code DTP Worker a915758b37 [DTP-Worker] Sprint 8 · buffer L75 · Doc agent DevOps (stub→doc réelle · 2 volets sourcés : gate CI Gitea Actions L29 + run-book VPS L73)
Session 27. Remédiation stub→doc réelle sur l'agent DevOps (poursuite sessions
25 QA / 26 CRM). AGENT.md 29 lignes → doc réelle ~90 lignes.

- Table 2 livrables sourcés depuis le CI réel + README run-book
- Détail des 3 guards blocants (constraints/json/docs)
- Périmètre bijectif prouvé vs CI (anti-omission), gate-en-repo (#8)
- Anti-invention (#6) : 22 suites gated grep'ées, 29 tests, compte total
  délégué à qa/regression, confirmations VPS sourcées (owner+source)

Vérifs : guard_constraints + check_docs verts (aucun lien mort).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 13:30:37 +00:00
Claude Code DTP Worker ccda618ea4 [DTP-Worker] Sprint 8 · buffer L75 · Doc agent CRM (stub→doc réelle · 3 modules Sprint 4 sourcés + anti-invention taux null) (Doc · roadmap L75)
- 03_agents/crm/AGENT.md : stub 29 lignes → doc réelle ~90 lignes
- Table 3 livrables CRM (workflow_vente/dossier_vente/commissions) :
  sprint · CLI build|validate · job CI · nb tests (25/31/25 = 81, tous sourcés)
- #3 mis en avant (CRM = ERPNext natif · JAMAIS EspoCRM/HubSpot)
- Anti-invention #6 : taux commission null ; USD+DOP/Letter US cités #10
- Vérifs : guard vert · check_docs vert (liens OK) · 0 réf roadmap morte

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 13:01:09 +00:00
Claude Code DTP Worker dbeea972ed [DTP-Worker] Sprint 8 · buffer L75 · Doc agents QA (stub→doc réelle · 4 modules méta sourcés) + fix lien roadmap mort ×11 AGENT.md (guard+docs verts)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 12:33:28 +00:00
Claude Code DTP Worker 5d9ea5687d [DTP-Worker] Sprint 8 · Générateur Matrice d'acceptation / traçabilité MVP (15 promesses roadmap · 21 modules gated tracés bijectif · partition sprint exacte · 12 hors-périmètre sourcés) (QA · roadmap L75/L80-87)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 12:12:22 +00:00
Claude Code DTP Worker 58ed555db0 [DTP-Worker] Sprint 8 · Générateur Run-book de déploiement VPS unifié (7 phases · 20 modules gated · couverture bijective vs CI) (DevOps · roadmap L73)
Agrégateur de méta-niveau au-dessus du run-book RBAC : ordonne le déploiement
VPS de TOUS les livrables gated en 7 phases (Prérequis → DocTypes → RBAC →
Workflow/métier → Frontend → Contenu → Vérification QA), avec graphe de
dépendances inter-phases acyclique et confirmations préalables sourcées.

Anti-invention (#6) : périmètre dérivé du CI (parse_ci réutilisé), couverture
bijective module→phase (un module gated non planifié OU un module planifié non
gated → refus), SoD (auto-exclusion), zéro chiffre métier (confirmations
sourcées via audit_5d D1.1/D1.2/D1.3/D2.3 + endpoint OTOIA).

Vérifs : 29/29 tests module (dont 14 injections négatives) · audit_4big PASS
20/20 à 100 · régression run 20/20 suites · 503 tests · 0 échec · gate CI local
vert. CI job devops-deploy-runbook-tests + gate ; enregistrement audit_4big
(19→20) ; plan régression régénéré (19→20 suites).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 11:41:43 +00:00
Claude Code DTP Worker 4b0752906d [DTP-Worker] Sprint 8 · Générateur Matrice de régression exhaustive (19 suites · 474 tests · gate méta-niveau) (QA · roadmap L74)
Harnais méta-niveau : agrège l'exécution de toutes les suites gated en une
matrice + verdict PASS/FAIL et fournit le compte agrégé faisant autorité
(N tests verts). Périmètre dérivé du CI (réutilise q4lib/registry.parse_ci ·
zéro duplication) ; anti-invention (#6) : le plan ne contient aucun compteur de
résultat, recomputé à la validation. Enregistré dans l'audit 4Big (18→19
modules · PASS 19/19). run exhaustif : 19/19 suites vertes · 474 tests passés.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 11:09:08 +00:00
Claude Code DTP Worker cac65386ab [DTP-Worker] Sprint 7 · Générateur Scénarios démo (run-sheet P07 banquier / P05 client) (CRM+Faisabilité · roadmap L68)
Orchestrateur méta-niveau : compose les hand-offs out/ des 10 modules déjà
livrés en un run-sheet de démo jouable, via pointeurs RFC 6901 résolus à la
construction (zéro chiffre en dur · #6). Réutilise le validateur Publiciste et
la preuve de couverture CI de l'auditeur 4Big (#5) — une démo ne s'appuie que
sur des modules gated. Enregistre demo/scenarios dans l'audit 4Big (17→18,
verdict PASS 18/18 à 100). 32 tests (9 injections négatives) · régression 474
tests verts · guards CI verts · builds déterministes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 10:39:24 +00:00
Claude Code DTP Worker a517619432 [DTP-Worker] Sprint 7 · Générateur Audit 4Big qualité (95+/100 sur 100% deliverables) (QA · roadmap L69)
Audit de méta-niveau + gate : note la qualité 4Big de 100% des livrables gated
et bloque (FAIL) si un module < 95/100 (CLAUDE.md #5). Couverture PROUVÉE par
recoupement bijectif registre ↔ working-directory du CI (moins l'auditeur · SoD
ISA 315). 5 critères déterministes (DOC/CONTRAT/TESTS/CLI/HANDOFF) renormalisés
par archétype. Anti-invention (#6) : chaque note est recalculée depuis des faits
du dépôt, jamais saisie ; un invariant recompute chaque note.

Résultat : PASS · 17/17 modules à 100/100. Régression 442 tests verts (+34).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 10:11:02 +00:00