docs/plans/2026-03-24-coverage-priority-map-testing-review-non-react-post-roadmap.md
/react/reactxargs -0 bun test --coverage --coverage-reporter=lcov --coverage-dir=.coverage-repo-2026-03-24n --reporter=dots < <(tr '\n' '\0' < .claude/tmp/non_react_test_files.txt)2711 pass, 0 fail, 545 files, 2.35s.pnpm test:profile -- --top 25: red, but not because the non-React slice is red. The command still runs the shared fast suite and gets dragged into current React failures in TOC, core React, and autoformat.pnpm test:slowest -- --top 25: same story.packages/**/src/**./react files, and obvious component or hook shells outside /react.package_score is the sum of the top 5 remaining file scores in that package.Do not do another non-React package sweep.
There is one last real non-React cleanup batch, and it is mostly core static or parser seams plus one code-block deserializer and one tiny excalidraw plugin contract. After that, non-React coverage is basically spent and you should stop.
score >= 7: 3 filesscore >= 6: 8 filesscore >= 5: 19 filesscore >= 4: 74 filesscore >= 3: 124 filesscore >= 2: 198 filesscore >= 1: 204 filescode-block: htmlDeserializerCodeBlock.ts — score 7core: HtmlPlugin.ts — score 7core: htmlStringToEditorDOM.ts — score 7core: pluginRenderTextStatic.tsx — score 6core: ParserPlugin.ts — score 6core: pipeDecorate.ts — score 6excalidraw: BaseExcalidrawPlugin.ts — score 6core: ViewPlugin.ts — score 6core: getSelectedDomFragment.tsx — score 5core: pluginRenderLeafStatic.tsx — score 5core: withScrolling.ts — score 5core: pluginRenderElementStatic.tsx — score 5dnd: onDropNode.ts — score 5core: htmlElementToLeaf.ts — score 5core: AstPlugin.ts — score 5link: upsertLink.ts — score 5markdown: convertNodesSerialize.ts — score 5core — package score 32markdown — package score 21list-classic — package score 20slate — package score 20table — package score 20docx-io — package score 19suggestion — package score 19code-block — package score 17basic-nodes — package score 17list — package score 13code-block — htmlDeserializerCodeBlock.ts — score 7, coverage 39.5%, uncovered 23core — HtmlPlugin.ts — score 7, coverage 75.0%, uncovered 5core — htmlStringToEditorDOM.ts — score 7, coverage 16.7%, uncovered 5core — pluginRenderTextStatic.tsx — score 6, coverage 35.7%, uncovered 63core — ParserPlugin.ts — score 6, coverage 47.8%, uncovered 36core — pipeDecorate.ts — score 6, coverage 21.2%, uncovered 26excalidraw — BaseExcalidrawPlugin.ts — score 6, coverage 0.0%, uncovered 13core — ViewPlugin.ts — score 6, coverage 73.1%, uncovered 7core — getSelectedDomFragment.tsx — score 5, coverage 13.9%, uncovered 31core — pluginRenderLeafStatic.tsx — score 5, coverage 74.4%, uncovered 23Stop non-React coverage after the strict batch, or after the wider batch if you still want a little more. After that, the remaining misses are mostly DOM-ish static helpers, partial-coverage crumbs, schema boilerplate, or low-ROI dust.
That is the point where more non-React coverage turns into percentage cosplay. Switch to React or architecture-safety work instead.