docs/plans/2026-03-24-coverage-priority-map-testing-review-non-react.md
packages/**/src/** onlybun test --coverage --coverage-reporter=lcov --coverage-dir=.coverage-repo-2026-03-24h --reporter=dots2869 pass, 0 fail, 575 files, 2.97s.pnpm test:profile -- --top 25pnpm test:slowest -- --top 25/react, obvious React surfaces outside /react, hook files, test files, barrels, declaration files, obvious type-only files, generated junk, and zero-value crumbs.package_score is the sum of the top 5 remaining file scores in that package, not every leftover crumb.Do not do another package sweep.
The strict next batch is the raw score >= 6 set:
list-classic: BaseTodoListPlugin.ts — score 8core: pluginDeserializeHtml.ts — score 7markdown: deserializeMd.ts — score 7suggestion: deleteSuggestion.ts — score 7table: deleteColumn.ts — score 7suggestion: rejectSuggestion.ts — score 7table: insertTableColumn.ts — score 7table: insertTableRow.ts — score 7suggestion: BaseSuggestionPlugin.ts — score 6table: BaseTablePlugin.ts — score 6list: withList.ts — score 6core: withMergeRules.ts — score 6The wider but still defensible batch is the raw score >= 5 set:
list-classic: BaseTodoListPlugin.ts — score 8core: pluginDeserializeHtml.ts — score 7markdown: deserializeMd.ts — score 7suggestion: deleteSuggestion.ts — score 7table: deleteColumn.ts — score 7suggestion: rejectSuggestion.ts — score 7table: insertTableColumn.ts — score 7table: insertTableRow.ts — score 7suggestion: BaseSuggestionPlugin.ts — score 6table: BaseTablePlugin.ts — score 6list: withList.ts — score 6core: withMergeRules.ts — score 6dnd: onDropNode.ts — score 6core: htmlElementToLeaf.ts — score 6basic-styles: BaseTextAlignPlugin.ts — score 6core: resolvePlugin.ts — score 6table: withInsertFragmentTable.ts — score 6table: withNormalizeTable.ts — score 6score >= 7: 8 filesscore >= 6: 29 filesscore >= 5: 83 filesscore >= 4: 115 filesscore >= 3: 139 filesscore >= 2: 146 filesscore >= 1: 155 filestable — package score 33, top files deleteColumn.ts:7; insertTableColumn.ts:7; insertTableRow.ts:7; BaseTablePlugin.ts:6; withInsertFragmentTable.ts:6core — package score 31, top files pluginDeserializeHtml.ts:7; withMergeRules.ts:6; htmlElementToLeaf.ts:6; resolvePlugin.ts:6; cleanHtmlFontElements.ts:6list-classic — package score 30, top files BaseTodoListPlugin.ts:8; insertTodoListItem.ts:6; unwrapList.ts:6; withInsertFragmentList.ts:5; withList.ts:5suggestion — package score 30, top files deleteSuggestion.ts:7; rejectSuggestion.ts:7; BaseSuggestionPlugin.ts:6; acceptSuggestion.ts:5; removeMarkSuggestion.ts:5markdown — package score 29, top files deserializeMd.ts:7; customMdxDeserialize.ts:6; deserializeInlineMd.ts:6; convertNodesSerialize.ts:5; splitIncompleteMdx.ts:5code-block — package score 21, top files insertCodeBlock.ts:6; BaseCodeBlockPlugin.ts:5; htmlDeserializerCodeBlock.ts:5; withCodeBlock.ts:3; formatter.ts:2basic-nodes — package score 20, top files BaseCodePlugin.ts:4; BaseHeadingPlugin.ts:4; BaseBoldPlugin.ts:4; BaseItalicPlugin.ts:4; BaseStrikethroughPlugin.ts:4slate — package score 19, top files deleteText.ts:5; mergeNodes.ts:5; hasEditableTarget.ts:3; hasSelectableTarget.ts:3; hasTarget.ts:3docx — package score 19, top files docxListToList.ts:4; cleanDocxListElementsToList.ts:4; getVShapeSpid.ts:4; getRtfImageHex.ts:4; cleanDocxImageElements.ts:3list — package score 16, top files withList.ts:6; toggleList.ts:5; getSiblingList.ts:5dnd — package score 14, top files onDropNode.ts:6; getHoverDirection.ts:4; getNewDirection.ts:4media — package score 13, top files insertImageFromFiles.ts:5; BaseImagePlugin.ts:4; withImageUpload.ts:4list-classic — BaseTodoListPlugin.ts — score 8, coverage 37.1%, uncovered 22core — pluginDeserializeHtml.ts — score 7, coverage 88.8%, uncovered 18markdown — deserializeMd.ts — score 7, coverage 79.2%, uncovered 15suggestion — deleteSuggestion.ts — score 7, coverage 93.6%, uncovered 10table — deleteColumn.ts — score 7, coverage 93.4%, uncovered 9suggestion — rejectSuggestion.ts — score 7, coverage 94.0%, uncovered 8table — insertTableColumn.ts — score 7, coverage 94.3%, uncovered 8table — insertTableRow.ts — score 7, coverage 93.9%, uncovered 8suggestion — BaseSuggestionPlugin.ts — score 6, coverage 68.5%, uncovered 28table — BaseTablePlugin.ts — score 6, coverage 85.6%, uncovered 26list — withList.ts — score 6, coverage 78.3%, uncovered 25core — withMergeRules.ts — score 6, coverage 87.7%, uncovered 14dnd — onDropNode.ts — score 6, coverage 87.5%, uncovered 14core — htmlElementToLeaf.ts — score 6, coverage 69.4%, uncovered 11basic-styles — BaseTextAlignPlugin.ts — score 6, coverage 72.2%, uncovered 10core — resolvePlugin.ts — score 6, coverage 88.1%, uncovered 8table — withInsertFragmentTable.ts — score 6, coverage 93.2%, uncovered 8table — withNormalizeTable.ts — score 6, coverage 92.7%, uncovered 8link — upsertLink.ts — score 6, coverage 93.9%, uncovered 6markdown — customMdxDeserialize.ts — score 6, coverage 91.4%, uncovered 5Stop when the remaining misses are mostly wrappers, DOM/provider dust, giant sludge, or tiny crumbs. At that point coverage stops paying rent and the next move is architecture-safety work.