docs/solutions/developer-experience/2026-04-18-slate-v2-migration-must-take-transaction-seams-from-real-draft-source-not-reference-proposals.md
The tranche-3 slate plan drifted toward a fake source of truth.
A historical reference doc in docs/slate-v2-draft/references/ was being
treated like the draft implementation owner, which made the next batch assume a
withBatch(...) seam that the real draft package did not even ship.
That is how planning turns into fan fiction.
Editor.withBatch(...)..tmp/slate-v2-draft/packages/slate/** only had:
getChildrensetChildrenEditor.withTransaction(...)Transforms.applyBatch(...)slate fixture suite was also red for a separate reason:
108 same-path legacy JSX fixtures had drifted and no longer imported jsx,
which made the harness scream about React/jsx being undefined before it
could tell us anything useful about the actual wave..tmp/slate-v2-draft/packages/slate/**.getChildrensetChildrenEditor.withTransaction(...)Transforms.applyBatch(...)index.spec.ts harness became honest again.slate-v2:
applyBatch(...)There are three different kinds of evidence here, and they are not equal:
When those disagree, the code wins.
The fixture repair mattered too: a red suite caused by missing jsx imports is
not a runtime oracle. Fix the harness noise first, then trust the failures that
remain.
slate-v2 migration work, verify the seam in .tmp/slate-v2-draft before
naming it in a plan. Do not promote docs/slate-v2-draft/references/** to
implementation truth.