Parent
#2079
Schema: #2089
Backfill: #2091
Related: #1958
Issue extras “next checkout” currently picks the earliest later checkout on the same tree by start_time (#2054). That is CI clock order, not git history.
Once commits has parent data, use the first-parent chain instead.
In scope
- For last-seen checkout hash
H, find a later checkout on the same tree/branch whose commit is the first-parent successor of H (commit whose first parent is H, or the next such commit that we actually ingested).
- Use parent storage from #2089 (
ord = 0 or parent_hashes[0], depending on that decision).
- If the hash is missing from
commits or there is no successor with a checkout, keep the current start_time behaviour.
- Same
NextCheckout payload / API shape unless a field is clearly wrong.
Tests
Linear history: next checkout is the first-parent child, not an older start_time neighbour. Merge: first parent, not second. Missing commits row: fallback to start_time.
Parent
#2079
Schema: #2089
Backfill: #2091
Related: #1958
Issue extras “next checkout” currently picks the earliest later checkout on the same tree by
start_time(#2054). That is CI clock order, not git history.Once
commitshas parent data, use the first-parent chain instead.In scope
H, find a later checkout on the same tree/branch whose commit is the first-parent successor ofH(commit whose first parent isH, or the next such commit that we actually ingested).ord = 0orparent_hashes[0], depending on that decision).commitsor there is no successor with a checkout, keep the currentstart_timebehaviour.NextCheckoutpayload / API shape unless a field is clearly wrong.Tests
Linear history: next checkout is the first-parent child, not an older
start_timeneighbour. Merge: first parent, not second. Missingcommitsrow: fallback tostart_time.