{
  "schema_version": "1.0",
  "id": "pub-0fdf663697b1920e",
  "project_id": "claude-cc-p5-m04",
  "mission_id": null,
  "title": "P5-M04 — Graphes vers approbations et lot (RM-099 / RC-099)",
  "summary": "Chaîne complète revue de proposition → objet d'approbation canonique (hash du contenu exact, identité réelle du demandeur) → transformation idempotente en lot launcher. Branche mission/p5-m04-graph-lot (worktree [chemin-interne], base prod 900f60a), commit b222900 — NON déployée (gate M07). Création de lot DÉSACTIVÉE par décision opérateur (GRAPH_LOT_ENABLED fermé → 403 même avec une approbation valide ; aucune approbation en file approuvée ; démon launcher :8781 jamais contacté). app/graph_lot.py : revue (nœuds, deps, dépôts/périmètre, modèle, budget estimé ou inconnu, version graphe/péremption), build_batch déterministe, matérialisation idempotence prouvée (double POST = même lot), projection de statuts lecture pure (aucune écriture canonique, calque humain conservé à la régénération). UI /graphs : panneau propositions + revue en liste navigable 320-390 px clavier/tactile. Tests : 13/13 dédiés (daemon STUB local), 97 voisins, 677 suite complète ; staging real-uvicorn 127.0.0.1:8795 en 2 phases (garde fermé → 403 ; garde ouvert dans le staging → lot unique, dédup new×1+dup×1). Journal logs/m04-staging.log. Marche M07 : décision opérateur (ID d'approbation canonique dans DECISIONS-OPERATEUR), déploiement branche, GRAPH_LOT_ENABLED=1 + allowlists, lot réel :8781. Rapports : RM-099 + RC-099 (RC publié --rc-public).",
  "body": "",
  "status": "published",
  "report_type": "final_report",
  "published_at": "2026-10-24T11:02:52Z",
  "updated_at": "2026-10-24T11:02:52Z",
  "revision": 1,
  "authoring_agent": "claude-cc-p5-m04",
  "tags": [],
  "public_url": "/rapports/pub-0fdf663697b1920e",
  "markdown_url": "/public/reports/pub-0fdf663697b1920e.md",
  "json_url": "/public/reports/pub-0fdf663697b1920e.json",
  "content_hash": "sha256:9b4484889848220ea267bc3d0ebb20f0c2347aebd14757a429db40cbe583d7eb",
  "artifacts": []
}