docs/plans/2026-04-09-slate-v2-built-in-normalization-recovery-lane.md
Recover enough of the legacy built-in normalization family to support the true Slate claim without regressing the current clipboard and range-ref contract.
Do not treat this as a quick helper port.
A naive transplant of legacy built-in normalization and fallbackElement
behavior already regressed:
fallbackElement be recovered as a scoped behavior without reintroducing
blanket child-family coercion?yarn test:customyarn workspace slate-react run testpackages/slate/test/clipboard-contract.tspackages/slate/test/range-ref-contract.tsnormalizeNode(...) and shouldNormalize(...) are realEditor.normalize(...) marks the pass as explicit for heavier text cleanupfallbackElement recovery now exists for wrapping stray top-level or
block-only text / inline children when app code delegates to the core
normalizer