Riferimento tecnico pubblico · v1.0

Schema del manifest del bundle di evidenze dell’agente IA

Un manifest del bundle di evidenze identifica l’esportazione sigillata, l’ambito del tenant, gli artefatti conservati, la radice Merkle, i collegamenti ai record e gli ancoraggi di integrità. Usalo quando un’esportazione dalla evidence room passa tra KLA e un verificatore offline.

Specifica del bundle · evidence-room-bundle-v1 · formato manifest 1.0

Riferimento rapido del manifest del bundle di evidenze

Definizione
Il record di sigillo manifest.json per un bundle di evidenze esportato.
Usato quando
Un’esportazione sigillata viene ispezionata, trasferita o verificata offline.
Minimo necessario
Identità, metadati di esportazione, digest degli artefatti, radice Merkle e ancoraggi di integrità.
Verifica
Normalizza, calcola l’hash, verifica le firme, controlla l’inclusione degli artefatti ed esegue gli ancoraggi applicabili.

02

Posizione del manifest nel bundle

L’esportatore scrive una directory con un riepilogo, il manifest, JWS separato, chiavi pubbliche incorporate, prova con marca temporale, ancoraggio nel registro e artefatti esportati.

  1. 01Riepilogo del sigillobundle.json registra gli identificatori di esportazione e tenant, il digest del manifest, la radice Merkle, il numero di artefatti, le classi di firmatari richieste, la ricevuta della marca temporale e i percorsi dell’ancoraggio nel registro.
  2. 02Manifestmanifest.json registra metadati di esportazione, percorsi e digest degli artefatti, il collegamento ai record, metadati Merkle, metadati di redazione e omissione e ancoraggi di integrità.
  3. 03Materiale crittograficomanifest.jws.json contiene firme ES256 separate sul digest del manifest. keys/jwks.json fornisce chiavi pubbliche incorporate per i controlli offline.
  4. 04Byte delle evidenzeartifacts/exports contiene file JSON, CSV o PDF esportati. artifacts/index/artifact_index.json indicizza l’insieme esportato.
  5. 05Ancoraggi esternitimestamp.ots contiene la prova OpenTimestamps. ledger_anchor.json contiene l’ancoraggio immudb o il record NOT_PRESENT del produttore.
<bundle-dir>/
  bundle.json
  manifest.json
  manifest.jws.json
  keys/jwks.json
  timestamp.ots
  ledger_anchor.json
  artifacts/exports/...
  artifacts/index/artifact_index.json

03

Dizionario dei campi

I campi obbligatori provengono dal contratto corrente del bundle sigillato. I campi condizionali compaiono quando il produttore registra l’ambito corrispondente o il dettaglio di Evidence Factory. I campi facoltativi aggiungono contesto all’esportazione.

Identità del bundle ed esportazione

CampoStatoScopo
formatVersionObbligatorioSeleziona il formato del manifest sigillato; il produttore corrente emette 1.0.
bundleSpecObbligatorioIdentifica evidence-room-bundle-v1.
exportIdObbligatorioAssocia il manifest a una sola esportazione.
tenantIdObbligatorioIndica l’ambito del tenant incluso nell’esportazione.
createdAtObbligatorioRegistra quando è stato creato il record di esportazione.
exporter.nameObbligatorioIdentifica l’esportatore che ha prodotto il bundle.
exporter.versionObbligatorioIdentifica la versione dell’esportatore.
export.exportIdObbligatorioDeve corrispondere a exportId di primo livello.
export.tenantIdObbligatorioDeve corrispondere a tenantId di primo livello.
export.environmentObbligatorioRegistra l’etichetta dell’ambiente di origine.
export.platformVersionObbligatorioRegistra la versione della piattaforma fornita dal produttore.
export.requestedByObbligatorioRegistra il riferimento al richiedente dell’esportazione.
export.requestedAtObbligatorioRegistra l’ora della richiesta di esportazione.
export.sealedAtObbligatorioRegistra quando è stato scritto il sigillo.
export.traceIdsObbligatorioContiene riferimenti di tracciamento associati all’esportazione.
export.policySnapshotsObbligatorioContiene riferimenti alle istantanee delle policy selezionate dall’esportatore.

Artefatti e collegamenti

CampoStatoScopo
artifacts[]ObbligatorioElenca ogni artefatto esportato coperto dalla radice Merkle.
artifacts[].pathObbligatorioRisolve l’artefatto nella directory del bundle.
artifacts[].sha256ObbligatorioIndica il digest SHA-256 dei byte dell’artefatto.
artifacts[].bytes or sizeBytesObbligatorioConsente al verificatore di confrontare la dimensione dichiarata con il file.
artifacts[].contentTypeObbligatorioDescrive il tipo di contenuto del file esportato.
artifacts[].classFacoltativoEtichetta una classe di artefatti come execution-evidence o artifact-index.
artifacts[].provenanceFacoltativoContiene metadati di provenienza del produttore per l’artefatto.
artifacts[].createdAtFacoltativoRegistra quando è stato creato l’artefatto.
artifacts[].sourceFacoltativoCollega l’artefatto a un tipo e a un riferimento di origine.
record.decisionRequestIdFacoltativoCollega il bundle alla richiesta di decisione che lo governa.
record.executionIdFacoltativoCollega il bundle a un’esecuzione.
record.lineageRecordIdFacoltativoCollega il bundle alla lineage dell’esecuzione.
scopeFacoltativoDescrive la popolazione dell’esportazione o il limite temporale, se fornito.
profileFacoltativoRegistra il profilo di evidenze selezionato dal produttore: completo, con redazioni o minimo.
omissionsFacoltativoRegistra le omissioni dichiarate.
redactionsFacoltativoRegistra i metadati di redazione dichiarati.

Sigillo ed evidenze di governance condizionali

CampoStatoScopo
merkle.algorithmObbligatorioIdentifica kla-merkle-v1.
merkle.rootSha256ObbligatorioImpegna l’insieme ordinato di percorsi e digest degli artefatti.
integrity.manifestHashAlgoObbligatorioIdentifica SHA-256 per il digest del manifest.
integrity.manifestHashObbligatorioMemorizza il digest esadecimale grezzo del manifest normalizzato.
integrity.signatureAlgoObbligatorioIdentifica l’algoritmo di firma del manifest, attualmente ES256.
integrity.signaturePayloadObbligatorioIndica che il payload della firma è MANIFEST_HASH.
integrity.signingKeyIdObbligatorioIdentifica il riferimento alla chiave di firma del produttore.
integrity.anchors[]ObbligatorioElenca i record di ancoraggio temporale e del registro.
evidenceFactory.request.requestedArtifactsCondizionaleDetermina se receipt-signatures e ledger-hash-chain sono obbligatori.
evidenceFactory.contractVersionCondizionaleIdentifica il contratto di richiesta Evidence Factory quando una richiesta della factory è incorporata.
evidenceFactory.request.tenantIdCondizionaleContiene l’associazione al tenant per la richiesta Evidence Factory incorporata.
evidenceFactory.request.actorCondizionaleIdentifica l’attore umano o di servizio che ha richiesto l’esportazione della factory.
evidenceFactory.request.sourceCondizionaleIdentifica la superficie KLA che ha richiesto l’esportazione della factory.
evidenceFactory.request.scopeCondizionaleContiene la cronologia e i selettori usati per l’esportazione della factory.
evidenceFactory.request.redactionProfileCondizionaleIndica il profilo di redazione dell’esportazione della factory.
evidenceFactory.request.idempotencyKeyCondizionaleContiene la chiave di idempotenza della richiesta.

04

Esempio minimo completo

Questo manifest sintetico usa lo stesso identificatore di esportazione e gli stessi collegamenti ai record del riferimento di esecuzione completo. Il riepilogo complementare del bundle ripete i valori del sigillo confrontati dal verificatore.

{
  "bundle": {
    "exportId": "bundle_manifest_synthetic_20260721_01",
    "tenantId": "tenant_synthetic_001",
    "manifestDigestSha256": "1bae725ba61cf55f94310e37ee491d3d52145d98da8580df63e0b91fa9968117",
    "merkleRootSha256": "cb170b4d42403ed97c4818a723ebd93607902a84159deb4555357bc73a432102",
    "artifactCount": 2
  },
  "manifest": {
    "formatVersion": "1.0",
    "bundleSpec": "evidence-room-bundle-v1",
    "record": {
      "decisionRequestId": "dr_01JZ8V4Q4N9K6T2D5B3M7X1S0E",
      "executionId": "run_01JZ8V4K2D9A6N3P7M5R1C8X0E",
      "lineageRecordId": "lin_01JZ8V4R8A2C6N9Q3S5D7M1T0E"
    },
    "artifacts": [
      {
        "path": "artifacts/exports/evidence-export-synthetic.json",
        "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
        "bytes": 128,
        "sizeBytes": 128,
        "contentType": "application/json",
        "class": "execution-evidence",
        "source": {
          "type": "synthetic",
          "ref": "run_01JZ8V4K2D9A6N3P7M5R1C8X0E"
        }
      },
      {
        "path": "artifacts/index/artifact_index.json",
        "sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
        "bytes": 64,
        "sizeBytes": 64,
        "contentType": "application/json",
        "class": "artifact-index",
        "source": {
          "type": "synthetic",
          "ref": "bundle_manifest_synthetic_20260721_01"
        }
      }
    ],
    "integrity": {
      "manifestHashAlgo": "SHA-256",
      "manifestHash": "1bae725ba61cf55f94310e37ee491d3d52145d98da8580df63e0b91fa9968117",
      "signatureAlgo": "ES256",
      "signaturePayload": "MANIFEST_HASH",
      "signingKeyId": "sample-key-sek-synthetic-01",
      "anchors": [
        {
          "type": "immudb",
          "status": "NOT_PRESENT",
          "reason": "IMMUDB_DISABLED",
          "ledger": "immudb",
          "proofPath": "ledger_anchor.json",
          "valueHash": ""
        },
        {
          "type": "ots",
          "status": "PRESENT",
          "proofPath": "timestamp.ots"
        }
      ]
    }
  }
}

Valid seal values

The manifest digest is 1bae725ba61cf55f94310e37ee491d3d52145d98da8580df63e0b91fa9968117. The Merkle root is cb170b4d42403ed97c4818a723ebd93607902a84159deb4555357bc73a432102.

Cross-reference

The record fields and export identifier connect this file to the complete sanitized execution record and its evidence.manifest_ref.

Download the companion bundle summary

05

Integrità e verifica offline

Il verificatore di produzione tratta i byte del bundle e i manifest come input non attendibile e interrompe la verifica quando un controllo obbligatorio non riesce. La procedura prevede sei controlli identificati.

manifest-signature

Firma del manifest

Normalizza il manifest, calcola il digest JCS/SHA-256, confronta i riepiloghi del manifest e del bundle, controlla il payload separato, convalida le firme ES256 SEK e TEK rispetto alle chiavi incorporate non revocate e convalida i percorsi di ancoraggio dichiarati.

receipt-signatures

Firme delle ricevute

Quando è presente materiale di governance EvidenceEntry[], verifica le firme delle ricevute Ed25519, le chiavi incorporate, lo stato di revoca e i collegamenti prevReceiptHash. Il materiale delle ricevute senza firma segue il percorso esplicito per ricevute non firmate del verificatore.

ledger-hash-chain

Catena di hash del registro

Quando è presente materiale di governance EvidenceEntry[], ricalcola gli hash dei record del registro, applica le trasformazioni di redazione registrate, controlla gli hash delle voci e richiede un componente del registro connesso.

merkle-inclusion

Inclusione Merkle

Risolve ogni percorso dichiarato all’interno del bundle, confronta dimensione del file e SHA-256, ricalcola kla-merkle-v1, controlla le prove di inclusione quando fornite e confronta radice e numero di artefatti con bundle.json.

ots-anchor

Ancoraggio OpenTimestamps

Analizza timestamp.ots, confronta il suo impegno SHA-256 con il digest del manifest e accetta una prova di calendario in sospeso o un’attestazione Bitcoin entro il confine di attendibilità del verificatore offline.

pii-absence

Assenza di PII

Viene eseguito solo quando il chiamante fornisce marcatori vietati. Analizza i file del bundle come byte, riporta digest mascherati dei marcatori e non riesce quando un file elencato o il manifest non può essere letto.

Valid synthetic manifest

The declared digest reproduces from the normalized manifest. The declared Merkle root is computed from the two sorted artifact entries. A complete on-disk bundle supplies the bytes and detached signatures for the remaining checks.

Single artifact-digest tamper

The tampered file changes one artifact sha256 from the valid example while retaining the original manifest digest and Merkle root. The manifest remains schema-valid. Digest comparison fails, and the full merkle-inclusion check also compares the declaration with the artifact bytes.

  1. 01Leggi bundle.json, manifest.json, manifest.jws.json, keys/jwks.json e i file di ancoraggio dichiarati dalla directory del bundle.
  2. 02Convalida la struttura del manifest e conserva ogni percorso nella directory del bundle.
  3. 03Svuota i campi integrity.manifestHash e valueHash dell’ancoraggio immudb, canonicalizza con l’ordinamento in stile JCS dell’esportatore e calcola SHA-256.
  4. 04Confronta il digest calcolato con manifest.json, bundle.json e il payload JWS separato. Verifica le firme ES256 SEK e TEK con le chiavi pubbliche incorporate.
  5. 05Determina se sono necessari i controlli delle evidenze di governance: un array requestedArtifacts mancante, execution-evidence o raw-evidence, file di evidenze trovati nel bundle oppure errori di caricamento delle evidenze attivano receipt-signatures e ledger-hash-chain.
  6. 06Esegui i sei controlli nell’ordine del verificatore. Un chiamante può aggiungere marcatori vietati per il controllo pii-absence facoltativo. Il bundle supera la verifica solo quando ogni controllo applicabile riesce.

06

Mappatura dell’implementazione KLA corrente

Queste sorgenti del repository definiscono il produttore, il contratto del manifest, il verificatore e i singoli controlli descritti qui.

ContractRepository source pathMappingStatus
BundleManifest / BundleJsonpackages/evidence-verifier/src/types.tsDefinisce le strutture per manifest, riepilogo, artefatto, ancoraggio, record, JWS, JWKS, controllo e verifica.Sorgente corrente
Contratto del manifest sigillatopackages/evidence-contract/src/index.tsConvalida i campi obbligatori del produttore per formatVersion, esportazione, artefatto, Merkle, record e integrità.Sorgente corrente
Produttore del bundleservices/evidence-exporter/src/export-api.tsScrive bundle.json, manifest.json, JWS separato, JWKS, prova OTS, ancoraggio nel registro e indice degli artefatti.Produttore corrente
Orchestrazione della verificapackages/evidence-verifier/src/verifier.tsCarica byte non attendibili, sceglie i controlli condizionali e interrompe la verifica sull’insieme di risultati applicabile.Verificatore corrente
Controlli del manifest e Merklepackages/evidence-verifier/src/checks/manifest-signature.ts; packages/evidence-verifier/src/checks/merkle-inclusion.tsVerifica coerenza di digest, firme e riepilogo e i byte, percorsi, dimensioni, hash e radice degli artefatti.Controlli correnti
Controlli delle evidenze e degli ancoraggipackages/evidence-verifier/src/checks/receipt-signatures.ts; packages/evidence-verifier/src/checks/ledger-hash-chain.ts; packages/evidence-verifier/src/checks/ots-anchor.ts; packages/evidence-verifier/src/checks/pii-absence.tsVerifica le evidenze condizionali di ricevute e registro, oltre a OTS e alle scansioni facoltative dei marcatori.Controlli correnti

Deliberate abstractions

  • Lo schema scaricabile convalida manifest.json. Il riepilogo bundle.json separato è descritto nello stesso schema in $defs.bundleJson e viene confrontato dal verificatore di produzione.
  • Gli esempi sintetici contengono metadati del manifest e digest degli artefatti. Non includono byte degli artefatti, firme JWS, JWKS, byte della prova OTS o file di ancoraggio nel registro.
  • Il verificatore di riferimento calcola il digest del manifest normalizzato e accetta una firma ES256 separata facoltativa. packages/evidence-verifier rimane il verificatore di produzione per il bundle completo su disco.
  • La pagina descrive il comportamento condizionale di receipt-signatures e ledger-hash-chain. Un esempio di integrità autonomo per firma mancante o versione non supportata rimane rinviato dalla decisione del fondatore.
  • Il manifest contiene gli identificatori del tenant e dell’esportazione. La verifica del bundle confronta questi identificatori; autorizzazione, isolamento del tenant al momento della richiesta e decisioni sulla conservazione legale restano responsabilità dei servizi e delle policy che ne sono proprietari.
  • Il controllo pii-absence richiede marcatori forniti dal chiamante. Il risultato di verifica predefinito non formula alcuna dichiarazione universale sull’assenza di PII.

Implementation source

The links above point to the current repository contract, exporter, and verifier. The documentation-layer reference helper lives at /ai-agent-evidence-bundle-manifest/v1/verify.ts; the production procedure remains the package verifier.

Open the production verifier source

07

Questions readers ask

The implementation boundary stays visible in the answers below.

Qual è la differenza tra bundle.json e manifest.json?

bundle.json è il breve riepilogo del sigillo. manifest.json è il manifest completo dell’esportazione con voci degli artefatti, collegamenti ai record, metadati dell’ambito e ancoraggi di integrità. Il verificatore confronta gli identificatori condivisi, il digest, la radice Merkle e il numero di artefatti.

Quando sono obbligatori receipt-signatures e ledger-hash-chain?

Il verificatore li richiede quando la evidence factory richiede execution-evidence o raw-evidence, quando manca il campo requested-artifacts oppure quando sono presenti file di evidenze o errori di caricamento delle evidenze. Un bundle senza questi segnali riceve risultati espliciti non obbligatori per i due controlli.

Un manifest valido prova che ogni decisione di accesso al tenant è stata autorizzata?

Il manifest associa l’esportazione al tenant dichiarato e ai riferimenti ai record. Le decisioni di autorizzazione e isolamento del tenant sono valutate dai servizi che creano ed espongono i record. Il verificatore del bundle controlla la coerenza interna e l’integrità del bundle sigillato.

Che cosa dimostra l’esempio manomesso?

Modifica uno sha256 di un artefatto mantenendo la radice Merkle e il digest del manifest originali. Il manifest resta strutturalmente valido, mentre il confronto del digest non riesce. Una verifica completa su disco confronta anche la dichiarazione modificata con i byte dell’artefatto e la radice Merkle.

Il verificatore contatta OpenTimestamps o un registro?

I controlli offline analizzano i file locali di timestamp e ancoraggio nel registro. Il controllo OTS può riconoscere strutture di prova in sospeso o attestate da Bitcoin. La conferma di rete appartiene a una procedura operativa separata.

Related references

Follow one governed action through its records.

Start with the action request, policy decision, approval, and audit event schemas. Then inspect the complete execution record and evidence-room sample.

Open the execution record
Schema del manifest del bundle di evidenze dell’agente IA