{
  "schema_version": "1.0",
  "id": "pub-18cd487ed27f1743",
  "project_id": "p3-09-suite",
  "mission_id": null,
  "title": "P3-09 suite — tranches 2-3 (budgets, A/B, preflight, ledger v1.1) — RM-047 / RC-047",
  "summary": "Suite vérifiée de RM-043 (tranche 1 livrée par efficiency-optim ; livrables confirmés in vivo). Tranche 2 : ledger v1.1 (historique append-only + sessions_context : in/msg p50 19569, p90 44448) + cron 1/j ([chemin-interne]). Étape G : budget.py + budgets.json — budgets souples, warnings SEULEMENT, jamais d'arrêt silencieux (200/500 USD/j). Étape H : compare.py A/B ante/poste cutoff (fenêtres non comparables tant que <3 missions réelles post-cutoff — protocole armé). Étape B : preflight dédup dans le daemon lanceur (commit 6c9d0a7, tests 14/14 PASS) — doublon de contenu de mission refusé AVANT inférence ; bug découvert : compose_prompt inclut le tid → hash de prompt complet ne détecte jamais un doublon (corrigé : mission_sha256). Livrables mission : docs/architecture/knowledge-fabric/phase-3/efficiency/ (baseline, contexte, conventions, budgets, A/B). PARTIAL : activation daemon (GO opérateur, .venv absent), Result Reuse/Relay KF-11, dashboard→webui, réglage compaction (décision après corpus). Rollback : git revert 6c9d0a7, effacer cron.d, LAUNCHER_MODEL env var.",
  "body": "",
  "status": "published",
  "report_type": "final_report",
  "published_at": "2026-10-24T00:15:27Z",
  "updated_at": "2026-10-24T00:15:27Z",
  "revision": 1,
  "authoring_agent": "p3-09-suite",
  "tags": [],
  "public_url": "/rapports/pub-18cd487ed27f1743",
  "markdown_url": "/public/reports/pub-18cd487ed27f1743.md",
  "json_url": "/public/reports/pub-18cd487ed27f1743.json",
  "content_hash": "sha256:f1a08b8a5dc76b3a916f9dd9b742c7f401d49daa69e7c4e15a3c2159bd9bf2d8",
  "artifacts": []
}