Files
fusion/coverage-report/summary.json
gsxdsm 50dc682dea docs(FN-689): add comprehensive code coverage analysis report
- Add coverage-report/ with summary, gap analysis, and README documentation
- Add per-package coverage scripts (test:coverage:core, :engine, :cli, :dashboard)
- Document files lacking test coverage with priority ratings across all packages
- Identify key coverage gaps: agent-store, IPC host/worker, and dashboard components
- Note engine OOM issue with coverage and provide workaround
2026-04-01 09:33:52 -07:00

322 lines
7.5 KiB
JSON

{
"generatedAt": "2026-04-01T16:27:13.771Z",
"packages": {
"core": {
"lineCoverage": 80.64,
"functionCoverage": 91.27,
"branchCoverage": 84.43,
"files": 21,
"totalStatements": 6198,
"coveredStatements": 4998,
"totalFunctions": 332,
"coveredFunctions": 303,
"totalBranches": 1625,
"coveredBranches": 1372
},
"engine": {
"lineCoverage": 6.04,
"functionCoverage": 77.78,
"branchCoverage": 83.45,
"files": 30,
"totalStatements": 6788,
"coveredStatements": 410,
"totalFunctions": 72,
"coveredFunctions": 56,
"totalBranches": 145,
"coveredBranches": 121,
"note": "Partial coverage — only 5 of 27 test files ran (OOM prevents full run)"
},
"cli": {
"lineCoverage": 36.18,
"functionCoverage": 44.25,
"branchCoverage": 67.65,
"files": 14,
"totalStatements": 5650,
"coveredStatements": 2044,
"totalFunctions": 174,
"coveredFunctions": 77,
"totalBranches": 507,
"coveredBranches": 343
},
"dashboard": {
"lineCoverage": 70.22,
"functionCoverage": 68.94,
"branchCoverage": 84.57,
"files": 108,
"totalStatements": 33238,
"coveredStatements": 23339,
"totalFunctions": 1304,
"coveredFunctions": 899,
"totalBranches": 6920,
"coveredBranches": 5852
}
},
"overall": {
"lineCoverage": 59.36,
"functionCoverage": 70.94,
"branchCoverage": 83.59,
"note": "Engine numbers are artificially low due to OOM; true overall would be higher"
},
"untestedFiles": [
{
"package": "core",
"file": "agent-store.ts",
"lines": 597,
"reason": "Agent state management store — no tests at all"
},
{
"package": "engine",
"file": "ipc/ipc-host.ts",
"lines": 279,
"reason": "IPC host for child process communication"
},
{
"package": "engine",
"file": "ipc/ipc-worker.ts",
"lines": 325,
"reason": "IPC worker for child process communication"
},
{
"package": "engine",
"file": "runtimes/child-process-worker.ts",
"lines": 174,
"reason": "Child process entry point"
},
{
"package": "engine",
"file": "pi.ts",
"lines": 109,
"reason": "Pi integration utilities"
},
{
"package": "engine",
"file": "github.ts",
"lines": 37,
"reason": "GitHub utility"
},
{
"package": "cli",
"file": "bin.ts",
"lines": 786,
"reason": "Main CLI entry point"
},
{
"package": "cli",
"file": "commands/backup.ts",
"lines": 131,
"reason": "Backup CLI command"
},
{
"package": "cli",
"file": "commands/settings-export.ts",
"lines": 74,
"reason": "Settings export command"
},
{
"package": "cli",
"file": "commands/settings-import.ts",
"lines": 128,
"reason": "Settings import command"
},
{
"package": "cli",
"file": "runtime/native-patch.ts",
"lines": 223,
"reason": "Native module patching"
},
{
"package": "dashboard",
"file": "src/mission-routes.ts",
"lines": 1137,
"reason": "Mission API route handlers"
},
{
"package": "dashboard",
"file": "src/terminal.ts",
"lines": 347,
"reason": "Terminal service"
},
{
"package": "dashboard",
"file": "src/subtask-breakdown.ts",
"lines": 331,
"reason": "AI subtask breakdown service"
},
{
"package": "dashboard",
"file": "src/sse.ts",
"lines": 51,
"reason": "Server-Sent Events utility"
},
{
"package": "dashboard",
"file": "app/components/TaskChangesTab.tsx",
"lines": 199,
"reason": "Task file changes display"
},
{
"package": "dashboard",
"file": "app/components/ProjectDetectionResults.tsx",
"lines": 253,
"reason": "Project detection results"
},
{
"package": "dashboard",
"file": "app/components/SetupProjectForm.tsx",
"lines": 225,
"reason": "Project setup form"
},
{
"package": "dashboard",
"file": "app/components/SetupWizardModal.tsx",
"lines": 217,
"reason": "First-run wizard modal"
},
{
"package": "dashboard",
"file": "app/components/ProjectHealthBadge.tsx",
"lines": 106,
"reason": "Health status badge"
},
{
"package": "dashboard",
"file": "app/components/FileBrowser.tsx",
"lines": 113,
"reason": "File browser component"
},
{
"package": "dashboard",
"file": "app/hooks/useProjectHealth.ts",
"lines": 143,
"reason": "Project health polling hook"
},
{
"package": "dashboard",
"file": "app/hooks/useFileEditor.ts",
"lines": 120,
"reason": "File editor hook"
},
{
"package": "dashboard",
"file": "app/hooks/useFileBrowser.ts",
"lines": 84,
"reason": "File browser hook"
},
{
"package": "dashboard",
"file": "app/utils/projectDetection.ts",
"lines": 146,
"reason": "Project detection utility"
}
],
"lowCoverageFiles": [
{
"package": "dashboard",
"file": "src/mission-routes.ts",
"lineCoverage": 37.03,
"priority": "high"
},
{
"package": "cli",
"file": "commands/task.ts",
"lineCoverage": 17.09,
"priority": "high"
},
{
"package": "core",
"file": "agent-store.ts",
"lineCoverage": 0,
"priority": "high"
},
{
"package": "dashboard",
"file": "src/terminal.ts",
"lineCoverage": 36.62,
"priority": "high"
},
{
"package": "dashboard",
"file": "src/server.ts",
"lineCoverage": 28.72,
"priority": "high"
},
{
"package": "engine",
"file": "ipc/ipc-host.ts",
"lineCoverage": 0,
"priority": "high"
},
{
"package": "engine",
"file": "ipc/ipc-worker.ts",
"lineCoverage": 0,
"priority": "high"
},
{
"package": "cli",
"file": "project-resolver.ts",
"lineCoverage": 28.32,
"priority": "high"
},
{
"package": "dashboard",
"file": "src/subtask-breakdown.ts",
"lineCoverage": 50.63,
"priority": "medium"
},
{
"package": "dashboard",
"file": "app/components/NewTaskModal.tsx",
"lineCoverage": 47.1,
"priority": "medium"
},
{
"package": "cli",
"file": "commands/dashboard.ts",
"lineCoverage": 29.98,
"priority": "medium"
},
{
"package": "dashboard",
"file": "src/planning.ts",
"lineCoverage": 42.08,
"priority": "medium"
},
{
"package": "dashboard",
"file": "src/routes.ts",
"lineCoverage": 47.07,
"priority": "medium"
},
{
"package": "cli",
"file": "commands/project.ts",
"lineCoverage": 48.25,
"priority": "medium"
},
{
"package": "cli",
"file": "extension.ts",
"lineCoverage": 56.26,
"priority": "low"
},
{
"package": "dashboard",
"file": "app/components/SettingsModal.tsx",
"lineCoverage": 63.2,
"priority": "low"
},
{
"package": "core",
"file": "gh-cli.ts",
"lineCoverage": 26.52,
"priority": "medium"
}
],
"testIssues": {
"coreFailures": 4,
"cliFailures": 111,
"engineOOM": true,
"dashboardFailures": "select component test failures"
}
}