[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>
This commit is contained in:
Claude Code DTP Worker
2026-07-30 22:31:34 +00:00
parent 98e0663c30
commit 088faa9ed9
4 changed files with 12 additions and 11 deletions
+2 -2
View File
@@ -21,8 +21,8 @@ et vérifications HTTP restent côté **agent DevOps/ERPNext Backend**.
| Module | Sprint | Rôle | Entrée | Tests | | Module | Sprint | Rôle | Entrée | Tests |
|---|---|---|---|---| |---|---|---|---|---|
| `.gitea/workflows/ci.yml` + `ci/` | 1 (roadmap L29) | **CI/CD Gitea Actions** : 3 guards blocants (contraintes / JSON / docs) + un job de tests par livrable gated + `gate` agrégateur + `e2e-baseline` | déclenché sur `push`/`pull_request``main` + `workflow_dispatch` | 22 suites gated | | [`.gitea/workflows/ci.yml`](../../.gitea/workflows/ci.yml) + [`ci/`](../../ci/README.md) | 1 (roadmap L29) | **CI/CD Gitea Actions** : 3 guards blocants (contraintes / JSON / docs) + un job de tests par livrable gated + `gate` agrégateur + `e2e-baseline` | déclenché sur `push`/`pull_request``main` + `workflow_dispatch` | 22 suites gated |
| `05_deliverables_mvp/devops/deploy_runbook/` | 8 (roadmap L73) | **Run-book VPS unifié** : graphe de **7 phases ordonnées** couvrant TOUS les modules gated, dépendances inter-phases + confirmations préalables sourcées | `deploy_runbook_gen.py build\|validate` | 29 (dont 14 injections négatives) | | [`05_deliverables_mvp/devops/deploy_runbook/`](../../05_deliverables_mvp/devops/deploy_runbook/README.md) | 8 (roadmap L73) | **Run-book VPS unifié** : graphe de **7 phases ordonnées** couvrant TOUS les modules gated, dépendances inter-phases + confirmations préalables sourcées | `deploy_runbook_gen.py build\|validate` | 29 (dont 14 injections négatives) |
### Le gate CI — trois guards blocants (`ci/`) ### Le gate CI — trois guards blocants (`ci/`)
- **`guard_constraints.sh`** : détecte l'**usage** (pas la simple mention) des - **`guard_constraints.sh`** : détecte l'**usage** (pas la simple mention) des
+2 -2
View File
@@ -25,8 +25,8 @@ le câblage de l'endpoint OTOIA et l'application du thème desk restent côté *
| Module | Volet roadmap | Sortie | Métrique vérifiée | | Module | Volet roadmap | Sortie | Métrique vérifiée |
|---|---|---|---| |---|---|---|---|
| `portails/` | Sprint 4 (L49) — « 5 portails rôle » | `out/workspace.json` | **5 `Workspace` natifs v15** (`OTO Ventes` 4 cartes/11 liens/12 rôles · `OTO Construction` 4/9/10 · `OTO Achat` 3/8/5 · `OTO Compta` 4/11/8 · `OTO Direction` 4/14/9) | | [`portails/`](../../05_deliverables_mvp/frontend/portails/README.md) | Sprint 4 (L49) — « 5 portails rôle » | `out/workspace.json` | **5 `Workspace` natifs v15** (`OTO Ventes` 4 cartes/11 liens/12 rôles · `OTO Construction` 4/9/10 · `OTO Achat` 3/8/5 · `OTO Compta` 4/11/8 · `OTO Direction` 4/14/9) |
| `chat_otoia/` | Sprint 6 (L63) — « Chat OTOIA embedded » | `out/{custom_block,chat_mount}.json` | **5 `Custom Block` + 5 configs runtime** (persona Amélie QC · langues FR/EN/ES · `endpoint: null`) | | [`chat_otoia/`](../../05_deliverables_mvp/frontend/chat_otoia/README.md) | Sprint 6 (L63) — « Chat OTOIA embedded » | `out/{custom_block,chat_mount}.json` | **5 `Custom Block` + 5 configs runtime** (persona Amélie QC · langues FR/EN/ES · `endpoint: null`) |
- **Portails** : CLI `python3 workspaces_gen.py build|validate` · **12 invariants** · - **Portails** : CLI `python3 workspaces_gen.py build|validate` · **12 invariants** ·
**19 tests** · job CI `frontend-portails-tests` (gated). **19 tests** · job CI `frontend-portails-tests` (gated).
+1 -1
View File
@@ -25,7 +25,7 @@ worker n'écrit **jamais** sur le serveur.
| Module | Volet roadmap | Sortie | Métrique vérifiée | | Module | Volet roadmap | Sortie | Métrique vérifiée |
|---|---|---|---| |---|---|---|---|
| `confotur/` | Sprint 5 (L55) — « Refactor `oto_module_confotur_application.py` → dépôts automatiques » | `out/{doctype_confotur_application,MANIFEST}.json` | **DocType `CONFOTUR Application`** custom **soumissible** v15 : **18 champs** (14 de donnée) · **4 sections** · **3 rôles/permissions** · **2 évènements de dépôt** | | [`confotur/`](../../05_deliverables_mvp/legal/confotur/README.md) | Sprint 5 (L55) — « Refactor `oto_module_confotur_application.py` → dépôts automatiques » | `out/{doctype_confotur_application,MANIFEST}.json` | **DocType `CONFOTUR Application`** custom **soumissible** v15 : **18 champs** (14 de donnée) · **4 sections** · **3 rôles/permissions** · **2 évènements de dépôt** |
- **CLI** : `python3 confotur_application_gen.py validate|build` · **14 invariants** · - **CLI** : `python3 confotur_application_gen.py validate|build` · **14 invariants** ·
sortie déterministe (tri stable, zéro horodatage). sortie déterministe (tri stable, zéro horodatage).
+7 -6
View File
@@ -21,13 +21,14 @@ génération du `sitemap.xml` et la soumission Google Search Console restent cô
| Volet roadmap (L60) | Sortie | Métrique vérifiée | | Volet roadmap (L60) | Sortie | Métrique vérifiée |
|---|---|---| |---|---|---|
| 200+ mots-clés FR/EN/ES | `out/seo_keywords.json` | **258** mots-clés (fr=87 · en=87 · es=84), chacun sourcé — cible min 200 / 50 par langue | | 200+ mots-clés FR/EN/ES | [`out/seo_keywords.json`](../../05_deliverables_mvp/seo/out/seo_keywords.json) | **258** mots-clés (fr=87 · en=87 · es=84), chacun sourcé — cible min 200 / 50 par langue |
| schema.org | `out/seo_schema_org.json` | graphe JSON-LD : **10 nœuds** (`Organization` + 9 `Residence`) | | schema.org | [`out/seo_schema_org.json`](../../05_deliverables_mvp/seo/out/seo_schema_org.json) | graphe JSON-LD : **10 nœuds** (`Organization` + 9 `Residence`) |
| hreflang | `out/seo_hreflang.json` | **10 pages** × FR/EN/ES + `x-default` | | hreflang | [`out/seo_hreflang.json`](../../05_deliverables_mvp/seo/out/seo_hreflang.json) | **10 pages** × FR/EN/ES + `x-default` |
| compte-rendu | `out/MANIFEST.json` | comptes + cibles + hors-périmètre | | compte-rendu | [`out/MANIFEST.json`](../../05_deliverables_mvp/seo/out/MANIFEST.json) | comptes + cibles + hors-périmètre |
CLI : `python3 seo_gen.py build|validate` · Job CI : `seo-tests` (`unittest Module : [`05_deliverables_mvp/seo/`](../../05_deliverables_mvp/seo/README.md)
discover`) · **36 tests**, gated dans le pipeline. (voir README) · CLI : `python3 seo_gen.py build|validate` · Job CI : `seo-tests`
(`unittest discover`) · **36 tests**, gated dans le pipeline.
## Source de vérité unique (zéro invention · #6) ## Source de vérité unique (zéro invention · #6)
La matière première est **`projets_master.json`**, la sortie canonique du La matière première est **`projets_master.json`**, la sortie canonique du