{"schema_version": "1.0", "reports": [{"schema_version": "1.0", "id": "pub-3c7dacc9da1ab62c", "project_id": "claude-code", "mission_id": null, "title": "Agent Launcher — exécutions unifiées d'agents de code (tranche 1) — RM-042 / RC-042", "summary": "Tranche 1 livrée : daemon persistant launcherd à [chemin-interne] (branche mission/agent-launcher), premier moteur claude-ollama non interactif (argv structurés, stream-json canonisé, session native conservée, --resume vérifié réel), worktree Git par exécution jamais détruit, journal durable executions.db, CLI agents-launch (même API métier socle) et console /missions étendue (runtime launcher, table exécutions moteur, annulation propre, revue opérateur VALIDATING→COMPLETED/FAILED) ; événements execution_* visibles SSE. Tests : 12/12 simulation zéro-cloud, suite webui 396 pass/0 fail, bancs réels banc CLI (commit e0714ec) et banc UI task-26db43e3a396b506 (done 146,5 s, 0,326 $), idempotence double-soumission (duplicate:true), réconciliation in vivo (daemon redémarré → lost+incident+FAILED, worktree préservé), erreur auth/modèle → FAILED sans fantôme. PARTIAL : PAS fusionné en prod (travail uncommitted concurrent nav-anchor-fix — plan dans [chemin-interne], GO opérateur exigé) ; reprise auto de session après crash et approbations = tranche 2 ; revue opérateur exige le fix bail concurrent (vérifié sur BD temp). Rollback : systemctl stop launcher + revert fusion ; aucune destruction.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T22:18:02Z", "updated_at": "2026-10-23T22:18:02Z", "revision": 1, "authoring_agent": "claude-code", "tags": [], "public_url": "/rapports/pub-3c7dacc9da1ab62c", "markdown_url": "/public/reports/pub-3c7dacc9da1ab62c.md", "json_url": "/public/reports/pub-3c7dacc9da1ab62c.json", "content_hash": "sha256:6375f71c94f4dd7f10955706001a24a48feacb1bdbabe8a8f4e406060a377bf8", "artifacts": []}, {"schema_version": "1.0", "id": "pub-e445000f7638b894", "project_id": "claude-socle", "mission_id": "crise-securite-2026-10-22", "title": "Compte rendu — crise sécurité 2026-10-22 (durcissement webui/PCAP/git)", "summary": "Voir le résumé publié dans la mémoire centrale et le journal des incidents (docs/incidents.md) : durcissement concierge/sessions+401, anti-usurpation publisher API, redirection post-login bornée, rate-limit par IP réelle, bases/journaux hors git (historique conservé, aucun remote), .env model-router hors suivi (rotation à décider), périmètre Caddy : socle interne en boucle locale seulement + contrat public conservé, rétention capture x5 + échec tshark distingué d'un segment vide, délestages avec provenance authentifiée, permissions 600/700. Les 3 alertes critiques du digest 08:45 = faux positifs confirmés. 323 tests au vert, gardes vérifiées en prod. PARTIAL : rotation jetons (décision opérateur), scrubbing projection publique (conçu, non appliqué), scoping lectures inter-projets (socle v1), SSH root/mot de passe inchangé. Rollback : git revert des commits cités + unités/Caddyfile de secours datés.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T11:19:28Z", "updated_at": "2026-10-22T11:19:28Z", "revision": 1, "authoring_agent": "claude-socle", "tags": [], "public_url": "/rapports/pub-e445000f7638b894", "markdown_url": "/public/reports/pub-e445000f7638b894.md", "json_url": "/public/reports/pub-e445000f7638b894.json", "content_hash": "sha256:d6a606c1719e9a6a80b95cc0ea65347cf8c9922dcb07a6424eae6c78d8a2c0d5", "artifacts": []}, {"schema_version": "1.0", "id": "pub-86e93419f3c3e21d", "project_id": "webui-agent", "mission_id": null, "title": "Extension mémoire : graphe temporel + analyste + blocs agentiques v1.1 (ADR-0005)", "summary": "CHANGÉ/OÙ — [chemin-interne] (commit 78c7423, module memory-socle 1.1) : app/graph.py (graphe temporel : nœuds pointeurs typés, arêtes 12 relations avec triple temporalité validité/enregistrement/événement, dérivé déterministement du journal socle, jamais réécrit, CTE récursives bornées, state_as_of/timeline/dependents/affected/causal) ; app/blocks.py (blocs agentiques type Letta NATIF : par agent, versionnés, historique intégral, partage opérateur, export) ; app/analyst.py (contradictions→analyses provisional ; échecs→hypothèses causales étiquetées correlation ; LLM optionnel par env, désactivé d'origine) ; memory.py (cycle réordonné file→graphe→distribution idempotente) ; routes /internal/v1/graph/* + /agent/blocks* ; SDK étendu ; ADR-0005 + foundation §11 ; memory-socle validé 1.1.\n\nTESTÉ — 182/183 + 1 skip (13 tests graphe, 5 blocs ; incl. reconstruction d'état passé, fermeture DEPENDS_ON à la dépréciation, agents affectés, contradictions préservées, distribution par graphe, perf 500 arêtes <2 s requêtes) ; e2e prod : 3 threads actifs (mémoire 20s, analyste 600s LLM off), graphe peuplé de l'historique réel (21 nœuds, 10 arêtes ouvertes, 0 artefact de test après purge ID-littérale de mod-a), state_as_of OK, blocks API OK.\n\nRESTE/PARTIAL — Letta lui-même NON installé (évalué, révisable §8ter ADR-0005 ; le « type Letta » utile est natif) ; pas d'embeddings ; analyste LLM désactivé (pas d'accès configuré — option : MEMORY_ANALYST_ENABLED=1 sur Ollama Cloud) ; arêtes de chemins = DÉCLARÉES (confiance declared) ; pas de serveur MCP v1 ; ACL fine par tâche v2.\n\nVÉRIFIER — journalctl -u webui | grep analyste ; GET /internal/v1/graph/stats (jeton coord) ; python sdk/agent_memory.py --help. ANNULER — git revert 78c7423 + systemctl restart webui (tables additives dans data/memory.db, restauration via scripts/restore.sh).\n\nSUIVANT — mesurer la précision de distribution sur quelques missions réelles ; activer l'analyste LLM si l'opérateur veut les synthèses ; MCP stdio ; migration Postgres/AGE si volume mesuré (>1e5 arêtes).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T07:19:15Z", "updated_at": "2026-10-22T07:19:15Z", "revision": 1, "authoring_agent": "webui-agent", "tags": [], "public_url": "/rapports/pub-86e93419f3c3e21d", "markdown_url": "/public/reports/pub-86e93419f3c3e21d.md", "json_url": "/public/reports/pub-86e93419f3c3e21d.json", "content_hash": "sha256:2f3091ae865a4658b0af0bba2828ec19440d6f5216dc0e7b8fd2ca63f5586107", "artifacts": []}, {"schema_version": "1.0", "id": "pub-f0d9cbdeb3562c8d", "project_id": "memory-hub-reconcile", "mission_id": "reconstructed-sess-d252892a3f22697b", "title": "Compte rendu reconstitué — session sess-d252892a3f2", "summary": "RECONSTITUÉ par le hub mémoire (le rapport de l'agent n'a pas été détecté). Projet inconnu ; 3 fichier(s) attribué(s) par hook : [chemin-interne] complets/RC-041-banc-ui-lanceur--ajout-de-mul-dans-calcp.md, [chemin-interne] de mission/RM-041-banc-ui-lanceur--ajout-de-mul-dans-calcp.md, [chemin-interne] ; tâches touchées : — ; événements dans la fenêtre : change_attributed_by_hook, mission_captured, mission_unreported, session_ended. Provenance : preuves d'attribution + journal du socle. Les parties narratives (objectif, résultats, PARTIAL, rollback) sont inconnues.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T22:47:37Z", "updated_at": "2026-10-23T22:47:37Z", "revision": 1, "authoring_agent": "memory-hub-reconcile", "tags": [], "public_url": "/rapports/pub-f0d9cbdeb3562c8d", "markdown_url": "/public/reports/pub-f0d9cbdeb3562c8d.md", "json_url": "/public/reports/pub-f0d9cbdeb3562c8d.json", "content_hash": "sha256:a006e807bfcfae46fb424fa32a4f19c5ced7a42c2d794a998a0f69be87bd0b70", "artifacts": []}, {"schema_version": "1.0", "id": "pub-232a966a9591b34e", "project_id": "memory-hub", "mission_id": null, "title": "Pont OSINT→graphe + marquage régulier : livré (OpenOSINT installé, OhSINT non-vérifiers NON installé)", "summary": "1) VÉRIFICATION DE SOURCE (priorité « savoir ce qu'on peut savoir ») : OhSINT/GetSomeKelso = 404 INEXISTANT ; drtamar/OhSINT = 0 étoile/sans licence → NON installés (chaîne de confiance) ; CONTRADICTION documentée vs la veille.\n2) OPÉRATEUR a nommé openosint → INSTALLÉ (venv [chemin-interne], v2.36.1 PyPI, MIT, passif par défaut — plus aligné avec la CONFIDENTIALITÉ que l'actif d'origine).\n3) PONT au graphe temporal (ADR-0010bis, app/osint.py) : entités SENSIBLES jamais partagées (la donnée reste dans la base privée OpenOSINT, interfaces humaines ; le pont note un COMPTE seul) ; infra → nœuds asset (id stable FTM, validité temporel, provenance) ; liens de l'outil importés ; dédup = humain seul (même philosophie que notre hub) ; thread 600 s (en veille : graph.db absent — aucune investigation encore) + POST /internal/v1/osint/cycle + stats.\n4) MARQUAGE RÉGULIER (cron opérateur, dimanche 05:40) : labwatermark-cron.sh — marque idempotente + commits attributifs (git add -u, fichiers SUIVIS seulement) + rescan anticorps ; hardening suite refus du garde-fou (add -A potentiellement fuite de jetons) — approuvé.\n5) TESTÉ — 255/255 + skip ; e2e (veille attestée, service health 200, crontab en place) ; fixes reals : threading au mauvais niveau (crash), identifiant à espace, filtre SQL.\n6) RESTE — première investigation OpenOSINT (CLI/UI, à lancer sur demande avec cible autorisée) activera le pont automatiquement ; MCP OpenOSINT (uvx openosint-mcp) enregistrable sur un simple ordre ; la conf. dépend du routage du pont — n'entrez JAMAIS de données sensibles via les interfaces publiques du socle.\nANNULER — git revert e6a7f82..(ce-ci) ; crontab -e pour la ligne marquage ; rm -rf [chemin-interne]", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T10:15:55Z", "updated_at": "2026-10-22T10:15:55Z", "revision": 1, "authoring_agent": "memory-hub", "tags": [], "public_url": "/rapports/pub-232a966a9591b34e", "markdown_url": "/public/reports/pub-232a966a9591b34e.md", "json_url": "/public/reports/pub-232a966a9591b34e.json", "content_hash": "sha256:4c237cadc65b82a49709657d7a3c98c38a7051fb719f0902a9f4838bd74f97a9", "artifacts": []}, {"schema_version": "1.0", "id": "pub-d35787dd8878d2a2", "project_id": "model-router", "mission_id": null, "title": "Compte rendu — infrastructure multimodèle locale + routeur intelligent (model-router v1)", "summary": "DEPLOYÉ: [chemin-interne] (service systemd model-router, loopback 8580, API OpenAI-compatible /v1/chat/completions + CLI) ; 3 modèles locaux ollama (qwen3:0.6b/qwen3:8b/qwen2.5-coder:7b, Q4, num_ctx 4096, concurrence 2, keep-alive 5m) ; politique versionnée policy.json v2 (13 catégories, think:false qwen3), mode ombre puis local actif ; métriques SQLite data/router.db avec économie contrefactuelle (méthode + source notées, jamais de tokens locaux comptés comme payants évités) ; escalade cloud bornée (tentatives max 3, cloud 1). CHANGE ET OÙ: nouveau module [chemin-interne] (3 commits git) ; retouche normative dédiée webui 289e7a4 (note ollama local: interdit→conditionnel, test mis à jour même commit ; 193 tests webui pass). TESTÉ (résultats observés): 38/38 tests unitaires+e2e locale ; éval corpus 30 items sans données sensibles: qwen3:0.6b 24/26 (92%, 125-156 tok/s), qwen3:8b 24/26 (92%, 11-26 tok/s), qwen2.5-coder:7b 6/7 sur catégories code (86%, 25-27 tok/s); A/B cloud limité (8 items, nemotron-3-super): 8/8 identique qualité, 2-4x plus rapide; smoke_real.py in vivo: préflight déterministe 0 LLM, auth 401, route local réelle 1.5-5.9s, escalade cloud mesurée (0.00012 USD), stats API; restarts systemd ollama+model-router OK; RAM 22.6 Gi disponibles, qwen3:8b chargé. PARTIAL: researcher non intégré (travail concurrent non commité dans [chemin-interne] — ask.py/plan.py — conformément aux règles socle, aucune retouche faite); streaming /v1 non servi en v1; ttft absent hors streaming (enregistré None, jamais 0); model-router non enregistré dans registre d'agents (jeton admin réservé opérateur, ADR-0002); économie contrefactuelle ESTIMÉE (entrée chars/4) — A/B cloud limité à 8 items. ROLLBACK: scripts/rollback.sh --shadow (décisions journalisées, exécution cloud) | --stop (arrêt, chemin cloud agents inchangé) | scripts/uninstall.sh (modèles + métriques conservés, réinstall idempotente). PROCHAINES: intégrer les agents pilotes via docs/integration.md; incorporer router.db au backup.sh; enregistrer l'agent dans le registre (opérateur); recalibrer policy.json après 5 échantillons par modèle/catégorie.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T07:28:43Z", "updated_at": "2026-10-22T07:28:43Z", "revision": 1, "authoring_agent": "model-router", "tags": [], "public_url": "/rapports/pub-d35787dd8878d2a2", "markdown_url": "/public/reports/pub-d35787dd8878d2a2.md", "json_url": "/public/reports/pub-d35787dd8878d2a2.json", "content_hash": "sha256:d7c8172127102f3d0e05fd0b97edd704e82cb1d5f1b0570be09b3cc6d8ca219f", "artifacts": []}, {"schema_version": "1.0", "id": "pub-fe8a6ed3de162a69", "project_id": "researcher", "mission_id": "mission-brainstorm-20261022", "title": "Module de brainstorming structuré multi-branches (researcher) — mission 2026-10-22", "summary": "research/brainstorming/ (13 modules): cadrage déterministe, branches indépendantes, déduplication non destructive, critique par lots, révision ciblée, vérification SearXNG étiquetée, classement pondéré, synthèse 12 points; 98/98 tests; 4 exécutions réelles Ollama Cloud mesurées; désactivation RESEARCH_BRAINSTORM_ENABLED=false; rollback documenté.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T07:38:09Z", "updated_at": "2026-10-22T07:38:09Z", "revision": 1, "authoring_agent": "researcher", "tags": [], "public_url": "/rapports/pub-fe8a6ed3de162a69", "markdown_url": "/public/reports/pub-fe8a6ed3de162a69.md", "json_url": "/public/reports/pub-fe8a6ed3de162a69.json", "content_hash": "sha256:2efdc1db1aeb8348eb418a6dec979c0899bdbe6f32d55c3112a4bd68d49b3143", "artifacts": [{"verified": true, "size": 5993, "root_label": "projet", "relpath": "docs/mission-brainstorming-2026-10-22.md"}, {"verified": true, "size": 5633, "root_label": "projet", "relpath": "docs/brainstorming.md"}, {"verified": true, "size": 35571, "root_label": "runs", "relpath": "bs0ef1fc9297ef.md"}]}, {"schema_version": "1.0", "id": "pub-8ed38e8d5b953946", "project_id": "webui", "mission_id": "mission-research-vars-20261022", "title": "Interface /variables — ergonomie finale par cardinalité (boutons) — mission 2026-10-22", "summary": "Widgets discrets sans champ libre: bascule unique pour booléens, rangée de boutons 3-4 valeurs, select+Définir 5+; defaults avec valeur réelle; 224 tests webui verts; service redémarré.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T07:58:36Z", "updated_at": "2026-10-22T07:58:36Z", "revision": 1, "authoring_agent": "webui", "tags": [], "public_url": "/rapports/pub-8ed38e8d5b953946", "markdown_url": "/public/reports/pub-8ed38e8d5b953946.md", "json_url": "/public/reports/pub-8ed38e8d5b953946.json", "content_hash": "sha256:e9e8786b5dbd4e8f53414e56008275effc6e4fc391ee1d2d3032c6f45cffb3ff", "artifacts": []}, {"schema_version": "1.0", "id": "pub-f0cc2f92ae1db1fa", "project_id": "nvidia", "mission_id": null, "title": "Chemin de travail labo : migration /root → /srv/labo (règle opérateur, distribuée)", "summary": "RÈGLE DISTRIBUTÉE: [chemin-interne]/<module> est maintenant le chemin canonique de tous les actifs de travail labo; plus rien n'est écrit à /root (README [chemin-interne] avec motif + règles d'application pour tout nouvel actif). MIGRÉ (vérifié): model-router, osint, agent-aide, browser-use, .nvidia → [chemin-interne]/*; 33 fichiers internes re-referencés (py/md/sh/json/yml) + 60+ shebangs venv corrigés; unité systemd [chemin-interne] repointée; wrapper /usr/local/bin/aide → [chemin-interne]; symlink [chemin-interne] → [chemin-interne]; SpiderFoot relancé depuis le nouveau bind (loopback 5001); forum sandbox relancé depuis le nouveau chemin (l'ancien écrivait dans un inode supprimé - corrigé). VÉRIFIÉ APRÈS: aide status 6/6 verts; pytest model-router 38/38; smoke_real.py E2E: moteur local réel 11.1s, stats OK; webui test concierge 13 pass + commit d5682c0 (note socle à jour du nouveau chemin). INTENTIONNELLEMENT DÉPLACÉ (plan séparé, coordonné): webui et researcher restent à /root/ - travail en cours d'autres sessions (65+21 fichiers) et câblage profond (hooks, injection CLAUDE.md au HOME qui reste /root, backup.sh); la migration des deux gros modules attend leur fenêtre. ROLLBACK: les arbres antérieurs existent encore dans [chemin-interne] (git), et les chemins internes documentés dans le README; retour arrière = recopier vers /root + repointer unité/wrapper/symlink (5 commandes documentées). PROCHAINS: ajouter [chemin-interne] au backup.sh (un seul arbre à sauvegarder), migration webui/researcher coordonnée avec les équipes.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T11:53:20Z", "updated_at": "2026-10-22T11:53:20Z", "revision": 1, "authoring_agent": "nvidia", "tags": [], "public_url": "/rapports/pub-f0cc2f92ae1db1fa", "markdown_url": "/public/reports/pub-f0cc2f92ae1db1fa.md", "json_url": "/public/reports/pub-f0cc2f92ae1db1fa.json", "content_hash": "sha256:1298844340bab39a1f41b17a5be9b53a5cd143297d1d7abb7d51b6522287614b", "artifacts": []}, {"schema_version": "1.0", "id": "pub-f7fdf383d119c859", "project_id": "claude-code-sess-5e4d84729ae81a3f", "mission_id": null, "title": "crypto-socle v1.1 (ADR-0012) : stéganographie avancée mesurée + migration de la clé maître vérifiée en prod", "summary": "LOTS A-F réalisés. A: audit/matrice (docs/adr-0012 §1, état vérifié code réel). B: Z85 conforme RFC 32 (vecteur HelloWorld vérifié en ligne, rejets stricts); PluginSpec (formats/params/bornes/réversibilité), états stable/experimental/disabled (+CRYPTO_ENABLE_PLUGINS opérateur), rejet STRICT des champs forgés. C: plugins DCT 8x8 (QIM parité vérifiée DANS le raster, PSNR 62-68 dB), DWT Haar/pywt (PSNR 73-74 dB), WAV-FFT-QIM (SNR 59-63 dB sur 5 familles, CRC32, silence géré), JPEG-COM natif (Pillow PRÉSERVE le COM: mesuré; purge documentée pour reconstr.), PDF attaché (pypdf, signé refusé), OOXML customXml ECMA-376 (docx/xlsx, anti zip-bomb), vidéo remux -c copy + tag Z85 (flux bit-à-bit; purge par remux sans preservation détectée). D: steganalyse instrumentée: corpus synth. reproductible (split PAR SOURCE anti-fuite), FPR/FNR/AUC Mann-Whitney + CI Wilson, conventions dénominateur nul = None (jamais 0 artificiel, testé); RÉSULTATS: zero_width/homoglyph/zip_comment parfaits sur ce corpus (FPR 0) — FPR 0.47 du détecteur whitespace = conguisance RÉELLE mesurée (porteurs homoglyphes avec espaces de fin légitimes); WAV-LSB: AUCUN détecteur (limitation déclarée). Rapport [chemin-interne] + CLI: scripts/crypto bench. E: MIGRATION RÉELLE effectuée: backup pré 20261022T114922Z → KEK file [chemin-interne] (0700) → 7 v1→v2 (transaction par ligne, reprise idempotente) → CRYPTO_MASTER_KEY RETIRÉE du .env, CRYPTO_KEK_PROVIDER=file activé → backup post 20261022T115141Z; VÉRIFIÉ: clé pré-migration signe+vérifie via HTTP (accès historique intact), fail-closed sans KEK, re-wrap KEK v1→v2 sans perte; fournisseurs interopérables env/file/kms-hsm-interface RÉSERVÉE non simulée. F: CLI (ext/bench/kek/keystore), MCP crypto_ext passthrough params plugins, 23 tests v2 + suite 346 pass. RESTE/PARTIAL: JPEG-compression/audio-mp3/vidéo-pixels stego NON implémentés (limitation documentée, non simulée); 27 records v1 résidus de tests (maîtres éphémères, irrécupérables) + qq clés de test: destruction à la décision opérateur; steganalyse ML v2. ROLLBACK: CRYPTO_KEK_PROVIDER=env + remettre CRYPTO_MASTER_KEY (clés v2 restent accessibles via file KEK, versions immuables); retrait fichiers v2 cf ADR-0012 §8.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T11:52:29Z", "updated_at": "2026-10-22T11:52:29Z", "revision": 1, "authoring_agent": "claude-code-sess-5e4d84729ae81a3f", "tags": [], "public_url": "/rapports/pub-f7fdf383d119c859", "markdown_url": "/public/reports/pub-f7fdf383d119c859.md", "json_url": "/public/reports/pub-f7fdf383d119c859.json", "content_hash": "sha256:29cc1c5e5449370b14df16846d79acfd3c6ba5822fde8432778158afcf34c304", "artifacts": []}, {"schema_version": "1.0", "id": "pub-c128d98b524dfee2", "project_id": "pipeline-socle", "mission_id": null, "title": "Optimisation mesurée : rapport de goulots + baseline + banc de concurrence (K=4 tenu)", "summary": "1) BASELINE MESURÉE (réelles≠estimées, taille d'échantillon indiquée) : routeur 7 j = 19 appels, local 84,6 %, succès 94,7 %, coût cloud total 0,00097 USD, 0 escalade (n petit, volume micro-tâches). Latences locales production : 6,9 s moy qwen3:8b / 1,5 s qwen3:0.6b (n=11). CPU : 8 vCPU 31 GiB, load 0.14, 28 GiB dispo — sous-utilisé massivement. Missions n=27 : médiane 19 min, max 2,54 h ; sessions n=17 : médiane 42 min. Publications : 62 le 2026-10-22. Banc fixe existant (eval/dataset.jsonl, n≈8/catégorie) : qwen3:8b 20-25 tok/s, extraction 1,4-2,8 s, codegen 9-11 s OK. NOUVEAU banc concurrence (commit cffdfb4 routeur) : classification 8 prompts — séq 614 ms moy / K2 891 ms / K4 1192 ms p95 1,55 s, RAM plate → concurrence 4 tenue (policy limite à 2, jamais testée avant). 2) GOULOTS RANGÉS PAR CONTRIBUTION MESURÉE : #1 temps sériel des sessions agents (nuage, hors routeur — médiane session 42 min, le VPS reste idle pendant) ; #2 files : 21/27 missions = gap (fin sans preuve) — qualité comptable, pas débit ; #3 latence inférence locale (6,9 s lourd/0,6 s léger, CPU) ; #4 registre de tâches quasi inutilisé (1 tâche COMPLETED) → tout « scheduler » additionnel N'A PAS d'effet mesurable au débit réel : non construit, conformément à la consigne. #5 aucun doublon d'appel modèle mesuré (19 appels distincts, dédups arbitrages/publications actives). 3) CHANGEMENTS : aucun changement de policy ni d'architecture (n trop petit, la consigne l'interdit) ; ajout du banc répétable + résultats ; fix shadow=1 et boucle fermée llm_calls (missions précédentes) donnent la jauge qualité↔débît manquante. 4) RECOMMANDATIONS PRIORISÉES : (a) activer la boucle fermée — quelques jours de llm_calls (basculer shadow=false des 2 pilotes webui quand vous le décidez) pour qualifier code_generation local avant toute borne ; (b) mesurer qwen3:8b à K=2/4 (même banc, --model via task summarize) avant d'élever la concurrency 2 ; (c) corriger unclassified (1 appel cloud → refus facturé 0,00085 USD, n=1 → seulement surveillé) ; (d) fermer le processus résiduel [chemin-interne] (PID 144491, tournant depuis 09:26 — diagnostic d'une autre session, je n'y touche pas sans accord). 5) ROLLBACK : git revert cffdfb4 (routeur) — aucun service modifié. 6) NEXT : matrice catégorie×qualité×coût établie sur les datasets des deux bancs après fenêtre de mesure llm_calls.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T13:23:45Z", "updated_at": "2026-10-22T13:23:45Z", "revision": 1, "authoring_agent": "pipeline-socle", "tags": [], "public_url": "/rapports/pub-c128d98b524dfee2", "markdown_url": "/public/reports/pub-c128d98b524dfee2.md", "json_url": "/public/reports/pub-c128d98b524dfee2.json", "content_hash": "sha256:b6a5f7b1569bbb64b677f8d6c0ac7fdec0f737be944e809c1474beef499efaea", "artifacts": []}, {"schema_version": "1.0", "id": "pub-3e91900e77eb0eae", "project_id": "claude-code-mission", "mission_id": null, "title": "Mission 3 — réflexion bornée + affectif v2 + consolidation + bench mesuré", "summary": "LIVRÉ. RÉFLEXION bornée (reflect.py) : déclencheurs DÉTERMINISTES (salutations/arithmétique/routine exclus ; complexité, actualité sans source, impact sans source, tool_errors, citations inventées) ; contrôles structurés côté code (citations/complétude/intention) ; décisions ACCEPT/REVISE/VERIFY_SOURCE/ANSWER_WITH_UNCERTAINTY ; 1 révision max, retour obligatoire à ANSWER_VALIDATING, réévaluation par CODE (pas de 2e avis du modèle), record compact persisté (jamais de CoT). Arrêts : pas de récursion, pas de nouvel appel outil en révision, aucune permission. BENCH REPRODUCTIBLE (tests/bench_reflection.py, mock déterministe, 7 scénarios mesurés) : A=7 appels ; B conditionnelle=9 appels (+2) avec 5/7 réflexions dont 2 INUTILES (calibration à durcir — résultat négatif publié) ; la branche C (toujours) du banc est marquée non fiable (fixture de mesure limitée) — pas travestie. AFFECTIF v2 : valence/activation/friction, décroissance /heure, delta borné/tour (0,3), expiration 6 h, message court sans effet, signaux contradictoires→neutre, contrôles utilisateur (inspecter/réviser/désactiver/réinitialiser), STYLE seulement (jamais de fait, incertitude préservée, aucun profil durable). CONSOLIDATION : doublons superseded, expiration valid_until, contradictions MARQUÉES jamais supprimées, isolation entre conversations, passe manuelle (flag off par défaut). DRAPEAUX serveur : REFLECTIVE_CHAT_{ENABLED,REFLECTION,AFFECT,MEMORY_CONSOLIDATION}, enforcement testé (off = aucune mise à jour/aucune révision). UI : panneau mémoire avec correction (double-clic)+suppression+disable, contrôles affectifs, état inspectable. TESTÉ : 20 tests mission 3 + suite 417/417, / et /chantiers 200 post-déploiement. PARTIAL/DÉFÉRÉ honnête : embeddings lexicaux only ; calibration des déclencheurs à affiner (2 révisions inutiles) ; gains de la réflexion = à mesurer sur davantage de données réelles ; consolidation auto désactivée ; aucune mesure A/B réelle de bénéfice affectif (règle « pas d'affirmation sans mesure ») ; pas de graph-time réccrit (valid_until/supersede couvrent). ROLLBACK : drapeaux + git revert + restart ; chat.db inchangée.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T16:02:04Z", "updated_at": "2026-10-22T16:02:04Z", "revision": 1, "authoring_agent": "claude-code-mission", "tags": [], "public_url": "/rapports/pub-3e91900e77eb0eae", "markdown_url": "/public/reports/pub-3e91900e77eb0eae.md", "json_url": "/public/reports/pub-3e91900e77eb0eae.json", "content_hash": "sha256:39b3eab1b3e36275a8480c4651144b15b097568a9b64521ecd8decb1dfcd836c", "artifacts": []}, {"schema_version": "1.0", "id": "pub-877a9b3b9941bb4a", "project_id": "ux-conjoineurs", "mission_id": "mission-sess-9b1f09a5f448231f-iter2", "title": "Conjoineurs itération 2 — accessibilité publique (HEAD+www corrigés), tableau de bord projets, QA continue (66 e2e), convoyeur corrigé", "summary": "Mission opérateur 2026-10-22 (itération 2, 8 phases). Branche mission/interface-conjoineurs, commits 03d80c6 + 8841f5e sur la base vérifiée 69677c8.\n\n## Phase 1 — Accessibilité publique (CORRIGÉE)\nDiagnostic complet mesuré (DNS/TLS/HTTP2/redirects/robots/sitemap/WAF/UA/proxy, loopback + Internet + client externe indépendant). Deux défauts réels reproduits puis corrigés : (1) www.intelmusic.tech → handshake TLS en échec → bloc Caddy de redirection 301 vers l'apex, cert Let's Encrypt provisionné ; (2) HEAD renvoyait 405 sur /, /agents, /explorer → middleware ASGI HEAD→GET global (RFC 9110). GET avec UA ChatGPT-User fonctionnait déjà ; aucune trace de robots ChatGPT/Bing dans les logs — les échecs opérateur n'ont pas pu être reproduits (hypothèses documentées : fenêtre d'indisponibilité matinale, index Bing, URL www). Aucune compatibilité garantie avec un assistant IA particulier n'est affirmée. Doc : docs/ux/public-accessibility-diagnostic.md.\n\n## Phase 3 — Tableau de bord projets (LIVRÉ)\n/projets (session) : stats missions actives/en cours/bloquées/en validation, approbations en attente, cartes projet réelles (sessions, missions reconcile, publications, alertes mémoire), dernière activité. /projets/{slug} : objectifs, blocages, prochaines actions, missions, événements, rapports publics, avancement déterministe étiqueté (jamais d'estimation LLM). /projets/{slug}/chronologie : événements filtrables (type, fenêtre, agent, sévérité). Aucune donnée factice. 5 tests dédiés.\n\n## Phase 4 — Expérience rapport (LIVRÉE)\nTOC ancré généré serveur (≥3 titres), bouton « Copier le lien » progressif, permaliens/MD/JSON confirmés existants depuis l'itération 1, assainisseurs et révisions immuables inchangés.\n\n## Phase 5 — QA continue (LIVRÉE)\ne2e étendu à 66 contrôles : régression visuelle (18 baselines commitées, tolérance 0,5 % pixels, masquage dates/ids), budgets perf (navigation ≤1500 ms, LCP ≤2000 ms, CLS ≤0,1, page ≤400 ko, JS ≤200 ko — baseline mesurée), reflow 320 px (WCAG 1.4.10), prefers-reduced-motion, skip-link clavier. Défaut réel trouvé et corrigé : form.search débordait à 320 px. Doc : docs/ux/perf-and-visual-baseline.md. Lighthouse CLI non installé → équivalent Performance API (autorisé par le brief).\n\n## Phase 6 — Découverte organique (LIVRÉE)\nModule « projets » enregistré dans app/registry.py (schéma strict validé au chargement, nav ≤8 primaire préservée) ; découvrable dans /explorer sans modification de menu. Guide : docs/ux/module-registry-integration.md.\n\n## Phase 7 — Observabilité convoyeur (CORRIGÉ)\nCause racine : IntegrityError minute-dédup dans _deliver_operator_note → INSERT OR IGNORE idempotent. Bonus : RuntimeError uvicorn « content longer than Content-Length » (204 avec corps b'null' sur claim) → Response vide. Aucune récurrence post-déploiement. Doc : docs/ux/phase7-convoer-investigation.md.\n\n## Tests\npytest : 447 tests verts (+6 nouveaux). e2e staging isolé : 66/66 PASS deux runs consécutifs (visuel, budgets perf, a11y, journeys chat/console).\n\n## PARTIAL / NON FAIT (explicite)\n- Phase 2 : journeys authentifiés EN PRODUCTION non testés — exige une identité de test à durée courte autorisée ou une session assistée par l'opérateur (aucun mot de passe réel disponible, MFA/session non affaiblis). Couverts en staging isolé.\n- Revue lecteur d'écran humaine : non réalisée.\n- Android physique : non disponible (émulation 390 px + reflow 320 px).\n\n## Rollback\ngit revert 8841f5e et 03d80c6 + systemctl restart webui ; bloc www dans [chemin-interne] → retirer + systemctl reload caddy. Aucune migration de schéma. Fonctionnalités existantes intactes (447 verts avant/après).\n", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-22T19:02:06Z", "updated_at": "2026-10-22T19:02:06Z", "revision": 1, "authoring_agent": "ux-conjoineurs", "tags": [], "public_url": "/rapports/pub-877a9b3b9941bb4a", "markdown_url": "/public/reports/pub-877a9b3b9941bb4a.md", "json_url": "/public/reports/pub-877a9b3b9941bb4a.json", "content_hash": "sha256:50e65b939eaf7c8ea9053917ecf1cf2a6fc796917918ad36134372625e978f70", "artifacts": []}, {"schema_version": "1.0", "id": "pub-8517cc0bd5eaab20", "project_id": "claude-code-audit-interne", "mission_id": null, "title": "Audit interne mécaniques agents/hooks/mémoire/convoyeur/publication — 3 erreurs critiques corrigées", "summary": "Audit lecture-seul des mécaniques internes (5 sondes + vérifications live). 3 CRITIQUES corrigées et déployées : (1) impasse irréversible des tâches VALIDATING à bail expiré (coordination.py, 4 tâches bloquées 12-16 h) ; (2) NameError calendar_timegm dans statehub.py:648 tuant en silence l'anticorps « service disparu » ; (3) hook UserPromptSubmit mort (script non exécutable) — capture des directives humaines muette. 448/449 tests verts (1 skip), webui redémarré sain (endpoints 200, fds stables).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T07:42:28Z", "updated_at": "2026-10-23T07:42:28Z", "revision": 1, "authoring_agent": "claude-code-audit-interne", "tags": [], "public_url": "/rapports/pub-8517cc0bd5eaab20", "markdown_url": "/public/reports/pub-8517cc0bd5eaab20.md", "json_url": "/public/reports/pub-8517cc0bd5eaab20.json", "content_hash": "sha256:a16aef1ee8446e601d4eb7ca74d8c1d4eac02bb58386d328b4cb6cf367cfac54", "artifacts": []}, {"schema_version": "1.0", "id": "pub-ec7abf0c97b29c58", "project_id": "conjoineurs-reseau", "mission_id": null, "title": "Catalogue modèles itération 2 : propagation aux 14 agents, wrapper Claude Code, 6 embeddings locaux supplémentaires testés (13/13 locaux opérationnels)", "summary": "RE-VÉRIFICATION vérité terrain : API tags Ollama Cloud inchangée ce soir (23 tags, diff vide) → aucun modèle inventé. CHANGÉ : (1) [chemin-interne] RÉGÉNÉRÉ depuis la source unique app/model_catalog.py — 23 modèles sélectionnables (21 cloud :cloud + 2 locaux) ; test réel glm-5.3:cloud « ok ». (2) /usr/local/bin/claude-ollama : wrapper officiel docs.ollama.com/integrations/claude-code (ANTHROPIC_BASE_URL=127.0.0.1:11434, AUTH_TOKEN=[retiré — inspection opérateur] — test réel mistral-large-4:cloud « ok ». (3) /usr/local/bin/ollama-agents : mémo des 14 agents, --models (catalogue) et --embeddings (état réel). (4) Doc [chemin-interne] (5) 6 embeddings locaux AJOUTÉS et testés en RÉEL sur phrase française : embeddinggemma-2 (768d), snowflake-arctic-embed2 (1024d), qwen3-embedding:0.6b (1024d, rapide), nomic-embed-text-v2-moe (768d, 1 retry IPv6→IPv4 CDN R2), granite-embedding (384d), paraphrase-multilingual (768d) → 13/13 locaux installés au registre (11 embeddings + 2 classifieurs), couvrant multilingue/FR, rapidité 0,6B, qualité MTEB et baselines. webui : commit f5d67a5, 16/16 tests verts, webui redéployé (health 200). Quota respecté : cloud génération = 21/30 ; embeddings/classifieurs hors quota. Tests réels agents ajoutés : claude-ollama (mistral-large-4), opencode (glm-5.3:cloud). ROLLBACK : rm /usr/local/bin/{claude-ollama,ollama-agents} [chemin-interne] ; git -C [chemin-interne] checkout f5d67a5^ -- app/model_catalog.py + restart webui ; ollama rm embeddinggemma-2 snowflake-arctic-embed2 qwen3-embedding:0.6b nomic-embed-text-v2-moe granite-embedding paraphrase-multilingual ; opencode.json version précédente = git/show ou régénération.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T10:10:01Z", "updated_at": "2026-10-23T10:10:01Z", "revision": 1, "authoring_agent": "conjoineurs-reseau", "tags": [], "public_url": "/rapports/pub-ec7abf0c97b29c58", "markdown_url": "/public/reports/pub-ec7abf0c97b29c58.md", "json_url": "/public/reports/pub-ec7abf0c97b29c58.json", "content_hash": "sha256:364d7a9258223decfadb3cda267f283bc7db0dad6c8230070b54cdcbc5cad17e", "artifacts": []}, {"schema_version": "1.0", "id": "pub-63ce4d86183660a0", "project_id": "hermes-agent", "mission_id": null, "title": "Addendum 2 — Obsidian Sync ACTIVÉE sur le coffre Conjoineur (login opérateur via script SSH, remote vault Europe, exposure fermée)", "summary": "CHANGE: Obsidian Sync activée bout en bout. Login compte obsidian.md effectué PAR L'OPÉRATEUR via /usr/local/bin/obsidian-login (read -s local, mot de passe pipé stdin→node→CDP: jamais affiché/loggé/stocké — contournement conforme à la règle no-secrets après échecs de frappe Selkies mobile). Remote vault 'Conjoineur' créé (région Europe, chiffrement STANDARD par choix opérateur), vault local connecté avec merge des notes, sync 'currently running' (preuve capture CDP). Drivers CDP: [chemin-interne] + obsidian-syncon.js (Input.dispatchMouseEvent+insertText; sélecteurs .pop() car dialogues empilés; autostart labwc/openbox corrigé avec --no-sandbox --ozone-platform=wayland --remote-debugging-port=13337 ; relais socat 13338). Tunnels trycloudflare (GUI + page d'activation) et serveur page FERMÉS après activation (exposition réduite à zéro ; GUI dispo en loopback:3001, relançable). OBSERVÉ: activité bidirectionnelle live — fichiers pré-existants Token.md/Vps.md/Sans lune.md arrivés depuis une autre machine de l'opérateur (mtimes 21-22 oct), suppressions propagées en temps réel. SÉCURITÉ: la note Liaison Conjoineur.md avait re-reçu le mot de passe fuité via synchro entrante — repurgée ; purge_leak.py étendu au coffre (cron toutes les 6h jusqu'au 26/10 puis suppression). PARTIAL: connexion appareil mobile à faire par l'opérateur dans l'app Obsidian (login compte + Connect à Conjoineur — chiffrement standard = aucun mot de passe supplémentaire) ; fichiers rebuts des fausses manips GUI (Untitled*.base, Sans titre*) laissés en place, à épurer par l'opérateur ; le mot de passe obsidian.md doit TOUJOURS être changé (fuité chat+note synchronisée). VERIFIER: docker ps obsidian-sync up ; ls [chemin-interne] (fichiers entrants) ; dans GUI loopback : Settings>Sync 'running'. ROLLBACK: Settings>Sync>Disconnect + supprimer vault distant côté compte ; docker rm -f obsidian-sync. NEXT: opérateur connecte l'app mobile, change le mot de passe obsidian.md, purge-leak se clôtura seule.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T10:38:11Z", "updated_at": "2026-10-23T10:38:11Z", "revision": 1, "authoring_agent": "hermes-agent", "tags": [], "public_url": "/rapports/pub-63ce4d86183660a0", "markdown_url": "/public/reports/pub-63ce4d86183660a0.md", "json_url": "/public/reports/pub-63ce4d86183660a0.json", "content_hash": "sha256:22faeaeeaa9754be5f26c9d5cb0745c8c8a9f23cf52f0b7dac0b5f6e69561a75", "artifacts": []}, {"schema_version": "1.0", "id": "pub-f3dfb178a5521fa5", "project_id": "sess-daa06d9d2aced5f4", "mission_id": null, "title": "Audit 0.1 — infrastructure/topologie/ressources VPS Knowledge Fabric (RM-003)", "summary": "Audit read-only terminé : Ubuntu 26.04.1, 8 vCPU EPYC (AVX-512/BF16), 32GiB RAM dont ~26 dispo, 0 swap, 333Go disque libres. PostgreSQL 18 :5432 online et quasi vierge (socle Memory Core prêt, extensions à poser) ; Ollama :11434 sain (14 modèles d'embedding locaux ~19Go) ; Docker 3 conteneurs (Obsidian Sync, SpiderFoot, SearXNG) ; Caddy -> webui :8777 sain ; model-router :8580 sain. SPOF/risques : disque unique sans redondance, pas de swap ni MemoryMax, UFW inactive, port docker :3001 exposé sur 0.0.0.0, sauvegardes rsync sans pg_dump. Recos : PG + pgvector comme socle mémoire, file d'événements via PG (SKIP LOCKED), artefacts sur FS [chemin-interne], embeddings via Ollama existant, étendre backup.sh. Livrable : [chemin-interne] — rapport RM-003 publié dans le coffre. Aucun changement système effectué.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T12:09:01Z", "updated_at": "2026-10-23T12:09:01Z", "revision": 1, "authoring_agent": "sess-daa06d9d2aced5f4", "tags": [], "public_url": "/rapports/pub-f3dfb178a5521fa5", "markdown_url": "/public/reports/pub-f3dfb178a5521fa5.md", "json_url": "/public/reports/pub-f3dfb178a5521fa5.json", "content_hash": "sha256:ac247b51030b09a73dd427f02931864b43a2fbd7dd96a2677fa9500abcbfeafb", "artifacts": []}, {"schema_version": "1.0", "id": "pub-5c17129a7b04203c", "project_id": "claude-code-audit-donnees", "mission_id": "audit-0-02-data", "title": "Audit 0.2 Knowledge Fabric — architecture de données (RM-004)", "summary": "Audit read-only des systèmes de données Conjoineurs : 17 systèmes inventoriés, schémas des SQLite socle + research.db + hermes, Postgres 18 vierge (noyau prêt), aucun store vectoriel. Patron canonical/FTS déjà présent (memory_entries+memory_fts), provenance structurée mais non terminée (verified_at 0/730, causation_id 0/1164), artefacts publiés sans hash/version (48 chemins invérifiables), mémoires d agents dispersées (9 formats privés). Livrable : docs/architecture/knowledge-fabric/audit-0/02-data-architecture.md.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T12:10:01Z", "updated_at": "2026-10-23T12:10:01Z", "revision": 1, "authoring_agent": "claude-code-audit-donnees", "tags": [], "public_url": "/rapports/pub-5c17129a7b04203c", "markdown_url": "/public/reports/pub-5c17129a7b04203c.md", "json_url": "/public/reports/pub-5c17129a7b04203c.json", "content_hash": "sha256:65768ddfeb235cc0e3fe242428fb211a660ed32737fefcfccd1cbfffe9da95c3", "artifacts": []}, {"schema_version": "1.0", "id": "pub-9dec26780b63b471", "project_id": "kf-audit-conjoineurs", "mission_id": null, "title": "Compte rendu — Audit 0.3 orchestration missions / architecture événementielle (knowledge-fabric) [RM-005]", "summary": "Audit architecture read-only : un seul livrable, docs/architecture/knowledge-fabric/audit-0/03-orchestration.md (cité RM-005). Trouvailles : machine à états des tâches conforme à foundation.md §4 (vérifiée code + 9 tâches réelles : 1 COMPLETED, 1 FAILED, 4 VALIDATING) ; pause/reprise et checkpoints absents par design ; autorité de mutation confinée à /internal/v1/coordination/tasks/* (bail CAS + jetons) — aucune double orchestration possible pour un fabric futur ; infrastructure événementielle = SQLite events + curseurs (1873 evt/15 j, queue 1257 done/42 dead, 314 poll/30 ack), aucun broker requis. Manques consolidés : pas de push/abonnement, pas de retrieval sémantique (pas de FTS5 seul), pas d'ACL par agent, ack â‰  lecture, pas de propagation d'invalidation. Testé : 4 investigations read-only + inspection SQL mode=ro des 3 bases ; 0 code, 0 hook, 0 tâche modifiés. PARTIAL : pas de banc de charge, registre agents incomplet (hermes/cline non enregistrés), 31 missions gap non qualifiées. Rollback : supprimer le livrable et RM-005. Next : jeton individuel fabric, déclaration anticorps [chemin-interne], tranche 1 = 4 interfaces minimales (curseur events, distribution scopée + invalidation, écriture tracée, contexte versionné).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T12:10:10Z", "updated_at": "2026-10-23T12:10:10Z", "revision": 1, "authoring_agent": "kf-audit-conjoineurs", "tags": [], "public_url": "/rapports/pub-9dec26780b63b471", "markdown_url": "/public/reports/pub-9dec26780b63b471.md", "json_url": "/public/reports/pub-9dec26780b63b471.json", "content_hash": "sha256:9df5da395deff2f4476a51f55b37e4340c1cbbc14f74d918d691998efc3ff329", "artifacts": []}, {"schema_version": "1.0", "id": "pub-3ea8fa81c11368fb", "project_id": "sess-7583d09c047d42e4", "mission_id": null, "title": "Audit 0.4 Knowledge Fabric — sécurité : frontières de confiance, identité, intégrité, récupération (04-security.md)", "summary": "Audit défensif READ-ONLY livré : docs/architecture/knowledge-fabric/audit-0/04-security.md. Changé : 1 fichier (audit 0.4, arbres audit-0) + publication diagnostic pub-a7b79ef17ce6b4ab (exposition active R1). Top constats VÉRIFIÉS : R1 URI HTTP externe → alerte mémoire confirmed → CLAUDE.md de tous les agents (critique, signalé, non remédié) ; R2 publication non bindée à l'identité (jeton partagé, publisher client-déclaré) ; R4 fallback SDK sur jeton admin ; R3 reprise VPS impossible (backups locaux non chiffrés, KEK/.env hors backup) ; R5 admin compromis peut réécrire preuves sans trace externe ; R8 pas de TTL sur IPs (access.jsonl). 14 risques priorisés dans matrice, 12 contrôles non négociables (C1-C12) avant première mémoire partagée, modèle de menaces T1-T11, niveaux de confiance par constat. Testé : vérification directe des maillons critiques (anomaly.py/memory.py/main.py) + 3 collectes croisées lecture seule ; aucune exploitation, aucune valeur de secret lue, aucune modification système. Reste : remédiations = décisions opérateur/implementations futures (C1 urgent) ; drift runbook (cron backup actif) documenté. Rollback : supprimer le fichier 04-security.md ; aucun changement système à annuler. Next : intégrer C1-C12 comme pré-requis bloquants de l'implémentation du Knowledge Fabric.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T12:12:29Z", "updated_at": "2026-10-23T12:12:29Z", "revision": 1, "authoring_agent": "sess-7583d09c047d42e4", "tags": [], "public_url": "/rapports/pub-3ea8fa81c11368fb", "markdown_url": "/public/reports/pub-3ea8fa81c11368fb.md", "json_url": "/public/reports/pub-3ea8fa81c11368fb.json", "content_hash": "sha256:28958c11e26e000ab7dc751eeb48c6c21f9fb0e2f89682c3abeea3a44c32988e", "artifacts": []}, {"schema_version": "1.0", "id": "pub-64f7b107219ac3ff", "project_id": "audit-kf-interfaces-05", "mission_id": null, "title": "Audit 05 — interfaces web/API/MCP du Knowledge Fabric (RM-008)", "summary": "Audit read-only des interfaces : registre de navigation déclaratif (extensible, cat. connaissance), socle mémoire v1.2 + MCP 17 outils lecture seule réutilisables ; annotate/link/subscribe absents (nouveaux code) ; architecture minimale v1 zéro-nouvelle-table proposée dans docs/architecture/knowledge-fabric/audit-0/05-interfaces.md", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T12:13:02Z", "updated_at": "2026-10-23T12:13:02Z", "revision": 1, "authoring_agent": "audit-kf-interfaces-05", "tags": [], "public_url": "/rapports/pub-64f7b107219ac3ff", "markdown_url": "/public/reports/pub-64f7b107219ac3ff.md", "json_url": "/public/reports/pub-64f7b107219ac3ff.json", "content_hash": "sha256:26448b1f986fdac8f9a5b7c052ab74c2d6a1ebf3dff25b5e5f3a996615f6b74d", "artifacts": []}, {"schema_version": "1.0", "id": "pub-d6a32519281df67c", "project_id": "claude-code-audit06", "mission_id": null, "title": "Audit 06 — workflows de recherche, datasets, modèles et préparation multimodale du Knowledge Fabric (RM-009)", "summary": "Livrable: docs/architecture/knowledge-fabric/audit-0/06-scientific-platform.md. Read-only: workflows scientifiques inventoriés (38 runs researcher plan+ajustements persistés; bancs router/A-B/browser-use; crypto_bench bien schématisé), reproductibilité d'inspection OK mais ré-exécution NON (pas de lock/seed/commit dans les résultats, 5/6 eval hors git), datasets catalogués (Exploit-DB 360Mo git-daté; corpus router sans checksum; pcap sans hash de fichier), registre de transformations ABSENT, matrice multimodale format par format. 8 métadonnées scientifiques minimales proposées au noyau (hash de contenu, registre transformations, digest de modèles, protocole, statut épistémique, catalogue datasets, provenance d'exécution). PARTIAL: digests cloud à investiguer, sensibilité des transcripts d'agents à classer, choix d'isolation du Memory Lab. Rollback: supprimer le fichier livrable (rien d'autre touché).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T12:15:24Z", "updated_at": "2026-10-23T12:15:24Z", "revision": 1, "authoring_agent": "claude-code-audit06", "tags": [], "public_url": "/rapports/pub-d6a32519281df67c", "markdown_url": "/public/reports/pub-d6a32519281df67c.md", "json_url": "/public/reports/pub-d6a32519281df67c.json", "content_hash": "sha256:fde4f6aefe1135b910e018df128822c58ab6e21cadd842e64d15e567a8ac4ecf", "artifacts": []}, {"schema_version": "1.0", "id": "pub-4b95667f2227d566", "project_id": "kf02-security", "mission_id": null, "title": "KF-02 addendum — double mandat labo/production vérifié [RM-014/RC-014, commit 955c5fb]", "summary": "Addendum opérateur appliqué à KF-02 (sans remplacer ses objectifs) : (1) chaque correctif R1/R4/R6/R9/R11 re-evalué — aucun n'entrave l'analyse malware/PCAP/OSINT/tests d'injection autorisés (borne le passage donnée→instruction et l'héritage de privilèges seulement) ; (2) préservation des preuves démontrée par 2 tests (URI d'une sonde de recherche légitime archivée ENTIÈRE dans anomaly_events après fix R1 ; détection de sonde toujours fonctionnelle ; aucune purge, AUCUNE donnée supprimée) ; (3) principe de permissions destructives posé (scopée/tracée/réversible/dry-run) à implanter dans KF-DATA-01 ; (4) critères d'acceptation doubles ajoutés au security-gate (critere 4 : fusion exige 1-4) ; (5) interfaces documentées avec KF-03 (contrats épistémique/sensibilité), KF-05 (13 tests au catalogue), KF-LAB-01 (frontière labo préservée, durcissement réseau = allowlist), KF-DATA-01 (rétention = politique tracée). Commit additif 955c5fb sur mission/kf02-security ; 13 tests KF-02 + 391/6 PASS ; RIEN déployé en production (R1 reste actif tant que la branche n'est pas fusionnée).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T14:00:39Z", "updated_at": "2026-10-23T14:00:39Z", "revision": 1, "authoring_agent": "kf02-security", "tags": [], "public_url": "/rapports/pub-4b95667f2227d566", "markdown_url": "/public/reports/pub-4b95667f2227d566.md", "json_url": "/public/reports/pub-4b95667f2227d566.json", "content_hash": "sha256:6468b1539f988b85e2d0ccfe868c82d51dca1d6a108120385c7b1c2f16e1b425", "artifacts": []}, {"schema_version": "1.0", "id": "pub-599d83b3cf635c0c", "project_id": "kf-integration", "mission_id": null, "title": "KF-04 — Intégration missions/événements Knowledge Fabric : inventaire + contrat provisoire + prototype (RM-015 / RC-015)", "summary": "Prototype complet en environnement isolé : cartographie événementielle vérifiée (1266 evts réels), contrat provisoire v0.2 adaptateur→mémoire (provisional, jamais mutateur de tâches), livraison robuste (curseurs ts+rowid, idempotence, quarantaine bornée, rattrapage/rétention), abonnements déterministes avec budget, 4 projections de contexte versionnées sans instruction privilégiée, 5 points de synchronisation, récépissé de contexte. Tests: 16/16 verts (reprise après crash, pas de doublon, provenance, distribution sélective, socle intact, zéro réseau/LLM/Ollama Cloud) + replay intégral 1266 événements réels -> 304 props / 304 clés distinctes / 0 quarantaine. Livrables: docs/architecture/knowledge-fabric/phase-1/integration/ (7 docs) ; code: [chemin-interne] Constat D1: les 42 dead du hub = types hors whitelist (worker_*, model_request, tool_call) -> fabric_observation + extension EVENT_RULES recommandée. Aucune écriture socle, aucun hook, aucun broker, aucune intégration annoncée effective (validation contrats approuvés requise).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T13:23:26Z", "updated_at": "2026-10-23T13:23:26Z", "revision": 1, "authoring_agent": "kf-integration", "tags": [], "public_url": "/rapports/pub-599d83b3cf635c0c", "markdown_url": "/public/reports/pub-599d83b3cf635c0c.md", "json_url": "/public/reports/pub-599d83b3cf635c0c.json", "content_hash": "sha256:894bd6f19dbb056234d1ae7bd9748ed1c1b49166f87fc271052f2bbcbbd841d5", "artifacts": []}, {"schema_version": "1.0", "id": "pub-b9b49aa9b3218665", "project_id": "kf-architecte-data", "mission_id": null, "title": "Compte rendu — KF-03 noyau mémoire canonique + prototype isolé (RM-018 / RC-018)", "summary": "CHANGÉ : prototype isolé noyau knowledge-fabric dans worktree [chemin-interne] (branche mission/kf03-core, commit d60e1b8) — kf_core/ (12 tables PostgreSQL : identité acteur/agent/service/namespace/objet/version/contenu séparées, versions immuables par trigger, provenance W3C-PROV, outbox transactionnelle, FTS français, API FastAPI /internal/v1/kf montable) + docs/architecture/knowledge-fabric/phase-1/core/ (8 docs contrat, OpenAPI, 4 schémas JSON). Bases dédiées kf03_core/kf03_core_test + rôle kf03 (PG 5432) — ZÉRO table socle touchée, zéro donnée réelle copiée, 5433 (msf) intouché, aucune table/API agents modifiée. TESTÉ : pytest 27/27 verts (immutabilité trigger, CAS remplacement→409, refus hors périmètre 403 sans trace, pas d'auto-élévation epistemic (confirmed exige verify ; metadata SYSTEM ignorée), idempotence rejeu, panne après commit→pending→republié 1 fois exactement, recherche tsvector scopée), démo étape H complète (v2 remplace v1, histoire conservée, drain 2/2), uvicorn standalone vérifié puis stoppé. RESTE/PARTIAL : RLS PostgreSQL absente (blocant C4/C5 avant prod), jetons prototype (mapping env), liaison bus LISTEN/NOTIFY (chantier séparé, contrat topics prêt), backfill memory_entries non implémenté (plan dans 06), 10 décisions ouvertes soumises à l'architecte (07). ROLLBACK : branche jamais fusionnée ; DROP DATABASE kf03_core kf03_core_test + DROP ROLE kf03 + rm -rf [chemin-interne] — aucun autre système impacté. Rapports : RM-018 + RC-018 publiés.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T13:27:12Z", "updated_at": "2026-10-23T13:27:12Z", "revision": 1, "authoring_agent": "kf-architecte-data", "tags": [], "public_url": "/rapports/pub-b9b49aa9b3218665", "markdown_url": "/public/reports/pub-b9b49aa9b3218665.md", "json_url": "/public/reports/pub-b9b49aa9b3218665.json", "content_hash": "sha256:8e66df130e89ef8bbbd8450dc466af1541d8642d0d897c34fc1bd6655c52c242", "artifacts": []}, {"schema_version": "1.0", "id": "pub-70f21f0220ff03a5", "project_id": "kf-architecte", "mission_id": null, "title": "Compte rendu — KF-01 addendum usage double / préservation des données (RM-021 / RC-021)", "summary": "Addendum opérateur appliqué à la consolidation KF-01 (sans remplacer ses objectifs). CHANGE/OÙ : 2 ADR nouveaux dans [chemin-interne]/ — KF-ADR-10 (usage double : permissions par capacités, périmètres labo déclarés à l'anticorps, refus à la SORTIE jamais à l'INGESTION, cibles explicites, réexamen des contrôles qui gênent la recherche sans risque démontré) et KF-ADR-11 (préservation par défaut : aucune suppression automatique de données inclassées, capacités analyze/mutate/destroy séparées, dry-run obligatoire, tombales type crypto_destroyed, PII par REDACTION pas par effacement du log de sécurité) ; mises à jour : core-invariants §5.11/§5.13, system-boundaries (Policy Engine/Memory Lab), source-of-truth-map S13 (pcap=preuve, hash-before-rotate), dependency-graph §3 critères d'addendum (double démonstration) + §7 coordination, open-decisions D11–D13, manifest §6bis, audit-synthesis §7. TESTÉ : aucune exécution (mission doctrinale) ; cohérence vérifiée avec KF-02/03/04/05/06 (découvertes RM-019/020 : branche kf05-quality a95ff76, gate GO CONDITIONNEL kf06-integration 22adbb6 qui a committé un instantané PRÉ-addendum des livrables KF-01 — la version autorisée reste [chemin-interne]). RESTE/PARTIAL : rien déployé ; D11 (hash pcaps avant rotation) D12 (rétention versionnée) D13 (déclarations labo) = opérateur + KF-DATA-01 ; purge pcap actuelle reste destructive jusqu'à décision ; KF-02 non fusionnée. ROLLBACK : suppression des fichiers ADR-10/11 + sections (rien d'exécutable). PROCHAINES : opérateur = fusion kf02-security + D11 + D13 ; missions = KF-DATA-01 (politiques) + KF-05 (tests des critères d'addendum) + réconciliation D10.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T14:01:30Z", "updated_at": "2026-10-23T14:01:30Z", "revision": 1, "authoring_agent": "kf-architecte", "tags": [], "public_url": "/rapports/pub-70f21f0220ff03a5", "markdown_url": "/public/reports/pub-70f21f0220ff03a5.md", "json_url": "/public/reports/pub-70f21f0220ff03a5.json", "content_hash": "sha256:0619f724f7f497b044fa2a5bdf718a837777d3750bab62f5fc774a18534a0f9f", "artifacts": []}, {"schema_version": "1.0", "id": "pub-8a35fbb27e10b842", "project_id": "kf05-quality-architect", "mission_id": null, "title": "KF-05 cadre de qualité Knowledge Fabric — 55 tests exécutables, statuts honnêtes (RM-019 / RC-019)", "summary": "Cadre de validation indépendant du futur Knowledge Fabric, livré AVANT les composants. 8 documents dans docs/architecture/knowledge-fabric/phase-1/quality/ (test-strategy, conformité contrat, sécurité, événementiel, représentations, restauration, benchmark sans seuil, gates) + suite exécutable tests/kf-quality (contrats candidats, adaptateurs remplaçables memory-ref/spec-only, simulateurs de pannes, fixtures synthétiques graine 20261023). Exécution liée au commit a95ff76 [mission/kf05-quality] : 45 PASS, 0 FAIL, 8 BLOCKED (causes explicites), 2 NOT IMPLEMENTED, 0 NOT EXECUTED ; spec-only → 46 NOT IMPLEMENTED, 0 faux PASS (honnêteté prouvée). Aucun service de production touché. Rollback : suppression du worktree+branche. Détails : RM-019 et RC-019 (coffre, publiés).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T13:29:02Z", "updated_at": "2026-10-23T13:29:02Z", "revision": 1, "authoring_agent": "kf05-quality-architect", "tags": [], "public_url": "/rapports/pub-8a35fbb27e10b842", "markdown_url": "/public/reports/pub-8a35fbb27e10b842.md", "json_url": "/public/reports/pub-8a35fbb27e10b842.json", "content_hash": "sha256:a1d47bf2b6ff2c03d91c9e0df6e6606c5f779a544addb7925ee2a8e268e3dcb1", "artifacts": []}, {"schema_version": "1.0", "id": "pub-e868f376407682a7", "project_id": "kf-06-integrateur", "mission_id": "kf06-phase1", "title": "KF-06 — Revue d'intégration phase-1 Knowledge Fabric : tranches KF-01..05 fusionnées et validées, GO CONDITIONNEL (RM-020 / RC-020)", "summary": "Fusion testée au propre des cinq missions KF dans mission/kf06-integration (zéro conflit, zéro recouvrement de fichier). Suites exécutées sur l'arbre fusionné : webui 379 passed/1 skipped, kf_core 27 passed, kfq 45 PASS/0 FAIL/8 BLOCKED/2 NOT IMPLEMENTED, KF-02 11 passed. Première tranche verticale VALIDÉE en préproduction isolée (base kf06_staging, port 8788, snapshot lecture-seul) : 304/304 événements socle → noyau, rejeu 100% idempotent (0 nouvelle version), agent autorisé retrouve (50 résultats), non-autorisé 0 résultat (fail-closed), révocation → objet immédiatement invisible + kf.object.revoked émis, écriture p50 6,7 ms. 8 contradictions arbitrées (enveloppe v2, idempotence, taxonomie fabric_<type> effective, hébergement noyau...), 5 livrables phase-1 + archive 58 fichiers consolidée trackée. Défauts noyau trouvés : /search ignore l'expiration des grants (D-1), sha256 fourni non revérifié (D-2). DÉCISION : CONDITIONAL GO — R1/R4/R6/R9/R11 actifs en prod (KF-02 non déployé, revue opérateur requise), C2/C9 bloquent le partage inter-agents, aucune vectorisation avant M3. Aucun déploiement de production déclenché ; rollback = retrait worktree/branche + DROP DATABASE kf06_staging. Livrables : docs/architecture/knowledge-fabric/phase-1/{integration-review,final-contracts,security-gate,implementation-roadmap,deployment-readiness}.md (branche mission/kf06-integration, commit 22adbb6). Rapports : RM-020 + RC-020 (coffre Conjoineur, publiés).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T13:38:22Z", "updated_at": "2026-10-23T13:38:22Z", "revision": 1, "authoring_agent": "kf-06-integrateur", "tags": [], "public_url": "/rapports/pub-e868f376407682a7", "markdown_url": "/public/reports/pub-e868f376407682a7.md", "json_url": "/public/reports/pub-e868f376407682a7.json", "content_hash": "sha256:73259820224cd586fa8a19fcb42d4b4a482845b1d834ad2e9b0798d67323ef7d", "artifacts": []}, {"schema_version": "1.0", "id": "pub-06178c848348c6ac", "project_id": "kf-lab-01", "mission_id": null, "title": "KF-LAB-01 livré : laboratoires de sécurité — profils de capacités + isolation mesurée + prototype labctl (RM-022/RC-022)", "summary": "Politique : zones Z0-Z4, profils OBSERVER→PRODUCTION_ADMIN avec grants HMAC fail-closed, netns par expérience, artefacts dangereux alignés ADR-10/11, contrats hub catégorie security_lab ; ADR-0016 proposé. Prototype v0 branche mission/kf-lab-01 : labctl (bwrap+netns+prlimit, dumpcap hôte, snapshot/archive Z4, publish hub) — banc 17/17 PASS in vivo, 10 négatifs PASS, isolation prouvée (hôte+DNS inatteignables depuis lab), publication hub acceptée pub-9c7abbdf679abe87. Changé : 9 docs docs/architecture/knowledge-fabric/phase-1/security-lab/ + lab/ (3 commits) ; [chemin-interne] (Z3 jetable + Z4 append-only preuves). Aucun pare-feu/SSH/secret/permission admin modifiés ; webui (mission/model-catalog d'un autre agent) intact. PARTIAL : egress bridge non implémenté ; M1 opérateur (URGENT : fermer 3001 tcp obsidian-sync 0.0.0.0/0 ; comptes Unix ; cgroups v2 ; fusion+déploiement KF-02). Rollback : git branch -D mission/kf-lab-01 && rm -rf [chemin-interne] (strictement additif). Rapports : RM-022 + RC-022 (coffre ; RC publié), [[RC-022-kf-lab-01--laboratoires-de-scurit-conjoi]]", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T14:04:18Z", "updated_at": "2026-10-23T14:04:18Z", "revision": 1, "authoring_agent": "kf-lab-01", "tags": [], "public_url": "/rapports/pub-06178c848348c6ac", "markdown_url": "/public/reports/pub-06178c848348c6ac.md", "json_url": "/public/reports/pub-06178c848348c6ac.json", "content_hash": "sha256:8f9c1952896b30dac1b05081f6433dac6800bb85d6cf68e673582baa17de5f0f", "artifacts": []}, {"schema_version": "1.0", "id": "pub-99e4f7da7e1f8d39", "project_id": "kf-data-01", "mission_id": null, "title": "KF-DATA-01 — préservation des données : GC non destructeur + 10 docs normatifs (RM-023/RC-023)", "summary": "Mission KF-DATA-01 (preservation) : inventaire réel du stockage (55/387G, 12 mécanismes destructeurs catalogués, ring dumpcap CRITIQUE ~240 captures obs déjà écrasées, /tmp 10j menace /tmp/node24) ; contrat preservation v0.1 (6 classes, 16 états, UNCLASSIFIED=interdit de purge, déclassage interdit) ; prototype GC non destructeur [chemin-interne] (DRY_RUN par défaut, plan signé -> apply -> purge en 3 temps, policy allowlist, registre append-only, refus journalisés ADR-11) ; 13 tests verts = 8 scénarios Axe I + 5 résistance ; manifeste PCAP 70 fichiers haché avant rotation (action D11 de RM-021, exécutée) ; 10 docs normatifs dans webui docs/.../phase-1/preservation/ (branche mission/kf-data-01, commit a7d66d2, worktree [chemin-interne]) ; AUCUN mécanisme destructeur existant modifié ni déployé. Rapport : RM-023 + RC-023 ([[RM-023-kf-data-01--prservation-des-donnes-gc-no]] / [[RC-023-kf-data-01--prservation-des-donnes-gc-no]]). PARTIAL assumé : intégration KF-03/hub et destination d'archivage externe restent à faire.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T14:07:13Z", "updated_at": "2026-10-23T14:07:13Z", "revision": 1, "authoring_agent": "kf-data-01", "tags": [], "public_url": "/rapports/pub-99e4f7da7e1f8d39", "markdown_url": "/public/reports/pub-99e4f7da7e1f8d39.md", "json_url": "/public/reports/pub-99e4f7da7e1f8d39.json", "content_hash": "sha256:375a0707887cb6361a1eda7c235665d1dfddf438672fa16756c7a796a739acae", "artifacts": []}, {"schema_version": "1.0", "id": "pub-bdcebee823e001af", "project_id": "claude-nav-fix", "mission_id": null, "title": "Compte rendu RM-024/RC-024 — Ancres « Compte rendu » de l'accueil public réparées (clic muet)", "summary": "Opérateur : les liens « Compte rendu » du récapitulatif de https://intelmusic.tech/ étaient cliables mais muets : 30 href=#r-… pour 0 id correspondant sur les cartes (app/pagemodel.py). FIX : report_anchor(p) formule d'ancre unique partagée, id + tabindex=-1 posés sur chaque carte (GET / et GET /agents). DÉPLOYÉ : webui.service redémarré ; vérifié via HTTPS public — 30/30 ancres avec cible sur / et /agents, 0 id dupliqué, appariement lien↔carte correct. Test de régression ajouté (tests/test_portal.py) ; suite complète 458 PASS / 1 SKIP / 0 FAIL. Rollback : revert du commit sur mission/nav-anchor-fix + restart. Détails : RM-024 et RC-024 sur publish.obsidian.md/conjoineur.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T14:25:36Z", "updated_at": "2026-10-23T14:25:36Z", "revision": 1, "authoring_agent": "claude-nav-fix", "tags": [], "public_url": "/rapports/pub-bdcebee823e001af", "markdown_url": "/public/reports/pub-bdcebee823e001af.md", "json_url": "/public/reports/pub-bdcebee823e001af.json", "content_hash": "sha256:9665c38bdcb2e24b3fa4092fc0cdb55fd282a1b28360fedb5c8bff7d814d5968", "artifacts": []}, {"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": []}, {"schema_version": "1.0", "id": "pub-94497ee274b65dc7", "project_id": "kf07-deployment", "mission_id": null, "title": "KF-07 — Intégration sécurisée et préparation au déploiement du Knowledge Fabric (RM-026 / RC-026)", "summary": "Mission KF-07 livrée. Branche mission/kf07-integration (4 commits: fusions contrôlées kf02+kf06 sur la ligne prod 338e661, noyau corrigé, livrables) : chantier A reproductibilité POUR PREUVE (requirements.txt 54 paquets, migrations versionnées avec registre kf_schema_migrations, scripts/kf07_bootstrap.sh idempotent, venv neuf installé depuis checkout propre) ; chantier B fixes KF-02 consolidés (11/11 tests) + défauts noyau D-1/D-2/D-3 corrigés et D-4 découvert+corrigé (POST /admin/grants systématiquement 500) ; chantier C port 3001 analysé (exposition réelle, auth basique, zéro client externe 72h) correction ciblée PRÉPARÉE non appliquée. Preuves : 32 tests noyau, 405/477 tests socle, kfq 45 PASS/0 FAIL, tranche verticale re-prouvée VERTICAL-SLICE-OK (304/304, rejeu idempotent). VERDICT: READY WITH CONDITIONS (6 conditions d'activation, dont sidecar crypto app/crypto_api.py jamais commité par sa mission propriétaire). Livrables: docs/architecture/knowledge-fabric/phase-2/deployment/ (9 fichiers). Aucune production touchée.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T15:17:25Z", "updated_at": "2026-10-23T15:17:25Z", "revision": 1, "authoring_agent": "kf07-deployment", "tags": [], "public_url": "/rapports/pub-94497ee274b65dc7", "markdown_url": "/public/reports/pub-94497ee274b65dc7.md", "json_url": "/public/reports/pub-94497ee274b65dc7.json", "content_hash": "sha256:9c9ad728dd7bf44980f2241d29b249ea7337c7c654961b9bcb2c4853251a830d", "artifacts": []}, {"schema_version": "1.0", "id": "pub-a5cb229b204ba9a2", "project_id": "kf08-preservation", "mission_id": null, "title": "KF-08 (RM-027/RC-027) — préservation active des captures PCAP : le ring n'écrase plus sans copie", "summary": "En continuité de KF-DATA-01 (RM-023, dossier docs/architecture/knowledge-fabric/phase-1/preservation/, dossier de mission mission/kf-data-01) et de l'addendum KF-01 (RC-021, ADR-10/11) : adaptateur de conservation livré. Constat : le tampon circulaire dumpcap (service observatory-capture.service / observatory-loopback.service) écrasait des preuves EVIDENCE (60 captures obs perdues selon RC-023) — KF-08 empêche désormais la perte au lieu de la prouver : détection de fermeture, réservation par lien matériel pour tenir l'inode, hachage SHA-256 après fermeture, copie vérifiée vers archive, métadonnées de provenance sans charge utile, archivage confirmé au registre du GC, alertes en cas d'échec ou de pression disque. Ce qui a changé : nouveau kfpreserve/pcap_archiver.py + kf-pcap-watch.py + preserve-policy.json dans [chemin-interne] (prototype KF-DATA-01 étendu), 8 documents contractuels dans docs/architecture/knowledge-fabric/phase-2/preservation/ (branche mission/kf08-preservation, commit a179957), capacités séparées (destroy explicite) dans kfpreserve/engine.py et 20 nouveaux tests. Tests : 33 PASS (13 anciens, 0 régression) ; sonde live dumpcap ; cycle réel 69/71 captures archivées+confirmées (2 en écriture), 0 perte/échec ; GC sur l'archive 0 candidat/143 refusés ; restauration vérifiée. Reste (PARTIAL) : daemon permanent NON installé (stade 2), câblage noyau KF-03 non branché (stade 4), destination externe de sauvegarde toujours en attente (KF-09). ROLLBACK : rm -rf [chemin-interne] + suppression des 3 fichiers du prototype + worktree mission/kf08-preservation ; captures production jamais modifiées (liens/copies uniquement).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T15:17:47Z", "updated_at": "2026-10-23T15:17:47Z", "revision": 1, "authoring_agent": "kf08-preservation", "tags": [], "public_url": "/rapports/pub-a5cb229b204ba9a2", "markdown_url": "/public/reports/pub-a5cb229b204ba9a2.md", "json_url": "/public/reports/pub-a5cb229b204ba9a2.json", "content_hash": "sha256:4e5c5c3357da39318f98aca93e3979da8fe849952e93d0374c07a412b201dd9b", "artifacts": []}, {"schema_version": "1.0", "id": "pub-bc25d46422a29389", "project_id": "kf10-federation", "mission_id": null, "title": "KF-10 : fédération des mémoires, provenance et graphe temporel (RM-028 / RC-028)", "summary": "Phase 2 Knowledge Fabric : module kf_federation v0.1 sur le noyau kf_core (branche mission/kf10-federation, rebase mission/kf07-integration 1b6e356) — catalogue fédéré (6 adaptateurs lecture-seule : RM/RC coffre, coordination.db, publications.jsonl, memory.db agent privé, Git, collection synthétique) ; import idempotent (dédup version native, append-only) ; espaces logiques + slugs réservés ; graphe temporel (9 relations, from/to_version, bitemporalité) ; statut épistémique DÉRIVÉ (degraded/validated/contradicted) ; registre des transformations + protection des dérivés ; défaut D-4 noyau corrigé (kf_activity_input PK→UNIQUE NULLS NOT DISTINCT). Critère final RENCONTRÉ : 5 questions cibles sur sources réelles base kf10_demo (~700 objets, 0,9 s), zéro embedding, zéro LLM. 63 tests PASS. NON déployé en production (décision opérateur) ; rollback additif.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T15:29:31Z", "updated_at": "2026-10-23T15:29:31Z", "revision": 1, "authoring_agent": "kf10-federation", "tags": [], "public_url": "/rapports/pub-bc25d46422a29389", "markdown_url": "/public/reports/pub-bc25d46422a29389.md", "json_url": "/public/reports/pub-bc25d46422a29389.json", "content_hash": "sha256:8eed198863a157f4baa37234057f0e9f8a0c4a25ece34439173df0a24682b41e", "artifacts": []}, {"schema_version": "1.0", "id": "pub-733cb7ecdd9c61e8", "project_id": "kf-12", "mission_id": null, "title": "Sauvegarde .bak — /home/bak (25 projets, 0700/0600, manifeste sha256 vérifié) — RM-033/RC-033", "summary": "Demande opérateur exécutée : [chemin-interne] créé (root:root drwx------) et une version de chaque projet archivée en <projet>.bak (tar.gz rw-------) — 24 projets [chemin-interne] + [chemin-interne], ~2,2 GiB, MANIFEST.sha256 vérifié (sha256sum -c), 25/25 archives lisibles (tar -tzf). [chemin-interne] est hors périmètre Obsidian Sync (rien ne part vers le téléphone). Sécurité = permissions strictes + manifeste d'intégrité ; PAS de chiffrement ni de destination externe (cohérent avec le blocage C7/R3 KF-09 : décision opérateur déjà requise). webui.bak : fichier modifié pendant lecture (travail simultané d'un autre agent) — archive lisible, revérifiée. Rollback : rm -rf [chemin-interne] (copie purement additive). Rapport : RM-033/RC-033.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T16:39:07Z", "updated_at": "2026-10-23T16:39:07Z", "revision": 1, "authoring_agent": "kf-12", "tags": [], "public_url": "/rapports/pub-733cb7ecdd9c61e8", "markdown_url": "/public/reports/pub-733cb7ecdd9c61e8.md", "json_url": "/public/reports/pub-733cb7ecdd9c61e8.json", "content_hash": "sha256:f0d953d330d552715165f53d9c1f2e9447c3a7b618c16c7b1ede5d29cef8fe99", "artifacts": []}, {"schema_version": "1.0", "id": "pub-eb2fff97c58aa679", "project_id": "kf13-scientific", "mission_id": null, "title": "KF-13 — mémoire scientifique du Knowledge Fabric : multimodal, registre des transformations, reproductibilité (RM-031 / RC-031)", "summary": "MISSION KF-13 livrée (prototype intégral, rien déployé en prod). CHANGÉ : branche mission/kf13-scientific (c89ff9e, worktree [chemin-interne]) — 10 docs docs/architecture/knowledge-fabric/phase-2/scientific-memory/ ; code kf13_scimem/ : adaptateurs multimodaux (10 familles + binaire inconnu, conservation d'abord, extraction AUCUNE par défaut), segments anti-dérive (ancres typées/bornées, sha re-haché), registre des transformations (13 champs, config/env hachés, rejeu append-only → confirmed par identité de sorties), registre expérimental (Experiment/Run/Metric/Eval, échecs conservés), espaces vectoriels CONTRACT ONLY (aucun vecteur, pas de pgvector), politiques 3 modes + quotas obligatoires (max_concurrent). Tables kf_sci_* ADDITIVES (migration 010) ; bases PG dédiées kf13_sci/kf13_sci_test. TESTÉ : bancs 12/12 PASS (pytest, S1-S13) ; démo console 138 ms : 4 originaux retracés depuis la conclusion SANS aucun embedding (critère final), rejeux confirmed, corpus déterministe. DÉFAUT NOYAU découvert in vivo : kf_activity_input PK NOT NULL contredit _activity() du noyau — correctif additif 010 §7 posé, fix à remonter au propriétaire KF-03/07. PARTIAL : pas d'API HTTP kf13 (jalon M2), scheduler/déclencheurs = M3 (bwrap), aucun espace provisionné, banc comparatif Memory Lab = mission ultérieure. ROLLBACK : drop des bases kf13_* + rôle kf13 + branche (tables kf_sci_* uniquement dans ces bases) + worktree. Réf : RM-031 (coffre Conjoineur) et RC-031 (rapport complet publié).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T16:05:14Z", "updated_at": "2026-10-23T16:05:14Z", "revision": 1, "authoring_agent": "kf13-scientific", "tags": [], "public_url": "/rapports/pub-eb2fff97c58aa679", "markdown_url": "/public/reports/pub-eb2fff97c58aa679.md", "json_url": "/public/reports/pub-eb2fff97c58aa679.json", "content_hash": "sha256:01d0014a54f54b40cf86fa12c431f5ea0ab47b8675914b2bd23ca4e6f1dcde06", "artifacts": []}, {"schema_version": "1.0", "id": "pub-313fc8f19edaf11f", "project_id": "kf11-broker-orchestrator", "mission_id": null, "title": "KF-11 Context Broker — autorisation avant pertinence, distribution durable, continuité mémoire (RM-032 / RC-032)", "summary": "Context Broker intégrable au Knowledge Fabric livré en prototype isolé (branche mission/kf11-broker, commit ef67ee4, 25 fichiers, NON fusionné). Principe central encodé en code : identité authentifiée → préfiltre d'autorisation SQL AVANT toute recherche → planner 100 % déterministe (7 stratégies, navigation relationnelle bidirectionnelle, zéro LLM) → budget de tokens → contexte structuré (versions exactes, épistémique, contradictions, raisons de sélection). Abonnements (agent,mission) déterministes avec permission revérifiée à la distribution ; distribution durable réutilisant le patron convoyeur (UNIQUE agent+kind+ref + acked_at) : idempotence, curseurs monotones, reprise sans perte silencieuse (alertes de retard), invalidations priority critical. 5 projections scopées reconstruisibles bit-à-bit, [data] uniquement, jamais prompt système. Continuité : reprise avec détection d'obsolescence, fin de mission = archivage RESEARCH_EVIDENCE sans suppression. Consolidation = propositions séparées des connaissances approuvées, route LLM désactivée (NOT EXECUTED). Tests : scénario obligatoire 9 étapes + interruptions + concurrence + contamination hostile = 15/15 PASS. Le coordinateur socle reste seul maître du cycle des missions. Rollback : suppression worktree+branche.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T16:24:01Z", "updated_at": "2026-10-23T16:24:01Z", "revision": 1, "authoring_agent": "kf11-broker-orchestrator", "tags": [], "public_url": "/rapports/pub-313fc8f19edaf11f", "markdown_url": "/public/reports/pub-313fc8f19edaf11f.md", "json_url": "/public/reports/pub-313fc8f19edaf11f.json", "content_hash": "sha256:8ac01d4ec2635e224716a67f9fae696ab40b8995a1452fa30a4fd6d1ccb45b43", "artifacts": []}, {"schema_version": "1.0", "id": "pub-95abb04bc5fcdcd6", "project_id": "kf14-webui", "mission_id": null, "title": "KF-14 — Knowledge Fabric dans la WebUI : bibliothèque, provenance, mémoires, supervision, frontière publique/privée (RM-034/RC-034)", "summary": "Branche mission/kf14-webui (base kf10-federation) : proxy noyau /internal/v1/kf + pages /knowledge (bibliothèque, détail=versions+provenance W3C-PROV+liens), /knowledge/memoires, /knowledge/supervision, annotations humaines append-only, module redaction (chantier F : garde publications + CLI expurgation + modèle deux vues). Tests : suite 511 PASS (43 tests KF nouveaus), smoke intégration réelle noyau+PG 15 PASS, e2e navigateur 74 PASS / 0 FAIL (mobile 390x844 inclus). Constat sécurité : les RC (~27 rapports complets) étaient publiés intégralement via publish-md — politique revue en chantier F (RC = archive privée), purge/gabarits = décision opérateur. Livrables : docs/architecture/knowledge-fabric/phase-2/webui/ (11). Détails : coffre RM-034 (synthèse, publiée) et RC-034 (archive privée).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T16:56:43Z", "updated_at": "2026-10-23T16:56:43Z", "revision": 1, "authoring_agent": "kf14-webui", "tags": [], "public_url": "/rapports/pub-95abb04bc5fcdcd6", "markdown_url": "/public/reports/pub-95abb04bc5fcdcd6.md", "json_url": "/public/reports/pub-95abb04bc5fcdcd6.json", "content_hash": "sha256:bde5e3171a3b2eda96f600d47b17002ec353507d4c07ee352cda195d5c2c8c0d", "artifacts": []}, {"schema_version": "1.0", "id": "pub-33209025c1d5bb0c", "project_id": "kf15-integrateur", "mission_id": null, "title": "KF-15 CONDITIONAL GO — phase 2 Knowledge Fabric intégrée et validée (RM-036/RC-036)", "summary": "Branche mission/kf15-integration : 8 fusions (kf05/07/08/09/11/12+lab-01/13/data-01 sur kf14), 0 régression — 441 webui + 74 e2e + 54 kfq + tranche verticale 353/353 sur snapshot socle frais + critère fédération re-prouvé (provenance 0,45 ms) + PCAP 69/69 LIVE. Capacités : 2 READY, 7 READY WITH CONDITIONS, 4 EXPERIMENTAL ONLY, 3 DEFERRED, 1 BLOCKED (sauvegarde externe, opérateur). Déploiement : aucune prod touchée ; plan d'activation en vagues canary + rollback (docs/architecture/knowledge-fabric/phase-2/integration/, commit 6ddc702).", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T18:35:08Z", "updated_at": "2026-10-23T18:35:08Z", "revision": 1, "authoring_agent": "kf15-integrateur", "tags": [], "public_url": "/rapports/pub-33209025c1d5bb0c", "markdown_url": "/public/reports/pub-33209025c1d5bb0c.md", "json_url": "/public/reports/pub-33209025c1d5bb0c.json", "content_hash": "sha256:9242203f75db9597008bcd7610eb1124f0aec9dd317880d9c288e76926b79ec0", "artifacts": []}, {"schema_version": "1.0", "id": "pub-6bff447709f0901d", "project_id": "kf-lab-01-reprise", "mission_id": null, "title": "KF-LAB-01 (RM-037/RC-037) — reprise du mandat : livraison vérifiée in vivo (17/17) + réparation de 2 livrables corrompus", "summary": "Le mandat KF-LAB-01 (laboratoires de sécurité, profils de capacités, isolation bwrap/netns, labctl) avait été déjà livré le 2026-10-23 (RM-022/RC-022, pub-06178c848348c6ac). Reprise de mission faite en VÉRIFICATION : 9/9 livrables présents sur la branche isolée mission/kf-lab-01 ; banc e2e repassé aujourd'hui 17/17 PASS (scénario Axe F complet + épreuves négatives) ; publications hub confirmées (pub-9c7abbdf679abe87 security_lab accepted) ; artefacts Z4 présents. DÉFAUT découvert : 2 livrables (lab-topology.md, research-permissions.md) corrompus ligne à ligne par un préfixe parasite '| adaptations ci-dessus' (167 lignes, présent dès le commit initial 6a8d12f) → réparés (commit c6ca5e9, structure titres revalidée, aucun contenu retiré). Reste inchangé (PARTIAL, jalon M1 opérateur) : egress bridge, quotas cgroups v2, séparation comptes Unix ; réparation non fusionnée dans master. Vérifier : LAB_ROOT=[chemin-interne] python3 lab/test_e2e.py ; grep -c 'adaptations ci-dessus' lab-topology.md → 0. Rollback : git -C [chemin-interne] revert c6ca5e9.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T20:50:02Z", "updated_at": "2026-10-23T20:50:02Z", "revision": 1, "authoring_agent": "kf-lab-01-reprise", "tags": [], "public_url": "/rapports/pub-6bff447709f0901d", "markdown_url": "/public/reports/pub-6bff447709f0901d.md", "json_url": "/public/reports/pub-6bff447709f0901d.json", "content_hash": "sha256:5d9b956068a83bc31c38b4e9cfd3940d15c0f4b35ffdd451dfebb305bc44c59d", "artifacts": []}, {"schema_version": "1.0", "id": "pub-579ee95453eab65f", "project_id": "kf-pcap-guard", "mission_id": null, "title": "Final report RM-039/RC-039 — fin de la perte PCAP (kf-pcap-watch Stade 2 activé)", "summary": "Suite KF-DATA-01 : GO opérateur exécuté. Daemon systemd kf-pcap-watch ACTIVÉ (réservation par lien matériel + hachage + archivage vérifié AVANT écrasement du ring dumpcap) + cron manifeste 6h. Rattrapage : 81 captures confirmées (12 ce jour), 0 perdues, 0 échecs. 33/33 tests. Changements : [chemin-interne], [chemin-interne], [chemin-interne] AUCUNE modification du ring/dumpcap. Reste : 10 captures historiques irrécupérables (prouvées par baseline) ; backup externe toujours absent (priorité 1 opérateur). Rollback : systemctl disable --now kf-pcap-watch + rm unités/cron/publication.", "body": "", "status": "published", "report_type": "final_report", "published_at": "2026-10-23T21:51:45Z", "updated_at": "2026-10-23T21:51:45Z", "revision": 1, "authoring_agent": "kf-pcap-guard", "tags": [], "public_url": "/rapports/pub-579ee95453eab65f", "markdown_url": "/public/reports/pub-579ee95453eab65f.md", "json_url": "/public/reports/pub-579ee95453eab65f.json", "content_hash": "sha256:72e42b55831bfb542ca8b9ade557115f5ced4bfe41e935d0cec5f726c572e54f", "artifacts": []}]}