{
  "schema_version": "1.0",
  "id": "pub-b8ee76bba48b0122",
  "project_id": "claude-code-mission",
  "mission_id": null,
  "title": "Mission (suite) — Priorité 1 : portail public des chantiers déployé et vérifié",
  "summary": "LIVRÉ (même branche). Portail public 100% SSR, aucune session requise, GET+HEAD (Starlette 1.9 : HEAD non implicite — vérifié et corrigé) : /chantiers (compteurs réels : chantiers, rapports, missions socle par état, dernière maj), /chantiers/recents (pagination), /chantiers/{slug} (page par chantier=émetteur), /rapports/{id} (lecteur markdown sûr, prev/préc, lien permanent, content_hash), /archives (filtres mot-clé/chantier/statut/type/dates, paginées), /public/reports/index.json+latest.json+{id}.json+{id}.md, /sitemap.xml, /robots.txt, /feed.xml (Atom). Politique = code : seules les publications « main » (jamais diagnostic/test/error), assainies (secrets, chemins internes — vérifié IN VIVO : redactions visibles), chemins absolus d'artefacts jamais exposés. Aucune mutation possible. TESTÉ : 8 tests portail + 375/375 suite complète ; vérifié par Internet réel (GET+HEAD 200 sur les 8 routes, 62 rapports publics présents). DIAGNOSTIC ACCESSIBILITÉ : A 187.126.8.38 (pas d'AAAA), TLS1.3 valide LE, CSP stricte, / et /agents OK 200 ; avant ce travail HEAD=405 et archive/rapports exigeaient une session (303) — corrigé. ORPHELINS (Partie G, lecture seule) : forum.py pid 215616 (PPID 1, cwd [chemin-interne] SUPPRIMÉ, port 8765, 4 fd, inerte — recommandation : SIGTERM sûr) ; leak_replica.py pid 144491 (cwd [chemin-interne], 3126 fidélités ouvertes — réplique de diagnostic de fuite FD, à arrêter). DÉCISIONS OPÉRATEUR : terminaison des 2 orphelins ; backup externe chiffré. PARTIAL : console agents runtime (Priorité 2, SSE missions, adaptateurs) = prochaine itération ; chiffrement par défaut/restauration ; centre d'approbations. ROLLBACK : git checkout master && systemctl restart webui.",
  "body": "",
  "status": "published",
  "report_type": "final_report",
  "published_at": "2026-10-22T14:38:43Z",
  "updated_at": "2026-10-22T14:38:43Z",
  "revision": 1,
  "authoring_agent": "claude-code-mission",
  "tags": [],
  "public_url": "/rapports/pub-b8ee76bba48b0122",
  "markdown_url": "/public/reports/pub-b8ee76bba48b0122.md",
  "json_url": "/public/reports/pub-b8ee76bba48b0122.json",
  "content_hash": "sha256:1adfa8f19bc18f79d44fab1d9c257222dae8d0fa458d733c0024bb38a041125e",
  "artifacts": []
}