docs/plans/2026-04-05-slate-v2-next-major-autonomous-phase.md
Supporting plan. For current queue and roadmap truth, see master-roadmap.md.
Choose the strongest next major autonomous phase for
/Users/zbeyens/git/slate-v2, aligned with
Part I. Engine North Star, that
maximizes release-shaped progress without reopening already-proved seams.
Run a proof-before-prose Phase 7 cashout with a reset/load contract gate:
/Users/zbeyens/git/slate-v2Bluntly:
plate-2 has internal docsThe next major phase is not “invent the better engine again”.
It is:
Evidence already says the earlier cashout work landed:
slate-browser is already a first-class package with a real editor harness in
/Users/zbeyens/git/slate-v2/packages/slate-browser/README.md
and
/Users/zbeyens/git/slate-v2/packages/slate-browser/src/playwright/index.tsThe real gap now is not just repo truth. It is policy plus repo truth:
plate-2 already describe the compatibility envelope and
migration postureslate-v2-* example filenames and an
old package table that omits slate-dom and slate-browserslate, slate-dom, slate-react, and slate-history still have no
package-level README truth surfaceslate-browser still carries transitional waitFor* compatibility options in
its openExample(...) API even though the real direction is the ready
contractslate-browser README is partly ahead of the actual repo command surface, so
even the best-documented package is not yet fully honestThat is why the highest-leverage move now is:
Not deeper seam farming, but also not docs-first theater.
/Users/zbeyens/git/slate-v2.slate-browser driver abstraction.slate-browser is proof infrastructure, not disposable test glue.Pros:
engine.mdCons:
Pros:
Cons:
Pros:
Cons:
The best argument against this phase is that publicization can freeze a polite lie: if the current replacement candidate still hides important retrofit debt, then turning the repo into a clean story just makes later correction more expensive.
There is a real tension between:
The highest-risk seam is the reset/load contract currently expressed through
Editor.replace(...) and useSlateReplace(...).
Publicize only the proved anchor and only the claims backed by stable lanes.
If a new curated migration row exposes a real contract weakness, pivot inside the phase to a narrow seam fix, prove it, sync docs, then resume the public cashout.
Default narrow pivot if needed:
Failure:
Mitigation:
replacement-compatibility.test.tsslate-browser browser lanesFailure:
Mitigation:
slate-browser abstraction driftFailure:
slate-browser into a generic driver playground instead of a
sharp proof contractMitigation:
openExample(...) editor-shapedreadywaitFor* options instead of layering more
aliasesFailure:
Mitigation:
packages/slate/test/snapshot-contract.ts when public replacement or
selection semantics movepackages/slate-history/test/history-contract.ts when migration rows expose
undo/redo or replace-based reset regressionspackages/slate-dom/test/bridge.ts and
packages/slate-dom/test/clipboard-boundary.ts for shadow/iframe/clipboard
seam falloutpackages/slate-react/test/runtime.tsx for replace/history/selector-scope
guarantees on the anchor surfaceplaywright/integration/examples/replacement-compatibility.test.ts as the
curated replacement matrixslate-browser package tests when the harness API changesplaywright/integration/examples/rich-inline.test.tsslate-browser IME/clipboard/anchors commands when browser-facing seams move../slateslate-v2-* names in public repo docsBefore broad publicization, define and prove the controlled replacement boundary.
Likely files:
Required proof:
Make /Users/zbeyens/git/slate-v2 tell the truth about the current candidate.
Likely files:
/Users/zbeyens/git/slate-v2/packages/slate/README.md/Users/zbeyens/git/slate-v2/packages/slate-dom/README.md/Users/zbeyens/git/slate-v2/packages/slate-react/README.md/Users/zbeyens/git/slate-v2/packages/slate-history/README.md/Users/zbeyens/git/slate-v2/packages/slate-browser/README.mdWhat this must say:
slate-browser as proof infrastructure with its own conservative promise,
not as settled product architectureAdd only the extra rows needed to justify the public story.
Likely files:
/Users/zbeyens/git/slate-v2/scripts/Default new rows:
slate-browser Truthfulness PassTreat slate-browser as the proof contract for the replacement repo.
Likely files:
waitFor* compatibility optionsExpected move:
readyDo this only if the curated migration rows expose a real ambiguity.
Likely files:
Every completed slice also updates:
slate-v2./Users/zbeyens/git/slate-v2 has one honest repo-facing explanation of:
replacement-compatibility.test.ts covers every preserved-behavior claim
made by the new repo-facing docs.ready, not transitional waitFor*
aliases.plate-2 top-level Slate v2 docs plus the Phase 7 source docs are
resynced to the completed slice:
overview.mdcohesive-program-plan.mdfinal-synthesis.mdphase7-compatibility-envelope.mdphase7-migration-story.mdslate-browser API cleanup breaks useful existing proof rows because the
migration was not staged.slate-browser API removal or renameEditor.replace(...)slate-browser Evolution During This Phaseslate-browser should evolve in three narrow ways only:
ready the canonical readiness contract.Specifically:
waitForEditable /
waitForPlaceholderVisibleopenExample(...) and the current namespacesopenFixture(...), generic drivers, or fake cross-backend abstractionsUse legacy Slate from /Users/zbeyens/git/slate as a semantic oracle only.
Best references for this phase:
Do not cargo-cult:
Copy the user-facing behavior or workload intent, not the old machinery.
Important gap callouts:
Do not do a fresh broad comparison pass.
Consult external sources only when answering a concrete question:
If the question is not concrete, skip the external dive and keep moving.
/Users/zbeyens/git/slate-v2/packages/slate/README.md/Users/zbeyens/git/slate-v2/packages/slate-dom/README.md/Users/zbeyens/git/slate-v2/packages/slate-react/README.md/Users/zbeyens/git/slate-v2/packages/slate-history/README.mdslate-browser removes waitFor* options in tranche 1, add a red test
or failing callsite conversion that proves ready alone is enough for the
maintained rows.yarn workspace slate-react run testyarn test:mochayarn test:replacement:compat:localDo not widen beyond this loop until the reset/load contract, repo-facing docs, and supporting proof rows agree.
yarn test:mochayarn workspace slate-dom testyarn workspace slate-react run testRun only the packages touched by the slice, but rerun slate-react whenever
the anchor surface story changes.
yarn workspace slate-browser testyarn test:slate-browser:e2e:localyarn test:slate-browser:ime:localyarn test:replacement:compat:localyarn bench:replacement:placeholder:localyarn bench:replacement:huge-document:localslate-v2-* public naming in repo-facing docs/examplesExecute a repo-facing Phase 7 cashout on the proved anchor surface, gated by an explicit replacement/reset contract.
Because the replacement candidate is already credible in code and internal docs, but the repo itself still tells a muddled story and the most load-bearing adoption seam is still too implicit. Fixing that contract first, then closing the repo-truth gap, is the fastest honest path toward a release-shaped Slate v2 surface.
Recommended roster for follow-up execution:
explorer for fast repo/oracle mappingarchitect for any seam pivot triggered by a failing curated rowcritic for plan and claim pressure-testingexecutor for repo/docs/test implementationtest-engineer for replacement matrix and benchmark lane workwriter for README/package-doc migration workverifier for final proof and doc-claim auditUse one sequential Ralph lane with these priorities:
Suggested reasoning:
mediumhighhighUse three workers with disjoint ownership:
slate-browser readiness cleanup and README syncLeader keeps:
plate-2 doc sync$ralph Execute /Users/zbeyens/git/plate-2/docs/plans/2026-04-05-slate-v2-next-major-autonomous-phase.md against /Users/zbeyens/git/slate-v2. Prioritize repo-facing public surface cashout, then only the proof rows needed to back those claims.
$team Execute /Users/zbeyens/git/plate-2/docs/plans/2026-04-05-slate-v2-next-major-autonomous-phase.md with docs/proof/harness lanes against /Users/zbeyens/git/slate-v2 and sync /Users/zbeyens/git/plate-2/docs/slate-v2/{overview,cohesive-program-plan,final-synthesis,phase7-compatibility-envelope,phase7-migration-story}.md before shutdown.
Before shutdown, the team must prove:
slate-browser callsites used by maintained rows no longer depend on ad hoc
readiness semantics or README examplesAfter team handoff, Ralph verifies:
overview.mdcohesive-program-plan.mdfinal-synthesis.md