Commit 387b7bf
committed
fix(warp-core): preserve the legacy operation_result_id hash for updates
operation_result_id routed previous_value_digest through
hash_optional_id, which prepends a discriminant tag for both Some
and None. This silently changed EchoOperationResultIdV1 (and
everything chained from it -- preparation_id, receipt identities)
for the update path too, not only the new create path, contradicting
this branch's own "byte-for-byte unchanged" claims. A prior commit
corrected the ADR's wording to document this honestly rather than
overclaim; this commit fixes it for real instead, per Codex's
automated review on PR #686 and my own self-review's finding #1.
Some(digest) now hashes exactly digest -- the same raw 32 bytes the
pre-ADR-0024 code always wrote, no tag -- so the update path's
result identity is truly unchanged, not merely behaviorally
equivalent. None uses a new domain-separated marker
(RESULT_ID_ABSENT_PREVIOUS_VALUE_DOMAIN) whose byte length differs
from every possible 32-byte digest, so it cannot collide with
Some(digest) for any digest value -- unlike
current_application_basis's Option<Hash> field (which needed
hash_optional_id's shared tag scheme because that field's encoding
is otherwise fixed-width), this field's own two encodings already
differ in length, so no tag is needed here.
RED: operation_result_id_preserves_the_legacy_hash_for_updates (new
unit test in echo_operation.rs's own mod tests) asserted Some(...)
matches a hand-reconstructed reference hash and failed against the
tagged encoding. GREEN: same test passes after the fix. Updated ADR
0024's Verification Evidence Grade and Consequences sections to state
the digests are unchanged, not merely judged acceptable to differ.
Full warp-core suite (81 binaries, 687 library tests, doctests)
green; clippy identical pre-existing error set.1 parent c2e438b commit 387b7bf
2 files changed
Lines changed: 115 additions & 24 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| 76 | + | |
| 77 | + | |
76 | 78 | | |
77 | 79 | | |
78 | 80 | | |
| |||
3814 | 3816 | | |
3815 | 3817 | | |
3816 | 3818 | | |
3817 | | - | |
| 3819 | + | |
| 3820 | + | |
| 3821 | + | |
| 3822 | + | |
| 3823 | + | |
| 3824 | + | |
| 3825 | + | |
| 3826 | + | |
| 3827 | + | |
| 3828 | + | |
| 3829 | + | |
| 3830 | + | |
| 3831 | + | |
3818 | 3832 | | |
3819 | 3833 | | |
3820 | 3834 | | |
| |||
4700 | 4714 | | |
4701 | 4715 | | |
4702 | 4716 | | |
| 4717 | + | |
| 4718 | + | |
| 4719 | + | |
| 4720 | + | |
| 4721 | + | |
| 4722 | + | |
| 4723 | + | |
| 4724 | + | |
| 4725 | + | |
| 4726 | + | |
| 4727 | + | |
| 4728 | + | |
| 4729 | + | |
| 4730 | + | |
| 4731 | + | |
| 4732 | + | |
| 4733 | + | |
| 4734 | + | |
| 4735 | + | |
| 4736 | + | |
| 4737 | + | |
| 4738 | + | |
| 4739 | + | |
| 4740 | + | |
| 4741 | + | |
| 4742 | + | |
| 4743 | + | |
| 4744 | + | |
| 4745 | + | |
| 4746 | + | |
| 4747 | + | |
| 4748 | + | |
| 4749 | + | |
| 4750 | + | |
| 4751 | + | |
| 4752 | + | |
| 4753 | + | |
| 4754 | + | |
| 4755 | + | |
| 4756 | + | |
| 4757 | + | |
| 4758 | + | |
| 4759 | + | |
| 4760 | + | |
| 4761 | + | |
| 4762 | + | |
| 4763 | + | |
| 4764 | + | |
| 4765 | + | |
| 4766 | + | |
| 4767 | + | |
| 4768 | + | |
| 4769 | + | |
| 4770 | + | |
| 4771 | + | |
| 4772 | + | |
| 4773 | + | |
| 4774 | + | |
| 4775 | + | |
| 4776 | + | |
| 4777 | + | |
| 4778 | + | |
| 4779 | + | |
| 4780 | + | |
| 4781 | + | |
| 4782 | + | |
| 4783 | + | |
| 4784 | + | |
| 4785 | + | |
| 4786 | + | |
| 4787 | + | |
| 4788 | + | |
| 4789 | + | |
| 4790 | + | |
| 4791 | + | |
| 4792 | + | |
| 4793 | + | |
| 4794 | + | |
4703 | 4795 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
186 | | - | |
187 | | - | |
188 | | - | |
189 | | - | |
190 | | - | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
191 | 194 | | |
192 | 195 | | |
193 | 196 | | |
| |||
256 | 259 | | |
257 | 260 | | |
258 | 261 | | |
259 | | - | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
270 | 269 | | |
271 | 270 | | |
272 | 271 | | |
| |||
0 commit comments