docs/plans/2026-04-15-slate-v2-example-parity-recovery-plan.md
Make the example story honest for the broader no-regression claim.
This lane is not closed by:
It closes only when legacy/current example parity is explicit across the full example surface.
Maximum parity with legacy is now required for all examples that still matter to the blanket replacement claim.
Legacy examples may be added or extended when the rewrite unlocked a
fairer comparison surface, but those rows must be labeled explicitly as
extended instead of being smuggled in under vague “better cut” language.
For same-path legacy examples, the default recovery target is the closest legacy source structure and contributor-facing chrome that the current runtime can honestly support.
“Behavior passes somewhere” is not enough. A scratch rewrite is debt unless the current-only divergence is recorded explicitly.
Git diff wins ties.
If the same-path file still reads like a rewrite in source, the row stays
open even when a browser row is green.
Supporting inputs:
/Users/zbeyens/git/slate/site/examples/**/Users/zbeyens/git/slate-v2/site/examples/**/Users/zbeyens/git/slate-v2/playwright/integration/examples/**Every example row must land in exactly one bucket:
mirroredrecoveredextendedmixedexplicit cutopensearch-highlighting parity rowcode-highlighting parity rowsearch-highlightingcode-highlightinginlines parity rowrichtext parity rowcustom-placeholder parity rowinlinesrichtextcustom-placeholderandroid-tests is now recovered as an explicit extended row:
the current page carries the legacy manual case picker plus the newer IME
hub linkscheck-lists is now recovered with direct legacy/current parity rowshuge-document is now treated as an explicit benchmark-owned parity row
instead of an ownerless gapscroll-into-view is still open:
the current row is green, but the mirrored legacy/current parity action is
still red on the legacy inner-container scroll behavior even after a fair
legacy extension attemptandroid-testscheck-listscustom-placeholderforced-layoutmarkdown-previewmarkdown-shortcutsplaintextread-onlyshadow-domstylingtablescode-highlighting remains the clearest hard-open row:
source similarity is only 0.062check-listsembedshovering-toolbariframeinlinesmentionscheck-lists is no longer one of the invalidated source-rewrite rows:
the file now reads close to legacy again; the earlier as CustomEditor
and test-only id drift were removed, and the remaining source-level gap
is that the current EditableBlocks surface still does not expose legacy
spellCheck / autoFocus and still carries current type/module syntax;
the red standalone checkbox test is explicitly deferred to the later
proof-fix passeditable-voidsimagespaste-htmlrichtextslate-react exported-type audit found no new legacy barrel misses
beyond the already-explicit cuts:
RenderChunkPropsNODE_TO_INDEXNODE_TO_PARENTEditableTextBlocksProps was still intersecting the native textarea
placeholder?: string with the current custom
placeholder?: ReactNode, so JSX placeholder hosts in
custom-placeholder / placeholder-surface typed as garbage until the
inherited native placeholder key was omitted againforced-layout is now source-close again after restoring the in-file
legacy layout normalizer, legacy copy, and direct title/paragraph shellforced-layout:
search-highlighting is now source-close again after restoring the
legacy search/decorate flow, Slate wrapper, and contributor-facing
input shellsearch-highlighting is explicit:
current projectionStore + renderSegment wiring instead of legacy
decorate + renderLeafsearch-highlighting:
text yields two highlighted matches