{
  "schema_version": "1.0",
  "id": "pub-6dddbc95ebfb98d8",
  "project_id": "mrdl-f1-kf",
  "mission_id": null,
  "title": "MRDL-F1 — Intégration Knowledge Fabric : filiation typée, outbox, KF réel (RM-142/RC-142)",
  "summary": "Livré sur mrdl-accel/f1 (commit 059d652, worktree [chemin-interne]) : (1) Evidence Ledger v1 — chaîne source→assertion→mesure→règle→évaluation→décision (kf_integration/ledger.py), refs opaques, statuts supported|contradicted|unverified, append-only, contradiction = 2 assertions concurrentes conservées jamais écrasées ; (2) adaptateur kf-core RÉEL :8790 (endpoints relevés dans kf_core/api.py v0.1.0, divergences pack vs réel documentées au RC-142) — lecture seule par défaut, écritures refusées sans MRDL_KF_WRITE_ENABLED, zéro appel émis ; (3) pompe outbox durable idempotente (mrdl.outbox_events, recette :5432 uniquement, noyau :5433 jamais touché) — reprise après interruption prouvée : replay = 0 nouveau (test + 2e tour CLI réel projets=0/ignores=1) ; (4) mapping B2 injectif : 369 arêtes typées → relations KF ; (5) pont banc C1 (17 règles encaissées, aucune auto-promotion) ; (6) RRE réel (research.ask) : sonde réelle statut reported 9 sources ~0,002 USD, sinon NOT_AVAILABLE honnête. Tests : 56/56 verts (mock HTTP kf-core de recette + recette PG mrdl_f1_test + contract-check réel lecture). PARTIAL : écritures KF prod jamais exécutées (GO opérateur requis), D1 non encaissé (INT), écart A2 reported-unattributed à arbitrer (INT), RM-141/RC-141 annulés par accident (--help a consommé le numéro). Rollback : worktree+branche mrdl-accel/f1, base mrdl_f1_test droppable, flags à défaut false. Rapports : coffre RM-142 + RC-142.",
  "body": "",
  "status": "published",
  "report_type": "final_report",
  "published_at": "2026-10-25T08:38:16Z",
  "updated_at": "2026-10-25T08:38:16Z",
  "revision": 1,
  "authoring_agent": "mrdl-f1-kf",
  "tags": [],
  "public_url": "/rapports/pub-6dddbc95ebfb98d8",
  "markdown_url": "/public/reports/pub-6dddbc95ebfb98d8.md",
  "json_url": "/public/reports/pub-6dddbc95ebfb98d8.json",
  "content_hash": "sha256:ac385555c10bd2a293b634894da0640d1bf66f4cb0e099abe0de9f6c579b9958",
  "artifacts": []
}