v1.6.0
[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.mdSection 5.5). A Trusted Agent Protocol request becomes the evidence avaara.receipt/v1decision 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 distinctactionRefjoin keys, so a mid-action receipt cannot be presented where the final one is required. TAP can pin tovaara.receipt/v1for the post-authorization record rather than define a new primitive. - Published the
tap_v0conformance vectors with an independent checker (standard library pluscryptographyandrfc8785, no Vaara import). It recomputes the action ref, resolves the request binding againstevidenceRef.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 sharedverify-contiguitypath 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.mdSection 5.3 now describes the terminal sealing block ({boundaryId, sealed: true, total: N}) and the full completeness layering:seqfor 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.