{
  "schema_version": "1.0",
  "id": "pub-8f3d6334b0cddfae",
  "project_id": "memory-hub",
  "mission_id": null,
  "title": "Corpus HTTP DÉCHIFFRÉ avec CORPS (requêtes + réponses) — prêt pour RNN (ADR-0008 v1.2)",
  "summary": "DEMANDE : enregistrer le CORPS des requêtes HTTP — corpus destiné à un RNN.\n\nCHANGÉ/OÙ — commits b2ca4c2 + body-fix : observatory-loopback.service en snaplen 0 (paquets complets, ring 8×50 Mo) ; summarize_http_fn FUSIONNE par flux TCP : une ligne = requête (méthode/URI/hôte/IP-externe-XFF) + réponse (statut/content-type) + CORPS ; decode_body : tshark exporte le file_data en HEXME BRUT (découvert en prod) → décodage + borne 16 Ko/ligne ; binaires (images/png ≥1 Mo) = hors corpus (hash seul) ; table + columns content_type/body/body_len (migration additive) ; ROUTE export corpus : GET /internal/v1/observatory/corpus?limit=2000 (JSONL chronologique, ADMIN SEUL — entraînement prêt) ; re-extraction complète (reset curseur + purge mes lignes anciennes, migration assumée).\nTESTÉ — 241/241 + 1 skip (fusion par flux, statut du flux de la réponse, corps borné, binaire hashé, export admin, anonyme refusé) ; e2e prod : 138 lignes / 131 AVEC CORPS (30 Ko) — POST hooks/stop {\"nudge\":false}, publications idempotence… corps de requête ET réponse présents.\nRESTE — corps ≤ 16 Ko par ligne (plus longs = «…[tronqué]» — suffisant pour le RNN en séries courtes ; augmenter la borne = 1 constante) ; TLS entrant reste des métadonnées (le contenu passe par le segment loopback) ; binaires exclus du corpus ; l'XFF reste vide sur appels loopback directs (agents) — visiteurs externes = IP réelle via caddy.\nVÉRIFIER — GET /internal/v1/observatory/corpus?limit=5 (admin) ; ./.venv/bin/python -c \"import sqlite3; ... observatory_http\" ; /observatoire (section HTTP, sans corps — privés par API). ANNULER — git revert b2ca4c2 + reset done_files_lo + purge observatory_http + service snaplen précédent.",
  "body": "",
  "status": "published",
  "report_type": "final_report",
  "published_at": "2026-10-22T09:05:49Z",
  "updated_at": "2026-10-22T09:05:49Z",
  "revision": 1,
  "authoring_agent": "memory-hub",
  "tags": [],
  "public_url": "/rapports/pub-8f3d6334b0cddfae",
  "markdown_url": "/public/reports/pub-8f3d6334b0cddfae.md",
  "json_url": "/public/reports/pub-8f3d6334b0cddfae.json",
  "content_hash": "sha256:b6ae1692b98ab571634339d60b637e02d0098bb98253962d46807522dfd15245",
  "artifacts": []
}