Back to Plate

Slate v2 Issue Coverage Matrix

docs/slate-v2/ledgers/issue-coverage-matrix.md

53.0.6267.1 KB
Original Source

Slate v2 Issue Coverage Matrix

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.

Rules

  • Use Fixes #.... only when the exact issue reproduction is covered by implementation and proof.
  • Use Improves #.... when the PR materially improves the reported behavior, but the original issue has remaining scope.
  • Use Related #.... when the issue shares the same cluster or runtime boundary, but the PR does not prove the exact repro.
  • Use Not claimed #.... when the issue looked relevant by keyword, but the PR intentionally does not address it.
  • Performance issues need benchmark proof.
  • Browser, IME, mobile, clipboard, selection, and DOM bridge issues need browser or device proof matching the claim.
  • Docs/support issues can be fixed by docs/examples only when the ledger categorizes the issue as docs/support or examples noise.

Fixed Issue Claims

Add one line for every issue the PR is allowed to auto-close:

md
- Fixes #....: <description tied to the verified behavior>

Current fixed issue claims:

  • Fixes #6013: React providers accept pre-initialized editor instances without a provider-level initialValue; editor state is seeded during editor creation.
  • Fixes #5605: The public React initialization path has no duplicate provider-level initialValue requirement.
  • Fixes #5709: React provider hook consumers receive the replacement editor when <Slate editor> changes.
  • Fixes #5233: Custom fragment format keys isolate both internal MIME payloads and embedded HTML fallback fragments.
  • Fixes #3486: Custom clipboard format keys isolate internal fragment transport.
  • Fixes #4569: insertData docs state handler ordering, return semantics, and fallback behavior.
  • Fixes #6034: The tables example preserves the caret in the last table cell after the trailing paragraph is removed, ArrowDown is pressed, and text is typed.
  • Fixes #3871: The richtext example imports a browser triple-click as the clicked block only, without leaking selection into the following block.
  • Fixes #5847: Browser triple-click plus Backspace removes the selected block instead of emptying its contents.
  • Fixes #3991: Backspace from an empty paragraph immediately after a selected block void removes the paragraph and selects the void instead of deleting the void.
  • Fixes #4301: Enter on a clicked selected block void inserts an editable paragraph after the void, matching arrow-key selected void behavior.
  • Fixes #4074: The inlines example can type inside an editable inline at the inline edge in Chromium.
  • Fixes #3148: Inline edge selections keep the inline end and following text start distinct before text insertion in Chromium and WebKit.
  • Fixes #3429: The caret target before a padded inline stays outside the padded inline in Chromium.
  • Fixes #4789: A native selection that starts outside the editor and ends inside the editor is ignored without a DOM point crash, and the editor remains usable after refocus.
  • Fixes #5826: In a long editor, clicking the top block, blurring, scrolling to the final block, and clicking back into the editor keeps the clicked final-block selection visible instead of restoring the stale top selection.
  • Fixes #4376: In WebKit, blurring the editor into an external input preserves the Slate model selection, refocusing the editor keeps that selection, and follow-up typing lands at the preserved point.
  • Fixes #5171: In Firefox, unfocused editor content updates preserve the inactive editor selection instead of importing an external input selection.
  • Fixes #4984: A parent-editor selection that crosses into a nested editor is ignored without a DOM point crash, and input remains owned by the editor that actually has focus.
  • Fixes #3534: Undo after pressing Enter with a selection spanning multiple blocks restores the original expanded selection.
  • Fixes #3551: Undo after a moveNodes commit restores the original tree and selection.
  • Fixes #4559: Undo after deleteFragment reselects the restored fragment.
  • Fixes #3499: Marked Enter before a bold word moves the word into the new block and undo restores the original marked paragraph and selection.
  • Fixes #4121: Core expanded delete over a formatted leaf window removes only the selected content and collapses at the selection start.
  • Fixes #2500: Core full-document delete over list-heavy content resets to one empty editable paragraph instead of preserving an orphan list shell.
  • Fixes #3965: Backspace across an empty marked block start merges same-mark text without deleting both sides.
  • Fixes #3950: Custom normalization rechecks a transformed node until later normalizers reach fixpoint.
  • Fixes #5972: Backspace from an empty editable inline in the inlines example removes the inline without deleting the preceding character.
  • Fixes #5977: Custom operation-like records no longer break editor detection or DOM path lookup, and unknown operation replay fails before the record enters the operation log.
  • Fixes #5412: insertFragment(..., { at }) writes at the supplied target even when the editor selection points elsewhere.
  • Fixes #5429: insertFragment into an empty text block leaves the collapsed selection after the inserted content.
  • Fixes #5089: Rich multi-block fragment paste into the middle of a paragraph preserves block separation instead of flattening into the current paragraph.
  • Fixes #4806: Selected inline void copy, paste, and cut work through the native browser clipboard path with model-owned caret repair.
  • Fixes #5080: state.nodes.entries({ reverse: true }) returns the exact reverse of the forward matched entry order for nested matching entries.
  • Fixes #6053: useElementSelected() does not throw when a selected rendered element removes itself, and useElementSelected(path) returns false after the watched path is removed.
  • Fixes #5400: Public helper value namespaces use *Api, so importing Slate helpers no longer shadows DOM globals such as Node.

Void Roots / ContentRoot API Execution Sync - 2026-05-25

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.

IssueClaim policy
#5212Keep 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.
#2072Keep related architecture target strengthened. The content-root API baseline exists, but no closure without keyboard/navigation and browser proof.
#3482, #3367Keep related model-shape pressure. Default voids stay atomic; normal void descendants do not become traversable.
#3435, #3884, #4301Keep related navigation guardrails. No new arrow/Enter claim; existing #4301 fixed floor remains exact.
#3991, #3868, #5582, #5477, #4896, #4350, #4328, #5630Preserve delete/selection statuses. Root lifecycle helpers landed, but behavior closure still needs targeted proof.
#4984, #4842, #3909Preserve nested/contenteditable statuses. Same-runtime roots remain the direction; only existing #4984 fixed floor is preserved.
#4806, #4802, #4104, #3926, #4888, #4623Preserve clipboard/drop/move statuses. Root payload serialization and remap policy remain proof gates.

React Runtime Provider / Multi-root Planning Sync - 2026-05-21

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.

IssueClaim policy
#6016Keep 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.
#5537Keep cluster-synced. Multiple-editor programmatic focus pressure becomes provider/browser proof for view-local focus/input ownership, not an exact closure claim.
#5117Keep future-proof/example pressure. Placeholder measurement leaking across multiple editors requires view-local DOM-state proof in the multi-root example before any claim.
#4612Keep 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, #3482Preserve existing statuses. Runtime provider naming does not broaden comments, dynamic decorations, undo-all, collaboration docs, moved-node payload, or void-child claims.

Library-Owned Multi-root History / Focus Planning Sync - 2026-05-23

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.

IssueClaim policy
#6016Keep triage-closed/non-fix. Shared node-object graphs across independent editor runtimes remain unsupported; this target keeps the one-runtime, many-root model.
#5537Keep cluster-synced. Root chrome/focus proof strengthens view-local focus ownership, but exact multi-editor programmatic focus closure is not claimed.
#5117Keep future-proof/example pressure. Root-local DOM state remains required; placeholder measurement closure is not claimed.
#5515Keep cluster-synced. useSlateHistory is active-root history, not Undo/Redo All.
#3893Keep related. External button/control focus motivates proof, but exact HTML button focus closure is not claimed.
#3634, #4961Keep related. Programmatic focus/input ownership is strengthened, but exact focus-after-programmatic-change closure needs targeted browser proof.
#3705, #3756, #3921Preserve existing statuses. The hook must preserve history-selection behavior without broadening partial set_selection or refocus claims.
#3534, #3551, #4559, #3499Preserve existing fixed claims. Hook-level history UI must keep those guarantees green, not add new claim scope.
#3460Treat as API pressure only. Stable toolbar/command access outside the editor subtree supports the hook shape; no issue closure claim.

Root Interaction Intent Architecture Planning Sync - 2026-05-23

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.

IssueClaim policy
#4789, #4984Preserve 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, #5711Keep related or existing improves rows. DOM point/range crash pressure supports the shared resolver boundary; exact repro closure needs matching browser proof.
#3634, #4961, #5537Keep related focus/input pressure. Runtime-owned root interaction should strengthen focus ownership, but exact programmatic focus closure is not claimed.
#3893Keep related external-control focus pressure. Interactive descendants and toolbar/title controls must preserve native focus, but exact HTML button closure is not claimed.
#5088, #5473Keep 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, #5171Fixed by exact WebKit blur/refocus/follow-up typing proof and Firefox unfocused update proof.
#5603, #5669, #6022, #5983, #4400Keep related input/mobile/IME pressure. Pointer/touch/composition rows are proof gates, not fixed claims.
#3705, #3756, #3921Preserve existing history-selection statuses. The resolver must not broaden history or partial set_selection claims.

Void Roots / Editor-only Rooted Flow Planning Delta - 2026-05-25

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.

IssueClaim policy
#5212Keep 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.
#2072Keep 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, #3367Keep related model-shape pressure. Do not answer void-children/internal-caret pressure by making default voids traversable; use child roots/rooted elements.
#3435, #3884, #4301Keep 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, #5630Preserve void delete/selection statuses. Root-backed surfaces add regression proof requirements, not new closure claims.
#4984, #4842, #3909Preserve 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, #4623Preserve clipboard/drop/move statuses. Root payload serialization and remap policy are future proof gates.
#5183, #5391, #5559, #4839, #5087, #5411, #3611Keep inline/mobile/spacer/cursor rows related only. Editor-only rooted flow cannot widen these claims without targeted browser/device/IME proof.
#1769, #3893Keep focus rows related only. Native controls and child roots need coherent focus ownership, but no external-focus closure is claimed.

Editable Islands / Multi-root Child Root Planning Sync - 2026-05-24

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.

IssueClaim policy
#5212Keep 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.
#2072Keep 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.
#4984Preserve existing fixed claim. The new child-root work must keep parent-selection-crosses-nested-editor crash proof green, but adds no broader claim.
#4842Keep related. Same-runtime child roots are the architecture answer for nested-editor offset pressure, but exact historical offset closure is not claimed.
#3909Keep related. Nested contenteditable ownership becomes child-root target ownership proof, not a named CodeMirror/void-node closure.
#4110Keep cluster-synced. Inputs inside islands remain browser-selection proof pressure; no Firefox closure without targeted proof.
#4623Keep cluster-synced. Void drag/drop move semantics remain proof pressure for the future child-root lifecycle work.
#3858Keep related. Deep nested value emptying remains stale descendant/selection pressure; child-root delete/undo proof is required before any claim changes.
#3482, #3367Keep 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, #5391Keep 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, #3926Preserve 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, #4623Keep 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, #3868Preserve 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, #4839Keep 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, #3893Keep external/non-editable focus rows related. Islands and native controls need coherent focus ownership, but this plan makes no exact focus issue closure claim.

Pretext Layout / DOM Strategy Planning Sync - 2026-05-22

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.

IssueClaim policy
#790Keep 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.
#4141Preserve existing Improves. Future layout subscriptions must prove affected-range invalidation and avoid widening rerender breadth.
#5944Keep issue-reviewed. Stable per-line pagination needs current browser proof for page-boundary flicker and caret mapping before any claim.
#5924Keep not claimed. Structural DOM frames should route through DOM coverage and mount-plan policy, not a public ignore-cursor API in this plan.
#3892Keep policy non-claim. Generic layout substrate is useful, but custom editor surfaces remain ecosystem/product territory.
#2572Keep policy non-claim. Accessibility is a release gate for missing-DOM modes, not a fixed issue claim from architecture docs.
#5131, #2051Preserve existing rows as subscription/performance guardrails for layout snapshot consumers.

Large-Document Performance / Virtualization Planning Sync - 2026-05-23

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.

IssueClaim policy
#5945Preserve 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.
#4056Preserve existing Improves. Populated copy and large middle paste benchmark proof remains valid; exact full-book browser reproduction is not claimed.
#5992Preserve 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.
#2051Preserve as performance guardrail. Rerender breadth must stay benchmarked before any layout or virtualized consumer widens subscriptions.
#790Keep 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.

Pretext Pagination / Page Virtualization Feedback Planning Sync - 2026-05-25

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.

IssueClaim policy
#5944Keep 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.
#790Keep 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.
#5924Keep 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.
#4141Preserve existing Improves. Layout/page subscriptions must preserve nested rerender-breadth locality.
#5131, #2051Preserve existing subscription/performance guardrail rows. Layout snapshot consumers and page virtualization must prove they do not broaden editor subscriptions or rerender breadth.
#2793Keep cluster-synced/release-guard. Missing-DOM/page-virtualized modes must not claim native screen-reader equivalence without assistive-tech proof or explicit degradation docs.
#2572Keep policy non-claim. Accessibility remains a release guard, not a fixed issue claim from planning docs.
#3892Keep policy non-claim. Generic layout substrate helps custom surfaces, but product custom layout engines remain outside raw Slate closure.
#5945, #4056, #5992Preserve existing Improves. Large-document operation/clipboard benchmark claims are not promoted or changed by this pagination plan.

Android Mark Toggle No-Appium Proof - 2026-05-23

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.

IssueClaim policy
#6022Keep 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.
#6027Treat 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.

IssueClusterClaimWhy not FixesProof / owner
#5710document-replacement-api-ergonomicsImprovesMounted 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
#4564document-replacement-api-ergonomicsImprovesWhole-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
#5488react-controlled-value-and-external-updatesImprovesv2 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
#5351react-controlled-value-and-external-updatesImprovesEmpty 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
#3465normalization-lifecycle-and-initial-valueNot claimedInitial 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
#6038transactionality-and-batch-engineImprovesTransaction/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
#3656react-runtime-and-rerender-breadthImprovesThe 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
#4141react-runtime-and-rerender-breadthImprovesThe 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
#5131react-selection-subscription-granularityNot claimeduseSlate / 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
#3430react-runtime-and-rerender-breadthNot claimedRerender 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
#5945large-document-edit-performanceImprovesIssue-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
#4056singleton-performance-benchmarkImprovesFresh 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
#5992large-document-edit-performanceImprovesThe 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
#3752history-memory-retentionImprovesCurrent-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
#2288operation-granularity-and-range-stepsImprovesreplace_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
#1770collaboration-op-metadata-and-transaction-boundariesRelatedPM-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
#3741collaboration-op-metadata-and-transaction-boundariesRelatedPM-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
#2500select-all-delete-and-structural-resetFixesCore 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
#4121structural-delete-selection-windowFixesCore 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
#3965adjacent-marked-text-deleteFixesCore 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
#5811normalization-fixpoint-and-loop-guardImprovesCore 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
#3950normalization-transformed-node-rerunFixesCore 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
#1654structural-isolating-boundariesImprovesCore 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
#2643transaction-validation-and-schema-vetoRelatedThe 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
#5972inline-delete-boundary-reproFixesCore 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
#5977custom-operation-validationFixesCore 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
#5400helper-namespace-global-collisionFixesPublic 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
#5558operation-type-guard-dxImprovesOperation 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
#3964insert-break-selection-placementFixesPackage 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
#3973word-move-across-leavesFixesPackage 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
#3499marked-enter-undo-caretFixesPackage 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
#4357marked-enter-new-block-focusFixesSame 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
#4195return-key-caret-placementRelatedSame 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
#3841firefox-insertbreak-word-moveRelatedCustom 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
#5629word-navigation-punctuationRelatedWord 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
#4648word-boundary-punctuation-policyNot claimedPunctuation 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
#3891multi-node-remove-rangeRelatedreplace_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
#2195performance-normalization-and-dirty-pathsRelatedThe 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
#2405performance-normalization-and-dirty-pathsRelatedCommand-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
#2355selection-normalization-and-commit-boundariesRelatedreplace_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
#4104inline-void-and-void-selectionRelatedInline-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
#5089clipboard-fragment-insertion-shapeFixesCore 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
#5080editor-nodes-reverse-iteration-orderFixesCore 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
#5684editor-nodes-traversal-ambiguityRelatedThe 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
#5028editor-nodes-pass-filteringRelatedCurrent 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
#3885docs-api-confusion-and-example-gapsNot claimedSelection-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
#5412insert-fragment-explicit-targetFixesCore 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
#5429insert-fragment-empty-node-caretFixesCore 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
#5630select-all-paste-delete-void-tailRelatedSelect-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
#5947nested-editor-and-global-dom-mapsImprovesDOM 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
#5938dom-path-computation-tied-to-renderImprovesMounted 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
#4789external-selection-into-editor-dom-bridgeFixesBrowser 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
#4984nested-editor-and-global-dom-mapsFixesBrowser 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
#4842nested-editor-and-global-dom-mapsRelatedNested 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
#5760dom-range-zero-width-offsetImprovesZero-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
#1971zero-width-sentinels-and-br-renderingNot claimedZero-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
#2597zero-width-sentinels-and-br-renderingNot claimedZero-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
#4483react-decoration-subscription-performanceImprovesProjection 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
#4477collaboration-annotations-and-commentsImprovesAnnotation 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
#5987react-decoration-and-selection-stabilityFixesExact 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
#5867focus-restore-selected-inline-voidRelatedSelected 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
#6022android-ime-and-beforeinputRelatedThe 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
#5983android-ime-and-beforeinputRelatedAndroid 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
#5183inline-void-and-void-selectionRelatedInline 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
#5391inline-void-and-void-selectionRelatedInline 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
#4400android-ime-and-beforeinputRelatedAndroid 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
#5883android-ime-and-beforeinputRelatedEmpty-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
#5826mobile-and-browser-selection-quirksFixesHuge-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
#5538focus-scroll-restorationRelatedProgrammatic 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
#4392decoration-cross-node-and-void-accessImprovesRuntime 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
#3382react-decoration-and-selection-stabilityImprovesProjection 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
#3352react-decoration-and-selection-stabilityImprovesCross-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
#5568focus-and-initialization-timingRelatedReact 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
#4612react-controlled-value-and-external-updatesImprovesExternal 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
#3478react-focus-subscription-runtimeRelatedRedux/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
#4001android-ime-and-beforeinputRelatedGerman 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
#3497react-focus-subscription-runtimeRelatedParent-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
#3777android-ime-and-beforeinputRelatedFirefox 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
#5806custom-inline-selection-behaviorRelatedGesture 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
#5690inline-boundary-double-click-deleteRelatedWindows/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
#5689selection-gesture-directionalityRelatedTriple-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
#4995scroll-selection-customizationRelatedscrollSelectionIntoView 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
#5632adjacent-inline-badge-delete-caretRelatedAdjacent 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
#5559shift-click-void-selectionRelatedShift-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
#3909nested-contenteditable-target-ownershipRelatedNested 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
#3893button-focus-stateRelatedClicking 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
#5550web-component-selection-boundaryNot claimedWeb 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
#5551firefox-rowspan-table-selectionNot claimedFirefox 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
#5524vertical-navigation-soft-break-selectionRelatedArrowDown 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
#5924structural-dom-cursor-exclusionNot claimedStructural 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
#5088mobile-and-browser-selection-quirksRelatedScroll 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
#5711dom-point-resolution-crashesRelatedDOM 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
#3634react-editor-focus-after-programmatic-changeRelatedProgrammatic 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
#4961react-editor-focus-after-programmatic-changeRelatedFocus 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
#5473mobile-and-browser-selection-quirksRelatedScroll 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
#4376mobile-and-browser-selection-quirksFixesWebKit 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
#5171mobile-and-browser-selection-quirksFixesFirefox 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
#5095android-ime-and-beforeinputRelatedNative 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
#5096android-ime-and-beforeinputRelatedNative 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
#3871triple-click-and-block-selectionFixesBrowser 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
#5847triple-click-and-block-selectionFixesBrowser 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
#5603input-event-boundary-semanticsRelatedBrowser 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
#5669input-event-boundary-semanticsRelatedBrowser 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
#3991inline-void-and-void-selectionFixesBrowser 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
#4301inline-void-and-void-selectionFixesBrowser 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
#4994android-ime-and-beforeinputRelatedAndroid 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
#5026android-ime-and-beforeinputRelatedAndroid 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
#4802clipboard-html-fragment-serializationImprovesBrowser 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
#4806clipboard-html-fragment-serializationFixesBrowser 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
#4074inline-boundary-cursor-movementFixesBrowser 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
#3148inline-boundary-cursor-movementFixesBrowser 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
#3429inline-boundary-cursor-movementFixesBrowser 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
#4618inline-boundary-cursor-movementNot claimedThe 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
#3150inline-boundary-cursor-movementRelatedTracker-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
#3534history-and-undo-selection-stateFixesPackage 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
#3551history-and-undo-selection-stateFixesPackage 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
#3705history-and-undo-selection-stateImprovesPackage 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
#3756history-and-undo-selection-stateRelatedUndo 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
#3921history-and-undo-selection-stateImprovesPackage 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
#6053singleton-react-runtimeFixesuseElementSelected() 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
#3858stale-path-after-external-resetRelatedEmptying 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
#4081react-fast-refresh-and-editor-singletonRelatedCRA 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
#4323external-value-dom-selection-syncRelatedDOM 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
#4680react-editor-identity-hooksRelatedEditor 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
#5181stale-react-callback-and-editor-propsRelatedNative 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
#3177render-extension-compositionRelatedRenderer 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
#5961onkeydown-render-warningRelatedPublic 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
#3802unified-extension-composition-api-dxRelatedThe 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
#5771collaboration-selection-anchor-rebaseImprovesCore 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
#5533collaboration-without-yjsRelatedPM-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
#1769focus-state-external-dom-ownershipRelatedClicking 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
#3585click-selection-timingRelatedClick 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
#3412focus-loss-selection-retentionRelatedFocus-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
#4317selection-event-render-callback-churnRelatedRegistered 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
#4031placeholder-ime-empty-editorRelatedEmpty-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
#5034android-readonly-selection-stateRelatedAndroid 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
#4111legacy-ie11-selection-supportNot claimedIE11/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
#5402react-runtime-cleanup-noiseNot claimedUnused 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
#5075typescript-mark-formatting-dxImprovesSlate 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
#6051singleton-input-runtimeRelatedAndroid 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
#5989singleton-input-runtimeRelatedAndroid 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
#5984singleton-input-runtimeRelatedAndroid 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
#5931singleton-input-runtimeRelatedWindows 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
#5830singleton-input-runtimeRelatedBlur 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
#5912singleton-ecosystem-boundaryNot claimedBrowser 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
#5874singleton-invalid-contractNot claimedReusing 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
#5749singleton-dom-selectionRelatedShadow 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
#5643singleton-input-runtimeRelatedAndroid 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
#5509singleton-react-runtimeRelatedMobX 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
#5355singleton-dom-selectionNot claimedThe 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
#5281singleton-api-dxNot claimedControlled 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
#5130singleton-input-runtimeRelatedFirefox 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
#5107singleton-dom-selectionRelatedShadow 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
#5087singleton-dom-selectionRelatedVisible 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
#5050singleton-input-runtimeRelatedText 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
#4532android-markdown-shortcut-flushRelatedAndroid 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
#5014singleton-input-runtimeRelatedFirefox 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
#4851singleton-ecosystem-boundaryNot claimedKaTeX 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
#4658singleton-dom-selectionRelatedCustom 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
#2558table-cell-selection-modelNot claimedMulti-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
#4643singleton-dom-selectionRelatedInvalid 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
#4581singleton-dom-selectionRelatedFirefox 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
#4559singleton-core-engineFixesPackage 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
#4348singleton-input-runtimeRelatedAndroid 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
#4337singleton-dom-selectionRelatedShadow 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
#4223singleton-input-runtimeNot claimedAlternate 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
#4088singleton-dom-selectionRelatedMention 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
#4076docs-example-and-support-noiseNot claimedSearch-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
#4067singleton-input-runtimeRelatedComposition 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
#3918singleton-dom-selectionRelatedPage-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
#3641singleton-dom-selectionRelatedSelection 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
#3568singleton-input-runtimeRelatedonDOMBeforeInput 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
#3586format-beforeinput-dom-selectionRelatedNative 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
#4681singleton-input-runtimeRelatedRaw 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
#3470singleton-input-runtimeRelatedAndroid 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
#1498rtl-and-bidi-selection-behaviorRelatedPM-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
#3309singleton-react-runtimeRelatedDecorated 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
#2051singleton-performance-benchmarkImprovesLeaf 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
#5328clipboard-fragment-trust-boundaryImprovesMalformed 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
#4857clipboard-fragment-trust-boundaryImprovesForeign 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
#5233clipboard-schema-isolationFixesCustom 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
#3486clipboard-schema-isolationFixesCustom 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
#1024clipboard-schema-isolationImprovesMIME-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
#4613clipboard-extension-surfaceImprovesExtensible 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
#4569clipboard-extension-surfaceFixesinsertData 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
#4440clipboard-output-customizationRelatedPlain-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
#3557extension-method-overridesRelatedGeneral 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
#4542clipboard-fragment-insertion-shapeRelatedEmpty-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
#3155clipboard-fragment-insertion-shapeRelatedGeneral 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
#5151clipboard-target-block-preservationImprovesRich 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
#3857clipboard-structural-cut-deleteImprovesSelected 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
#3801clipboard-structural-cut-deleteImprovesCore 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
#3469clipboard-structural-cut-deleteImprovesModel 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
#4716clipboard-schema-isolationRelatedTable 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
#2694clipboard-shortcuts-and-transfer-eventsNot claimedShift+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
#5894link-exit-behaviorNot claimedLink 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
#4730void-node-deletion-and-empty-editorRelatedSelect-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
#3387triple-click-selection-and-paragraph-replacementRelatedCurrent 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
#3872triple-click-and-inline-selectionRelatedCurrent #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

Mobile/IME Macro Planning Sync - 2026-05-07

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.

RouteCountIssuesClaim policy
Existing matrix and dossier23#6022, #5989, #5984, #5983, #5931, #5883, #5830, #5643, #5281, #5183, #5130, #3777, #3497, #3478, #3150, #5088, #5050, #5014, #4994, #4400, #4223, #4067, #4001Keep existing related/not-claimed rows; do not promote without exact proof.
Matrix backfill from existing dossier3#5711, #3634, #4961Added as related rows in this pass.
Long-form proof-route backlog44#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, #3882Related/proof-route only until a later batch writes exact repro sections and proof.
Matrix-only future proof56#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, #3911Keep as future proof pressure; no PR auto-close text.
Matrix-only non-claim19#5418, #5207, #3781, #3780, #3760, #3618, #3460, #3304, #3303, #3222, #4621, #4457, #4426, #4233, #4165, #4089, #4081, #2564, #2465Keep out of fixed/improved language; these are policy/API pressure only.
Drift rows aligned4#6022, #5983, #5183, #5088Dossier status aligns to related; exact proof may promote later.

All-Harvest PM-10/PM-09 Planning Sync - 2026-05-10

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.

RouteCountIssuesClaim policy
Existing input-runtime matrix/dossier rows15#6051, #6022, #5989, #5984, #5983, #5931, #5830, #5643, #5883, #4400, #5603, #5669, #4223, #3470, #2051Preserve current Related, Not claimed, or Improves statuses; do not promote from harvest rows alone.
Proof-needed input pressure4#4466, #5493, #5974, #5918Keep as future proof or needs-repro pressure until a matching keyboard, IME, browser, or raw-device row exists.
Routed to later proof slices1#3309Treat as PM-12/PM-13 projection and browser-selection pressure, not PM-10/PM-09 closure.
PR prose sync0nonedocs/slate-v2/references/pr-description.md stays unchanged because no PR-facing claim count changes.

All-Harvest PM-08 Collaboration Planning Sync - 2026-05-10

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.

RouteCountIssuesClaim policy
Existing collaboration/operation rows updated4#5771, #1770, #2288, #3741Preserve 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 row1#5533Add as Related; PM-08 proves operation replay convergence but not a first-party collaboration layer.
Explicit future-proof boundary2high-QPS remote selection, simultaneous/concurrent typing rebaseKeep for PM-07/future collaboration-selection work; PM-08 does not claim those rows.
PR prose sync0nonedocs/slate-v2/references/pr-description.md stays unchanged because no PR-facing claim count changes.

Performance/Scalability Macro Planning Sync - 2026-05-08

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.

RouteCountIssuesClaim policy
Existing explicit matrix rows13#6038, #3656, #4141, #5131, #3430, #5945, #4056, #5992, #3752, #2195, #2405, #4483, #2051Preserve current Improves, Related, and Not claimed statuses; do not promote from planning or headless benchmark proof alone.
Existing matrix macro/future-proof rows7#5433, #5420, #5274, #4317, #3354, #3926, #5697Keep as future proof pressure or guard rows; no PR auto-close text.
Performance proof-route backlog10#2733, #2669, #790, #5216, #5592, #4202, #4210, #3748, #5349, #4025Related, proof-needed, or needs-repro until an execution slice adds exact benchmark, browser, retained-memory, or static-rendering proof.
Policy/API/accessibility non-claims4#2465, #2564, #3892, #2572Keep out of fixed/improved performance language; these are DX, ecosystem, or release-guard pressure only.
PR prose sync3#5945, #4056, #5992Existing PR text remains exact. No new PR performance text is added by this planning pass.

Unified Extension Composition Planning Sync - 2026-05-16

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.

RouteCountIssuesClaim policy
New related public API row1#3802Add 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 updated1#3177Preserve Related; creation-time extensions strengthen the renderer-composition direction, but example/docs cleanup and proof remain required.
Existing method override row updated1#3557Preserve 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 preserved12#6013, #5709, #5233, #3486, #4613, #3534, #3551, #4559, #3499, #3705, #3921, #3752Do not promote or demote from planning. Later implementation must keep these proof owners green when built-in packages become extension factories.
Existing collaboration rows preserved2#1770, #3741Keep Related; extension lists must preserve operation middleware and commit metadata, but no operation-merging utility or moved-node payload closure is claimed.
PR prose sync0nonedocs/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.

Normalizer Extension DX Planning Sync - 2026-05-17

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.

RouteCountIssuesClaim policy
New related implementation-pressure row1#4641Add 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 preserved3#4701, #3275, #2039Keep 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 preserved2#3950, #5811Preserve current Fixes #3950 and Improves #5811 from the structural normalization proof; this plan does not change those claims.
Existing normalization policy/perf rows preserved6#3465, #2643, #2405, #2195, #2355, #3430Keep 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 sync1normalizers.editor / normalizers.node proofdocs/slate-v2/references/pr-description.md records the implemented API and proof references, but no fixed or improved issue claim is added.

Processing Notes

When a Slate Ralplan or Ralph execution slice fixes behavior:

  1. Update the issue row and cluster rollup in docs/slate-issues/open-issues-ledger.md.
  2. Add exact closure claims to Fixed Issue Claims.
  3. Add related, improved, and non-closure issues to Related Issue Matrix.
  4. Link the proof file, browser test, benchmark, docs/example, or plan row.
  5. Leave the issue out if the relationship cannot be stated precisely.