DIS-003: WEAVEMerge token identity is positional, not total

WEAVEMerge aligns weave streams by diff position rather than by real cross-weave token identity, so a small class of merges has a non-total, timestamp-dependent tie-break: a reconciled token can be emitted at the ours position when its true match is a later theirs token, and an insert can anchor on the wrong side of a blank line. The goal is a total, deterministic merge so content recovery holds for every history. The robust fix is a shared-sequence merge giving tokens stable identity, not diff-alignment plus positional reconciliation. See Graf.

Issues

Two faces of one root cause — positional alignment in graf/WEAVE.c WEAVEMerge.

Blockers

A clean fix is constrained.

Planned

Replace positional reconciliation with real token identity.

Landed

One sub-bug already fixed.