Back to Plate

Full Repo Coverage Roadmap

docs/plans/2026-03-24-full-repo-coverage-roadmap.md

53.0.58.2 KB
Original Source

Full Repo Coverage Roadmap

Goal

Freeze the remaining high-ROI whole-repo coverage work into one stable roadmap now that the non-React phase is finished.

Lock Rules

  • Phase: full repo, including React.
  • Frozen threshold: raw score >= 8 from 2026-03-24-coverage-priority-files-testing-review-full-repo.tsv.
  • Queue is file-first. Do not collapse this back into package sweeps.
  • Future passes should mark items done, removed, or deferred. Do not reshuffle the whole roadmap unless:
    • a file is deleted
    • a file drops below the threshold because it already has direct coverage
    • architecture work makes a queued file obviously not worth touching anymore

Execution Policy

  • Finish Tier 1 first. That is every remaining score >= 9 file.
  • Then finish Tier 2. That is every remaining score = 8 file.
  • Stop and rerun coverage before touching the score-7 ring.

Tier 1: Execute Now

  1. [done] 10 applyAISuggestions.ts
  2. [done] 10 useCursorOverlay.ts
  3. [done] 10 submitAIChat.ts
  4. [done] 10 useTocSideBar.ts
  5. [done] 10 callCompletionApi.ts
  6. [done] 10 useBlockSelectable.ts
  7. [done] 10 EmojiFloatingLibrary.ts
  8. [done] 10 getSelectionRects.ts
  9. [done] 10 applyTableCellSuggestion.ts
  10. [done] 10 triggerCopilotSuggestion.ts
  11. [done] 10 triggerFloatingLinkInsert.ts
  12. [done] 10 acceptAISuggestions.ts
  13. [done] 10 rejectAISuggestions.ts
  14. [done] 10 resetAIChat.ts
  15. [done] 10 getCursorOverlayState.ts
  16. [done] 10 getCaretPosition.ts
  17. [done] 9 useSelectionArea.ts
  18. [done] 9 useComboboxInput.ts
  19. [done] 9 useEquationInput.ts
  20. [done] 9 useEmojiPickerState.ts
  21. [done] 9 useContentController.ts
  22. [done] 9 useContentObserver.ts
  23. [done] 9 useChatChunk.ts
  24. [done] 9 EmojiFloatingGridBuilder.ts
  25. [done] 9 useTableMergeState.ts
  26. [done] 9 useEditorChat.ts
  27. [done] 9 useTocObserver.ts
  28. [done] 9 history.ts
  29. [done] 9 useRequestReRender.ts
  30. [done] 9 useAIChatEditor.ts
  31. [done] 9 useRefreshOnResize.ts
  32. [done] 9 useTocController.ts
  33. [done] 9 EmojiFloatingGrid.ts
  34. [done] 9 triggerFloatingLinkEdit.ts
  35. [done] 9 triggerFloatingLink.ts
  36. [done] 9 getListNode.ts
  37. [done] 9 isSameNode.ts
  38. [done] 9 getLastEntryEnclosedInToggle.ts
  39. [done] 9 selectInsertedBlocks.ts
  40. [done] 9 isInClosedToggle.ts

Tier 2: Still Worth Doing

  1. [done] 8 useEmojiPicker.ts
  2. [done] 8 useCursorOverlayPositions.ts
  3. [done] 8 useExcalidrawElement.ts
  4. [done] 8 useTocElement.ts
  5. [done] 8 EmojiObserver.ts
  6. [done] 8 useHTMLInputCursorState.ts
  7. [done] 8 useEmojiDropdownMenuState.ts
  8. [done] 8 usePlaceholderPopover.ts
  9. [done] 8 useCalloutEmojiPicker.ts
  10. [done] 8 useListToolbarButton.ts
  11. [done] 8 useTodoListElement.ts
  12. [done] 8 useTodoListToolbarButton.ts
  13. [done] 8 useTodoListElement.ts
  14. [done] 8 useListToolbarButton.ts
  15. [done] 8 nestedContainerUtils.ts
  16. [done] 8 useToggleToolbarButton.ts
  17. [done] 8 useToggleButton.ts
  18. [done] 8 pasteSelectedBlocks.ts
  19. [done] 8 nodesWithProps.ts
  20. [done] 8 useBlockSelectionNodes.ts
  21. [done] 8 findElementIdsHiddenInToggle.ts
  22. [done] 8 getLastAssistantMessage.ts
  23. [done] 8 getEnclosingToggleIds.ts

Deferred From The Current Phase

  • [deferred] score-7 ring and below Reason: still real, but the clean stop for this phase is the full score >= 8 queue. Rerun coverage before touching the score-7 leftovers.
  • [deferred] thin plugin entrypoints and wrapper components that still score high only because the hook cluster under them is uncovered Reason: the hook or util is the seam. Testing the wrapper too early is coverage cosplay.
  • [deferred] giant architecture slabs outside this threshold, like PlateEditor.ts and getSelectedDomFragment.tsx Reason: real seams, but not the best spend before the current React hook and util queue is finished.

Update Rule

  • When a file gets direct tests, flip it to [done]. Do not remove it.
  • When a file is deleted or replaced, flip it to [removed] with a one-line note.
  • When a file proves fake ROI, flip it to [deferred] with a reason.
  • Do not reshuffle the queue because the next audit has a slightly different vibe.