Artifact 6d41e75aafeddf6d6f0e0b04d280402354f2e8ee046d3027162733947a199176:
- File
src/repository.zig
-
2026-07-18 16:44:18
— part of check-in
[ff9662dfee]
on branch cli
— annotate: order the version chain by topology, not mtime
An adversarial review found zit annotate could charge a line to the too-recent CHILD when a parent and child check-in share an identical (or non-monotone) event mtime — the chain was ordered (mtime asc, hash). Fossil orders its annotate walk by pure topology (generation number, descendants.c/diff.c), so a parent is ALWAYS processed before its child. Match that.
New repostate.ancestryLinearized runs Kahn's over the reversed (child->parent) ancestry edges within the file's ancestor set, emitting newest->oldest with a (mtime desc, hash) ready-queue among topologically-INCOMPARABLE nodes, then reverses to the engine's oldest-first order — topology is now the PRIMARY key, mtime/hash only orders incomparable versions. annotateFile consumes it in place of the old sort; the attribute engine (primary-parent pass-through, oldest origin, binary refusal, layout) is unchanged. Amends the RESOLVED annotate-attribution rule. Linear/monotone history is byte-identical (degenerates to mtime-ascending); new tests (same-mtime parent-first, non-monotone, merge primary-parent) fail against the old order. 1678 unit + 376 e2e green. (user: dmestas, size: 33178) [annotate] [blame] [check-ins using]
-
2026-07-18 17:08:10
— part of check-in
[e5fffafdb8]
on branch trunk
— Merge cli: the cli-verbs-2 survey slice — seven new verbs
Lands amend, artifact, bisect, log PATH, annotate, merge --cherrypick/--backout, and addremove — the VCS-verb-survey recommendations — onto trunk, already integrated with the storage branch's pack re-deltification.
- amend: mint display-metadata T cards, never rewrite history (also corrects the git-reflex table's wrong immutability lesson). - artifact: the plumbing window (whatis + raw dump) over the one parser. - bisect: DAG binary search (bad/good/next/status/reset), state in .zit-bisect. - log PATH: per-file history folded into log (fossil finfo). - annotate: per-line provenance; the version chain is ordered by TOPOLOGY (matching fossil's generation walk), not mtime, so a parent is never misattributed to its child on a timestamp collision. - merge --cherrypick/--backout: alternate-baseline special merges recording a 4.7.14 Q card, rendered by info; the plain merge surface is byte-identical. - addremove: one sweep, add every extra and drop every missing.
Built decomposed (focused implementers + adversarial review) after the monolithic workflow thrashed on API instability. 1678 unit + 376 e2e + dst 6x1000 green. (user: dmestas, size: 33178) [annotate] [blame] [check-ins using]
- 2026-07-18 17:12:54 — part of check-in [09748596dc] on branch storage — Merge trunk into storage: bring in the converged trunk (storage pack work + the cli verb slice — annotate, bisect, extras, merge3, undo, cherrypick/backout) so the dict lever (§2.2 preset-dictionary compression) builds on current state. (user: dmestas, size: 33178) [annotate] [blame] [check-ins using]
-
2026-07-18 16:44:18
— part of check-in
[ff9662dfee]
on branch cli
— annotate: order the version chain by topology, not mtime