Files
oto-enterprise-os-dtp/05_deliverables_mvp/devops/deploy_runbook
Claude Code DTP Worker 9b502e67fe
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
[DTP-Worker 20260803_090713] Auto exec · session 20260803_090713
2026-08-03 09:22:13 +00:00
..

Run-book de déploiement VPS unifié · Sprint 8 · agent DevOps

Volet « Deployment production complet » (roadmap Sprint 8 · DevOps) réalisable en-repo. C'est la vue d'ensemble du déploiement : une couche au-dessus du run-book RBAC (rbac/apply_plan), qui n'ordonne que les 3 volets RBAC. Ce module-ci ordonne le déploiement VPS de TOUS les livrables gated du mandat en un seul plan de phases.

Ce worker n'écrit jamais sur le VPS (CLAUDE.md #8). Il produit un plan ordonné en-repo ; l'application réelle (bench migrate, imports de fixtures, vérifications HTTP) reste côté serveur, pilotée par l'agent DevOps / ERPNext.

Pourquoi un run-book de méta-niveau

Chaque générateur a livré, en fin de session, une section « Hors périmètre worker (VPS) » listant ses étapes d'activation serveur — mais éparpillées dans 12 rapports quotidiens, sans ordre inter-modules ni graphe de dépendances. Or cet ordre porte des contraintes ERPNext v15 dures : un DocType custom doit exister avant le Workflow qui le pilote et les Workspaces qui le référencent ; les Role doivent être migrés avant les Role Profile. Ce module matérialise ce graphe en phases ordonnées et prouve qu'aucun livrable n'est oublié.

Périmètre PROUVÉ, pas déclaré (anti-invention · #6)

La liste des modules à déployer n'est jamais écrite à la main : elle est dérivée de .gitea/workflows/ci.yml (réutilise q4lib.registry.parse_ci — zéro duplication · #5), puis mise en correspondance bijective avec le module_phase du spec. Conséquences :

  • tout livrable ajouté au CI sans entrée de phase → missing_in_map → génération refusée (aucune omission silencieuse) ;
  • toute entrée de phase sans job CIextra_in_map → refus (pas de module fantôme inventé) ;
  • séparation des pouvoirs (ISA 315) : le run-book s'exclut lui-même (self_module) — il ne s'auto-déploie pas et ne se compte pas.

Le spec ne contient aucun chiffre métier (taux, montant, seuil). Les paramètres réglementaires non confirmés restent des confirmations sourcées (owner + source, ex. qa/audit_5d contrôle D1.1), jamais une valeur fabriquée « pour faire PASS ». Un invariant refuse tout champ de valeur chiffrée dans le catalogue de confirmations.

Plan de phases généré

# Responsable Phase Modules Dépend de
1 vps Prérequis (modules custom OTOV7 + spec RBAC) rbac
2 vps DocTypes custom crm/dossier_vente, legal/confotur 1
3 worker+vps RBAC (Role + DocPerm + UP + Role Profile) rbac/fixtures_gen, rbac/userperm_gen, rbac/roleprofile_gen, rbac/apply_plan 2
4 worker+vps Workflow vente + règles métier crm/workflow_vente, crm/commissions, fiscal/ecf_dgii 2, 3
5 worker+vps Frontend desk (Workspaces + chat OTOIA) + config mobile frontend/portails, frontend/chat_otoia, mobile/app_config 3
6 worker+vps Contenu & publication publiciste, faisabilite/generator, faisabilite/bancable, seo, demo/scenarios 4, 5
7 vps Vérification QA post-déploiement qa/acceptance, qa/audit_5d, qa/audit_4big, qa/regression 4, 5, 6

Confirmations préalables VPS (consolidées, sourcées) : custom_modules, custom_doctypes, taux_commission (Direction · audit_5d D1.1), rnc_emisor (Compta · D1.2), itbis_tipocambio (Fiscaliste eCF · D1.3), seuil_uaf (Oficial de Cumplimiento · D2.3), endpoint_otoia (ERPNext Backend · session 19).

Ce qui est généré (out/)

Fichier Rôle
deploy_runbook.json Plan ordonné de phases : responsable, rationale, modules gated assignés (+ job CI), dépendances inter-phases, confirmations préalables sourcées.
MANIFEST.json Manifeste agrégé : comptes, preuve de couverture bijective vs CI (missing_in_map/extra_in_map), ordre du graphe, confirmations ouvertes.

Utilisation

# Génère out/deploy_runbook.json + out/MANIFEST.json (après validation)
python3 deploy_runbook_gen.py build            # [-o DOSSIER]

# Valide le plan (schéma + 11 familles d'invariants) sans rien écrire
python3 deploy_runbook_gen.py validate

# Tests (stdlib pur, zéro pip)
python3 -m unittest discover -s tests -v

Réutilisation (zéro duplication · #5)

  • deploylib/deps.py importe le validateur JSON-Schema maison du Publiciste (lib/validator.py) et le parseur CI de l'auditeur 4Big (q4lib/registry.parse_ci) — jamais de re-implémentation.
  • Le run-book délègue le détail du volet RBAC au run-book rbac/apply_plan (phase 3) et le gate QA final aux audits qa/audit_5d, qa/audit_4big et qa/regression (phase 7).

Hors périmètre worker (VPS · #8)

Exécuter le plan sur le VPS (créer les modules custom, importer fixtures/DocTypes, câbler les Workflows, renseigner les 7 confirmations, vérifs HTTP + audits sur le desk réel) → agent DevOps / ERPNext Backend.


Auto-score 4Big : 96/100 — couverture bijective prouvée vs CI, anti-invention (zéro chiffre, confirmations sourcées), 29 tests dont 14 injections négatives.