{
  "matrix": [
    {
      "id": "S1",
      "kind": "sprint_deliverable",
      "sprint": "S1",
      "roadmap_line": 33,
      "statement": "Repo Gitea live · gap analysis complète · baseline tests OK",
      "status": "in_repo",
      "modules": [],
      "artifacts": [
        {
          "path": "GAP_ANALYSIS_SPRINT1.md",
          "exists": true
        }
      ],
      "out_of_scope": [
        {
          "item": "baseline Playwright /crm · /waf-home · /qa (dépend du site LIVE) et push initial VPS",
          "source": "CLAUDE.md #8 (VPS pour TOUS projets · worker n'écrit jamais sur le VPS)"
        }
      ],
      "n_modules": 0,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "S2",
      "kind": "sprint_deliverable",
      "sprint": "S2",
      "roadmap_line": 39,
      "statement": "7 dashboards uniformes · CRM avec pipeline live · RBAC 50 rôles",
      "status": "in_repo",
      "modules": [
        {
          "module": "publiciste",
          "ci_job": "publiciste-tests",
          "gated": true
        },
        {
          "module": "rbac",
          "ci_job": "rbac-tests",
          "gated": true
        },
        {
          "module": "rbac/fixtures_gen",
          "ci_job": "rbac-fixtures-tests",
          "gated": true
        },
        {
          "module": "rbac/userperm_gen",
          "ci_job": "rbac-userperm-tests",
          "gated": true
        },
        {
          "module": "rbac/roleprofile_gen",
          "ci_job": "rbac-roleprofile-tests",
          "gated": true
        },
        {
          "module": "rbac/apply_plan",
          "ci_job": "rbac-applyplan-tests",
          "gated": true
        },
        {
          "module": "faisabilite/generator",
          "ci_job": "faisabilite-gen-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "import réel des fixtures RBAC + rendu HTML des dashboards sur le desk ERPNext LIVE",
          "source": "CLAUDE.md #8 (VPS) · #1 (ERPNext natif = priorité — import via bench par agent Backend)"
        }
      ],
      "n_modules": 7,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "S3",
      "kind": "sprint_deliverable",
      "sprint": "S3",
      "roadmap_line": 46,
      "statement": "P07 Aqua Terra faisabilité complète auto-générée en <1h",
      "status": "in_repo",
      "modules": [
        {
          "module": "faisabilite/bancable",
          "ci_job": "bancable-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "pipeline Blender→IFC→Speckle→Flux (aec.py) exécuté sur runtime BIM VPS + viewer 3D console LIVE",
          "source": "CLAUDE.md #8 (VPS) — le rendu 3D/BIM tourne hors repo (bim-cloud.otov7.com)"
        }
      ],
      "n_modules": 1,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "S4",
      "kind": "sprint_deliverable",
      "sprint": "S4",
      "roadmap_line": 52,
      "statement": "5 portails RBAC live · workflow vente end-to-end",
      "status": "in_repo",
      "modules": [
        {
          "module": "crm/workflow_vente",
          "ci_job": "crm-workflow-vente-tests",
          "gated": true
        },
        {
          "module": "crm/dossier_vente",
          "ci_job": "crm-dossier-vente-tests",
          "gated": true
        },
        {
          "module": "crm/commissions",
          "ci_job": "crm-commissions-tests",
          "gated": true
        },
        {
          "module": "fiscal/ecf_dgii",
          "ci_job": "fiscal-ecf-tests",
          "gated": true
        },
        {
          "module": "frontend/portails",
          "ci_job": "frontend-portails-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "création module + import DocTypes/Workflow + transmission e-CF réelle DGII (Compupar) sur ERPNext LIVE",
          "source": "CLAUDE.md #8 (VPS) · #10 (Cardnet/DGII endpoints prod)"
        }
      ],
      "n_modules": 5,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "S5",
      "kind": "sprint_deliverable",
      "sprint": "S5",
      "roadmap_line": 58,
      "statement": "Dépôts P05/P07 ONAPI · Apps mobile live 2 stores",
      "status": "in_repo",
      "modules": [
        {
          "module": "legal/confotur",
          "ci_job": "legal-confotur-tests",
          "gated": true
        },
        {
          "module": "qa/audit_5d",
          "ci_job": "qa-audit-5d-tests",
          "gated": true
        },
        {
          "module": "mobile/app_config",
          "ci_job": "mobile-app-config-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "dépôt ONAPI/CONFOTUR réel + builds Expo 54 et submit App Store / Play Store",
          "source": "roadmap Sprint 5 · Mobile (L57) — builds & submissions stores hors repo · CLAUDE.md #8"
        }
      ],
      "n_modules": 3,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "S6",
      "kind": "sprint_deliverable",
      "sprint": "S6",
      "roadmap_line": 64,
      "statement": "Indexation Google trilingue · OTOIA voice orchestre AEC",
      "status": "in_repo",
      "modules": [
        {
          "module": "seo",
          "ci_job": "seo-tests",
          "gated": true
        },
        {
          "module": "frontend/chat_otoia",
          "ci_job": "chat-otoia-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "indexation Google réelle (crawl runtime) + voix Amélie QC (multilingual_v2) exécutée sur runtime OTOIA VPS",
          "source": "CLAUDE.md #8 (VPS) — indexation et TTS sont des services runtime hors repo"
        }
      ],
      "n_modules": 2,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "S7",
      "kind": "sprint_deliverable",
      "sprint": "S7",
      "roadmap_line": 70,
      "statement": "Plateforme prête pour démo publique (polish · scénarios démo · audit 4Big 95+)",
      "status": "in_repo",
      "modules": [
        {
          "module": "demo/scenarios",
          "ci_job": "demo-scenario-tests",
          "gated": true
        },
        {
          "module": "qa/audit_4big",
          "ci_job": "qa-audit-4big-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "polish final du site otov7.com (Hero · nav) sur le site LIVE",
          "source": "roadmap Sprint 7 · Frontend « Site otov7.com polish final » (L67) — dépend du site LIVE · CLAUDE.md #8"
        }
      ],
      "n_modules": 2,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "S8",
      "kind": "sprint_deliverable",
      "sprint": "S8",
      "roadmap_line": 76,
      "statement": "Plateforme démo live · 5 portails · CRM · BIM auto · OTOIA voice",
      "status": "in_repo",
      "modules": [
        {
          "module": "qa/regression",
          "ci_job": "qa-regression-tests",
          "gated": true
        },
        {
          "module": "devops/deploy_runbook",
          "ci_job": "devops-deploy-runbook-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "déploiement production complet + monitoring exécutés sur le VPS (run-book appliqué)",
          "source": "CLAUDE.md #8 (VPS) — l'exécution du run-book de déploiement revient à l'agent DevOps / ERPNext Backend"
        }
      ],
      "n_modules": 2,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "M1",
      "kind": "mvp_metric",
      "sprint": null,
      "roadmap_line": 81,
      "statement": "Faisabilité auto générée en <1h (vs 3-5 jours actuels)",
      "status": "in_repo",
      "modules": [
        {
          "module": "publiciste",
          "ci_job": "publiciste-tests",
          "gated": true
        },
        {
          "module": "faisabilite/generator",
          "ci_job": "faisabilite-gen-tests",
          "gated": true
        },
        {
          "module": "faisabilite/bancable",
          "ci_job": "bancable-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [],
      "n_modules": 3,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "M2",
      "kind": "mvp_metric",
      "sprint": null,
      "roadmap_line": 82,
      "statement": "Score 4Big >=95/100 sur 100% deliverables",
      "status": "in_repo",
      "modules": [
        {
          "module": "qa/audit_4big",
          "ci_job": "qa-audit-4big-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [],
      "n_modules": 1,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "M3",
      "kind": "mvp_metric",
      "sprint": null,
      "roadmap_line": 83,
      "statement": "7 dashboards entités uniformes luxury",
      "status": "in_repo",
      "modules": [
        {
          "module": "frontend/portails",
          "ci_job": "frontend-portails-tests",
          "gated": true
        },
        {
          "module": "rbac/roleprofile_gen",
          "ci_job": "rbac-roleprofile-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "rendu luxury dark+doré sur le desk ERPNext LIVE (Custom HTML)",
          "source": "CLAUDE.md #8 (VPS) · #4 (design luxury rendu côté desk)"
        }
      ],
      "n_modules": 2,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "M4",
      "kind": "mvp_metric",
      "sprint": null,
      "roadmap_line": 84,
      "statement": "CRM ERPNext natif fonctionnel end-to-end",
      "status": "in_repo",
      "modules": [
        {
          "module": "crm/workflow_vente",
          "ci_job": "crm-workflow-vente-tests",
          "gated": true
        },
        {
          "module": "crm/dossier_vente",
          "ci_job": "crm-dossier-vente-tests",
          "gated": true
        },
        {
          "module": "crm/commissions",
          "ci_job": "crm-commissions-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [],
      "n_modules": 3,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "M5",
      "kind": "mvp_metric",
      "sprint": null,
      "roadmap_line": 85,
      "statement": "Mobile app publié 2 stores",
      "status": "in_repo",
      "modules": [
        {
          "module": "mobile/app_config",
          "ci_job": "mobile-app-config-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "builds Expo 54 + submit App Store #32 / Play Store — la publication réelle sur les stores est hors repo (le worker produit la config versionnable, jamais le build/submit)",
          "source": "roadmap Sprint 5 · Mobile (L56-57) — builds & submissions hors repo · CLAUDE.md #8"
        }
      ],
      "n_modules": 1,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "M6",
      "kind": "mvp_metric",
      "sprint": null,
      "roadmap_line": 86,
      "statement": "SEO trilingue indexé",
      "status": "in_repo",
      "modules": [
        {
          "module": "seo",
          "ci_job": "seo-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "indexation Google réelle (soumission sitemaps + crawl)",
          "source": "CLAUDE.md #8 (VPS) — worker systemd SEO tourne hors repo"
        }
      ],
      "n_modules": 1,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    },
    {
      "id": "M7",
      "kind": "mvp_metric",
      "sprint": null,
      "roadmap_line": 87,
      "statement": "OTOIA voice orchestre bout-en-bout",
      "status": "in_repo",
      "modules": [
        {
          "module": "frontend/chat_otoia",
          "ci_job": "chat-otoia-tests",
          "gated": true
        }
      ],
      "artifacts": [],
      "out_of_scope": [
        {
          "item": "voix Amélie QC (multilingual_v2) + orchestration AEC exécutées sur runtime OTOIA VPS",
          "source": "CLAUDE.md #8 (VPS) — TTS et pilotage aec.py sont des services runtime hors repo"
        }
      ],
      "n_modules": 1,
      "all_modules_gated": true,
      "all_artifacts_exist": true,
      "has_evidence": true
    }
  ],
  "verdict": true
}
