{
  "schema_version": "1.0",
  "bundle_kind": "deliverable_audit_bundle",
  "created_at": "2026-09-17T12:00:00.000Z",
  "deliverable": {
    "chat_id": "chat-demo-0001",
    "content_md": "# Memo (synthetic example)\n\nThe claim is time-barred under the applicable limitation period.\n",
    "chars": 93,
    "sha256": "faa949ac296eaa2cd4e87f32b340211c2b53fc5a82834d15976a0feaaf0c1a18"
  },
  "citation_verification": {
    "summary": {
      "total": 2,
      "verified": 1,
      "unverified": 1,
      "blocked": 0
    },
    "items": [
      {
        "decision": "verified",
        "citation": "Regulation (EU) 2016/679, art. 17"
      },
      {
        "decision": "unverified",
        "citation": "Case C-000/00"
      }
    ]
  },
  "audit_log_excerpt": [
    {
      "id": 1,
      "event_type": "chat.message.sent",
      "ts": "2026-09-01T10:10:00.000Z",
      "actor_user_id": "demo-user",
      "chat_id": "chat-demo-0001",
      "document_id": null,
      "hash": "32aed30ffcbf579345abe6b59e1ff82f6eb1b95b48641d0161e52d3336015107",
      "prev_hash": "0000000000000000000000000000000000000000000000000000000000000000",
      "payload_masked": {
        "role": "user",
        "matter": "DEMO-001 - Example Holdings Ltd"
      }
    },
    {
      "id": 2,
      "event_type": "llm.request",
      "ts": "2026-09-02T10:11:00.000Z",
      "actor_user_id": "demo-user",
      "chat_id": "chat-demo-0001",
      "document_id": null,
      "hash": "9ba455062918b4a2ca094d2684d212b92b284b8b1c7ab8f19115d5af1a2fb55f",
      "prev_hash": "32aed30ffcbf579345abe6b59e1ff82f6eb1b95b48641d0161e52d3336015107",
      "payload_masked": {
        "model": "local-model",
        "entities_masked": 3
      }
    },
    {
      "id": 3,
      "event_type": "llm.response",
      "ts": "2026-09-03T10:12:00.000Z",
      "actor_user_id": "demo-user",
      "chat_id": "chat-demo-0001",
      "document_id": null,
      "hash": "44dc2e36cafab5bfdc5aeb27c29e3e03f4953d60023c4f378f5685d272721a4d",
      "prev_hash": "9ba455062918b4a2ca094d2684d212b92b284b8b1c7ab8f19115d5af1a2fb55f",
      "payload_masked": {
        "model": "local-model",
        "chars": 1920
      }
    },
    {
      "id": 4,
      "event_type": "citation.grounding",
      "ts": "2026-09-04T10:13:00.000Z",
      "actor_user_id": "demo-user",
      "chat_id": "chat-demo-0001",
      "document_id": null,
      "hash": "ec863a48649f9babe0a5f714eb190026c14648b0f445dd997f86f582dd06e48d",
      "prev_hash": "44dc2e36cafab5bfdc5aeb27c29e3e03f4953d60023c4f378f5685d272721a4d",
      "payload_masked": {
        "total": 3,
        "verified": 2,
        "note": "one citation not found in the source"
      }
    },
    {
      "id": 5,
      "event_type": "mcp_security.gateway",
      "ts": "2026-09-05T10:14:00.000Z",
      "actor_user_id": "demo-user",
      "chat_id": "chat-demo-0001",
      "document_id": null,
      "hash": "c35d222774e685c083b148f77e351f08e04bea0aec3df4bf20d15d79c875c19d",
      "prev_hash": "ec863a48649f9babe0a5f714eb190026c14648b0f445dd997f86f582dd06e48d",
      "payload_masked": {
        "connector": "mcp-eu-sparql",
        "decision": "allowed-clean"
      }
    },
    {
      "id": 6,
      "event_type": "chat.message.sent",
      "ts": "2026-09-06T10:15:00.000Z",
      "actor_user_id": "demo-user",
      "chat_id": "chat-demo-0001",
      "document_id": null,
      "hash": "3b56cae9dd52577d7049d8080beca2654f364e3447340df52cc7b8d8092f7cff",
      "prev_hash": "c35d222774e685c083b148f77e351f08e04bea0aec3df4bf20d15d79c875c19d",
      "payload_masked": {
        "role": "assistant",
        "chars": 1920
      }
    }
  ],
  "model_versions": {
    "model": "local-model",
    "patron": "demo",
    "connectors": {
      "mcp-eu-sparql": "demo"
    }
  },
  "cost_log": {
    "available": false,
    "event_count": 6
  },
  "manifest": {
    "parts": [
      {
        "name": "deliverable",
        "sha256": "35899f37a37a14f6de789e4b495a5190cbf8c350a4b44d530047069d624b32fb"
      },
      {
        "name": "citation_verification",
        "sha256": "ce590d2026137b53d6c8b6adfd498fca503208382fa9ee1256a510a14fe9565f"
      },
      {
        "name": "audit_log_excerpt",
        "sha256": "d24fdce3758ebcef4e0fab8996b51f192c8cf301ec65d2de30875658a2e57acd"
      },
      {
        "name": "model_versions",
        "sha256": "6cd35735d885c0a8a43b747bef72cd3fbe6857c6cc9013d161465d790b0a4102"
      },
      {
        "name": "cost_log",
        "sha256": "5ab461a34b1bc4c4fa8802da2b63218b69ab6024e931293aac343419dc30e1e6"
      }
    ]
  },
  "verifier_instructions": {
    "browser": "Otworz SPRAWDZ-TEN-PLIK.html z tego archiwum i wskaz mu ten plik JSON. Nie wymaga instalacji ani polaczenia z siecia.",
    "offline_cli": "python verify.py <plik.json> - weryfikator z tego archiwum, wylacznie biblioteka standardowa Pythona 3.8+. Kod wyjscia: 0 nienaruszony, 1 naruszony, 2 blad odczytu.",
    "description": "Weryfikator trzystopniowy offline: (1) manifest - SHA256 kazdej czesci (deliverable, citation_verification, audit_log_excerpt, model_versions, cost_log) wykrywa, KTORA czesc zmieniono; (2) ciaglosc ogniw prev_hash->hash w audit_log_excerpt wykrywa wpis usuniety ze srodka albo przestawiony, TEZ gdy podmieniajacy przeliczyl manifest; (3) integrity.canonical_sha256 - hash calosci wykrywa dowolna modyfikacje. Weryfikacja ze eventy nie zostaly zmienione w BAZIE wymaga osobno Merkle proof (audit-pack ADR-0047). Bundle nie wymaga dostepu do bazy kancelarii. Sprawdzenie NIE dowodzi autorstwa - do tego sluzy podpis kwalifikowany (rezerwacja ADR-0049)."
  },
  "integrity": {
    "algorithm": "SHA-256",
    "canonical_sha256": "1e2c930ae954002e6eabd551d6ab97e5be51fb39340062312d5f41e5bfc1775a"
  }
}