Artifact 63e4ac2e27d27d0b1c98ba51682ded2fbbb2dd67452031308571c251aa56bbdf:
- File
src/update.zig
-
2026-07-23 11:53:26
— part of check-in
[f75dfdfbe7]
on branch fix10-update-diag
— Split the update read-path diagnostics apart from the corruption claim
zit update, open, merge and bisect collapsed ApplyError.StateRecordInvalid and ApplyError.Corrupt onto one line, "cannot read repository: repository is corrupt". They are different claims. Corrupt means stored bytes do not match the name they are stored under. StateRecordInvalid means only that a stored artifact was not usable as a check-in state record, which says nothing about integrity.
An intact fossil clone reaches the second routinely: fossil stores and syncs artifacts it declines to crosslink itself. Assembly treats those as fatal while the read verbs skip them, so update accused an undamaged clone of corruption while timeline read the same store fine.
StateRecordInvalid now carries its own reason text, shared across the four verbs so they cannot drift or re-merge. The bisect mapper had a blanket else arm swallowing the whole set into that corruption line; it is now exhaustive over ApplyError.
Diagnostics only: assembly still rejects these artifacts, so update still exits 1 on such a clone. The tolerance fix is separate; the shape that triggers it, an anonymous wiki page with no U card, is pinned. (user: dmestas, size: 97535) [annotate] [blame] [check-ins using]
-
2026-07-23 14:51:22
— part of check-in
[e3bbb4ff22]
on branch trunk
— Merge fix10-update-diag: split the update read-path diagnostics from the corruption claim
update, open, merge and bisect collapsed ApplyError.StateRecordInvalid and ApplyError.Corrupt onto one line, "cannot read repository: repository is corrupt". Corrupt means stored bytes do not match the name they are stored under. StateRecordInvalid means only that a stored artifact was not usable as a check-in state record, which says nothing about integrity. An intact fossil clone reaches the second routinely, so update accused an undamaged clone of corruption while timeline read the same store fine.
StateRecordInvalid now carries its own reason text, shared across the four verbs so they cannot drift or re-merge. The bisect mapper had a blanket else arm swallowing the whole set into the corruption line; it is now exhaustive.
Diagnostics only: assembly still rejects these artifacts, so update still exits 1 on such a clone. The tolerance fix is separate; the shape that triggers it, an anonymous wiki page with no U card, is pinned. (user: dmestas, size: 97535) [annotate] [blame] [check-ins using]
-
2026-07-23 11:53:26
— part of check-in
[f75dfdfbe7]
on branch fix10-update-diag
— Split the update read-path diagnostics apart from the corruption claim