Artifact decaa90f185ee9f50ced7c2d3a8046feafbbf31ea3b71205398d22dfcb8ae6b2:
- File
src/repository_test.zig
-
2026-07-19 21:52:53
— part of check-in
[4e8d402bb6]
on branch trunk
— Merge iss7: read fossil's legacy check-ins instead of dropping history
timeline stopped partway through a large fossil-origin repository and lost every check-in at and beyond that point. The cause was not an I/O fault, as the shared "input/output error" wording suggested, but a strict parse: fossil's own 2008 cvs2fossil-era check-ins carry F cards with a dangling trailing separator after the hash, which the §4.2 grammar has no production for and the reference parser rejects as corrupt. Repository.manifest -- the timeline read path -- used that strict parser, so the first such check-in and all older ones vanished.
It now reads through parseForImport, the same read-path tolerance the diff baseline already relies on. The strict parser still runs first and stays the sole grammar oracle; tolerance engages only when a well-framed, Z-valid artifact is rejected, strips exactly one trailing separator per F card, re-seals the checksum, and re-runs the strict parser -- so any other malformation is still refused. Complete history renders again, down to the repository's 2007 root. (user: dmestas, size: 54468) [annotate] [blame] [check-ins using]
-
2026-07-19 21:52:53
— part of check-in
[4e8d402bb6]
on branch trunk
— Merge iss7: read fossil's legacy check-ins instead of dropping history
timeline stopped partway through a large fossil-origin repository and lost every check-in at and beyond that point. The cause was not an I/O fault, as the shared "input/output error" wording suggested, but a strict parse: fossil's own 2008 cvs2fossil-era check-ins carry F cards with a dangling trailing separator after the hash, which the §4.2 grammar has no production for and the reference parser rejects as corrupt. Repository.manifest -- the timeline read path -- used that strict parser, so the first such check-in and all older ones vanished.
It now reads through parseForImport, the same read-path tolerance the diff baseline already relies on. The strict parser still runs first and stays the sole grammar oracle; tolerance engages only when a well-framed, Z-valid artifact is rejected, strips exactly one trailing separator per F card, re-seals the checksum, and re-runs the strict parser -- so any other malformation is still refused. Complete history renders again, down to the repository's 2007 root. (user: dmestas, size: 54468) [annotate] [blame] [check-ins using]
-
2026-07-19 21:52:53
— part of check-in
[4e8d402bb6]
on branch trunk
— Merge iss7: read fossil's legacy check-ins instead of dropping history