docs/slate-v2-draft/replacement-gates-scoreboard.md
This is the explicit evidence board behind the current replacement verdict for
/Users/zbeyens/git/slate-v2.
Legacy comparison is measured against /Users/zbeyens/git/slate.
Use:
Roadmap mapping:
POC RC == the proved Target A surfaceTrue Slate RC == the broader claim now under perf-gate
revalidation herePOC RC surface for Slate + EditableBlocks + withHistory(createEditor())Target A: GoTarget B: Reopened under challengeBlunt read:
This file now carries the live perf gate package.
These do not block RC truth by themselves:
Target A reopens iff a blocker lane lands inside the default recommendation
surface:
SlateEditableBlockswithHistory(createEditor())Target B reopens iff a blocker lane invalidates the broader explicit
package-level replacement claim| Perf class | Reopens Target A? | Reopens Target B? | Notes |
|---|---|---|---|
slate-react mounted runtime basics | yes | yes | default recommendation surface |
slate-history undo / redo on the default editor surface | yes | yes | default recommendation includes withHistory(createEditor()) |
| huge-document user flows | no | yes | broader replacement truth |
| mainstream richtext formatting/edit flows | yes | yes | current runtime/browser proof stack already carries them |
| core normalization / engine lanes | no | no | diagnostic class; only matters when mapped upward into user-facing flows |
Status: pass
Evidence:
slateslate-domslate-reactslate-historyslate-browserslate-hyperscriptStatus: pass
Evidence:
19.216.2.2Status: pass
Evidence:
slateslate-domslate-reactslate-historyslate-hyperscriptslate-browserslateslate-historyslate-hyperscriptslate-browserStatus: pass as a proof surface for both targets
Evidence:
yarn workspace slate-react run testyarn workspace slate-browser testyarn test:slate-browser:e2e:localyarn test:slate-browser:ime:localbash ./scripts/run-slate-browser-local.sh 3100 /examples/persistent-annotation-anchors "yarn build:slate-browser:playwright && yarn exec playwright test playwright/integration/examples/persistent-annotation-anchors.test.ts --project=chromium --workers=1"rich-inline for:
richtext for:
strongemcodeblockquoteheading-onemarkdown-shortcutsmarkdown-previewforced-layoutstylinghovering-toolbareditable-voidsimagesembedstablesscroll-into-viewandroid-testscheck-listscode-highlightinginlinescustom-placeholdersearch-highlightingslate-hyperscript fixture + smoke suiteplaceholderinline-edgevoid-edgeStatus: post-RC follow-up
Evidence:
placeholder-imeinline-edge-imevoid-edge-imespecial subcasesAuthority:
Read:
Status: pass on the rebuilt stable rows
Command:
yarn test:replacement:compat:localCurrent green rows include:
search-highlightingcode-highlightingshadow-domiframementionsinlinesplaintextread-onlyrichtextmarkdown-previewmarkdown-shortcutsforced-layoutstylinghovering-toolbarimagestablesembedseditable-voidspaste-htmlcustom-placeholderplaceholderplaintextread-onlyshadow-domiframehighlighted-textpersistent-annotation-anchorsmarkdown-previewmarkdown-shortcutsforced-layoutstylinghovering-toolbarrich-inlinementionslinkspaste-htmleditable-voidsimagestablesembedsrich-inline reset boundaryRead:
Status: pass
Command:
yarn test:replacement:gate:localManifest:
yarn testyarn workspace slate run testyarn workspace slate-history run testyarn workspace slate-hyperscript run testyarn workspace slate-browser testyarn test:replacement:compat:localRead:
Status: pass
Evidence:
prerelease now runs:
yarn build:rollupyarn test:replacement:gate:localyarn lint:releasepackage.json restores the missing replacement and slate-browser root
command graph instead of pointing docs at dead commandsRead:
yarn build:rollupyarn test:replacement:gate:localyarn lint:releaseStatus: pass
Command:
pnpm bench:replacement:placeholder:localCurrent result at 5 iterations:
custom-placeholder type mean: 9.31msplaceholder type mean: 3.51ms-5.80msStatus: pass
Command:
pnpm bench:replacement:huge-document:localStable workload:
1000 blocks5 iterationsCurrent result:
740.43ms560.61ms-179.82ms19.66ms24.39ms+4.73ms77.93ms3.77ms-74.16ms105.04ms44.58ms-60.46msRead:
Status: pass
Command:
yarn bench:replacement:markdown:localCurrent result at 5 iterations:
7.27ms6.01ms-1.26msStatus: near-parity non-blocker
Command:
yarn bench:replacement:void:localCurrent result at 5 iterations:
93.11ms93.16ms+0.05msRead:
Status: pass
Command:
yarn bench:replacement:table:localCurrent result at 5 iterations:
8.60ms3.73ms-4.87msStatus: pass
Command:
pnpm bench:replacement:richtext:localCurrent result at 5 iterations:
23.01ms22.09ms-0.92msRead:
Target A and Target BStatus: diagnostic open
Commands:
pnpm bench:normalization:localpnpm bench:normalization:compare:localCurrent compare result:
13.19ms134.20ms+121.01ms309.86ms1779.73ms+1469.87ms5.36ms109.95ms+104.59msRead:
Current measured lane read:
Activity resume behavior098.12ms, type-after-overlay mean 15.4ms, and type-after-show mean
14.54msRule:
yarn testyarn test:replacement:compat:localyarn test:replacement:gate:localpnpm bench:replacement:placeholder:localpnpm bench:replacement:huge-document:localpnpm bench:replacement:huge-document:overlays:localpnpm bench:replacement:richtext:localpnpm bench:replacement:markdown:localpnpm bench:replacement:void:localpnpm bench:replacement:table:localpnpm bench:react:rerender-breadth:localCurrent judgment read:
Target A is Go on the proved default surfaceTarget B is still reopened under challenge because exhaustive
API/public-surface audit remains unresolved and browser/input parity is still
deferred follow-up for the broader blanket claimThis file stays focused on evidence, not the final sales pitch.