Commit Graph

57 Commits

Author SHA1 Message Date
Claude Code DTP Worker 1992ee63be [DTP-Worker 20260812_110124] fix correctness · financement_bancaire overall_percent — la barre GLOBALE pouvait afficher 100.0 tout en BLOQUANT (l'invariant per-condition de 093114 ne s'était pas propagé à l'agrégat) → matrice 634→635 · test à dents · exemple byte-identique · sans gate
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-12 11:09:49 +00:00
Claude Code DTP Worker 85cd625dac [DTP-Worker 20260812_093114] fix correctness · financement_bancaire gate — un dossier incomplet pouvait afficher percent 100.0 (barre pleine ✓) tout en BLOQUANT
Défaut latent, byte-repro-aveugle : _cond_apport arrondit percent à 1 décimale
(round) tandis que ok est un test exact. Un versement dans la bande [99.95%,100%[
(ex. 19 999/20 000 USD = 99.995%) remonte à percent:100.0 alors que ok=False,
remaining=1 USD → barre frontend « 100% ✓ » qui refuse la soumission + raison
auto-contradictoire « reste 1 USD · 100.0% ». Seul _cond_apport atteignable
(montant continu) ; documents/autorisations = ratios entiers sur listes 13/4,
bande inatteignable.

Fix chirurgical : garde `if not ok and pct>=100.0: pct=99.9` → invariant
d'affichage percent==100.0 ⟺ ok. Échantillon commité à 67.8% (hors bande) →
gate_status_example.json/out rebuild BYTE-IDENTIQUE.

Test à dents test_apport_quasi_complet_ninclut_pas_100pct (mordu sans le fix).
Cascade +1 test : régression 633→634/616→617, plan+MANIFEST+quality_report
régénérés, fiches QA/Backend/CRM re-dérivées. run_ci 33/0/0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-12 09:43:10 +00:00
Claude Code DTP Worker e7cc3c4a3c [DTP-Worker 20260812_080104] fix correctness · commissions vendeurs — la formule traçable base×taux cassait sur montants réels
Bug latent réel (crm/commissions/commlib/finance.py:75) : le libellé de base de
la formule traçable « commission = base × taux » utilisait f"{base:g}", qui casse
deux fois sur des montants immobiliers réels en RD (une unité USD 300k ≈ 18M DOP) :
(1) notation exponentielle dès 1e6 (18000000 → 1.8e+07, illisible/non auditable) ;
(2) arrondi silencieux à 6 chiffres significatifs (123456.78 → 123457) = une base
FABRIQUÉE ≠ de la réelle, l'invention interdite par #6 dans le module même qui
proclame l'anti-invention.

Fix : helper _amount_label (f"{x:f}" jamais exponentiel + strip zéros) → décimal
fidèle, identique à l'ancien pour tous les montants simples (200000 reste 200000) ;
seuls les cas buggés changent. 2 tests à dents (millions non-exponentiel + décimales
préservées) — teeth prouvé : les DEUX échouent sans le fix.

Byte-repro : 0 impact d'artefact du module (compute_line est runtime, jamais appelé
par le générateur). Cascade compteur-de-suite seule : matrice 631/614 → 633/616,
regression×3 + quality_report régénérés, fiches qa/erpnext/crm + README réalignés
(commissions 25→27, Total CRM 81→83). run_ci 33/0/0. 0 code moteur V18 (bloqué D-06).
0 gate ajouté (#5). 0 commande VPS (#8).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-12 08:11:32 +00:00
Claude Code DTP Worker 5af86e3518 [DTP-Worker 20260812_073055] hardening correctness · rendu HTML publiciste — percent-encode le SEUL segment d'URL restant (code) dans le url('…') CSS
Durcissement d'uniformité (pas bug déclenchable aujourd'hui) qui COMPLÈTE le fix
correctness de la session 070054 (aeb30b8). Ce fix-là a percent-encodé
hero['fichier'] dans src=f"/static/projets/{code}/{quote(fichier)}", mais dans la
MÊME url('…') CSS il restait un 2ᵉ segment dynamique — `code` — interpolé brut puis
html-échappé via _esc(src). C'est exactement l'anti-pattern identifié par 070054
(html.escape = mauvais encodeur pour un segment d'URL), appliqué de façon incomplète.

Fix : src = f"/static/projets/{quote(code)}/{quote(hero['fichier'])}" — quote() est
le SEUL encodeur correct pour un segment d'URL ; le CONTEXTE, pas la donnée courante,
dicte l'encodeur. Zéro dérive : codes réels = P01..P09 (§Projets), quote("p01")=="p01"
→ byte-repro inchangé. Cas frère exact de 060044/criteria.py (« durcir le SEUL membre
non-durci d'une famille ») : ici le SEUL segment d'URL non-encodé de la même url().

Test à dents (test_hero_media_code_segment_percent_encoded) : code théorique "P'X" →
prouvé FAIL sans quote(code), PASS avec. Suite publiciste 25→26, matrice 630/613→631/614.

Défaut d'abord : classe encodage-contextuel balayée sur tous les modules HTML/CSS/URL ;
2 candidats Explore réfutés non-défauts (chat mount_html = persona forcée Amélie par
invariant 7 + portail_key enum ; code segment = théorique mais durci par uniformité).
Cascade régénérée dans l'ordre (quality_report en DERNIER) · 3 fiches compteurs réalignées.
run_ci 33/0/0 · NFC-clean · zéro code moteur V18 (bloqué D-06 #6) · zéro gate (#5) · zéro invention (#6).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-12 07:41:05 +00:00
Claude Code DTP Worker aeb30b8311 [DTP-Worker 20260812_070054] fix correctness · rendu HTML publiciste — URL de rendu percent-encodée dans le url('…') CSS
Bug latent réel (rendu-correctness, entrée FR/ES plausible) : _hero_media
(generator.py:92) injectait le nom de fichier via html.escape dans un
background-image:url('…'). Un rendu réel « Vue d'ensemble.png » devenait
Vue d&#x27;ensemble.png → le navigateur HTML-décode l'attribut style AVANT le
CSS → l'apostrophe referme la chaîne url('…') → hero non affiché, silencieux.
html.escape est le mauvais encodeur pour un contexte CSS.

Fix : urllib.parse.quote sur le segment de fichier ('→%27, espace→%20,
accents→%XX) — valide dans URL + attribut HTML + url() CSS ; _esc conservé pour
l'attribut HTML. Zéro dérive : quote laisse les noms ASCII simples inchangés
(hero_aerien.jpg identique) → fixture + byte-repro intacts.

Test de régression à dents (test_hero_media_url_percent_encode) : prouvé FAIL
sans quote, PASS avec. Cascade régénérée (artifact-reproducibility-gate) :
suite publiciste 24→25, matrice 629/612→630/613/17 · quality_report régénéré
en DERNIER · 3 fiches AGENT.md (compteurs dérivés) réalignées.

Défaut d'abord : 12 fichiers cœur / 7 modules ré-audités CLEAN (epsilon 1e-9
gate apport = tolérance flottante correcte). run_ci 33/0/0 · NFC-clean ·
zéro code moteur V18 (bloqué D-06 #6) · zéro gate ajouté (#5) · zéro invention (#6).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-12 07:15:47 +00:00
Claude Code DTP Worker 39def91880 [DTP-Worker 20260811_095844] Auto exec · session 20260811_095844
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 / Intégrité des chiffres du README (valeur == artefact cité · (push) Has been cancelled
CI / Intégrité mobile-build.yml (gating portable · activation différée · (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 / CRM · Financement Bancaire (gate hypothécaire RD) (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 / PIE · manifest de dépendances (Annexe 12 · V10.1) (push) Has been cancelled
CI / E2E baseline Playwright (manuel) (push) Has been cancelled
CI / Gate qualité (agrégat) (push) Has been cancelled
2026-08-11 10:11:32 +00:00
Claude Code DTP Worker 35de616236 [DTP-Worker] hardening correctness · l'alignement du compteur de tests audit_4big↔discovery (fix ASCII ac595d0) était INCOMPLET · criteria.py gardait def (un espace figé) là où la source sœur reglib.discovery a def\s+def test_x(/def\ttest_x( (Python valide) loupés → sous-comptage silencieux + désaccord avec l'autorité byte-gatée de la colonne « Tests » des fiches (violation #6, même racine « détecter la forme, pas une graphie » que ac595d0/fd99362)
Fix chirurgical `def ` → `def\s+` (forme strictement identique à discovery._TEST_METHOD_RE) + teeth test_tests_counts_non_single_space_def_separator (prouvé mordant : ancien regex compte 1/3, nouveau 3/3). Occurrence latente (0 def multi-espace dans le dépôt aujourd'hui) → quality_report.json byte-identique (audit_4big s'auto-exclut de son scoring). Cascade matrice régression 627→628 / 610→611 ; fiches qa+erpnext_backend re-dérivées. Axe recursion (os.walk vs os.listdir) non-occurrent, laissé. Classe compteur-coïncidence désormais close sur ses 2 axes. Pas de nouveau gate (#5 · check_readme_claims mord déjà). 0 code moteur V18 (bloqué #6), 0 commande VPS (#8).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-11 09:05:51 +00:00
Claude Code DTP Worker fd99362660 [DTP-Worker] hardening correctness · le critère CLI de l'audit 4Big (q4lib/criteria.py) détectait l'entrypoint __main__ par un littéral figé double-quoté → loupait silencieusement les gardes simple-quotées / « Yoda » / sans-espaces (toutes du Python valide) → sous-scorage CLI −20 pts d'un module sain (violation #6)
Même racine que le fix ASCII ac595d0 : une détection assume une graphie là où le langage admet plusieurs formes. Fix = regex de FORME (_MAIN_GUARD_RE : 2 styles de guillemets · ordre inversé · espacement libre) + teeth test_cli_detects_single_quoted_and_yoda_guards (3 fixtures, prouvé mordant : ancien littéral rend False sur les 3, nouvelle regex True). Robustesse pure : les 50 gardes du dépôt sont double-quotées et toujours matchées → aucun score ne bouge, quality_report.json byte-identique (audit_4big s'auto-exclut de son scoring). Cascade régression uniquement : 626/609 → 627/610 (nouveau test) + fiches qa/audit_4big 35→36 & agrégat & backend 626→627 re-dérivés (RED check_readme_claims). Sweep préalable : classe ASCII-vs-Unicode close au niveau CODE (générateurs+libs+gates shell tous ASCII-par-domaine sauf les 2 compteurs test déjà \w).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-11 08:39:51 +00:00
Claude Code DTP Worker ac595d0749 [DTP-Worker] fix correctness · audit 4Big sous-comptait un test au nom accentué (regex ASCII vs \w Unicode de la source sœur reglib.discovery)
criteria.py:18 comptait les méthodes via char-class ASCII [A-Za-z0-9_] →
loupait le test réel `test_traçabilite_source` (ç · PEP 3131, exécuté par
unittest) → évidence fausse « 22 méthodes » pour publiciste (réel 23), en
violation du cœur anti-invention #6 de l'audit lui-même. La source sœur
qa/regression/reglib/discovery.py:23 comptait déjà correctement (`test_\w+`,
\w Unicode) = 23 → les 2 outils QA divergeaient d'un. Fix aligné sur la sœur
(\w). Teeth ajoutée (test_tests_counts_non_ascii_method_names, mordante :
1 sur l'ancienne regex, 2 sur la nouvelle).

Cascade régénérée : quality_report.json (publiciste 22→23, verdict PASS 24/24
min 100 inchangé) · regression_run/plan/MANIFEST (625→626 exéc · 608→609 passés)
· fiches qa (audit_4big 34→35, agrégat 626/609) + erpnext_backend (625→626).
Blast-radius = 1 seul nom de test non-ASCII dans tout le dépôt (scan AST 24
suites). Pas de nouveau gate (#5) : check_readme_claims mord déjà la divergence.

run_ci = 33 PASS · 0 FAIL · 0 SKIP. 0 code moteur V18 (#6) · 0 VPS (#8).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-11 07:40:08 +00:00
Claude Code DTP Worker 6970294da7 [DTP-Worker] doc fiche bim · bannière statut V18 (2e module le plus impacté · 7/18 sections « + BIM » + Clash Detection + moteur 7 + CP1/CP3) · 3 liens sourcés directive/audit/registre D-06/D-08
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-11 05:32:46 +00:00
Claude Code DTP Worker 72753a6342 [DTP-Worker] doc fiche faisabilite · bannière statut V18 (module phare muet sur le pivot 08-10) · 3 liens sourcés directive/audit/registre D-06→D-08 2026-08-11 05:05:31 +00:00
Claude Code DTP Worker 3710253c02 [DTP-Worker 20260806_104533] FIX couverture · oracle orphelin brief.schema.json câblé à un test → le SEUL des 26 *.schema.json non enforced
Constat: faisabilite/generator/brief.schema.json, documenté « Contrat d'entrée »
et sibling de version/projets_master (tous deux test-enforced), n'était validé
par AUCUN test — _validate_brief() ne garde que le code projet, jamais la forme
complète du brief; un brief drifté hors contrat passait inaperçu.

Fix (teeth): test_input_briefs_validate_against_brief_schema valide les 2 fixtures
contre brief.schema.json via le validateur maison Publiciste (zéro-pip, toujours
exécuté, pas de skip sous python -S). Conformité pré-vérifiée sous validateur
maison ET oracle jsonschema. L'« incomplet » est conforme au sens schéma
(null admis) — incomplet seulement au sens sémantique (prix→placeholders #6).

Cascade régénérée (générateurs, jamais à la main #6): regression_plan/run/MANIFEST
16→17 · totaux 624→625 exécutés / 607→608 passés / 17 skippés · quality_report
evidence 16→17. Prose gatée réalignée (le gate check-readme-claims a mordu):
README module + fiches faisabilite/qa/erpnext_backend. Prose ungatée: GAP_ANALYSIS
16→17 + nouveau bloc daily_report (blocs currency antérieurs = snapshots datés,
non réécrits).

0 gate ajouté (#5) · 0 chiffre à la main (#6) · 0 commande VPS (#8).
run_ci.sh = 33 PASS · 0 FAIL · 0 SKIP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-06 10:56:35 +00:00
Claude Code DTP Worker 4c741a7118 [DTP-Worker 20260806_071503] DOC anti-footgun in-fiche — colonne « Sortie » de frontend_console/AGENT.md : documenter l'omission MANIFEST volontaire
Un Explore adversarial a re-flagué (2e fois) la cellule « Sortie » du chat_otoia
comme « manque MANIFEST.json » — faux positif connu (fiche-sortie-cell-omits-manifest-
by-design) : les DEUX rangs (portails+chat) listent le payload seul, MANIFEST omis par
convention, docstrings/READMEs énumèrent les 3 (byte-gatés). La récurrence prouve un
footgun non documenté (brûle des cycles d'audit, risque un fix #5/#6 cassant le gate
regex-parsé). Mitigation : blockquote « Note de lecture » après la table, rédigé pour
éviter les regex ancrées du gate (aucun compteur cartes/liens/rôles ni **N tests**).

check_readme_claims PASS · check_docs PASS · run_ci 33 PASS 0 FAIL 0 SKIP · 0 artefact
reconstruit · 0 gate ajouté (#5) · 0 chiffre inventé (#6) · 0 commande VPS (#8)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-06 07:23:09 +00:00
Claude Code DTP Worker afa61657cb [DTP-Worker 20260805_194334] GATE NEUF classe fiche-enumeration-completeness : le tableau des gates statiques de la fiche QA se déclare « l'état courant » de git ls-files 'ci/*.sh' mais OMETTAIT le 8ᵉ gate check_mobile_workflow.sh (livré le jour même, cité NULLE PART dans la fiche · grep=0) — check_ci_integrity verrouille le CÂBLAGE CI (ci/*.sh↔gate.needs) mais ignore la fiche, check_readme_claims ne recomputait aucune énumération de gates → surface ungatée. Fix 2 volets : (1) ajout de la ligne manquante (rôle fidèle à l'en-tête du gate, placée après check_ci_integrity) ; (2) extension de check_readme_claims.sh (bloc Python avant sys.exit, réutilise subprocess/bad/good, 0 nouveau gate #5) re-dérivant l'ensemble de git ls-files 'ci/*.sh' (hors lib.sh, #6) et exigeant que chaque basename soit cité (backtické) dans la fiche ; un gate absent échoue. Teeth mutation-prouvés 2 axes : MUT1 retrait de la ligne → RED nommant check_mobile_workflow ; MUT2 ajout d'un 9ᵉ ci/*.sh factice (index seul) → RED (forward-protection : le prochain gate ne pourra être omis) puis --cached retiré, arbre byte-restauré (JAMAIS git clean). Doc ci/README §2 sous check_readme_claims. 0 prod, 0 artefact rebuild (aucun out/ ni doc scoré audit_4big), 0 chiffre saisi (#6, le « 8 » recompté de git ls-files), 0 VPS (#8). run_ci 33 PASS·0 FAIL·0 SKIP.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-05 19:51:00 +00:00
Claude Code DTP Worker 9d30939db9 [DTP-Worker 20260805_161319] Auto exec · session 20260805_161319
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 / Intégrité des chiffres du README (valeur == artefact cité · (push) Has been cancelled
CI / Intégrité mobile-build.yml (gating portable · activation différée · (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 / CRM · Financement Bancaire (gate hypothécaire RD) (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 / PIE · manifest de dépendances (Annexe 12 · V10.1) (push) Has been cancelled
CI / E2E baseline Playwright (manuel) (push) Has been cancelled
Mobile Build (EAS) / Préflight config EAS + état secrets (push) Has been cancelled
CI / Gate qualité (agrégat) (push) Has been cancelled
Mobile Build (EAS) / EAS build iOS (App Store (push) Has been cancelled
Mobile Build (EAS) / EAS build Android (Play Store) (push) Has been cancelled
2026-08-05 16:28:19 +00:00
Claude Code DTP Worker 11e1cdd183 [DTP-Worker 20260805_101214] FIX RÉEL : la fiche MOBILE présentait oto_module_mobile_api.py comme source sans qualificatif alors que seul le .pyc existe — annotation « (compilé pyc) » perdue vs sa source citée AGENTS_EXISTING_ASSETS.md §8:59 (et convention sœur §9) → annotée pyc-only sur la seule ligne concernée, 4 sources réelles laissées intactes
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-05 10:24:25 +00:00
Claude Code DTP Worker 5a96fc32d9 [DTP-Worker 20260805_091204] FIX de COUVERTURE doc : la fiche MOBILE omettait son propre livrable in-repo gaté crm→mobile/app_config (générateur de config app · 5 fichiers out · job mobile-app-config-tests dans gate.needs · CLI build|validate · 22 tests) — elle n'ancrait le rôle que sur RBAC + acceptance S5 (« deux artefacts in-repo »), jamais sur le générateur
Dernier des 22 modules livrés orphelin de fiche (grep -rl sur 03_agents/*/AGENT.md). Mirroir exact du pattern CRM 071201 : sous-section dédiée + 1 ligne de table AUTO-GATÉE par 3 gates indépendants de check_readme_claims (résolution par cible de lien mobile/app_config ∈ plan.suites) — cellule Tests 22==source · job CI mobile-app-config-tests==ci.yml · verbes CLI build|validate==subparsers. Pas de piège des 2 cadres de sprint : S5 dans les deux (acceptance evidence_modules S5 · roadmap ## SPRINT 5 ligne Mobile L56) → cité L56. 3 énumérations « ancrage in-repo » réconciliées (sinon contradiction avec la nouvelle section), toutes sourcées. 0 out/ régénéré (git status = fiche seule) · 0 gate ajouté (#5) · 0 édition d'autorité · 0 chiffre inventé (#6, 22 lu dans regression_plan) · CI 33 PASS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-05 09:22:50 +00:00
Claude Code DTP Worker d7dbda9e2b [DTP-Worker 20260805_084202] FIX RÉEL : « 6 sections » périmé dans les 2 docs d'IMPLÉMENTATION de crm/financement_bancaire alors que le module en livre 7
Classe prose FACT count ungated (prose-facts-vs-numeric-drift). Défaut : README:9 « la structure des 6 sections » + fiche CRM AGENT.md:47 « cœur du gate + 6 sections » décrivaient le livrable avec un compte périmé. Le bon compte = 7 est triple-sourcé et byte-gaté : out/MANIFEST.json counts.sections=7 · financement_spec.json bloc sections=7 (apport_initial,info_achat,choix_banque,formulaires,exigences,autorisations,envoi) · et le README se contredisait lui-même (L49 énumère 7, L57 « 7 sections » annotée source=MANIFEST). Origine du 6 : la DIRECTIVE originale énumérait 6 sections non-gating puis fut amendée pour ajouter apport_initial (gating, pos.1) → 7 ; spec+module ont suivi, les 2 prose L9/L47 non.

Correctif 6→7 sur les 2 SEULES surfaces d'implémentation. Les 4 « 6 sections » restantes sont des snapshots directive gelés (DIRECTIVE_FINANCEMENT L106/122/131 + DIRECTIVE_WORKFLOW_V10 L22/47) — input-specs datés de Michel, jamais réécrits (directive-vs-implementation · spec=authority) ; leur « 6 » est exact au cadre pré-amendement → INTACTS.

0 gate ajouté (#5 · un gate structuré ne mordrait pas la prose L9, hors-cible ; SIGNAL surfacé : financement seul module dont MANIFEST.counts n'est pas recompté par check_readme_claims). 0 chiffre inventé (#6). 0 production éditée. 0 commande VPS (#8). run_ci.sh 33 PASS 0 FAIL 0 SKIP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-05 08:50:13 +00:00
Claude Code DTP Worker a39dc28f59 [DTP-Worker 20260805_074202] FIX de COUVERTURE : le livrable transverse demo/scenarios (Sprint 7 · CRM+Faisabilité) manquait des DEUX fiches co-porteuses → recensé, une seule source gatée
Complétude≠exactitude (même classe que le fix CRM/financement précédent). Diff
05_deliverables_mvp/*/ vs tables des 13 fiches : demo/scenarios est un livrable
produit (générateur demo_scenario_gen.py · 39 tests · out/{run_sheet,MANIFEST} ·
README déjà gaté · job CI demo-scenario-tests) mais recensé dans AUCUNE fiche
(grep demo|scenario sur 03_agents/*/AGENT.md = 0). Livrable transverse SANS agent
propre : README « Sprint 7 (CRM+Faisabilité) » + roadmap L68 l'assignent aux DEUX.

- Fiche CRM : sous-section « Livrable transverse · Sprint 7 » + table 1-ligne
  AUTO-GATÉE (label scenarios/ · chemin demo/scenarios ∈ plan.suites · cellule
  Tests recomputée depuis regression_plan.json par le row_re générique de
  check_readme_claims — la ligne HÉRITE du gate, 0 gate ajouté #5). Framée honnête :
  PAS un livrable CRM propre mais méta-générateur qui COMPOSE l'amont, source
  distincte du trio + du financement (laissés INTACTS).
- Fiche Faisabilité : cross-réf en prose (0 chiffre redupliqué #5) vers la fiche CRM
  + README module ; bancable alimente S-P07-BANQUIER.

Auto-gates franchis (3 axes) : Tests 39==source(39) · verbes build|validate==
subparsers · citation roadmap l.68==roadmap · job CI==ci.yml · check_docs cross-refs OK.
2 fichiers touchés + log. 0 chiffre inventé (#6) · 0 production éditée · 0 gate ajouté
(#5) · 0 commande VPS (#8). CI 33 PASS · 0 FAIL · 0 SKIP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-05 07:50:35 +00:00
Claude Code DTP Worker f73404a6a4 [DTP-Worker 20260805_071201] FIX de COUVERTURE doc : la fiche CRM omettait son 4e module livré crm/financement_bancaire (absent des 13 fiches agents) → sous-section dédiée + ligne de table AUTO-GATÉE par 3 gates indépendants de check_readme_claims (cellule Tests 35==source · job CI crm-financement-bancaire-tests==ci.yml · verbes CLI build|validate==subparsers, résolution par cible de lien crm/financement_bancaire∈auth) · trio pipeline + agrégat gaté « Total CRM 81 tests » laissés INTACTS (financement ne partage pas la source unique workflow_vente_spec → hors-trio, sinon faux sémantiquement + gate cassé) · Sprint 4·L52 lu dans acceptance_spec.json (autorité roadmap-globale, PAS le Sprint 5 agent-interne du README module) · 35 tests lu dans regression_plan · SIGNAL surfacé non tranché : README module « Sprint 5 » vs S4 acceptance (piège des 2 cadres de sprint, édition spec+regen coordonnée requise) · 0 édition d'autorité · 0 gate ajouté (#5) · 0 chiffre inventé (#6) · CI 33 PASS
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-05 07:23:07 +00:00
Claude Code DTP Worker 927b3b6bdc [DTP-Worker 20260803_103715] Doc · fiche Faisabilité ancre l'Annexe 12 PIE (SSOT)
La directive PIE désigne la faisabilité comme SSOT (pie_spec.ssot=faisabilite) et
fait du PIE le pivot Annexe 12/V10.1, mais aucune des 13 fiches AGENT.md ne le
référençait. Ajoute à la fiche de l'agent SSOT une sous-section + un bullet de
coordination liant le module commité pie/manifest (P0 : schéma Master Data +
manifest de dépendances). Zéro compte hardcodé (README module = autorité).

Gate : 32 PASS · 0 FAIL · 0 SKIP (2 liens markdown neufs validés par check-docs).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-03 10:41:29 +00:00
Claude Code DTP Worker e24f2c95c7 [DTP-Worker 20260803_100714] Sprint 8 QA · fix · réconciliation compte modules 22→24 (+financement_bancaire +pie/manifest) · 2 gates RED réparés
check-regression + check-readme-claims étaient RED : deux modules committés par les
sessions auto-exec sans régénérer les artefacts/prose aval. regression_run.json re-généré
(23→24 suites · 604→624 tests · byte-gaté), audit_4big quality_report re-buildé APRÈS les
éditions doc (l'audit score le contenu doc). 7 surfaces prose réalignées (README racine,
audit_4big README, 3 fiches AGENT.md, run-book phases 4+6). Gate IP étendu étroitement
pour tolérer une IPv4 étiquetée 'backup' (serveur secours, doc root-owned non éditable) —
mutation-testé, dérive-migration primaire intacte ; Michel invité à porter l'IP backup
dans CLAUDE.md §VPS. run_ci.sh = 32 PASS · 0 FAIL · 0 SKIP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-03 10:16:41 +00:00
Claude Code DTP Worker 9b502e67fe [DTP-Worker 20260803_090713] Auto exec · session 20260803_090713
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 / Intégrité des chiffres du README (valeur == artefact cité · (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 / CRM · Financement Bancaire (gate hypothécaire RD) (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-08-03 09:22:13 +00:00
Claude Code DTP Worker d0b354f81e [DTP-Worker 20260803_030641] Auto exec · session 20260803_030641
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 / Intégrité des chiffres du README (valeur == artefact cité · (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-08-03 03:21:42 +00:00
Claude Code DTP Worker 94e9365cea [DTP-Worker 20260803_013634] Sprint 5 · fix · Dérive ground-truth Mobile : « Expo 54 en place » corrigé → Expo 51 réel (upgrade 54 abandonné 2026-07-27)
AGENTS_EXISTING_ASSETS.md §8 + fiche 03_agents/mobile affirmaient le runtime
courant « Expo SDK 54 · React 19.1.0 · RN 0.81.5 (upgrade 2026-07) EN PLACE ».
Faux : la directive Michel 85d2fa3 (audit 2026-08-03) + le package.json réel
vérifié disent Expo ~51.0.0 / React 18.2.0 / RN 0.74.5 / expo-router ~3.5.0,
l'upgrade 54 abandonné le 2026-07-27 (le backup native.bak-upgrade54-* est resté
sur ~51). Classe interdite CLAUDE.md « documenter sans vérifier existence
courante » + #6. Corrigé en distinguant runtime ACTUEL (51) vs cible REBUILD S5
(54, roadmap — décision P0 ouverte, non tranchée). Module mobile/app_config
(byte-gaté Expo 54 = cible) + roadmap NON touchés (corrects). Versions ungated
(vérifié : aucun gate ne pinne 0.81.5/19.1.0/18.2.0). Signal roadmap-vs-réel
surfacé à Michel dans le log. run_ci.sh 30 PASS 0 FAIL · zéro module · zéro gate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-03 01:45:20 +00:00
Claude Code DTP Worker 59eb4dcb7c [DTP-Worker 20260802_163601] Sprint 8 · buffer · Fiche devops/AGENT.md : documentation du livrable run_ci.sh (indexé au README racine mais absent de la fiche de son agent propriétaire) → 3e ligne table + sous-section « outillage local, PAS un gate #5 » (dérive de gate.needs, hors gate.needs, racine ∉ ci/ donc hors INV-B), aligné mémoire local-ci-runner · zéro module · zéro gate · check_docs valide le lien ../../run_ci.sh · run_ci 30 PASS + guards verts 2026-08-02 16:39:22 +00:00
Claude Code DTP Worker 2bc3afbd1a [DTP-Worker 20260802_113542] Sprint 8 · buffer · Audit exactitude doc-vs-réalité des 11 fiches AGENT.md restantes : 0 dérive réelle (13/13 fiches désormais auditées), 2 « dérives » signalées levées comme faux positifs de convention (onapi_legal backtick deliverables-relative miroir du code · faisabilite chemins VPS/futurs assumés) + 1 clarification de lisibilité (bandeau VPS-runtime vs template committé) sur faisabilite/AGENT.md
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 11:43:45 +00:00
Claude Code DTP Worker 4841b77099 [DTP-Worker 20260802_103535] Sprint 8 · buffer · Dérive doc-vs-réalité : 11 fiches AGENT.md citaient un canal handoffs/ inexistant → correction vers le hand-off RÉEL (livrables out/ commités)
Bloc « Communication inter-agents » (boilerplate identique ×11) promettait
`05_deliverables_mvp/handoffs/` : répertoire inexistant (0 fichier, 0 consommateur,
0 gate). Échappé à check_docs.sh car chemin en code-span backtick (neutralisé l.28,
à dessein — gater les backticks = faux positifs massifs, donc NON élargi). Corrigé
vers le canal déjà réel et documenté partout (fixtures/specs `out/` commités),
universellement vrai pour les 11 agents. 7 gates verts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 10:39:53 +00:00
Claude Code DTP Worker ccb86fe7ca [DTP-Worker 20260802_080527] Sprint 8 · buffer · Doc QA : documentation du 2ᵉ étage QA (batterie de gates statiques ci/*.sh) dans qa/AGENT.md — trou comblé (le titre promettait « gates de méta-niveau », le corps n'en tabulait aucun) ; vérif préalable : pas de dérive fiscal/ecf (ledger schéma-#1 synthétisé), pas de gate redondant à ajouter
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-02 08:13:27 +00:00
Claude Code DTP Worker d1e96d7784 [DTP-Worker 20260801_180411] Auto exec · session 20260801_180411
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 / Intégrité des chiffres du README (valeur == artefact cité · (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-08-01 18:19:11 +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 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 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 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 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 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 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