docs/plans/2026-04-09-slate-react-deleted-test-family-closure-consensus-plan.md
runtime.tsx into unreadable garbage when one focused contract
file is cleanerpackages/slate-react/test/** is now the highest-value remaining
deleted-test familyruntime.tsx already proves a lot, but it should not become the only place
every React claim goes to dieruntime.tsx for the already-mirrored rowsPros:
Cons:
slate-react test helpers from runtime.tsx, then split restored proof into focused filesPros:
runtime.tsx and the new contract fileCons:
packages/slate-react/test/runtime.tsx until it covers everythingPros:
Cons:
Pros:
Cons:
Option AWhy chosen:
Close the deleted packages/slate-react/test/** family by mapping each deleted
file to current proof, restoring the still-relevant public-value gaps into one
focused current contract, and explicitly cutting the dead internal residue.
packages/slate-react/test/** rowspackages/slate-react/test/runtime.tsxslate-react behavior gappackages/slate-history/test/**Treat this family as three buckets:
mirrored now
packages/slate-react/test/runtime.tsxrestore now
explicit skip
Execution shape:
packages/slate-react/test/runtime.tsx as the owner for already
mirrored rows/Users/zbeyens/git/slate-v2/packages/slate-react/test/surface-contract.tsxReactEditor.focus initializes selection from nullReactEditor.focus does not spuriously fire onValueChangeEditable translate attributeuseSelected plus structured path-rebasing stabilitysurface-contract.tsx starts self-contained; only extract shared helpers
from runtime.tsx if a second restore case would otherwise duplicate the
same mount/setup logic againtsconfig.json/Users/zbeyens/git/plate-2/docs/plans/2026-04-09-slate-v2-slate-react-deleted-test-family-closure.md| deleted file | current concept | disposition | current proof owner | restore target if needed | notes |
|---|---|---|---|---|---|
packages/slate-react/test/use-slate-selector.spec.tsx | selector subscription equality and selector identity swap | mirrored now | /Users/zbeyens/git/slate-v2/packages/slate-react/test/runtime.tsx | none | already proved by the current equality/identity test |
packages/slate-react/test/use-slate.spec.tsx | provider editor + version counter exposure | mirrored now | /Users/zbeyens/git/slate-v2/packages/slate-react/test/runtime.tsx | none | already proved by useSlateWithV and hook-surface runtime coverage |
packages/slate-react/test/react-editor.spec.tsx | mounted window sync and helper surface | mirrored now | /Users/zbeyens/git/slate-v2/packages/slate-react/test/runtime.tsx | none | current mounted-bridge proof already covers helper and window behavior |
packages/slate-react/test/react-editor.spec.tsx | ReactEditor.focus initializes selection from null and stays safe mid-transform | restore now | not currently proved | /Users/zbeyens/git/slate-v2/packages/slate-react/test/surface-contract.tsx | current source touchpoints are /Users/zbeyens/git/slate-v2/packages/slate-react/src/plugin/react-editor.ts and /Users/zbeyens/git/slate-v2/packages/slate-react/src/components/editable.tsx |
packages/slate-react/test/react-editor.spec.tsx | ReactEditor.focus must not fire onValueChange | restore now | not currently proved | /Users/zbeyens/git/slate-v2/packages/slate-react/test/surface-contract.tsx | current source touchpoints are /Users/zbeyens/git/slate-v2/packages/slate-react/src/plugin/react-editor.ts, /Users/zbeyens/git/slate-v2/packages/slate-react/src/components/editable.tsx, and /Users/zbeyens/git/slate-v2/packages/slate-react/src/components/slate.tsx |
packages/slate-react/test/editable.spec.tsx | onChange / onValueChange / onSelectionChange partition | mirrored now | /Users/zbeyens/git/slate-v2/packages/slate-react/test/runtime.tsx | none | callback partition already proved |
packages/slate-react/test/editable.spec.tsx | Editable translate attr | restore now | not currently proved | /Users/zbeyens/git/slate-v2/packages/slate-react/test/surface-contract.tsx | current source touchpoint is /Users/zbeyens/git/slate-v2/packages/slate-react/src/components/editable.tsx; low-level DOM root surface still owns this and may require source + proof |
packages/slate-react/test/editable.spec.tsx | split/merge mount identity on the structured render surface | restore now | partial in /Users/zbeyens/git/slate-v2/packages/slate-react/test/runtime.tsx | /Users/zbeyens/git/slate-v2/packages/slate-react/test/surface-contract.tsx | current value belongs to EditableBlocks / EditableTextBlocks, not raw Editable |
packages/slate-react/test/use-selected.spec.tsx | selection overlap rerender | mirrored now | /Users/zbeyens/git/slate-v2/packages/slate-react/test/runtime.tsx | none | current element-hook runtime test already covers selection switching |
packages/slate-react/test/use-selected.spec.tsx | hook result stays stable across structured path rebasing after structural edits | restore now | partial in /Users/zbeyens/git/slate-v2/packages/slate-react/test/runtime.tsx | /Users/zbeyens/git/slate-v2/packages/slate-react/test/surface-contract.tsx | current value comes from /Users/zbeyens/git/slate-v2/packages/slate-react/src/hooks/use-selected.tsx plus runtime-id/path rebasing in /Users/zbeyens/git/slate-v2/packages/slate-react/src/components/editable-text-blocks.tsx |
packages/slate-react/test/use-selected.spec.tsx | chunking-specific branch | explicit skip | none | none | current package no longer ships the old chunking tree |
packages/slate-react/test/decorations.spec.tsx | render-leaf split metadata and projection-local decoration rerenders | mirrored now | /Users/zbeyens/git/slate-v2/packages/slate-react/test/runtime.tsx | none | current package keeps the value through renderLeaf plus projection-store proof |
packages/slate-react/test/decorations.spec.tsx | exact decorate API parity | explicit skip | none | none | current package is projection-first here; decorate is not a live public surface |
packages/slate-react/test/chunking.spec.ts | internal chunk-tree reconcile logic | explicit skip | none | none | dead internal architecture; do not resurrect it |
packages/slate-react/test/tsconfig.json | deleted test-local harness config | explicit skip | package root TS/Jest config | none | no current value in reviving a test-local tsconfig |
Family accounting rule:
8Goal:
Exit:
Goal:
mirrored now rows against current runtime proof so nobody
hand-waves them laterActions:
useSlateSelectoruseSlateWithVExit:
Goal:
Target file:
/Users/zbeyens/git/slate-v2/packages/slate-react/test/surface-contract.tsxExecution rule:
surface-contract.tsx starts self-containedruntime.tsx if the second restored case
would otherwise duplicate the same mount/setup logic againRequired restored cases:
ReactEditor.focus initializes selection from null and stays safe
mid-transform without DOM target drift or toDOMNode failuresReactEditor.focus does not trigger onValueChangesplitNodesmergeNodesEditable defaults translate=\"no\" and still allows overrideuseSelected stays stable when the selected element path shifts after
structural editsConstraint:
chunking internals just to satisfy old testsdecorate prop back in; use projections only where
that value already exists in the live packageExit:
/Users/zbeyens/git/slate-v2/packages/slate-react/test/surface-contract.tsx
existsrestore now row has a direct current proof ownerGoal:
Explicit skips:
packages/slate-react/test/chunking.spec.tsuse-selected.spec.tsxdecorate API parity from decorations.spec.tsxpackages/slate-react/test/tsconfig.jsonRequired note:
decorate
propGoal:
Required artifacts:
docs/slate-v2/master-roadmap.mddocs/slate-v2/overview.mddocs/slate-v2/release-file-review-ledger.mddocs/slate-v2/true-slate-rc-proof-ledger.mddocs/plans/2026-04-09-slate-v2-slate-react-deleted-test-family-closure.mdRequired ownership updates:
surface-contract.tsx enters true-slate-rc-proof-ledger.md as class
public surfacemaintainer contextruntime.tsx remains the owner only for the rows it already mirrorsCloseout note must say:
packages/slate-react/test/** restore work is neededBatch-exit rule:
master-roadmap.mdoverview.mdrelease-file-review-ledger.mdtrue-slate-rc-proof-ledger.mdpackages/slate-react/test/** rows are classified in one
place with no vague residuepackages/slate-react/test/runtime.tsxpackages/slate-react/test/surface-contract.tsxpackages/slate-react/test/surface-contract.tsxdocs/plans/2026-04-09-slate-v2-slate-react-deleted-test-family-closure.mdchunking.spec.ts is not resurrected and is instead cut explicitly with
rationaletsconfig.json is closed explicitly instead of being left as ghost harness
debtDirect family proof must include:
yarn workspace slate-react run testyarn lint:typescriptCross-package regression evidence:
yarn test:customEscalate verification if source outside slate-react changes:
yarn test:mochayarn workspace slate-dom testPlanning artifact verification:
bunx prettier --check docs/plans/2026-04-09-slate-react-deleted-test-family-closure-consensus-plan.mdClose the Slate React deleted test-family bucket with one focused current contract file plus the existing broad runtime proof.
slate-react test helpers first, then split restored proofruntime.tsx onlyruntime.tsx stays the owner for already-restored broad runtime coveragepackages/slate-history/test/**Available useful agent types for execution:
plannerarchitectcriticexecutorresearcherverifierUse $ralph when you want one controlled batch:
surface-contract.tsxmaster-roadmap.md and overview.mdSuggested reasoning:
high for the first restore passmedium for ledger/doc syncUse $team when you want parallel excavation:
runtime.tsxsurface-contract.tsx restore implementationSuggested launch hint:
omx team 3:executor "Execute the Slate React deleted test-family closure in /Users/zbeyens/git/slate-v2 using the approved plan at /Users/zbeyens/git/plate-2/docs/plans/2026-04-09-slate-react-deleted-test-family-closure-consensus-plan.md. Freeze the eight-row family matrix first, restore the uncovered public-value rows into packages/slate-react/test/surface-contract.tsx, keep runtime.tsx as proof owner for already mirrored rows, explicitly skip dead chunking and test-local tsconfig residue, sync the ledgers plus /Users/zbeyens/git/plate-2/docs/slate-v2/master-roadmap.md and /Users/zbeyens/git/plate-2/docs/slate-v2/overview.md, and stop only with fresh evidence from yarn workspace slate-react run test, yarn test:custom, and yarn lint:typescript."