v0.3.0 is a breaking release. Package release versions and document
wire-format versions are independent: consumers select a document parser
from the document's version field.
| Before | After |
|---|---|
baseline_sha, candidate_sha accepted 7-40 characters |
oid_algorithm plus complete baseline_oid and candidate_oid |
| No repository identity | Required canonical repository |
| Contract and policy implied | Required contract_sha256 and policy_sha256 |
| Candidate content implied by commit | Required candidate_tree_sha256 |
command display string |
Shell-free argv array |
| Python and lock digest only | OS, architecture, image, working directory, and sandbox profile also required |
| Any semver accepted | version must equal 2.0.0 |
Producers must calculate hashes from the exact immutable bytes consumed by the trusted executor. Do not populate hashes from reconstructed or pretty-printed representations.
- Replace
candidate_shawithoid_algorithmand completecandidate_oid. - Add
contract_sha256. - Set
versionto2.0.0. - Ensure
statusandfinal_stateuse an allowed combination. - For
PASS, every gate result must havepassed: true. - When a contract is available, provide exactly one gate result for each
acceptance.hard_gatesentry and no others. - Calculate
evidence_sha256over RFC 8785/JCS canonical JSON bytes.
Their wire version remains 1.0.0. Validation is stricter:
- arbitrary semver values are no longer accepted;
- unknown properties, wrong types, duplicates, and empty required strings are rejected consistently;
- builder Git SHAs must be complete 40-character SHA-1 values;
- a report-only contract must keep
human_review.required: true.
- Add readers for both old and new document versions.
- Upgrade the trusted executor to emit evidence
2.0.0. - Verify the evidence hash and repository/contract/policy bindings.
- Upgrade the evaluator to emit verdict
2.0.0. - Re-render the vendored bundle from the tagged full commit.
- Reject legacy writes after every producer is migrated.
- Remove legacy readers only after retained artifacts have aged out.
Never reinterpret a 1.0.0 document as 2.0.0; migrate it by rebuilding
trusted evidence from authoritative inputs.