Receipts are now emitted in the envelope the IETF draft specifies (draft-farley-acta-signed-receipts-02): a two-field { payload, signature: { alg: "EdDSA", kid, sig } } envelope, signed over the JCS bytes of the payload with no pre-hash, with issuer_id bound to the signing kid. Receipt logs hash-chain per section 5.7 (bare-hex SHA-256 over the entire previous line, signature included), the chain resumes across restarts, and signing-failure tombstones participate so unsigned gaps stay detectable.
Verification is dual-shape everywhere: every receipt written by 0.9.x and earlier still verifies, validated against 3,352 receipts from a real production gate log, and a mixed pre/post-migration log replays cleanly including the chain link that spans the boundary. The published @veritasacta/verify CLI verifies the new envelopes as-is.
The policy digest becomes a recomputable commitment: one normative construction (acta-policy-digest-v1, per-file SHA-256 manifest, JCS, full-strength digest, replacing two divergent truncated preimages), a 'policy digest' command that prints the recompute rule, and a 'policy publish' command that writes an acta.policy-bundle.v1 ready to host at .well-known/acta-policies/. Specified normatively in draft revision -03, alongside require_approval as a decision value.
Also fixed: importing the package as a library no longer attaches the demo server's stdin JSON-RPC listener; @noble/curves and @noble/hashes are now regular dependencies.