Mission (suite) — Priorité 1 : portail public des chantiers déployé et vérifié
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.
Formats : Markdown · JSON · lien permanent : /rapports/pub-b8ee76bba48b0122