docs/slate-v2/ledgers/issue-coverage-matrix.md
Use this ledger to track how Slate v2 slices map to the full
docs/slate-issues corpus. The PR description links here and only carries the
short maintainer-facing summary.
Corpus-level sync progress lives in
docs/slate-issues/open-issues-ledger.md. Update that file before adding
slice-level claims here.
Fixes #.... only when the exact issue reproduction is covered by
implementation and proof.Improves #.... when the PR materially improves the reported behavior,
but the original issue has remaining scope.Related #.... when the issue shares the same cluster or runtime
boundary, but the PR does not prove the exact repro.Not claimed #.... when the issue looked relevant by keyword, but the PR
intentionally does not address it.Add one line for every issue the PR is allowed to auto-close:
- Fixes #....: <description tied to the verified behavior>
Current fixed issue claims:
initialValue; editor state is seeded during editor creation.initialValue requirement.<Slate editor> changes.insertData docs state handler ordering, return semantics, and fallback behavior.moveNodes commit restores the original tree and selection.deleteFragment reselects the restored fragment.insertFragment(..., { at }) writes at the supplied target even when the editor selection points elsewhere.insertFragment into an empty text block leaves the collapsed selection after the inserted content.state.nodes.entries({ reverse: true }) returns the exact reverse of the forward matched entry order for nested matching entries.useElementSelected() does not throw when a selected rendered element removes itself, and useElementSelected(path) returns false after the watched path is removed.*Api, so importing Slate helpers no longer shadows DOM globals such as Node.This is implementation/accounting sync for
docs/plans/2026-05-25-slate-v2-void-roots-and-editable-islands.md.
It adds no fixed issue claims and no improved issue claims. The public
API/lifecycle baseline is implemented in .tmp/slate-v2:
EditorElementSpec.contentRoot, tx.roots.create/replace/delete, and
useSlateContentRoot. The editable-voids example now uses tx.roots.create
instead of raw operation replay for child-root creation.
Keyboard projection, owner/root payload remap, browser proof, and release-gate verification remain execution proof gates.
| Issue | Claim policy |
|---|---|
#5212 | Keep related/planned example and DX candidate. Root creation DX improved, but no fixed or improved claim until the full example route and browser proof land. |
#2072 | Keep related architecture target strengthened. The content-root API baseline exists, but no closure without keyboard/navigation and browser proof. |
#3482, #3367 | Keep related model-shape pressure. Default voids stay atomic; normal void descendants do not become traversable. |
#3435, #3884, #4301 | Keep related navigation guardrails. No new arrow/Enter claim; existing #4301 fixed floor remains exact. |
#3991, #3868, #5582, #5477, #4896, #4350, #4328, #5630 | Preserve delete/selection statuses. Root lifecycle helpers landed, but behavior closure still needs targeted proof. |
#4984, #4842, #3909 | Preserve nested/contenteditable statuses. Same-runtime roots remain the direction; only existing #4984 fixed floor is preserved. |
#4806, #4802, #4104, #3926, #4888, #4623 | Preserve clipboard/drop/move statuses. Root payload serialization and remap policy remain proof gates. |
This is planning/accounting sync for
docs/plans/2026-05-20-slate-v2-non-node-editor-state-architecture-ralplan.md
and the 2026-05-23 multi-root React DX revision in
docs/plans/2026-05-23-slate-v2-multi-root-react-dx-ralplan.md.
It adds no fixed issue claims and no improved issue claims. The accepted target
is one canonical <Slate editor={editor}> provider with multiple
<Editable root="..."> surfaces. SlateRuntime, <Slate root="...">,
createEditorView, useSlateRuntimeState, and useSlateViewState remain
advanced substrate/custom-host APIs; public SlateViewProvider is not
accepted.
| Issue | Claim policy |
|---|---|
#6016 | Keep triage-closed/non-fix. Shared node-object graphs across independent editor runtimes remain unsupported; multi-root/shared-history documents use one editor/runtime with root-bound Editable surfaces. |
#5537 | Keep cluster-synced. Multiple-editor programmatic focus pressure becomes provider/browser proof for view-local focus/input ownership, not an exact closure claim. |
#5117 | Keep future-proof/example pressure. Placeholder measurement leaking across multiple editors requires view-local DOM-state proof in the multi-root example before any claim. |
#4612 | Keep improves-claimed unchanged. The provider API must not reintroduce React controlled value; state changes route through transaction/state APIs. |
#4477, #4483, #3383, #5515, #3741, #3715, #3482 | Preserve existing statuses. Runtime provider naming does not broaden comments, dynamic decorations, undo-all, collaboration docs, moved-node payload, or void-child claims. |
This is planning/accounting sync for
docs/plans/2026-05-23-slate-v2-library-owned-multi-root-history-dx-ralplan.md.
It adds no fixed issue claims and no improved issue claims. The accepted target
is package-owned useSlateHistory and useSlateRootChrome so the canonical
multi-root example does not own shortcut parsing, history stack inspection,
selection metadata, active-root history application, or RAF focus repair.
| Issue | Claim policy |
|---|---|
#6016 | Keep triage-closed/non-fix. Shared node-object graphs across independent editor runtimes remain unsupported; this target keeps the one-runtime, many-root model. |
#5537 | Keep cluster-synced. Root chrome/focus proof strengthens view-local focus ownership, but exact multi-editor programmatic focus closure is not claimed. |
#5117 | Keep future-proof/example pressure. Root-local DOM state remains required; placeholder measurement closure is not claimed. |
#5515 | Keep cluster-synced. useSlateHistory is active-root history, not Undo/Redo All. |
#3893 | Keep related. External button/control focus motivates proof, but exact HTML button focus closure is not claimed. |
#3634, #4961 | Keep related. Programmatic focus/input ownership is strengthened, but exact focus-after-programmatic-change closure needs targeted browser proof. |
#3705, #3756, #3921 | Preserve existing statuses. The hook must preserve history-selection behavior without broadening partial set_selection or refocus claims. |
#3534, #3551, #4559, #3499 | Preserve existing fixed claims. Hook-level history UI must keep those guarantees green, not add new claim scope. |
#3460 | Treat as API pressure only. Stable toolbar/command access outside the editor subtree supports the hook shape; no issue closure claim. |
This is planning/accounting sync for
docs/plans/2026-05-23-slate-v2-root-event-selection-intent-architecture-ralplan.md.
It adds no fixed issue claims and no improved issue claims. The accepted target
is a runtime-owned root interaction resolver in slate-react, backed by
slate-dom hit testing, with useSlateRootChrome reduced to a thin props
adapter.
| Issue | Claim policy |
|---|---|
#4789, #4984 | Preserve existing fixed claims. Root interaction work must keep outside-selection and nested-editor DOM point crash proof green, but this plan adds no new closure scope. |
#4564, #3723, #5711 | Keep related or existing improves rows. DOM point/range crash pressure supports the shared resolver boundary; exact repro closure needs matching browser proof. |
#3634, #4961, #5537 | Keep related focus/input pressure. Runtime-owned root interaction should strengthen focus ownership, but exact programmatic focus closure is not claimed. |
#3893 | Keep related external-control focus pressure. Interactive descendants and toolbar/title controls must preserve native focus, but exact HTML button closure is not claimed. |
#5088, #5473 | Keep related scroll-selection pressure. Root interaction traces should help proof, but exact after-update or delete-empty-paragraph scroll closure needs targeted browser rows. |
#4376, #5171 | Fixed by exact WebKit blur/refocus/follow-up typing proof and Firefox unfocused update proof. |
#5603, #5669, #6022, #5983, #4400 | Keep related input/mobile/IME pressure. Pointer/touch/composition rows are proof gates, not fixed claims. |
#3705, #3756, #3921 | Preserve existing history-selection statuses. The resolver must not broaden history or partial set_selection claims. |
This is planning/accounting sync for
docs/plans/2026-05-25-slate-v2-void-roots-and-editable-islands.md.
It adds no fixed issue claims and no improved issue claims. The target is:
default voids stay atomic, editable-island remains the mixed native/app
control plus optional child-root surface, and an editor-only rooted-flow
surface is evaluated as planned object-only contentRoot: { slot: string }
schema metadata for pure editor content that should navigate like sibling
document blocks. contentRoot is not implemented by this planning sync and is
not an issue closure claim.
The current checkout already moved the editable-voids example to same-runtime child roots, so the remaining planning pressure is public root creation DX and editor-only rooted-flow keyboard/navigation proof.
| Issue | Claim policy |
|---|---|
#5212 | Keep related/planned example and DX candidate, no fixed or improved claim. Same-runtime child roots exist in the live example, but root creation and editor-only flow teaching remain unresolved. |
#2072 | Keep related architecture target strengthened. The island request splits into mixed editable islands and planned object-only contentRoot: { slot: string } rooted-flow primitives; no closure without accepted API and browser proof. |
#3482, #3367 | Keep related model-shape pressure. Do not answer void-children/internal-caret pressure by making default voids traversable; use child roots/rooted elements. |
#3435, #3884, #4301 | Keep related navigation guardrails. Cross-root arrow/Enter behavior must be explicit and must not change selected-void behavior. |
#3991, #3868, #5582, #5477, #4896, #4350, #4328, #5630 | Preserve void delete/selection statuses. Root-backed surfaces add regression proof requirements, not new closure claims. |
#4984, #4842, #3909 | Preserve existing nested/contenteditable statuses. Same-runtime roots are the architecture answer, but this sync preserves only the existing #4984 fixed floor and makes no offset/CodeMirror closure claim. |
#4806, #4802, #4104, #3926, #4888, #4623 | Preserve clipboard/drop/move statuses. Root payload serialization and remap policy are future proof gates. |
#5183, #5391, #5559, #4839, #5087, #5411, #3611 | Keep inline/mobile/spacer/cursor rows related only. Editor-only rooted flow cannot widen these claims without targeted browser/device/IME proof. |
#1769, #3893 | Keep focus rows related only. Native controls and child roots need coherent focus ownership, but no external-focus closure is claimed. |
This is planning/accounting sync for
docs/plans/2026-05-24-slate-v2-editable-islands-multi-root-ralplan.md.
It adds no fixed issue claims and no improved issue claims. The accepted target
is editable-island for native/app controls, same-runtime child roots for rich
content inside islands, state fields for scalar document-owned island data, and
content-only renderVoid props.
| Issue | Claim policy |
|---|---|
#5212 | Keep related/planned example candidate, no fixed or improved claim. The editable-void example-accuracy row is directly in scope only after a canonical same-runtime child-root example exists and proof shows it teaches editable island content without nested independent editor split-brain. |
#2072 | Keep cluster-synced, strengthened target. The island request maps to a library-owned island boundary plus optional same-runtime child roots; no closure claim until child-root example and browser proof exist. |
#4984 | Preserve existing fixed claim. The new child-root work must keep parent-selection-crosses-nested-editor crash proof green, but adds no broader claim. |
#4842 | Keep related. Same-runtime child roots are the architecture answer for nested-editor offset pressure, but exact historical offset closure is not claimed. |
#3909 | Keep related. Nested contenteditable ownership becomes child-root target ownership proof, not a named CodeMirror/void-node closure. |
#4110 | Keep cluster-synced. Inputs inside islands remain browser-selection proof pressure; no Firefox closure without targeted proof. |
#4623 | Keep cluster-synced. Void drag/drop move semantics remain proof pressure for the future child-root lifecycle work. |
#3858 | Keep related. Deep nested value emptying remains stale descendant/selection pressure; child-root delete/undo proof is required before any claim changes. |
#3482, #3367 | Keep related model-shape pressure. Void children and arbitrary void text requests reinforce the split between parent-flow atomic islands and same-runtime child roots; no closure claim until core model and browser proof exist. |
#5183, #5391 | Keep mobile inline-void rows unchanged. Child roots inside editable islands do not close Android/iOS inline-void keyboard or cursor-placement reports; raw device/browser proof is required. |
#4806, #4802, #4104, #3926 | Preserve existing clipboard statuses. Child-root clipboard serialization remains a future proof gate and does not broaden existing inline-void copy/paste/cut or Safari paste claims. |
#4888, #4623 | Keep drop/drag rows as lifecycle proof gates. Drop inside a void and drag/drop move behavior must be proven after child-root lifecycle work; no closure claim in planning. |
#5582, #5477, #4896, #4350, #4328, #3991, #4301, #3868 | Preserve existing void delete/selection statuses. Existing fixed rows stay fixed floors, while child-root delete/undo adds new regression proof before any additional claim. |
#5087, #5411, #3611, #3435, #3449, #4839 | Keep spacer, cursor, insert-break, highlighting, and event-range rows as DOM bridge proof pressure. Child roots must not depend on spacer text hacks or widen inline-void cursor claims. |
#1769, #3893 | Keep external/non-editable focus rows related. Islands and native controls need coherent focus ownership, but this plan makes no exact focus issue closure claim. |
This is planning/accounting sync for
docs/plans/2026-05-22-slate-v2-pretext-layout-rendering-architecture-ralplan.md.
It adds no fixed issue claims and no improved issue claims. The accepted target
is a generic slate-layout service, Pretext-backed continuous and paged layout
snapshots, a domStrategy materialization API, and layout-driven
virtualization.
| Issue | Claim policy |
|---|---|
#790 | Keep as related proof-route backlog. Latest TanStack Virtual should be adopted internally for perf/iOS scroll handling, but dynamic rendering can claim the issue only after Slate mount/edit/scroll benchmark and browser proof land. |
#4141 | Preserve existing Improves. Future layout subscriptions must prove affected-range invalidation and avoid widening rerender breadth. |
#5944 | Keep issue-reviewed. Stable per-line pagination needs current browser proof for page-boundary flicker and caret mapping before any claim. |
#5924 | Keep not claimed. Structural DOM frames should route through DOM coverage and mount-plan policy, not a public ignore-cursor API in this plan. |
#3892 | Keep policy non-claim. Generic layout substrate is useful, but custom editor surfaces remain ecosystem/product territory. |
#2572 | Keep policy non-claim. Accessibility is a release gate for missing-DOM modes, not a fixed issue claim from architecture docs. |
#5131, #2051 | Preserve existing rows as subscription/performance guardrails for layout snapshot consumers. |
This is planning/accounting sync for
docs/plans/2026-05-23-slate-v2-large-document-performance-virtualization-ralplan.md.
It adds no fixed issue claims and no improved issue claims. The accepted target
is DOM-present staged rendering as the default large-document path,
virtualized rendering as an explicit experimental mode, TanStack Virtual as an
internal viewport/range engine only, and slate-layout / Pretext as the future
layout snapshot provider for sizes and hit regions.
| Issue | Claim policy |
|---|---|
#5945 | Preserve existing Improves. The 10,000-line plaintext paste benchmark remains the claim owner; exact browser reproduction closure still needs a 10,000-line browser artifact. |
#4056 | Preserve existing Improves. Populated copy and large middle paste benchmark proof remains valid; exact full-book browser reproduction is not claimed. |
#5992 | Preserve existing Improves. The 50,000-block two-node cut benchmark and 5,000-block browser stress row remain the proof owners; exact closure remains maintainer acceptance plus historical-path proof. |
#2051 | Preserve as performance guardrail. Rerender breadth must stay benchmarked before any layout or virtualized consumer widens subscriptions. |
#790 | Keep as related proof-route backlog. Virtualized rendering directly targets dynamic rendering pressure, but claim requires mount/edit/scroll benchmark, DOM coverage proof, and browser native-behavior proof. |
This is planning/accounting sync for
docs/plans/2026-05-25-slate-v2-pretext-pagination-virtualization-feedback.md.
It adds no fixed issue claims and no improved issue claims. The reviewed target
is Pretext as the default slate-layout engine, measurementProfile as snapshot
metadata, pageView as the page display object, no public
pageVirtualization, internal page/spread virtualization behind virtualized
domStrategy, block/fragment virtualization only for continuous/pathological
surfaces, opt-in pageBreaks for strict collaboration/export fidelity, and
generic provider/split protocols for table/media/BFC pagination.
| Issue | Claim policy |
|---|---|
#5944 | Keep issue-reviewed. Stable per-line pagination is directly related, but needs current browser proof for page-boundary flicker, caret mapping, and page-break stability before any claim. |
#790 | Keep as related proof-route backlog. Internal page/spread virtualization and continuous block virtualization need mount/edit/scroll benchmarks, mounted-count proof, DOM coverage proof, and browser native-behavior proof before dynamic rendering can be claimed. |
#5924 | Keep not claimed. Structural page/table/debug DOM should be handled by DOM coverage, mount policy, and provider/split protocols, not a new public ignore-cursor API. |
#4141 | Preserve existing Improves. Layout/page subscriptions must preserve nested rerender-breadth locality. |
#5131, #2051 | Preserve existing subscription/performance guardrail rows. Layout snapshot consumers and page virtualization must prove they do not broaden editor subscriptions or rerender breadth. |
#2793 | Keep cluster-synced/release-guard. Missing-DOM/page-virtualized modes must not claim native screen-reader equivalence without assistive-tech proof or explicit degradation docs. |
#2572 | Keep policy non-claim. Accessibility remains a release guard, not a fixed issue claim from planning docs. |
#3892 | Keep policy non-claim. Generic layout substrate helps custom surfaces, but product custom layout engines remain outside raw Slate closure. |
#5945, #4056, #5992 | Preserve existing Improves. Large-document operation/clipboard benchmark claims are not promoted or changed by this pagination plan. |
This is implementation/accounting sync for
docs/plans/2026-05-23-slate-v2-android-mark-toggle-no-appium-proof.md.
It adds no fixed issue claims. The package-level proof covers the stale
selection sub-bug from #6022/#6027: after collapsed marked typing, the Android
input manager normalizes the post-insert selection onto the inserted marked
leaf instead of reapplying the raw old-leaf point. The original keyboard
dismissal remains a raw Android proof gate.
| Issue | Claim policy |
|---|---|
#6022 | Keep related/no fixed claim. Implementation proof now covers the stale selection owner, but keyboard visibility and Android IME stability still need raw Android Chrome/WebView proof. |
#6027 | Treat as upstream root-cause evidence, not a fork issue claim. |
Use this for issues in the same cluster that the PR touches but should not auto-close.
| Issue | Cluster | Claim | Why not Fixes | Proof / owner |
|---|---|---|---|---|
| #5710 | document-replacement-api-ergonomics | Improves | Mounted document replacement is explicit through tx.value.replace({ children, selection }), but the full "load different content" product docs are not the auto-close claim. | .tmp/slate-v2/packages/slate/test/state-tx-public-api-contract.ts; docs/plans/2026-05-04-slate-v2-react-editor-initialization-value-ralplan.md |
| #4564 | document-replacement-api-ergonomics | Improves | Whole-document replacement with selection: null is tested, but the exact historical browser reproduction is not replayed as an auto-close proof. | .tmp/slate-v2/packages/slate/test/state-tx-public-api-contract.ts; docs/plans/2026-05-04-slate-v2-react-editor-initialization-value-ralplan.md |
| #5488 | react-controlled-value-and-external-updates | Improves | v2 gives explicit editor replacement APIs instead of adding a React controlled value prop. | docs/plans/2026-05-04-slate-v2-react-editor-initialization-value-ralplan.md |
| #5351 | react-controlled-value-and-external-updates | Improves | Empty initialValue: [] fails with a clear core error; it does not add a default-root normalization policy. | .tmp/slate-v2/packages/slate/test/state-tx-public-api-contract.ts |
| #3465 | normalization-lifecycle-and-initial-value | Not claimed | Initial value normalization/default-root policy is separate from the editor creation/value API slice. | docs/plans/2026-05-04-slate-v2-react-editor-initialization-value-ralplan.md |
| #6038 | transactionality-and-batch-engine | Improves | Transaction/applyOperations benchmark exists and validates mixed structural snapshots, but no accepted performance threshold makes it an auto-close claim. | .tmp/slate-v2/scripts/benchmarks/core/current/transaction-execution.mjs; docs/slate-v2/slate-tranche-3-execution.md |
| #3656 | react-runtime-and-rerender-breadth | Improves | The breadth benchmark proves sibling leaves and the parent block do not rerender on one leaf edit. | .tmp/slate-v2/scripts/benchmarks/browser/react/rerender-breadth.tsx; docs/plans/2026-04-11-slate-v2-rerender-breadth-batch.md |
| #4141 | react-runtime-and-rerender-breadth | Improves | The breadth benchmark proves deep ancestors and the sibling branch do not rerender on one deep edit. | .tmp/slate-v2/scripts/benchmarks/browser/react/rerender-breadth.tsx; docs/plans/2026-04-11-slate-v2-rerender-breadth-batch.md |
| #5131 | react-selection-subscription-granularity | Not claimed | useSlate / useEditor remains broad by contract; v2 proves narrower selector and block-slice locality instead. | .tmp/slate-v2/scripts/benchmarks/browser/react/rerender-breadth.tsx; docs/plans/2026-04-11-slate-v2-rerender-breadth-batch.md |
| #3430 | react-runtime-and-rerender-breadth | Not claimed | Rerender breadth is represented, but the one-paragraph many-inline normalization/freeze repro is not proven. | docs/slate-v2/references/architecture-contract.md; docs/plans/2026-04-11-slate-v2-rerender-breadth-batch.md |
| #5945 | large-document-edit-performance | Improves | Issue-size 10,000-line plaintext paste benchmark now runs through one logical replace_children operation; exact browser repro closure still needs a 10,000-line browser artifact. | .tmp/slate-v2/package.json; .tmp/slate-v2/scripts/benchmarks/core/current/clipboard-large-payload.mjs; .tmp/slate-v2/packages/slate-dom/src/plugin/dom-clipboard-runtime.ts; .tmp/slate-v2/packages/slate/src/transforms-text/insert-fragment.ts; .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; docs/plans/2026-05-05-slate-v2-best-pasting-strategy-ralplan.md; docs/plans/2026-05-06-slate-v2-range-delete-replace-children-ralplan.md |
| #4056 | singleton-performance-benchmark | Improves | Fresh issue-target benchmark covers 10,000-block populated copy at 49.35ms and 10,000-line middle paste into 10,000 existing blocks at 235.22ms, each through one logical operation; exact full-book browser repro closure is not proven. | .tmp/slate-v2/tmp/slate-clipboard-large-payload-benchmark.json; .tmp/slate-v2/scripts/benchmarks/core/current/clipboard-large-payload.mjs; .tmp/slate-v2/packages/slate-dom/src/plugin/dom-clipboard-runtime.ts; .tmp/slate-v2/packages/slate/src/transforms-text/insert-fragment.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; docs/plans/2026-05-05-slate-v2-best-pasting-strategy-ralplan.md |
| #5992 | large-document-edit-performance | Improves | The 50,000-block two-node cut benchmark now lowers exact whole-child range delete to one replace_children operation and meets the accepted warm interaction target; browser stress covers a 5,000-block huge-document cut row. Exact Fixes closure still needs maintainer acceptance that benchmark plus browser stress matches the original repro. | .tmp/slate-v2/tmp/slate-clipboard-large-payload-benchmark.json; .tmp/slate-v2/scripts/benchmarks/core/current/clipboard-large-payload.mjs; .tmp/slate-v2/packages/slate/src/transforms-text/delete-text.ts; .tmp/slate-v2/packages/slate/test/delete-contract.ts; .tmp/slate-v2/packages/slate/test/collab-history-runtime-contract.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts; docs/slate-issues/benchmark-candidate-map.md; docs/plans/2026-05-06-slate-v2-range-delete-replace-children-ralplan.md |
| #3752 | history-memory-retention | Improves | Current-only retained-memory benchmark now records history entry count, operation count, retained payload tags, retained JSON bytes, and heap samples; exact detached DOM leak closure is not claimed. | .tmp/slate-v2/package.json; .tmp/slate-v2/scripts/benchmarks/core/current/history-retained-memory.mjs; .tmp/slate-v2/tmp/slate-history-retained-memory.json; docs/slate-issues/benchmark-candidate-map.md; gitcrawl threads ianstormtaylor/slate --numbers 3752 --include-closed --json |
| #2288 | operation-granularity-and-range-steps | Improves | replace_children gives Slate a range-capable child-window operation with apply/inverse/ref/history/collab proof, and PM-08 replays range delete through three peers; exact public operation exposure remains separate. | .tmp/slate-v2/packages/slate/src/interfaces/operation.ts; .tmp/slate-v2/packages/slate/src/transforms-text/delete-text.ts; .tmp/slate-v2/packages/slate/test/operations-contract.ts; .tmp/slate-v2/packages/slate/test/collab-history-runtime-contract.ts; docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md; docs/plans/2026-05-06-slate-v2-range-delete-replace-children-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 2288 --include-closed --json |
| #1770 | collaboration-op-metadata-and-transaction-boundaries | Related | PM-08 proves three-peer replay convergence for text, mark, range-delete, and move commits, but it does not provide a general operation-merging utility. | .tmp/slate-v2/packages/slate/test/collab-history-runtime-contract.ts; docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md; docs/plans/2026-05-06-slate-v2-range-delete-replace-children-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 1770 --include-closed --json |
| #3741 | collaboration-op-metadata-and-transaction-boundaries | Related | PM-08 proves remote replay convergence for move_node, but it does not add moved-node payloads to serialized move_node operations. Exact OT closure is not claimed. | .tmp/slate-v2/packages/slate/test/collab-history-runtime-contract.ts; docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 3741 --include-closed --json; docs/plans/2026-05-06-slate-v2-core-history-selection-undo-ralplan.md |
| #2500 | select-all-delete-and-structural-reset | Fixes | Core package proof deletes a full-document selection spanning list-heavy content and leaves one empty editable paragraph, not an orphan list shell. | .tmp/slate-v2/packages/slate/test/delete-contract.ts; docs/plans/2026-05-07-slate-v2-core-structural-delete-normalization-ralplan.md; gitcrawl threads --numbers 2500 --include-closed --json ianstormtaylor/slate |
| #4121 | structural-delete-selection-window | Fixes | Core package proof deletes a selection from plain text through a formatted leaf ending at another formatted leaf boundary and preserves all unselected prefix/suffix text. | .tmp/slate-v2/packages/slate/test/delete-contract.ts; docs/plans/2026-05-07-slate-v2-core-structural-delete-normalization-ralplan.md; gitcrawl threads --numbers 4121 --include-closed --json ianstormtaylor/slate |
| #3965 | adjacent-marked-text-delete | Fixes | Core package proof Backspaces from an empty same-mark text at a block start and merges the block boundary without deleting both neighboring text runs. | .tmp/slate-v2/packages/slate/test/delete-contract.ts; docs/plans/2026-05-07-slate-v2-core-structural-delete-normalization-ralplan.md; gitcrawl threads --numbers 3965 --include-closed --json ianstormtaylor/slate |
| #5811 | normalization-fixpoint-and-loop-guard | Improves | Core package proof detects a custom normalization oscillation with the deterministic fixpoint error instead of exhausting a huge iteration budget; conflicting app normalizers still need app/schema correction. | .tmp/slate-v2/packages/slate/test/normalization-contract.ts; .tmp/slate-v2/packages/slate/src/editor/normalize.ts; docs/plans/2026-05-07-slate-v2-core-structural-delete-normalization-ralplan.md; gitcrawl threads --numbers 5811 --include-closed --json ianstormtaylor/slate |
| #3950 | normalization-transformed-node-rerun | Fixes | Core package proof transforms a node during custom normalization, then rechecks it so a later normalizer can finish the normalized state. | .tmp/slate-v2/packages/slate/test/normalization-contract.ts; .tmp/slate-v2/packages/slate/src/editor/normalize.ts; docs/plans/2026-05-07-slate-v2-core-structural-delete-normalization-ralplan.md; gitcrawl threads --numbers 3950 --include-closed --json ianstormtaylor/slate |
| #1654 | structural-isolating-boundaries | Improves | Core package proof wires existing isIsolating schema policy into collapsed Backspace and direct mergeNodes; split-specific closure remains unclaimed. | .tmp/slate-v2/packages/slate/src/transforms-text/delete-text.ts; .tmp/slate-v2/packages/slate/src/transforms-node/merge-nodes.ts; .tmp/slate-v2/packages/slate/test/delete-contract.ts; .tmp/slate-v2/packages/slate/test/transforms-contract.ts; docs/plans/2026-05-07-slate-v2-core-structural-delete-normalization-ralplan.md; gitcrawl threads --numbers 1654 --include-closed --json ianstormtaylor/slate |
| #2643 | transaction-validation-and-schema-veto | Related | The plan rejects a public schema-veto hook in this lane; deterministic core transforms must land before any validation interception API. | docs/plans/2026-05-07-slate-v2-core-structural-delete-normalization-ralplan.md; gitcrawl threads --numbers 2643 --include-closed --json ianstormtaylor/slate |
| #5972 | inline-delete-boundary-repro | Fixes | Core and browser proof cover the official inlines example path: clear the editable inline, press Backspace, and keep the preceding text unchanged while the empty inline is removed. | .tmp/slate-v2/packages/slate/src/transforms-text/delete-text.ts; .tmp/slate-v2/packages/slate/test/delete-contract.ts; .tmp/slate-v2/playwright/integration/examples/inlines.test.ts; docs/plans/2026-05-07-slate-v2-inline-delete-boundary-repro-ralplan.md; gitcrawl threads --numbers 5972 --include-closed --json ianstormtaylor/slate |
| #5977 | custom-operation-validation | Fixes | Core and DOM package proof show editor identity and DOM path lookup ignore user-attached custom operation lists, while replay rejects unknown operation records before they enter the operation log. | .tmp/slate-v2/packages/slate/test/interfaces-contract.ts; .tmp/slate-v2/packages/slate/test/operations-contract.ts; .tmp/slate-v2/packages/slate-dom/test/bridge.ts; docs/plans/2026-05-07-slate-v2-operation-extensibility-validation-ralplan.md; gitcrawl threads --numbers 5977 --include-closed --json ianstormtaylor/slate |
| #5400 | helper-namespace-global-collision | Fixes | Public helper value exports are NodeApi, ElementApi, PathApi, RangeApi, and peer *Api names while model types stay type-only, so docs/examples no longer import helper values that shadow DOM globals. | .tmp/slate-v2/packages/slate/test/public-surface-contract.ts; .tmp/slate-v2/packages/slate/test/interfaces-contract.ts; docs/plans/2026-05-13-slate-v2-api-helper-namespace-rename-ralplan.md; docs/slate-issues/open-issues-dossiers/5402-5250.md |
| #5558 | operation-type-guard-dx | Improves | Operation exposes concrete built-in subtype guards with runtime and TypeScript narrowing proof; this covers the requested guard family without opening custom operations globally. | .tmp/slate-v2/packages/slate/src/interfaces/operation.ts; .tmp/slate-v2/packages/slate/test/interfaces-contract.ts; .tmp/slate-v2/packages/slate/test/generic-operation-contract.ts; docs/plans/2026-05-07-slate-v2-operation-extensibility-validation-ralplan.md; gitcrawl threads --numbers 5558 --include-closed --json ianstormtaylor/slate |
| #3964 | insert-break-selection-placement | Fixes | Package proof splits at the end of a marked leaf and moves selection into the created block at [1,0]@0 with the mark placeholder preserved. | .tmp/slate-v2/packages/slate/test/snapshot-contract.ts; .tmp/completion-checks/slate-v2-core-caret-movement-word-insert-break-execution.md; gitcrawl threads --numbers 3964 --include-closed --json ianstormtaylor/slate |
| #3973 | word-move-across-leaves | Fixes | Package proof moves word selection from [0,0]@0 to [0,1]@3 when the first word spans sibling text leaves. | .tmp/slate-v2/packages/slate/test/transaction-contract.ts; .tmp/completion-checks/slate-v2-core-caret-movement-word-insert-break-execution.md; gitcrawl threads --numbers 3973 --include-closed --json ianstormtaylor/slate |
| #3499 | marked-enter-undo-caret | Fixes | Package proof covers the original two-part repro: marked Enter moves the bold word into the new block, places selection at the moved word start, and undo restores the marked paragraph plus selection. | .tmp/slate-v2/packages/slate-history/test/history-contract.ts; .tmp/slate-v2/packages/slate/src/transforms-node/split-nodes.ts; .tmp/slate-v2/packages/slate/test/snapshot-contract.ts; docs/plans/2026-05-07-slate-v2-marked-enter-undo-caret-ralplan.md; .tmp/completion-checks/slate-v2-marked-enter-undo-caret-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 3499 --include-closed --json |
| #4357 | marked-enter-new-block-focus | Fixes | Same marked-end Enter focus repro as #3964; package proof confirms the created block receives the collapsed selection. | .tmp/slate-v2/packages/slate/test/snapshot-contract.ts; .tmp/completion-checks/slate-v2-core-caret-movement-word-insert-break-execution.md; docs/slate-issues/test-candidate-map/4390-4269.md; gitcrawl neighbors ianstormtaylor/slate --number 3964 --limit 15 --json |
| #4195 | return-key-caret-placement | Related | Same return-key caret family as #3964; exact closure waits for matching repro proof. | docs/plans/2026-05-07-slate-v2-core-caret-movement-word-insert-break-ralplan.md; gitcrawl neighbors ianstormtaylor/slate --number 3964 --limit 15 --json |
| #3841 | firefox-insertbreak-word-move | Related | Custom insertBreak plus word movement overlaps this lane, but the original issue is Firefox-specific and needs browser proof before any fixed claim. | docs/plans/2026-05-07-slate-v2-core-caret-movement-word-insert-break-ralplan.md; gitcrawl neighbors ianstormtaylor/slate --number 3973 --limit 15 --json |
| #5629 | word-navigation-punctuation | Related | Word navigation pressure is adjacent to #3973, but punctuation/browser behavior is not the same as multi-leaf logical projection. | docs/plans/2026-05-07-slate-v2-core-caret-movement-word-insert-break-ralplan.md; docs/slate-issues/test-candidate-map/5655-5559.md |
| #4648 | word-boundary-punctuation-policy | Not claimed | Punctuation semantics are policy pressure, not the #3973 multi-leaf projection bug. | docs/plans/2026-05-07-slate-v2-core-caret-movement-word-insert-break-ralplan.md; docs/slate-issues/test-candidate-map/4741-4643.md |
| #3891 | multi-node-remove-range | Related | replace_children represents child-window removal pressure, but public remove-range helper semantics need separate proof. | docs/plans/2026-05-07-slate-v2-core-structural-delete-normalization-ralplan.md; gitcrawl threads --numbers 3891 --include-closed --json ianstormtaylor/slate |
| #2195 | performance-normalization-and-dirty-paths | Related | The plan requires dirty-window metadata so #5992 is not fixed by moving cost into dirty tracking; the text-node dirty-tracking issue itself is not closed. | docs/plans/2026-05-06-slate-v2-range-delete-replace-children-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 2195 --include-closed --json |
| #2405 | performance-normalization-and-dirty-paths | Related | Command-scoped normalization pressure is represented by the new dirty-window proof gate, not solved by one range op alone. | docs/plans/2026-05-06-slate-v2-range-delete-replace-children-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 2405 --include-closed --json |
| #2355 | selection-normalization-and-commit-boundaries | Related | replace_children must own newSelection and ref mapping, but it does not add a public selection-normalization hook. | docs/plans/2026-05-06-slate-v2-range-delete-replace-children-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 2355 --include-closed --json |
| #4104 | inline-void-and-void-selection | Related | Inline-void copy/cut is DOM/void selection pressure; moving structural cut/delete code must not regress it, but this plan does not close the repro. | docs/plans/2026-05-06-slate-v2-range-delete-replace-children-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 4104 --include-closed --json |
| #5089 | clipboard-fragment-insertion-shape | Fixes | Core package proof and DOM clipboard boundary proof preserve block separation when a rich multi-block fragment is inserted into the middle of a text block. | .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; .tmp/completion-checks/slate-v2-multiblock-fragment-middle-insert-execution.md; docs/plans/2026-05-07-slate-v2-multiblock-fragment-middle-insert-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 5089 --include-closed --json |
| #5080 | editor-nodes-reverse-iteration-order | Fixes | Core package proof shows state.nodes.entries({ reverse: true }) returns the exact reverse of forward matched traversal for nested matching entries. | .tmp/slate-v2/packages/slate/test/query-contract.ts; .tmp/slate-v2/packages/slate/src/editor/nodes.ts; .tmp/completion-checks/slate-v2-editor-nodes-reverse-order-ralplan.md; docs/plans/2026-05-07-slate-v2-editor-nodes-reverse-order-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 5080 --include-closed --json |
| #5684 | editor-nodes-traversal-ambiguity | Related | The issue names SlateEditor.nodes match traversal, but it gives no concrete document shape, predicate, or expected path sequence; the #5080 reverse-order lane cannot claim it without a real repro. | docs/plans/2026-05-07-slate-v2-editor-nodes-reverse-order-ralplan.md; gh issue view 5684 --repo ianstormtaylor/slate --comments --json number,title,state,body,comments,labels,url,updatedAt; docs/slate-issues/open-issues-dossiers/5760-5666.md; docs/slate-issues/test-candidate-map/5760-5666.md |
| #5028 | editor-nodes-pass-filtering | Related | Current v2 already exposes pass on EditorNodesOptions / NodeNodesOptions, but the #5080 lane only owns reverse traversal order and does not add a pass-predicate API claim. | .tmp/slate-v2/packages/slate/src/interfaces/editor.ts; .tmp/slate-v2/packages/slate/src/interfaces/node.ts; docs/plans/2026-05-07-slate-v2-editor-nodes-reverse-order-ralplan.md; docs/slate-issues/open-issues-dossiers/5064-4971.md |
| #3885 | docs-api-confusion-and-example-gaps | Not claimed | Selection-relative Editor.nodes docs are adjacent API confusion, but the #5080 lane changes query order semantics and does not edit docs/examples. | docs/plans/2026-05-07-slate-v2-editor-nodes-reverse-order-ralplan.md; docs/slate-issues/open-issues-dossiers/3948-3881.md; docs/slate-issues/test-candidate-map/3948-3881.md |
| #5412 | insert-fragment-explicit-target | Fixes | Core package proof shows insertFragment(..., { at }) honors the supplied target instead of ambient selection. | .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/completion-checks/slate-v2-insert-fragment-at-location-execution.md; docs/plans/2026-05-07-slate-v2-insert-fragment-at-location-ralplan.md; docs/slate-issues/test-candidate-map/5479-5403.md; docs/slate-issues/open-issues-dossiers/5479-5403.md |
| #5429 | insert-fragment-empty-node-caret | Fixes | Core package proof shows inserting a text-block fragment into an empty block places selection after inserted content. | .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/completion-checks/slate-v2-insert-fragment-at-location-execution.md; docs/plans/2026-05-07-slate-v2-insert-fragment-at-location-ralplan.md; docs/slate-issues/test-candidate-map/5479-5403.md; docs/slate-issues/open-issues-dossiers/5479-5403.md |
| #5630 | select-all-paste-delete-void-tail | Related | Select-all paste/delete around trailing block voids is delete-range pressure; exact unhang/void-tail browser closure needs its own proof. | docs/plans/2026-05-06-slate-v2-range-delete-replace-children-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 5630 --include-closed --json |
| #5947 | nested-editor-and-global-dom-maps | Improves | DOM bridge ownership rejects foreign path-tagged nodes and uses mounted path/runtime metadata, but the exact parent/child browser repro is not auto-closed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; docs/plans/2026-04-02-slate-dom-v2-bridge-proof-ralph.md |
| #5938 | dom-path-computation-tied-to-render | Improves | Mounted path/runtime fallback covers stale weak-map lookup pressure; the exact onChange findPath repro is not auto-closed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; docs/plans/2026-04-02-slate-dom-v2-bridge-proof-ralph.md |
| #4789 | external-selection-into-editor-dom-bridge | Fixes | Browser proof creates a native selection that starts outside the editor and ends inside it; Slate ignores it without a DOM point crash and remains usable after refocus. | .tmp/slate-v2/playwright/integration/examples/richtext.test.ts; docs/plans/2026-05-06-slate-v2-dom-selection-boundary-proof-ralplan.md |
| #4984 | nested-editor-and-global-dom-maps | Fixes | Browser proof creates a parent-editor selection that crosses into a nested editor; Slate ignores it without a DOM point crash and keeps input scoped to the focused editor. | .tmp/slate-v2/playwright/integration/examples/editable-voids.test.ts; docs/plans/2026-05-06-slate-v2-dom-selection-boundary-proof-ralplan.md |
| #4842 | nested-editor-and-global-dom-maps | Related | Nested editor offset pressure is represented in the DOM bridge plan, but exact history-offset repro closure is not claimed. | docs/plans/2026-04-02-slate-dom-v2-bridge-proof-ralph.md |
| #5760 | dom-range-zero-width-offset | Improves | Zero-width DOM offsets normalize in both directions, but raw iOS device closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-browser/test/browser/zero-width.browser.test.ts; docs/plans/2026-04-03-slate-dom-v2-zero-width-selection-proof-plan.md |
| #1971 | zero-width-sentinels-and-br-rendering | Not claimed | Zero-width bridge behavior is hardened, but replacing the sentinel strategy with ` | |
| ` is not claimed. | .tmp/slate-v2/packages/slate-browser/test/browser/zero-width.browser.test.ts; docs/plans/2026-04-03-slate-dom-v2-zero-width-selection-proof-plan.md | |||
| #2597 | zero-width-sentinels-and-br-rendering | Not claimed | Zero-width bridge behavior is hardened, but removing FEFF/ZWNBSP semantics is not claimed. | .tmp/slate-v2/packages/slate-browser/test/browser/zero-width.browser.test.ts; docs/plans/2026-04-03-slate-dom-v2-zero-width-selection-proof-plan.md |
| #4483 | react-decoration-subscription-performance | Improves | Projection stores and local subscriptions address dynamic decoration rerender pressure; PM-12 adds nested moved-node runtime-bucket proof, but the exact proposed legacy API is not auto-closed. | .tmp/slate-v2/scripts/benchmarks/browser/react/rerender-breadth.tsx; .tmp/slate-v2/packages/slate-react/test/projections-and-selection-contract.tsx; docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md |
| #4477 | collaboration-annotations-and-comments | Improves | Annotation and widget lanes support selection-anchored overlays; PM-12 adds runtime-id node-widget move/remove proof, but product-level collaborative comments are not auto-closed. | .tmp/slate-v2/packages/slate-react/test/annotation-store-contract.tsx; .tmp/slate-v2/packages/slate-react/test/widget-layer-contract.tsx; docs/slate-v2/decoration-roadmap.md; docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md |
| #5987 | react-decoration-and-selection-stability | Fixes | Exact async Editable.decorate browser proof keeps Slate selection and the browser DOM caret at the typed document end after delayed decoration callback identity change and DOM restructuring. | .tmp/slate-v2/packages/slate-react/src/components/editable-text-blocks.tsx; .tmp/slate-v2/site/examples/ts/decorations-async.tsx; .tmp/slate-v2/playwright/integration/examples/decorations-async.test.ts; docs/plans/2026-05-23-slate-v2-async-decoration-caret-cluster-proof.md; .tmp/gitcrawl/2026-05-04T145301Z-cluster-10-detail.json |
| #5867 | focus-restore-selected-inline-void | Related | Selected mention or inline-void focus restoration belongs to the DOM focus/selection bridge, but exact selected-mention legacy focus proof is not claimed; future v2 proof should target editor.api.dom.focus. | gitcrawl threads ianstormtaylor/slate --numbers 5867 --include-closed --json; .tmp/slate-v2/packages/slate-dom/src/plugin/dom-editor.ts; .tmp/slate-v2/playwright/integration/examples/mentions.test.ts |
| #6022 | android-ime-and-beforeinput | Related | The Android mark-toggle keyboard dismissal root belongs to the Android input runtime. Current package proof covers stale old-leaf selection after marked collapsed typing, but exact closure still needs Android/device proof for keyboard visibility and IME stability. | .tmp/slate-v2/packages/slate-react/src/hooks/android-input-manager/android-input-manager.ts; .tmp/slate-v2/packages/slate-react/test/android-input-manager-contract.test.ts; docs/plans/2026-05-23-slate-v2-android-mark-toggle-no-appium-proof.md; .tmp/gitcrawl/2026-05-04T145301Z-threads-6022-6027.json |
| #5983 | android-ime-and-beforeinput | Related | Android empty-node voice input belongs to the IME/input runtime family, but exact voice-input closure needs device proof. | .tmp/slate-v2/packages/slate-react/src/editable/composition-state.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-11-detail.json |
| #5183 | inline-void-and-void-selection | Related | Inline void boundary behavior is represented, but Android keyboard activation needs device proof. | .tmp/slate-v2/packages/slate-browser/test/core/scenario.test.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-12-detail.json |
| #5391 | inline-void-and-void-selection | Related | Inline void boundary behavior is represented, but iOS selection handle/caret proof is not claimed. | .tmp/slate-v2/packages/slate-browser/test/core/scenario.test.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-12-detail.json |
| #4400 | android-ime-and-beforeinput | Related | Android IME/composition ownership is represented, but Android Chrome IME device proof is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-13-detail.json |
| #5883 | android-ime-and-beforeinput | Related | Empty-node Android IME composition belongs to the input runtime family, but exact device proof is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/composition-state.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-13-detail.json |
| #5826 | mobile-and-browser-selection-quirks | Fixes | Huge-document browser proof clicks the top block, blurs the editor, scrolls to the final block, clicks back into the editor, and keeps the clicked final-block selection visible instead of restoring the stale top selection. | .tmp/slate-v2/playwright/integration/examples/huge-document.test.ts; .tmp/slate-v2/packages/slate-react/test/app-owned-customization.tsx; .tmp/gitcrawl/2026-05-04T145301Z-cluster-14-detail.json |
| #5538 | focus-scroll-restoration | Related | Programmatic focus/select-to-end scroll behavior belongs to focus and scroll-selection ownership, but exact whiteboard/readOnly toggle proof is not claimed. | gitcrawl threads ianstormtaylor/slate --numbers 5538 --include-closed --json; .tmp/slate-v2/packages/slate-dom/src/plugin/dom-editor.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts |
| #4392 | decoration-cross-node-and-void-access | Improves | Runtime range projection represents cross-node decoration pressure; PM-12 proves nested moved-node projection mapping, but full legacy decorate API parity is not claimed. | .tmp/slate-v2/packages/slate-react/test/projections-and-selection-contract.tsx; docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md |
| #3382 | react-decoration-and-selection-stability | Improves | Projection slices are keyed by runtime text ranges and survive structural path moves; exact legacy Text.decorations behavior is not the public v2 API. | .tmp/slate-v2/packages/slate-react/test/projections-and-selection-contract.tsx; docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md |
| #3352 | react-decoration-and-selection-stability | Improves | Cross-node projection is represented by range-to-text-slice projection; PM-12 proves nested moved-node mapping, but decorator callback API parity is not claimed. | .tmp/slate-v2/packages/slate-react/test/projections-and-selection-contract.tsx; docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md |
| #5568 | focus-and-initialization-timing | Related | React focus initialization has a current contract, but the exact historical empty-initial-value regression is not an auto-close claim. | .tmp/slate-v2/packages/slate-react/test/react-editor-contract.tsx; docs/slate-v2/references/architecture-contract.md |
| #4612 | react-controlled-value-and-external-updates | Improves | External replacement is explicit through editor initialization and tx.value.replace; controlled React value remains outside the fixed claim. Future document state fields must stay transaction-owned through initialValue normalization and tx.setField, with no new fixed/improved count until those contracts pass. | .tmp/slate-v2/packages/slate/test/state-tx-public-api-contract.ts; .tmp/slate-v2/packages/slate/test/create-editor-value-contract.ts; docs/plans/2026-05-04-slate-v2-react-editor-initialization-value-ralplan.md; docs/plans/2026-05-20-slate-v2-non-node-editor-state-architecture-ralplan.md |
| #3478 | react-focus-subscription-runtime | Related | Redux/external React updates belong to the React runtime/focus family, but the exact Redux repro is not claimed. | .tmp/slate-v2/packages/slate-react/src/components/slate.tsx; .tmp/gitcrawl/2026-05-04T145301Z-cluster-3-detail.json |
| #4001 | android-ime-and-beforeinput | Related | German keyboard placeholder input belongs to the first-character input/composition family, but exact keyboard proof is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-3-detail.json |
| #3497 | react-focus-subscription-runtime | Related | Parent-state focus churn belongs to React focus/selection ownership, but exact focus-loss repro is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-3-detail.json |
| #3777 | android-ime-and-beforeinput | Related | Firefox accented first-character insertion belongs to input/composition and DOM repair, but exact Firefox proof is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-3-detail.json |
| #5806 | custom-inline-selection-behavior | Related | Gesture selection over a custom inline element belongs to React selection reconciliation and DOM selection import, but exact slide-selection browser proof is not claimed. | gitcrawl threads ianstormtaylor/slate --numbers 5806 --include-closed --json; docs/slate-v2/ledgers/fork-issue-dossier.md; .tmp/slate-v2/packages/slate-react/test/selection-controller-contract.ts |
| #5690 | inline-boundary-double-click-delete | Related | Windows/Chrome double-click deletion before an inline belongs to inline-boundary DOM selection repair, but exact browser closure is not claimed. | gitcrawl threads ianstormtaylor/slate --numbers 5690 --include-closed --json; docs/slate-v2/ledgers/fork-issue-dossier.md; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts |
| #5689 | selection-gesture-directionality | Related | Triple-click and upward drag selection belongs to browser gesture selection import/export, but exact Chrome/Safari closure is not claimed. | gitcrawl threads ianstormtaylor/slate --numbers 5689 --include-closed --json; docs/slate-v2/ledgers/fork-issue-dossier.md; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts |
| #4995 | scroll-selection-customization | Related | scrollSelectionIntoView customization belongs to React selection-scroll policy, but exact arrow/sticky-header repro closure is not claimed. | gitcrawl threads ianstormtaylor/slate --numbers 4995 --include-closed --json; .tmp/slate-v2/packages/slate-react/test/rendering-strategy-and-scroll.tsx; .tmp/slate-v2/packages/slate-react/test/app-owned-customization.tsx |
| #5632 | adjacent-inline-badge-delete-caret | Related | Adjacent inline badge deletion belongs to inline/void selection and delete-caret ownership, but exact badge-browser repro closure is not claimed. | gitcrawl threads ianstormtaylor/slate --numbers 5632 --include-closed --json; docs/slate-issues/test-candidate-map/5655-5559.md; .tmp/slate-v2/playwright/integration/examples/inlines.test.ts |
| #5559 | shift-click-void-selection | Related | Shift-click selection through a void belongs to void selection import and browser selection reconciliation, but exact multi-browser closure is not claimed. | gitcrawl threads ianstormtaylor/slate --numbers 5559 --include-closed --json; docs/slate-issues/test-candidate-map/5655-5559.md; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts |
| #3909 | nested-contenteditable-target-ownership | Related | Nested contenteditable inside Slate is direct target-ownership pressure, but exact CodeMirror/void-node repro closure is not claimed. | gitcrawl threads ianstormtaylor/slate --numbers 3909 --include-closed --json; docs/slate-issues/open-issues-dossiers/3948-3881.md; .tmp/slate-v2/packages/slate-dom/src/plugin/dom-editor.ts |
| #3893 | button-focus-state | Related | Clicking a normal HTML button should not leave stale Slate focus state, but exact button-focus browser closure is not claimed. | gitcrawl threads ianstormtaylor/slate --numbers 3893 --include-closed --json; docs/slate-issues/open-issues-dossiers/3948-3881.md; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts |
| #5550 | web-component-selection-boundary | Not claimed | Web Component encapsulation changes the DOM ownership model; Slate v2 does not claim support for arbitrary encapsulated selection drag boundaries in this lane. | gitcrawl threads ianstormtaylor/slate --numbers 5550 --include-closed --json; docs/slate-issues/test-candidate-map/5558-5480.md; docs/slate-v2/ledgers/fork-issue-dossier.md |
| #5551 | firefox-rowspan-table-selection | Not claimed | Firefox rowspan table selection depends on custom table plugin semantics and a table-selection model; DOM bridge containment rows do not close it. | gitcrawl threads ianstormtaylor/slate --numbers 5551 --include-closed --json; docs/slate-issues/test-candidate-map/5558-5480.md; docs/slate-v2/ledgers/fork-issue-dossier.md |
| #5524 | vertical-navigation-soft-break-selection | Related | ArrowDown across soft breaks is selection/caret navigation pressure, but it belongs to the core caret/navigation lane unless browser proof shows a DOM bridge failure. | gitcrawl threads ianstormtaylor/slate --numbers 5524 --include-closed --json; docs/slate-issues/test-candidate-map/5558-5480.md; .tmp/slate-v2/packages/slate/src/editor/positions.ts |
| #5924 | structural-dom-cursor-exclusion | Not claimed | Structural DOM cursor exclusion asks for a new advanced layout boundary; the thread lacks an isolated repro and no public ignore-cursor API is claimed. | gitcrawl threads ianstormtaylor/slate --numbers 5924 --include-closed --json; docs/slate-issues/test-candidate-map/5994-5918.md; docs/slate-v2/ledgers/fork-issue-dossier.md |
| #5088 | mobile-and-browser-selection-quirks | Related | Scroll selection forwarding is represented, but exact after-update browser behavior is not claimed. | .tmp/slate-v2/packages/slate-react/test/app-owned-customization.tsx; .tmp/gitcrawl/2026-05-04T145301Z-cluster-19-detail.json |
| #5711 | dom-point-resolution-crashes | Related | DOM point crash pressure belongs to the fail-closed DOM selection import family, but the exact report is not proven as a fixed row. | docs/plans/2026-05-08-slate-v2-dom-selection-focus-bridge-ralplan.md; docs/slate-v2/ledgers/fork-issue-dossier.md; .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/test/selection-controller-contract.ts |
| #3634 | react-editor-focus-after-programmatic-change | Related | Programmatic focus followed by input belongs to React focus/input runtime ownership, but exact closure still needs a targeted browser proof row. | docs/plans/2026-05-08-slate-v2-dom-selection-focus-bridge-ralplan.md; docs/slate-v2/ledgers/fork-issue-dossier.md; .tmp/slate-v2/packages/slate-dom/src/plugin/dom-editor.ts; .tmp/slate-v2/packages/slate-react/test/selection-runtime-contract.test.ts |
| #4961 | react-editor-focus-after-programmatic-change | Related | Focus after inserting a new node is adjacent to focus/input runtime ownership, but exact closure still needs a targeted repro and proof row. | docs/plans/2026-05-08-slate-v2-dom-selection-focus-bridge-ralplan.md; docs/slate-v2/ledgers/fork-issue-dossier.md; .tmp/slate-v2/packages/slate-dom/src/plugin/dom-editor.ts; .tmp/slate-v2/packages/slate-react/test/selection-runtime-contract.test.ts |
| #5473 | mobile-and-browser-selection-quirks | Related | Scroll selection forwarding is represented, but exact delete-empty-paragraph behavior is not claimed. | .tmp/slate-v2/packages/slate-react/test/app-owned-customization.tsx; .tmp/gitcrawl/2026-05-04T145301Z-cluster-19-detail.json |
| #4376 | mobile-and-browser-selection-quirks | Fixes | WebKit browser proof blurs the editor into an external input, preserves the Slate model selection, refocuses the editor, and types at the preserved model point. | .tmp/slate-v2/playwright/integration/examples/document-state.test.ts; .tmp/slate-v2/packages/slate-react/test/selection-runtime-contract.test.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-20-detail.json |
| #5171 | mobile-and-browser-selection-quirks | Fixes | Firefox browser proof changes editor content while the editor is unfocused and an external input selection is active, without importing that external DOM selection into the editor model. | .tmp/slate-v2/playwright/integration/examples/document-state.test.ts; .tmp/slate-v2/packages/slate-react/test/selection-runtime-contract.test.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-20-detail.json |
| #5095 | android-ime-and-beforeinput | Related | Native text input strategy is represented, but exact iOS Safari Cyrillic spellcheck proof is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/model-input-strategy.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-22-detail.json |
| #5096 | android-ime-and-beforeinput | Related | Native text input strategy is represented, but exact macOS Safari Cyrillic spellcheck proof is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/model-input-strategy.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-22-detail.json |
| #3871 | triple-click-and-block-selection | Fixes | Browser triple-click on the richtext paragraph imports as the clicked block range only, without leaking into the next block. | .tmp/slate-v2/playwright/integration/examples/richtext.test.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-23-detail.json |
| #5847 | triple-click-and-block-selection | Fixes | Browser triple-click plus Backspace removes the selected block and leaves the next block editable at the caret target. | .tmp/slate-v2/playwright/integration/examples/richtext.test.ts; .tmp/slate-v2/packages/slate-react/src/editable/mutation-controller.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-23-detail.json |
| #5603 | input-event-boundary-semantics | Related | Browser proof covers start-of-content and number typing through beforeinput, while native input parity remains unclaimed. | .tmp/slate-v2/playwright/integration/examples/richtext.test.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-input-events.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-16-detail.json |
| #5669 | input-event-boundary-semantics | Related | Browser proof covers number typing through beforeinput and Backspace through a model-owned keydown delete command; native delete/number input parity remains unclaimed. | .tmp/slate-v2/playwright/integration/examples/richtext.test.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-input-events.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-16-detail.json |
| #3991 | inline-void-and-void-selection | Fixes | Browser Backspace from an empty paragraph immediately after a block void removes that paragraph and selects the void instead of deleting the void. | .tmp/slate-v2/playwright/integration/examples/images.test.ts; .tmp/slate-v2/packages/slate-react/src/editable/mutation-controller.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-17-detail.json |
| #4301 | inline-void-and-void-selection | Fixes | Browser Enter on a clicked selected block void inserts an editable paragraph after the void, matching keyboard-selected void behavior. | .tmp/slate-v2/playwright/integration/examples/images.test.ts; .tmp/slate-v2/packages/slate-react/src/editable/mutation-controller.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-17-detail.json |
| #4994 | android-ime-and-beforeinput | Related | Android input lifecycle is represented, but exact readOnly-change proof is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-18-detail.json |
| #5026 | android-ime-and-beforeinput | Related | Android input lifecycle is represented, but exact readOnly operation-loss proof is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-18-detail.json |
| #4802 | clipboard-html-fragment-serialization | Improves | Browser clipboard proof for a selected mention-shaped inline void exposes deterministic text/html and text/plain, preserves the Slate fragment payload, avoids FEFF and neighboring text leakage, and pastes visible content into an external contenteditable target; exact named other-editor closure is not claimed. | .tmp/slate-v2/playwright/integration/examples/mentions.test.ts; .tmp/slate-v2/packages/slate-dom/src/plugin/dom-clipboard-runtime.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; .tmp/completion-checks/slate-v2-clawsweeper-v2-clipboard-inline-void-execution.md |
| #4806 | clipboard-html-fragment-serialization | Fixes | Browser proof copies a selected mention-shaped inline void through the native clipboard, pastes it back into Slate, and cuts it with one mention remove_node, merged adjacent text, and model-owned caret repair. | .tmp/slate-v2/playwright/integration/examples/mentions.test.ts; .tmp/slate-v2/packages/slate-dom/src/plugin/dom-clipboard-runtime.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; .tmp/completion-checks/slate-v2-clawsweeper-v2-clipboard-inline-void-execution.md |
| #4074 | inline-boundary-cursor-movement | Fixes | Browser typing at the edge of an editable inline inserts text inside the inline instead of bouncing outside it. | .tmp/slate-v2/playwright/integration/examples/inlines.test.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-5-detail.json |
| #3148 | inline-boundary-cursor-movement | Fixes | Browser selection at the end of an inline and at the start of following text stays distinguishable before text insertion in Chromium and WebKit. | .tmp/slate-v2/playwright/integration/examples/inlines.test.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-25-detail.json |
| #3429 | inline-boundary-cursor-movement | Fixes | Browser caret targeting before a padded inline stays outside the padded inline, with the DOM selection still anchored in the preceding text node. | .tmp/slate-v2/playwright/integration/examples/inlines.test.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-5-detail.json |
| #4618 | inline-boundary-cursor-movement | Not claimed | The exact inline-boundary pressure is represented, but Slate v2 does not add a public normalizePoint extension point in this slice. | docs/plans/2026-05-06-slate-v2-dom-selection-boundary-proof-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 4074,3429,3148,4618 --include-closed --json |
| #3150 | inline-boundary-cursor-movement | Related | Tracker-like upstream issue is represented by inline DOM boundary selection pressure, but exact closure should use #3148. | .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/gitcrawl/2026-05-04T145301Z-cluster-25-detail.json |
| #3534 | history-and-undo-selection-state | Fixes | Package proof selects text spanning multiple blocks, presses Enter through insertBreak, undoes, and restores the exact original expanded selection. | .tmp/slate-v2/packages/slate-history/test/history-contract.ts; gitcrawl threads ianstormtaylor/slate --numbers 3534 --include-closed --json |
| #3551 | history-and-undo-selection-state | Fixes | Package proof moves a node with moveNodes, undoes, and restores the exact original tree plus selection. | .tmp/slate-v2/packages/slate-history/test/history-contract.ts; gitcrawl threads ianstormtaylor/slate --numbers 3551 --include-closed --json |
| #3705 | history-and-undo-selection-state | Improves | Package proof covers history undo after a partial set_selection patch and a cleared selection; the ignored-template issue still lacks a complete original browser repro. | .tmp/slate-v2/packages/slate-history/test/history-contract.ts; gitcrawl threads ianstormtaylor/slate --numbers 3705 --include-closed --json; docs/plans/2026-05-06-slate-v2-core-history-selection-undo-ralplan.md |
| #3756 | history-and-undo-selection-state | Related | Undo selection movement remains a broader related guard for #3499, but exact closure requires its original multi-block delete/selection scenario, not only marked Enter undo. | gitcrawl threads ianstormtaylor/slate --numbers 3756 --include-closed --json; docs/plans/2026-05-06-slate-v2-core-history-selection-undo-ralplan.md; docs/plans/2026-05-07-slate-v2-marked-enter-undo-caret-ralplan.md |
| #3921 | history-and-undo-selection-state | Improves | Package proof covers the model-level partial set_selection plus cleared-selection failure family; exact refocus closure still needs browser/focus proof. | .tmp/slate-v2/packages/slate-history/test/history-contract.ts; gitcrawl threads ianstormtaylor/slate --numbers 3921 --include-closed --json; docs/plans/2026-05-06-slate-v2-core-history-selection-undo-ralplan.md |
| #6053 | singleton-react-runtime | Fixes | useElementSelected() now has exact React proof for selected self-removal, and useElementSelected(path) returns false after the watched path is removed instead of reading a stale range. | .tmp/slate-v2/packages/slate-react/test/use-element-selected.test.tsx; .tmp/slate-v2/packages/slate-react/src/hooks/use-element-selected.ts; gitcrawl threads ianstormtaylor/slate --numbers 6053 --include-closed --json; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #3858 | stale-path-after-external-reset | Related | Emptying a deeply nested external value leaves stale descendant selection pressure, but the #6053 lane only owns element-selection hook self-removal proof. | gitcrawl threads ianstormtaylor/slate --numbers 3858 --include-closed --json; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #4081 | react-fast-refresh-and-editor-singleton | Related | CRA live-reload stale descendant paths are React lifecycle pressure, but not the selected-element self-removal hook repro. | docs/slate-issues/open-issues-ledger.md; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #4323 | external-value-dom-selection-sync | Related | DOM point resolution after external value/history replacement is adjacent stale mapping pressure, but not the exact useElementSelected range-read failure. | gitcrawl threads ianstormtaylor/slate --numbers 4323 --include-closed --json; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #4680 | react-editor-identity-hooks | Related | Editor identity pressure is represented by the provider replacement lane, with #5709 as the exact fixed claim; no separate #4680 closure is made here. | docs/slate-v2/ledgers/fork-issue-dossier.md; docs/plans/2026-05-04-slate-v2-clawsweeper-v2-react-runtime-ralplan.md; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #5181 | stale-react-callback-and-editor-props | Related | Native input listeners now read the latest handler without reattaching on callback identity changes, but the exact stale onChange / editor replacement repro is not closed. | gitcrawl threads ianstormtaylor/slate --numbers 5181 --include-closed --json; .tmp/slate-v2/packages/slate-react/test/input-router-contract.test.tsx; docs/plans/2026-05-14-slate-v2-callback-memoization-dx-ralplan.md |
| #3177 | render-extension-composition | Related | Renderer composition pressure is real, but raw Slate should not own a renderer registry. The accepted target is raw Editable render* escape hatches plus model/runtime extension middleware; Plate owns renderer/plugin composition. No fixed/improved claim until examples, docs, contracts, and proof land. | docs/plans/2026-05-16-slate-v2-render-element-extension-dx-ralplan.md; docs/plans/2026-05-16-slate-v2-unified-extension-composition-ralplan.md; docs/plans/2026-05-17-slate-v2-plate-fit-api-hard-cuts-ralplan.md; docs/slate-issues/gitcrawl-v2-sync-ledger.md; docs/slate-v2/references/pr-description.md#641-react-editable-renderer-registration |
| #5961 | onkeydown-render-warning | Related | Public key-command helper DX is a raw-Slate hard cut, but this stale DevTools onKeyDown render warning has no current repro and no runtime fix claim. Raw Slate keeps Editable onKeyDown; Plate owns product keymaps. | docs/slate-issues/gitcrawl-v2-sync-ledger.md; docs/slate-issues/open-issues-ledger.md; docs/plans/2026-05-17-slate-v2-plate-fit-api-hard-cuts-ralplan.md |
| #3802 | unified-extension-composition-api-dx | Related | The plan hard-cuts public wrapper composition and public author-facing editor.extend as target API architecture, but no exact issue closure exists until implementation removes stale public surfaces and public-surface/type contracts pass. | docs/plans/2026-05-16-slate-v2-unified-extension-composition-ralplan.md; docs/slate-issues/gitcrawl-v2-sync-ledger.md; .tmp/slate-v2/packages/slate/test/public-surface-contract.ts |
| #5771 | collaboration-selection-anchor-rebase | Improves | Core now has focused high-QPS remote insert versus local collapsed-selection proof, including same-block prefix bursts, same-offset contention, suffix inserts, split/merge, selected-node removal, local follow-up typing, and remote-history skip. Exact upstream collaboration/provider closure remains unclaimed until a real adapter/browser repro exists. | .tmp/slate-v2/packages/slate/test/collab-selection-stress-contract.ts; .tmp/slate-v2/packages/slate/test/collab-bookmark-position-contract.ts; .tmp/slate-v2/packages/slate/test/collab-canonical-reconcile-contract.ts; .tmp/slate-v2/packages/slate-react/test/selection-side-effect-policy-contract.ts; .tmp/slate-v2/packages/slate-react/test/app-owned-customization.tsx; .tmp/slate-v2/scripts/benchmarks/core/current/collab-readiness.mjs; .tmp/slate-v2/tmp/slate-collab-readiness-benchmark.json; docs/plans/2026-05-13-slate-v2-yjs-core-readiness-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 5771 --include-closed --json; docs/slate-issues/test-candidate-map/5912-5771.md |
| #5533 | collaboration-without-yjs | Related | PM-08 proves operation replay can converge three package peers, but Slate still does not ship a first-party OT or Yjs-free collaboration protocol. | .tmp/slate-v2/packages/slate/test/collab-history-runtime-contract.ts; docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md; docs/slate-issues/open-issues-dossiers/5558-5480.md |
| #1769 | focus-state-external-dom-ownership | Related | Clicking non-editable editor content belongs to focus and DOM ownership policy; no hook self-removal proof or claim is made. | gitcrawl threads ianstormtaylor/slate --numbers 1769 --include-closed --json; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #3585 | click-selection-timing | Related | Click selection timing races are DOM selection import pressure, not the useElementSelected stale path lifecycle. | gitcrawl threads ianstormtaylor/slate --numbers 3585 --include-closed --json; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #3412 | focus-loss-selection-retention | Related | Focus-out selection retention/nulling belongs to focus restoration policy; this lane does not prove toolbar/focus behavior. | gitcrawl threads ianstormtaylor/slate --numbers 3412 --include-closed --json; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #4317 | selection-event-render-callback-churn | Related | Registered renderers remove beginner render-callback identity pressure, but the exact onSelect render-callback repro still needs browser proof before any closure claim. | gitcrawl threads ianstormtaylor/slate --numbers 4317 --include-closed --json; .tmp/slate-v2/packages/slate-react/test/input-router-contract.test.tsx; .tmp/slate-v2/packages/slate-react/test/surface-contract.test.tsx; docs/plans/2026-05-14-slate-v2-callback-memoization-dx-ralplan.md; docs/plans/2026-05-14-slate-v2-example-memoization-hard-cut-ralplan.md |
| #4031 | placeholder-ime-empty-editor | Related | Empty-editor Japanese IME crash belongs to Mobile/IME input runtime proof, not this React selected-element hook lane. | gitcrawl threads ianstormtaylor/slate --numbers 4031 --include-closed --json; docs/plans/2026-05-07-slate-v2-mobile-ime-input-runtime-ralplan.md; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #5034 | android-readonly-selection-state | Related | Android readOnly selection loss is Mobile/IME/runtime policy and needs device proof; no hook self-removal claim. | gitcrawl threads ianstormtaylor/slate --numbers 5034 --include-closed --json; docs/plans/2026-05-07-slate-v2-mobile-ime-input-runtime-ralplan.md; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #4111 | legacy-ie11-selection-support | Not claimed | IE11/polyfill selection behavior is stale support debt unless reproduced on current supported targets. | gitcrawl threads ianstormtaylor/slate --numbers 4111 --include-closed --json; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #5402 | react-runtime-cleanup-noise | Not claimed | Unused variable cleanup does not affect the selected-element self-removal lifecycle. | gitcrawl threads ianstormtaylor/slate --numbers 5402 --include-closed --json; docs/plans/2026-05-08-slate-v2-use-element-selected-self-removal-ralplan.md |
| #5075 | typescript-mark-formatting-dx | Improves | Slate v2 now exposes type-only boolean mark key/object helpers and examples no longer copy local formatting-key mapped types. Exact issue closure still needs the original TypeScript repro proof. | .tmp/slate-v2/packages/slate/src/interfaces/text.ts; .tmp/slate-v2/packages/slate/test/generic-value-contract.ts; .tmp/slate-v2/site/examples/ts/custom-types.d.ts; .tmp/slate-v2/site/examples/ts/mark-utils.ts; docs/plans/2026-05-16-slate-v2-boolean-mark-key-type-helper-ralplan.md |
| #6051 | singleton-input-runtime | Related | Android Firefox/Samsung keyboard insertion belongs to the Android/mobile input runtime family. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #5989 | singleton-input-runtime | Related | Android Hangul placeholder composition belongs to first-character composition and placeholder input ownership. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #5984 | singleton-input-runtime | Related | Android Chinese IME backspace belongs to Android IME deletion/input ownership. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #5931 | singleton-input-runtime | Related | Windows text suggestion acceptance belongs to input/composition replacement-range ownership. Exact Windows suggestion proof is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/native-input-strategy.ts; docs/slate-issues/open-issues-dossiers/5994-5918.md |
| #5830 | singleton-input-runtime | Related | Blur during Japanese/Korean composition belongs to composition and focus lifecycle ownership. Chromium empty-placeholder composition blur now proves the public onBlur route; exact Japanese/Korean raw IME closure is not claimed. | .tmp/slate-v2/playwright/integration/examples/placeholder.test.ts; .tmp/slate-v2/site/examples/ts/custom-placeholder.tsx; docs/slate-issues/open-issues-dossiers/5912-5771.md |
| #5912 | singleton-ecosystem-boundary | Not claimed | Browser environments without composition events need capability policy; exact support depends on current target browser proof. Exact closure is not claimed. | docs/slate-issues/gitcrawl-recluster-map.md; current app-specific repro still required |
| #5874 | singleton-invalid-contract | Not claimed | Reusing the same Slate node object violates node identity ownership; future work should make the failure explicit, not support shared object reuse. Exact closure is not claimed. | docs/slate-issues/gitcrawl-recluster-map.md; raw Slate node identity contract |
| #5749 | singleton-dom-selection | Related | Shadow DOM drag/drop DOM point import belongs to the shadow DOM bridge family. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/index.ts |
| #5643 | singleton-input-runtime | Related | Android autocomplete leftovers belong to mobile input and composition cleanup. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #5509 | singleton-react-runtime | Related | MobX observer pressure belongs to external reactive rendering and React runtime ownership. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/components/slate.tsx; .tmp/slate-v2/packages/slate-react/src/decoration-source.ts; .tmp/slate-v2/packages/slate-react/test/app-owned-customization.tsx |
| #5355 | singleton-dom-selection | Not claimed | The exact repro requires app-rendered colgroup / col nodes that omit editable descendants. Raw missing DOM is unsupported unless a Slate-owned DOM coverage boundary is registered. | gitcrawl threads ianstormtaylor/slate --numbers 5355 --include-closed --json; docs/plans/2026-05-06-slate-v2-dom-selection-boundary-proof-ralplan.md |
| #5281 | singleton-api-dx | Not claimed | Controlled React value remains outside the v2 public contract; external replacement uses explicit editor APIs. Exact closure is not claimed. | .tmp/slate-v2/packages/slate/test/state-tx-public-api-contract.ts; docs/plans/2026-05-04-slate-v2-react-editor-initialization-value-ralplan.md |
| #5130 | singleton-input-runtime | Related | Firefox Android predictive typing belongs to mobile input runtime proof. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #5107 | singleton-dom-selection | Related | Shadow DOM findEventRange belongs to event-to-range DOM bridge ownership. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/index.ts |
| #5087 | singleton-dom-selection | Related | Visible inline void spacer belongs to inline void selection/rendering boundary policy. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/index.ts |
| #5050 | singleton-input-runtime | Related | Text insertion accept/reject belongs to beforeinput/input command policy, not a separate uncontrolled hook. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #4532 | android-markdown-shortcut-flush | Related | Android markdown shortcut failure belongs to Android pending-diff flush timing plus insertText transform middleware ownership. Implementation removes example-side Android flush plumbing and adds local regression proof; exact closure still needs raw Android device proof. | docs/plans/2026-05-18-slate-v2-android-markdown-shortcut-flush-dx-ralplan.md; .tmp/slate-v2/site/examples/ts/markdown-shortcuts.tsx; .tmp/slate-v2/packages/slate-react/src/hooks/android-input-manager/android-input-manager.ts; .tmp/slate-v2/packages/slate-react/test/android-input-manager-contract.test.ts; .tmp/slate-v2/playwright/integration/examples/markdown-shortcuts.test.ts |
| #5014 | singleton-input-runtime | Related | Firefox CJK duplication/crash belongs to IME/composition runtime proof. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #4851 | singleton-ecosystem-boundary | Not claimed | KaTeX DOM point crashes need app-rendered DOM bridge proof; external DOM is not automatically supported. Exact closure is not claimed. | docs/slate-issues/gitcrawl-recluster-map.md; current app-specific repro still required |
| #4658 | singleton-dom-selection | Related | Custom table text outside table belongs to table boundary and invalid DOM import policy. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/index.ts |
| #2558 | table-cell-selection-model | Not claimed | Multi-cell table selection requires an explicit table selection model; DOM bridge containment rows do not close the requested whole-table/cell-range selection behavior. | gitcrawl threads ianstormtaylor/slate --numbers 2558 --include-closed --json; docs/editor-test-harvester/lexical/report.md; .tmp/slate-v2/playwright/integration/examples/tables.test.ts |
| #4643 | singleton-dom-selection | Related | Invalid selection throwing belongs to fail-closed DOM selection repair. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/index.ts |
| #4581 | singleton-dom-selection | Related | Firefox void/decorated deletion then insert belongs to void/decorated DOM selection repair. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/index.ts |
| #4559 | singleton-core-engine | Fixes | Package proof deletes a selected text fragment, undoes, restores the text, and reselects the restored fragment. | .tmp/slate-v2/packages/slate-history/test/history-contract.ts; gitcrawl threads ianstormtaylor/slate --numbers 4559 --include-closed --json |
| #4348 | singleton-input-runtime | Related | Android backspace behavior belongs to mobile delete/input runtime proof. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #4337 | singleton-dom-selection | Related | Shadow DOM image drag/drop belongs to shadow DOM and media/void DOM bridge ownership. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/index.ts |
| #4223 | singleton-input-runtime | Not claimed | Alternate Android hook design is product/API direction evidence, not an issue closure. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #4088 | singleton-dom-selection | Related | Mention range DOM point failure belongs to mention/inline DOM range bridge ownership. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/index.ts |
| #4076 | docs-example-and-support-noise | Not claimed | Search-highlighting example DX is reviewed, but raw Slate should expose generic range helpers instead of product search, color, or case-option APIs. | docs/plans/2026-05-18-slate-v2-search-highlighting-dx-ralplan.md; docs/slate-issues/gitcrawl-v2-sync-ledger.md; docs/slate-issues/test-candidate-map/4160-4074.md |
| #4067 | singleton-input-runtime | Related | Composition after select-all belongs to composition/input event runtime ownership. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #3918 | singleton-dom-selection | Related | Page-refresh delete/insert DOM point crash belongs to DOM selection import/export repair. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/index.ts |
| #3641 | singleton-dom-selection | Related | Selection failure error strictness belongs to fail-closed DOM bridge policy. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-dom/test/bridge.ts; .tmp/slate-v2/packages/slate-react/src/editable/selection-reconciler.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/index.ts |
| #3568 | singleton-input-runtime | Related | onDOMBeforeInput is the raw native escape hatch; public onCommand / EditableCommand* are cut, while Slate-owned native format handling remains internal/runtime-owned. Exact original crash closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/editing-kernel.ts; .tmp/slate-v2/packages/slate-react/test/editable-behavior.tsx; docs/plans/2026-05-17-slate-v2-plate-fit-api-hard-cuts-ralplan.md |
| #3586 | format-beforeinput-dom-selection | Related | Native format handling stays runtime-owned after the public onCommand cut; exact DOMPoint crash closure still needs the original repro proof. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/editing-kernel.ts; .tmp/slate-v2/packages/slate-react/test/editable-behavior.tsx; docs/plans/2026-05-17-slate-v2-plate-fit-api-hard-cuts-ralplan.md |
| #4681 | singleton-input-runtime | Related | Raw onDOMBeforeInput remains a native escape hatch, but this lane does not claim paste-specific onDOMBeforeInput behavior. | .tmp/slate-v2/packages/slate-react/src/components/editable.tsx; .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; docs/plans/2026-05-14-slate-v2-callback-memoization-dx-ralplan.md |
| #3470 | singleton-input-runtime | Related | Android text selection/cursor movement belongs to mobile selection/input runtime proof. Exact closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/runtime-before-input-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-composition-events.ts; .tmp/slate-v2/packages/slate-react/src/editable/runtime-android-engine.ts |
| #1498 | rtl-and-bidi-selection-behavior | Related | PM-13 browser proof covers RTL DOM selection offset mapping and RTL visual geometry direction, plus wrapped-line rectangles. The exact RTL Enter/new-line caret repro is not closed. | .tmp/slate-v2/packages/slate-browser/test/browser/selection.browser.test.ts; docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md |
| #3309 | singleton-react-runtime | Related | Decorated text selection belongs to projection/decoration DOM stability. PM-12 strengthens package mapping proof, but exact Firefox decorated-selection browser closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/components/slate.tsx; .tmp/slate-v2/packages/slate-react/src/decoration-source.ts; .tmp/slate-v2/packages/slate-react/test/app-owned-customization.tsx; .tmp/slate-v2/packages/slate-react/test/projections-and-selection-contract.tsx |
| #2051 | singleton-performance-benchmark | Improves | Leaf rerender pressure is represented by v2 render/runtime performance gates. Exact closure is not claimed. | .tmp/slate-v2/scripts/benchmarks; docs/plans/2026-05-03-slate-v2-dom-present-large-doc-phase-6-plan.md |
| #5328 | clipboard-fragment-trust-boundary | Improves | Malformed MIME payloads, malformed embedded HTML data-slate-fragment, invalid JSON, URI-decode failures, and non-array JSON now fail closed; exact browser repro closure still needs browser proof. | .tmp/slate-v2/packages/slate-dom/src/plugin/dom-clipboard-runtime.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; .tmp/completion-checks/slate-v2-clawsweeper-v2-clipboard-serialization-execution.md |
| #4857 | clipboard-fragment-trust-boundary | Improves | Foreign HTML select-all paste belongs to the same fail-closed import family; exact NYTimes/richtext browser repro closure is not claimed. | .tmp/slate-v2/packages/slate-dom/src/plugin/dom-clipboard-runtime.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; gitcrawl --json threads ianstormtaylor/slate --numbers 4857 |
| #5233 | clipboard-schema-isolation | Fixes | Custom fragment format keys now isolate both application/${clipboardFormatKey} payloads and embedded HTML fallback fragments; mismatched custom-key HTML falls back to plain text. | .tmp/slate-v2/packages/slate-react/src/plugin/with-react.ts; .tmp/slate-v2/packages/slate-dom/src/plugin/with-dom.ts; .tmp/slate-v2/packages/slate-dom/src/plugin/dom-clipboard-runtime.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; .tmp/completion-checks/slate-v2-clawsweeper-v2-clipboard-api-extension-surface-execution.md |
| #3486 | clipboard-schema-isolation | Fixes | Custom setData id pressure is covered by the options-object clipboardFormatKey, keyed internal MIME payloads, and keyed embedded HTML fallback fragments. | .tmp/slate-v2/packages/slate-dom/src/plugin/with-dom.ts; .tmp/slate-v2/packages/slate-react/src/plugin/with-react.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; .tmp/completion-checks/slate-v2-clawsweeper-v2-clipboard-api-extension-surface-execution.md |
| #1024 | clipboard-schema-isolation | Improves | MIME-typing document/fragment identity maps to custom fragment format keys and keyed embedded HTML fallback; no full document MIME system is claimed. | .tmp/slate-v2/packages/slate-dom/src/plugin/dom-clipboard-runtime.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; gitcrawl threads ianstormtaylor/slate --numbers 1024 --include-closed --json |
| #4613 | clipboard-extension-surface | Improves | Extensible insertData maps to public DOMClipboardInsertDataHandler typing and typed rich HTML/image examples. The Plate-fit hard-cut plan preserves clipboard as input ingress only and does not broaden method override or product paste-rule claims. | .tmp/slate-v2/packages/slate-dom/src/plugin/dom-editor.ts; .tmp/slate-v2/site/examples/ts/paste-html.tsx; .tmp/slate-v2/site/examples/ts/images.tsx; .tmp/slate-v2/site/examples/ts/rendering-strategy-runtime.tsx; gitcrawl threads ianstormtaylor/slate --numbers 4613 --include-closed --json; docs/plans/2026-05-17-slate-v2-plate-fit-api-hard-cuts-ralplan.md |
| #4569 | clipboard-extension-surface | Fixes | insertData documentation states handler ordering, return semantics, custom fragment key behavior, and extension-owned rich HTML fallback policy. Current accepted wording describes typed clipboard ingress, not public string capabilities. | .tmp/slate-v2/docs/libraries/slate-react/react-editor.md; .tmp/slate-v2/docs/libraries/slate-react/with-react.md; .tmp/completion-checks/slate-v2-clawsweeper-v2-clipboard-api-extension-surface-execution.md; docs/plans/2026-05-17-slate-v2-plate-fit-api-hard-cuts-ralplan.md |
| #4440 | clipboard-output-customization | Related | Plain-text/HTML output customization is valid pressure, but Slice 5 only covers input customization and schema-isolated fragment transport. Exact closure is not claimed. | gitcrawl threads ianstormtaylor/slate --numbers 4440 --include-closed --json; docs/plans/2026-05-04-slate-v2-clawsweeper-v2-clipboard-serialization-ralplan.md |
| #3557 | extension-method-overrides | Related | General insertNode/insertFragment override pressure belongs to v2 extension middleware across transforms, queries, normalizers, operations.apply, and onCommit; setup handles extension-local runtime installation. No exact legacy method override report is closed until implementation proof covers the full surface. | gitcrawl threads ianstormtaylor/slate --numbers 3557 --include-closed --json; docs/plans/2026-05-04-slate-v2-clawsweeper-v2-clipboard-serialization-ralplan.md; docs/plans/2026-05-16-slate-v2-unified-extension-composition-ralplan.md; docs/plans/2026-05-18-slate-v2-extension-slots-ralplan.md |
| #4542 | clipboard-fragment-insertion-shape | Related | Empty-block paste wrapper behavior belongs to fragment insertion shape and selection placement; the #5089 proof does not cover the nested-wrapper empty-block repro. | .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; docs/plans/2026-05-04-slate-v2-clawsweeper-v2-clipboard-serialization-ralplan.md; docs/plans/2026-05-07-slate-v2-multiblock-fragment-middle-insert-ralplan.md |
| #3155 | clipboard-fragment-insertion-shape | Related | General fragment non-merging policy is broader than the fixed #5089 middle-paragraph multi-block insertion proof. | .tmp/slate-v2/packages/slate/src/transforms-text/insert-fragment.ts; docs/plans/2026-05-07-slate-v2-multiblock-fragment-middle-insert-ralplan.md; docs/slate-issues/test-candidate-map/3313-2733.md; docs/slate-issues/open-issues-dossiers/3313-2733.md; gitcrawl threads ianstormtaylor/slate --numbers 3155 --include-closed --json |
| #5151 | clipboard-target-block-preservation | Improves | Rich Slate fragment insertion now preserves the target text-block type when a single text-block fragment replaces selected target text; exact browser repro closure is not claimed. | .tmp/slate-v2/packages/slate/src/transforms-text/insert-fragment.ts; .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.ts; .tmp/completion-checks/slate-v2-clawsweeper-v2-clipboard-fragment-insertion-shape-execution.md |
| #3857 | clipboard-structural-cut-delete | Improves | Selected block void cut writes model-backed clipboard data, removes the void block, and requests model-owned DOM repair; exact images-example browser closure is not claimed. | .tmp/slate-v2/packages/slate-react/src/editable/clipboard-input-strategy.ts; .tmp/slate-v2/packages/slate-react/test/dom-coverage-native-bridge-contract.test.ts; .tmp/completion-checks/slate-v2-clawsweeper-v2-clipboard-structural-cut-delete-execution.md |
| #3801 | clipboard-structural-cut-delete | Improves | Core deletion across a list between text blocks removes the list structure without leaving an orphan list-item; exact richtext browser cut closure is not claimed. | .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/completion-checks/slate-v2-clawsweeper-v2-clipboard-structural-cut-delete-execution.md |
| #3469 | clipboard-structural-cut-delete | Improves | Model fragment extraction for a whole selected list keeps the wrapping list element; exact external HTML and whole-list browser deletion closure are not claimed. | .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/completion-checks/slate-v2-clawsweeper-v2-clipboard-structural-cut-delete-execution.md |
| #4716 | clipboard-schema-isolation | Related | Table copy belongs to app schema serialization and clipboard strategy; no table-specific raw Slate HTML serializer or browser table repro closure is claimed. | docs/plans/2026-05-04-slate-v2-clawsweeper-v2-clipboard-serialization-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 4716 --include-closed --json |
| #2694 | clipboard-shortcuts-and-transfer-events | Not claimed | Shift+Delete needs OS/browser shortcut and clipboard transfer proof; Slice 4 only hardens cut events that already arrive with clipboard data. | docs/plans/2026-05-04-slate-v2-clawsweeper-v2-clipboard-serialization-ralplan.md; gitcrawl threads ianstormtaylor/slate --numbers 2694 --include-closed --json |
| #5894 | link-exit-behavior | Not claimed | Link exit behavior is plugin/presentation policy in the current issue map; Lexical link rows can inspire raw inline-boundary proof, but no live core repro or raw Slate link policy is claimed. | docs/slate-issues/test-candidate-map/5912-5771.md; docs/slate-issues/open-issues-ledger.md; docs/editor-test-harvester/lexical/slate-processing-ledger.md |
| #4730 | void-node-deletion-and-empty-editor | Related | Select-all Backspace with a trailing image/void is adjacent to structural delete and void-tail handling; current rows do not replay this images-example select-all repro. | docs/slate-issues/test-candidate-map/4741-4643.md; docs/slate-issues/open-issues-ledger.md; docs/editor-test-harvester/lexical/slate-processing-ledger.md; docs/plans/2026-05-09-slate-v2-lexical-harvest-test-processing-ralplan.md |
| #3387 | triple-click-selection-and-paragraph-replacement | Related | Current triple-click rows prove selection import and selected-block Backspace behavior; paragraph-selection-then-typing replacement still needs its exact browser row. | docs/slate-issues/test-candidate-map/3433-3317.md; docs/slate-issues/open-issues-ledger.md; docs/editor-test-harvester/lexical/slate-processing-ledger.md; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts |
| #3872 | triple-click-and-inline-selection | Related | Current #3871 proof covers clicked-block import without leaking into the next block; inline-child full paragraph selection needs an explicit browser row before closure. | docs/slate-issues/test-candidate-map/3878-3798.md; docs/slate-issues/open-issues-ledger.md; docs/editor-test-harvester/lexical/slate-processing-ledger.md; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts |
This is planning/accounting sync for
docs/plans/2026-05-07-slate-v2-mobile-ime-input-runtime-ralplan.md. It adds
no fixed issue claims and no improved issue claims. Exact mobile/IME closure
still needs matching browser or raw-device proof.
| Route | Count | Issues | Claim policy |
|---|---|---|---|
| Existing matrix and dossier | 23 | #6022, #5989, #5984, #5983, #5931, #5883, #5830, #5643, #5281, #5183, #5130, #3777, #3497, #3478, #3150, #5088, #5050, #5014, #4994, #4400, #4223, #4067, #4001 | Keep existing related/not-claimed rows; do not promote without exact proof. |
| Matrix backfill from existing dossier | 3 | #5711, #3634, #4961 | Added as related rows in this pass. |
| Long-form proof-route backlog | 44 | #5891, #5836, #5805, #5680, #5666, #5653, #5493, #5375, #5371, #5291, #5175, #5173, #5167, #3873, #3695, #3611, #3587, #5099, #5083, #5078, #5034, #5023, #4959, #4861, #4770, #4719, #4693, #4640, #4602, #4543, #4531, #4521, #4372, #4354, #4353, #4269, #4232, #4136, #4085, #4031, #4030, #3943, #3942, #3882 | Related/proof-route only until a later batch writes exact repro sections and proof. |
| Matrix-only future proof | 56 | #5697, #5639, #5611, #5569, #5487, #5484, #5481, #5433, #5430, #5420, #5398, #5380, #5274, #5213, #5181, #5152, #3878, #3858, #3821, #3742, #3696, #3601, #3582, #3432, #3412, #3354, #3325, #3317, #3162, #5117, #5010, #5004, #4795, #4738, #4721, #4712, #4704, #4696, #4681, #4673, #4560, #4541, #4495, #4466, #4323, #4317, #4316, #4309, #4094, #4046, #4010, #3947, #3929, #3926, #3917, #3911 | Keep as future proof pressure; no PR auto-close text. |
| Matrix-only non-claim | 19 | #5418, #5207, #3781, #3780, #3760, #3618, #3460, #3304, #3303, #3222, #4621, #4457, #4426, #4233, #4165, #4089, #4081, #2564, #2465 | Keep out of fixed/improved language; these are policy/API pressure only. |
| Drift rows aligned | 4 | #6022, #5983, #5183, #5088 | Dossier status aligns to related; exact proof may promote later. |
This is planning/accounting sync for
docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md.
It adds no fixed issue claims and no improved issue claims. PM-10 and PM-09
only choose the next implementation owners.
| Route | Count | Issues | Claim policy |
|---|---|---|---|
| Existing input-runtime matrix/dossier rows | 15 | #6051, #6022, #5989, #5984, #5983, #5931, #5830, #5643, #5883, #4400, #5603, #5669, #4223, #3470, #2051 | Preserve current Related, Not claimed, or Improves statuses; do not promote from harvest rows alone. |
| Proof-needed input pressure | 4 | #4466, #5493, #5974, #5918 | Keep as future proof or needs-repro pressure until a matching keyboard, IME, browser, or raw-device row exists. |
| Routed to later proof slices | 1 | #3309 | Treat as PM-12/PM-13 projection and browser-selection pressure, not PM-10/PM-09 closure. |
| PR prose sync | 0 | none | docs/slate-v2/references/pr-description.md stays unchanged because no PR-facing claim count changes. |
This is planning/accounting sync for PM-08 in
docs/plans/2026-05-10-slate-v2-all-editor-harvest-test-processing-ralplan.md.
It adds no fixed issue claims and no improved issue claims. The new package row
proves core replay convergence only; it is not slate-yjs, OT, browser
collaboration, or high-QPS selection closure.
| Route | Count | Issues | Claim policy |
|---|---|---|---|
| Existing collaboration/operation rows updated | 4 | #5771, #1770, #2288, #3741 | Preserve current Related or Improves policy; add PM-08 core replay proof where it is relevant, but do not promote exact issue closure. |
| New related collaboration API row | 1 | #5533 | Add as Related; PM-08 proves operation replay convergence but not a first-party collaboration layer. |
| Explicit future-proof boundary | 2 | high-QPS remote selection, simultaneous/concurrent typing rebase | Keep for PM-07/future collaboration-selection work; PM-08 does not claim those rows. |
| PR prose sync | 0 | none | docs/slate-v2/references/pr-description.md stays unchanged because no PR-facing claim count changes. |
This is planning/accounting sync for
docs/plans/2026-05-08-slate-v2-performance-scalability-slate-issues-ralplan.md.
It adds no fixed issue claims and no new improved issue claims. Existing
performance Improves rows stay conservative, and exact closure still needs
the proof rows named in the plan.
| Route | Count | Issues | Claim policy |
|---|---|---|---|
| Existing explicit matrix rows | 13 | #6038, #3656, #4141, #5131, #3430, #5945, #4056, #5992, #3752, #2195, #2405, #4483, #2051 | Preserve current Improves, Related, and Not claimed statuses; do not promote from planning or headless benchmark proof alone. |
| Existing matrix macro/future-proof rows | 7 | #5433, #5420, #5274, #4317, #3354, #3926, #5697 | Keep as future proof pressure or guard rows; no PR auto-close text. |
| Performance proof-route backlog | 10 | #2733, #2669, #790, #5216, #5592, #4202, #4210, #3748, #5349, #4025 | Related, proof-needed, or needs-repro until an execution slice adds exact benchmark, browser, retained-memory, or static-rendering proof. |
| Policy/API/accessibility non-claims | 4 | #2465, #2564, #3892, #2572 | Keep out of fixed/improved performance language; these are DX, ecosystem, or release-guard pressure only. |
| PR prose sync | 3 | #5945, #4056, #5992 | Existing PR text remains exact. No new PR performance text is added by this planning pass. |
This is planning/accounting sync for
docs/plans/2026-05-16-slate-v2-unified-extension-composition-ralplan.md.
It adds no fixed issue claims and no improved issue claims. The plan changes
the proposed public API direction, so related issue rows must explicitly track
which claims stay conservative.
| Route | Count | Issues | Claim policy |
|---|---|---|---|
| New related public API row | 1 | #3802 | Add as Related; unified extension composition is public API/type/extension DX pressure, but exact closure requires implementation and public-surface/type proof. |
| Existing render composition row updated | 1 | #3177 | Preserve Related; creation-time extensions strengthen the renderer-composition direction, but example/docs cleanup and proof remain required. |
| Existing method override row updated | 1 | #3557 | Preserve Related; this plan requires full extension middleware coverage, but does not restore legacy method-slot monkeypatching or close the exact insert override report. |
| Existing fix/improve rows preserved | 12 | #6013, #5709, #5233, #3486, #4613, #3534, #3551, #4559, #3499, #3705, #3921, #3752 | Do not promote or demote from planning. Later implementation must keep these proof owners green when built-in packages become extension factories. |
| Existing collaboration rows preserved | 2 | #1770, #3741 | Keep Related; extension lists must preserve operation middleware and commit metadata, but no operation-merging utility or moved-node payload closure is claimed. |
| PR prose sync | 0 | none | docs/slate-v2/references/pr-description.md is synced to the final API law: creation-time extensions, replayable state / tx, installed editor.api handles, and no new issue claim. |
This is planning and execution accounting sync for
docs/plans/2026-05-17-slate-v2-normalizer-extension-dx-ralplan.md.
It adds no fixed issue claims and no improved issue claims. Ralph implemented
the normalizer authoring shape for first-party examples and added source,
benchmark, and browser proof, but the normalization issue rows stay conservative
because no exact upstream repro is closed by this slice.
| Route | Count | Issues | Claim policy |
|---|---|---|---|
| New related implementation-pressure row | 1 | #4641 | Add as Related; normalizeNode property-update pressure is relevant to normalizer authoring, but exact closure requires package proof for the original property-copy/update behavior. |
| Existing related API/DX rows preserved | 3 | #4701, #3275, #2039 | Keep as related or not claimed; scoped normalizer tx improves authoring, but it does not add a custom empty-text factory, path-only normalizeNode, or named infinite-loop diagnostics. |
| Existing normalization fix/improve rows preserved | 2 | #3950, #5811 | Preserve current Fixes #3950 and Improves #5811 from the structural normalization proof; this plan does not change those claims. |
| Existing normalization policy/perf rows preserved | 6 | #3465, #2643, #2405, #2195, #2355, #3430 | Keep as not claimed or related; forced-layout normalizer DX does not add initial-value normalization, schema veto, command-scoped schema evaluation, text-node dirty tracking, selection normalization, or inline-heavy performance proof. |
| PR proof sync | 1 | normalizers.editor / normalizers.node proof | docs/slate-v2/references/pr-description.md records the implemented API and proof references, but no fixed or improved issue claim is added. |
When a Slate Ralplan or Ralph execution slice fixes behavior:
docs/slate-issues/open-issues-ledger.md.Fixed Issue Claims.Related Issue Matrix.