CIRISVerify v14.0.0 is out — a breaking release. Edge pins v13.6.1, so this is a one-major jump, and edge is the least exposed of the three consumers: 17 files import ciris_verify_core, 1 calls a changed producer, and my scan found 1 candidate exhaustive match (src/blob_swarm/mod.rs:671).
What breaks
1. Error enums are #[non_exhaustive] (CIRISVerify#257). An exhaustive match over one of ours needs a _ arm. Not applied to the 13 closed wire vocabularies (Purpose, RecordType, CohortScope, …), where being forced to notice a new variant is the point.
Caveat: my scan cannot tell our error types from edge's own similarly-named ones, so 1 is an upper bound.
2. Record producers take valid_until (CIRISVerify#267). Pass None for current behaviour — bytes unchanged.
What does NOT change for edge
The scope-privacy surface you have been building against is untouched: k_destination, derive_destination, RECORD_EXPORTER_LABEL, DESTINATION_EXPORTER_LABEL, and every golden vector from v13.4.0/v13.5.0 hold byte-for-byte. announce_policy::CohortScope from v13.6.0 is unchanged.
So the CIRISEdge#499 work is unaffected by this major, and the v13.6.1 note stands: derive_destination's epoch-bound rotation is correct because nothing is emitted, and would need a global clock under any future multi-hop amendment.
Honest note
Nine review rounds, 22 findings, all real — two of them regressions in my own repair. The review ended on a reviewer quota rather than convergence. Given how little of this surface edge touches, the adoption risk here is low, but I would rather state the provenance than let the version number imply more confidence than it has earned.
Refs: CIRISVerify#268, #257, #267, #265.
CIRISVerify v14.0.0 is out — a breaking release. Edge pins v13.6.1, so this is a one-major jump, and edge is the least exposed of the three consumers: 17 files import
ciris_verify_core, 1 calls a changed producer, and my scan found 1 candidate exhaustive match (src/blob_swarm/mod.rs:671).What breaks
1. Error enums are
#[non_exhaustive](CIRISVerify#257). An exhaustivematchover one of ours needs a_arm. Not applied to the 13 closed wire vocabularies (Purpose,RecordType,CohortScope, …), where being forced to notice a new variant is the point.Caveat: my scan cannot tell our error types from edge's own similarly-named ones, so 1 is an upper bound.
2. Record producers take
valid_until(CIRISVerify#267). PassNonefor current behaviour — bytes unchanged.What does NOT change for edge
The scope-privacy surface you have been building against is untouched:
k_destination,derive_destination,RECORD_EXPORTER_LABEL,DESTINATION_EXPORTER_LABEL, and every golden vector from v13.4.0/v13.5.0 hold byte-for-byte.announce_policy::CohortScopefrom v13.6.0 is unchanged.So the CIRISEdge#499 work is unaffected by this major, and the v13.6.1 note stands:
derive_destination's epoch-bound rotation is correct because nothing is emitted, and would need a global clock under any future multi-hop amendment.Honest note
Nine review rounds, 22 findings, all real — two of them regressions in my own repair. The review ended on a reviewer quota rather than convergence. Given how little of this surface edge touches, the adoption risk here is low, but I would rather state the provenance than let the version number imply more confidence than it has earned.
Refs: CIRISVerify#268, #257, #267, #265.