docs/plans/2026-04-02-slate-v2-core-react-proof-ralph.md
Supporting plan. For current queue and roadmap truth, see master-roadmap.md.
Ship the first honest proof slice for Slate v2:
.tmp/slate-v2/packages/slate-v2.tmp/slate-v2/support/slate-v2-react-proofThe slice must prove the snapshot/store/replacement contract can support selector-first React 19.2+ reads without effect mirroring.
Status: completed
.tmp/slate-v2 workspace/build/test constraintssupport/slate-v2-react-proof can stay private and non-workspaceStatus: completed
createEditoreditor.applyEditor.withTransactiongetSnapshotsubscribepackages/slate-v2Status: completed
Status: completed
support/slate-v2-react-proof19.2+useSyncExternalStore readsStatus: completed
.tmp/slate-v2 constraints and proof artifacts before code changespackages/slate-v2 with a minimal transaction/snapshot coresupport/slate-v2-react-proof React 19.2+ harnessslate-v2fnm exec --using 22 yarn tsc --project packages/slate-v2/tsconfig.json --noEmitfnm exec --using 22 yarn mocha --require ./config/babel/register.cjs ./packages/slate-v2/test/**/*.tsnpm run typecheck in support/slate-v2-react-proofnpm test in support/slate-v2-react-prooffnm exec --using 22 yarn build:rollupfnm exec --using 22 yarn lint:eslintfnm exec --using 22 yarn lint:prettierrg -n "useEffect\\(" src in support/slate-v2-react-proof returns no matchescreateEmptyIndex helper and unused Root type importfnm exec --using 22 yarn tsc --project packages/slate-v2/tsconfig.json --noEmitfnm exec --using 22 yarn mocha --require ./config/babel/register.cjs ./packages/slate-v2/test/**/*.tsnpm run typecheck in support/slate-v2-react-proofnpm test in support/slate-v2-react-proofrg -n "useEffect\\(" src in support/slate-v2-react-proof returns no matchesfnm exec --using 22 yarn build:rollupfnm exec --using 22 yarn lint:eslintfnm exec --using 22 yarn lint:prettier