Skip to content

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 22 Jun 13:09

[1.6.0] - 2026-06-22

Minor release: a Visa Trusted Agent Protocol (TAP) request binding profile, plus run sealing for the CrewAI completeness adapter. A TAP request becomes the evidence a decision receipt names across the action lifecycle, so an in-progress receipt cannot stand in for the terminal one. A finalized CrewAI run seals its decision count, so a dropped tail shows as a provable gap.

  • Added the Visa TAP request binding profile (SPEC.md Section 5.5). A Trusted Agent Protocol request becomes the evidence a vaara.receipt/v1 decision receipt names, across the action lifecycle: the in-progress (terminal: false) and terminal (terminal: true) receipts bind to the same logical TAP request but carry distinct actionRef join keys, so a mid-action receipt cannot be presented where the final one is required. TAP can pin to vaara.receipt/v1 for the post-authorization record rather than define a new primitive.
  • Published the tap_v0 conformance vectors with an independent checker (standard library plus cryptography and rfc8785, no Vaara import). It recomputes the action ref, resolves the request binding against evidenceRef.digest, verifies each signature, and confirms the lifecycle distinguishes the terminal step. The verdict is recomputed offline from the committed bytes and the public key, with the TAP service offline and no live verifier endpoint to trust.
  • The CrewAI completeness adapter can seal a run. VaaraGovernance.finalize_run() emits a terminal record that pins the boundary's final decision count, so a dropped tail shows as a provable gap even though the removed records took their own sequence number with them. This lifts the per-record running count (which alone cannot see a truncation) to catch a tail drop, and it addresses the v1.4.0 honest limit for this adapter. The sealing block is additive: a run that is never finalized verifies exactly as before, and the shared verify-contiguity path is byte-identical for streams that carry no seal.
  • The irreducible residual is documented in the code and tests: a suffix drop that also suppresses the sealing record stays invisible from the held set alone. An external anchor, the rfc3161 timestamp minted over the run, is what closes that; the held set cannot.
  • Synced the canonical spec to the sealing record. SPEC.md Section 5.3 now describes the terminal sealing block ({boundaryId, sealed: true, total: N}) and the full completeness layering: seq for order, the hash chain for tamper-evidence, the seal for a truncated tail, and the rfc3161 anchor for the seal-suppressed residual. The earlier text described the tail truncation as an open limit, which the seal has since closed to that residual. The published I-D resyncs at its next revision.