oldestFirst
Causals, parents before children.
import type { Causal } from "#codebase/tcmts/store"; export function oldestFirst(causals: Causal[]): Causal[] { const by = new Map(causals.map((c) => [c.hash, c])); const out: Causal[] = []; const done = new Set<string>(); const visit = (c: Causal) => { if (done.has(c.hash)) return; done.add(c.hash); for (const p of c.parents) if (by.has(p)) visit(by.get(p)!); out.push(c); }; causals.forEach(visit); return out; }