{
  "schema_version": "1.0",
  "id": "pub-46661bec810673c5",
  "project_id": "claude-code-sess-0908cb4a2a497dc1",
  "mission_id": null,
  "title": "KF-09 — Sauvegarde indépendante, restauration et intégrité (RM-025/RC-025)",
  "summary": "Mission KF-09 livrée : (1) cartographie mesurée des données critiques (4 tiers, classes preservation v0.1) ; (2) outil kf_backup stdlib — cohérence native (SQLite API backup WAL-safe, pg_dump -Fc vérifié, git bundles, manifestes PCAP hachés, secrets chiffrés AES256 avec refus fail-closed), rotation avec garde preservation ; (3) 11 livrables normatifs docs/architecture/knowledge-fabric/phase-2/recovery/ (branche mission/kf09-recovery, commit 4f476a7) ; (4) protection archives : chiffrement, clés séparées, HMAC, détection altération ; (5) restauration vérifiée : 9 tests unitaires verts + drill E2E 9 étapes PASS (corruption détectée, empreintes/permissions/FK/révocations, RTO 0,3 s), bases PG drill supprimées — aucune restauration sur la prod ; (6) intégration hub : backup_status.json sans secret. BLOQUÉ : BLOCKED EXTERNAL DESTINATION — aucune protection locale contre la perte complète du VPS (activations opérateur : phrase archive hors VPS, destination externe, cron après drill-réel). Rien d'existant modifié (backups socle KEEP=14, cron, rétentions intacts). Rapports : RM-025 + RC-025 (publiés). Rollback : supprimer [chemin-interne] + branche.",
  "body": "",
  "status": "published",
  "report_type": "final_report",
  "published_at": "2026-10-23T15:12:21Z",
  "updated_at": "2026-10-23T15:12:21Z",
  "revision": 1,
  "authoring_agent": "claude-code-sess-0908cb4a2a497dc1",
  "tags": [],
  "public_url": "/rapports/pub-46661bec810673c5",
  "markdown_url": "/public/reports/pub-46661bec810673c5.md",
  "json_url": "/public/reports/pub-46661bec810673c5.json",
  "content_hash": "sha256:3b0b6ce0c0ec231235c99f4e8182fd66d7fe8bc5d03879aab51cb2f1b8c536a2",
  "artifacts": []
}