docs/plans/2026-04-03-slate-react-v2-persistent-projection-proof-plan.md
Extend the slate-react-v2 projection store so persistent annotation layers can
use durable RangeRefs directly instead of pretending every overlay is an
ephemeral Range.
The smallest honest public cut is:
slate-react-v2RangeRangeRefrefresh()That gives persistent overlays a first-class path without inventing a comment
model or pushing overlay state into slate-v2.
RangeRef stays projected after text editsrefresh() removes the projectionFreeze the projection target shape.
Write the first failing runtime tests for RangeRef-backed projections.
Implement the minimal store/type changes.
Verify, deslop, re-verify, architect review, cleanup.
slate-v2 range-ref proofRangeRef
supportRangeRef integration was React-shaped, not headless-store-shapedRange projections onlyuseSlateRangeRefProjectionStore(editor, projections) in
slate-react-v2refresh() force-invalidating for explicit external refreshesunref()zsh -lc 'yarn workspace slate-react-v2 test'zsh -lc 'yarn build:rollup'zsh -lc 'yarn lint:typescript'0 on changed filesAPPROVE