Part of #278
The damage from duplication so far has been behavioural rather than
textual: force-anchor drain, recovery drain and document-start preload were all
fixed in JS and never propagated to Python. Shared code cannot prevent that; a
shared executable spec can.
Acceptance criteria
One suite of invariants over an emitted frame stream: a
row is stamped at completion, an anchor carries the document's birth time, a
navigation drain forces an anchor. Every adapter runs it in CI, and a missing fix
in one language fails that language's build.
Size: L. Depends on B1.
Part of #278
The damage from duplication so far has been behavioural rather than
textual: force-anchor drain, recovery drain and document-start preload were all
fixed in JS and never propagated to Python. Shared code cannot prevent that; a
shared executable spec can.
Acceptance criteria
One suite of invariants over an emitted frame stream: a
row is stamped at completion, an anchor carries the document's birth time, a
navigation drain forces an anchor. Every adapter runs it in CI, and a missing fix
in one language fails that language's build.
Size: L. Depends on B1.