VerdifaX

ExecutionManifest

Pydantic model representing the full sealed manifest. The Go API serializes these fields in PascalCase; the SDK exposes them in snake_case via Pydantic field aliases — both naming styles work.

Import

from verdifax import ExecutionManifest

Fields

FieldTypeStageNotes
envelope_idstr1 (DOG)
envelope_hashstr1 (DOG)64-char hex
sequence_idstr2 (DTL)
transport_hashstr2 (DTL)64-char hex
epa_hashstr3 (DKEC)64-char hex
efa_hashstr3 (DKEC)64-char hex
execution_idsList[str]3 (DKEC)Six entries — DSE, TOK, DSC, NREP, AIVP, DCAE
aer_hashstr4 (AER)64-char hex
transcript_hashstr5 (ZKSP L7)64-char hex
hardware_attestation_hashstr5 (ZKSP L8)64-char hex; TPM2 / SEV-SNP measurement
leakage_bundle_hashstr5 (ZKSP L9)64-char hex
formal_verifier_statusstr5 (ZKSP L10)Must equal VERIFIED_SOUND_COMPLETE_ZK
zksp_binding_hashstr6 (Phase 4)64-char hex
migration_token_hashstr6 (Phase 4)64-char hex
replay_fingerprintstr6 (Phase 4)64-char hex
pote_proof_hashstr7 (Ledger)64-char hex
log_entry_idstr7 (Ledger)Rekor-style id
registry_artifact_countint8 (Registry)Should be 18
final_vfa_hashstr9 (DLA)64-char hex
independent_verifiedbool9 (DLA)Must be True for a sealed manifest
manifest_hashstr(seal)The headline 64-char hex

Methods

manifest.kernel_executions() -> dict[str, str]
# → {"DSE": "...", "TOK": "...", "DSC": "...", "NREP": "...", "AIVP": "...", "DCAE": "..."}

manifest.stages() -> list[StageResult]
# → 9-element list, one per pipeline stage

list(manifest)  # iter — same as .stages()

Validation

Constructing an ExecutionManifest via ExecutionManifest.model_validate(...) enforces:

  • execution_ids has exactly 6 entries
  • registry_artifact_count is non-negative
  • All required fields are present

Invalid responses raise Pydantic's ValidationError.

Continue