# Activity Log · 2026-07-30 · Claude Code DTP
## Session `20260730_145807` (session 30)
**Tâche** : **Sprint 8 · buffer L75 (corrections finales · doc)** — Aucun module
roadmap ne reste à créer. Poursuite de la remédiation stub→doc réelle sur le
**prochain agent prioritaire** : `erpnext_backend`, désigné par la contrainte #1
(« ERPNext natif = priorité absolue »).
**Gap comblé** : `03_agents/erpnext_backend/AGENT.md` était le **stub générique de
29 lignes** alors que l'agent **ERPNext Backend a livré deux volets substantiels et
gated CI** dans `05_deliverables_mvp/` :
- `rbac/` (Sprint 2 · L38) — **RBAC 50 rôles natif** : spec + `rbac_50_roles.json`
(source unique du repo, #5) + **4 générateurs** (`fixtures_gen` Role/Custom
DocPerm · `userperm_gen` row-level · `roleprofile_gen` bundles portail ·
`apply_plan` run-book unifié) = **60 tests** (10+11+12+11+16) ;
- `fiscal/ecf_dgii/` (Sprint 4 · L51) — **e-CF DGII (Compupar)** : plan de
facturation électronique + composeur d'e-NCF traçable = **39 tests**.
**Doc réelle produite** : tableau des 6 modules (module/sprint/rôle/CLI/job CI/
tests), section hand-off reçus (ordre d'import CRM DocType→Workflow→commissions +
chat OTOIA / Workspaces Frontend), section anti-invention (#6 · RNC/ITBIS/
TipoCambio/taux commission `null`, USD+DOP/Letter US/Cardnet cités non réinventés),
coordination inter-agents, non-négociables.
**Vérifs** : 11/11 chemins référencés existent + 6/6 jobs CI existent (**0 lien
mort**) ; 3 gardes CI locales vertes (guard contraintes · check_docs liens internes
OK · validate_json). Repo : **560 tests** au total gated.
**Hors périmètre worker (VPS · #8)** : application réelle des fixtures RBAC/e-CF
(`bench migrate`, import, connexion proveedor Compupar) reste l'acte serveur.
**Auto-score 4Big** : 96/100.
## Session `20260730_142804` (session 29)
**Tâche** : **Sprint 8 · buffer L75 (corrections finales · doc)** — Aucun module
roadmap ne reste à créer. Poursuite de la remédiation stub→doc réelle (sessions 25
QA, 26 CRM, 27 DevOps, 28 SEO) sur le **prochain agent le plus sous-documenté vs ce
qu'il a livré**.
**Gap comblé** : `03_agents/frontend_console/AGENT.md` était le **stub générique de
32 lignes** alors que l'agent **Frontend Console a livré deux générateurs
substantiels** dans `05_deliverables_mvp/frontend/` :
- `portails/` (Sprint 4 · L49) — **5 `Workspace` ERPNext natifs v15**, un par
portail rôle métier (Ventes/Construction/Achat/Compta/Direction) ;
- `chat_otoia/` (Sprint 6 · L63) — **5 `Custom Block` natifs** montant l'assistant
OTOIA (persona Amélie QC) dans chaque portail.
La doc ne reflétait rien de la réalité livrée.
**Fichier modifié** :
- `03_agents/frontend_console/AGENT.md` : réécrit (stub → doc réelle, ~120 lignes,
même format que SEO/CRM/QA/DevOps). Table des **2 modules** (sortie · métrique
vérifiée), CLI `workspaces_gen.py` / `chat_otoia_gen.py`, jobs CI
`frontend-portails-tests` + `chat-otoia-tests`, principe **ERPNext natif d'abord**
(Workspace/Custom Block, pas de dashboard externe · #1), hand-off VPS / pas
d'écriture serveur (#8), **source de vérité unique** (`rbac_50_roles.json`),
anti-invention détaillée (`endpoint`/`module` = `null a_confirmer`, couverture
bijective des DocTypes), réutilisation validateur/branding Publiciste + builder
`wslib` (#5), coordination inter-agents, spec attribuée `/choisir-mon-unite`.
**Anti-invention (#6)** : **zéro chiffre fabriqué** — toutes les métriques reprises
telles quelles des livrables vérifiés (READMEs + CI + suites de tests) :
Workspaces **4/11/12 · 4/9/10 · 3/8/5 · 4/11/8 · 4/14/9** (cartes/liens/rôles par
portail), **12 invariants / 19 tests** (portails), **14 invariants / 31 tests**
(chat), `plateforme` exclu (5 portails métier exacts), `endpoint`/`module` laissés
`null · a_confirmer`.
**Vérifs** : suites frontend **50/50 vertes** (19 portails + 31 chat) ; gate CI
local vert (`check_docs.sh` liens internes OK · `guard_constraints.sh` contraintes
NON-NÉGOCIABLES OK, exit 0).
**Hors périmètre worker (VPS · #8)** : import des fixtures (`bench migrate`),
insertion des `Custom Block` dans le `content` des Workspaces, câblage de l'endpoint
OTOIA + application du thème desk dark+doré → agent ERPNext Backend / Frontend.
**Auto-score 4Big** : 96/100.
## Session `20260730_135801` (session 28)
**Tâche** : **Sprint 8 · buffer L75 (corrections finales · doc)** — Aucun module
roadmap ne reste à créer. Poursuite de la remédiation stub→doc réelle (sessions 25
QA, 26 CRM, 27 DevOps) sur le **prochain agent le plus sous-documenté vs ce qu'il a
livré**.
**Gap comblé** : `03_agents/seo/AGENT.md` était le **stub générique de 29 lignes**
alors que l'agent **SEO a livré un bundle trilingue substantiel** :
`05_deliverables_mvp/seo/` (Sprint 6 · roadmap L60 — mots-clés FR/EN/ES,
`schema.org` JSON-LD, `hreflang`). La doc ne reflétait rien de la réalité livrée.
**Fichier modifié** :
- `03_agents/seo/AGENT.md` : réécrit (stub → doc réelle, ~95 lignes, même format que
CRM/QA/DevOps). Table des **3 volets** (sortie · métrique vérifiée), CLI
`seo_gen.py build|validate`, job CI `seo-tests`, principe hand-off VPS / pas
d'écriture serveur (#8), **source de vérité unique** (`projets_master.json` du
Publiciste), anti-invention détaillée, réutilisation du validateur/lexique
Publiciste (#5), coordination inter-agents.
**Anti-invention (#6)** : **zéro chiffre fabriqué** — métriques reprises telles
quelles du livrable vérifié : **258 mots-clés** (fr=87 · en=87 · es=84), **10 nœuds**
schema.org (Organization + 9 Residence), **10 pages** hreflang, **offers=0**
(aucun projet `disponible` avec prix sourcé), **36 tests**. Rappel de la règle :
un mot-clé ne porte que les chiffres présents dans son champ projet source ;
`schema.org` n'émet un prix que pour un statut `disponible` avec `prix_depuis_usd`
numérique sourcé (USD · #10).
**Vérifs** : `python3 seo_gen.py validate` vert (258 mots-clés · 9 listings · 10
pages hreflang · schéma + 15 invariants) ; `python3 -m unittest discover -s tests`
= **36/36 verts** ; `ci/guard_constraints.sh` vert (6 familles d'interdits) ;
`ci/check_docs.sh` vert (liens internes OK · aucun lien mort).
**Hors périmètre worker (VPS · #8)** : injection des balises `` /
`