docs/slate-v2-draft/release-readiness-decision.md
Canonical live verdict for /Users/zbeyens/git/slate-v2.
It answers:
Use it with:
Target A
SlateEditableBlockswithHistory(createEditor())Target B
POC RC
Target ATrue Slate RC
Target BTarget A: GoTarget B: Reopened under challengeAs of 2026-04-15, browser/input parity is deferred to post-RC follow-up.
Reason:
slate-v2 has real Chromium proof on several IME rows, but that is
still not enough to honestly support the broader zero-regression claimHard rule:
Current narrow follow-up read:
Current broader blocker read:
Editor.nodes/** and the
non-Editor interfaces/** namespaces more honestly than the earlier family
buckets didexplicit-skip rowsBookmark-backed durable anchors, annotation stores, and widget lanesrestore-dom and android-input-manager/** families do not count
as closed just because specialist browser lanes are green; the surviving
shared surface still has to prove the relied-on behaviorexplicit-skip rowsPost-RC follow-up rows:
Default recommendation:
SlateEditableBlockswithHistory(createEditor())That surface is still the completed POC RC surface for the already-proved
runtime/perf stack.
What is not honest to say right now:
repair-drift.mdc rule, not just softened into
specialist-proof follow-upCustomTypes is no longer a hard-cut non-claim on the
current type surface; the package seam has been recovered and stale skip docs
need refreshWhat changed:
withHistory(createEditor()) surface is still covered on the
headless lane, but headless/history substrate proof does not close shared
browser hotkey/input integration in EditableSee:
Go Verdict Was ReopenedThe curated perf blocker package still owns part of the live truth. It is no longer the whole truth.
Browser/input parity no longer blocks the current RC gate. It still limits the broader blanket replacement claim.
Current blocker-facing read:
slate-history undo / redo on the default recommendation surface is now
measured directly; it stays slower than legacy, but the fresh same-turn
5000-block compare still lands in a tolerable band:
typing undo 20.27ms, typing redo 17.7ms, fragment undo 31.77ms,
fragment redo 29.11ms, so it does not justify reopening RCCurrent deletion-review read:
Target B by itselfCurrent extension-model read:
Target B by itselfCurrent normalization read:
Current headless read:
slate, slate-history, and slate-hyperscript
is directly proved without ReactCurrent collaboration read:
slate-yjs still owns CRDT/provider/cursor integrationCurrent public-surface read:
Editor.before(...) /
Editor.after(...) voids: true rows and nonSelectable traversal rows,
is now recovered in code and proofThe old lane-by-lane-only perf posture is no longer the live read.
The curated perf gate package now still matters to both:
Target A, because mainstream richtext flows belong to the default
recommendation surfaceTarget B, because the same lane belongs to the broader replacement claimTarget AVerdict:
Gate read:
Target BVerdict:
Gate read:
Target B may return to Go only after:
Target A stays Go unless a blocker reopens inside the proved default
recommendation surface or the current claim is widened back to full
zero-regression browser/input parity.
This file is not the roadmap.
It owns the live verdict only:
POC RC still names the default recommendation surface