diff --git a/docs/test-value-audit.json b/docs/test-value-audit.json new file mode 100644 index 0000000000..618bfabaee --- /dev/null +++ b/docs/test-value-audit.json @@ -0,0 +1,129726 @@ +{ + "generatedAt": "2026-06-26T00:03:00.093Z", + "heuristic": true, + "note": "HEURISTIC, not ground truth. Do not auto-delete from this file. See docs/test-value-audit.md methodology + caveats.", + "weights": { + "churnKeyword": -3, + "fixWithSource": 3, + "fix": 2, + "symptomVerification": 3, + "addedWithSource": 2, + "added": 1, + "testPlusSource": 1.5, + "testOnlyChurn": -1, + "quarantineLedger": -5 + }, + "negativeKeywords": [ + "flake", + "flaky", + "deflake", + "quarantine", + "stabiliz", + "appease", + "timeout", + "retry" + ], + "timingsCapturedFrom": "scripts/test-timings.json", + "summary": { + "total": 2051, + "deleteCandidates": 288, + "reviewCandidates": 839, + "keep": 924, + "safeDeletes": 54, + "withTiming": 1979, + "quarantined": 59 + }, + "rows": [ + { + "file": "packages/engine/src/__tests__/workspace-merger-idempotency.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 2, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 3, + "added-with-source": 1, + "fix+source": 2 + }, + "durationMs": 12700, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 13335, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "754434632", + "time": 1782110804000, + "subject": "feat(workspace): Phase C U2 — per-repo landed predicate, finalize-once, auto-retry-then-park", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "627bdcfb0", + "time": 1782115912000, + "subject": "fix(review): Phase C merge-loop hardening — double-land, lease clobber, retry storm", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "3a7123762", + "time": 1782122661000, + "subject": "fix(review): address PR #1717 Phase C merge-loop review feedback", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-tracking-delete.test.ts", + "package": "packages/dashboard", + "valueScore": -7.5, + "positiveCount": 2, + "negativeCount": 7, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 5, + "testOnlyRatio": 0.556, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 5, + "churn-keyword": 3 + }, + "durationMs": 8700, + "testCount": 9, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 11962.5, + "ageDays": 44, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "d0c9e47f6", + "time": 1778645481000, + "subject": "feat(FN-4253): close linked GitHub issues on task deletion", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9dfefc551", + "time": 1779047798000, + "subject": "feat(FN-4941): close or delete GitHub issues when tasks are deleted", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "46fb3f0ef", + "time": 1779273766000, + "subject": "feat(FN-5305): fix async synchronization in github-tracking-delete and alig", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9055ee1a", + "time": 1779606477000, + "subject": "feat(FN-5582): add github tracking delete flow integration tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a9d2064f6", + "time": 1780110314000, + "subject": "FN-5703: forward task:deleted events through in-process runtime", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/merge-runner-spawn-enoent-prevention.test.ts", + "package": "packages/engine", + "valueScore": -2, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 7900, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 8690, + "ageDays": 14, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "7763ba5fa", + "time": 1781234849000, + "subject": "FN-6278: preflight reusable merge worktree cwd", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "a768d36da", + "time": 1782023545000, + "subject": "FN-6817: root reliability fixtures under worker temp", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/session-reconnect.test.ts", + "package": "packages/dashboard", + "valueScore": -6.5, + "positiveCount": 6, + "negativeCount": 9, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 4, + "testOnlyRatio": 0.267, + "signalTally": { + "added": 1, + "test-only-churn": 4, + "test+source": 9, + "fix+source": 1, + "churn-keyword": 5, + "quarantine-ledger": 1 + }, + "durationMs": 6100, + "testCount": 4, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 8082.5, + "ageDays": 78, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "bf141c47d", + "time": 1775697216000, + "subject": "test(FN-1156): add AI session lifecycle and reconnect coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "84ed84313", + "time": 1776618814000, + "subject": "feat(FN-2123): merge fusion/fn-2123", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a29bc688a", + "time": 1777262191000, + "subject": "test(core,dashboard): expand in-memory SQLite to more store tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "046c534dc", + "time": 1778606856000, + "subject": "feat(FN-4146): append verification subtask to planning flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-already-merged.real-git.test.ts", + "package": "packages/engine", + "valueScore": -12, + "positiveCount": 5, + "negativeCount": 7, + "neutralCount": 1, + "timesTouched": 13, + "testOnlyCount": 6, + "testOnlyRatio": 0.462, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test-only-churn": 6, + "test+source": 4, + "churn-keyword": 5, + "quarantine-ledger": 1 + }, + "durationMs": 4600, + "testCount": 7, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 7360, + "ageDays": 47, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "602a7da51", + "time": 1778358107000, + "subject": "feat(FN-3865): complete Steps 3-6 — recover already-merged review tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "39e0b3c6a", + "time": 1778358107000, + "subject": "fix(FN-3865): align merge recovery types and real-git fixtures", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6fc804483", + "time": 1778452405000, + "subject": "feat(FN-3940): expose github tracking controls in task detail modal", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7fc5bda3e", + "time": 1778702826000, + "subject": "test(FN-4293): add tree-equality recovery tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0c8e233d4", + "time": 1778737973000, + "subject": "test(FN-4434): complete Step 3 — cover recovery audit emission", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "211fd0817", + "time": 1778792997000, + "subject": "feat(FN-4523): complete Step 6 — docs, audit type, and verification fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/run-audit.integration.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "churn-keyword": 1, + "added": 1, + "test+source": 4, + "test-only-churn": 1, + "quarantine-ledger": 1 + }, + "durationMs": 5800, + "testCount": 24, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 6380, + "ageDays": 76, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "c2d0ac572", + "time": 1775838098000, + "subject": "test(FN-1414): add run-audit integration tests for core and engine", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "84ed84313", + "time": 1776618814000, + "subject": "feat(FN-2123): merge fusion/fn-2123", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a269f4829", + "time": 1777010554000, + "subject": "refactor: remove legacy kb compatibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "43c8aa58f", + "time": 1778597230000, + "subject": "feat(FN-4042): add SQLite lock contention recovery in core database layer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ef7eb2f3e", + "time": 1778887182000, + "subject": "feat(FN-4640): complete Step 1 — extend RunAuditDomain in core", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workspace-merger-lease.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 5800, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 6090, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "64e87f9a1", + "time": 1782111401000, + "subject": "feat(workspace): Phase C U3 — per-repo land lease (serialize same-sub-repo lands)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "627bdcfb0", + "time": 1782115912000, + "subject": "fix(review): Phase C merge-loop hardening — double-land, lease clobber, retry storm", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workspace-merger.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 3, + "added-with-source": 1, + "test+source": 1, + "fix+source": 2 + }, + "durationMs": 8000, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 5333.3, + "ageDays": 4, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "744ed098a", + "time": 1782109903000, + "subject": "feat(workspace): Phase C U1 — per-repo merge loop (landOneRepo + landWorkspaceTask)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "754434632", + "time": 1782110804000, + "subject": "feat(workspace): Phase C U2 — per-repo landed predicate, finalize-once, auto-retry-then-park", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "3a7123762", + "time": 1782122661000, + "subject": "fix(review): address PR #1717 Phase C merge-loop review feedback", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "9dc228549", + "time": 1782346538000, + "subject": "fix(workspace): make per-repo land resilient to a sub-repo dependency-sync failure", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-task-tools.test.ts", + "package": "packages/cli", + "valueScore": -7, + "positiveCount": 3, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 2, + "testOnlyRatio": 0.222, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "churn-keyword": 4, + "fix": 2, + "test+source": 4, + "quarantine-ledger": 1 + }, + "durationMs": 3800, + "testCount": 4, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 5130, + "ageDays": 39, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "47eaf089b", + "time": 1779039941000, + "subject": "feat(FN-4904): complete Step 3 — align engine and CLI root resolution", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0dc4c9c6a", + "time": 1779039941000, + "subject": "test(FN-4904): cover worktree-root lookup in extension tools", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b80b517a4", + "time": 1779048650000, + "subject": "test(FN-4927): cover no-task fallback for task tools", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "dac2ebbbf", + "time": 1779232525000, + "subject": "fix(FN-5168): stabilize cli worktree root test timeout", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "85c3420f9", + "time": 1781018381000, + "subject": "fix(FN-6079): resolve task tools from merge worktrees", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "2fc6d4d66", + "time": 1781476175000, + "subject": "FN-6430: rescue CLI quarantine tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-db-hydrate.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 4, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 3, + "testOnlyRatio": 0.429, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1, + "test-only-churn": 3 + }, + "durationMs": 7100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 4733.3, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "e59a740d0", + "time": 1778507263000, + "subject": "feat(FN-3841): add worktree database hydration to executor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6acc51cf0", + "time": 1778561306000, + "subject": "feat(FN-4039): recover worktree db scratch bootstrap on hydration failure", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "93dc5a727", + "time": 1778597230000, + "subject": "feat(FN-4083): add WAL enforcement, immediate write transactions, and concu", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5cd0e6665", + "time": 1778996217000, + "subject": "feat(FN-4839): harden real-git test timeouts across engine suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "d9d3ea7fb", + "time": 1779195477000, + "subject": "test(FN-5128): complete Step 3 — add hydration soft-delete regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d0be3e462", + "time": 1781770803000, + "subject": "FN-6610: harden engine test isolation recovery", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/activity-analytics.test.ts", + "package": "packages/core", + "valueScore": 0, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "churn-keyword": 1, + "quarantine-ledger": 1 + }, + "durationMs": 4600, + "testCount": 25, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 4600, + "ageDays": 10, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "53bb1d8f3", + "time": 1781576865000, + "subject": "feat(analytics): U2 — core date-range aggregators (tokens/tools/activity/productivity)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5bc8901f0", + "time": 1781579759000, + "subject": "feat(command-center): U7 — SDLC funnel + throughput", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f5bd86214", + "time": 1781582397000, + "subject": "feat(monitor): U13 — monitor stage (deployments, incidents, MTTR) closes the loop", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "58a34e9cf", + "time": 1781789108000, + "subject": "FN-6631: fix Command Center completion gauges", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "64092ca0a", + "time": 1781826716000, + "subject": "FN-6654: add Command Center agent-run sheets", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/board-workflows-route.test.ts", + "package": "packages/dashboard", + "valueScore": -5.5, + "positiveCount": 1, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 3, + "testOnlyRatio": 0.6, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 3, + "churn-keyword": 2, + "test+source": 1 + }, + "durationMs": 3600, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 4590, + "ageDays": 21, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "010976cee", + "time": 1780582366000, + "subject": "test: promote/board-workflows routes, concurrent sweep, canDropTask, migration forward paths (#1404 #1414 #1415 #1416 #1417)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f77aa073c", + "time": 1780950778000, + "subject": "FN-6025: fix builtin coding auto-merge review flags", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "bdd0bed4b", + "time": 1782416660000, + "subject": "test(dashboard): fix 30 pre-existing pnpm-test failures on main", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "ad246e8bd", + "time": 1782419257000, + "subject": "FN-7001: repair dashboard changed-test expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.responsive-and-dependencies.test.tsx", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 9, + "negativeCount": 12, + "neutralCount": 0, + "timesTouched": 21, + "testOnlyCount": 10, + "testOnlyRatio": 0.476, + "signalTally": { + "added": 1, + "test+source": 9, + "test-only-churn": 10, + "churn-keyword": 2, + "fix": 1 + }, + "durationMs": 6600, + "testCount": 44, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 4400, + "ageDays": 50, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "ed52c3dff", + "time": 1778108228000, + "subject": "test(FN-3591): split TaskDetailModal coverage into focused test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ecbf1f829", + "time": 1778221265000, + "subject": "feat(FN-3276): add task review tab with metadata persistence and desktop la", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "309e3f91a", + "time": 1778379581000, + "subject": "feat(FN-3897): add blocker fan-out hook, badge, and detail modal section", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a9983df84", + "time": 1778507262000, + "subject": "feat(FN-3989): align inline metadata row", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "07ac77630", + "time": 1778545598000, + "subject": "feat(FN-4045): keep inline metadata controls visible on mobile row", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2484591ae", + "time": 1778561306000, + "subject": "feat(FN-4047): add responsive compact timestamps and mobile icon-only contr", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/todo-store.test.ts", + "package": "packages/core", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 3800, + "testCount": 17, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 4370, + "ageDays": 61, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "6f4b42a89", + "time": 1777178618000, + "subject": "feat(FN-2575): merge fusion/fn-2575", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/soft-blocker-auto-finalize-interactions.real-git.test.ts", + "package": "packages/engine", + "valueScore": -4, + "positiveCount": 1, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 5, + "testOnlyRatio": 0.833, + "signalTally": { + "added": 1, + "test-only-churn": 5 + }, + "durationMs": 3400, + "testCount": 7, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 4080, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "208753fb8", + "time": 1778874010000, + "subject": "test(FN-4653): complete Step 1 — add merge-path soft-blocker auto-finalize interaction", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "875b32266", + "time": 1778874010000, + "subject": "test(FN-4653): complete Step 2 — cover mixed blocker sweep handoff", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5548b6f4a", + "time": 1778874010000, + "subject": "test(FN-4653): complete Step 3 — add scheduler scope and stale-blockedBy interaction", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fcbddfe9e", + "time": 1778874010000, + "subject": "test(FN-4653): complete Step 4 — cover restart sweep landed-content behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2aeb2cf18", + "time": 1778874010000, + "subject": "test(FN-4653): complete Step 5 — add governance pause-gating interactions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "8866934b7", + "time": 1778874010000, + "subject": "test(FN-4653): complete Step 6 — finalize governance and typing-safe interactions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/move-task-characterization.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 8100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 4050, + "ageDays": 22, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "4e1b0fab0", + "time": 1780558872000, + "subject": "feat(core): workflow-resolved transitions behind workflowColumns flag, typed rejections, default-workflow hook parity (U4)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0b7549a53", + "time": 1781039401000, + "subject": "FN-6126: enable workflow experimental flags by default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9a7881441", + "time": 1781226497000, + "subject": "FN-6245: keep default auto-merge tasks on live settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pr-response-run.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 11600, + "testCount": 23, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 3866.7, + "ageDays": 20, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "31d4b5335", + "time": 1780716025000, + "subject": "feat(pr): security-hardened review-response run — pr-respond body (U5)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-autostash-orphan-surface.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 3700, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 3700, + "ageDays": 47, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "d604d090a", + "time": 1778381342000, + "subject": "feat(FN-3863): add stash recovery dashboard surface and API routes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bcb4107a1", + "time": 1778452449000, + "subject": "feat(FN-3932): add orphaned finalize-reset autostash safeguard in merger", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1cf987208", + "time": 1778524879000, + "subject": "feat(FN-4018): isolate split merger temp workspaces with settings persisten", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e9b8ba5c5", + "time": 1778597230000, + "subject": "feat(FN-4074): add priority option to task creation in engine and extension", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "52ab8a312", + "time": 1778976489000, + "subject": "test(FN-4807): complete Step 4 — harden autostash suite timeout and cleanup", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-empty-cherry-pick-fallback.test.ts", + "package": "packages/engine", + "valueScore": -1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 3000, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 3225, + "ageDays": 42, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "653500959", + "time": 1778772223000, + "subject": "test(FN-4475): add fallback empty cherry-pick regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ebd79d21b", + "time": 1778773220000, + "subject": "feat(FN-4475): remove unstable merger empty cherry-pick fallback regression", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-ai-cleanup.test.ts", + "package": "packages/engine", + "valueScore": -3, + "positiveCount": 5, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 8, + "churn-keyword": 4, + "quarantine-ledger": 1 + }, + "durationMs": 2800, + "testCount": 15, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 3220, + "ageDays": 15, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "4032a35a2", + "time": 1781093620000, + "subject": "FN-6188: harden AI merge temp worktree cleanup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d75f861f2", + "time": 1781114222000, + "subject": "FN-6199: harden AI merge worktree cleanup", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3e69d3990", + "time": 1781218489000, + "subject": "FN-6244: protect active AI merge worktrees", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "94c3cce7b", + "time": 1781226885000, + "subject": "FN-6257: make AI merge cleanup idempotent for absent worktrees", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1eb256bbf", + "time": 1781230685000, + "subject": "FN-6207: quarantine active-session cleanup pruning test", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "ac342f501", + "time": 1781233341000, + "subject": "FN-6220: harden AI merge worktree cleanup", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-secrets-sync.test.ts", + "package": "packages/dashboard", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 5, + "testOnlyRatio": 0.833, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 5 + }, + "durationMs": 2700, + "testCount": 17, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 3105, + "ageDays": 39, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "cca96a760", + "time": 1779047881000, + "subject": "test(FN-4913): complete Step 7 — add secrets sync contract coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b5e674059", + "time": 1779101250000, + "subject": "test(FN-4980): cover sync-export auth rejection paths", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "47775e942", + "time": 1779103885000, + "subject": "test(FN-4981): complete Step 2 — add push missing-apiKey coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "765a6fed0", + "time": 1779103885000, + "subject": "test(FN-4981): complete Step 3 — add pull missing-apiKey coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c97ebde1d", + "time": 1779103885000, + "subject": "test(FN-4981): complete Step 4 — enforce apiKey guard ordering", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a2b1f7379", + "time": 1781062151000, + "subject": "FN-6152: reset dashboard route test mocks between cases", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-concurrent-writes.test.ts", + "package": "packages/core", + "valueScore": -1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "churn-keyword": 1, + "test+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 2800, + "testCount": 6, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 3010, + "ageDays": 44, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "93dc5a727", + "time": 1778597230000, + "subject": "feat(FN-4083): add WAL enforcement, immediate write transactions, and concu", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "67c680c8d", + "time": 1778604103000, + "subject": "fix(FN-4122): use unique tmp filename for task.json atomic writes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a38752c6b", + "time": 1781647704000, + "subject": "FN-6486: rescue quarantined flaky tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-archive-search.test.ts", + "package": "packages/core", + "valueScore": 0, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 3000, + "testCount": 63, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 3000, + "ageDays": 45, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "ac6aaca2c", + "time": 1778507262000, + "subject": "feat(FN-3982): split monolithic store.test.ts into archive-search, run-muta", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "139e25fcf", + "time": 1778995197000, + "subject": "feat(FN-4837): complete Step 2 — migrate store tests to shared harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "294209f64", + "time": 1780883506000, + "subject": "FN-5943: maintain tasks FTS5 indexes automatically", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "508551c59", + "time": 1781326249000, + "subject": "FN-6299: allow archiving tasks from any column", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/in-review-branch-rebind.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 7400, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 2960, + "ageDays": 38, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "5c3096c7d", + "time": 1779154012000, + "subject": "feat(FN-5083): complete Steps 5-7 rebind UI and reliability docs", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b3ac0beaa", + "time": 1779154028000, + "subject": "test(FN-5083): tighten rebind reliability and quality-gate coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3566cf8a1", + "time": 1781870549000, + "subject": "FN-6695: block unsafe in-review branch rebinds", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-activity.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 5, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 3, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 4, + "test-only-churn": 3, + "churn-keyword": 2, + "fix+source": 1 + }, + "durationMs": 5900, + "testCount": 49, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 2950, + "ageDays": 45, + "lastTouched": "2026-05-28", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "287ebaf10", + "time": 1778561306000, + "subject": "feat(FN-4053): unify task ID allocation with store-owned distributed alloca", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a0f2bc530", + "time": 1778779909000, + "subject": "feat(FN-4429): complete Step 1 — plumb moveSource and userPaused", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "608b6d841", + "time": 1778851957000, + "subject": "feat(FN-4592): complete Step 1 — clear userPaused on unpause", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "63aaadf95", + "time": 1779198686000, + "subject": "test(FN-5115): complete Step 4 — add completion pause regression tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "97f46dbad", + "time": 1779198686000, + "subject": "test(FN-5115): complete Step 7 — stabilize migrations and verification", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentDetailView.mobile-scroll.test.tsx", + "package": "packages/dashboard", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 4, + "testOnlyRatio": 0.8, + "signalTally": { + "added": 1, + "test-only-churn": 4 + }, + "durationMs": 2500, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2875, + "ageDays": 44, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "3a4397215", + "time": 1778651521000, + "subject": "feat(FN-4231): restore mobile scroll in AgentDetailView", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "d68fe3e9f", + "time": 1781194883000, + "subject": "FN-6209: fix tablet tab overflow in agent detail", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b7c23c09c", + "time": 1781476175000, + "subject": "FN-6450: enable touch scrolling for agent detail tabs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "22c936d8e", + "time": 1781912853000, + "subject": "FN-6728: enlarge Agent Detail tab labels", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c1b7ced9e", + "time": 1782073541000, + "subject": "FN-6865: fix mobile agent tab overflow", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/insights-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 7, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 12, + "testOnlyCount": 1, + "testOnlyRatio": 0.083, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "test+source": 9, + "churn-keyword": 4, + "test-only-churn": 1 + }, + "durationMs": 26500, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 2789.5, + "ageDays": 70, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "629398483", + "time": 1776353771000, + "subject": "fix(FN-1909): reorder insights routes to prevent /runs being shadowed by /:id", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "8de7feeb1", + "time": 1776380114000, + "subject": "feat(FN-1974): merge fusion/fn-1974", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1ff4fb19c", + "time": 1777783176000, + "subject": "feat(FN-3015): expand insights route tests with persistence coverage and cl", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "56a407b52", + "time": 1777800967000, + "subject": "feat(FN-3013): add durable insight lifecycle with bounded run executor", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "3f0aa6e3c", + "time": 1777810664000, + "subject": "feat(FN-3017): add insights coverage contracts, AgentsOverviewBar component", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/branch-conflicts-ghost-references.test.ts", + "package": "packages/engine", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 2500, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2750, + "ageDays": 42, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "663e5d2cd", + "time": 1778801607000, + "subject": "feat(FN-4508): complete Step 1 — harden inspectBranchConflict ghost/tip guards", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5cd0e6665", + "time": 1778996217000, + "subject": "feat(FN-4839): harden real-git test timeouts across engine suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/soft-delete-lineage-children.test.ts", + "package": "packages/core", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2 + }, + "durationMs": 2600, + "testCount": 11, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2600, + "ageDays": 37, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "e0c0745c0", + "time": 1779197876000, + "subject": "test(FN-5129): add lineage soft-delete and archive regression coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c7ae1c1a", + "time": 1779200428000, + "subject": "feat(FN-5131): add lineage-unlink flag to triage parent deletes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4955ccf6e", + "time": 1779200803000, + "subject": "feat(FN-5132): align soft-delete-lineage-children test assertion with FN-51", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-handoff-to-review.test.ts", + "package": "packages/core", + "valueScore": 0, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 2600, + "testCount": 8, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2600, + "ageDays": 37, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "93b11c6c0", + "time": 1779264068000, + "subject": "feat(FN-5241): add atomic in-review handoff seam with executor/self-healing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2d425b1e2", + "time": 1779386894000, + "subject": "fix: scrub queued/blockedBy/overlapBlockedBy on in-review transition", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/branch-conflicts-zero-unique.test.ts", + "package": "packages/engine", + "valueScore": -2.5, + "positiveCount": 2, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 3, + "testOnlyRatio": 0.6, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 3, + "churn-keyword": 1 + }, + "durationMs": 2200, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2475, + "ageDays": 42, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "bcb0035d1", + "time": 1778787849000, + "subject": "feat(FN-4500): complete Step 2 — harden zero-unique classifier", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "14ef1041a", + "time": 1778787849000, + "subject": "feat(FN-4500): complete Step 3 — add live zero-commit reclaim fast-path", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5ce377afe", + "time": 1778801607000, + "subject": "feat(FN-4508): complete Step 7 — docs and compatibility updates", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b2306e88d", + "time": 1778807225000, + "subject": "chore(FN-4527): complete Steps 4-5 — verify gates and add changeset", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5cd0e6665", + "time": 1778996217000, + "subject": "feat(FN-4839): harden real-git test timeouts across engine suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workspace-e2e.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 4800, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 2400, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "78d7a28f1", + "time": 1782117943000, + "subject": "test(workspace): Phase D U2 — e2e merge + recovery harness (no-push invariant)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/research-extension-tools.test.ts", + "package": "packages/cli", + "valueScore": -2.5, + "positiveCount": 6, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 1, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 3, + "test+source": 7, + "test-only-churn": 1, + "quarantine-ledger": 1 + }, + "durationMs": 2100, + "testCount": 10, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2362.5, + "ageDays": 56, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "6670837b7", + "time": 1777606782000, + "subject": "feat(FN-2996): add research agent tools with extension wiring, remote setti", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f2fa44e27", + "time": 1777824664000, + "subject": "feat(FN-2999): harden research lifecycle with idempotent cancel/retry, SSE", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "f1ee69e59", + "time": 1777911607000, + "subject": "feat(FN-3014): document research recovery semantics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a02b42106", + "time": 1777954882000, + "subject": "feat(FN-3313): add plugin slot registry, planning mode rewind, and docker n", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7fc7b7653", + "time": 1778118052000, + "subject": "feat(FN-3599): align documentation with delivery process", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "af82119a7", + "time": 1778175152000, + "subject": "feat(FN-3705): gate research tools behind experimental flag", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-mission-goal-tools.test.ts", + "package": "packages/cli", + "valueScore": -7, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 2, + "test-only-churn": 1, + "quarantine-ledger": 1 + }, + "durationMs": 1700, + "testCount": 4, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2295, + "ageDays": 23, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "93e8bd994", + "time": 1780436871000, + "subject": "FN-5899: add mission-goal linking commands and tools", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "26bc80a0a", + "time": 1780551083000, + "subject": "FN-5958: add mission goal linking to create and update flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "259cdfb53", + "time": 1781912853000, + "subject": "FN-6734: stabilize CLI extension test cleanup", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "c18e827b9", + "time": 1782057640000, + "subject": "FN-6839: await CLI cached store shutdown", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-acquisition-workspace.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 6600, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 2200, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "12d33c512", + "time": 1782101828000, + "subject": "feat(workspace): Phase A U2 — per-repo acquisition hardening", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d5fa8654f", + "time": 1782102836000, + "subject": "fix(review): Phase A workspace hardening — tool errors, activeWorktrees, non-fatal acquire", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/workflow-import-export.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 6500, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 2166.7, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "407ce03bf", + "time": 1780640206000, + "subject": "feat(dashboard): workflow and template JSON import/export with trust-boundary stripping", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-goal-tools.test.ts", + "package": "packages/cli", + "valueScore": -7, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 2, + "test-only-churn": 1, + "quarantine-ledger": 1 + }, + "durationMs": 1600, + "testCount": 7, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2160, + "ageDays": 27, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "b335f3d7c", + "time": 1780064003000, + "subject": "FN-5652: add goal retrieval tool for agent execution", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fab8a62b5", + "time": 1780883506000, + "subject": "FN-5977: expose goal retrieval tools across engine agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "259cdfb53", + "time": 1781912853000, + "subject": "FN-6734: stabilize CLI extension test cleanup", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "c18e827b9", + "time": 1782057640000, + "subject": "FN-6839: await CLI cached store shutdown", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentDetailView.settings.test.tsx", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 10700, + "testCount": 25, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 2140, + "ageDays": 44, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "d98c053ed", + "time": 1778597230000, + "subject": "feat(FN-4088): split AgentDetailView tests into seven focused suites with s", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "91931bd5d", + "time": 1778754223000, + "subject": "feat(FN-4394): complete Step 5 — add dashboard scope discipline controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6b2607dae", + "time": 1778758363000, + "subject": "feat(FN-4400): complete Step 7 — add prompt-size api and dashboard sparkline", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/__tests__/session-manager.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 4200, + "testCount": 19, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 2100, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "4fc1a9dd4", + "time": 1780639453000, + "subject": "feat(engine): add CliAgentAdapter interface and CliSessionManager (U2)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "773ba7620", + "time": 1780640694000, + "subject": "test(engine): self-skip real-PTY e2e when PTY I/O unavailable in environment", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/ai-merge-worktree-cleanup.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 6300, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 2100, + "ageDays": 14, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "ac342f501", + "time": 1781233341000, + "subject": "FN-6220: harden AI merge worktree cleanup", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "2085610e9", + "time": 1781272169000, + "subject": "FN-6246: move AI merge clean rooms into repo storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dc4c2b220", + "time": 1781515748000, + "subject": "FN-6453: clean up AI-merge worktrees after setup failures", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/vitest-workspace-resolution.test.ts", + "package": "packages/cli", + "valueScore": -7.5, + "positiveCount": 2, + "negativeCount": 7, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 5, + "testOnlyRatio": 0.556, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "test-only-churn": 5, + "churn-keyword": 3, + "fix": 1, + "test+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 1500, + "testCount": 3, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2062.5, + "ageDays": 63, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "65c9b8f8d", + "time": 1776983497000, + "subject": "fix(FN-2360): harden CLI vitest workspace source aliasing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "64d829f92", + "time": 1777010554000, + "subject": "test(FN-2358): harden clean-worktree CI verification tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "40e44401f", + "time": 1777046065000, + "subject": "fix(FN-2371): preserve log severity in dashboard TUI capture", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "94b118088", + "time": 1777046065000, + "subject": "fix(FN-2364): harden diagnostics context and plugin reload imports", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "822bde782", + "time": 1777489376000, + "subject": "test(FN-2360): harden test isolation around repo fusion state", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1c0a5dfd6", + "time": 1777665637000, + "subject": "feat(FN-3061): align remaining compact icon actions with shared sizing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/verification-spawn-supervision.real-git.test.ts", + "package": "packages/engine", + "valueScore": -4, + "positiveCount": 2, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 4, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 4, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 1700, + "testCount": 0, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2040, + "ageDays": 37, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "dc8dd33f8", + "time": 1779236343000, + "subject": "test(FN-5189): complete Step 4 — add supervision regression test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9a58c8efa", + "time": 1780456464000, + "subject": "Clean up agents", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bddc876d1", + "time": 1780459800000, + "subject": "Fix tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "821d72462", + "time": 1780461436000, + "subject": "Fix tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3ac02ccdd", + "time": 1780461483000, + "subject": "FN-5930: stabilize verification spawn supervision test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "a8f91e9cc", + "time": 1780461758000, + "subject": "fix(FN-5930): remove duplicate const in afterEach cleanup", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-diff-done-tasks.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 2 + }, + "durationMs": 6100, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 2033.3, + "ageDays": 42, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "376353593", + "time": 1778805302000, + "subject": "test(FN-4524): add done-task diff regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "55903924a", + "time": 1778805302000, + "subject": "chore(FN-4524): finalize regression coverage and changeset", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6df38aca8", + "time": 1778807225000, + "subject": "feat(FN-4527): complete Step 1 — harden done-task diff stats fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "92721f41f", + "time": 1778872072000, + "subject": "test(FN-4647): complete Step 5 — add done-task diff labeling regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "dbb080449", + "time": 1780074846000, + "subject": "FN-5666: exclude base commit from done-task diff ranges", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PlanningModeModal.initial.test.tsx", + "package": "packages/dashboard", + "valueScore": -7, + "positiveCount": 4, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 5, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test+source": 4, + "test-only-churn": 5, + "churn-keyword": 3 + }, + "durationMs": 1500, + "testCount": 22, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2025, + "ageDays": 52, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "6ea1fb01e", + "time": 1777940541000, + "subject": "feat(FN-3325): remove monolithic PlanningModeModal test file", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "efdc6c462", + "time": 1778630673000, + "subject": "feat(FN-4139): add swipe-back navigation to chat, mission, and planning flo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4d99a72c9", + "time": 1778864719000, + "subject": "feat(FN-4619): add regression test for initial loading thinking state in Pl", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ec169bf34", + "time": 1778982004000, + "subject": "test(FN-4786): complete Step 4 — add first-turn loading regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "dab1569ac", + "time": 1780429324000, + "subject": "FN-5892: dedupe planning sessions and persist history deletion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktree-contamination-attribution.real-git.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 2000, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2000, + "ageDays": 38, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "385a5cd2d", + "time": 1779116826000, + "subject": "test(FN-5039): complete Step 4 — add real-git contamination attribution backstop", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "23a0c27bd", + "time": 1779513045000, + "subject": "fix(engine-tests): subprocess timeout attribution + ENOTEMPTY retry on cleanup", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-worktree-metadata.test.ts", + "package": "packages/engine", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 1800, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1980, + "ageDays": 39, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "40f9aa99e", + "time": 1779058518000, + "subject": "feat(FN-4962): complete Step 3 — reconcile stale worktree metadata", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0e4fda59b", + "time": 1779058518000, + "subject": "test(FN-4962): stabilize recovery test expectations and typing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "cf0101be7", + "time": 1779379583000, + "subject": "fix(FN-5256): keep live task worktrees through pause/resume races", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-workspace.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 11800, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1966.7, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "7cd204e4e", + "time": 1782117479000, + "subject": "feat(workspace): Phase D U1 — workspace-aware self-healing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8e70d6960", + "time": 1782119957000, + "subject": "fix(review): Phase D self-healing hardening — finalize-site audit, lease/TOCTOU safety", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/workflow-design-route.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix": 1, + "churn-keyword": 2, + "fix+source": 1 + }, + "durationMs": 9800, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1960, + "ageDays": 21, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "776def02e", + "time": 1780642505000, + "subject": "feat(dashboard): AI workflow design endpoint with validation, stripping, and rate limit", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "563cb5b37", + "time": 1780692965000, + "subject": "Address PR review feedback (#1433)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "854b6a30c", + "time": 1780730128000, + "subject": "fix(lint): empty-interface PrSourceDescriptor → type alias, drop unused eslint-disable directives", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "e13897103", + "time": 1780900216000, + "subject": "fix: stabilize workflow board and loop recovery", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "0453a65bf", + "time": 1781755973000, + "subject": "FN-6613: inject skills into agent session lanes", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/owning-node-unavailable-interactions.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "fix": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 2900, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1933.3, + "ageDays": 40, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "5c5b922d7", + "time": 1778988460000, + "subject": "test(FN-4818): complete Step 2 — add owning-node handoff interaction coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "bb9e93fab", + "time": 1778988460000, + "subject": "fix(FN-4818): align owning-node interaction assertions with landed behavior", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "6fa9aef63", + "time": 1778991964000, + "subject": "feat(FN-4823): complete lease recovery central-claim reconciliation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8c734fe23", + "time": 1782369172000, + "subject": "FN-6973: stabilize engine liveness tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentDetailView.advanced-settings.test.tsx", + "package": "packages/dashboard", + "valueScore": 4.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 3 + }, + "durationMs": 10500, + "testCount": 53, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1909.1, + "ageDays": 44, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "d98c053ed", + "time": 1778597230000, + "subject": "feat(FN-4088): split AgentDetailView tests into seven focused suites with s", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5f9493c8a", + "time": 1778715480000, + "subject": "test(FN-4386): complete Step 5 — add skip idle heartbeat toggle tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f86061865", + "time": 1778746247000, + "subject": "feat(FN-4401): complete remaining auto-claim snapshot integration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ab1630775", + "time": 1780069512000, + "subject": "FN-5669: unify agent model favorites with shared selector state", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1c4ec5f00", + "time": 1781330101000, + "subject": "FN-6327: add engineer backlog auto-claim controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/plugin-traits.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 3800, + "testCount": 21, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1900, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "26718a31c", + "time": 1780562606000, + "subject": "feat(engine): plugin-contributed traits — async-only hooks, pre-evaluated gates, live-dependent disable guard (U8)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "60605fafa", + "time": 1780564428000, + "subject": "feat(core): workflowColumns integrity pass, graduation report, server-side trait validation, plugin post-commit hooks, docs + changeset (U12)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/__tests__/state-machine.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 1800, + "testCount": 21, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 1890, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "ed4c7ba00", + "time": 1780640328000, + "subject": "feat(engine): add cli-agent telemetry hub and session state machine (U3)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/session-cross-tab.test.ts", + "package": "packages/dashboard", + "valueScore": -9, + "positiveCount": 1, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "churn-keyword": 2, + "test+source": 2, + "quarantine-ledger": 1 + }, + "durationMs": 1300, + "testCount": 6, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1885, + "ageDays": 78, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "bf141c47d", + "time": 1775697216000, + "subject": "test(FN-1156): add AI session lifecycle and reconnect coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "84ed84313", + "time": 1776618814000, + "subject": "feat(FN-2123): merge fusion/fn-2123", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a29bc688a", + "time": 1777262191000, + "subject": "test(core,dashboard): expand in-memory SQLite to more store tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1f540b29d", + "time": 1781476175000, + "subject": "FN-6443: rescue dashboard session tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "f01ede252", + "time": 1781912854000, + "subject": "FN-6742: rescue session cross-tab tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.definition-actions.test.tsx", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 7, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 3, + "testOnlyRatio": 0.3, + "signalTally": { + "added": 1, + "test-only-churn": 3, + "test+source": 6, + "churn-keyword": 1 + }, + "durationMs": 9300, + "testCount": 50, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1860, + "ageDays": 50, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "ed52c3dff", + "time": 1778108228000, + "subject": "test(FN-3591): split TaskDetailModal coverage into focused test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "dc95aa035", + "time": 1778118265000, + "subject": "feat(FN-3600): harden TaskDetailModal pause/unpause async assertions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ecbf1f829", + "time": 1778221265000, + "subject": "feat(FN-3276): add task review tab with metadata persistence and desktop la", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fe663a498", + "time": 1778231861000, + "subject": "feat(FN-3725): add shell regression matrix and stabilize action gate and ro", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "c9cc97060", + "time": 1778347865000, + "subject": "feat(FN-3284): expand PR review-tab test coverage and add direct-mode progr", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ff05d5572", + "time": 1778851957000, + "subject": "feat(FN-4592): complete Step 4 — enable userPaused unpause in detail modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/audit-and-recovery.test.ts", + "package": "packages/engine", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 1600, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1840, + "ageDays": 43, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "c7f8d3821", + "time": 1778735321000, + "subject": "test(FN-4361): add reliability interaction backstop suite", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5cd0e6665", + "time": 1778996217000, + "subject": "feat(FN-4839): harden real-git test timeouts across engine suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/explicit-duplicate-marker-sweep.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 5500, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1833.3, + "ageDays": 36, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "8f2d5e7e6", + "time": 1779312525000, + "subject": "feat(FN-5220): guard explicit duplicate markers in triage and self-healing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/test-project.test.ts", + "package": "packages/core", + "valueScore": -10, + "positiveCount": 5, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 4, + "testOnlyRatio": 0.364, + "signalTally": { + "added": 1, + "test+source": 4, + "churn-keyword": 4, + "test-only-churn": 4, + "fix": 2, + "quarantine-ledger": 1 + }, + "durationMs": 1200, + "testCount": 10, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1800, + "ageDays": 79, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "a0a7a9c1d", + "time": 1775625916000, + "subject": "test(FN-1115): add reusable test project fixture coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "049f356f8", + "time": 1776577637000, + "subject": "feat(FN-2087): finalize canonical memory path migration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ff515f011", + "time": 1777010557000, + "subject": "feat(FN-2369): merge fusion/fn-2369", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "72e94dddb", + "time": 1778597231000, + "subject": "feat(FN-4044): harden task ID collision guards and allocation safety", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fd16a5d2c", + "time": 1778630672000, + "subject": "feat(FN-4122): simplify fan-out badge label, inherit count color from paren", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "415cd6a11", + "time": 1778964403000, + "subject": "test(FN-4783): stabilize workspace test lanes for verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/session-error-recovery.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 6, + "negativeCount": 6, + "neutralCount": 1, + "timesTouched": 13, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 10, + "churn-keyword": 7, + "fix+source": 2 + }, + "durationMs": 3600, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1800, + "ageDays": 78, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "bf141c47d", + "time": 1775697216000, + "subject": "test(FN-1156): add AI session lifecycle and reconnect coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "236bfeeab", + "time": 1779240378000, + "subject": "fix(dashboard): plumb TaskStore through mission-interview rehydration", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktree-remove-non-empty-recovery.real-git.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 1700, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 1785, + "ageDays": 14, + "lastTouched": "2026-06-11", + "evidence": [ + { + "sha": "39b2478f0", + "time": 1781219707000, + "subject": "FN-6227: handle non-empty worktree removals", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/CommandCenter.tablet-layout.test.tsx", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 5, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 2, + "testOnlyRatio": 0.25, + "signalTally": { + "churn-keyword": 2, + "added": 1, + "test+source": 5, + "test-only-churn": 2 + }, + "durationMs": 2600, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1733.3, + "ageDays": 7, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "8ecd14b5a", + "time": 1781846446000, + "subject": "FN-6679: fix Command Center tablet overflow", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "511794437", + "time": 1781915135000, + "subject": "FN-6720: add productivity task duration stats", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a3be2351d", + "time": 1781928552000, + "subject": "Fix Full Suite test failures: productivity fixtures + delete teardown race", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "f3343ca79", + "time": 1781935604000, + "subject": "FN-6754: restore Command Center tablet API mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a326e8e68", + "time": 1781936179000, + "subject": "FN-6717: move Nodes into Command Center", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9483670d6", + "time": 1781939725000, + "subject": "FN-6755: move org chart and heartbeat controls to Team", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.github-tracking-stale.test.tsx", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2 + }, + "durationMs": 1700, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1700, + "ageDays": 37, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "ab5158e68", + "time": 1779204023000, + "subject": "test(FN-5148): complete Step 4 — add stale github tracking modal coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5996787cb", + "time": 1779204023000, + "subject": "test(FN-5148): extend stale guard coverage to all tracking handlers", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "9eff4d424", + "time": 1781733176000, + "subject": "FN-6574: repair TaskDetailModal definition test lanes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-diff-attribution-restricted.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 1700, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1700, + "ageDays": 37, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "f1b9cb9af", + "time": 1779207891000, + "subject": "test(FN-5154): complete Step 3 — cover attribution-restricted done diffs", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "d33cfaa7e", + "time": 1779207891000, + "subject": "test(FN-5154): align legacy rebase-range expectation with attribution fallback", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.create-pr-e2e.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 3300, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1650, + "ageDays": 37, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "c047b2565", + "time": 1779248746000, + "subject": "feat(FN-5169): add create-pr e2e and integration tests for TaskDetailModal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0c53f46af", + "time": 1782401684000, + "subject": "FN-6983: remove branch reattachment warning", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-agent-set-instructions.test.ts", + "package": "packages/cli", + "valueScore": -3.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 1400, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1645, + "ageDays": 6, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "70cce18c3", + "time": 1781880104000, + "subject": "FN-6712: add managed agent instructions tool", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "259cdfb53", + "time": 1781912853000, + "subject": "FN-6734: stabilize CLI extension test cleanup", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "c18e827b9", + "time": 1782057640000, + "subject": "FN-6839: await CLI cached store shutdown", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/auto-merge-toggle-blank.mobile-integration.test.tsx", + "package": "packages/dashboard", + "valueScore": -1.5, + "positiveCount": 3, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 2, + "testOnlyRatio": 0.25, + "signalTally": { + "churn-keyword": 3, + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 5 + }, + "durationMs": 1500, + "testCount": 10, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1612.5, + "ageDays": 18, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "26fa47900", + "time": 1780883507000, + "subject": "FN-6005: add mobile auto-merge blank-screen regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a566f498d", + "time": 1780995629000, + "subject": "FN-6047: fix mobile-to-tablet viewport reflow", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c0ff36073", + "time": 1781238419000, + "subject": "FN-6243: keep mobile auto-merge toggles visible", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "3bd8353fc", + "time": 1781269717000, + "subject": "FN-6288: fix mobile viewport screen mocking", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "af31f7ddf", + "time": 1781834301000, + "subject": "FN-6657: embed system stats in Command Center", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/process-supervisor.test.ts", + "package": "packages/core", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 1400, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1610, + "ageDays": 37, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "87ea63c7c", + "time": 1779236342000, + "subject": "feat(FN-5189): complete Step 2 — implement process supervisor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "dd6ccc67a", + "time": 1779283216000, + "subject": "fix(FN-5257): restore SecretsView action icon visibility", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "dd51b5e32", + "time": 1781297424000, + "subject": "FN-6293: stabilize process supervisor cascade test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/heartbeat-room-messages.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 2 + }, + "durationMs": 7900, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1580, + "ageDays": 44, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "e7fc3a9d1", + "time": 1778635217000, + "subject": "feat(FN-4177): add heartbeat messaging support for chat rooms", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3f9f4f6ef", + "time": 1778790464000, + "subject": "test(FN-4517): complete Step 2 — add gating regressions for room posts", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ee4652a49", + "time": 1779008881000, + "subject": "feat(FN-4861): merge fusion/fn-4861", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6fdfb1ad5", + "time": 1779347853000, + "subject": "feat(FN-5425): add coordination notice system for multi-agent room task fil", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-get-task-columns.test.ts", + "package": "packages/core", + "valueScore": -4, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "quarantine-ledger": 1 + }, + "durationMs": 1300, + "testCount": 5, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1560, + "ageDays": 40, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "5ca7f45fe", + "time": 1778961867000, + "subject": "feat(FN-4785): complete Step 1 — add batched task column lookup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3dfa162f0", + "time": 1778961867000, + "subject": "feat(FN-4785): complete Step 1 — add getTaskColumns test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SessionTerminal.mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": -4, + "positiveCount": 3, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 3, + "testOnlyRatio": 0.375, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 3, + "churn-keyword": 3, + "test+source": 4 + }, + "durationMs": 1300, + "testCount": 22, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1560, + "ageDays": 21, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "7a80d29d4", + "time": 1780651666000, + "subject": "feat(dashboard): mobile terminal input bar with sticky Ctrl accessory keys (U13)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9417c8149", + "time": 1781014157000, + "subject": "FN-6078: fix dashboard tests to use constructable mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c285c30c1", + "time": 1781015079000, + "subject": "FN-6076: align dashboard tests with updated labels and mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c78047037", + "time": 1781038641000, + "subject": "FN-6127: stabilize dashboard test mocks and isolation", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "02ae5a934", + "time": 1781231845000, + "subject": "FN-6213: prevent keyboard from forcing mobile layout", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "bd328f228", + "time": 1781684120000, + "subject": "FN-6536: apply terminal preferences to sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentPromptsManager.test.tsx", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 14800, + "testCount": 44, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1557.9, + "ageDays": 72, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "6a4749159", + "time": 1776181439000, + "subject": "feat(FN-1639): merge fusion/fn-1639", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "853dad5fd", + "time": 1776339492000, + "subject": "feat(FN-1885): merge fusion/fn-1885", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "27b3709c4", + "time": 1776656894000, + "subject": "feat(FN-2193): add fullscreen template preview for agent prompts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "3f061460b", + "time": 1777425677000, + "subject": "fix(FN-2662): honor project model overrides and stabilize tests", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/evals-routes.test.ts", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 3, + "churn-keyword": 2 + }, + "durationMs": 1500, + "testCount": 7, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1537.5, + "ageDays": 49, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "c32999b29", + "time": 1778199851000, + "subject": "feat(FN-3394): add evals dashboard view with API routes and client hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a3572156e", + "time": 1778203794000, + "subject": "feat(FN-3713): remove legacy webhook key references from schema test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "419222046", + "time": 1778239280000, + "subject": "test(FN-3729): add eval dashboard coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c12e7e39f", + "time": 1781476175000, + "subject": "FN-6444: rescue dashboard route API tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "003740d01", + "time": 1782409850000, + "subject": "test: speed up slow dashboard test suites", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-workspace-capture.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 4600, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1533.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "fc9423e46", + "time": 1782106165000, + "subject": "feat(workspace): Phase B U1 — per-repo change capture, contamination, and verify", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentDetailView.editors.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 3000, + "testCount": 33, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1500, + "ageDays": 44, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "d98c053ed", + "time": 1778597230000, + "subject": "feat(FN-4088): split AgentDetailView tests into seven focused suites with s", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/workflow-and-file-scope.test.ts", + "package": "packages/engine", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 1300, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1495, + "ageDays": 43, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "c7f8d3821", + "time": 1778735321000, + "subject": "test(FN-4361): add reliability interaction backstop suite", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5cd0e6665", + "time": 1778996217000, + "subject": "feat(FN-4839): harden real-git test timeouts across engine suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/scope-auto-widen.real-git.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 4300, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1433.3, + "ageDays": 35, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "f6f38676b", + "time": 1779406231000, + "subject": "feat(FN-5226): add scope auto-widen layer 2.5 to merger for attribution-bas", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/sandbox/bubblewrap-backend.test.ts", + "package": "packages/engine", + "valueScore": -2, + "positiveCount": 3, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 2, + "test+source": 2, + "churn-keyword": 1, + "quarantine-ledger": 1 + }, + "durationMs": 1300, + "testCount": 5, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1430, + "ageDays": 41, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "d44a3625d", + "time": 1778867403000, + "subject": "feat(FN-4637): complete Step 3 — implement bubblewrap backend", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3427e8b47", + "time": 1778867403000, + "subject": "fix(FN-4637): harden bubblewrap runner and extend coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e22bd4626", + "time": 1778872370000, + "subject": "test(FN-4643): complete Step 3 — cover native streaming behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cc7b9f308", + "time": 1778872370000, + "subject": "feat(FN-4643): complete Step 7 — documentation and delivery", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "27dd92721", + "time": 1778990079000, + "subject": "feat(FN-4830): complete Steps 4-7 stale lock recovery delivery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "97a49ac19", + "time": 1781375977000, + "subject": "FN-6382: unquarantine stabilized flaky tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/settings-export.test.ts", + "package": "packages/core", + "valueScore": 2.5, + "positiveCount": 7, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 2, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "test-only-churn": 2, + "churn-keyword": 1, + "quarantine-ledger": 1 + }, + "durationMs": 4900, + "testCount": 45, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1400, + "ageDays": 86, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "993656822", + "time": 1775005488000, + "subject": "feat(KB-624): add settings export and import functionality", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "57f34d193", + "time": 1775012425000, + "subject": "feat(KB-336): rename data directory from .kb to .fusion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "32c5b3064", + "time": 1775277573000, + "subject": "refactor(FN-846): rename filename prefixes from kb to fusion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a9e8073d2", + "time": 1775784089000, + "subject": "feat(FN-1423): add promptOverrides to project settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a269f4829", + "time": 1777010554000, + "subject": "refactor: remove legacy kb compatibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskCard.footer-alignment.test.tsx", + "package": "packages/dashboard", + "valueScore": -5, + "positiveCount": 3, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 3, + "testOnlyRatio": 0.375, + "signalTally": { + "added": 1, + "test-only-churn": 3, + "churn-keyword": 3, + "test+source": 4 + }, + "durationMs": 1100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1375, + "ageDays": 41, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "4f03857dc", + "time": 1778854883000, + "subject": "test(FN-4598): complete Step 2 — add footer chip alignment regression", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "550aeb103", + "time": 1778860569000, + "subject": "test(FN-4609): complete Step 2 — assert footer chip text optical offset", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "53e0372bc", + "time": 1779078846000, + "subject": "test(FN-4986): complete Step 3 — update footer cluster alignment assertions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "39fee8365", + "time": 1779168861000, + "subject": "test(FN-5099): add failing footer-alignment case for retry badge", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "d8a04ff5a", + "time": 1779168861000, + "subject": "feat(FN-5099): complete Step 4 — pass verification gates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c9ff2078b", + "time": 1779295360000, + "subject": "feat(FN-5314): add broad-scope advisory chip to TaskCard and banner to Task", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/verification-fix-already-on-main.real-git.test.ts", + "package": "packages/engine", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 1300, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1332.5, + "ageDays": 42, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "38267f479", + "time": 1778831411000, + "subject": "feat(FN-4559): complete remaining recovery, tests, and docs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "415cd6a11", + "time": 1778964403000, + "subject": "test(FN-4783): stabilize workspace test lanes for verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "c89ad28e7", + "time": 1780041317000, + "subject": "FN-5646: preserve AI body when canonicalizing merge commits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-diff-rebase-range.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 1300, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1300, + "ageDays": 40, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "fdc6d86c1", + "time": 1778953806000, + "subject": "test(FN-4754): add dashboard diff display read-only and rebase-range guards", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "fc21c69cb", + "time": 1779207890000, + "subject": "test(FN-5154): align rebase-range fixtures with attribution semantics", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-comments.test.ts", + "package": "packages/core", + "valueScore": -1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 1200, + "testCount": 53, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1290, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b000b8dd6", + "time": 1779119116000, + "subject": "feat(FN-4966): complete Step 2 — add PrInfo conflict diagnostics shape", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/integration-worktree-state.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 7500, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1250, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "5a76a8907", + "time": 1779399299000, + "subject": "feat(FN-5351): add merge audit telemetry with typed events and integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "24686cade", + "time": 1779485909000, + "subject": "fix(merger): autostash dirty reuse worktrees and fail loudly on autostash errors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/knowledge-index.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix": 1 + }, + "durationMs": 6100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1220, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "0a87890bd", + "time": 1781580892000, + "subject": "feat(knowledge): U14 — persistent knowledge index", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c1b581e01", + "time": 1781582954000, + "subject": "fix(review): apply autofix feedback", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/fn-binary.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 2400, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1200, + "ageDays": 55, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "80fb239f3", + "time": 1777669015000, + "subject": "feat(FN-3046): add fn binary panel and standalone CLI entrypoint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-squash-audit.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 4200, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1200, + "ageDays": 44, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "5d03d355c", + "time": 1778597231000, + "subject": "feat(FN-4067): add squash audit gate to merger with integration tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3d6edb409", + "time": 1778630672000, + "subject": "feat(FN-4097): add merger audit gate test coverage for combined audit findi", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "543ea6679", + "time": 1779068750000, + "subject": "feat(FN-4949): add reclaim deferral guards for active executor worktrees", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SecretsView.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 10700, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1188.9, + "ageDays": 39, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "0f6b0fb09", + "time": 1779104816000, + "subject": "feat(FN-4984): complete Step 2 — add SecretsView sync passphrase panel", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0191bef40", + "time": 1779259320000, + "subject": "feat(FN-5161): restore SecretsView eye toggle icon styling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "99665009f", + "time": 1779271668000, + "subject": "feat(FN-5222): remove docs link from secrets view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dd6ccc67a", + "time": 1779283216000, + "subject": "fix(FN-5257): restore SecretsView action icon visibility", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "8b839d79e", + "time": 1780413250000, + "subject": "FN-5878: re-hide revealed secrets from the eye toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7231a5751", + "time": 1782149174000, + "subject": "feat(dashboard): Secrets cross-node sync passphrase moves below the list, collapsed behind a disclosure", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-insights.test.ts", + "package": "packages/cli", + "valueScore": -9.5, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "churn-keyword": 2, + "test+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 800, + "testCount": 4, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1180, + "ageDays": 56, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "0c932e5e9", + "time": 1777603722000, + "subject": "feat(FN-3035): tighten insight tool filter typing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "935166dbb", + "time": 1778137534000, + "subject": "feat(FN-3450): add mesh task create replication across nodes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "259cdfb53", + "time": 1781912853000, + "subject": "FN-6734: stabilize CLI extension test cleanup", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "c18e827b9", + "time": 1782057640000, + "subject": "FN-6839: await CLI cached store shutdown", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-meta-archive-guards.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 5300, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1177.8, + "ageDays": 38, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "cae9c6c4f", + "time": 1779133583000, + "subject": "feat(FN-5064): merge fusion/fn-5064", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c82cdb281", + "time": 1780551083000, + "subject": "FN-5944: stop redundant run-audit re-emission", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/ghost-bug-preflight.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2 + }, + "durationMs": 1100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1155, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "619070388", + "time": 1779090804000, + "subject": "test(FN-4892): add reliability interaction coverage for intake auto-archive", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "02f571d0c", + "time": 1779090804000, + "subject": "test(FN-4892): complete Step 7 — expand intake reliability scenarios", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "aa60dd3c1", + "time": 1779090804000, + "subject": "test(FN-4892): fix type-safe intake preflight coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-classify-owned-landed-evidence.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 2200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1100, + "ageDays": 41, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "dacf45cba", + "time": 1778901535000, + "subject": "feat(FN-4700): complete Step 2 — add no-changes-finalized classifier", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "12d718166", + "time": 1779165875000, + "subject": "test(FN-5094): complete Step 4 — add inline attribution coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/merge-strategy-and-overlap.test.ts", + "package": "packages/engine", + "valueScore": -4, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 900, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1080, + "ageDays": 43, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "c7f8d3821", + "time": 1778735321000, + "subject": "test(FN-4361): add reliability interaction backstop suite", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "c8d9492b6", + "time": 1778815269000, + "subject": "feat(FN-4550): remove duplicate Case 6 skip coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5cd0e6665", + "time": 1778996217000, + "subject": "feat(FN-4839): harden real-git test timeouts across engine suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/monitor-store.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 6300, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1050, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "f5bd86214", + "time": 1781582397000, + "subject": "feat(monitor): U13 — monitor stage (deployments, incidents, MTTR) closes the loop", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61f389ed3", + "time": 1781614571000, + "subject": "Address PR review feedback (#1683)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0d854263e", + "time": 1781647869000, + "subject": "Address PR review feedback round 2 (#1683)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-auth.test.ts", + "package": "packages/dashboard", + "valueScore": 12, + "positiveCount": 15, + "negativeCount": 12, + "neutralCount": 0, + "timesTouched": 27, + "testOnlyCount": 10, + "testOnlyRatio": 0.37, + "signalTally": { + "added": 1, + "fix+source": 2, + "test+source": 14, + "test-only-churn": 10, + "churn-keyword": 2 + }, + "durationMs": 13600, + "testCount": 174, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1046.2, + "ageDays": 54, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a3ce8e1f8", + "time": 1777874885000, + "subject": "fix(FN-XXX): unify codex auth and chat fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6ecfb3c4e", + "time": 1777892968000, + "subject": "feat(FN-3350): tokenize task detail danger/error styling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f5893bdc", + "time": 1777904714000, + "subject": "feat(FN-3074): sort done column by recency, preserve merge-active state, ad", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b7ac46ece", + "time": 1777915118000, + "subject": "feat(FN-3195): document llama.cpp provider setup and onboarding", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "08e41caf5", + "time": 1777943978000, + "subject": "feat(FN-3356): ship llama.cpp provider integration, mobile org chart contro", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/hermes-runtime-e2e.test.ts", + "package": "packages/engine", + "valueScore": -0.5, + "positiveCount": 3, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 3, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 3, + "fix+source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 1000, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 1025, + "ageDays": 59, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "6dba4419d", + "time": 1777307857000, + "subject": "test(FN-2702): add Hermes runtime e2e coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "3d282819e", + "time": 1777314889000, + "subject": "feat(FN-2709): migrate Hermes runtime plugin to pi-ai streaming client", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6e65786bc", + "time": 1777353474000, + "subject": "fix(plugins): re-export probe symbols + declare plugin deps in dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3ca420975", + "time": 1777720683000, + "subject": "feat(FN-3193): split-pane redesign of agents workspace with mobile support", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "ce54a0d82", + "time": 1778221265000, + "subject": "feat(FN-3182): scope plugin installs globally with project enablement", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-autostash-cleanup.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 5100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1020, + "ageDays": 48, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "08d2d130b", + "time": 1778287427000, + "subject": "feat(FN-3756): extract roadmap UI into bundled plugin and add autostash orp", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4c46b76fc", + "time": 1778377589000, + "subject": "feat(FN-3827): sweep stale autostashes after merge completion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1cf987208", + "time": 1778524879000, + "subject": "feat(FN-4018): isolate split merger temp workspaces with settings persisten", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ceccc382b", + "time": 1778630673000, + "subject": "feat(FN-4131): refactor mission execution loop: remove dead validationTaskI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/chat.test.ts", + "package": "packages/cli", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 1500, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1000, + "ageDays": 43, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "3b5dcccea", + "time": 1778733674000, + "subject": "test(FN-4152): complete Step 2 — add chat command coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f40accd4b", + "time": 1779083273000, + "subject": "perf(cli): cut test suite from 32s to 11s wall", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-run-cited-goals.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 1500, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 1000, + "ageDays": 26, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "194dfa938", + "time": 1780206804000, + "subject": "FN-5758: add cited-goal audit aggregation and runtime route", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c12e7e39f", + "time": 1781476175000, + "subject": "FN-6444: rescue dashboard route API tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/workflow-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 21, + "positiveCount": 14, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 17, + "testOnlyCount": 1, + "testOnlyRatio": 0.059, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 12, + "churn-keyword": 2, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 22000, + "testCount": 50, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1000, + "ageDays": 22, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "72f37a842", + "time": 1780504467000, + "subject": "feat(dashboard): workflow CRUD, compile-preview, and selection API (U4)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0435fefd8", + "time": 1780524976000, + "subject": "fix(workflows): persist pausedReason + harden CLI approval, await-input, and node isolation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "eb67d0821", + "time": 1780533132000, + "subject": "Address PR review feedback (#1363)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ab78be718", + "time": 1780559645000, + "subject": "feat(core): workflow switch/edit/delete reconciliation — no card left in an undefined column (U5)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e5a0a199e", + "time": 1780562811000, + "subject": "feat(dashboard): node editor authors columns, traits, hold and split/join nodes with inline validation (U10)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "60605fafa", + "time": 1780564428000, + "subject": "feat(core): workflowColumns integrity pass, graduation report, server-side trait validation, plugin post-commit hooks, docs + changeset (U12)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-node-override.test.ts", + "package": "packages/core", + "valueScore": -4, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "quarantine-ledger": 1 + }, + "durationMs": 800, + "testCount": 10, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 960, + "ageDays": 59, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "3c18f481f", + "time": 1777355631000, + "subject": "feat(FN-2719): merge fusion/fn-2719", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b6eb85196", + "time": 1777483338000, + "subject": "feat(FN-2840): strengthen node routing and task diff visibility", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/dependency-cycle-reconcile.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 1900, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 950, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "933cea434", + "time": 1779386786000, + "subject": "feat(FN-5256): merge fusion/fn-5256", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3a6a4ece6", + "time": 1779491383000, + "subject": "feat(FN-5432): merge fusion/fn-5432", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/mission-factory-parity.integration.test.ts", + "package": "packages/core", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 3700, + "testCount": 20, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 925, + "ageDays": 75, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "5205d8f0f", + "time": 1775930644000, + "subject": "feat(FN-1571): merge fusion/fn-1571", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "84ed84313", + "time": 1776618814000, + "subject": "feat(FN-2123): merge fusion/fn-2123", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "668e3a509", + "time": 1780094720000, + "subject": "FN-5679: default new missions to stopped state", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useActivityLog.test.ts", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 900, + "testCount": 13, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 922.5, + "ageDays": 85, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "5b8f83d96", + "time": 1775105843000, + "subject": "feat(KB-662): add visibility-based refresh to dashboard hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4e38c5f7d", + "time": 1776129691000, + "subject": "feat(FN-1719): rebuild eslint baseline and add memory lessons", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-empty-cherry-pick.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 3200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 914.3, + "ageDays": 43, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "8ff216c82", + "time": 1778730993000, + "subject": "feat(FN-4424): complete Step 2 — add empty cherry-pick detection", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fa81832dd", + "time": 1778730993000, + "subject": "test(FN-4424): complete Step 5 — cover empty cherry-pick real-git cases", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-automation.test.ts", + "package": "packages/dashboard", + "valueScore": -2.5, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 800, + "testCount": 136, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 900, + "ageDays": 54, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "0c5c47933", + "time": 1778481369000, + "subject": "feat(FN-3963): clarify automation tracked-task creation semantics", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b61db6366", + "time": 1778944148000, + "subject": "test(FN-4728): align route tests with hook-driven tracking", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/plugins/__tests__/pluginViewRegistry.test.tsx", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 4, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 4, + "churn-keyword": 2 + }, + "durationMs": 900, + "testCount": 9, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 900, + "ageDays": 51, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "03c0348b9", + "time": 1778008460000, + "subject": "feat(FN-3157): add plugin dashboard view registry with nav integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4338b590c", + "time": 1778168958000, + "subject": "feat(FN-3091): add plugin view remount routing test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e7deab16b", + "time": 1778168959000, + "subject": "feat(FN-3087): document graph plugin in plugin authoring guide", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cd97d0837", + "time": 1778347865000, + "subject": "feat(FN-3168): add plugin routes wiring and listTasksModifiedSince contract", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "6769b836f", + "time": 1778452449000, + "subject": "feat(FN-3763): add cli printing press wizard plugin", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8b56dff8b", + "time": 1778454218000, + "subject": "feat(FN-3764): add manage view with edit modal for CLI printing press plugi", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentDetailView.skills-procedure.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 1800, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 900, + "ageDays": 44, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "d98c053ed", + "time": 1778597230000, + "subject": "feat(FN-4088): split AgentDetailView tests into seven focused suites with s", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/mission-planning-context.integration.test.ts", + "package": "packages/core", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 2 + }, + "durationMs": 2200, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 880, + "ageDays": 76, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "4cb378477", + "time": 1775843043000, + "subject": "feat(FN-1369): add mission planning context propagation to tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "84ed84313", + "time": 1776618814000, + "subject": "feat(FN-2123): merge fusion/fn-2123", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a29bc688a", + "time": 1777262191000, + "subject": "test(core,dashboard): expand in-memory SQLite to more store tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merge-trait.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 3800, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 844.4, + "ageDays": 22, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "2d28ea0c6", + "time": 1780560214000, + "subject": "feat(engine): merge trait — enqueue-only orchestration, workflow-configurable strategy/fileScope, lost-work guards non-configurable (U7)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ab8ecb220", + "time": 1781790082000, + "subject": "FN-6634: remove engine merge trait hook registration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PrCreateModal.layout.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 2500, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 833.3, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "b4d6b8569", + "time": 1779115964000, + "subject": "feat(FN-5049): complete Step 1 — add PR create modal scroll body", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/soft-delete-tasks.test.ts", + "package": "packages/core", + "valueScore": -0.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 3, + "quarantine-ledger": 1 + }, + "durationMs": 800, + "testCount": 8, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 820, + "ageDays": 37, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "44df53c2f", + "time": 1779192997000, + "subject": "feat(FN-5105): implement soft-delete readers and FTS filtering", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e4178718e", + "time": 1779192997000, + "subject": "test(FN-5105): expand soft-delete behavioral coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "9046182b5", + "time": 1779196235000, + "subject": "test(FN-5127): regression for idempotent soft-delete", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c9fd41ef2", + "time": 1779270409000, + "subject": "feat(FN-5175): thread soft-delete audit context and add reconciliation scri", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9a0949839", + "time": 1779440682000, + "subject": "feat(FN-5196): return 410 Gone for hard-archived task deletions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3a0d179ba", + "time": 1779448162000, + "subject": "Fn-5196", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-cwd-fallback-removed.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 4100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 820, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "b3f995c85", + "time": 1779392990000, + "subject": "feat(FN-5348): remove cwd-main integration mode fallback", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a3ace5299", + "time": 1779404174000, + "subject": "feat(FN-5440): test merger cwd-fallback guards for fn-5440", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "24686cade", + "time": 1779485909000, + "subject": "fix(merger): autostash dirty reuse worktrees and fail loudly on autostash errors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/planning-subtask-create-workflow-route.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 2400, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 800, + "ageDays": 5, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "36b8950db", + "time": 1782003842000, + "subject": "FN-6804: carry workflow selection into planning creates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/runtimes/__tests__/in-process-runtime.test.ts", + "package": "packages/engine", + "valueScore": 30, + "positiveCount": 22, + "negativeCount": 5, + "neutralCount": 1, + "timesTouched": 28, + "testOnlyCount": 3, + "testOnlyRatio": 0.107, + "signalTally": { + "added": 1, + "test+source": 18, + "churn-keyword": 4, + "fix+source": 5, + "fix": 1, + "test-only-churn": 3 + }, + "durationMs": 24700, + "testCount": 78, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 796.8, + "ageDays": 62, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e15d01ad1", + "time": 1777144893000, + "subject": "feat(FN-2506): merge fusion/fn-2506", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bff703196", + "time": 1777152275000, + "subject": "feat(FN-2501): merge fusion/fn-2501", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ba3d868c2", + "time": 1777471852000, + "subject": "feat(FN-2944): merge fusion/fn-2944", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "01cf62b00", + "time": 1777495775000, + "subject": "feat(FN-2920): improve remote tunnel setup and heartbeat scheduling", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "b61025cb2", + "time": 1777701480000, + "subject": "fix(FN-XXXX): quiet pi-claude-cli MCP config refresh log", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-ref-update-advance.test.ts", + "package": "packages/engine", + "valueScore": 4.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "churn-keyword": 3, + "fix": 2, + "fix+source": 2 + }, + "durationMs": 4300, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 781.8, + "ageDays": 35, + "lastTouched": "2026-05-28", + "evidence": [ + { + "sha": "caeb6a7e0", + "time": 1779396987000, + "subject": "feat(FN-5350): switch merge integration advance to ref-only git update-ref", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5a76a8907", + "time": 1779399299000, + "subject": "feat(FN-5351): add merge audit telemetry with typed events and integration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7345ab85d", + "time": 1779517819000, + "subject": "fix(engine-tests): plug fusion-test-ref-* leaks on SIGTERM fork recycle", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "2bee6b082", + "time": 1779520939000, + "subject": "fix(tests): drop SIGTERM handlers + skip flaky reconciliation test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "bf4428c00", + "time": 1779554974000, + "subject": "fix(merger): require fast-forward ref advances and read integration tip from refs/heads/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b2d547eae", + "time": 1779998550000, + "subject": "fix(FN-5627): close merger TOCTOU + add fast-path reachability gate", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-reconciliation.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 700, + "testCount": 11, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 770, + "ageDays": 22, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "ab78be718", + "time": 1780559645000, + "subject": "feat(core): workflow switch/edit/delete reconciliation — no card left in an undefined column (U5)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/orphan-detected-no-requeue.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 2300, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 766.7, + "ageDays": 36, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "1a5aff9c4", + "time": 1779328178000, + "subject": "feat(FN-5337): remove speculative orphan requeue from self-healing sweep", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/dev-server-process.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 1, + "test-only-churn": 1, + "churn-keyword": 1, + "quarantine-ledger": 1 + }, + "durationMs": 700, + "testCount": 20, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 735, + "ageDays": 67, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "0df323434", + "time": 1776656894000, + "subject": "feat(FN-2181): add dashboard dev-server process manager and API routes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "99cafa3a4", + "time": 1776724652000, + "subject": "feat(FN-2170): add dev-server preview detection and log viewer flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "992777806", + "time": 1777033936000, + "subject": "fix(FN-0000): kill dev server process groups", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1e6714e4d", + "time": 1777762638000, + "subject": "chore(test): add cross-worktree test lock and clean up dev-server test child", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2ecf78af2", + "time": 1782073541000, + "subject": "FN-6860: rescue dashboard quarantine coverage", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/task-custom-fields-route.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 2200, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 733.3, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "5fa5740af", + "time": 1780601165000, + "subject": "feat(dashboard,cli): U13 — schema-driven task fields UI (TaskFieldsSection, card badges, PATCH route, board-workflows fields payload, TUI chips)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.inline-editing-and-integrations.test.tsx", + "package": "packages/dashboard", + "valueScore": 18.5, + "positiveCount": 18, + "negativeCount": 10, + "neutralCount": 1, + "timesTouched": 29, + "testOnlyCount": 8, + "testOnlyRatio": 0.276, + "signalTally": { + "added": 1, + "churn-keyword": 3, + "fix+source": 3, + "test+source": 17, + "test-only-churn": 8 + }, + "durationMs": 14100, + "testCount": 81, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 723.1, + "ageDays": 50, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "ed52c3dff", + "time": 1778108228000, + "subject": "test(FN-3591): split TaskDetailModal coverage into focused test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a41157545", + "time": 1778125334000, + "subject": "fix(dashboard): reset scroll on ChatView refocus to undo iOS drift", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "cc02def48", + "time": 1778180081000, + "subject": "feat(FN-3711): add inline fast mode toggle and wire shared state in peer ex", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19584fcde", + "time": 1778183253000, + "subject": "feat(FN-3428): add project-node path mapping APIs and agent detail review-b", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "95f6cd845", + "time": 1778415626000, + "subject": "feat(FN-3875): add GitHub tracking auth resolver and forced client auth mod", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6fc804483", + "time": 1778452405000, + "subject": "feat(FN-3940): expose github tracking controls in task detail modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModal.worktrunk.test.tsx", + "package": "packages/dashboard", + "valueScore": -3.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 600, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 705, + "ageDays": 41, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "11a357d1d", + "time": 1778913583000, + "subject": "test(FN-4702): add dedicated settings worktrunk states test", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "df4939a65", + "time": 1781393428000, + "subject": "FN-6385: add dashboard overflow regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-ai.test.ts", + "package": "packages/engine", + "valueScore": 13.5, + "positiveCount": 10, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 3, + "test+source": 7, + "churn-keyword": 1, + "quarantine-ledger": 1 + }, + "durationMs": 10200, + "testCount": 27, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 703.4, + "ageDays": 28, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "29ac58f8d", + "time": 1780019423000, + "subject": "feat(FN-5633): standalone AI merge path (clean-room merge + AI reviewer)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "be0be507b", + "time": 1780021737000, + "subject": "fix(FN-5633): fail loudly when an executed, never-merged task has no branch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c1d558c76", + "time": 1780024453000, + "subject": "feat(FN-5633): AI merge commit summary + task trailers, verify-and-fix, editable prompt", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7f536eb61", + "time": 1780024721000, + "subject": "fix(FN-5633): guarantee the squash subject starts with the task id", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "230efa1cd", + "time": 1780037140000, + "subject": "FN-5644: default AI merge commit body to summarize changes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "93e8a5f78", + "time": 1780242623000, + "subject": "FN-5775: persist AI merge agent output in merger logs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/auto-claim-snapshot-soft-delete.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 700, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 700, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "f74c0d510", + "time": 1779201912000, + "subject": "test(FN-5137): complete Step 4-6 — soft-delete regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b1c0a9175", + "time": 1779270454000, + "subject": "feat(FN-5195): merge fusion/fn-5195", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/meta-chain-auto-close.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 1400, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 700, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "70aa8b31b", + "time": 1779071772000, + "subject": "feat(FN-4890): complete Step 5 — board-health recovery levers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "25eae6948", + "time": 1779071774000, + "subject": "test(FN-4890): complete Step 6 — add FN-4890 incident replay assertion", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "8ecba01c7", + "time": 1779071774000, + "subject": "fix(FN-4890): stabilize board-health integration and blocker release coverage", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/team-analytics.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 2100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 700, + "ageDays": 7, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "36f1feef3", + "time": 1781830328000, + "subject": "FN-6655: add Command Center team analytics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/process-lifecycle.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 2100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 700, + "ageDays": 9, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "d08ec053a", + "time": 1781647704000, + "subject": "FN-6488: centralize dashboard beforeExit cleanup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/dirty-integration-worktree.real-git.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "churn-keyword": 2, + "fix": 2 + }, + "durationMs": 1700, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 680, + "ageDays": 35, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "caeb6a7e0", + "time": 1779396987000, + "subject": "feat(FN-5350): switch merge integration advance to ref-only git update-ref", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5a76a8907", + "time": 1779399299000, + "subject": "feat(FN-5351): add merge audit telemetry with typed events and integration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7345ab85d", + "time": 1779517819000, + "subject": "fix(engine-tests): plug fusion-test-ref-* leaks on SIGTERM fork recycle", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "2bee6b082", + "time": 1779520939000, + "subject": "fix(tests): drop SIGTERM handlers + skip flaky reconciliation test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-diff-display-read-only.test.ts", + "package": "packages/dashboard", + "valueScore": -7, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "churn-keyword": 2, + "test-only-churn": 2 + }, + "durationMs": 500, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 675, + "ageDays": 40, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "fdc6d86c1", + "time": 1778953806000, + "subject": "test(FN-4754): add dashboard diff display read-only and rebase-range guards", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "55343012f", + "time": 1779245843000, + "subject": "test(dashboard): skip remaining test:deep failures pending feature/bug work", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "e93ed72c8", + "time": 1779247799000, + "subject": "test(dashboard): convert remaining skipped tests to passing stubs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-orphaned-task-dir-reconcile.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 4000, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 666.7, + "ageDays": 6, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "c32c92532", + "time": 1781955631000, + "subject": "FN-6783: recover orphaned task dirs into the task index", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "26ebb9206", + "time": 1781982051000, + "subject": "Stop reconcile from resurrecting long-deleted task dirs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7e7eb6299", + "time": 1781984794000, + "subject": "Harden orphan-worktree/stale-task-dir cleanup (code-review follow-up)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-workspace-taskdone.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 4000, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 666.7, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "81edbeefb", + "time": 1782107080000, + "subject": "feat(workspace): Phase B U2 — per-repo review (both sites) + fn_task_done verify + scope-leak", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "453ed92db", + "time": 1782108166000, + "subject": "fix(review): Phase B workspace hardening — fail-closed scope guard, review conjunction, .changeset carve-out", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/backward-move-triple-proof.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 4000, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 666.7, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "a8715ed96", + "time": 1779416127000, + "subject": "fix(FN-5335): enforce triple-proof gating for backward recovery", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-resilience.test.ts", + "package": "packages/core", + "valueScore": -1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 600, + "testCount": 28, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 645, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "287ebaf10", + "time": 1778561306000, + "subject": "feat(FN-4053): unify task ID allocation with store-owned distributed alloca", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-run-audit-goal-events.test.ts", + "package": "packages/dashboard", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 1600, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 640, + "ageDays": 27, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "afc3b4749", + "time": 1780110314000, + "subject": "FN-5655: add goal anchoring audit events across lanes", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "c12e7e39f", + "time": 1781476175000, + "subject": "FN-6444: rescue dashboard route API tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/precommit-identity-guard.real-git.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 4800, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 640, + "ageDays": 39, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "925877ba1", + "time": 1779064168000, + "subject": "test(FN-4948): complete Step 3 — add real-git precommit guard coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6fc0f5ceb", + "time": 1779144661000, + "subject": "feat(FN-5063): merge fusion/fn-5063", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "17eb85ed8", + "time": 1779250101000, + "subject": "feat(FN-5266): add metadata-driven pre-commit identity guard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9efcf9375", + "time": 1779284525000, + "subject": "feat(FN-5271): add precommit identity guard for worktree hooks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-goal-tools-audit.test.ts", + "package": "packages/cli", + "valueScore": -5.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 2, + "test-only-churn": 1, + "quarantine-ledger": 1 + }, + "durationMs": 500, + "testCount": 1, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 637.5, + "ageDays": 27, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "afc3b4749", + "time": 1780110314000, + "subject": "FN-5655: add goal anchoring audit events across lanes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "194dfa938", + "time": 1780206804000, + "subject": "FN-5758: add cited-goal audit aggregation and runtime route", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fab8a62b5", + "time": 1780883506000, + "subject": "FN-5977: expose goal retrieval tools across engine agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "259cdfb53", + "time": 1781912853000, + "subject": "FN-6734: stabilize CLI extension test cleanup", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "c18e827b9", + "time": 1782057640000, + "subject": "FN-6839: await CLI cached store shutdown", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-upsert.test.ts", + "package": "packages/core", + "valueScore": 7, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 4 + }, + "durationMs": 5100, + "testCount": 46, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 637.5, + "ageDays": 45, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "44df53c2f", + "time": 1779192997000, + "subject": "feat(FN-5105): implement soft-delete readers and FTS filtering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "321c170b9", + "time": 1779295360000, + "subject": "feat(FN-5143): clear agent logs when task is soft-deleted", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d72cb2ab2", + "time": 1780474218000, + "subject": "FN-5911: move agent logs to per-task JSONL storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "47e7b4a15", + "time": 1781877117000, + "subject": "FN-6704: capture merge LOC for productivity analytics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-tools-goal.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1900, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 633.3, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "fab8a62b5", + "time": 1780883506000, + "subject": "FN-5977: expose goal retrieval tools across engine agents", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-tools-workflow-settings.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1900, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 633.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "9a4343be2", + "time": 1780639021000, + "subject": "feat(engine): fn_workflow_settings agent tool + settings declaration parity, plugin-sdk types, engine-tools docs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-orphan-rehome.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1900, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 633.3, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "ec1269fd8", + "time": 1779555590000, + "subject": "feat(merger): auto-rehome FF-recoverable orphan commits in contamination recovery", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SecretsView.mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 2, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "fix": 1, + "test-only-churn": 2, + "test+source": 2 + }, + "durationMs": 600, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 630, + "ageDays": 37, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "87c266d49", + "time": 1779231191000, + "subject": "test(FN-5160): complete Step 3 — add mobile layout contracts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "f36abcc56", + "time": 1779525015000, + "subject": "feat(FN-5521): derive secrets media parsing from hook query", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "6cc873e23", + "time": 1781476175000, + "subject": "FN-6446: make Secrets view fill mobile width", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "95f48f9aa", + "time": 1782153380000, + "subject": "feat(dashboard): canonical ViewHeader across left-sidebar views (consistent color/sizing/divider/buttons)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/plugin-store.test.ts", + "package": "packages/core", + "valueScore": 9, + "positiveCount": 7, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 2, + "testOnlyRatio": 0.222, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "test-only-churn": 2 + }, + "durationMs": 6300, + "testCount": 62, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 630, + "ageDays": 77, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "f045c438c", + "time": 1775771132000, + "subject": "feat(FN-1111): merge fusion/fn-1111 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e740df66c", + "time": 1776227456000, + "subject": "feat(FN-1779): merge fusion/fn-1779", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6e4797ff1", + "time": 1777254314000, + "subject": "perf(core): opt-in in-memory SQLite for *-store tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fce3668a8", + "time": 1778145314000, + "subject": "feat(FN-3077): enforce plugin AI security scan gate across install flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ce54a0d82", + "time": 1778221265000, + "subject": "feat(FN-3182): scope plugin installs globally with project enablement", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/branch-conflicts-foreign-only.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 2200, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 628.6, + "ageDays": 39, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "91df09350", + "time": 1779062821000, + "subject": "feat(FN-4887): complete Step 1 — add foreign-only contamination classifier", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d8a04ff5a", + "time": 1779168861000, + "subject": "feat(FN-5099): complete Step 4 — pass verification gates", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "76790c424", + "time": 1779171267000, + "subject": "feat(FN-5053): fix verification gate registration for workspace test stabil", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.mobile-render.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 3, + "fix+source": 1 + }, + "durationMs": 4700, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 626.7, + "ageDays": 22, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "a4d3589a1", + "time": 1780551083000, + "subject": "FN-5948: fix mobile chat empty-state rendering", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "3b3c5ed0b", + "time": 1780939996000, + "subject": "FN-5997: fix mobile chat empty state spacing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "17363928e", + "time": 1781075795000, + "subject": "FN-6178: hide chat sidebar when tablet keyboard opens", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1c2b68386", + "time": 1781232679000, + "subject": "FN-6210: cap chat sidebar width during keyboard flicker", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a15b4caac", + "time": 1781660628000, + "subject": "FN-6494: keep tablet chat sidebar visible", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f14f9b2e4", + "time": 1781677274000, + "subject": "FN-6516: preserve tablet chat sidebar width during typing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-post-merge-audit-rangebase.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 2800, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 622.2, + "ageDays": 39, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "543ea6679", + "time": 1779068750000, + "subject": "feat(FN-4949): add reclaim deferral guards for active executor worktrees", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "394b9adc9", + "time": 1779514977000, + "subject": "feat(FN-5518): merge fusion/fn-5518", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-stale-merge-stats.real-git.test.ts", + "package": "packages/engine", + "valueScore": 4.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 1, + "test-only-churn": 2 + }, + "durationMs": 3400, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 618.2, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "015085a54", + "time": 1778794726000, + "subject": "feat(FN-4526): complete Step 2 — repair stale done-task merge stats", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "74f46f0f7", + "time": 1778794726000, + "subject": "fix(FN-4526): finalize stale merge stats repairs and changeset", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b6f2e9b4d", + "time": 1778876539000, + "subject": "feat(FN-4646): complete Step 3 — reconcile landed files in self-healing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e1facc8e8", + "time": 1778882365000, + "subject": "test(FN-4672): complete Step 2 — cover rebase shortstat repair", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0da652b43", + "time": 1778889000000, + "subject": "test(FN-4688): complete Step 3 — cover landed commit range stats", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/droid-runtime-e2e.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 600, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 600, + "ageDays": 52, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3f5893bdc", + "time": 1777904714000, + "subject": "feat(FN-3074): sort done column by recency, preserve merge-active state, ad", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ce54a0d82", + "time": 1778221265000, + "subject": "feat(FN-3182): scope plugin installs globally with project enablement", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/verification-utils.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 900, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 600, + "ageDays": 49, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "55d8e87cc", + "time": 1778167611000, + "subject": "test(FN-000): harden local test suite", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9d785a7ed", + "time": 1778481370000, + "subject": "feat(FN-3816): add merger self-healing for missing workspace and environmen", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "efa5d9b5f", + "time": 1782423821000, + "subject": "fix(engine): make merge/step verification timeout scope-aware", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/github-issue-analytics.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 1800, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 600, + "ageDays": 7, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "504305e1c", + "time": 1781824732000, + "subject": "FN-6653: add GitHub issue analytics to Command Center", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "94a081f4f", + "time": 1781833685000, + "subject": "FN-6666: store GitHub issue closure timestamps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f13aaa1a9", + "time": 1782057640000, + "subject": "FN-6722: expose resolved GitHub issues", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskCard.footer-wrap.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 1800, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 600, + "ageDays": 37, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "35112e607", + "time": 1779249554000, + "subject": "feat(FN-5210): wrap TaskCard footer chip cluster for mobile", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c9ff2078b", + "time": 1779295360000, + "subject": "feat(FN-5314): add broad-scope advisory chip to TaskCard and banner to Task", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "67d4d51ae", + "time": 1781403456000, + "subject": "FN-6413: move task-card timer to footer cluster", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentDetailView.core.test.tsx", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 2100, + "testCount": 49, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 600, + "ageDays": 44, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "d98c053ed", + "time": 1778597230000, + "subject": "feat(FN-4088): split AgentDetailView tests into seven focused suites with s", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "60eb2ec99", + "time": 1780939997000, + "subject": "FN-6018: allow stopping and deleting failed agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-git.test.ts", + "package": "packages/dashboard", + "valueScore": 10, + "positiveCount": 10, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 1, + "testOnlyRatio": 0.083, + "signalTally": { + "added": 1, + "test+source": 8, + "fix+source": 2, + "test-only-churn": 1, + "churn-keyword": 1, + "quarantine-ledger": 1 + }, + "durationMs": 6600, + "testCount": 97, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 600, + "ageDays": 54, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ea025d29d", + "time": 1777958230000, + "subject": "feat(FN-3301): render commit body in expanded git views", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e56f60371", + "time": 1778155797000, + "subject": "feat(FN-3623): add stash diff viewing UI and backend contract", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f85b12412", + "time": 1778167635000, + "subject": "test(FN-000): resolve dashboard test noise", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5548dc57d", + "time": 1779312516000, + "subject": "fix(dashboard): autostash dirty working tree across git pull and surface reapply conflicts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "14bc63e81", + "time": 1779566808000, + "subject": "feat(FN-5419): add stash conflict modal gating and smart pull routing for m", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/landed-files-attribution.test.ts", + "package": "packages/engine", + "valueScore": 4.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 3200, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 581.8, + "ageDays": 38, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "03212ce00", + "time": 1779179095000, + "subject": "test(FN-5103): complete Step 6 — add landed-files attribution reliability coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "3e7073ab8", + "time": 1779179095000, + "subject": "test(FN-5103): address review gaps in landed-files coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0abb1fad2", + "time": 1779179095000, + "subject": "feat(FN-5103): expose rebase landed-files capture helper for reliability tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c5e9dc43f", + "time": 1779290620000, + "subject": "fix(FN-5304): guard against silent no-op landed-file attribution mismatches", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/task-delete-allow-resurrection.test.ts", + "package": "packages/cli", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 500, + "testCount": 2, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 575, + "ageDays": 33, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "2d2e5b809", + "time": 1779581234000, + "subject": "feat(FN-5233): add tombstone recreate guard and allow-resurrection delete f", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/no-changes-finalized.real-git.test.ts", + "package": "packages/engine", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 500, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 575, + "ageDays": 41, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "296203443", + "time": 1778902684000, + "subject": "feat(FN-4701): add no-changes-finalized reliability interaction test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5cd0e6665", + "time": 1778996217000, + "subject": "feat(FN-4839): harden real-git test timeouts across engine suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-knowledge-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1700, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 566.7, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "0a87890bd", + "time": 1781580892000, + "subject": "feat(knowledge): U14 — persistent knowledge index", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-room-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 17, + "positiveCount": 8, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "test+source": 6 + }, + "durationMs": 10200, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 566.7, + "ageDays": 47, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "05016de3d", + "time": 1778347865000, + "subject": "fix(FN-3808): increase create-room member role typography", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "13c14f5cb", + "time": 1778397512000, + "subject": "feat(FN-3914): restore room reply verification path and add hybrid chat tes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b56306c42", + "time": 1778517173000, + "subject": "feat(FN-3905): use merger session model for post-merge workflow steps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7d2a98d2b", + "time": 1778517885000, + "subject": "feat(FN-4012): restore workspace verification in chat room routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f6c4c688", + "time": 1778537920000, + "subject": "feat(FN-3959): add heartbeat timer registration repair sweep", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7c0e661e5", + "time": 1778837007000, + "subject": "fix(FN-4583): route scoped dashboard chat through engine chat store", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-github-tracking.test.ts", + "package": "packages/cli", + "valueScore": -2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 500, + "testCount": 1, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 562.5, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "9aa7518ba", + "time": 1779130003000, + "subject": "feat(FN-5057): merge fusion/fn-5057", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a43c0cfb1", + "time": 1779173400000, + "subject": "test(FN-5102): expand agent-surface github tracking regressions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.rendering.test.tsx", + "package": "packages/dashboard", + "valueScore": 23.5, + "positiveCount": 24, + "negativeCount": 10, + "neutralCount": 0, + "timesTouched": 34, + "testOnlyCount": 9, + "testOnlyRatio": 0.265, + "signalTally": { + "added": 1, + "test+source": 21, + "test-only-churn": 9, + "churn-keyword": 3, + "fix+source": 3 + }, + "durationMs": 13700, + "testCount": 87, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 559.2, + "ageDays": 50, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "ed52c3dff", + "time": 1778108228000, + "subject": "test(FN-3591): split TaskDetailModal coverage into focused test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b9b6d06ca", + "time": 1778122555000, + "subject": "feat(FN-3622): add canonical task-detail timing calculations and stats pane", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cc02def48", + "time": 1778180081000, + "subject": "feat(FN-3711): add inline fast mode toggle and wire shared state in peer ex", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ecbf1f829", + "time": 1778221265000, + "subject": "feat(FN-3276): add task review tab with metadata persistence and desktop la", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ca5ddfeab", + "time": 1778223826000, + "subject": "feat(FN-3726): highlight fast mode bolt icon in task detail", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cea0f6f6c", + "time": 1778261782000, + "subject": "feat(FN-3277): add review tab reviewState persistence and enriched UI state", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/duplicate-task-auto-archive.test.ts", + "package": "packages/engine", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 3, + "testOnlyRatio": 0.75, + "signalTally": { + "added": 1, + "test-only-churn": 3 + }, + "durationMs": 500, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 550, + "ageDays": 39, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "619070388", + "time": 1779090804000, + "subject": "test(FN-4892): add reliability interaction coverage for intake auto-archive", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "02f571d0c", + "time": 1779090804000, + "subject": "test(FN-4892): complete Step 7 — expand intake reliability scenarios", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "aa60dd3c1", + "time": 1779090804000, + "subject": "test(FN-4892): fix type-safe intake preflight coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5f9f77763", + "time": 1779372348000, + "subject": "feat(FN-5374): raise room transcript defaults and align compaction settings", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentGenerationModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added": 1, + "test+source": 2 + }, + "durationMs": 1100, + "testCount": 16, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 550, + "ageDays": 78, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "8ef31a81c", + "time": 1775670522000, + "subject": "test(FN-1282): expand dashboard hook and modal coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "2873bc038", + "time": 1776883406000, + "subject": "refactor(FN-2206): centralize agent modal styling in dashboard CSS", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pr-workflow-e2e.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 1100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 550, + "ageDays": 20, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "3f313567d", + "time": 1780724556000, + "subject": "feat(pr): built-in PR workflow template, end-to-end (U9)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/mission-integration.test.ts", + "package": "packages/core", + "valueScore": 7, + "positiveCount": 8, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 3, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test+source": 8, + "test-only-churn": 3, + "churn-keyword": 1 + }, + "durationMs": 4400, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 550, + "ageDays": 86, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "e60edfecb", + "time": 1775033532000, + "subject": "feat(KB-636): launch missions feature", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6009ebaf0", + "time": 1775055891000, + "subject": "feat(KB-636): add Missions system for large-scale project planning", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0529048fa", + "time": 1775079004000, + "subject": "test(KB-636): expand mission integration coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "398fa26dd", + "time": 1775079726000, + "subject": "feat(FN-686): persist mission linkage on linked tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7fd5704a8", + "time": 1775103908000, + "subject": "Removed unwanted files marked in .gitignore", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e0d773f60", + "time": 1775412256000, + "subject": "feat(FN-972): auto-triage features when slice activated with autoAdvance", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-command-center-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 14, + "positiveCount": 11, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 12, + "churn-keyword": 2 + }, + "durationMs": 8200, + "testCount": 34, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 546.7, + "ageDays": 10, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "113263f36", + "time": 1781577850000, + "subject": "feat(command-center): U9+U6a — analytics API endpoints + live snapshot composer", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "29acf1488", + "time": 1781579114000, + "subject": "feat(command-center): U8 — CSV export for analytics endpoints", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f41732d04", + "time": 1781821677000, + "subject": "FN-6652: add live token usage timeline", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "504305e1c", + "time": 1781824732000, + "subject": "FN-6653: add GitHub issue analytics to Command Center", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "64092ca0a", + "time": 1781826716000, + "subject": "FN-6654: add Command Center agent-run sheets", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "36f1feef3", + "time": 1781830328000, + "subject": "FN-6655: add Command Center team analytics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/server-view-preload.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 1900, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 542.9, + "ageDays": 40, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "aa105c9b8", + "time": 1779008199000, + "subject": "feat(FN-4782): complete Step 3 — inject view chunk preload", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "41a8aca91", + "time": 1779008199000, + "subject": "fix(FN-4782): add explicit index preload marker", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "9d07e8523", + "time": 1781866196000, + "subject": "FN-6690: preload lazy-view CSS chunks", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agents.test.ts", + "package": "packages/dashboard", + "valueScore": 16, + "positiveCount": 16, + "negativeCount": 9, + "neutralCount": 0, + "timesTouched": 25, + "testOnlyCount": 7, + "testOnlyRatio": 0.28, + "signalTally": { + "added": 1, + "test-only-churn": 7, + "test+source": 14, + "fix": 2, + "churn-keyword": 2, + "fix+source": 1 + }, + "durationMs": 9200, + "testCount": 154, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 541.2, + "ageDays": 54, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "71ad03f3a", + "time": 1777931588000, + "subject": "test(FN-3314): align persistent auth route assertion", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c48feb2f7", + "time": 1777934019000, + "subject": "feat(FN-3324): add runtime guard regression sentinel", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "33c52e80e", + "time": 1777987954000, + "subject": "feat(FN-3096): update restart integration store mock for plugin templates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "47ae7783b", + "time": 1777987954000, + "subject": "feat(FN-3484): normalize dashboard mailbox and user identity for messaging", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "12c1eb0d4", + "time": 1778051155000, + "subject": "fix(dashboard): drop residual terminated-state refs lost in merger autostash", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-tracking-unlink.test.ts", + "package": "packages/dashboard", + "valueScore": -7, + "positiveCount": 2, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added": 1, + "churn-keyword": 3, + "test-only-churn": 2, + "test+source": 2 + }, + "durationMs": 400, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 540, + "ageDays": 46, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "44c26e341", + "time": 1778418386000, + "subject": "feat(FN-3876): add GitHub tracking test coverage across settings, issues, s", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "55343012f", + "time": 1779245843000, + "subject": "test(dashboard): skip remaining test:deep failures pending feature/bug work", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "e93ed72c8", + "time": 1779247799000, + "subject": "test(dashboard): convert remaining skipped tests to passing stubs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "646e546ef", + "time": 1779277264000, + "subject": "feat(FN-5245): swallow deleted-task races in GitHub tracking services", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-task-creation-github-tracking-flag.test.ts", + "package": "packages/engine", + "valueScore": -7, + "positiveCount": 1, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 5, + "testOnlyRatio": 0.833, + "signalTally": { + "added": 1, + "test-only-churn": 5, + "churn-keyword": 1 + }, + "durationMs": 400, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 540, + "ageDays": 38, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "780cf6b3d", + "time": 1779173400000, + "subject": "test(FN-5102): add failing agent tracking flag repro", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "13977f468", + "time": 1779173400000, + "subject": "test(FN-5102): harden repro mock to keep hook deterministic", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a43c0cfb1", + "time": 1779173400000, + "subject": "test(FN-5102): expand agent-surface github tracking regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cc6bd1e72", + "time": 1779173400000, + "subject": "feat(FN-5102): complete Step 4 and 5 — verify and document", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d240fb873", + "time": 1781034680000, + "subject": "FN-6108: mock gh auth in github-tracking engine tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/proxy-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 6, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 3, + "testOnlyRatio": 0.3, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "test-only-churn": 3, + "churn-keyword": 1, + "fix+source": 1, + "fix": 1 + }, + "durationMs": 4300, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 537.5, + "ageDays": 71, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "349a9705b", + "time": 1776336286000, + "subject": "feat(FN-1802): add generic node proxy forwarding route", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "07ddb1ca1", + "time": 1776417594000, + "subject": "feat(FN-1984): enrich chat and heartbeat prompts with agent context", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "15d631422", + "time": 1776570973000, + "subject": "feat(FN-2085): merge fusion/fn-2085", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e77226099", + "time": 1776577987000, + "subject": "feat(FN-2108): merge fusion/fn-2108", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b4e67b422", + "time": 1776618814000, + "subject": "feat(FN-2120): merge fusion/fn-2120", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b48c840e7", + "time": 1777046065000, + "subject": "feat(FN-2353): add structured diagnostics for remote route failures", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-ops.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 2 + }, + "durationMs": 1600, + "testCount": 63, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 533.3, + "ageDays": 45, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "db7b19646", + "time": 1778956777000, + "subject": "test(FN-4770): complete Steps 3-4 — add tracking async coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "139e25fcf", + "time": 1778995197000, + "subject": "feat(FN-4837): complete Step 2 — migrate store tests to shared harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "10455b799", + "time": 1779036670000, + "subject": "feat(FN-4898): reconcile task title-id drift in storage migrations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "793da2c74", + "time": 1780253711000, + "subject": "FN-5780: inherit source GitHub tracking when refining tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/cli-agent-hooks-route.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1600, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 533.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "d8248b4c4", + "time": 1780641547000, + "subject": "feat(dashboard): add cli-agent hook ingestion route and session hook scripts (U17)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/ai-merge-ff-landed-files.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1600, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 533.3, + "ageDays": 23, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "000640818", + "time": 1780414547000, + "subject": "FN-5874: persist fast-forward merge details", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskCard.badge-wrap.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 2400, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 533.3, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "71a2ea195", + "time": 1779214489000, + "subject": "feat(FN-5162): merge fusion/fn-5162", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c9ff2078b", + "time": 1779295360000, + "subject": "feat(FN-5314): add broad-scope advisory chip to TaskCard and banner to Task", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MissionManager.cache.test.tsx", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2 + }, + "durationMs": 500, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 500, + "ageDays": 40, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "49de604f3", + "time": 1779014096000, + "subject": "test(FN-4859): complete Steps 6-7 — cache coverage and loader invalidation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cec86d23a", + "time": 1779014096000, + "subject": "test(FN-4859): expand cache hydration coverage across views", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "24c15bc66", + "time": 1779238483000, + "subject": "test(dashboard): extract .data from SWR cache envelope in cache tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useFileEditor.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added": 1, + "fix": 1 + }, + "durationMs": 500, + "testCount": 13, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 500, + "ageDays": 78, + "lastTouched": "2026-04-13", + "evidence": [ + { + "sha": "8ef31a81c", + "time": 1775670522000, + "subject": "test(FN-1282): expand dashboard hook and modal coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "51e23786c", + "time": 1776055234000, + "subject": "fix(dashboard): ensure file/import API calls are project-scoped in tests", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-restart-durability.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 1000, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 500, + "ageDays": 8, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "167084f19", + "time": 1781733176000, + "subject": "FN-6585: add workflow restart durability coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowResultsTab.overflow.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 1000, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 500, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "9c8794a12", + "time": 1778678975000, + "subject": "feat(FN-4206): add WorkflowResultsTab overflow regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/layer3-ai-arbiter-file-scope.real-git.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 1000, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 500, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "78737841d", + "time": 1779093016000, + "subject": "test(FN-4956): complete Step 4 — add layer3 file-scope regressions", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pr-graph-flow.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1500, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 500, + "ageDays": 20, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "96f801c01", + "time": 1780716744000, + "subject": "feat(pr): top-level bounded rework + auto-merge gate + legacy-bypass pin (U6)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-gitignored-path-guard.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 2500, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 500, + "ageDays": 43, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "b7b0ba646", + "time": 1778703492000, + "subject": "feat(FN-4309): guard squash commits against gitignored files", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c9ff2078b", + "time": 1779295360000, + "subject": "feat(FN-5314): add broad-scope advisory chip to TaskCard and banner to Task", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c89ad28e7", + "time": 1780041317000, + "subject": "FN-5646: preserve AI body when canonicalizing merge commits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-rebind.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix": 1 + }, + "durationMs": 2500, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 500, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "77342c03f", + "time": 1779154012000, + "subject": "feat(FN-5083): complete Step 2 — add in-review branch rebind stage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "13d719564", + "time": 1779154012000, + "subject": "fix(FN-5083): address rebind review feedback", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/branch-conflicts-recovery.test.ts", + "package": "packages/engine", + "valueScore": 8.5, + "positiveCount": 7, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 3, + "testOnlyRatio": 0.3, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 3, + "churn-keyword": 1, + "test-only-churn": 3, + "fix": 1 + }, + "durationMs": 4600, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 484.2, + "ageDays": 43, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "f576ba784", + "time": 1778750936000, + "subject": "feat(FN-4428): complete Step 2 — classify foreign commits", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d672e5397", + "time": 1778750936000, + "subject": "fix(FN-4428): address classification safety and recovery coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ec13b2b3a", + "time": 1778790781000, + "subject": "feat(FN-4499): complete Step 2 — add bootstrap misbinding classifier", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "311bee43a", + "time": 1778790781000, + "subject": "feat(FN-4499): complete Step 3 — add reanchor primitive", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5cd0e6665", + "time": 1778996217000, + "subject": "feat(FN-4839): harden real-git test timeouts across engine suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "030a27b40", + "time": 1779027981000, + "subject": "feat(FN-4884): complete Step 2-3 fast-path and coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/fts5-guard.test.ts", + "package": "packages/core", + "valueScore": 7, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 3700, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 462.5, + "ageDays": 63, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "316e94d65", + "time": 1776971135000, + "subject": "fix: guard SQLite FTS5 at runtime and fall back to LIKE search", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "a269f4829", + "time": 1777010554000, + "subject": "refactor: remove legacy kb compatibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "93dc5a727", + "time": 1778597230000, + "subject": "feat(FN-4083): add WAL enforcement, immediate write transactions, and concu", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-agent-provisioning.test.ts", + "package": "packages/cli", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 400, + "testCount": 1, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 460, + "ageDays": 46, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "3ec12f10e", + "time": 1778481370000, + "subject": "feat(FN-3791): add agent provisioning approval guards and policy enforcemen", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/soft-delete-qa-FN-5124.test.ts", + "package": "packages/core", + "valueScore": -2.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 1, + "churn-keyword": 1 + }, + "durationMs": 400, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 450, + "ageDays": 37, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "15bb84f86", + "time": 1779195129000, + "subject": "feat(FN-5124): add soft-delete QA boundary regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5ea525254", + "time": 1779196235000, + "subject": "test(FN-5127): align FN-5124 QA test with idempotent re-delete", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "87da1cb75", + "time": 1779243827000, + "subject": "test(dashboard): align github-tracking-documentation phrases with current docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentDetailView.chain-of-command.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 900, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 450, + "ageDays": 44, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "d98c053ed", + "time": 1778597230000, + "subject": "feat(FN-4088): split AgentDetailView tests into seven focused suites with s", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-pool-liveness.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 2700, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 450, + "ageDays": 41, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "58aa41107", + "time": 1778885974000, + "subject": "test(FN-4682): add worktree liveness regression coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0f69412c2", + "time": 1779055355000, + "subject": "feat(FN-4935): complete Step 1 — structured liveness classifier", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7ee1fec22", + "time": 1782077338000, + "subject": "FN-6861: reject repo-root task worktrees", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/tool-analytics.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 2000, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 444.4, + "ageDays": 10, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "53bb1d8f3", + "time": 1781576865000, + "subject": "feat(analytics): U2 — core date-range aggregators (tokens/tools/activity/productivity)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "29b27a7eb", + "time": 1781757950000, + "subject": "FN-6620: categorize Fusion tool analytics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PluginManager.toggle.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 2000, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 444.4, + "ageDays": 49, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "31110975a", + "time": 1778222292000, + "subject": "feat(FN-3723): fix plugin toggle rendering", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f8200adb7", + "time": 1781004473000, + "subject": "FN-6071: add plugin registry browsing and install actions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-finalize-unproven.real-git.test.ts", + "package": "packages/engine", + "valueScore": 12.5, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 3, + "fix+source": 3 + }, + "durationMs": 6000, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 444.4, + "ageDays": 41, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "b8337a9dc", + "time": 1778879188000, + "subject": "feat(FN-4656): complete Step 1 — add owned landed evidence classifier", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6f7ca7921", + "time": 1778879188000, + "subject": "feat(FN-4656): complete Step 3 — gate unproven finalize and auto-retry", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8e6740468", + "time": 1779324866000, + "subject": "fix(FN-5345): address code-review findings on engine fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "acf3502a2", + "time": 1779583341000, + "subject": "fix(merger): refuse no-op finalize when modifiedFiles claims work was done", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bde7bdf76", + "time": 1780510994000, + "subject": "fix(FN-branch-group): review fixes — fast-path mergeTargetSource + open-PR reuse only", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-reliability-aggregations.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 400, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 440, + "ageDays": 39, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "3037bbf9d", + "time": 1779085294000, + "subject": "feat(FN-4908): complete Step 1 — add SQL reliability aggregations", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/artifacts.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 2200, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 440, + "ageDays": 4, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "fbce59b70", + "time": 1782057640000, + "subject": "FN-6777: add artifact registry storage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b02fb62c0", + "time": 1782231417000, + "subject": "fix(core): avoid loading artifact content in registry lists", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a46800128", + "time": 1782233869000, + "subject": "Address PR review feedback (#1730)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/routine-store.test.ts", + "package": "packages/core", + "valueScore": 4.5, + "positiveCount": 5, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 10, + "testOnlyCount": 4, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "fix": 1, + "test+source": 3, + "test-only-churn": 4, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 2400, + "testCount": 54, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 436.4, + "ageDays": 77, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "3c58dbe08", + "time": 1775808321000, + "subject": "feat(FN-1266): add dashboard API integration tests for budget endpoints", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "afc70f15e", + "time": 1775845848000, + "subject": "fix: add agentId to routine-store test createRoutine calls", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "15b27253b", + "time": 1775848315000, + "subject": "feat(FN-1269): complete routine engine integration with RoutineRunner and RoutineScheduler", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f62e4623d", + "time": 1775848856000, + "subject": "feat(FN-1539): add deterministic merge verification runner", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "08a0d7157", + "time": 1776295936000, + "subject": "feat(FN-1715): add scope-aware automation and routine scheduling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7fde8009d", + "time": 1776321225000, + "subject": "test(FN-1742): add scope regression tests for routines and automations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension.test.ts", + "package": "packages/cli", + "valueScore": 35, + "positiveCount": 59, + "negativeCount": 32, + "neutralCount": 1, + "timesTouched": 92, + "testOnlyCount": 21, + "testOnlyRatio": 0.228, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 21, + "test+source": 66, + "churn-keyword": 17, + "fix+source": 3, + "fix": 1, + "quarantine-ledger": 1 + }, + "durationMs": 15700, + "testCount": 147, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 436.1, + "ageDays": 89, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "f70d5979b", + "time": 1774750480000, + "subject": "feat: pi extension", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b5217a08c", + "time": 1774830276000, + "subject": "test(KB-001): add GitHub import tests and update extension tool count", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c782c60af", + "time": 1774831228000, + "subject": "feat(KB-002): add interactive GitHub issue import", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f3097c702", + "time": 1774833722000, + "subject": "feat(KB-016): add task duplicate command", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "52b820522", + "time": 1774839823000, + "subject": "feat(KB-034): add task archive/unarchive functionality", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/done-task-verification-benign.real-git.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1300, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 433.3, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "b144ff763", + "time": 1778901535000, + "subject": "feat(FN-4700): complete Step 3 — reconcile benign verification finalizes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-scheduling.test.ts", + "package": "packages/core", + "valueScore": -1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 400, + "testCount": 26, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 430, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1f7958fc0", + "time": 1778561306000, + "subject": "feat(FN-3935): align engineer role routing with explicit assignment and del", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-commit-strategy.real-git.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 1900, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 422.2, + "ageDays": 44, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "55663219c", + "time": 1778630673000, + "subject": "feat(FN-4069): add direct merge commit routing to merger", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.create-pr.test.tsx", + "package": "packages/dashboard", + "valueScore": 4.5, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added": 1, + "test+source": 5, + "test-only-churn": 1, + "churn-keyword": 1 + }, + "durationMs": 2300, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 418.2, + "ageDays": 39, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "e3c90d9f8", + "time": 1779087743000, + "subject": "test(FN-5020): complete Step 2 — cover create-pr modal wiring", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5a1794fc5", + "time": 1779111562000, + "subject": "feat(FN-5018): wire create-pr review surface in TaskReviewTab", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "14298615d", + "time": 1779113667000, + "subject": "feat(FN-5044): complete Step 1 — gate Create PR for auto-merge", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "356411ef0", + "time": 1779218026000, + "subject": "test(FN-5150): complete Step 2 — cover review-tab create PR path", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "aa64643cf", + "time": 1779841174000, + "subject": "feat(FN-5589): merge fusion/fn-5589", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "645f3c22f", + "time": 1780883506000, + "subject": "FN-5953: hide manual PR actions when effective auto-merge is on", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-workspace.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 2, + "churn-keyword": 1 + }, + "durationMs": 3100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 413.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "8f4098e5b", + "time": 1782075877000, + "subject": "feat: add workspace mode foundation (multi-repo projects)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "09bd01baf", + "time": 1782101240000, + "subject": "feat(workspace): Phase A U1 — executor session scoping for workspace mode", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9f0492e69", + "time": 1782112968000, + "subject": "fix(review): address PR #1713 review findings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3a7123762", + "time": 1782122661000, + "subject": "fix(review): address PR #1717 Phase C merge-loop review feedback", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PlanningModeModal.autosize.test.tsx", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 2, + "test-only-churn": 1 + }, + "durationMs": 400, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 410, + "ageDays": 41, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "ef5f7bbdf", + "time": 1778909053000, + "subject": "feat(FN-4712): complete Step 4 — autosize planning chat textareas", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e0b82fda6", + "time": 1779212396000, + "subject": "test(FN-5151): complete Step 5 — add autosize regression coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dab1569ac", + "time": 1780429324000, + "subject": "FN-5892: dedupe planning sessions and persist history deletion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "df4939a65", + "time": 1781393428000, + "subject": "FN-6385: add dashboard overflow regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useFileBrowser.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added": 1, + "fix": 1 + }, + "durationMs": 400, + "testCount": 10, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 400, + "ageDays": 78, + "lastTouched": "2026-04-13", + "evidence": [ + { + "sha": "8ef31a81c", + "time": 1775670522000, + "subject": "test(FN-1282): expand dashboard hook and modal coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "51e23786c", + "time": 1776055234000, + "subject": "fix(dashboard): ensure file/import API calls are project-scoped in tests", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/multi-node-claim-mutex-interactions.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 400, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 400, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "2617ae659", + "time": 1778988459000, + "subject": "test(FN-4818): complete Step 1 — add multi-node claim mutex interaction coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "003b343b4", + "time": 1778988460000, + "subject": "test(FN-4818): complete Step 1 — add claim mutex interaction coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/research-store.test.ts", + "package": "packages/core", + "valueScore": 0.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test+source": 3 + }, + "durationMs": 600, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 400, + "ageDays": 57, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "c5de7e183", + "time": 1777526487000, + "subject": "feat(FN-2991): merge fusion/fn-2991", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "56a407b52", + "time": 1777800967000, + "subject": "feat(FN-3013): add durable insight lifecycle with bounded run executor", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "f2fa44e27", + "time": 1777824664000, + "subject": "feat(FN-2999): harden research lifecycle with idempotent cancel/retry, SSE", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "5de69cd0a", + "time": 1777958230000, + "subject": "feat(FN-3370): strengthen research store lifecycle and coverage testing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SessionTerminal.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 5, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 3, + "test-only-churn": 1, + "test+source": 6 + }, + "durationMs": 800, + "testCount": 19, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 400, + "ageDays": 21, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "e10db8139", + "time": 1780647373000, + "subject": "feat(dashboard): cli-agent terminal UI, task-card states, and notification banner support (U11)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c78047037", + "time": 1781038641000, + "subject": "FN-6127: stabilize dashboard test mocks and isolation", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "1db4835d1", + "time": 1781393428000, + "subject": "FN-6390: fix terminal font remeasure and paste handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bd328f228", + "time": 1781684120000, + "subject": "FN-6536: apply terminal preferences to sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1bd8f6de6", + "time": 1781747333000, + "subject": "FN-6603: fix mobile terminal font measurement", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "16b6e5dec", + "time": 1781813983000, + "subject": "FN-6638: stabilize mobile terminal font metrics", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/in-review-handoff-atomic.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1200, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 400, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "93b11c6c0", + "time": 1779264068000, + "subject": "feat(FN-5241): add atomic in-review handoff seam with executor/self-healing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskCard.badge-height.test.tsx", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 1400, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 400, + "ageDays": 43, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "014ede319", + "time": 1778710297000, + "subject": "feat(FN-4369): complete Step 2 — normalize badge dimensions", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "c9ff2078b", + "time": 1779295360000, + "subject": "feat(FN-5314): add broad-scope advisory chip to TaskCard and banner to Task", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/foreign-only-contamination-recovery.real-git.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 1400, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 400, + "ageDays": 39, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "a2caac36e", + "time": 1779062821000, + "subject": "test(FN-4887): complete Step 4-5 — add interaction coverage and docs", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "79850b233", + "time": 1779390298000, + "subject": "feat(FN-5349): add integration branch resolver with auto-recovery fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/otel-exporter.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 1800, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 400, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "168dc2f79", + "time": 1781579956000, + "subject": "feat(command-center): U10 — OpenTelemetry (OTLP) metrics export", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61f389ed3", + "time": 1781614571000, + "subject": "Address PR review feedback (#1683)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/token-analytics.test.ts", + "package": "packages/core", + "valueScore": 9.5, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5 + }, + "durationMs": 4200, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 400, + "ageDays": 10, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "53bb1d8f3", + "time": 1781576865000, + "subject": "feat(analytics): U2 — core date-range aggregators (tokens/tools/activity/productivity)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f41732d04", + "time": 1781821677000, + "subject": "FN-6652: add live token usage timeline", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ef544597d", + "time": 1781827091000, + "subject": "FN-6665: group token analytics by runtime model", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "317b08b22", + "time": 1781828059000, + "subject": "FN-6669: price token costs from usage snapshots", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "711bf3e1b", + "time": 1781912854000, + "subject": "FN-6746: attribute token analytics per runtime model", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "efb94c862", + "time": 1782202451000, + "subject": "FN-6876: add editable model pricing refresh", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-ancestor-shortcircuit.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 3 + }, + "durationMs": 2500, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 384.6, + "ageDays": 45, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "94fb1cc2e", + "time": 1778511773000, + "subject": "feat(FN-4001): merge fusion/fn-4001", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1cf987208", + "time": 1778524879000, + "subject": "feat(FN-4018): isolate split merger temp workspaces with settings persisten", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e9b8ba5c5", + "time": 1778597230000, + "subject": "feat(FN-4074): add priority option to task creation in engine and extension", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c89ad28e7", + "time": 1780041317000, + "subject": "FN-5646: preserve AI body when canonicalizing merge commits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workspace-merger-deps-resilient.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 2300, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 383.3, + "ageDays": 1, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "9dc228549", + "time": 1782346538000, + "subject": "fix(workspace): make per-repo land resilient to a sub-repo dependency-sync failure", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-sandbox-audit.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 1500, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 375, + "ageDays": 41, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "ad73d7658", + "time": 1778887182000, + "subject": "feat(FN-4640): complete Step 6 — dashboard sandbox audit surface", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8e2d0b6d2", + "time": 1779239375000, + "subject": "test(dashboard): satisfy server.ts contract on sandbox-audit MockStore", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-diff-lineage.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 366.7, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "c72dc6f3f", + "time": 1778792672000, + "subject": "feat(FN-4521): complete Step 2 — fix done lineage aggregation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/mission-interview-drafts-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 2200, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 366.7, + "ageDays": 44, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "5c521434d", + "time": 1778639919000, + "subject": "feat(FN-4124): surface mission interview drafts across mission tooling", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "48e08c07e", + "time": 1780416168000, + "subject": "FN-5880: recover plan-ready mission interview drafts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d984fce0a", + "time": 1782401684000, + "subject": "FN-6984: fix mission draft discard scoping", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktree-pool-merger-release.test.ts", + "package": "packages/engine", + "valueScore": 4.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix": 1, + "test+source": 1 + }, + "durationMs": 2000, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 363.6, + "ageDays": 39, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "04b965dbe", + "time": 1779077858000, + "subject": "test(FN-4954): complete Step 6 — add merger/pool reliability backstop", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "c6453ca95", + "time": 1779077858000, + "subject": "fix(FN-4954): complete Step 7 — restore green verification gates", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-list-modified.test.ts", + "package": "packages/core", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 2 + }, + "durationMs": 900, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 360, + "ageDays": 47, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "9e415f81f", + "time": 1778347865000, + "subject": "feat(FN-3796): add plugin routes wiring and listTasksModifiedSince", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2dcfb19b3", + "time": 1778347865000, + "subject": "feat(FN-3798): add listTasksModifiedSince contract to task store", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9dc0e3824", + "time": 1778481370000, + "subject": "feat(FN-3770): add cli-printing-press bundled plugin changeset", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "884cd5283", + "time": 1778481370000, + "subject": "feat(FN-3975): optimize slow test setup in store-list-modified tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useTerminalSessions.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 3, + "fix+source": 1, + "test+source": 4, + "fix": 1 + }, + "durationMs": 1800, + "testCount": 29, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 360, + "ageDays": 84, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "9f1347f1f", + "time": 1775150551000, + "subject": "feat(FN-682): add multi-tab terminal support with session persistence", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7f4d75780", + "time": 1775311900000, + "subject": "fix(FN-868): add terminal bootstrap error handling with retry and improve workflow step manager", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "d1da9721a", + "time": 1775324903000, + "subject": "feat(FN-881): add bounded bootstrap timeouts and xterm init watchdog", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c4a0da027", + "time": 1775546412000, + "subject": "feat(FN-1021): stabilize terminal first-open bootstrap and WebSocket recovery", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "0359166b6", + "time": 1775669978000, + "subject": "feat(FN-1276): scope dashboard persistence by project", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bf5ce66a0", + "time": 1776040578000, + "subject": "feat(FN-1656): complete Step 1 — implement canonical node-project counting rules", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.models-progress-workflow.test.tsx", + "package": "packages/dashboard", + "valueScore": 6, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added": 1, + "test+source": 4, + "test-only-churn": 1 + }, + "durationMs": 2500, + "testCount": 36, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 357.1, + "ageDays": 50, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "ed52c3dff", + "time": 1778108228000, + "subject": "test(FN-3591): split TaskDetailModal coverage into focused test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5ffd1485c", + "time": 1778161545000, + "subject": "feat(FN-3581): honor runtime model precedence for assigned agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5be53a7f6", + "time": 1778678974000, + "subject": "feat(FN-4195): complete Step 1 — fix in-progress status color mapping", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ef33d79e7", + "time": 1780642044000, + "subject": "feat(core,dashboard): workflow-centric task creation with atomic workflowId materialization", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9eff4d424", + "time": 1781733176000, + "subject": "FN-6574: repair TaskDetailModal definition test lanes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2669bb17e", + "time": 1782415514000, + "subject": "FN-6980: fix inherited workflow details", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PlanningModeModal.planning-flow.test.tsx", + "package": "packages/dashboard", + "valueScore": 10, + "positiveCount": 15, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 20, + "testOnlyCount": 2, + "testOnlyRatio": 0.1, + "signalTally": { + "added": 1, + "test+source": 16, + "churn-keyword": 5, + "fix": 1, + "test-only-churn": 2 + }, + "durationMs": 3900, + "testCount": 47, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 354.5, + "ageDays": 52, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "6ea1fb01e", + "time": 1777940541000, + "subject": "feat(FN-3325): remove monolithic PlanningModeModal test file", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f19524577", + "time": 1777942534000, + "subject": "feat(FN-3419): remove inline lock indicator from PlanningModeModal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1a79fa711", + "time": 1778005925000, + "subject": "feat(FN-3209): fix refine continuation flow in planning mode and add local", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "36493eca0", + "time": 1778013759000, + "subject": "feat(FN-3498): add self-healing and ownership-aware done-task merge reconci", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a126b893d", + "time": 1778018810000, + "subject": "fix: fix flaky PlanningModeModal test — use findByText for async rendering", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "c6d12ba5a", + "time": 1778195005000, + "subject": "feat(FN-3716): add planning mode priority controls for task routes and subt", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/hold-release.test.ts", + "package": "packages/engine", + "valueScore": 11.5, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix+source": 3, + "test+source": 1 + }, + "durationMs": 4400, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 352, + "ageDays": 22, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "6a15a1391", + "time": 1780561376000, + "subject": "feat(engine): in-txn capacity enforcement + generalized hold/release sweep with reservation-first ordering (U6)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "010976cee", + "time": 1780582366000, + "subject": "test: promote/board-workflows routes, concurrent sweep, canDropTask, migration forward paths (#1404 #1414 #1415 #1416 #1417)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cfc9bb5fd", + "time": 1780583642000, + "subject": "fix(core): shared workflow-IR resolver, prod branch persistence + pruning, latest-run JOIN, sweep reservation-leak fix (#1402 #1407 #1412 #1413)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bf3276295", + "time": 1782186329000, + "subject": "fix(engine): complete workflow runtime cutover", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e60b1378b", + "time": 1782191850000, + "subject": "fix(engine): address workflow cutover review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "acf0fff41", + "time": 1782192157000, + "subject": "test(engine): cover workflow cutover recovery guards", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/experiment-executor.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 700, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 350, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "24bf18a23", + "time": 1778745524000, + "subject": "feat(FN-4219): complete Step 4 — add experiment executor runtime", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "81b1eae39", + "time": 1778757906000, + "subject": "feat(FN-4222): add experiment-finalize CLI command and API route", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pi-prompt-session-and-check-recursion.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test-only-churn": 1, + "churn-keyword": 2, + "test+source": 2 + }, + "durationMs": 700, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 350, + "ageDays": 39, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "24f5c238a", + "time": 1779060799000, + "subject": "fix(FN-4930): make promptSessionAndCheck transcript diagnostics recursion-safe", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "100d6494d", + "time": 1779060799000, + "subject": "test(FN-4930): fix promptSessionAndCheck regression assertions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e16893a3c", + "time": 1780325636000, + "subject": "FN-5832: surface unsupported message-role provider errors", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "4435ca2c5", + "time": 1781065002000, + "subject": "FN-6158: handle Codex auth-tier model incompatibility", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/self-defeating-dep-reconcile.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 700, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 350, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "0d0d818b7", + "time": 1779031489000, + "subject": "feat(FN-4891): merge fusion/fn-4891", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "10455b799", + "time": 1779036670000, + "subject": "feat(FN-4898): reconcile task title-id drift in storage migrations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/soft-delete-stickiness-FN-5233.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 700, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 350, + "ageDays": 33, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "2d2e5b809", + "time": 1779581234000, + "subject": "feat(FN-5233): add tombstone recreate guard and allow-resurrection delete f", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/foreign-start-point-no-owned-commit.real-git.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added": 1, + "test+source": 2, + "churn-keyword": 1, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 1400, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 350, + "ageDays": 41, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "4ea1fa3e2", + "time": 1778879188000, + "subject": "test(FN-4656): complete Step 4 — add reliability interaction coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "bd3809ed8", + "time": 1778879188000, + "subject": "docs(FN-4656): complete Step 6 — docs, changeset, and integrity sweep notes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "415cd6a11", + "time": 1778964403000, + "subject": "test(FN-4783): stabilize workspace test lanes for verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a8715ed96", + "time": 1779416127000, + "subject": "fix(FN-5335): enforce triple-proof gating for backward recovery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-verification-command.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "churn-keyword": 4, + "added-with-source": 1, + "fix+source": 3, + "test+source": 2, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 1400, + "testCount": 18, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 350, + "ageDays": 56, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "400be4487", + "time": 1777569594000, + "subject": "feat(engine): preserve branches on auto-requeue + add fn_run_verification", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "0c8674c37", + "time": 1780937040000, + "subject": "fix(FN-5994): prevent verification hangs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c0b6f212c", + "time": 1780939381000, + "subject": "fix(FN-5994): address verification review feedback", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "4315cd01c", + "time": 1781768341000, + "subject": "FN-6598: suppress stuck detection during verification", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "b6ac5f2e5", + "time": 1781771229000, + "subject": "FN-6608: bound engine verification runs", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "ce90cc9b6", + "time": 1782061512000, + "subject": "fix(FN-5048): keep Fusion test verification bounded", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/monitor-trait.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 2100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 350, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "f5bd86214", + "time": 1781582397000, + "subject": "feat(monitor): U13 — monitor stage (deployments, incidents, MTTR) closes the loop", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61f389ed3", + "time": 1781614571000, + "subject": "Address PR review feedback (#1683)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0d854263e", + "time": 1781647869000, + "subject": "Address PR review feedback round 2 (#1683)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-db-corruption.test.ts", + "package": "packages/engine", + "valueScore": -3, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1, + "quarantine-ledger": 1 + }, + "durationMs": 300, + "testCount": 5, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 345, + "ageDays": 37, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "1b49cbc94", + "time": 1779275623000, + "subject": "feat(FN-5284): surface db corruption via health checks, self-healing, and d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fd202e935", + "time": 1779320607000, + "subject": "feat(FN-5329): remove orphan rescue and branch-recovery primitives from eng", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ae63cd900", + "time": 1781105131000, + "subject": "FN-6195: isolate and quarantine flaky db-corruption test", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/transition-parity.test.ts", + "package": "packages/core", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 1 + }, + "durationMs": 3100, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 344.4, + "ageDays": 22, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "4e1b0fab0", + "time": 1780558872000, + "subject": "feat(core): workflow-resolved transitions behind workflowColumns flag, typed rejections, default-workflow hook parity (U4)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6a15a1391", + "time": 1780561376000, + "subject": "feat(engine): in-txn capacity enforcement + generalized hold/release sweep with reservation-first ordering (U6)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "71822f26d", + "time": 1780890224000, + "subject": "feat(engine): add workflow extension plugin seams", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "01523a658", + "time": 1780892350000, + "subject": "fix(engine): address workflow extension PR feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/real-git/commit-msg-trailer.real-git.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 1700, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 340, + "ageDays": 38, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "ac9c83c10", + "time": 1779183275000, + "subject": "test(FN-5089): add commit-msg hook coverage and wiring", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6c40b0685", + "time": 1779183275000, + "subject": "test(FN-5089): cover lowercase metadata normalization", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1983dac6e", + "time": 1779323508000, + "subject": "fix(FN-5345): refuse empty commits + early empty-own-diff finalize", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/integrity-warning-persisted-dedup.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "churn-keyword": 2, + "test-only-churn": 1, + "test+source": 2 + }, + "durationMs": 1700, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 340, + "ageDays": 40, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "f4aa6d7b8", + "time": 1778975503000, + "subject": "fix(FN-4811): persist done-task integrity warnings across engine restarts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "86237c9a5", + "time": 1778977395000, + "subject": "fix(FN-4811): unblock @fusion/engine typecheck so verification bootstrap can run", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "5cd0e6665", + "time": 1778996217000, + "subject": "feat(FN-4839): harden real-git test timeouts across engine suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "394b9adc9", + "time": 1779514977000, + "subject": "feat(FN-5518): merge fusion/fn-5518", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c82cdb281", + "time": 1780551083000, + "subject": "FN-5944: stop redundant run-audit re-emission", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-dependency-cycle.test.ts", + "package": "packages/core", + "valueScore": -2.5, + "positiveCount": 2, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 3, + "testOnlyRatio": 0.6, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 3, + "test+source": 1, + "churn-keyword": 1 + }, + "durationMs": 300, + "testCount": 18, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 337.5, + "ageDays": 36, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "e12adeb3f", + "time": 1779362121000, + "subject": "feat(FN-5256): complete Step 2 — enforce cycle checks on writes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "933cea434", + "time": 1779386786000, + "subject": "feat(FN-5256): merge fusion/fn-5256", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3a6a4ece6", + "time": 1779491383000, + "subject": "feat(FN-5432): merge fusion/fn-5432", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d3ad0641c", + "time": 1779518564000, + "subject": "feat(FN-5486): merge fusion/fn-5486", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentsView.orgchart.test.tsx", + "package": "packages/dashboard", + "valueScore": -2.5, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test+source": 1, + "test-only-churn": 2 + }, + "durationMs": 300, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 337.5, + "ageDays": 42, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "7d61827ca", + "time": 1778822204000, + "subject": "test(FN-4551): complete Step 4 — org chart pan/zoom and connector coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "338e7286c", + "time": 1781393428000, + "subject": "FN-6395: align viewport hook mocks in dashboard tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "deaa64218", + "time": 1782198507000, + "subject": "FN-6931: fix org chart connector rendering", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/secrets-sync-passphrase.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1000, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 333.3, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "8becfb226", + "time": 1779047881000, + "subject": "feat(FN-4913): complete Step 1 — add secrets sync passphrase helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.allow-resurrection.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1000, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 333.3, + "ageDays": 33, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "6aa1ff0fb", + "time": 1779594241000, + "subject": "feat(FN-5475): add allow-resurrection control to task delete flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pr-reconcile.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1000, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 333.3, + "ageDays": 20, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "c13f9a123", + "time": 1780715129000, + "subject": "feat(pr): node-agnostic PR reconcile + hold-release firing (U4)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/landed-content-soft-blocker.real-git.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1000, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 333.3, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "d53110cd0", + "time": 1778870495000, + "subject": "test(FN-4648): complete Step 4 — regression coverage updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/meta-archive-guard-composition.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1000, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 333.3, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "cae9c6c4f", + "time": 1779133583000, + "subject": "feat(FN-5064): merge fusion/fn-5064", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/misrouted-foreign-commit.real-git.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 1000, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 333.3, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "c161e626e", + "time": 1779064171000, + "subject": "feat(FN-4948): complete Steps 7-8 — finalize verification and release artifacts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/SystemStatsArea.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 2000, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 333.3, + "ageDays": 7, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "af31f7ddf", + "time": 1781834301000, + "subject": "FN-6657: embed system stats in Command Center", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5e1a4ff3f", + "time": 1781856170000, + "subject": "FN-6684: add Command Center chart coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "eb3477aba", + "time": 1782073541000, + "subject": "FN-6835: add system stats node selection", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/plugin.test.ts", + "package": "packages/cli", + "valueScore": -2, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added": 1, + "test+source": 4, + "fix+source": 1, + "churn-keyword": 2, + "test-only-churn": 1, + "quarantine-ledger": 1 + }, + "durationMs": 300, + "testCount": 8, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 330, + "ageDays": 59, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "e877d9926", + "time": 1777303780000, + "subject": "test(FN-2687): add plugin install getRootDir regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "07b286ba7", + "time": 1778131055000, + "subject": "feat(FN-3575): rebuild plugin system with catalog, settings, and CLI comman", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fce3668a8", + "time": 1778145314000, + "subject": "feat(FN-3077): enforce plugin AI security scan gate across install flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4c6125a71", + "time": 1778222493000, + "subject": "fix(FN-3721): add release note for plugin install entry resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b8d14849e", + "time": 1778252821000, + "subject": "feat(FN-3722): route plugin store to configured global directory", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/duplicate-intake-tombstone-window.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 300, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 330, + "ageDays": 33, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "2d2e5b809", + "time": 1779581234000, + "subject": "feat(FN-5233): add tombstone recreate guard and allow-resurrection delete f", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/soft-delete-resurrection-FN-5208.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 300, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 330, + "ageDays": 37, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "87da1cb75", + "time": 1779243827000, + "subject": "test(dashboard): align github-tracking-documentation phrases with current docs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-persistence.test.ts", + "package": "packages/core", + "valueScore": 16, + "positiveCount": 9, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 6, + "fix+source": 3, + "churn-keyword": 1 + }, + "durationMs": 5600, + "testCount": 35, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 329.4, + "ageDays": 45, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "deff107d9", + "time": 1778507262000, + "subject": "feat(FN-3978): split monolithic TaskStore test suite into focused domain fi", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6c1cb40c3", + "time": 1778606856000, + "subject": "feat(FN-4132): sync task ownership on agent reassignment", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a312da63e", + "time": 1780073788000, + "subject": "FN-5674: add per-task auto-merge persistence and resolver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0435fefd8", + "time": 1780524976000, + "subject": "fix(workflows): persist pausedReason + harden CLI approval, await-input, and node isolation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3e927bc5f", + "time": 1780526783000, + "subject": "fix(FN-branch-group): address second-round PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "eb67d0821", + "time": 1780533132000, + "subject": "Address PR review feedback (#1363)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/settings-migration.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 1900, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 316.7, + "ageDays": 21, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "4fe7dbe01", + "time": 1780640628000, + "subject": "feat(core): one-time hard-move migration of workflow-policy settings to workflow setting values", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e623340e7", + "time": 1780950778000, + "subject": "FN-5994: restore project summarization model settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e22afece5", + "time": 1781236381000, + "subject": "FN-6233: add typed triage policy settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-fields.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 1900, + "testCount": 38, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 316.7, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "a5023e028", + "time": 1780599809000, + "subject": "feat(core): U11 — custom task fields validation authority, orphan-not-delete reconciliation, coerce gate", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6f7f6860b", + "time": 1780615010000, + "subject": "fix: address PR review feedback (#1424)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/insight-run-executor.test.ts", + "package": "packages/core", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 11, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 315, + "ageDays": 54, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "56a407b52", + "time": 1777800967000, + "subject": "feat(FN-3013): add durable insight lifecycle with bounded run executor", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/cross-node-claim-mutex.integration.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2 + }, + "durationMs": 300, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 315, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "ad4b23698", + "time": 1778989680000, + "subject": "test(FN-4822): complete Step 5 — add cross-node claim mutex integration race test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "199f31781", + "time": 1778989680000, + "subject": "feat(FN-4822): complete Step 6 — enforce central-claim race coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a11bd0719", + "time": 1778989680000, + "subject": "feat(FN-4822): complete Step 8 — document central claim authority", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-pause.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 8, + "negativeCount": 6, + "neutralCount": 1, + "timesTouched": 15, + "testOnlyCount": 5, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 5, + "churn-keyword": 5, + "test+source": 6, + "fix+source": 3 + }, + "durationMs": 300, + "testCount": 86, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 315, + "ageDays": 49, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "f240683fc", + "time": 1778221265000, + "subject": "feat(FN-3720): split executor.test.ts into eight focused suites and add she", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "234c2a594", + "time": 1778481370000, + "subject": "feat(FN-3968): add tests for task env inheritance and isolation in spawn/ch", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7298c9607", + "time": 1778597230000, + "subject": "feat(FN-4087): replace sleep() with deterministic waits in tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "4e6440a12", + "time": 1778735018000, + "subject": "feat(FN-4389): complete Step 8 — run verification and fix regressions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "af1660881", + "time": 1779232524000, + "subject": "feat(FN-5168): complete Step 2 — executor feeds ignored step-update churn", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cf0101be7", + "time": 1779379583000, + "subject": "fix(FN-5256): keep live task worktrees through pause/resume races", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/todo-inprogress-flapping.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2 + }, + "durationMs": 2800, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 311.1, + "ageDays": 18, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "3615b0b19", + "time": 1780883507000, + "subject": "FN-5941: stop todo/in-progress flapping", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f1ac8d5f6", + "time": 1781459961000, + "subject": "fix: address stuck-loop parking review comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "93fd220aa", + "time": 1781461151000, + "subject": "fix: guard stuck-loop park logging", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/db-paused-done-backfill.test.ts", + "package": "packages/core", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 300, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 307.5, + "ageDays": 37, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "250f7ccab", + "time": 1779198686000, + "subject": "test(FN-5115): complete Step 5 — add done pause backfill migration test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "97f46dbad", + "time": 1779198686000, + "subject": "test(FN-5115): complete Step 7 — stabilize migrations and verification", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useProjectHealth.test.ts", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added": 1, + "test+source": 1 + }, + "durationMs": 300, + "testCount": 12, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 307.5, + "ageDays": 78, + "lastTouched": "2026-04-14", + "evidence": [ + { + "sha": "8ef31a81c", + "time": 1775670522000, + "subject": "test(FN-1282): expand dashboard hook and modal coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "67d0deb95", + "time": 1776184148000, + "subject": "feat(FN-1734): merge fusion/fn-1734", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/eval-automation.test.ts", + "package": "packages/core", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2 + }, + "durationMs": 300, + "testCount": 11, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 51, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "508322706", + "time": 1778010541000, + "subject": "feat(FN-3388): document scheduled eval batch architecture", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ce323742a", + "time": 1778065763000, + "subject": "feat(FN-3514): document task evaluation settings in settings reference", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "9648141e0", + "time": 1778240090000, + "subject": "test(FN-3728): cover eval automation error paths", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.github-tracking-header.test.tsx", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 300, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 44, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "14811ed60", + "time": 1778632466000, + "subject": "feat(FN-4224): tighten github tracking header to single-row layout in task", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "9eff4d424", + "time": 1781733176000, + "subject": "FN-6574: repair TaskDetailModal definition test lanes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/docs-screenshot-links.test.ts", + "package": "packages/cli", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 600, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 9, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "8e9b7b75a", + "time": 1781692923000, + "subject": "FN-6534: track docs screenshots", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/soft-delete-checked-out-tasks.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 600, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "b1c0a9175", + "time": 1779270454000, + "subject": "feat(FN-5195): merge fusion/fn-5195", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-store-central-claim.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 900, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "3190eac88", + "time": 1778989680000, + "subject": "test(FN-4822): complete Step 4 — add AgentStore central-claim wiring tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-stale-board-entries-after-move.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 900, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "8c478adc7", + "time": 1782124454000, + "subject": "FN-6851: prevent stale task board entries", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/board-font-scale.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 900, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 56, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "444032c58", + "time": 1777616669000, + "subject": "feat(FN-3042): scale board typography and improve theme selector accessibil", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/branch-conflicts-misrouted-foreign.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 900, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "597aa7969", + "time": 1779064169000, + "subject": "feat(FN-4948): complete Step 4 — classify and drop misrouted foreign commits", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/finalize-git-ops.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 900, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "b8c5cf4f7", + "time": 1778756509000, + "subject": "feat(FN-4222): complete Step 2 — extend git ops for finalize", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/real-git/integration-branch-master.real-git.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 900, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 35, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "79850b233", + "time": 1779390298000, + "subject": "feat(FN-5349): add integration branch resolver with auto-recovery fallback", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktree-stale-registration-recovery.real-git.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 900, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "6fc0f5ceb", + "time": 1779144661000, + "subject": "feat(FN-5063): merge fusion/fn-5063", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-movement.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 6, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 3, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 3, + "fix+source": 1, + "test+source": 4, + "churn-keyword": 1 + }, + "durationMs": 1500, + "testCount": 49, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5d03d355c", + "time": 1778597231000, + "subject": "feat(FN-4067): add squash audit gate to merger with integration tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "07d0d8f3d", + "time": 1778812018000, + "subject": "fix: avoid same-column task move errors and keep durable agents active", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1622a0c1c", + "time": 1779090803000, + "subject": "test(FN-4892): align movement tests with intake archive transitions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a312da63e", + "time": 1780073788000, + "subject": "FN-5674: add per-task auto-merge persistence and resolver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4b4c32dc1", + "time": 1780995802000, + "subject": "FN-6063: enforce workflow scheduling capacity after hold release", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pr-nodes.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 1800, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 20, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "4e16145aa", + "time": 1780714531000, + "subject": "feat(pr): pr-create/pr-respond/pr-merge node kinds + handlers (U3)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "841ff9d83", + "time": 1780729793000, + "subject": "Address PR review feedback (#1461)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e617ce65d", + "time": 1781577857000, + "subject": "feat(pr): U18 — surface + gate auto-resolution of PR review comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/sandbox/__tests__/native.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 1800, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 300, + "ageDays": 41, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "b1de46e1c", + "time": 1778865841000, + "subject": "feat(FN-4636): complete Step 2 — add native sandbox backend", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aa8bd3dc9", + "time": 1780967688000, + "subject": "fix(FN-6043): recover stuck task processing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/near-duplicate-intake.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 3 + }, + "durationMs": 1900, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 292.3, + "ageDays": 37, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "8364be83d", + "time": 1779215455000, + "subject": "test(FN-5152): complete Step 6 — add near-duplicate reliability interaction tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "4d9068d92", + "time": 1779215455000, + "subject": "test(FN-5152): cover same-millisecond near-duplicate finalize race", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "24e0c44b4", + "time": 1780181566000, + "subject": "FN-5731: require confirmation before archiving near-duplicate tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4f7b3ac78", + "time": 1781476175000, + "subject": "FN-6439: clear stale near-duplicate flags", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useEvals.test.ts", + "package": "packages/dashboard", + "valueScore": 4.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 2 + }, + "durationMs": 1600, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 290.9, + "ageDays": 49, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "c32999b29", + "time": 1778199851000, + "subject": "feat(FN-3394): add evals dashboard view with API routes and client hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "419222046", + "time": 1778239280000, + "subject": "test(FN-3729): add eval dashboard coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "49de604f3", + "time": 1779014096000, + "subject": "test(FN-4859): complete Steps 6-7 — cache coverage and loader invalidation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cec86d23a", + "time": 1779014096000, + "subject": "test(FN-4859): expand cache hydration coverage across views", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e47c5e450", + "time": 1779238439000, + "subject": "test(dashboard): extract .data from SWR cache envelope in hook tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "00af26470", + "time": 1779257052000, + "subject": "Fix tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/branch-group-store.test.ts", + "package": "packages/core", + "valueScore": 18.5, + "positiveCount": 8, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 4 + }, + "durationMs": 5500, + "testCount": 19, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 282.1, + "ageDays": 27, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "72214132d", + "time": 1780078560000, + "subject": "FN-5678: add branch-group data model foundation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0c425788c", + "time": 1780260623000, + "subject": "FN-5782: wire branch groups into merge routing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "06d84905b", + "time": 1780265831000, + "subject": "FN-5783: enforce branch-group autoMerge precedence for shared promotions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9c29e2e77", + "time": 1780309390000, + "subject": "FN-5829: add shared feature branch option for new tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "314411c49", + "time": 1780501201000, + "subject": "fix(core): reuse same-name branch group instead of colliding on triage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "66ca583ec", + "time": 1780503471000, + "subject": "fix(FN-branch-group): stamp real BG- id into branchContext.groupId (U1)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/GitManagerModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 59, + "positiveCount": 42, + "negativeCount": 13, + "neutralCount": 1, + "timesTouched": 56, + "testOnlyCount": 10, + "testOnlyRatio": 0.179, + "signalTally": { + "added-with-source": 2, + "fix+source": 9, + "test+source": 34, + "churn-keyword": 5, + "test-only-churn": 10, + "fix": 1 + }, + "durationMs": 16900, + "testCount": 138, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 281.7, + "ageDays": 88, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "3f2fb0912", + "time": 1774837539000, + "subject": "feat(KB-030): add Git Manager dashboard feature", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b93bcc0ef", + "time": 1774838204000, + "subject": "fix(KB-043): fix type errors and test failures across all packages", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "501dc588d", + "time": 1774947653000, + "subject": "feat(KB-266): overhaul GitManagerModal with new architecture and API", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9af06c81d", + "time": 1774986666000, + "subject": "test(KB-323): add end-to-end verification test for steering comments injection", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/approval-request-store.test.ts", + "package": "packages/core", + "valueScore": 1.5, + "positiveCount": 3, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1, + "test-only-churn": 2 + }, + "durationMs": 700, + "testCount": 18, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 280, + "ageDays": 49, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "3f7aedd4f", + "time": 1778184303000, + "subject": "feat(FN-3546): add approval request persistence layer with SQLite store and", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4770b1225", + "time": 1778221265000, + "subject": "feat(FN-3561): wire permanent-agent approval context in runtime paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6ee85daa4", + "time": 1778297440000, + "subject": "feat(FN-3548): add agent action routes and approval pause/resume lifecycle", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "0c5f0514d", + "time": 1778347866000, + "subject": "feat(FN-3552): test approval request store and SSE relay behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fe50c3a3a", + "time": 1778465585000, + "subject": "feat(FN-3956): execute provisioning on approval decisions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "813001bc8", + "time": 1779034808000, + "subject": "feat(FN-4893): add secrets_access approval action category", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/task-retry.test.ts", + "package": "packages/cli", + "valueScore": -7.5, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": true, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 275, + "ageDays": 22, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "de3273eba", + "time": 1780525949000, + "subject": "FN-5937: clear deadlock auto-pause on retry", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "1c69ea78b", + "time": 1781078868000, + "subject": "FN-6173: fix CLI stale constructor mocks and plugin SDK shims", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/FileEditor.test.tsx", + "package": "packages/dashboard", + "valueScore": 15.5, + "positiveCount": 12, + "negativeCount": 7, + "neutralCount": 0, + "timesTouched": 19, + "testOnlyCount": 7, + "testOnlyRatio": 0.368, + "signalTally": { + "fix": 1, + "added": 1, + "test+source": 9, + "test-only-churn": 7, + "fix+source": 2 + }, + "durationMs": 4500, + "testCount": 47, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 272.7, + "ageDays": 87, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "94685548c", + "time": 1774881547000, + "subject": "fix(KB-109): fix FileEditor layout and add component tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + }, + { + "sha": "6c360959c", + "time": 1774921272000, + "subject": "feat(KB-226): add markdown preview to FileEditor", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8d8ccef30", + "time": 1774939180000, + "subject": "feat(KB-264): add word wrap toggle and fix markdown preview scrolling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "52542f2ae", + "time": 1774940733000, + "subject": "feat(KB-265): fix editor height layout and remove planning validator models", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "44eec7d42", + "time": 1778039257000, + "subject": "feat(FN-3528): add line-number gutter toggle to FileEditor and Files modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-github-tracking.test.ts", + "package": "packages/core", + "valueScore": 7.5, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 2, + "fix+source": 1 + }, + "durationMs": 2300, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 270.6, + "ageDays": 47, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "81243b762", + "time": 1778384525000, + "subject": "feat(FN-3869): add github tracking fields and resolver to tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ebb867ea4", + "time": 1778547309000, + "subject": "feat(FN-4044): restore github tracking patch persistence", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c57cd7ce0", + "time": 1778630672000, + "subject": "feat(FN-4161): preserve github tracking detail after restart", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "676893cb3", + "time": 1778706770000, + "subject": "feat(FN-4378): complete Step 1 — thread githubIssueAction through store", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "384338047", + "time": 1778706771000, + "subject": "fix(FN-4378): export githubIssueAction type and assert auto default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0e81bd56a", + "time": 1778739974000, + "subject": "test(FN-4439): complete Step 2 — assert githubTracking in slim paths", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-log-migration.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 800, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 266.7, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "d72cb2ab2", + "time": 1780474218000, + "subject": "FN-5911: move agent logs to per-task JSONL storage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-log-retention.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 800, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 266.7, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "d72cb2ab2", + "time": 1780474218000, + "subject": "FN-5911: move agent logs to per-task JSONL storage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-delete-task-blocker-residue.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 800, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 266.7, + "ageDays": 33, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "9b7e87667", + "time": 1779598447000, + "subject": "feat(FN-5566): add soft-delete cleanup sweep for blocker residue", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-prompt-overrides-store.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 800, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 266.7, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "26c8d960a", + "time": 1782102221000, + "subject": "FN-6893: add editable built-in workflow prompts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useMemoryBackendStatus.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 800, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 266.7, + "ageDays": 73, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "4e9eb8b8a", + "time": 1776144751000, + "subject": "feat(FN-1771): add dashboard memory settings UX with backend selector and capability-aware editing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6eacbc47e", + "time": 1777164872000, + "subject": "feat(FN-2544): stabilize memory backend status loading UX", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "8e18fad15", + "time": 1777166557000, + "subject": "feat(FN-2559): merge fusion/fn-2559", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/usePluginUiSlots.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 800, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 266.7, + "ageDays": 70, + "lastTouched": "2026-04-16", + "evidence": [ + { + "sha": "513cab6fc", + "time": 1776359084000, + "subject": "feat(FN-1925): add plugin UI slot infrastructure", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/__tests__/telemetry-hub.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 800, + "testCount": 18, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 266.7, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "ed4c7ba00", + "time": 1780640328000, + "subject": "feat(engine): add cli-agent telemetry hub and session state machine (U3)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "f3b700aa5", + "time": 1780641273000, + "subject": "feat(engine): add generic heuristic-tier cli-agent adapter (U6)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/transition-pending-recovery.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 1600, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 266.7, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "45ce18954", + "time": 1780582481000, + "subject": "fix(core): transitionPending recovery sweep, flag-off evacuation, recoveryRehome on self-healing moves (#1401 #1409 #1411)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/usage-events.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 1600, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 266.7, + "ageDays": 10, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "ab9fdc413", + "time": 1781576438000, + "subject": "feat(telemetry): U1 — queryable usage_events table + emitUsageEvent capture", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0a87890bd", + "time": 1781580892000, + "subject": "feat(knowledge): U14 — persistent knowledge index", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "29b27a7eb", + "time": 1781757950000, + "subject": "FN-6620: categorize Fusion tool analytics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/branch-autocorrect-no-create-from-head.real-git.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 1600, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 266.7, + "ageDays": 34, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "bdfe620fa", + "time": 1779511240000, + "subject": "fix(FN-5456): tighten branch-autocorrect verify and add real-git regression", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-routes.rooms.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 3 + }, + "durationMs": 1700, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 261.5, + "ageDays": 46, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "cab3c4970", + "time": 1778425180000, + "subject": "feat(FN-3812): add rooms test scaffolds and coverage across core and dashbo", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d8fef5e4a", + "time": 1778452405000, + "subject": "feat(FN-3926): add chat room integration tests across core and dashboard", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b56306c42", + "time": 1778517173000, + "subject": "feat(FN-3905): use merger session model for post-merge workflow steps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "98aee61df", + "time": 1779007058000, + "subject": "feat(FN-4857): complete Step 2 — add room attachment upload routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4a9fe9957", + "time": 1781689176000, + "subject": "FN-6504: allow attachment-only chat sends", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-no-op-fix-finalize.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 1700, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 261.5, + "ageDays": 48, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "efe873332", + "time": 1778300894000, + "subject": "feat(FN-3773): fix no-op re-squash in merge finalize instead of refusing me", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8cbbf4761", + "time": 1778347865000, + "subject": "test(FN-3842): align finalize-result assertions and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1cf987208", + "time": 1778524879000, + "subject": "feat(FN-4018): isolate split merger temp workspaces with settings persisten", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "c89ad28e7", + "time": 1780041317000, + "subject": "FN-5646: preserve AI body when canonicalizing merge commits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/session-resume-history.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 6, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 11, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 8, + "churn-keyword": 5, + "fix+source": 2 + }, + "durationMs": 1300, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 260, + "ageDays": 78, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "bf141c47d", + "time": 1775697216000, + "subject": "test(FN-1156): add AI session lifecycle and reconnect coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9044fbc5a", + "time": 1778453403000, + "subject": "feat(FN-3954): restore scoped mission interview persistence and resume", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "236bfeeab", + "time": 1779240378000, + "subject": "fix(dashboard): plumb TaskStore through mission-interview rehydration", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.autosize.test.tsx", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "fix": 1, + "added": 1, + "test-only-churn": 2, + "test+source": 1 + }, + "durationMs": 900, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 257.1, + "ageDays": 43, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "7b2bb00d3", + "time": 1778678975000, + "subject": "fix(FN-4201): add autosize regression coverage and finalize gates", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + }, + { + "sha": "e638cdece", + "time": 1778885309000, + "subject": "test(FN-4669): complete Step 3 — cover rooms autosize growth and room switching", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6db8c60be", + "time": 1779202658000, + "subject": "test(FN-5146): complete Step 4 — update autosize caps and growth regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "12a6ee9af", + "time": 1779275560000, + "subject": "feat(FN-5218): add hash mentions to chat composers and popups", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.test.tsx", + "package": "packages/dashboard", + "valueScore": 94, + "positiveCount": 80, + "negativeCount": 34, + "neutralCount": 2, + "timesTouched": 116, + "testOnlyCount": 27, + "testOnlyRatio": 0.233, + "signalTally": { + "added-with-source": 1, + "test+source": 70, + "test-only-churn": 27, + "fix+source": 14, + "fix": 4, + "churn-keyword": 12 + }, + "durationMs": 24400, + "testCount": 231, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 256.8, + "ageDays": 77, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "640e38922", + "time": 1775810527000, + "subject": "feat(FN-1361): add chat view with SSE streaming and session management", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2ada00ac7", + "time": 1775965728000, + "subject": "feat(FN-1586): update ChatView with model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "763848eb7", + "time": 1776242981000, + "subject": "feat(FN-1549): simplify chat creation with agent-only selection and auto title", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1c555af4f", + "time": 1776253562000, + "subject": "feat(FN-1816): merge fusion/fn-1816", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e30d96879", + "time": 1776317735000, + "subject": "feat(FN-1856): rename chat agent to Fusion and add model indicator tag", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2316ac68d", + "time": 1776361087000, + "subject": "feat(FN-1882): merge fusion/fn-1882", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/multi-node-dashboard.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 500, + "testCount": 27, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 250, + "ageDays": 72, + "lastTouched": "2026-04-14", + "evidence": [ + { + "sha": "89dfabb35", + "time": 1776198624000, + "subject": "feat(FN-1838): merge fusion/fn-1838", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-create-collision.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 500, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 250, + "ageDays": 44, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "72e94dddb", + "time": 1778597231000, + "subject": "feat(FN-4044): harden task ID collision guards and allocation safety", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ab4242257", + "time": 1778630673000, + "subject": "feat(FN-4055): add task ID collision audit script and recovery documentatio", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useTodoLists.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 500, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 250, + "ageDays": 60, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "fc32aacb3", + "time": 1777238195000, + "subject": "feat(FN-2578): merge fusion/fn-2578 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "294f719ae", + "time": 1779242590000, + "subject": "test(dashboard): clear localStorage in useTodoLists beforeEach", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/invariant-paused-todo-normalization.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 500, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 250, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "ca740cab9", + "time": 1778678976000, + "subject": "test(FN-4115): complete Step 2 — paused todo normalization tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModal.testMode.test.tsx", + "package": "packages/dashboard", + "valueScore": -4.5, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test+source": 1, + "test-only-churn": 2 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 245, + "ageDays": 35, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "9c2b61eec", + "time": 1779434114000, + "subject": "feat(FN-5204): add test mode activation across settings, engine, and dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "df4939a65", + "time": 1781393428000, + "subject": "FN-6385: add dashboard overflow regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "338e7286c", + "time": 1781393428000, + "subject": "FN-6395: align viewport hook mocks in dashboard tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-admin-entry-prune.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 1100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 244.4, + "ageDays": 38, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "46d09285d", + "time": 1779127292000, + "subject": "feat(FN-5058): merge fusion/fn-5058", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-run-mutation-context.test.ts", + "package": "packages/core", + "valueScore": -4, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 240, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "ac6aaca2c", + "time": 1778507262000, + "subject": "feat(FN-3982): split monolithic store.test.ts into archive-search, run-muta", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "d724008af", + "time": 1778993205000, + "subject": "test(FN-4838): complete Step 2 — speed up activity log retention test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-dependency-mutation.test.ts", + "package": "packages/core", + "valueScore": -4, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "churn-keyword": 1, + "test-only-churn": 1, + "quarantine-ledger": 1 + }, + "durationMs": 200, + "testCount": 5, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 240, + "ageDays": 26, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "b1c1a33d3", + "time": 1780173816000, + "subject": "Add safe task dependency mutation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a89e4edad", + "time": 1780174414000, + "subject": "fix: address dependency mutation review comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/vitest-setup-tmp-redirect.test.ts", + "package": "packages/core", + "valueScore": -4, + "positiveCount": 0, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "churn-keyword": 1, + "added": 1, + "test-only-churn": 2 + }, + "durationMs": 200, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 240, + "ageDays": 14, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "2add48c8b", + "time": 1781205489000, + "subject": "FN-6255: redirect tmpdir mkdtemp calls in tests", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "21cb8abcf", + "time": 1781310074000, + "subject": "FN-6310: recreate temp redirect sink after cleanup", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d0be3e462", + "time": 1781770803000, + "subject": "FN-6610: harden engine test isolation recovery", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-instructions.test.ts", + "package": "packages/core", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 1 + }, + "durationMs": 600, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 240, + "ageDays": 79, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "335a20e1b", + "time": 1775600228000, + "subject": "feat(FN-1050): add per-agent custom instructions support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "327775136", + "time": 1776121505000, + "subject": "feat(FN-1692): merge fusion/fn-1692", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7cb9fd61b", + "time": 1776618813000, + "subject": "Remove dashboard-load timing instrumentation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a29bc688a", + "time": 1777262191000, + "subject": "test(core,dashboard): expand in-memory SQLite to more store tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/checkout-claim-mutex.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "735c8f413", + "time": 1778977869000, + "subject": "feat(FN-4813): complete Step 2 — add distributed claim mutex tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/command-center-live.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "113263f36", + "time": 1781577850000, + "subject": "feat(command-center): U9+U6a — analytics API endpoints + live snapshot composer", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/commit-association-diff-backfill.real-git.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "8dd969746", + "time": 1782124944000, + "subject": "FN-6714: backfill commit-association diff stats", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/project-root.linked-worktree.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "1565b6dc5", + "time": 1779236840000, + "subject": "feat(FN-5188): complete Step 1 — linked worktree refusal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-pull-requests.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 20, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "4ecf3e86f", + "time": 1780705567000, + "subject": "feat(pr): PR entity foundation — schema v109, store CRUD, predicates (U1)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-settings-sync-passphrase-probe.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "af7367ab9", + "time": 1779152873000, + "subject": "feat(FN-5035): merge fusion/fn-5035", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/transition-types.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 17, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "2bebddb80", + "time": 1780557598000, + "subject": "feat(core): typed transition contract + transitionPending marker, schema v106 (U3)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-secrets-passphrase.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "29cd4aab9", + "time": 1779104816000, + "subject": "feat(FN-4984): complete Step 1 — add sync passphrase routes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/experiment-benchmark-runner.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "13789d6c8", + "time": 1778745524000, + "subject": "feat(FN-4219): complete Step 2 — add benchmark runner", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-commit-association-stats.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 6, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "47e7b4a15", + "time": 1781877117000, + "subject": "FN-6704: capture merge LOC for productivity analytics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-foreach-wiring.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 700, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "3ebaa321f", + "time": 1780606915000, + "subject": "fix(review): apply code-review fixes — runId/foreachNodeId wiring, worktree-leak cleanup, rework re-execution, instance pruning, SIGKILL fallback, type dedup, board memo split, agent-native field-schema context + fn_workflow_get", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-auto-prerebase.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 2 + }, + "durationMs": 1400, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 233.3, + "ageDays": 38, + "lastTouched": "2026-05-28", + "evidence": [ + { + "sha": "760690c58", + "time": 1779110452000, + "subject": "feat(FN-4958): complete Step 2 — add auto-prerebase helper module", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6b27ab5aa", + "time": 1780003298000, + "subject": "fix(FN-5627): default auto-prerebase to fire when branch >=1 commit behind", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "694970b2f", + "time": 1780005881000, + "subject": "fix(FN-5627): always rebase behind branches before squash (safety fallback)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PlanningModeModal.ui-interactions.test.tsx", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 6, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 3, + "testOnlyRatio": 0.273, + "signalTally": { + "added": 1, + "test+source": 7, + "test-only-churn": 3, + "churn-keyword": 2 + }, + "durationMs": 800, + "testCount": 24, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 228.6, + "ageDays": 52, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "6ea1fb01e", + "time": 1777940541000, + "subject": "feat(FN-3325): remove monolithic PlanningModeModal test file", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "efdc6c462", + "time": 1778630673000, + "subject": "feat(FN-4139): add swipe-back navigation to chat, mission, and planning flo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "08429a6f4", + "time": 1778678974000, + "subject": "feat(FN-4260): add SkillsView component styles and finalize dashboard test", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4ea43c0c8", + "time": 1780289946000, + "subject": "FN-5801: add markdown preview toggle for planning description", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d8b88f3f8", + "time": 1780537021000, + "subject": "test(dashboard): mock useToast in PlanningModeModal.ui-interactions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/goal-store-resolution.test.ts", + "package": "packages/cli", + "valueScore": -2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 225, + "ageDays": 24, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "7d1708f02", + "time": 1780382360000, + "subject": "FN-5851: fix goal tool store resolution", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "fab8a62b5", + "time": 1780883506000, + "subject": "FN-5977: expose goal retrieval tools across engine agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktree-init-stderr-surfacing.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix": 1 + }, + "durationMs": 900, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 225, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "594ec3e51", + "time": 1778992465000, + "subject": "test(FN-4834): complete Step 2 — add reliability init stderr regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "70728db09", + "time": 1778992465000, + "subject": "fix(FN-4834): align reliability fixture task fields with task typing", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/agent-import.test.ts", + "package": "packages/cli", + "valueScore": -2, + "positiveCount": 4, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 4, + "test-only-churn": 2, + "quarantine-ledger": 1 + }, + "durationMs": 200, + "testCount": 21, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 220, + "ageDays": 79, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "612827eee", + "time": 1775587298000, + "subject": "feat(FN-976): add companies.sh agent import for CLI and dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c1ccf9201", + "time": 1775657618000, + "subject": "feat(FN-1189): add Agent Companies import support", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c36d54b75", + "time": 1775669728000, + "subject": "feat(FN-1174): migrate agent import flow to agent companies format", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c26afccd0", + "time": 1776110130000, + "subject": "feat(FN-1451): complete Step 3 — align CLI hierarchy imports", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fb3915d75", + "time": 1776877338000, + "subject": "feat(FN-2233): merge fusion/fn-2233", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/soft-delete-resurrection-FN-5233.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 220, + "ageDays": 33, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "2d2e5b809", + "time": 1779581234000, + "subject": "feat(FN-5233): add tombstone recreate guard and allow-resurrection delete f", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/dashboard-overflow-containment.test.tsx", + "package": "packages/dashboard", + "valueScore": -2, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added": 1 + }, + "durationMs": 200, + "testCount": 7, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 220, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "df4939a65", + "time": 1781393428000, + "subject": "FN-6385: add dashboard overflow regression coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-migration.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 1100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 220, + "ageDays": 45, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "deff107d9", + "time": 1778507262000, + "subject": "feat(FN-3978): split monolithic TaskStore test suite into focused domain fi", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "72e94dddb", + "time": 1778597231000, + "subject": "feat(FN-4044): harden task ID collision guards and allocation safety", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "10455b799", + "time": 1779036670000, + "subject": "feat(FN-4898): reconcile task title-id drift in storage migrations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModalNodeRouting.test.tsx", + "package": "packages/dashboard", + "valueScore": 4.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 2 + }, + "durationMs": 1200, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 218.2, + "ageDays": 58, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "701feb8ea", + "time": 1777411556000, + "subject": "feat(FN-2845): streamline node routing configuration in dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3263babe1", + "time": 1777443814000, + "subject": "feat(FN-2729): merge fusion/fn-2729", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "883560776", + "time": 1777509266000, + "subject": "feat(FN-2970): merge fusion/fn-2970", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "567873bc0", + "time": 1777518905000, + "subject": "feat(FN-2959): merge fusion/fn-2959-2", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2a8e6574d", + "time": 1779237936000, + "subject": "test(dashboard): add fetchProjects to settings test ../../api mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a937bc6ab", + "time": 1781021457000, + "subject": "FN-6090: fix dashboard backfill test contracts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/plugin-loader.test.ts", + "package": "packages/core", + "valueScore": 21, + "positiveCount": 18, + "negativeCount": 8, + "neutralCount": 0, + "timesTouched": 26, + "testOnlyCount": 5, + "testOnlyRatio": 0.192, + "signalTally": { + "added-with-source": 1, + "test+source": 18, + "fix+source": 2, + "test-only-churn": 5, + "churn-keyword": 3 + }, + "durationMs": 4800, + "testCount": 96, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 218.2, + "ageDays": 77, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "f045c438c", + "time": 1775771132000, + "subject": "feat(FN-1111): merge fusion/fn-1111 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "695e90859", + "time": 1776351211000, + "subject": "feat(FN-1914): merge fusion/fn-1914", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bade52f5b", + "time": 1776618814000, + "subject": "feat(FN-2121): introduce structured logging in plugin loader", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c187c670e", + "time": 1776888085000, + "subject": "feat(FN-2255): add plugin runtime discovery contracts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8a0885ad4", + "time": 1777046065000, + "subject": "fix(FN-2392): normalize skill-facing tool references to fn_*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/code-node.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 1300, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 216.7, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "14758f8ed", + "time": 1780602283000, + "subject": "feat(engine): U12e+U14 — parse-steps node handler, plugin parser adapter, code node runner (esbuild + child-process harness)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6f7f6860b", + "time": 1780615010000, + "subject": "fix: address PR review feedback (#1424)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/CommandCenter.mobile-scroll.test.tsx", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 14, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 20, + "testOnlyCount": 5, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test+source": 14, + "test-only-churn": 5, + "churn-keyword": 2 + }, + "durationMs": 2600, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 216.7, + "ageDays": 8, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "98baddc3b", + "time": 1781736546000, + "subject": "FN-6595: fix mobile Command Center scrolling", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "cee24b8b8", + "time": 1781756990000, + "subject": "FN-6619: wire overview to analytics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2367918fd", + "time": 1781818687000, + "subject": "FN-6650: add Overview analytics charts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e14f33568", + "time": 1781819966000, + "subject": "FN-6651: fix Command Center in-progress count", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "504305e1c", + "time": 1781824732000, + "subject": "FN-6653: add GitHub issue analytics to Command Center", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "36f1feef3", + "time": 1781830328000, + "subject": "FN-6655: add Command Center team analytics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-base-commit-capture.real-git.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 1400, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 215.4, + "ageDays": 43, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "0d966aecf", + "time": 1778711314000, + "subject": "test(FN-4383): complete Step 3 — add real-git base commit capture regression", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a2b494ddc", + "time": 1778723081000, + "subject": "fix(FN-4417): stop false-positive branch contamination from stale baseCommitSha", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6fc0f5ceb", + "time": 1779144661000, + "subject": "feat(FN-5063): merge fusion/fn-5063", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-tools-github-tracking-end-to-end.test.ts", + "package": "packages/engine", + "valueScore": -1.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 215, + "ageDays": 38, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "9aa7518ba", + "time": 1779130003000, + "subject": "feat(FN-5057): merge fusion/fn-5057", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "000fa3d6b", + "time": 1779173400000, + "subject": "feat(FN-5102): complete Step 2 — prefill agent github tracking", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d240fb873", + "time": 1781034680000, + "subject": "FN-6108: mock gh auth in github-tracking engine tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/planning-skill-selection.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 210, + "ageDays": 8, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "0453a65bf", + "time": 1781755973000, + "subject": "FN-6613: inject skills into agent session lanes", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/bin.test.ts", + "package": "packages/cli", + "valueScore": 30, + "positiveCount": 31, + "negativeCount": 8, + "neutralCount": 0, + "timesTouched": 39, + "testOnlyCount": 6, + "testOnlyRatio": 0.154, + "signalTally": { + "added-with-source": 1, + "test+source": 32, + "churn-keyword": 3, + "test-only-churn": 6, + "quarantine-ledger": 1 + }, + "durationMs": 6500, + "testCount": 68, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 209.7, + "ageDays": 85, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "07adb42d6", + "time": 1775081218000, + "subject": "feat(KB-503): merge kb/kb-503", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b5980ebbb", + "time": 1775626138000, + "subject": "feat(FN-1080): add node management APIs and CLI commands", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "750911a80", + "time": 1775634273000, + "subject": "feat(FN-1085): align agent routing and runtime contracts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ecf0eb6d8", + "time": 1775637605000, + "subject": "feat(FN-1073): add desktop CLI workflow and packaging support", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "eac3f1c6a", + "time": 1775665616000, + "subject": "feat(FN-1225): add headless fn serve command with health checks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/archive-db-fts-maintenance.test.ts", + "package": "packages/core", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 205, + "ageDays": 17, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "2fd214b4f", + "time": 1780939996000, + "subject": "FN-5975: extend archive FTS maintenance coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ae1a889d4", + "time": 1781339022000, + "subject": "FN-6325: speed up core stability tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "61c29cc6b", + "time": 1781987078000, + "subject": "Reduce SQLite read contention: bound WAL growth + release vacuum lock", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-pr-merged-transition.test.ts", + "package": "packages/core", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 205, + "ageDays": 39, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "102893cba", + "time": 1779045111000, + "subject": "feat(FN-4762): complete Step 1 — core PR merge transition support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4ffd0a2dd", + "time": 1780952057000, + "subject": "FN-6030: fix workflow terminal notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-step-migration.test.ts", + "package": "packages/core", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 205, + "ageDays": 21, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "d8ff8db75", + "time": 1780637605000, + "subject": "feat(core,dashboard): lazy idempotent legacy-step migration into workflow templates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "563cb5b37", + "time": 1780692965000, + "subject": "Address PR review feedback (#1433)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-skills.test.ts", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "churn-keyword": 4, + "added-with-source": 1, + "fix+source": 2, + "test+source": 3, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 39, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 205, + "ageDays": 73, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "cc0495add", + "time": 1776130252000, + "subject": "feat(FN-1506): add skills registry and configuration API", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "3d3b3f90a", + "time": 1776380100000, + "subject": "fix(FN-1966): use public skills search fallback for catalog fetches", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "5499405fc", + "time": 1776546587000, + "subject": "feat(FN-1986): improve skills content loading and mobile detail UX", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "17339046e", + "time": 1777146032000, + "subject": "fix(FN-2510): harden skills catalog fallback for short and invalid queries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "641267c2d", + "time": 1777151968000, + "subject": "chore: clear pre-existing lint warnings", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5c4c76513", + "time": 1780450193000, + "subject": "FN-5904: feat(FN-5904): add browse-and-install flow for skills.sh catalog in Skills view", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/project-engine-manager.test.ts", + "package": "packages/engine", + "valueScore": -0.5, + "positiveCount": 8, + "negativeCount": 7, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 1, + "testOnlyRatio": 0.067, + "signalTally": { + "added-with-source": 1, + "test+source": 11, + "churn-keyword": 6, + "fix": 1, + "test-only-churn": 1, + "fix+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 200, + "testCount": 41, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 205, + "ageDays": 73, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "35abc4188", + "time": 1776112265000, + "subject": "feat(FN-1626): merge fusion/fn-1626", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ba5198b81", + "time": 1776112358000, + "subject": "refactor: replace primary/secondary engine pattern with uniform ProjectEngineManager", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "75a957c12", + "time": 1776128619000, + "subject": "feat(engine): add background project engine reconciliation + global concurrency setting", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4e38c5f7d", + "time": 1776129691000, + "subject": "feat(FN-1719): rebuild eslint baseline and add memory lessons", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "f83d3483a", + "time": 1776308002000, + "subject": "feat(FN-1733): add dedicated pause/resume APIs for projects", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6a6cb07d2", + "time": 1778285059000, + "subject": "feat(FN-3508): resolve node-specific working dirs and align runtime surfaces", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/paperclip-runtime-e2e.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 59, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3c387444d", + "time": 1777316311000, + "subject": "test(FN-2712): add runtime e2e and integration coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ce54a0d82", + "time": 1778221265000, + "subject": "feat(FN-3182): scope plugin installs globally with project enablement", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/cross-node-assignment-wake.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 40, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "1aeb07008", + "time": 1778993598000, + "subject": "test(FN-4824): reliability-interaction coverage for cross-node assignment wakes", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/auto-merge-toggle-blank.mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 2, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "fix": 2, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 300, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 22, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "419f688af", + "time": 1780518017000, + "subject": "FN-5936: fix auto-merge board stabilization on mobile", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "66f1db122", + "time": 1780639378000, + "subject": "Fix quality-backfill suites broken by fast-tests x workflow-columns merge race", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5d4733e05", + "time": 1780658361000, + "subject": "fix(ci): align engine/schema test stubs with cli-agent surface", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/stranded-refinements.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 400, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "2626f6170", + "time": 1778912902000, + "subject": "test(FN-4663): add stranded refinement route and store coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/activity-log-no-op-moved.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 600, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "1761a7ffd", + "time": 1780518017000, + "subject": "FN-5940: stop logging no-op task:moved activity rows", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/goal-store.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 600, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 28, + "lastTouched": "2026-05-28", + "evidence": [ + { + "sha": "2a3535893", + "time": 1779989536000, + "subject": "feat(FN-5622): add goals REST API with store accessor and route handlers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/near-duplicate-stale-flag-clear.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 600, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 11, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "4f7b3ac78", + "time": 1781476175000, + "subject": "FN-6439: clear stale near-duplicate flags", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/soft-delete-audit-and-column.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 600, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "c9fd41ef2", + "time": 1779270409000, + "subject": "feat(FN-5175): thread soft-delete audit context and add reconciliation scri", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PluginManager.registry.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 600, + "testCount": 17, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 17, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "f8200adb7", + "time": 1781004473000, + "subject": "FN-6071: add plugin registry browsing and install actions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4f8bb3177", + "time": 1781012593000, + "subject": "FN-6074: add plugin registry QA coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b846027cb", + "time": 1781013605000, + "subject": "FN-6077: add plugin registry category filter", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useChatRooms.cache.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 600, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 36, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "e96cb0998", + "time": 1779334031000, + "subject": "feat(FN-5388): add warm room cache hydration with open diagnostics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useDevServerLogs.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 600, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 66, + "lastTouched": "2026-04-20", + "evidence": [ + { + "sha": "99cafa3a4", + "time": 1776724652000, + "subject": "feat(FN-2170): add dev-server preview detection and log viewer flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/merge-request-cancel-on-hard-cancel.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 600, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 26, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "c9b159f4e", + "time": 1780199296000, + "subject": "FN-5743: cut over merge dequeue authority to merge-request queue", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/reap-unregistered-orphans-defers-active-session.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 600, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "bed14fda7", + "time": 1779138982000, + "subject": "feat(FN-5065): merge fusion/fn-5065", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/devserver-detect.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 700, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 66, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "e24c87866", + "time": 1776750326000, + "subject": "feat(FN-2183): add dev server management modules", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b2a82328f", + "time": 1776890813000, + "subject": "feat(FN-2186): merge fusion/fn-2186", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "caa773cb9", + "time": 1777233656000, + "subject": "feat(FN-2606): merge fusion/fn-2606 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-instructions-bundle.test.ts", + "package": "packages/core", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 2 + }, + "durationMs": 800, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 79, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "9fa033b1e", + "time": 1775647880000, + "subject": "feat(FN-1170): add instruction bundle support to AgentStore", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "327775136", + "time": 1776121505000, + "subject": "feat(FN-1692): merge fusion/fn-1692", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7cb9fd61b", + "time": 1776618813000, + "subject": "Remove dashboard-load timing instrumentation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a29bc688a", + "time": 1777262191000, + "subject": "test(core,dashboard): expand in-memory SQLite to more store tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a34c81951", + "time": 1777665257000, + "subject": "feat(FN-3033): align agent asset directory naming and heartbeat path compat", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-tools-github-tracking.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 800, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 39, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "e33159e91", + "time": 1779102111000, + "subject": "feat(FN-4919): merge fusion/fn-4919", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9aa7518ba", + "time": 1779130003000, + "subject": "feat(FN-5057): merge fusion/fn-5057", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "000fa3d6b", + "time": 1779173400000, + "subject": "feat(FN-5102): complete Step 2 — prefill agent github tracking", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cc6bd1e72", + "time": 1779173400000, + "subject": "feat(FN-5102): complete Step 4 and 5 — verify and document", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-github-tracking-reconcile.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 900, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 33, + "lastTouched": "2026-06-01", + "evidence": [ + { + "sha": "41727cd3b", + "time": 1779596384000, + "subject": "feat(FN-5577): add github-tracking reconciler for deleted archived tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ffadb0c77", + "time": 1780273406000, + "subject": "FN-5792: fix GitHub auto-close reconciliation for soft-deleted tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-step-instances.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 900, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "0a3cc50f6", + "time": 1780599045000, + "subject": "feat(core): U4-core — schema v108 (workflow_run_step_instances + tasks.customFields), instance CRUD trio, literal sweep", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a5023e028", + "time": 1780599809000, + "subject": "feat(core): U11 — custom task fields validation authority, orphan-not-delete reconciliation, coerce gate", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentDetailView.logs-tasks-runs.test.tsx", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 1000, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 44, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "d98c053ed", + "time": 1778597230000, + "subject": "feat(FN-4088): split AgentDetailView tests into seven focused suites with s", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "8539a3dec", + "time": 1778737289000, + "subject": "feat(FN-4388): complete remaining observability surfaces", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6b2607dae", + "time": 1778758363000, + "subject": "feat(FN-4400): complete Step 7 — add prompt-size api and dashboard sparkline", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/base-commit-capture.real-git.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 1200, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "68e52e3c3", + "time": 1780525443000, + "subject": "fix(engine): capture baseCommitSha against local main, not origin/main", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useCurrentProject.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 5, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 4, + "testOnlyRatio": 0.444, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 3, + "test-only-churn": 4 + }, + "durationMs": 1300, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 86, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "f88611b07", + "time": 1775031344000, + "subject": "feat(KB-502): add dashboard multi-project hooks and project API routes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f3311d5aa", + "time": 1775359824000, + "subject": "fix(FN-949): prevent bounce-back on Projects nav and show in mobile overflow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85a1adbd0", + "time": 1776903147000, + "subject": "feat(FN-2269): migrate dashboard session selection to global settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5dd75dcf0", + "time": 1778884928000, + "subject": "test(FN-4677): regression tests for transient poll omission vs real removal", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a3d25ce8c", + "time": 1778890623000, + "subject": "test(FN-4693): complete Step 3 — cover transient poll-drop debounce cases", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useChatRooms.test.ts", + "package": "packages/dashboard", + "valueScore": 6, + "positiveCount": 11, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 17, + "testOnlyCount": 5, + "testOnlyRatio": 0.294, + "signalTally": { + "added-with-source": 1, + "test+source": 10, + "fix+source": 1, + "test-only-churn": 5, + "churn-keyword": 3 + }, + "durationMs": 1400, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 47, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "2278ceff3", + "time": 1778358107000, + "subject": "feat(FN-3879): add chat room management in ChatView", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1cb961bec", + "time": 1778507262000, + "subject": "feat(FN-3981): document room message resync contract and reproduce reply vi", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f6c4c688", + "time": 1778537920000, + "subject": "feat(FN-3959): add heartbeat timer registration repair sweep", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6e44e1bb5", + "time": 1778537956000, + "subject": "fix(chat): restore room message visibility and responders", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e95515b48", + "time": 1778543461000, + "subject": "feat(FN-4040): add optimistic room send with failure handling and reconcili", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "192b6e808", + "time": 1778837010000, + "subject": "test(FN-4583): complete Step 5 — cover newest room message window fetch", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-permissions.test.ts", + "package": "packages/dashboard", + "valueScore": 6, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 1400, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 79, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "1c17cfaa6", + "time": 1775637555000, + "subject": "feat(FN-1122): add agent permission access APIs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "070ad2815", + "time": 1779169671000, + "subject": "feat(FN-5060): complete Step 7 — testing and verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-selection-store.test.ts", + "package": "packages/core", + "valueScore": 8.5, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 1900, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 22, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "47a42994e", + "time": 1780504248000, + "subject": "feat(core): per-task workflow selection + project default (U3)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "eb67d0821", + "time": 1780533132000, + "subject": "Address PR review feedback (#1363)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ef33d79e7", + "time": 1780642044000, + "subject": "feat(core,dashboard): workflow-centric task creation with atomic workflowId materialization", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c0af47db0", + "time": 1781805672000, + "subject": "FN-6643: harden workflow selection rejection coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ab8c8beb4", + "time": 1782091554000, + "subject": "feat(FN-6880): resolve optional-step toggles + seeding from optional-group nodes (U3)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a38acaf86", + "time": 1782095322000, + "subject": "fix(FN-6880): pass optional-group toggle ids through enable resolution (review P1)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ThemeDropdown.test.tsx", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 2 + }, + "durationMs": 2400, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 6, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "5145e609c", + "time": 1781912853000, + "subject": "FN-6727: add Command Center operator controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "19d60480d", + "time": 1782038456000, + "subject": "FN-6826: elevate the theme dropdown when open", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "58f758842", + "time": 1782083634000, + "subject": "FN-6816: add shadcn custom color picker", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4fd8d444f", + "time": 1782177666000, + "subject": "fix(dashboard): polish app chrome and workflow defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f9043d733", + "time": 1782182930000, + "subject": "fix(dashboard): polish workflow and chrome defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/ai-session-store.test.ts", + "package": "packages/dashboard", + "valueScore": 12, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "fix+source": 3, + "test+source": 2 + }, + "durationMs": 2600, + "testCount": 28, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 78, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "bf141c47d", + "time": 1775697216000, + "subject": "test(FN-1156): add AI session lifecycle and reconnect coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "99493481f", + "time": 1777658273000, + "subject": "fix(dashboard): return authoritative archived state and cover ai-session archive", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "139b55203", + "time": 1777666087000, + "subject": "fix: persist session banner dismissals and add hide-banner setting", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2f13a31e1", + "time": 1777762589000, + "subject": "feat(dashboard): add draft planning sessions with debounced auto-creation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "23fc5a0fc", + "time": 1777775170000, + "subject": "feat(FN-3229): add async planning draft sync to avoid blocking while typing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/automation-store.test.ts", + "package": "packages/core", + "valueScore": 14, + "positiveCount": 9, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 12, + "testOnlyCount": 2, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "test-only-churn": 2, + "churn-keyword": 1, + "fix+source": 2, + "fix": 1 + }, + "durationMs": 3000, + "testCount": 66, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 200, + "ageDays": 87, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "4c38950e5", + "time": 1774913243000, + "subject": "feat(KB-045): add scheduled tasks automation system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7569af8a9", + "time": 1774959270000, + "subject": "feat(KB-229): add multi-step scheduled tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1c788455f", + "time": 1774987474000, + "subject": "feat(KB-310): migrate storage layer to SQLite with WAL mode and auto-migration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "57f34d193", + "time": 1775012425000, + "subject": "feat(KB-336): rename data directory from .kb to .fusion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "08a0d7157", + "time": 1776295936000, + "subject": "feat(FN-1715): add scope-aware automation and routine scheduling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7fde8009d", + "time": 1776321225000, + "subject": "test(FN-1742): add scope regression tests for routines and automations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/group-merge-coordinator.test.ts", + "package": "packages/engine", + "valueScore": 23, + "positiveCount": 10, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix+source": 5 + }, + "durationMs": 4700, + "testCount": 33, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 195.8, + "ageDays": 25, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "0c425788c", + "time": 1780260623000, + "subject": "FN-5782: wire branch groups into merge routing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7b70e7fb7", + "time": 1780268399000, + "subject": "FN-5788: add group promotion gate to merge coordinator", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3373c0bee", + "time": 1780317541000, + "subject": "FN-5830: re-land shared branch promotion gate and API", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e56129017", + "time": 1780370377000, + "subject": "FN-5846: route shared-group member finalization to shared branch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "88b4b0d5b", + "time": 1780503824000, + "subject": "fix(FN-branch-group): unify landed/completion predicate in core (U2)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "508b9c44d", + "time": 1780505214000, + "subject": "fix(FN-branch-group): add engine.promoteBranchGroup bridge method (U4)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-store.test.ts", + "package": "packages/core", + "valueScore": 68, + "positiveCount": 47, + "negativeCount": 6, + "neutralCount": 2, + "timesTouched": 55, + "testOnlyCount": 2, + "testOnlyRatio": 0.036, + "signalTally": { + "added": 1, + "test+source": 44, + "churn-keyword": 7, + "fix+source": 8, + "test-only-churn": 2 + }, + "durationMs": 13400, + "testCount": 199, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 194.2, + "ageDays": 85, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "59b95804f", + "time": 1775062841000, + "subject": "test(FN-704): add comprehensive AgentStore test suite", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a32b9508c", + "time": 1775349631000, + "subject": "feat(FN-940): allow terminated agents to restart as active or running", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4c04a7102", + "time": 1775350567000, + "subject": "feat(FN-942): add resetAgent method and allow terminated→idle transition", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fb7edec4d", + "time": 1775602509000, + "subject": "feat(FN-1061): add heartbeat trigger scheduling for agent wakeup", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "51152a7b5", + "time": 1775629946000, + "subject": "feat(FN-1119): add agent API key management APIs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "750911a80", + "time": 1775634273000, + "subject": "feat(FN-1085): align agent routing and runtime contracts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.attachments-and-tabs.test.tsx", + "package": "packages/dashboard", + "valueScore": 13, + "positiveCount": 10, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 3, + "testOnlyRatio": 0.231, + "signalTally": { + "added": 1, + "test+source": 8, + "test-only-churn": 3, + "fix+source": 1 + }, + "durationMs": 2700, + "testCount": 37, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 192.9, + "ageDays": 50, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "ed52c3dff", + "time": 1778108228000, + "subject": "test(FN-3591): split TaskDetailModal coverage into focused test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ecbf1f829", + "time": 1778221265000, + "subject": "feat(FN-3276): add task review tab with metadata persistence and desktop la", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "08429a6f4", + "time": 1778678974000, + "subject": "feat(FN-4260): add SkillsView component styles and finalize dashboard test", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "aa64643cf", + "time": 1779841174000, + "subject": "feat(FN-5589): merge fusion/fn-5589", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9969b0779", + "time": 1779983109000, + "subject": "feat(FN-5619): expand PR notice block padding", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4bd6024ef", + "time": 1781283608000, + "subject": "FN-6300: add live task chat tab", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/migration-workflow-columns.test.ts", + "package": "packages/core", + "valueScore": 11, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 3 + }, + "durationMs": 2300, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 191.7, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "60605fafa", + "time": 1780564428000, + "subject": "feat(core): workflowColumns integrity pass, graduation report, server-side trait validation, plugin post-commit hooks, docs + changeset (U12)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "30e2fd7b0", + "time": 1780566654000, + "subject": "fix(review): apply autofix feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "45ce18954", + "time": 1780582481000, + "subject": "fix(core): transitionPending recovery sweep, flag-off evacuation, recoveryRehome on self-healing moves (#1401 #1409 #1411)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "cfc9bb5fd", + "time": 1780583642000, + "subject": "fix(core): shared workflow-IR resolver, prod branch persistence + pruning, latest-run JOIN, sweep reservation-leak fix (#1402 #1407 #1412 #1413)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/reclaim-defers-on-in-flight-executor.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 1100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 183.3, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "287673c26", + "time": 1779068268000, + "subject": "fix(FN-4949): defer stale active branch reclaim during live executor work", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-custom-workflow-recovery.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 1100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 183.3, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "45ce18954", + "time": 1780582481000, + "subject": "fix(core): transitionPending recovery sweep, flag-off evacuation, recoveryRehome on self-healing moves (#1401 #1409 #1411)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/soft-delete-agent-logs.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 800, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 177.8, + "ageDays": 36, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "321c170b9", + "time": 1779295360000, + "subject": "feat(FN-5143): clear agent logs when task is soft-deleted", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d72cb2ab2", + "time": 1780474218000, + "subject": "FN-5911: move agent logs to per-task JSONL storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/openclaw-runtime-e2e.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added": 1, + "fix+source": 1, + "test-only-churn": 2, + "test+source": 1 + }, + "durationMs": 800, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 177.8, + "ageDays": 59, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "3c387444d", + "time": 1777316311000, + "subject": "test(FN-2712): add runtime e2e and integration coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6e65786bc", + "time": 1777353474000, + "subject": "fix(plugins): re-export probe symbols + declare plugin deps in dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "836ca6807", + "time": 1778202018000, + "subject": "feat(FN-3717): add OpenClaw MCP bridge (+5 more)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ce54a0d82", + "time": 1778221265000, + "subject": "feat(FN-3182): scope plugin installs globally with project enablement", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/ai-merge-cleanup-enoent-idempotent.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 800, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 177.8, + "ageDays": 14, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "94c3cce7b", + "time": 1781226885000, + "subject": "FN-6257: make AI merge cleanup idempotent for absent worktrees", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "921861355", + "time": 1782195508000, + "subject": "FN-6949: fix auto-merge lifecycle finalization", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.create-pr-integration.test.tsx", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 600, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 171.4, + "ageDays": 37, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "78501fe25", + "time": 1779245263000, + "subject": "feat(FN-5145): hoist PR modal and add create-PR wiring integration tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aa64643cf", + "time": 1779841174000, + "subject": "feat(FN-5589): merge fusion/fn-5589", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0c53f46af", + "time": 1782401684000, + "subject": "FN-6983: remove branch reattachment warning", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/post-finalize-verification-noop.real-git.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 1100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 169.2, + "ageDays": 39, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "300bc233c", + "time": 1779064786000, + "subject": "feat(FN-4944): add post-finalize verification guard to prevent regressions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "29ac58f8d", + "time": 1780019423000, + "subject": "feat(FN-5633): standalone AI merge path (clean-room merge + AI reviewer)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c89ad28e7", + "time": 1780041317000, + "subject": "FN-5646: preserve AI body when canonicalizing merge commits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a6252e518", + "time": 1782093486000, + "subject": "refactor(merger): unify on runAiMerge as the sole merge path (U0)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7240b77c6", + "time": 1782094795000, + "subject": "fix(review): harden R7 workspace merge guard + deprecation warning (U0)", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useTaskDiffStats.test.ts", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "churn-keyword": 1, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 1600, + "testCount": 30, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 168.4, + "ageDays": 82, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "1d1737c9c", + "time": 1775359115000, + "subject": "feat(FN-950): add useTaskDiffStats hook for consistent done file count in TaskCard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3870d0c9d", + "time": 1775843088000, + "subject": "feat(FN-1544): add viewport-gated loading and lightweight memo comparison", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ca296aa63", + "time": 1775922759000, + "subject": "feat(FN-1433): wire prompt overrides into mission interview service", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "ebb848c9d", + "time": 1775932052000, + "subject": "feat(FN-1584): add step-change dependency and polling to useTaskDiffStats", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d5be0dbe6", + "time": 1778689689000, + "subject": "fix(FN-4308): complete Step 7 — fetch done task diff stats without commit SHA gate", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a5678527d", + "time": 1778792672000, + "subject": "feat(FN-4521): complete Step 3 — unify active diff data source", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/ci-workflow.test.ts", + "package": "packages/cli", + "valueScore": -13.5, + "positiveCount": 8, + "negativeCount": 25, + "neutralCount": 0, + "timesTouched": 33, + "testOnlyCount": 25, + "testOnlyRatio": 0.758, + "signalTally": { + "added": 1, + "test-only-churn": 25, + "fix": 3, + "test+source": 3, + "fix+source": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 58, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 167.5, + "ageDays": 92, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "0b7e8e874", + "time": 1774500065000, + "subject": "feat(HAI-077): add CI/CD workflows for PRs, releases, and manual testing", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "7deca373f", + "time": 1774500600000, + "subject": "feat(HAI-079): add cross-platform matrix builds for release workflows", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d37f88755", + "time": 1774501396000, + "subject": "feat(HAI-080): add code signing for macOS and Windows release binaries", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d616273a7", + "time": 1774579451000, + "subject": "fix(HAI-107): fix CI failures by adding root test script and fixing checksum test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "a7a9e985e", + "time": 1774579451000, + "subject": "feat(HAI-108): remove binary builds and configure npm publishing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fe36567e3", + "time": 1774579451000, + "subject": "feat(HAI-110): enable npm provenance attestation in version workflow", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/vitest-teardown-worker-root-cleanup.test.ts", + "package": "packages/core", + "valueScore": -13.5, + "positiveCount": 0, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "churn-keyword": 3, + "added": 1, + "test-only-churn": 2, + "test+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": true, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 167.5, + "ageDays": 12, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "10972bbdc", + "time": 1781363506000, + "subject": "FN-6360: clean up leaked test worker temp roots", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "80fbcdd5a", + "time": 1781393428000, + "subject": "FN-6396: harden test worker temp cleanup", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2fc6d4d66", + "time": 1781476175000, + "subject": "FN-6430: rescue CLI quarantine tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "c4878514f", + "time": 1781749145000, + "subject": "FN-6600: harden core worker-root teardown retries", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/skills.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 500, + "testCount": 22, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 166.7, + "ageDays": 70, + "lastTouched": "2026-04-16", + "evidence": [ + { + "sha": "2122aee46", + "time": 1776353921000, + "subject": "feat(FN-1908): merge fusion/fn-1908", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/legacy-automerge-stamp-reconcile.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 500, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 166.7, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "bffae81a9", + "time": 1781352365000, + "subject": "FN-6277: track and reconcile legacy auto-merge stamps", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-source-metadata-patch.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 500, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 166.7, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "9eb10fca7", + "time": 1779116541000, + "subject": "feat(FN-4899): complete Step 2 — support source metadata patches", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-workflow-steps.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added": 1, + "test+source": 2, + "test-only-churn": 2 + }, + "durationMs": 500, + "testCount": 58, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 166.7, + "ageDays": 45, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "ac6aaca2c", + "time": 1778507262000, + "subject": "feat(FN-3982): split monolithic store.test.ts into archive-search, run-muta", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9992ea018", + "time": 1778730438000, + "subject": "feat(FN-4150): complete Step 2 — preserve plugin workflow step mode metadata", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e7785bee5", + "time": 1778768505000, + "subject": "feat(FN-4368): complete Step 6 — workflow defaults and schema v73 assertions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "324cfdb89", + "time": 1778784261000, + "subject": "test(FN-4497): update workflow step defaults and explicit gate opt-in coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "139e25fcf", + "time": 1778995197000, + "subject": "feat(FN-4837): complete Step 2 — migrate store tests to shared harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.pr-tab.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 500, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 166.7, + "ageDays": 30, + "lastTouched": "2026-05-27", + "evidence": [ + { + "sha": "aa64643cf", + "time": 1779841174000, + "subject": "feat(FN-5589): merge fusion/fn-5589", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/fts-maintenance-archive.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 500, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 166.7, + "ageDays": 17, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "2fd214b4f", + "time": 1780939996000, + "subject": "FN-5975: extend archive FTS maintenance coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/fts-maintenance.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 500, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 166.7, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "294209f64", + "time": 1780883506000, + "subject": "FN-5943: maintain tasks FTS5 indexes automatically", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktree-stale-lock-recovery.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 500, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 166.7, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "27dd92721", + "time": 1778990079000, + "subject": "feat(FN-4830): complete Steps 4-7 stale lock recovery delivery", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/__tests__/resume-coordinator.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 500, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 166.7, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "10acf17c6", + "time": 1780643774000, + "subject": "feat(engine): cli-agent resume coordinator and self-healing integration (U8)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-tasks-ops.test.ts", + "package": "packages/dashboard", + "valueScore": 16.5, + "positiveCount": 23, + "negativeCount": 13, + "neutralCount": 1, + "timesTouched": 37, + "testOnlyCount": 4, + "testOnlyRatio": 0.108, + "signalTally": { + "added": 1, + "churn-keyword": 11, + "test+source": 29, + "fix+source": 3, + "test-only-churn": 4 + }, + "durationMs": 2900, + "testCount": 178, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 165.7, + "ageDays": 54, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "37954f356", + "time": 1777882843000, + "subject": "feat(FN-3349): add in-review retry mechanism and delivery docs", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c0a2adf51", + "time": 1778230808000, + "subject": "fix(FN-3716): stabilize verification and role policy checks", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "95f6cd845", + "time": 1778415626000, + "subject": "feat(FN-3875): add GitHub tracking auth resolver and forced client auth mod", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cedf07c1f", + "time": 1778452449000, + "subject": "feat(FN-3953): enable tracking issue creation on task edit and document the", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "76c00fbad", + "time": 1778455395000, + "subject": "feat(FN-3939): audit and patch PR #59 residual defects, add retry parity an", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/in-progress-limbo-recovery.test.ts", + "package": "packages/engine", + "valueScore": 7, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "fix": 1 + }, + "durationMs": 1300, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 162.5, + "ageDays": 36, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "1a4525e0b", + "time": 1779280079000, + "subject": "feat(FN-5219): detect and recover in-progress limbo tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a8715ed96", + "time": 1779416127000, + "subject": "fix(FN-5335): enforce triple-proof gating for backward recovery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0257bdf9d", + "time": 1780595807000, + "subject": "fix(ci): align tests/docs with issue-fix commits (recoveryRehome args, pi-ai mock Unknown/Record, new agent tools doc, hex-pattern comment reword)", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/session-persistence-roundtrip.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 6, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 11, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 8, + "churn-keyword": 5, + "fix+source": 2 + }, + "durationMs": 800, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 160, + "ageDays": 78, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "bf141c47d", + "time": 1775697216000, + "subject": "test(FN-1156): add AI session lifecycle and reconnect coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9044fbc5a", + "time": 1778453403000, + "subject": "feat(FN-3954): restore scoped mission interview persistence and resume", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "236bfeeab", + "time": 1779240378000, + "subject": "fix(dashboard): plumb TaskStore through mission-interview rehydration", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/productivity-analytics.test.ts", + "package": "packages/core", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 1200, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 160, + "ageDays": 10, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "53bb1d8f3", + "time": 1781576865000, + "subject": "feat(analytics): U2 — core date-range aggregators (tokens/tools/activity/productivity)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "47e7b4a15", + "time": 1781877117000, + "subject": "FN-6704: capture merge LOC for productivity analytics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "59d3eee7f", + "time": 1781912854000, + "subject": "FN-6721: estimate productivity hours saved", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "511794437", + "time": 1781915135000, + "subject": "FN-6720: add productivity task duration stats", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-github.test.ts", + "package": "packages/dashboard", + "valueScore": 11.5, + "positiveCount": 15, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 21, + "testOnlyCount": 3, + "testOnlyRatio": 0.143, + "signalTally": { + "added": 1, + "churn-keyword": 4, + "test-only-churn": 3, + "test+source": 17 + }, + "durationMs": 2000, + "testCount": 96, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 160, + "ageDays": 54, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "4b6c11ff0", + "time": 1777925877000, + "subject": "docs(FN-3293): finalize stabilization audit documentation", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "f85b12412", + "time": 1778167635000, + "subject": "test(FN-000): resolve dashboard test noise", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ecbf1f829", + "time": 1778221265000, + "subject": "feat(FN-3276): add task review tab with metadata persistence and desktop la", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cea0f6f6c", + "time": 1778261782000, + "subject": "feat(FN-3277): add review tab reviewState persistence and enriched UI state", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "04ff9d940", + "time": 1778265386000, + "subject": "feat(FN-3278): add direct-mode review tab to task detail modal", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/dashboard-tui/__tests__/app.test.tsx", + "package": "packages/cli", + "valueScore": 21.5, + "positiveCount": 25, + "negativeCount": 11, + "neutralCount": 1, + "timesTouched": 37, + "testOnlyCount": 8, + "testOnlyRatio": 0.216, + "signalTally": { + "added-with-source": 1, + "test+source": 21, + "test-only-churn": 8, + "fix+source": 3, + "fix": 4, + "churn-keyword": 7 + }, + "durationMs": 3600, + "testCount": 45, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 160, + "ageDays": 62, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "a283ef2b7", + "time": 1777084760000, + "subject": "feat(cli): merge @fusion/tui into fn dashboard with Ink TUI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "314f8accc", + "time": 1777085208000, + "subject": "feat(cli): default focus to logs panel and tighten splash + log row layout", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2a8ca04d9", + "time": 1777086461000, + "subject": "feat(cli): TUI grid threshold, narrow agents view, new-task popup, browser launch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "baaaaf2a2", + "time": 1777090115000, + "subject": "feat(FN-2395): style settings panel scrollbars", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1d1f1f0da", + "time": 1777096484000, + "subject": "feat(FN-2408): merge fusion/fn-2408", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5c0809cba", + "time": 1777098765000, + "subject": "feat(tui): git view, project-scoped task stats, polished layout/theme", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/onboarding-flow.test.tsx", + "package": "packages/dashboard", + "valueScore": 24, + "positiveCount": 13, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 8, + "fix+source": 3, + "fix": 1 + }, + "durationMs": 4000, + "testCount": 41, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 160, + "ageDays": 69, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "da229a29d", + "time": 1776441687000, + "subject": "feat(FN-1999): merge fusion/fn-1999", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1b3d9cb90", + "time": 1776967204000, + "subject": "feat(FN-2317): merge fusion/fn-2317", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d3c9476ce", + "time": 1776974150000, + "subject": "feat(FN-2318): merge fusion/fn-2318", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7529d7a7e", + "time": 1777046065000, + "subject": "fix(FN-2404): scope onboarding first-task creation to active project", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d6c8f1118", + "time": 1777048696000, + "subject": "fix(FN-2444): polish node dashboard UX and discovery core handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f2ead692e", + "time": 1777059348000, + "subject": "feat(FN-2451): enforce connected-first AI onboarding provider order", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx", + "package": "packages/dashboard", + "valueScore": 65, + "positiveCount": 52, + "negativeCount": 12, + "neutralCount": 1, + "timesTouched": 65, + "testOnlyCount": 7, + "testOnlyRatio": 0.108, + "signalTally": { + "added-with-source": 1, + "test+source": 42, + "fix": 3, + "test-only-churn": 7, + "churn-keyword": 10, + "fix+source": 12, + "quarantine-ledger": 1 + }, + "durationMs": 10500, + "testCount": 159, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 159.1, + "ageDays": 22, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "d071aecda", + "time": 1780505126000, + "subject": "feat(dashboard): visual graph node editor for workflows (U6, U7)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e5a0a199e", + "time": 1780562811000, + "subject": "feat(dashboard): node editor authors columns, traits, hold and split/join nodes with inline validation (U10)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "ad5cd579b", + "time": 1780599045000, + "subject": "feat(dashboard): U8 — node editor authoring for foreach/step-review/parse-steps/code, rework edge inspector, template round-trip", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "021409d44", + "time": 1780608893000, + "subject": "test(dashboard): regression tests for stepwise builtin editor render path (foreach group + template children + rework edges)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "86867c57b", + "time": 1780613489000, + "subject": "fix(ci): deflake seam-in-branch badge test — wait for graph hydration before Save, extend badge waitFor timeout", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/CustomProviderForm.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 700, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 155.6, + "ageDays": 57, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "567873bc0", + "time": 1777518905000, + "subject": "feat(FN-2959): merge fusion/fn-2959-2", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a487a20bb", + "time": 1778684712000, + "subject": "feat: auto-detect models from custom providers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useSetupReadiness.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 700, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 155.6, + "ageDays": 70, + "lastTouched": "2026-04-20", + "evidence": [ + { + "sha": "e30bd2e24", + "time": 1776426388000, + "subject": "feat(FN-1941): surface setup readiness warnings in task entry flows", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1015365ca", + "time": 1776705373000, + "subject": "feat(FN-2189): include gh CLI auth in setup readiness", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/self-healing-interactions.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 700, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 155.6, + "ageDays": 43, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "c7f8d3821", + "time": 1778735321000, + "subject": "test(FN-4361): add reliability interaction backstop suite", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "c11389a75", + "time": 1778825927000, + "subject": "test(FN-4564): complete Step 3 — add self-healing rebound coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d88e1bd14", + "time": 1778827285000, + "subject": "feat(FN-4565): align self-healing assertion with FN-4563 unusable-worktree", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ebd0be13d", + "time": 1778874701000, + "subject": "feat(FN-4651): complete Step 3 — recover no-progress worktree failures", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a8715ed96", + "time": 1779416127000, + "subject": "fix(FN-5335): enforce triple-proof gating for backward recovery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pi-layers-wiring.test.ts", + "package": "packages/engine", + "valueScore": 10, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2, + "fix+source": 2 + }, + "durationMs": 1700, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 154.5, + "ageDays": 46, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "616e3c7ec", + "time": 1778443412000, + "subject": "test(engine): improve coverage for prompt layers wiring, backward compat, and skill scoping", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5f5852db8", + "time": 1781019800000, + "subject": "fix(FN-6085): accept canonical merge worktree paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ccd44b77f", + "time": 1781020308000, + "subject": "fix(FN-6085): canonicalize merge worktree boundaries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useResearch.test.ts", + "package": "packages/dashboard", + "valueScore": 7.5, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 2, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "test-only-churn": 2 + }, + "durationMs": 1300, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 152.9, + "ageDays": 57, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "c5f35ab34", + "time": 1777545801000, + "subject": "feat(FN-2994): merge fusion/fn-2994", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d4c534a8d", + "time": 1777793855000, + "subject": "feat(FN-3016): research hardening, docker node onboarding, planning model s", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f1ee69e59", + "time": 1777911607000, + "subject": "feat(FN-3014): document research recovery semantics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2e8fb88c4", + "time": 1778011557000, + "subject": "feat(FN-3368): tighten research view test coverage and resolve dashboard ty", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "49de604f3", + "time": 1779014096000, + "subject": "test(FN-4859): complete Steps 6-7 — cache coverage and loader invalidation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cec86d23a", + "time": 1779014096000, + "subject": "test(FN-4859): expand cache hydration coverage across views", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-planning-tracking.test.ts", + "package": "packages/dashboard", + "valueScore": 7.5, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1, + "test+source": 3, + "fix": 1, + "churn-keyword": 1 + }, + "durationMs": 1300, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 152.9, + "ageDays": 40, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "db7b19646", + "time": 1778956777000, + "subject": "test(FN-4770): complete Steps 3-4 — add tracking async coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "2d42476da", + "time": 1779241956000, + "subject": "fix(dashboard): fire github tracking on duplicate and refine routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "59cd9ea66", + "time": 1780495802000, + "subject": "Planning fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ac92174cb", + "time": 1780518017000, + "subject": "FN-5907: harden planning task creation side effects", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d2103b80d", + "time": 1780538115000, + "subject": "fix(test): deterministic await for github-tracking dispatch race; record U7 triage findings", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-create-summarize-deferred-hook.test.ts", + "package": "packages/core", + "valueScore": -10, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test-only-churn": 1, + "quarantine-ledger": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": true, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 150, + "ageDays": 13, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "3c751f285", + "time": 1781333863000, + "subject": "FN-6326: quarantine deferred-hook title summarization test", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-list-format.test.ts", + "package": "packages/core", + "valueScore": -10, + "positiveCount": 2, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 4, + "testOnlyRatio": 0.571, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test-only-churn": 4, + "test+source": 2, + "quarantine-ledger": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 150, + "ageDays": 9, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "0db81349b", + "time": 1781663493000, + "subject": "FN-6492: clamp task list text output", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "177cce405", + "time": 1781677958000, + "subject": "FN-6515: guard task list formatting exports", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d17a6dbd7", + "time": 1781689829000, + "subject": "FN-6535: harden task list dist runtime coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a84a8e179", + "time": 1781702050000, + "subject": "FN-6570: guard task list formatting fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "556ddd449", + "time": 1781733176000, + "subject": "FN-6591: stabilize dist task-list barrel tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "d3ea8dff3", + "time": 1781772318000, + "subject": "FN-6627: guard dist-barrel tests on complete core dist", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store.experiment-session-accessor.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 300, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 150, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "4aab9b5b3", + "time": 1778755777000, + "subject": "test(FN-4459): complete Step 2 — add experiment session accessor tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-settings-e2e.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 300, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 150, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "e2707afbd", + "time": 1780647387000, + "subject": "test(core): end-to-end workflow-settings journey + surface enumeration; docs and changeset", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/ce-workflow-step-conventions.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 300, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 150, + "ageDays": 5, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "c8f97df34", + "time": 1782021618000, + "subject": "test(engine): cover graph-step skill loading, preamble, spawn gating, headless, verdict (U6)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/distributed-claim-mutex.integration.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 300, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 150, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "735c8f413", + "time": 1778977869000, + "subject": "feat(FN-4813): complete Step 2 — add distributed claim mutex tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-orphan-only-scope.real-git.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 300, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 150, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "e0ab5efdf", + "time": 1778707343000, + "subject": "test(FN-4379): complete Step 5 — real-git orphan-only recovery test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-workflow-runtime.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 900, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 150, + "ageDays": 16, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "f16b038fa", + "time": 1781034089000, + "subject": "refactor(workflow): add workflow work-item store slice", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cdd86fc3f", + "time": 1781037466000, + "subject": "fix(review): address workflow work item feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PluginManager.install-browse.test.tsx", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix": 1, + "test+source": 3 + }, + "durationMs": 1400, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 147.4, + "ageDays": 74, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "684762e3e", + "time": 1776042639000, + "subject": "feat(FN-1493): add directory browsing UX to plugin install flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "fce3668a8", + "time": 1778145314000, + "subject": "feat(FN-3077): enforce plugin AI security scan gate across install flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ce54a0d82", + "time": 1778221265000, + "subject": "feat(FN-3182): scope plugin installs globally with project enablement", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f8200adb7", + "time": 1781004473000, + "subject": "FN-6071: add plugin registry browsing and install actions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-definition-store.test.ts", + "package": "packages/core", + "valueScore": 10, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 1600, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 145.5, + "ageDays": 22, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "ffce42ff9", + "time": 1780503755000, + "subject": "feat(core): persist named workflow definitions (U1)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "eb67d0821", + "time": 1780533132000, + "subject": "Address PR review feedback (#1363)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "afc72b6bb", + "time": 1780585233000, + "subject": "fix(core): widen Task.column to ColumnId across packages; v1-preserving IR persistence for rollback safety (#1403 #1405)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "28e74f10d", + "time": 1780636716000, + "subject": "feat(core): workflow kind discriminator and steps-to-IR converter", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "563cb5b37", + "time": 1780692965000, + "subject": "Address PR review feedback (#1433)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9b88c0e30", + "time": 1781073804000, + "subject": "FN-6176: update workflow-definition-store tests for builtin PR fragment", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/already-merged-detector.real-git.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1 + }, + "durationMs": 1300, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 144.4, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "cad44b1f5", + "time": 1780504830000, + "subject": "fix(FN-5846): commit-ownership-anchor already-merged attribution (U3)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/usePluginDashboardViews.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 500, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 142.9, + "ageDays": 55, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "0597b34ee", + "time": 1777703555000, + "subject": "feat(FN-3079): add plugin dashboard views and dependency graph plugin", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "03c0348b9", + "time": 1778008460000, + "subject": "feat(FN-3157): add plugin dashboard view registry with nav integration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4338b590c", + "time": 1778168958000, + "subject": "feat(FN-3091): add plugin view remount routing test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-heartbeat-memory-mode.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 500, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 142.9, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "b34fa13e3", + "time": 1778740895000, + "subject": "test(FN-4393): add heartbeat memory mode integration coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "49bb2b385", + "time": 1778792350000, + "subject": "feat(FN-4455): complete Step 5 — migrate memory mode resolution and tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PrCreateModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 6, + "positiveCount": 8, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 4, + "testOnlyRatio": 0.308, + "signalTally": { + "added": 1, + "test+source": 8, + "test-only-churn": 4, + "churn-keyword": 1 + }, + "durationMs": 1000, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 142.9, + "ageDays": 40, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "d643f4c5c", + "time": 1779012837000, + "subject": "test(FN-4756): complete Step 4 — add PrCreateModal tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "26c3d330d", + "time": 1779054511000, + "subject": "feat(FN-4764): complete Step 2-4 — surface structured gh errors in API UI CLI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bf0e9a3e3", + "time": 1779070300000, + "subject": "feat(FN-4766): merge fusion/fn-4766", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9170f78cd", + "time": 1779106244000, + "subject": "test(FN-5010): complete Step 3 — assert chip color variable wiring", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "73bf494df", + "time": 1779118298000, + "subject": "test(FN-5051): complete Step 4 — cover resize styles and persisted dimensions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ef6c18942", + "time": 1779134491000, + "subject": "feat(FN-5048): merge fusion/fn-5048", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.rooms.test.tsx", + "package": "packages/dashboard", + "valueScore": 17.5, + "positiveCount": 21, + "negativeCount": 9, + "neutralCount": 0, + "timesTouched": 30, + "testOnlyCount": 7, + "testOnlyRatio": 0.233, + "signalTally": { + "added-with-source": 1, + "test+source": 21, + "test-only-churn": 7, + "churn-keyword": 2, + "fix": 1, + "quarantine-ledger": 1 + }, + "durationMs": 2600, + "testCount": 39, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 140.5, + "ageDays": 47, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "301038eff", + "time": 1778347865000, + "subject": "feat(FN-3806): implement rooms create modal and chat sidebar with plugin ro", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2278ceff3", + "time": 1778358107000, + "subject": "feat(FN-3879): add chat room management in ChatView", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7ed685a21", + "time": 1778369351000, + "subject": "feat(FN-3899): add chat rooms with send routing and delete-room UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c935e290d", + "time": 1778383207000, + "subject": "feat(FN-3906): add Chat Rooms experimental feature with Settings toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cab3c4970", + "time": 1778425180000, + "subject": "feat(FN-3812): add rooms test scaffolds and coverage across core and dashbo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d8fef5e4a", + "time": 1778452405000, + "subject": "feat(FN-3926): add chat room integration tests across core and dashboard", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/root-test-command.test.ts", + "package": "packages/cli", + "valueScore": -8, + "positiveCount": 2, + "negativeCount": 8, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 8, + "testOnlyRatio": 0.8, + "signalTally": { + "added": 1, + "test-only-churn": 8, + "fix": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 140, + "ageDays": 53, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "4d98b1224", + "time": 1777812431000, + "subject": "feat(FN-3234): refactor test-changed script and add workflow tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "3b9f0d55c", + "time": 1777911607000, + "subject": "feat(FN-3366): document CI shard contract in contributing guide", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f6394cc22", + "time": 1778093508000, + "subject": "test(FN-3607): harden test workflow verification and isolation checks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ae3fb0d99", + "time": 1778452405000, + "subject": "fix(FN-3947): strip forwarded vitest silent flags", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "52f62f149", + "time": 1778561306000, + "subject": "feat(FN-4043): implement weighted CI shard balancing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b7e614688", + "time": 1778630672000, + "subject": "feat(FN-4134): stabilize research view layout", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.draft.test.tsx", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 700, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 140, + "ageDays": 44, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "ccda1895e", + "time": 1778630672000, + "subject": "feat(FN-4107): persist chat draft auto-save in ChatView", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "efdc6c462", + "time": 1778630673000, + "subject": "feat(FN-4139): add swipe-back navigation to chat, mission, and planning flo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "12a6ee9af", + "time": 1779275560000, + "subject": "feat(FN-5218): add hash mentions to chat composers and popups", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a67ad70bf", + "time": 1780950778000, + "subject": "FN-6003: wrap dashboard chat and review tests in async act", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/merge-request-record.test.ts", + "package": "packages/core", + "valueScore": 29, + "positiveCount": 20, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 24, + "testOnlyCount": 2, + "testOnlyRatio": 0.083, + "signalTally": { + "added-with-source": 1, + "test+source": 18, + "test-only-churn": 2, + "fix": 1, + "fix+source": 2, + "churn-keyword": 2 + }, + "durationMs": 4200, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 140, + "ageDays": 26, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "20c1c3261", + "time": 1780177370000, + "subject": "FN-5741: persist merge-request handoff shadow contract", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c9b159f4e", + "time": 1780199296000, + "subject": "FN-5743: cut over merge dequeue authority to merge-request queue", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "30a09e342", + "time": 1780436501000, + "subject": "FN-5896: persist mission-goal linkage in schema", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d72cb2ab2", + "time": 1780474218000, + "subject": "FN-5911: move agent logs to per-task JSONL storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "05f2d49bf", + "time": 1780535453000, + "subject": "test: bump hardcoded schema-version assertions 102 → 105", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2bebddb80", + "time": 1780557598000, + "subject": "feat(core): typed transition contract + transitionPending marker, schema v106 (U3)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/first-run.test.ts", + "package": "packages/core", + "valueScore": 8.5, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1, + "fix": 1, + "fix+source": 1 + }, + "durationMs": 1300, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 136.8, + "ageDays": 86, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "9d898aa88", + "time": 1775032842000, + "subject": "feat(KB-504): add multi-project migration system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1cbf9e101", + "time": 1776580907000, + "subject": "test: enforce test-directory isolation across all packages", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "58bb0d41b", + "time": 1776618813000, + "subject": "fix(FN-2098): align no-task heartbeat guidance and stabilize flaky tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "84ed84313", + "time": 1776618814000, + "subject": "feat(FN-2123): merge fusion/fn-2123", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "db971a91e", + "time": 1780731508000, + "subject": "fix(FN-1455): initialize git during project registration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskChatTab.test.tsx", + "package": "packages/dashboard", + "valueScore": 48, + "positiveCount": 35, + "negativeCount": 9, + "neutralCount": 0, + "timesTouched": 44, + "testOnlyCount": 8, + "testOnlyRatio": 0.182, + "signalTally": { + "added-with-source": 1, + "test+source": 32, + "churn-keyword": 1, + "test-only-churn": 8, + "fix+source": 3 + }, + "durationMs": 6600, + "testCount": 114, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 134.7, + "ageDays": 13, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "4bd6024ef", + "time": 1781283608000, + "subject": "FN-6300: add live task chat tab", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0cd2ae103", + "time": 1781305802000, + "subject": "FN-6314: allow chat steering during review sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0d51a58d0", + "time": 1781312631000, + "subject": "FN-6320: enable active task chat steering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0a135c936", + "time": 1781314005000, + "subject": "FN-6315: Scroll task chat to latest output", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f19c4d64e", + "time": 1781317853000, + "subject": "FN-6316: collapse task chat tool and thinking entries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "97f3d6579", + "time": 1781326249000, + "subject": "FN-6332: improve task chat tool summaries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/memory-backup.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 47, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "ff20e9f33", + "time": 1778362918000, + "subject": "feat(FN-3891): document memory backup settings in settings reference", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/model-router.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 21, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "cf4685933", + "time": 1781578640000, + "subject": "feat(router): U17 — Fusion Model Router (session-level selection layer)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/secrets-sync.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "83ed89338", + "time": 1779024180000, + "subject": "feat(FN-4879): merge fusion/fn-4879", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-in-review-stalled.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "85bc21927", + "time": 1779188088000, + "subject": "feat(FN-5093): complete Step 3 — hydrate inReviewStalled in TaskStore", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-task-age-staleness.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "f6951e7f4", + "time": 1778763316000, + "subject": "feat(FN-4465): complete Step 2 — hydrate task age staleness", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-task-id-integrity.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 44, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "15281c304", + "time": 1778638207000, + "subject": "feat(FN-4192): add task ID integrity detection and dashboard alerts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/CreateRoomModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 47, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "301038eff", + "time": 1778347865000, + "subject": "feat(FN-3806): implement rooms create modal and chat sidebar with plugin ro", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowFieldsPanel.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "e87e74537", + "time": 1780602283000, + "subject": "feat(dashboard): WorkflowFieldsPanel — field-definition authoring with live badge preview (U13 completion)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/task-create-workflow-route.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "ef33d79e7", + "time": 1780642044000, + "subject": "feat(core,dashboard): workflow-centric task creation with atomic workflowId materialization", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/mission-verification-redrive-surface.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 14, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "91180fb15", + "time": 1781254624000, + "subject": "feat(engine): recovery/reaper safety audit + close reaper slice-deadlock (U7)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/verification-followup-dedup.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "b078a8135", + "time": 1779244085000, + "subject": "feat(FN-5232): add deterministic verification-followup deduplication to pre", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/verification-followup-dedup.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 400, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "b078a8135", + "time": 1779244085000, + "subject": "feat(FN-5232): add deterministic verification-followup deduplication to pre", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/workflow-interpreter-cutover.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 600, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 18, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "eb3833a54", + "time": 1782369172000, + "subject": "FN-6971: retire dual-observe cutover gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ReliabilityView.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 5, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 3, + "testOnlyRatio": 0.375, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 3, + "test+source": 4 + }, + "durationMs": 800, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 43, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "c8748918a", + "time": 1778736423000, + "subject": "feat(FN-4360): complete Step 3 — add ReliabilityView component", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6bb5c7d2e", + "time": 1778852844000, + "subject": "test(FN-4594): complete Step 3 — add scroll container regression assertion", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4ef83019f", + "time": 1778863978000, + "subject": "feat(FN-4608): complete Step 4 — add reliability reset action", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "414e62d39", + "time": 1778915617000, + "subject": "feat(FN-4716): complete Step 2 — invert reliability headline to success rate", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "14bed7d89", + "time": 1781034626000, + "subject": "FN-6097: fix reliability view loading and error rendering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d1996a989", + "time": 1781034680000, + "subject": "FN-6110: fix Reliability view flex sizing on mobile", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskFieldsSection.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 800, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "5fa5740af", + "time": 1780601165000, + "subject": "feat(dashboard,cli): U13 — schema-driven task fields UI (TaskFieldsSection, card badges, PATCH route, board-workflows fields payload, TUI chips)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6f7f6860b", + "time": 1780615010000, + "subject": "fix: address PR review feedback (#1424)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/mission-goal-links-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 800, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 23, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "93e8bd994", + "time": 1780436871000, + "subject": "FN-5899: add mission-goal linking commands and tools", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "26bc80a0a", + "time": 1780551083000, + "subject": "FN-5958: add mission goal linking to create and update flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2d81a95ad", + "time": 1780888987000, + "subject": "FN-5985: align mission goal link errors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-nodes-sync.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 12, + "negativeCount": 15, + "neutralCount": 0, + "timesTouched": 27, + "testOnlyCount": 14, + "testOnlyRatio": 0.519, + "signalTally": { + "added-with-source": 1, + "test+source": 10, + "fix+source": 1, + "test-only-churn": 14, + "fix": 1, + "churn-keyword": 1 + }, + "durationMs": 800, + "testCount": 93, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 70, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "f09d15702", + "time": 1776345937000, + "subject": "feat(FN-1821): add settings and auth sync API routes for mesh nodes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "910c5ab38", + "time": 1776369912000, + "subject": "feat(FN-1892): merge fusion/fn-1892", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07ddb1ca1", + "time": 1776417594000, + "subject": "feat(FN-1984): enrich chat and heartbeat prompts with agent context", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6bfad343b", + "time": 1776977325000, + "subject": "feat(FN-2327): standardize dashboard runtime logging pipeline", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "89144681f", + "time": 1777046065000, + "subject": "feat(FN-2354): add structured redacted auth-sync diagnostics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-verification-fix-already-on-main.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 1000, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 42, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "d93427307", + "time": 1778831411000, + "subject": "feat(FN-4559): complete Step 1 — shared detector and finalize classification", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c7ae1c1a", + "time": 1779200428000, + "subject": "feat(FN-5131): add lineage-unlink flag to triage parent deletes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "c89ad28e7", + "time": 1780041317000, + "subject": "FN-5646: preserve AI body when canonicalizing merge commits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-update.test.ts", + "package": "packages/core", + "valueScore": 8, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 2, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 4, + "fix+source": 1 + }, + "durationMs": 1200, + "testCount": 73, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 45, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1f47e137f", + "time": 1778536606000, + "subject": "feat(FN-4023): preserve triage column when SSE updates contain only priorit", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "173bae9d2", + "time": 1778647978000, + "subject": "feat(FN-4108): persist scope override fields (+4 more)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8e869c9a0", + "time": 1778777955000, + "subject": "feat(FN-4371): complete Step 1 — schema and persistence", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "139e25fcf", + "time": 1778995197000, + "subject": "feat(FN-4837): complete Step 2 — migrate store tests to shared harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "10455b799", + "time": 1779036670000, + "subject": "feat(FN-4898): reconcile task title-id drift in storage migrations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/real-git/prepare-commit-msg-empty-guard.real-git.test.ts", + "package": "packages/engine", + "valueScore": 11, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 3, + "added-with-source": 1 + }, + "durationMs": 1600, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 133.3, + "ageDays": 36, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "1983dac6e", + "time": 1779323508000, + "subject": "fix(FN-5345): refuse empty commits + early empty-own-diff finalize", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "8e6740468", + "time": 1779324866000, + "subject": "fix(FN-5345): address code-review findings on engine fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c64884c24", + "time": 1779325562000, + "subject": "fix(FN-5345): address second-pass review findings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-experiment-finalize.test.ts", + "package": "packages/cli", + "valueScore": -6.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 2, + "churn-keyword": 1, + "quarantine-ledger": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 132.5, + "ageDays": 43, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "81b1eae39", + "time": 1778757906000, + "subject": "feat(FN-4222): add experiment-finalize CLI command and API route", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5a098da4c", + "time": 1778904485000, + "subject": "feat(FN-4649): complete Step 7 — run verification and fix test regressions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0dc4c9c6a", + "time": 1779039941000, + "subject": "test(FN-4904): cover worktree-root lookup in extension tools", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-file-scope-invariant.test.ts", + "package": "packages/engine", + "valueScore": -6.5, + "positiveCount": 4, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 2, + "testOnlyRatio": 0.222, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "test-only-churn": 2, + "churn-keyword": 4, + "fix+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 132.5, + "ageDays": 44, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "173bae9d2", + "time": 1778647978000, + "subject": "feat(FN-4108): persist scope override fields (+4 more)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "880f75578", + "time": 1778758663000, + "subject": "test(FN-4433): complete Step 3 — cover file-scope violation audit emission", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07fe2cd91", + "time": 1779084323000, + "subject": "test(FN-5006): complete Step 2 — add changeset-only scope overlap regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "aeee05ddc", + "time": 1779085526000, + "subject": "test: skip slow github copilot panel test and two flaky file-scope tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "e908cbcb4", + "time": 1779256811000, + "subject": "fix(FN-5291): downgrade file-scope invariant failures", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c89ad28e7", + "time": 1780041317000, + "subject": "FN-5646: preserve AI body when canonicalizing merge commits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-implicit-task-done-budget.test.ts", + "package": "packages/engine", + "valueScore": -6, + "positiveCount": 2, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 4, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 4, + "churn-keyword": 2, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 130, + "ageDays": 39, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "3a17b85ed", + "time": 1779089264000, + "subject": "test(FN-4946): add implicit completion refusal guard coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "12aec36e9", + "time": 1779089264000, + "subject": "test(FN-4946): expand implicit completion guard scenarios", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c1a01fbb8", + "time": 1779089264000, + "subject": "test(FN-4946): stabilize budget and shared-helper tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "28595f57e", + "time": 1779089264000, + "subject": "feat(FN-4946): complete steps 5-8 implicit refusal docs and budget coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "58fe3652d", + "time": 1779089264000, + "subject": "fix(FN-4946): align implicit refusal helper signature and tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "eb113f3e3", + "time": 1780997263000, + "subject": "FN-6068: fix engine executor test expectations for queued retries", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-ai-cleanup-active-session.test.ts", + "package": "packages/engine", + "valueScore": -6, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test+source": 2, + "quarantine-ledger": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 130, + "ageDays": 14, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "1eb256bbf", + "time": 1781230685000, + "subject": "FN-6207: quarantine active-session cleanup pruning test", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "2085610e9", + "time": 1781272169000, + "subject": "FN-6246: move AI merge clean rooms into repo storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "93b2288d3", + "time": 1781476175000, + "subject": "FN-6433: rescue non-CLI quarantined tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-watcher.test.ts", + "package": "packages/core", + "valueScore": -5.5, + "positiveCount": 4, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 5, + "testOnlyRatio": 0.556, + "signalTally": { + "added": 1, + "test+source": 3, + "churn-keyword": 2, + "test-only-churn": 5 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 127.5, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "deff107d9", + "time": 1778507262000, + "subject": "feat(FN-3978): split monolithic TaskStore test suite into focused domain fi", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "177257219", + "time": 1778561306000, + "subject": "feat(FN-4027): memoize startup slim list reads to avoid redundant fresh fet", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "93dc5a727", + "time": 1778597230000, + "subject": "feat(FN-4083): add WAL enforcement, immediate write transactions, and concu", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "617113318", + "time": 1778630673000, + "subject": "feat(FN-4136): snapshot pi-autoresearch upstream contract with audit doc an", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "3f5a2fcbf", + "time": 1778647534000, + "subject": "feat(FN-4244): add no-task heartbeat procedure override", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ef6c18942", + "time": 1779134491000, + "subject": "feat(FN-5048): merge fusion/fn-5048", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MissionManager.swipe-back.test.tsx", + "package": "packages/dashboard", + "valueScore": -5.5, + "positiveCount": 3, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 3, + "testOnlyRatio": 0.429, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 3, + "test-only-churn": 3, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 127.5, + "ageDays": 44, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "efdc6c462", + "time": 1778630673000, + "subject": "feat(FN-4139): add swipe-back navigation to chat, mission, and planning flo", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "55343012f", + "time": 1779245843000, + "subject": "test(dashboard): skip remaining test:deep failures pending feature/bug work", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "e93ed72c8", + "time": 1779247799000, + "subject": "test(dashboard): convert remaining skipped tests to passing stubs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "00af26470", + "time": 1779257052000, + "subject": "Fix tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "338e7286c", + "time": 1781393428000, + "subject": "FN-6395: align viewport hook mocks in dashboard tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/plugin-activation-analytics.test.ts", + "package": "packages/core", + "valueScore": -5, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 125, + "ageDays": 6, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "87f18f87e", + "time": 1781912853000, + "subject": "FN-6705: add plugin activation analytics", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-plugin-activations.test.ts", + "package": "packages/core", + "valueScore": -5, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 125, + "ageDays": 6, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "87f18f87e", + "time": 1781912853000, + "subject": "FN-6705: add plugin activation analytics", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-creation-hook.test.ts", + "package": "packages/core", + "valueScore": 3, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 4, + "churn-keyword": 1 + }, + "durationMs": 500, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 125, + "ageDays": 41, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "4c3cd0b40", + "time": 1778904484000, + "subject": "feat(FN-4649): complete Step 1 — add core task-created hook", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "72bf49442", + "time": 1778946306000, + "subject": "test(FN-4730): cover createTask hook deferral ordering", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fc98f4619", + "time": 1779069858000, + "subject": "feat(FN-4942): complete Step 1 — auto-attach summarizer in createTask", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ac92174cb", + "time": 1780518017000, + "subject": "FN-5907: harden planning task creation side effects", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4fe7dbe01", + "time": 1780640628000, + "subject": "feat(core): one-time hard-move migration of workflow-policy settings to workflow setting values", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e623340e7", + "time": 1780950778000, + "subject": "FN-5994: restore project summarization model settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/message-store.test.ts", + "package": "packages/core", + "valueScore": 17.5, + "positiveCount": 10, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 1, + "testOnlyRatio": 0.091, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "fix+source": 2, + "test-only-churn": 1 + }, + "durationMs": 2300, + "testCount": 51, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 124.3, + "ageDays": 79, + "lastTouched": "2026-05-27", + "evidence": [ + { + "sha": "7cc4ee5eb", + "time": 1775586119000, + "subject": "feat(FN-989): add inter-agent messaging system with mailbox UI and CLI commands", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "87d21e2d6", + "time": 1775612596000, + "subject": "feat(FN-1065): add immediate message response mode for heartbeats", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d234c99c3", + "time": 1776261758000, + "subject": "refactor(FN-1633): migrate MessageStore from filesystem to SQLite backend", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "534be73bd", + "time": 1777010553000, + "subject": "fix: prevent nested .fusion/.fusion dir from PluginStore path bug", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6e4797ff1", + "time": 1777254314000, + "subject": "perf(core): opt-in in-memory SQLite for *-store tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/db.test.ts", + "package": "packages/core", + "valueScore": 171, + "positiveCount": 139, + "negativeCount": 39, + "neutralCount": 2, + "timesTouched": 180, + "testOnlyCount": 20, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "test+source": 138, + "churn-keyword": 24, + "fix+source": 17, + "test-only-churn": 20, + "fix": 4, + "quarantine-ledger": 1 + }, + "durationMs": 21200, + "testCount": 152, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 123.3, + "ageDays": 86, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "1c788455f", + "time": 1774987474000, + "subject": "feat(KB-310): migrate storage layer to SQLite with WAL mode and auto-migration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fdbc6a15e", + "time": 1775004680000, + "subject": "feat(KB-627): Steps 1-2 — Create ModelSelectionModal and integrate with QuickEntryBox", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "27c789512", + "time": 1775006903000, + "subject": "feat(KB-632): add MissionStore with missions database schema", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fce5e6c1e", + "time": 1775011815000, + "subject": "feat(KB-334): change default task prefix from KB to FN", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "57f34d193", + "time": 1775012425000, + "subject": "feat(KB-336): rename data directory from .kb to .fusion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useRemoteNodeData.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix": 1 + }, + "durationMs": 800, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 123.1, + "ageDays": 77, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "c4a48491e", + "time": 1775764879000, + "subject": "feat(FN-1232): add remote node mesh dashboard integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5c95d30c8", + "time": 1775815178000, + "subject": "feat(FN-1529): implement search query propagation to remote node data", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-create.test.ts", + "package": "packages/core", + "valueScore": 8, + "positiveCount": 9, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 2, + "testOnlyRatio": 0.167, + "signalTally": { + "added": 1, + "test+source": 8, + "test-only-churn": 2, + "churn-keyword": 2, + "fix+source": 1 + }, + "durationMs": 1100, + "testCount": 53, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 122.2, + "ageDays": 45, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "287ebaf10", + "time": 1778561306000, + "subject": "feat(FN-4053): unify task ID allocation with store-owned distributed alloca", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7c1ccb4b3", + "time": 1778956777000, + "subject": "feat(FN-4770): complete Step 1 — expose createTask hook toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "10455b799", + "time": 1779036670000, + "subject": "feat(FN-4898): reconcile task title-id drift in storage migrations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "896ae7a93", + "time": 1779141680000, + "subject": "feat(FN-5077): merge fusion/fn-5077", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a04ba3cf2", + "time": 1779376842000, + "subject": "feat(FN-5413): add null description persist regression test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/migration.test.ts", + "package": "packages/core", + "valueScore": 13, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 9, + "testOnlyCount": 1, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "churn-keyword": 1, + "fix+source": 3, + "test-only-churn": 1 + }, + "durationMs": 1700, + "testCount": 49, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 121.4, + "ageDays": 85, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "590df1185", + "time": 1775053184000, + "subject": "feat(KB-620): add multi-project migration and first-run experience", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "98a0e41db", + "time": 1775078337000, + "subject": "feat(KB-620): add multi-project first-run migration flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1cbf9e101", + "time": 1776580907000, + "subject": "test: enforce test-directory isolation across all packages", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a269f4829", + "time": 1777010554000, + "subject": "refactor: remove legacy kb compatibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ba9f9b76c", + "time": 1777015283000, + "subject": "fix(FN-2355): improve AI route diagnostics and stabilize related tests", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/update-cache.test.ts", + "package": "packages/cli", + "valueScore": -4, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "churn-keyword": 3, + "test-only-churn": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 120, + "ageDays": 57, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "597295e74", + "time": 1777474485000, + "subject": "fix(FN-XXX): align tui startup update check", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "825e5479f", + "time": 1778982004000, + "subject": "test(FN-4786): stabilize cli tmp-dir tests for workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "2a8e3e5f0", + "time": 1778984208000, + "subject": "fix(FN-4812): stabilize hoisted update-cache test fixture", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/provider-settings.test.ts", + "package": "packages/cli", + "valueScore": -4, + "positiveCount": 4, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 3, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 4, + "test+source": 4, + "fix+source": 1, + "test-only-churn": 3 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 120, + "ageDays": 73, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "45c68d39b", + "time": 1776089101000, + "subject": "Read provider settings from fusion fallback", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cc0495add", + "time": 1776130252000, + "subject": "feat(FN-1506): add skills registry and configuration API", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "b56818866", + "time": 1776195909000, + "subject": "feat(FN-1798): merge fusion/fn-1798", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5ef809d93", + "time": 1776410419000, + "subject": "fix(FN-1952): merge pi package settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1cbf9e101", + "time": 1776580907000, + "subject": "test: enforce test-directory isolation across all packages", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/manual-retry-reset.test.ts", + "package": "packages/core", + "valueScore": -4, + "positiveCount": 1, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 4, + "added-with-source": 1, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 120, + "ageDays": 35, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "216c32bfe", + "time": 1779403548000, + "subject": "feat(FN-5347): reset manual retry counters across task retry surfaces", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "4b484fd81", + "time": 1779463425000, + "subject": "feat(FN-5485): clear userPaused state on manual retry reset with regression", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "16b18bf33", + "time": 1779467843000, + "subject": "chore(dashboard): publish MobileNavBar render decision to vpdebug", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "de3273eba", + "time": 1780525949000, + "subject": "FN-5937: clear deadlock auto-pause on retry", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "0897b2a0b", + "time": 1781287812000, + "subject": "FN-6281: add bounded graph resume retries", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-priority.test.ts", + "package": "packages/core", + "valueScore": -4, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 120, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "deff107d9", + "time": 1778507262000, + "subject": "feat(FN-3978): split monolithic TaskStore test suite into focused domain fi", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1f47e137f", + "time": 1778536606000, + "subject": "feat(FN-4023): preserve triage column when SSE updates contain only priorit", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/invariant-stranded-in-review-recovery.test.ts", + "package": "packages/engine", + "valueScore": -4, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 120, + "ageDays": 43, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "fd56f9ab9", + "time": 1778678976000, + "subject": "test(FN-4115): complete Step 3 — stranded in-review recovery tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5244d52d4", + "time": 1778678976000, + "subject": "test(FN-4115): refine Step 3 stranded-review invariant coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5e3d57b1c", + "time": 1779210464000, + "subject": "test(FN-5147): complete Step 6 — stabilize verification coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/ensure-project-registered.test.ts", + "package": "packages/cli", + "valueScore": 1.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1, + "quarantine-ledger": 1 + }, + "durationMs": 300, + "testCount": 5, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 120, + "ageDays": 43, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "b2440a234", + "time": 1778678973000, + "subject": "feat(FN-4266): complete Step 1 — add shared auto-registration helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "687237bd9", + "time": 1779535135000, + "subject": "feat(FN-5411): add project identity recovery and identity-aware startup rea", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "db971a91e", + "time": 1780731508000, + "subject": "fix(FN-1455): initialize git during project registration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-worktree.test.ts", + "package": "packages/engine", + "valueScore": 16.5, + "positiveCount": 19, + "negativeCount": 11, + "neutralCount": 3, + "timesTouched": 33, + "testOnlyCount": 11, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 13, + "test-only-churn": 11, + "fix+source": 6, + "fix": 2, + "churn-keyword": 5 + }, + "durationMs": 2100, + "testCount": 72, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 120, + "ageDays": 49, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "f240683fc", + "time": 1778221265000, + "subject": "feat(FN-3720): split executor.test.ts into eight focused suites and add she", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e59a740d0", + "time": 1778507263000, + "subject": "feat(FN-3841): add worktree database hydration to executor", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "de1e13d22", + "time": 1778534686000, + "subject": "feat(FN-4014): split merger monolith into domain-specific test suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6acc51cf0", + "time": 1778561306000, + "subject": "feat(FN-4039): recover worktree db scratch bootstrap on hydration failure", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bddcc3a93", + "time": 1778631269000, + "subject": "feat(FN-4068): add branch conflict detection and recovery for stale worktre", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e89c15a16", + "time": 1778678975000, + "subject": "test(FN-4298): align worktree test fixtures with default liveness mock", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/executor-pending-review-skip-retry.test.ts", + "package": "packages/engine", + "valueScore": -3.5, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "churn-keyword": 3, + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 117.5, + "ageDays": 35, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "a2a643844", + "time": 1779386308000, + "subject": "feat(FN-5436): skip step retries when review is pending", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "b5f2f91e8", + "time": 1780062885000, + "subject": "fix(FN-057): park pending review without failed status", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e5e5ccf01", + "time": 1780996503000, + "subject": "FN-6065: fix pending-review advisory retry expectation", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "a013bc030", + "time": 1781751140000, + "subject": "FN-6607: align step tools with zero-based prompt steps", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/settings-export.test.ts", + "package": "packages/cli", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 78, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "4c843a60f", + "time": 1775669895000, + "subject": "test(FN-1283): expand CLI settings and routing coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/settings-import.test.ts", + "package": "packages/cli", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 78, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "4c843a60f", + "time": 1775669895000, + "subject": "test(FN-1283): expand CLI settings and routing coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/browser-demo-lifecycle.test.ts", + "package": "packages/core", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 18, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "ffce26ab1", + "time": 1780889100000, + "subject": "FN-5986: add browser demo lifecycle board flow", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-attachments.test.ts", + "package": "packages/core", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "deff107d9", + "time": 1778507262000, + "subject": "feat(FN-3978): split monolithic TaskStore test suite into focused domain fi", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-plugin-routing.test.ts", + "package": "packages/core", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "deff107d9", + "time": 1778507262000, + "subject": "feat(FN-3978): split monolithic TaskStore test suite into focused domain fi", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-prompt-generation.test.ts", + "package": "packages/core", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "deff107d9", + "time": 1778507262000, + "subject": "feat(FN-3978): split monolithic TaskStore test suite into focused domain fi", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-snapshots.test.ts", + "package": "packages/core", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 45, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/copyToClipboard.test.ts", + "package": "packages/dashboard", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "3986c0915", + "time": 1779099052000, + "subject": "test(FN-4951): complete Step 2 — add clipboard utility tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1842a69e6", + "time": 1779099052000, + "subject": "test(FN-4951): stabilize clipboard fallback coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/recover-branch-binding-route.test.ts", + "package": "packages/dashboard", + "valueScore": -3, + "positiveCount": 2, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test-only-churn": 2, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "211c361cd", + "time": 1779154012000, + "subject": "feat(FN-5083): complete Step 4 — add recover branch binding route", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "39db6157e", + "time": 1779165875000, + "subject": "test(FN-5094): stabilize dashboard API tests for current route exports", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "070ad2815", + "time": 1779169671000, + "subject": "feat(FN-5060): complete Step 7 — testing and verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "76790c424", + "time": 1779171267000, + "subject": "feat(FN-5053): fix verification gate registration for workspace test stabil", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "093ae0bac", + "time": 1779171288000, + "subject": "feat(FN-5096): fix dashboard typecheck and stabilize verification gates", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/promote-route.test.ts", + "package": "packages/dashboard", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 21, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "010976cee", + "time": 1780582366000, + "subject": "test: promote/board-workflows routes, concurrent sweep, canDropTask, migration forward paths (#1404 #1414 #1415 #1416 #1417)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdd0bed4b", + "time": 1782416660000, + "subject": "test(dashboard): fix 30 pre-existing pnpm-test failures on main", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "ad246e8bd", + "time": 1782419257000, + "subject": "FN-7001: repair dashboard changed-test expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-implicit-task-done-revise-guard.test.ts", + "package": "packages/engine", + "valueScore": -3, + "positiveCount": 2, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 4, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 4, + "fix+source": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 39, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "3a17b85ed", + "time": 1779089264000, + "subject": "test(FN-4946): add implicit completion refusal guard coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "12aec36e9", + "time": 1779089264000, + "subject": "test(FN-4946): expand implicit completion guard scenarios", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "00e524d1d", + "time": 1779089264000, + "subject": "test(FN-4946): refine implicit refusal guard test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "58fe3652d", + "time": 1779089264000, + "subject": "fix(FN-4946): align implicit refusal helper signature and tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "005d31a35", + "time": 1779089264000, + "subject": "test(FN-4946): tighten implicit revise guard regression assertions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "eb113f3e3", + "time": 1780997263000, + "subject": "FN-6068: fix engine executor test expectations for queued retries", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/in-review-automerge-off.test.ts", + "package": "packages/engine", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 115, + "ageDays": 37, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "405a6ea02", + "time": 1779210464000, + "subject": "test(FN-5147): complete Step 5 — add autoMerge-off in-review reliability backstop", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5e3d57b1c", + "time": 1779210464000, + "subject": "test(FN-5147): complete Step 6 — stabilize verification coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-graph-executor-retry-coding-workflow.test.ts", + "package": "packages/engine", + "valueScore": -3, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "churn-keyword": 1, + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 115, + "ageDays": 17, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "f27ebfd6b", + "time": 1780991088000, + "subject": "FN-6051: add workflow graph retry coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "5506fcc0f", + "time": 1782093298000, + "subject": "feat(FN-6880): migrate built-in browser-verification to an optional-group (U6)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SetupWizardModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 25.5, + "positiveCount": 12, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 14, + "testOnlyCount": 1, + "testOnlyRatio": 0.071, + "signalTally": { + "added-with-source": 1, + "fix+source": 6, + "test+source": 5, + "test-only-churn": 1, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 3000, + "testCount": 26, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 113.2, + "ageDays": 84, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "6b0ee4969", + "time": 1775161808000, + "subject": "feat(FN-694): add DirectoryPicker component and redesign SetupWizardModal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fb9827b70", + "time": 1775191841000, + "subject": "fix(FN-745): improve fallback model recovery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c9e7f83d9", + "time": 1776339485000, + "subject": "feat(FN-1804): merge fusion/fn-1804", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "369b40e46", + "time": 1776909009000, + "subject": "fix(FN-000): improve setup wizard browse flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "8854d977c", + "time": 1776911074000, + "subject": "fix(FN-000): polish onboarding auth and planning modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "159e40b42", + "time": 1777046065000, + "subject": "feat(FN-2310): merge fusion/fn-2310", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/retry-summary.test.ts", + "package": "packages/core", + "valueScore": -2.5, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 112.5, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "831e4969e", + "time": 1778797508000, + "subject": "feat(FN-4398): complete Step 2 — add retry summary and retry storm types", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "5a9de72b3", + "time": 1778874701000, + "subject": "feat(FN-4651): complete Step 2 — split predicates and persist retry counter", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/CommandCenter.token-validity.css.test.ts", + "package": "packages/dashboard", + "valueScore": -2.5, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 112.5, + "ageDays": 7, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "4711e875e", + "time": 1781869024000, + "subject": "Command Center fixes", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "0ba4bbebf", + "time": 1781876803000, + "subject": "FN-6700: reduce Command Center card gradients", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "8927173ae", + "time": 1781912853000, + "subject": "FN-6726: prevent Command Center token totals from overflowing", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "28ba1bce8", + "time": 1781933517000, + "subject": "FN-6784: keep Command Center numbers on one line", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useViewportMode.test.ts", + "package": "packages/dashboard", + "valueScore": -2.5, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 3, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 112.5, + "ageDays": 25, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "1aef3c989", + "time": 1780302634000, + "subject": "FN-5817: prevent blank dashboard after auto-merge toggle", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "a566f498d", + "time": 1780995629000, + "subject": "FN-6047: fix mobile-to-tablet viewport reflow", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "02ae5a934", + "time": 1781231845000, + "subject": "FN-6213: prevent keyboard from forcing mobile layout", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/docker-node-routes.test.ts", + "package": "packages/dashboard", + "valueScore": -2.5, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 112.5, + "ageDays": 52, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "94aab8a65", + "time": 1777946748000, + "subject": "feat(FN-3114): stabilize docker config modal recreate indicator test", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/research/providers/__tests__/llm-synthesis-provider.test.ts", + "package": "packages/engine", + "valueScore": -2.5, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 112.5, + "ageDays": 57, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "9bea0a136", + "time": 1777540879000, + "subject": "feat(FN-2993): merge fusion/fn-2993", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "80cf5f734", + "time": 1778180809000, + "subject": "feat(FN-3713): add web builtin tool opt-in for AI agents", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/experiment-session-store.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 500, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 111.1, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "773f49341", + "time": 1778742723000, + "subject": "feat(FN-4218): complete Steps 2-5 — schema, store, tests, and docs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "24bf18a23", + "time": 1778745524000, + "subject": "feat(FN-4219): complete Step 4 — add experiment executor runtime", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/secrets-store.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 500, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 111.1, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "abb0f63aa", + "time": 1779051272000, + "subject": "feat(FN-4915): complete Step 2-3 — add secret audit emitters and approval audits", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cbac381f6", + "time": 1779085760000, + "subject": "feat(FN-4912): complete Step 3 — secrets env export listing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DockerNodeOnboardingModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 500, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 111.1, + "ageDays": 54, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "2522b1991", + "time": 1777786428000, + "subject": "feat(FN-3108): deliver docker node onboarding and node workflow updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "93ecc88fe", + "time": 1777819665000, + "subject": "feat(FN-3109): add Docker connectivity service and target selector UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDocumentsTab.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 500, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 111.1, + "ageDays": 64, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "6969a82d6", + "time": 1776870264000, + "subject": "feat(FN-2218): add Markdown/Raw toggle for task documents", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7fd14eb88", + "time": 1782108475000, + "subject": "FN-6907: rename task documents to artifacts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/plugin-dev.test.ts", + "package": "packages/cli", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 24, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "0a418e687", + "time": 1780368028000, + "subject": "FN-5844: add plugin dev loop and external authoring docs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/db.test.ts", + "package": "packages/cli", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 45, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "1f7958fc0", + "time": 1778561306000, + "subject": "feat(FN-3935): align engineer role routing with explicit assignment and del", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/memory-backup.test.ts", + "package": "packages/cli", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 47, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "ff20e9f33", + "time": 1778362918000, + "subject": "feat(FN-3891): document memory backup settings in settings reference", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-token-usage.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 43, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "cf165f0a6", + "time": 1778737289000, + "subject": "feat(FN-4388): complete Step 2 — add agent token usage aggregator", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/move-task-preserve-status.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 43, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "22fee60ae", + "time": 1778700645000, + "subject": "chore(FN-4350): import dependency content from fusion/fn-4326", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/node-connection.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 110, + "ageDays": 78, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "75aa55194", + "time": 1775656416000, + "subject": "feat(FN-1223): add remote node connection APIs to CentralCore", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/plugin-loader.route-context.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 48, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "a1f158f13", + "time": 1778280202000, + "subject": "feat(FN-3160): move roadmap route context into fusion-plugin-roadmap plugin", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d910c0c0f", + "time": 1778507263000, + "subject": "feat(FN-3637): establish canonical roadmap plugin ID and compatibility rout", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/step-parsers.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 30, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 21, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "2cfa8a328", + "time": 1780601165000, + "subject": "feat(engine,core): U5+U6+U12core — step-review verdict handler, graph-source projection discipline, pluggable step-parser registry", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-execution-timing.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 41, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "3648d1e1d", + "time": 1778856634000, + "subject": "feat(FN-4595): implement cumulative execution timing semantics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-pr-infos.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 38, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "aad121903", + "time": 1779144648000, + "subject": "feat(FN-4967): merge fusion/fn-4967", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-self-defeating-dep.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 39, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "0d0d818b7", + "time": 1779031489000, + "subject": "feat(FN-4891): merge fusion/fn-4891", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-parity-summary.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 22, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "dbb8adeff", + "time": 1780538079000, + "subject": "feat: surface dual-observe flag + parity summary (CU-U5 #3)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-settings.test.ts", + "package": "packages/core", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 21, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "db4cdc6f5", + "time": 1780636358000, + "subject": "feat(core): workflow setting values store — per-(workflow,project) table, validating write authority, drop-on-orphan resolution", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/dashboard-component-color-tokenization.test.ts", + "package": "packages/dashboard", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 3, + "testOnlyRatio": 0.75, + "signalTally": { + "added": 1, + "test-only-churn": 3 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 45, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "d6bea0d6e", + "time": 1778522066000, + "subject": "feat(FN-4016): convert hardcoded rgba colors to CSS token variables across", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "477c8f1e0", + "time": 1781056142000, + "subject": "FN-6149: tokenize bare hex colors in dashboard CSS", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fc9f6fe27", + "time": 1781079011000, + "subject": "FN-6185: replace dashboard rgba fallbacks with color-mix", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a3161bb91", + "time": 1781843904000, + "subject": "FN-6678: define dashboard surface tokens", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/FileBrowser.css.test.ts", + "package": "packages/dashboard", + "valueScore": -2, + "positiveCount": 2, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 4, + "testOnlyRatio": 0.571, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "fix": 2, + "test-only-churn": 4 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 43, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "c80610297", + "time": 1778678976000, + "subject": "test(FN-4245): complete Step 3 — add FileBrowser radius token guard test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "90b7b7582", + "time": 1778678976000, + "subject": "fix(FN-4245): stabilize FileBrowser CSS guard test path resolution", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "2a1a25b5d", + "time": 1778678976000, + "subject": "fix(FN-4245): use package-relative path in CSS token test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "d69652cda", + "time": 1778736989000, + "subject": "test(FN-4414): complete Step 3 — add mobile dropdown clipping regression checks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cf5a681ba", + "time": 1778736989000, + "subject": "feat(FN-4414): complete Step 5 — add changeset and finalize regression", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c222519c7", + "time": 1778776039000, + "subject": "test(FN-4480): complete Step 2 — add CSS hidden-rule regression", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.mock-coverage.test.ts", + "package": "packages/dashboard", + "valueScore": -2, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 110, + "ageDays": 16, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "c78047037", + "time": 1781038641000, + "subject": "FN-6127: stabilize dashboard test mocks and isolation", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/task-review-routes.test.ts", + "package": "packages/dashboard", + "valueScore": -2, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 110, + "ageDays": 48, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "04ff9d940", + "time": 1778265386000, + "subject": "feat(FN-3278): add direct-mode review tab to task detail modal", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "e82f4bc78", + "time": 1778796338000, + "subject": "test(FN-4530): fix remaining dashboard deep-lane one-off regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/effective-node.test.ts", + "package": "packages/engine", + "valueScore": -2, + "positiveCount": 0, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 110, + "ageDays": 58, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "0f40d96e5", + "time": 1777411555000, + "subject": "feat(FN-2855): route scheduled tasks using effective node resolution", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "c553920b4", + "time": 1777601498000, + "subject": "feat(FN-2839): add research settings section to settings modal and dashboar", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/soft-delete-end-to-end.test.ts", + "package": "packages/engine", + "valueScore": -2, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 3, + "testOnlyRatio": 0.75, + "signalTally": { + "added": 1, + "test-only-churn": 3 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 110, + "ageDays": 37, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "b39c2dd07", + "time": 1779231129000, + "subject": "feat(FN-5153): deliver soft-delete verification gate", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "28cc8f49d", + "time": 1779442502000, + "subject": "feat(FN-5481): unskip soft-delete matrix backstop tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3a0d179ba", + "time": 1779448162000, + "subject": "Fn-5196", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bb87ac069", + "time": 1780442467000, + "subject": "FN-5905: remove orphaned .skip stubs from soft-delete test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-fn-5488-fast-path-regressions.test.ts", + "package": "packages/engine", + "valueScore": -2, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 110, + "ageDays": 34, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "037377678", + "time": 1779474737000, + "subject": "feat(FN-5498): add regression tests for self-healing fast-path behavior", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/chat-store.rooms.test.ts", + "package": "packages/core", + "valueScore": 4.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 3 + }, + "durationMs": 600, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 109.1, + "ageDays": 46, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "cab3c4970", + "time": 1778425180000, + "subject": "feat(FN-3812): add rooms test scaffolds and coverage across core and dashbo", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "d8fef5e4a", + "time": 1778452405000, + "subject": "feat(FN-3926): add chat room integration tests across core and dashboard", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e7fc3a9d1", + "time": 1778635217000, + "subject": "feat(FN-4177): add heartbeat messaging support for chat rooms", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a24d601b8", + "time": 1778837006000, + "subject": "feat(FN-4583): complete Step 1 — add chat room message tail ordering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "356f49588", + "time": 1778950614000, + "subject": "feat(FN-4739): complete Step 2 — add room message clear in chat store", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ModelOnboardingModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 65, + "positiveCount": 54, + "negativeCount": 17, + "neutralCount": 1, + "timesTouched": 72, + "testOnlyCount": 10, + "testOnlyRatio": 0.139, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 12, + "test-only-churn": 10, + "test+source": 48, + "fix+source": 11, + "fix": 2 + }, + "durationMs": 7200, + "testCount": 184, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 109.1, + "ageDays": 82, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "611bfe46e", + "time": 1775339046000, + "subject": "feat(FN-812): add first-run model onboarding modal and API key provider support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d5063c6b2", + "time": 1775681670000, + "subject": "feat(FN-1196): support API-key providers in dashboard auth flow", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "055e7d84f", + "time": 1776023552000, + "subject": "test: remove waits from slow tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d3e9f160b", + "time": 1776191332000, + "subject": "feat(FN-1703): merge fusion/fn-1703", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e153864b5", + "time": 1776192524000, + "subject": "fix: wire triage recovery into SelfHealingManager and fix duplicate imports", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ea834b955", + "time": 1776229256000, + "subject": "feat(FN-1705): merge fusion/fn-1705", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/setup-test-isolation.test.ts", + "package": "packages/core", + "valueScore": 11, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix+source": 1, + "test+source": 2, + "fix": 2 + }, + "durationMs": 1300, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 108.3, + "ageDays": 67, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "fc723ce1b", + "time": 1776618814000, + "subject": "test(FN-2122): isolate HOME for core and CLI vitest runs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "caa773cb9", + "time": 1777233656000, + "subject": "feat(FN-2606): merge fusion/fn-2606 (auto-resolved)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "42c27fcc3", + "time": 1777473323000, + "subject": "fix(FN-XXX): harden windows path handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "822bde782", + "time": 1777489376000, + "subject": "test(FN-2360): harden test isolation around repo fusion state", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3db00440d", + "time": 1777581899000, + "subject": "fix(FN-000): harden vitest child process isolation", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-work-engine-dispatch.test.ts", + "package": "packages/engine", + "valueScore": 11, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 2 + }, + "durationMs": 1300, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 108.3, + "ageDays": 18, + "lastTouched": "2026-06-11", + "evidence": [ + { + "sha": "71822f26d", + "time": 1780890224000, + "subject": "feat(engine): add workflow extension plugin seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0ec7b496a", + "time": 1781063085000, + "subject": "feat(FN-000): claim workflow work in scheduler substrate", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c5b824137", + "time": 1781192608000, + "subject": "feat(FN-000): process workflow-owned merge work", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bb1b69259", + "time": 1781192608000, + "subject": "fix(FN-000): contain workflow processor runtime errors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0b11bfd79", + "time": 1781192608000, + "subject": "fix(FN-000): keep workflow processor cleanup best effort", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/websocket.test.ts", + "package": "packages/dashboard", + "valueScore": 18.5, + "positiveCount": 11, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 1, + "testOnlyRatio": 0.083, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "fix": 2, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 2100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 107.7, + "ageDays": 88, + "lastTouched": "2026-04-23", + "evidence": [ + { + "sha": "89b289993", + "time": 1774865991000, + "subject": "feat(KB-063): add realtime GitHub badge updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4927346f5", + "time": 1774900327000, + "subject": "feat(KB-136): add shared badge pub/sub for multi-instance deployments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c48c6aba6", + "time": 1774903053000, + "subject": "feat(KB-137): add GitHub App webhooks for real-time badge updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa90b69f2", + "time": 1775104582000, + "subject": "feat(KB-662): complete Step 2 — add visibility refresh tests for useProjects", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/settings-precedence.test.ts", + "package": "packages/core", + "valueScore": -1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 107.5, + "ageDays": 41, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "32228c168", + "time": 1778868463000, + "subject": "test(FN-4621): complete Step 5 — add worktrunk precedence integration test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e08a5633f", + "time": 1780516943000, + "subject": "feat(i18n): language reset-to-auto-detect + review nitpicks (#1352)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MobileWorkflowGraphView.css.test.ts", + "package": "packages/dashboard", + "valueScore": -1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 107.5, + "ageDays": 16, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "1b68107ee", + "time": 1781052984000, + "subject": "FN-6147: polish simple editor mobile button states", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "df4939a65", + "time": 1781393428000, + "subject": "FN-6385: add dashboard overflow regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "7b3c628fb", + "time": 1781691136000, + "subject": "FN-6524: add simple editor step reordering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/board-mobile-initial-render.test.tsx", + "package": "packages/dashboard", + "valueScore": -1.5, + "positiveCount": 6, + "negativeCount": 10, + "neutralCount": 0, + "timesTouched": 16, + "testOnlyCount": 5, + "testOnlyRatio": 0.313, + "signalTally": { + "added": 1, + "churn-keyword": 5, + "fix": 5, + "test+source": 5, + "test-only-churn": 5 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 107.5, + "ageDays": 42, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "dfe112026", + "time": 1778833021000, + "subject": "test(FN-4574): complete Step 3 — add mobile initial render regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9ad1b60a2", + "time": 1778833021000, + "subject": "fix(FN-4574): stabilize mobile board lifecycle regression tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "1aef3c989", + "time": 1780302634000, + "subject": "FN-5817: prevent blank dashboard after auto-merge toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6d3b1c981", + "time": 1780468391000, + "subject": "FN-5931: fix board viewport fill on narrow widths", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/executor-liveness-gate.test.ts", + "package": "packages/engine", + "valueScore": -1.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 107.5, + "ageDays": 39, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "f562c856d", + "time": 1779055355000, + "subject": "test(FN-4935): complete Step 5 — liveness gate regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f3300de37", + "time": 1779102125000, + "subject": "feat(FN-4972): merge fusion/fn-4972", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b15484428", + "time": 1780241521000, + "subject": "FN-5772: re-anchor nested task worktree paths", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useAgents.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 7, + "negativeCount": 3, + "neutralCount": 1, + "timesTouched": 11, + "testOnlyCount": 2, + "testOnlyRatio": 0.182, + "signalTally": { + "churn-keyword": 2, + "added": 1, + "test+source": 7, + "fix+source": 1, + "test-only-churn": 2 + }, + "durationMs": 800, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 106.7, + "ageDays": 78, + "lastTouched": "2026-05-27", + "evidence": [ + { + "sha": "8ef31a81c", + "time": 1775670522000, + "subject": "test(FN-1282): expand dashboard hook and modal coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "45b6b5cfa", + "time": 1776329094000, + "subject": "feat(FN-1776): expose AgentStore for SSE event forwarding with ephemeral agent filtering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b1eac88f1", + "time": 1776358386000, + "subject": "feat(FN-1868): merge fusion/fn-1868", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a95e6b012", + "time": 1777027913000, + "subject": "fix(FN-0000): stabilize automation cron scheduling and SSE coverage", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "28a2a0c37", + "time": 1777046065000, + "subject": "feat(FN-2387): unify agents view loading through useAgents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e8f147eeb", + "time": 1777987953000, + "subject": "feat(FN-3466): add mutation coverage for agent view refreshes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/version.test.ts", + "package": "packages/cli", + "valueScore": -1, + "positiveCount": 3, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 3, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 3, + "churn-keyword": 1, + "fix": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 92, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "b12d34010", + "time": 1774500793000, + "subject": "feat(HAI-081): add changesets-based automated versioning and release workflow", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "41ac7c7cc", + "time": 1776026893000, + "subject": "ci: disable automatic workflow triggers", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e7325ba99", + "time": 1776872395000, + "subject": "feat(FN-2238): clean up ephemeral agents on runtime termination", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "4f18dee00", + "time": 1776919987000, + "subject": "feat(FN-2276): merge fusion/fn-2276", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "daf6dfa2c", + "time": 1777475738000, + "subject": "fix(FN-XXX): sync workspace version on release", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "bc56ab287", + "time": 1782371609000, + "subject": "fix: align tests with recent source changes on main", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/docker-node-config.test.ts", + "package": "packages/core", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 52, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "94aab8a65", + "time": 1777946748000, + "subject": "feat(FN-3114): stabilize docker config modal recreate indicator test", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/interactive-ai-session-seam.test.ts", + "package": "packages/core", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "4dbd72d54", + "time": 1780451193000, + "subject": "feat(core,engine): add interactive AI session seam for plugin routes (U4)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/board-tablet-overflow.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 37, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "61ef09c79", + "time": 1779258240000, + "subject": "feat(FN-5281): add tablet board overflow handling and regression tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "1bc17b637", + "time": 1779593058000, + "subject": "feat(FN-5569): merge fusion/fn-5569", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/component-css-no-raw-rgba.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 36, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "9eea9f48f", + "time": 1779312525000, + "subject": "feat(FN-5126): replace hardcoded rgba shadow with design token in DesktopLa", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b4dcd291e", + "time": 1781242582000, + "subject": "FN-6256: enforce recursive raw rgba CSS hygiene", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "999163954", + "time": 1781843090000, + "subject": "FN-6677: replace raw rgba Command Center fallbacks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/shell-host.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "a6d019d70", + "time": 1778221265000, + "subject": "feat(FN-3407): normalize shell host bootstrap", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/text-token-canonicalization.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 43, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "832f29744", + "time": 1778691600000, + "subject": "test(FN-4286): add guard against deprecated text token usage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "8b93d8907", + "time": 1778691600000, + "subject": "test(FN-4286): use css fixture in text token regression guard", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "282b06949", + "time": 1781857993000, + "subject": "FN-6688: replace dashboard primary text alias", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.streaming-thread.test.tsx", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 8, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "5b9ff047d", + "time": 1781743760000, + "subject": "FN-6599: preserve chat thread during streaming attach", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ErrorBoundary.test.tsx", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 78, + "lastTouched": "2026-04-09", + "evidence": [ + { + "sha": "ed77561c4", + "time": 1775703863000, + "subject": "feat(FN-1286): add ErrorBoundary component with page-level, modal, and root-level wrapping", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.css.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 44, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "e570b1626", + "time": 1778630673000, + "subject": "feat(FN-4183): align detail source header in TaskDetailModal", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5bad80718", + "time": 1780415164000, + "subject": "FN-5879: restore desktop tab scrolling in task detail modal", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "300c31e33", + "time": 1782073541000, + "subject": "FN-6864: enable touch panning for task detail tabs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/context/__tests__/ShellHostContext.test.tsx", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "a6d019d70", + "time": 1778221265000, + "subject": "feat(FN-3407): normalize shell host bootstrap", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useProjectMarkdownFiles.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 62, + "lastTouched": "2026-04-24", + "evidence": [ + { + "sha": "86b427c12", + "time": 1777046102000, + "subject": "feat(FN-2315): add hidden markdown toggle for project documents", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/engine-import-regression.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 55, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "113f182e2", + "time": 1777651231000, + "subject": "feat(FN-3049): stabilize engine imports and add agent onboarding modal", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-tracking-periodic-reconcile-sweep.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 25, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "ffadb0c77", + "time": 1780273406000, + "subject": "FN-5792: fix GitHub auto-close reconciliation for soft-deleted tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c12e7e39f", + "time": 1781476175000, + "subject": "FN-6444: rescue dashboard route API tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-proxy.test.ts", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 71, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "cb14f838d", + "time": 1776334589000, + "subject": "feat(FN-1806): add node proxy API routes for remote node data fetching", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b48c840e7", + "time": 1777046065000, + "subject": "feat(FN-2353): add structured diagnostics for remote route failures", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-artifact-tools.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "af06170a5", + "time": 1782124454000, + "subject": "FN-6778: add agent artifact registry tools", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/auto-merge-retry-cap-settings.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 9, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "e2a3a37b2", + "time": 1781697091000, + "subject": "FN-6569: make auto-merge retry cap configurable", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/cli-agent-ask.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 11, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "a9815fb1f", + "time": 1781515841000, + "subject": "FN-6457: add ACP ask runner and bundled Claude bridge setup", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/detect-pseudo-pause.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 27, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 56, + "lastTouched": "2026-04-30", + "evidence": [ + { + "sha": "400be4487", + "time": 1777569594000, + "subject": "feat(engine): preserve branches on auto-requeue + add fn_run_verification", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/engine-singleton-lock.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "98033bc86", + "time": 1779256239000, + "subject": "feat(engine): guard one engine per project per machine", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-soft-delete-guard.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "f74c0d510", + "time": 1779201912000, + "subject": "test(FN-5137): complete Step 4-6 — soft-delete regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9fdb98061", + "time": 1779201912000, + "subject": "test(FN-5137): reset executor mocks in soft-delete guard tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b1c0a9175", + "time": 1779270454000, + "subject": "feat(FN-5195): merge fusion/fn-5195", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-step-numbering-zero-based.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 8, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "a013bc030", + "time": 1781751140000, + "subject": "FN-6607: align step tools with zero-based prompt steps", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-merge-attempt-audit.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "d898801ec", + "time": 1778975416000, + "subject": "test(FN-4809): complete Step 2 — cover merge attempt audit emission", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ba8e912aa", + "time": 1778975417000, + "subject": "test(FN-4809): complete Step 3 — cover merge attempt audit emission", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "404e202d7", + "time": 1779004382000, + "subject": "feat(FN-4809): merge fusion/fn-4809", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/mission-verification-app-driving.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 25, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 14, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "f502b1274", + "time": 1781256668000, + "subject": "feat(engine): app-driving verification channel + dispatch + determinism (U5)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/mission-verification-app-harness.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 14, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "5930c53ea", + "time": 1781255004000, + "subject": "feat(engine): isolated-app-launch harness for verification (U4)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pi-session-routing-headers.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "e17e9bc86", + "time": 1782261112000, + "subject": "feat(#1675): add X-Session-Id and X-Session-Affinity routing headers to LLM requests", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reconcile-step-regex.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 25, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 56, + "lastTouched": "2026-04-30", + "evidence": [ + { + "sha": "400be4487", + "time": 1777569594000, + "subject": "feat(engine): preserve branches on auto-requeue + add fn_run_verification", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/in-review-retry-exhausted-policy-convergence.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 34, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "fe58a57a7", + "time": 1779534325000, + "subject": "feat(FN-5536): add retry-exhausted in-review policy convergence invariant", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/merge-node-paused-abort-retryable.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 6, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "340da9240", + "time": 1781912853000, + "subject": "FN-6735: treat benign merge-seam pause aborts as retryable", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/reclaim-self-owned-resume-limbo-escalation.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 27, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "0dbb1cd6f", + "time": 1780110314000, + "subject": "FN-5704: escalate self-owned execution limbo instead of endless resume", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktree-incomplete-session-start.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 3, + "negativeCount": 5, + "neutralCount": 1, + "timesTouched": 9, + "testOnlyCount": 5, + "testOnlyRatio": 0.556, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "churn-keyword": 2, + "test-only-churn": 5, + "fix": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 39, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "56f8fc3cd", + "time": 1779052243000, + "subject": "test(FN-4917): complete Step 5 — add session-start recovery interaction coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1dffcb492", + "time": 1779052243000, + "subject": "fix(FN-4917): harden session-start recovery assertions and cap coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "434bfff37", + "time": 1779052246000, + "subject": "fix(FN-4917): stabilize workspace verification after worktree recovery changes", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "980ab593f", + "time": 1779073816000, + "subject": "test(FN-4987): complete Step 2 — assert per-classification recovery contract", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3af35ac65", + "time": 1779073816000, + "subject": "test(FN-4987): complete Step 3 — assert preserve-progress recovery semantics", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "34d196c3f", + "time": 1779073816000, + "subject": "test(FN-4987): complete Step 4 — assert exhausted retry-cap behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/retry-with-backoff.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 55, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 19, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "1afdbbbb4", + "time": 1780766148000, + "subject": "feat(engine): add structured error types and general-purpose retry with exponential backoff", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "a27921a27", + "time": 1780898618000, + "subject": "fix: address PR review feedback (#1467)", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/sandbox-wiring.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 2, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 3, + "testOnlyRatio": 0.6, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 3, + "fix+source": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 105, + "ageDays": 41, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "5d3409a9d", + "time": 1778865841000, + "subject": "test(FN-4636): complete Step 5 — add sandbox wiring integration coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6d6d71ebc", + "time": 1778872370000, + "subject": "test(FN-4643): complete Step 5 — assert verification runStreaming wiring", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d885365fa", + "time": 1778888325000, + "subject": "test(FN-4689): align sandbox wiring test with routine command signature", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6e7f1e570", + "time": 1779586776000, + "subject": "fix(dashboard): useMergeAdvanceNotice tests should waitFor toBeDefined", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "5c9f8b004", + "time": 1782424771000, + "subject": "test(engine): update sandbox-wiring timeout assertion for scope-aware default", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-release-authorization.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 9, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "0093678ee", + "time": 1781647704000, + "subject": "FN-6481: require release triage authorization", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-reanchor-nested-root.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 25, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "b15484428", + "time": 1780241521000, + "subject": "FN-5772: re-anchor nested task worktree paths", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/research/providers/__tests__/local-docs-provider.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 57, + "lastTouched": "2026-04-30", + "evidence": [ + { + "sha": "9bea0a136", + "time": 1777540879000, + "subject": "feat(FN-2993): merge fusion/fn-2993", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/research/providers/__tests__/page-fetch-provider.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 105, + "ageDays": 57, + "lastTouched": "2026-04-30", + "evidence": [ + { + "sha": "9bea0a136", + "time": 1777540879000, + "subject": "feat(FN-2993): merge fusion/fn-2993", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-hooks.test.ts", + "package": "packages/engine", + "valueScore": 9.5, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5 + }, + "durationMs": 1100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 104.8, + "ageDays": 39, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "f42a149fe", + "time": 1779064168000, + "subject": "feat(FN-4948): complete Step 1 — add task worktree identity guard installer", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "925877ba1", + "time": 1779064168000, + "subject": "test(FN-4948): complete Step 3 — add real-git precommit guard coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ac9c83c10", + "time": 1779183275000, + "subject": "test(FN-5089): add commit-msg hook coverage and wiring", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "17eb85ed8", + "time": 1779250101000, + "subject": "feat(FN-5266): add metadata-driven pre-commit identity guard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9efcf9375", + "time": 1779284525000, + "subject": "feat(FN-5271): add precommit identity guard for worktree hooks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1bffa22ca", + "time": 1779463872000, + "subject": "feat(FN-5479): fix identity-guard merger bypass on detached HEAD and gate l", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/plugin-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 12.5, + "positiveCount": 18, + "negativeCount": 10, + "neutralCount": 0, + "timesTouched": 28, + "testOnlyCount": 6, + "testOnlyRatio": 0.214, + "signalTally": { + "added-with-source": 1, + "test+source": 21, + "test-only-churn": 6, + "churn-keyword": 5 + }, + "durationMs": 1400, + "testCount": 72, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 103.7, + "ageDays": 74, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "684762e3e", + "time": 1776042639000, + "subject": "feat(FN-1493): add directory browsing UX to plugin install flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "695e90859", + "time": 1776351211000, + "subject": "feat(FN-1914): merge fusion/fn-1914", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "910c5ab38", + "time": 1776369912000, + "subject": "feat(FN-1892): merge fusion/fn-1892", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0597b34ee", + "time": 1777703555000, + "subject": "feat(FN-3079): add plugin dashboard views and dependency graph plugin", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "39ba9ab0b", + "time": 1777704403000, + "subject": "feat(FN-3066): extend plugin UI slot metadata and fix settings token fallba", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/bin-pr-router.test.ts", + "package": "packages/cli", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 38, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "e0b1e6ac3", + "time": 1779109063000, + "subject": "test(FN-4993): add AI parity and pr router coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "34c8ac9cd", + "time": 1780723730000, + "subject": "feat(pr): fn pr CLI commands, retire fn task pr-create (U8)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/experiment-finalize.test.ts", + "package": "packages/cli", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 43, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "81b1eae39", + "time": 1778757906000, + "subject": "feat(FN-4222): add experiment-finalize CLI command and API route", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "13f4d5654", + "time": 1778758952000, + "subject": "feat(FN-4460): complete Step 2 — route CLI finalize via task store accessor", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/agent.test.ts", + "package": "packages/cli", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 81, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "3fb3e819a", + "time": 1775430922000, + "subject": "feat(FN-986): add agent stop/start CLI commands and extension tools", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1ce47fd87", + "time": 1778087907000, + "subject": "feat(FN-3580): restore canonical agent lifecycle and remove terminated agen", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/message.test.ts", + "package": "packages/cli", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 79, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "7cc4ee5eb", + "time": 1775586119000, + "subject": "feat(FN-989): add inter-agent messaging system with mailbox UI and CLI commands", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d234c99c3", + "time": 1776261758000, + "subject": "refactor(FN-1633): migrate MessageStore from filesystem to SQLite backend", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/mission.test.ts", + "package": "packages/cli", + "valueScore": -0.5, + "positiveCount": 5, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 2, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 5, + "churn-keyword": 1, + "quarantine-ledger": 1 + }, + "durationMs": 100, + "testCount": 35, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 86, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "f70a7db5d", + "time": 1775031559000, + "subject": "feat(KB-635): add mission management CLI commands and engine integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d653391d3", + "time": 1775613978000, + "subject": "test(FN-1084): expand mission workflow automated test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5c521434d", + "time": 1778639919000, + "subject": "feat(FN-4124): surface mission interview drafts across mission tooling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5eacd79b4", + "time": 1779748026000, + "subject": "feat(FN-5584): merge fusion/fn-5584", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "48e08c07e", + "time": 1780416168000, + "subject": "FN-5880: recover plan-ready mission interview drafts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/goal-citations-store.test.ts", + "package": "packages/core", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 27, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "71e2aec5b", + "time": 1780068338000, + "subject": "FN-5663: add goal-citation audit trail to agent reasoning", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d72cb2ab2", + "time": 1780474218000, + "subject": "FN-5911: move agent logs to per-task JSONL storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/api-skills.test.ts", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 72, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "49ae54d6b", + "time": 1776250094000, + "subject": "feat(FN-1790): add dashboard skills API client wrappers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5c4c76513", + "time": 1780450193000, + "subject": "FN-5904: feat(FN-5904): add browse-and-install flow for skills.sh catalog in Skills view", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mobile-nav-bar-css.test.ts", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 4, + "negativeCount": 8, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 7, + "testOnlyRatio": 0.583, + "signalTally": { + "added-with-source": 1, + "fix": 3, + "test-only-churn": 7, + "test+source": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 79, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "3bb58cd9b", + "time": 1775647231000, + "subject": "feat(FN-1108): add mobile bottom navigation to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9c5dc0716", + "time": 1775735984000, + "subject": "fix(FN-1304): reduce mobile button heights from 44px to 36px", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "6430a5117", + "time": 1775775209000, + "subject": "fix(FN-1339): update CSS static-analysis tests for new stacking order", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "7acae1928", + "time": 1775800243000, + "subject": "feat(FN-1372): reduce mobile nav bar height from 56px to 48px", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7ad9bf6f6", + "time": 1775848021000, + "subject": "feat(FN-1464): merge fusion/fn-1464", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "905e6dd92", + "time": 1775930452000, + "subject": "feat(FN-1545): fix mobile More sheet safe-area padding", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mobile-planning-input-font-size.test.ts", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 3, + "testOnlyRatio": 0.6, + "signalTally": { + "added": 1, + "test-only-churn": 3, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 87, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "f44411ea2", + "time": 1774885321000, + "subject": "feat(KB-144): add mobile-safe planning mode text inputs", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5dca4d1f5", + "time": 1774981299000, + "subject": "test(KB-301): fix mobile CSS test — make regex more specific to match bare textarea selector", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3af3adbc4", + "time": 1775637967000, + "subject": "feat(FN-1107): establish dashboard mobile CSS foundation", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1bc17b637", + "time": 1779593058000, + "subject": "feat(FN-5569): merge fusion/fn-5569", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/NewTaskModal.shared-cache.test.tsx", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 36, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "5696823ea", + "time": 1779295360000, + "subject": "feat(FN-5307): merge fusion/fn-5307", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "338e7286c", + "time": 1781393428000, + "subject": "FN-6395: align viewport hook mocks in dashboard tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/mobile-dropdown-positioning.test.tsx", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test+source": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 78, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "af5701518", + "time": 1775653152000, + "subject": "feat(FN-1137): improve mobile dropdown and file browser interactions", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat.test.ts", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 68, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "9974cc701", + "time": 1776523017000, + "subject": "feat(FN-1947): add file mention search and chat autocomplete", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "66f1db122", + "time": 1780639378000, + "subject": "Fix quality-backfill suites broken by fast-tests x workflow-columns merge race", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-forced-mode.test.ts", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 46, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "95f6cd845", + "time": 1778415626000, + "subject": "feat(FN-3875): add GitHub tracking auth resolver and forced client auth mod", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e82f4bc78", + "time": 1778796338000, + "subject": "test(FN-4530): fix remaining dashboard deep-lane one-off regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d3593065e", + "time": 1782369171000, + "subject": "FN-6960: bound PR metadata generation", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-git-github.pr-push-branch.test.ts", + "package": "packages/dashboard", + "valueScore": -0.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 22, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "8891d4b90", + "time": 1780551083000, + "subject": "FN-5950: add Create PR branch-push remediation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "653b588fe", + "time": 1780557186000, + "subject": "test(dashboard): align orphaned pr-push-branch test with main's new route flow", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "df01ab71d", + "time": 1781397971000, + "subject": "FN-6402: detect PR preflight conflicts by exit code", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-assignment.test.ts", + "package": "packages/engine", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 43, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "992ae3a92", + "time": 1778678974000, + "subject": "feat(FN-4153): complete Step 2 — add permanent agent assignment selector", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "08b59c5e0", + "time": 1778678974000, + "subject": "feat(FN-4153): complete Steps 7-8 — verify gates and document toggle", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6a00dd209", + "time": 1780532082000, + "subject": "FN-5941: stop missions stalling on incompatible/custom-role agents", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-retry-storm.test.ts", + "package": "packages/engine", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "233c5bbd8", + "time": 1778797508000, + "subject": "test(FN-4398): complete Step 4 — add retry storm integration coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "652e820f7", + "time": 1778797508000, + "subject": "feat(FN-4398): complete remaining dashboard visibility and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit.integration.test.ts", + "package": "packages/engine", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 25, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 76, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "c2d0ac572", + "time": 1775838098000, + "subject": "test(FN-1414): add run-audit integration tests for core and engine", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "6b7d5d327", + "time": 1776618814000, + "subject": "test(FN-2142): replace engine heartbeat integration dependencies with fakes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/verify-worktree-invariants-missing.test.ts", + "package": "packages/engine", + "valueScore": -0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 102.5, + "ageDays": 36, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "956f9748b", + "time": 1779332042000, + "subject": "test(FN-009): add coverage for missing worktree scenario", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b15484428", + "time": 1780241521000, + "subject": "FN-5772: re-anchor nested task worktree paths", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-file-diffs.test.ts", + "package": "packages/dashboard", + "valueScore": 22.5, + "positiveCount": 12, + "negativeCount": 2, + "neutralCount": 3, + "timesTouched": 17, + "testOnlyCount": 2, + "testOnlyRatio": 0.118, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "fix+source": 7, + "churn-keyword": 3, + "test-only-churn": 2 + }, + "durationMs": 2400, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 102.1, + "ageDays": 85, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "84a048e6c", + "time": 1775089701000, + "subject": "feat(KB-651): add task file diffs API", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8a215bdc2", + "time": 1775269873000, + "subject": "feat(FN-799): align file-diffs route with session-files merge-base strategy", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c2b30ce53", + "time": 1775310225000, + "subject": "feat(FN-867): add task-scoped diff base via baseCommitSha", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4dbb37266", + "time": 1775341188000, + "subject": "feat(FN-926): filter out files with empty diffs from file-diffs endpoint", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2892ae192", + "time": 1775666124000, + "subject": "feat(FN-1193): use sha^ base for done-task diff endpoints", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/plugin-sdk-export.test.ts", + "package": "packages/cli", + "valueScore": 0, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "quarantine-ledger": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 24, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "af6e5b5ea", + "time": 1780355375000, + "subject": "FN-5842: publish plugin SDK subpath export", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e62847bd0", + "time": 1781140011000, + "subject": "fix smoke test", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "740c7127e", + "time": 1781400459000, + "subject": "FN-6409: inline core types in plugin SDK declarations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/backup.test.ts", + "package": "packages/cli", + "valueScore": 0, + "positiveCount": 4, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "test-only-churn": 2, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 85, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "07adb42d6", + "time": 1775081218000, + "subject": "feat(KB-503): merge kb/kb-503", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4f48d2d18", + "time": 1775671232000, + "subject": "feat(FN-1163): align command references with fn naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a269f4829", + "time": 1777010554000, + "subject": "refactor: remove legacy kb compatibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2baaad743", + "time": 1779332708000, + "subject": "feat(FN-5407): add paired central backup support to backup command and stor", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/desktop.test.ts", + "package": "packages/cli", + "valueScore": 0, + "positiveCount": 3, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "fix+source": 1, + "test+source": 2, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 79, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "ecf0eb6d8", + "time": 1775637605000, + "subject": "feat(FN-1073): add desktop CLI workflow and packaging support", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "ef9b4edd1", + "time": 1775774982000, + "subject": "fix(FN-1339): move executor status bar above mobile nav bar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "39e833b91", + "time": 1776461503000, + "subject": "feat(FN-2014): merge fusion/fn-2014", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "7ef381762", + "time": 1782025057000, + "subject": "feat: start engines by default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/app-version.test.ts", + "package": "packages/core", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 20, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 77, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "ed275f202", + "time": 1775772859000, + "subject": "feat(FN-1246): add app version tracking and sync infrastructure", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1c4573ca9", + "time": 1775839371000, + "subject": "fix(FN-1537): stabilize CI workflows and fix version tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/automation.test.ts", + "package": "packages/core", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 78, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "f31a74dea", + "time": 1775668109000, + "subject": "test(FN-1280): add automation module coverage tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a95e6b012", + "time": 1777027913000, + "subject": "fix(FN-0000): stabilize automation cron scheduling and SSE coverage", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/node-discovery.test.ts", + "package": "packages/core", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 78, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "29e247560", + "time": 1775685514000, + "subject": "feat(FN-1222): add distributed node discovery APIs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/secrets-env.test.ts", + "package": "packages/core", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "7955a7878", + "time": 1779109520000, + "subject": "feat(FN-5031): add dedicated secrets-env contract test in core and document canonical test locations", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "98c0f10a3", + "time": 1779109520000, + "subject": "feat(FN-5031): complete Step 1 — add focused core secretsEnv contract test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/vitest-workers.test.ts", + "package": "packages/core", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 53, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "0bb923b04", + "time": 1777827103000, + "subject": "feat(FN-3263): strengthen worker-budget regression test coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f6394cc22", + "time": 1778093508000, + "subject": "test(FN-3607): harden test workflow verification and isolation checks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/chat-tool-calls-mobile-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "fix": 2 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 50, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "fbdfc5bed", + "time": 1778101050000, + "subject": "feat(FN-3602): compact mobile chat tool-call density and layout", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "b29352575", + "time": 1782423472000, + "subject": "fix(dashboard): repair CSS token/contrast regressions and stale tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/index-html-theme-link.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 39, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "007fb43da", + "time": 1779039474000, + "subject": "test(FN-4916): complete Step 3 — add theme link regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ba066c88a", + "time": 1779471441000, + "subject": "feat(FN-5488): merge fusion/fn-5488", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModal.backup.css.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 43, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "22bc13f0d", + "time": 1778678974000, + "subject": "test(FN-4141): complete Step 5 — add backup CSS contract coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModal.memory-editor.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "93f74cc63", + "time": 1778728116000, + "subject": "test(FN-4416): guard mobile memory editor min-height regression", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1f5f55662", + "time": 1778728117000, + "subject": "test(FN-4416): handle multi-file mobile media blocks in CSS regression", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal-source-issue-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 43, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "1a9af9bc4", + "time": 1778678974000, + "subject": "test(FN-4267): complete Step 2 — add source issue layout CSS regression test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.github-tracking-enable.css.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 44, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "6417f00e9", + "time": 1778651521000, + "subject": "feat(FN-4163): make github tracking enable button compact on desktop", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a8de122d6", + "time": 1778678974000, + "subject": "test(FN-4164): complete Step 3 — guard mobile enable button touch target", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowResultsTab.css.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "e4cb32520", + "time": 1778688379000, + "subject": "feat(FN-4242): add CSS regression test for WorkflowResultsTab", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a80d4f360", + "time": 1778703077000, + "subject": "test(FN-4352): complete Step 3 — add workflow mobile compactness regression", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/filePathLinkify.test.tsx", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 44, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "25e76d61d", + "time": 1778648143000, + "subject": "feat(FN-4227): add clickable file path links across dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "72a58a775", + "time": 1778652578000, + "subject": "test(FN-4264): add file path wrapping regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "78969e320", + "time": 1778678973000, + "subject": "test(FN-4270): complete Step 3 — add file path link style regression", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/command-center-pricing-docs.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 4, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "55266b6e9", + "time": 1782084510000, + "subject": "FN-6874: document Command Center pricing semantics", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b29352575", + "time": 1782423472000, + "subject": "fix(dashboard): repair CSS token/contrast regressions and stale tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/dashboard-guide.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 51, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "02a0c48ba", + "time": 1777987953000, + "subject": "feat(FN-3446): expand dashboard guide view sections and add regression test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e151cf2c5", + "time": 1778481370000, + "subject": "feat(FN-3974): document reports view in dashboard guide", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/remote-access-headless.test.ts", + "package": "packages/dashboard", + "valueScore": 0, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 60, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "e5ed69692", + "time": 1777205892000, + "subject": "feat(FN-2523): add safe restart restore lifecycle diagnostics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4379922cc", + "time": 1777220343000, + "subject": "feat(FN-2585): remove top-level remote access toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e087f5ec5", + "time": 1777229383000, + "subject": "feat(FN-2586): merge fusion/fn-2586", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fe663a498", + "time": 1778231861000, + "subject": "feat(FN-3725): add shell regression matrix and stabilize action gate and ro", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "38adeba79", + "time": 1779238300000, + "subject": "test(dashboard): stub getSelfHealingManager on remote-access engine mock", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/openclaw-runtime-integration.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 59, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3c387444d", + "time": 1777316311000, + "subject": "test(FN-2712): add runtime e2e and integration coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "836ca6807", + "time": 1778202018000, + "subject": "feat(FN-3717): add OpenClaw MCP bridge (+5 more)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/auto-recovery-message-delivery.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "650e6443f", + "time": 1778822204000, + "subject": "test(FN-4545): add reliability interaction coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "05ecf1fb4", + "time": 1778822204000, + "subject": "feat(FN-4545): complete Step 10 — documentation and delivery artifacts", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/executor-no-task-done-vs-worktree-reclaim.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 2, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 3, + "added": 1, + "fix+source": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 41, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "5bef3daf4", + "time": 1778855243000, + "subject": "test(FN-4601): add retry race reliability interaction coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "3f8a5e683", + "time": 1778969765000, + "subject": "fix(FN-4806): silently recover when worktree/branch reclaimed mid-retry", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "434bfff37", + "time": 1779052246000, + "subject": "fix(FN-4917): stabilize workspace verification after worktree recovery changes", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "0257bdf9d", + "time": 1780595807000, + "subject": "fix(ci): align tests/docs with issue-fix commits (recoveryRehome args, pi-ai mock Unknown/Record, new agent tools doc, hex-pattern comment reword)", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/scheduler-ephemeral-toggle.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "b16dc2dbe", + "time": 1778678974000, + "subject": "test(FN-4153): complete Step 5 — add scheduler ephemeral toggle integration coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "08b59c5e0", + "time": 1778678974000, + "subject": "feat(FN-4153): complete Steps 7-8 — verify gates and document toggle", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-refinement-routing.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "fa79a7321", + "time": 1778881517000, + "subject": "test(FN-4657): complete Step 3 — add refinement routing regressions", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "055c87cd1", + "time": 1778881517000, + "subject": "test(FN-4657): complete Step 5 — fix verification TS regression", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-step-template-verdicts.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "bacef5be8", + "time": 1778787019000, + "subject": "test(FN-4493): complete Step 4 — add template parser interop tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a877425cf", + "time": 1778787019000, + "subject": "test(FN-4493): refine Step 4 parser interop coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-stale-registration.test.ts", + "package": "packages/engine", + "valueScore": 0, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 38, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "6fc0f5ceb", + "time": 1779144661000, + "subject": "feat(FN-5063): merge fusion/fn-5063", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7cfda7434", + "time": 1779590164000, + "subject": "test(engine): remove machine-specific paths from test fixtures", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "934f2f0d0", + "time": 1780883507000, + "subject": "FN-6004: add execFile to engine child_process test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/architecture-hot-paths.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 74, + "lastTouched": "2026-04-17", + "evidence": [ + { + "sha": "428b8f7b1", + "time": 1776032007000, + "subject": "Harden architecture hot paths", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "437de996a", + "time": 1776468975000, + "subject": "feat(FN-1978): rename schedule actions to Automation and polish mobile layout", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-test-helpers.shared.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 200, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "743324f8a", + "time": 1778995197000, + "subject": "feat(FN-4837): complete Step 1 — shared store harness", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/toast-theme-contrast.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 4, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "24c1c023a", + "time": 1782073541000, + "subject": "FN-6858: fix toast contrast across Shadcn themes", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.cli-mount.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 21, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a67ad70bf", + "time": 1780950778000, + "subject": "FN-6003: wrap dashboard chat and review tests in async act", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/stuck-and-agent-card-border.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 6, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "fec197afd", + "time": 1781956317000, + "subject": "FN-6774: remove colored card edge accents", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/agent-log-routes.integration.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "d72cb2ab2", + "time": 1780474218000, + "subject": "FN-5911: move agent logs to per-task JSONL storage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/insight-run-sweeper.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 38, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "6c1732d23", + "time": 1779140780000, + "subject": "feat(FN-5076): merge fusion/fn-5076", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "061d28a8a", + "time": 1779238267000, + "subject": "test(dashboard): fix insight-run-sweeper Database constructor usage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/pr-merged-auto-done.integration.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 39, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "73454fae5", + "time": 1779045111000, + "subject": "feat(FN-4762): complete Step 3 — PR merge routes and dashboard controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "49990a1b1", + "time": 1779243008000, + "subject": "test(dashboard): align PR-reviews/PR-merged tests with current signatures", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/sandbox-wiring-audit.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "e4769ea88", + "time": 1778887182000, + "subject": "feat(FN-4640): wire sandbox auditor through executor and merger", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b2fb268bf", + "time": 1778888325000, + "subject": "test(FN-4689): complete Step 3 — update sandbox wiring audit expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/ipc/__tests__/ipc-worker.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 200, + "testCount": 25, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/central-identity-recovery.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 34, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "687237bd9", + "time": 1779535135000, + "subject": "feat(FN-5411): add project identity recovery and identity-aware startup rea", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/mission-goals-link.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 23, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "30a09e342", + "time": 1780436501000, + "subject": "FN-5896: persist mission-goal linkage in schema", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-agent-log-file.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "d72cb2ab2", + "time": 1780474218000, + "subject": "FN-5911: move agent logs to per-task JSONL storage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-review-comments.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "cfadcf383", + "time": 1779043158000, + "subject": "feat(FN-4761): complete Step 1 — core review comment ingestion", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-stale-paused-review.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "0188c18f8", + "time": 1778808930000, + "subject": "feat(FN-4452): complete Step 2 — hydrate stale paused review", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-stale-paused-todo.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "d192154b2", + "time": 1779185425000, + "subject": "feat(FN-5034): complete Step 4 — hydrate stale paused todo in TaskStore", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.hash-mention.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "12a6ee9af", + "time": 1779275560000, + "subject": "feat(FN-5218): add hash mentions to chat composers and popups", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MilestoneSliceInterviewModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 4, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added": 1, + "test+source": 4, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 300, + "testCount": 18, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 77, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "4eb802909", + "time": 1775811645000, + "subject": "test(FN-1368): tests for planning UI and interview modal", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "07cc2019f", + "time": 1776122404000, + "subject": "feat(FN-1700): merge fusion/fn-1700", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d227c6416", + "time": 1777707477000, + "subject": "feat(FN-3139): add planning comment input to interview modals and show in c", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2d72eddb9", + "time": 1777884184000, + "subject": "feat(FN-3343): add Escape key keyboard handling to modals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-pool-secrets-env-cleanup.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "48caf2814", + "time": 1779085761000, + "subject": "test(FN-4912): complete Step 9 — add env materialization verification coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/__tests__/runtime.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "58723312d", + "time": 1780655081000, + "subject": "feat: bootstrap cli-agent runtime and wire executor, transport, chat, and recovery seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/eval-store.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1, + "test+source": 4 + }, + "durationMs": 500, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 51, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "24a91131d", + "time": 1778007713000, + "subject": "feat(FN-3387): add eval domain with store and persistence schema", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c497b373", + "time": 1778051155000, + "subject": "docs(FN-3538): clarify pause-safe stuck timeout behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "6a599d607", + "time": 1778072705000, + "subject": "feat(FN-3389): fix scheduled evaluator integration types", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6c9f87f71", + "time": 1778090945000, + "subject": "feat(FN-3390): export eval score category type and harden evaluator switch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2413ccb39", + "time": 1778099903000, + "subject": "feat(FN-3391): persist evaluator evidence with score categories", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "52c673a4c", + "time": 1778122555000, + "subject": "feat(FN-3392): implement follow-up suggestion contract and policy system", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/auto-recovery-branch-worktree.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 500, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 42, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "5e1a5a55b", + "time": 1778810785000, + "subject": "feat(FN-4536): complete auto-recovery branch/worktree handler", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3605c6792", + "time": 1779000287000, + "subject": "feat(FN-4791): add core secrets store for secure key-value storage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "9ce26eef2", + "time": 1779528578000, + "subject": "fix(engine): un-deadcode bootstrap-misbinding auto-recovery fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/message-notification-pipeline.integration.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1 + }, + "durationMs": 500, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 47, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "61e941c74", + "time": 1778360641000, + "subject": "docs(FN-3887): clarify ntfy allowlist requirement for agent messages", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "670970341", + "time": 1778604084000, + "subject": "fix(FN-4127): harden ntfy notification delivery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/__tests__/task-session.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 600, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "c1c99a9de", + "time": 1780642872000, + "subject": "feat(engine): wire cli-agent executor seam and task session lifecycle (U7)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b9afce306", + "time": 1780656114000, + "subject": "fix(review): schema-version gate, output-filter escape-bypass, generic double-wrap, follow-up resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-skills.test.ts", + "package": "packages/dashboard", + "valueScore": 14, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "added": 1, + "test+source": 2, + "fix+source": 3, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 1500, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 100, + "ageDays": 72, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "fe5b208c2", + "time": 1776197704000, + "subject": "feat(FN-1812): merge fusion/fn-1812", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "721136384", + "time": 1777524493000, + "subject": "feat(FN-3003): merge fusion/fn-3003", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a3617850f", + "time": 1777529301000, + "subject": "fix(heartbeat): per-agent HEARTBEAT.md and phase-aligned scheduler", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ffa116a23", + "time": 1777529618000, + "subject": "fix(FN-3005): preserve card timer across reruns", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2e949895e", + "time": 1777529691000, + "subject": "fix(FN-3005): restore unrelated heartbeat files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a34c81951", + "time": 1777665257000, + "subject": "feat(FN-3033): align agent asset directory naming and heartbeat path compat", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/App.test.tsx", + "package": "packages/dashboard", + "valueScore": 152.5, + "positiveCount": 114, + "negativeCount": 27, + "neutralCount": 4, + "timesTouched": 145, + "testOnlyCount": 18, + "testOnlyRatio": 0.124, + "signalTally": { + "added-with-source": 1, + "test+source": 101, + "churn-keyword": 18, + "test-only-churn": 18, + "fix+source": 21, + "fix": 4 + }, + "durationMs": 14600, + "testCount": 131, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 95.1, + "ageDays": 90, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "abdb2e649", + "time": 1774656641000, + "subject": "feat(KB-132): auto-open Settings to Authentication tab when unauthenticated", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "36873e57c", + "time": 1774729823000, + "subject": "feat(KB-145): add global pause button to halt all AI engine activity", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f82316180", + "time": 1774729823000, + "subject": "feat(KB-157): add soft-pause (enginePaused) alongside hard-stop (globalPause)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "6dabb8036", + "time": 1774732634000, + "subject": "feat(KB-180): rename pause button titles from 'AI engine' to 'scheduling'", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f85f28c2", + "time": 1774736056000, + "subject": "feat(KB-184): change autoMerge default from false to true", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c782c60af", + "time": 1774831228000, + "subject": "feat(KB-002): add interactive GitHub issue import", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/mission-store.test.ts", + "package": "packages/core", + "valueScore": 169.5, + "positiveCount": 116, + "negativeCount": 23, + "neutralCount": 2, + "timesTouched": 141, + "testOnlyCount": 12, + "testOnlyRatio": 0.085, + "signalTally": { + "added-with-source": 1, + "test+source": 109, + "test-only-churn": 12, + "churn-keyword": 13, + "fix+source": 17, + "fix": 2 + }, + "durationMs": 16000, + "testCount": 261, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 93.8, + "ageDays": 86, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "27c789512", + "time": 1775006903000, + "subject": "feat(KB-632): add MissionStore with missions database schema", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "57f34d193", + "time": 1775012425000, + "subject": "feat(KB-336): rename data directory from .kb to .fusion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "398fa26dd", + "time": 1775079726000, + "subject": "feat(FN-686): persist mission linkage on linked tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "950c78c79", + "time": 1775350983000, + "subject": "feat(FN-938): add feature triage, mission pause/stop/resume, and scheduler blocked check", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e0d773f60", + "time": 1775412256000, + "subject": "feat(FN-972): auto-triage features when slice activated with autoAdvance", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentsView.test.tsx", + "package": "packages/dashboard", + "valueScore": 112.5, + "positiveCount": 78, + "negativeCount": 12, + "neutralCount": 2, + "timesTouched": 92, + "testOnlyCount": 9, + "testOnlyRatio": 0.098, + "signalTally": { + "added-with-source": 1, + "fix+source": 13, + "test+source": 67, + "fix": 2, + "churn-keyword": 8, + "test-only-churn": 9 + }, + "durationMs": 10600, + "testCount": 125, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 93.4, + "ageDays": 86, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "67dde25a9", + "time": 1775024732000, + "subject": "feat(KB-659): add Agents view toggle to main view selector", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1f8465342", + "time": 1775177464000, + "subject": "fix(FN-000): scope dashboard project flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "772492b3e", + "time": 1775246556000, + "subject": "feat(FN-785): style Agents view state selector and document controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "30a466e91", + "time": 1775274872000, + "subject": "feat(FN-806): replace hardcoded border-radius with dashboard token in agent-create-form", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "127b98e7f", + "time": 1775307695000, + "subject": "feat(FN-863): tokenize create-row input and select styling in Agents View", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ee74c7842", + "time": 1775308475000, + "subject": "feat(FN-864): add delete action for idle and terminated agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useProjectFileEditor.test.ts", + "package": "packages/dashboard", + "valueScore": 4.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 500, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 90.9, + "ageDays": 87, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "f8622daee", + "time": 1774915610000, + "subject": "feat(KB-104): move file browser from task modal to toolbar", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f2c00ad14", + "time": 1774945617000, + "subject": "feat(KB-175): move file browser to header with workspace support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "96608d1ee", + "time": 1774981167000, + "subject": "test(KB-301): fix useProjectFileEditor tests — wrap async save assertions in act() and waitFor()", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PluginManager.test.tsx", + "package": "packages/dashboard", + "valueScore": 32, + "positiveCount": 25, + "negativeCount": 6, + "neutralCount": 1, + "timesTouched": 32, + "testOnlyCount": 5, + "testOnlyRatio": 0.156, + "signalTally": { + "added-with-source": 1, + "test+source": 22, + "fix+source": 3, + "churn-keyword": 3, + "fix": 1, + "test-only-churn": 5 + }, + "durationMs": 3000, + "testCount": 58, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 90.9, + "ageDays": 76, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "80869dba8", + "time": 1775888439000, + "subject": "feat(FN-1413): merge fusion/fn-1413", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "684762e3e", + "time": 1776042639000, + "subject": "feat(FN-1493): add directory browsing UX to plugin install flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e740df66c", + "time": 1776227456000, + "subject": "feat(FN-1779): merge fusion/fn-1779", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa9c2e79d", + "time": 1776248948000, + "subject": "fix(FN-1801): plugin settings UX and theme awareness improvements", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e3eab12ad", + "time": 1776934633000, + "subject": "feat(FN-2235): align Settings Plugins UI with tokenized dashboard styles", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a95e6b012", + "time": 1777027913000, + "subject": "fix(FN-0000): stabilize automation cron scheduling and SSE coverage", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/navigation-history.test.tsx", + "package": "packages/dashboard", + "valueScore": 20, + "positiveCount": 13, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 16, + "testOnlyCount": 1, + "testOnlyRatio": 0.063, + "signalTally": { + "added-with-source": 1, + "fix": 2, + "test+source": 10, + "churn-keyword": 2, + "test-only-churn": 1, + "fix+source": 2 + }, + "durationMs": 1900, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 90.5, + "ageDays": 53, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "00a4e5a43", + "time": 1777865832000, + "subject": "feat(FN-3344): add navigation history hook unit and integration tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d3a2ecd62", + "time": 1778018777000, + "subject": "fix(FN-002): update integration tests for desktop back-button support", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "2d107ea01", + "time": 1778018777000, + "subject": "fix(FN-002): tighten pushState assertions to be action-specific per PR feedback", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "c32999b29", + "time": 1778199851000, + "subject": "feat(FN-3394): add evals dashboard view with API routes and client hooks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "efdc6c462", + "time": 1778630673000, + "subject": "feat(FN-4139): add swipe-back navigation to chat, mission, and planning flo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SkillsView.test.tsx", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 7, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 2, + "testOnlyRatio": 0.182, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "fix+source": 2, + "test+source": 6, + "churn-keyword": 2 + }, + "durationMs": 900, + "testCount": 60, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 90, + "ageDays": 72, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "8287730d6", + "time": 1776250856000, + "subject": "feat(FN-1792): merge fusion/fn-1792", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bbecfd097", + "time": 1776302597000, + "subject": "feat(FN-1793): merge fusion/fn-1793", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e98eb9063", + "time": 1776470769000, + "subject": "fix(FN-1987): move skills search to top and improve catalog fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "5edd49130", + "time": 1776511106000, + "subject": "feat(FN-1913): add skill content viewer to SkillsView", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5499405fc", + "time": 1776546587000, + "subject": "feat(FN-1986): improve skills content loading and mobile detail UX", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "17339046e", + "time": 1777146032000, + "subject": "fix(FN-2510): harden skills catalog fallback for short and invalid queries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useChat.test.ts", + "package": "packages/dashboard", + "valueScore": 69.5, + "positiveCount": 40, + "negativeCount": 6, + "neutralCount": 1, + "timesTouched": 47, + "testOnlyCount": 4, + "testOnlyRatio": 0.085, + "signalTally": { + "added-with-source": 1, + "test+source": 29, + "fix+source": 11, + "fix": 2, + "test-only-churn": 4, + "churn-keyword": 3 + }, + "durationMs": 6300, + "testCount": 98, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 89.4, + "ageDays": 77, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "640e38922", + "time": 1775810527000, + "subject": "feat(FN-1361): add chat view with SSE streaming and session management", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "70f2af665", + "time": 1776119381000, + "subject": "feat(FN-1680): merge fusion/fn-1680", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "414297d63", + "time": 1776217594000, + "subject": "feat(FN-1857): merge fusion/fn-1857", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "763848eb7", + "time": 1776242981000, + "subject": "feat(FN-1549): simplify chat creation with agent-only selection and auto title", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "df7362236", + "time": 1776343654000, + "subject": "fix(FN-1817): enrich session list with lastMessagePreview and restore active session on remount", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d32db262f", + "time": 1776430860000, + "subject": "fix(FN-1995): preserve backend chat message order", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/architecture-schema-compat.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 400, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 88.9, + "ageDays": 47, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "ed5c49c46", + "time": 1778374025000, + "subject": "feat(FN-3887): generalize schema compatibility reconciliation across schema", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "db1bbda36", + "time": 1778597231000, + "subject": "feat(FN-4094): cache schema compatibility checks with fingerprint fast path", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useProjectFileBrowser.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 400, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 88.9, + "ageDays": 87, + "lastTouched": "2026-03-31", + "evidence": [ + { + "sha": "f8622daee", + "time": 1774915610000, + "subject": "feat(KB-104): move file browser from task modal to toolbar", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f2c00ad14", + "time": 1774945617000, + "subject": "feat(KB-175): move file browser to header with workspace support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-auto-prerebase.real-git.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 400, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 88.9, + "ageDays": 38, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "e93863ca4", + "time": 1779110452000, + "subject": "feat(FN-4958): complete Step 3 — wire auto-prerebase into merger", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "394b9adc9", + "time": 1779514977000, + "subject": "feat(FN-5518): merge fusion/fn-5518", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/areas/__tests__/areas.test.tsx", + "package": "packages/dashboard", + "valueScore": 26.5, + "positiveCount": 21, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 25, + "testOnlyCount": 1, + "testOnlyRatio": 0.04, + "signalTally": { + "added-with-source": 1, + "test+source": 23, + "test-only-churn": 1, + "churn-keyword": 3 + }, + "durationMs": 2400, + "testCount": 74, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 87.3, + "ageDays": 10, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "ed3c572a8", + "time": 1781578640000, + "subject": "feat(command-center): U5 — historical analytics areas + date-range filtering", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61f389ed3", + "time": 1781614571000, + "subject": "Address PR review feedback (#1683)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "662a09b63", + "time": 1781819507000, + "subject": "FN-6656: add live activity trend charts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f41732d04", + "time": 1781821677000, + "subject": "FN-6652: add live token usage timeline", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "504305e1c", + "time": 1781824732000, + "subject": "FN-6653: add GitHub issue analytics to Command Center", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "64092ca0a", + "time": 1781826716000, + "subject": "FN-6654: add Command Center agent-run sheets", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useUsageData.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 300, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 85.7, + "ageDays": 85, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "5b8f83d96", + "time": 1775105843000, + "subject": "feat(KB-662): add visibility-based refresh to dashboard hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cf3b9a575", + "time": 1780417482000, + "subject": "FN-5886: show empty usage state after empty fetch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/pi-extensions.test.ts", + "package": "packages/core", + "valueScore": 6, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 2, + "fix+source": 1 + }, + "durationMs": 600, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 85.7, + "ageDays": 39, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "87d259b36", + "time": 1779039941000, + "subject": "feat(FN-4904): complete Step 1 — promote worktree root resolver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b40a58d69", + "time": 1779039941000, + "subject": "test(FN-4904): add core resolver integration coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "24076970b", + "time": 1779073776000, + "subject": "feat(FN-4926): add fn_task_list regression tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7d1708f02", + "time": 1780382360000, + "subject": "FN-5851: fix goal tool store resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "85c3420f9", + "time": 1781018381000, + "subject": "fix(FN-6079): resolve task tools from merge worktrees", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "94b7cf01b", + "time": 1781034680000, + "subject": "FN-6102: guard spawnSync lookup in pi extensions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowNodeEditor.cli-agent.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 500, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 83.3, + "ageDays": 21, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "243113a3c", + "time": 1780644627000, + "subject": "feat: cli-agent adapter settings, autonomy approval gate, and node editor config (U15)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aa8bd3dc9", + "time": 1780967688000, + "subject": "fix(FN-6043): recover stuck task processing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useMemoryData.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 500, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 83.3, + "ageDays": 68, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "4341ceb52", + "time": 1776514317000, + "subject": "feat(FN-1910): add detailed QMD memory management workflow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1c96fee50", + "time": 1777411555000, + "subject": "feat(FN-2732): add manual dream processing actions in dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "71ad9a823", + "time": 1777411555000, + "subject": "feat(FN-2848): add manual memory dream API trigger", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DocumentsView.test.tsx", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 1000, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 83.3, + "ageDays": 67, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "6e3503b81", + "time": 1776618813000, + "subject": "feat(FN-2030): add project markdown explorer to Documents view", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6969a82d6", + "time": 1776870264000, + "subject": "feat(FN-2218): add Markdown/Raw toggle for task documents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "86b427c12", + "time": 1777046102000, + "subject": "feat(FN-2315): add hidden markdown toggle for project documents", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "4bfb6b46a", + "time": 1781692179000, + "subject": "FN-6528: add selection comments for new tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ef4889585", + "time": 1782082867000, + "subject": "FN-6779: add artifacts gallery to Documents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e77f785fb", + "time": 1782093336000, + "subject": "FN-6890: rename documents navigation to artifacts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-fn-secret-get.test.ts", + "package": "packages/cli", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 400, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 80, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "83ed89338", + "time": 1779024180000, + "subject": "feat(FN-4879): merge fusion/fn-4879", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cbd3c961d", + "time": 1779051272000, + "subject": "fix(FN-4915): harden fn_secret_get secret audit payload guard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d6679618f", + "time": 1779068802000, + "subject": "test(FN-4867): complete Step 3 — strengthen fn_secret_get scope coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-merge-queue.test.ts", + "package": "packages/core", + "valueScore": 29, + "positiveCount": 26, + "negativeCount": 8, + "neutralCount": 0, + "timesTouched": 34, + "testOnlyCount": 5, + "testOnlyRatio": 0.147, + "signalTally": { + "added-with-source": 1, + "test+source": 26, + "test-only-churn": 5, + "churn-keyword": 4, + "fix": 1, + "fix+source": 1 + }, + "durationMs": 2400, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 80, + "ageDays": 37, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "6b24b56b8", + "time": 1779250489000, + "subject": "feat(FN-5242): add merge queue storage and lease API to task store", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0c2416903", + "time": 1779396025000, + "subject": "feat(FN-5363): enforce strict target lease to prevent merge queue pollution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8df21a6b6", + "time": 1779402613000, + "subject": "feat(FN-5353): fix merge-reuse handoff race by gating reacquire and strict", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f6f38676b", + "time": 1779406231000, + "subject": "feat(FN-5226): add scope auto-widen layer 2.5 to merger for attribution-bas", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4d1cad027", + "time": 1779533405000, + "subject": "feat(FN-5444): add merge handoff test coverage for task worktree", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5eacd79b4", + "time": 1779748026000, + "subject": "feat(FN-5584): merge fusion/fn-5584", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pi-create-fn-agent.test.ts", + "package": "packages/engine", + "valueScore": 83, + "positiveCount": 49, + "negativeCount": 11, + "neutralCount": 2, + "timesTouched": 62, + "testOnlyCount": 5, + "testOnlyRatio": 0.081, + "signalTally": { + "fix+source": 16, + "added-with-source": 1, + "test+source": 40, + "churn-keyword": 8, + "test-only-churn": 5, + "fix": 1 + }, + "durationMs": 6600, + "testCount": 69, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 78.6, + "ageDays": 84, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "ca7c2ca0e", + "time": 1775193527000, + "subject": "fix(FN-766): load pi extension providers for engine", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "0f16463ec", + "time": 1775286153000, + "subject": "feat(FN-828): lock in compaction behavior with comments and regression tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ef3136d60", + "time": 1775452650000, + "subject": "fix(engine): fall back to provider template for unrecognized model IDs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "03f010cf6", + "time": 1775804385000, + "subject": "feat(FN-1430): add worktree execution boundaries to prevent out-of-scope modifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5ec72ba3f", + "time": 1775964514000, + "subject": "Harden dashboard worktree shutdown handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "eebd70540", + "time": 1775965346000, + "subject": "fix engine build and test resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/NodeDetailModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 500, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 76.9, + "ageDays": 70, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "2cca71945", + "time": 1776350287000, + "subject": "feat(FN-1825): merge fusion/fn-1825", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "19a06a6a2", + "time": 1776353888000, + "subject": "feat(FN-1826): merge fusion/fn-1826", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d9835970e", + "time": 1777745979000, + "subject": "feat(FN-3107): merge fusion/fn-3107", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2522b1991", + "time": 1777786428000, + "subject": "feat(FN-3108): deliver docker node onboarding and node workflow updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5dcb739bb", + "time": 1777900332000, + "subject": "feat(FN-3112): tokenize NodesView border-radius and motion styles", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "94aab8a65", + "time": 1777946748000, + "subject": "feat(FN-3114): stabilize docker config modal recreate indicator test", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ListView.test.tsx", + "package": "packages/dashboard", + "valueScore": 146.5, + "positiveCount": 99, + "negativeCount": 20, + "neutralCount": 1, + "timesTouched": 120, + "testOnlyCount": 14, + "testOnlyRatio": 0.117, + "signalTally": { + "added-with-source": 2, + "test+source": 87, + "fix+source": 13, + "churn-keyword": 7, + "test-only-churn": 14, + "fix": 4 + }, + "durationMs": 11300, + "testCount": 187, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 76.6, + "ageDays": 88, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "017653439", + "time": 1774831983000, + "subject": "feat(KB-005): add ListView component with board/list view toggle", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c51538085", + "time": 1774835032000, + "subject": "feat(KB-019): add grouped list view with section headers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9060979a1", + "time": 1774835736000, + "subject": "feat(KB-020): add column visibility toggle to list view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b93bcc0ef", + "time": 1774838204000, + "subject": "fix(KB-043): fix type errors and test failures across all packages", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d64638a51", + "time": 1774838751000, + "subject": "feat(KB-049): add hide done tasks toggle to list view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c8c0336f3", + "time": 1774838921000, + "subject": "feat(KB-046): add InlineCreateCard to ListView triage section", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PiExtensionsManager.test.tsx", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 1 + }, + "durationMs": 800, + "testCount": 32, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 76.2, + "ageDays": 69, + "lastTouched": "2026-04-24", + "evidence": [ + { + "sha": "3e095c1d2", + "time": 1776488084000, + "subject": "feat(FN-2035): introduce PiExtensionsManager for settings UI parity", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2fd586f6d", + "time": 1776519101000, + "subject": "feat(FN-1944): add Pi settings package management flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3491e1606", + "time": 1776947903000, + "subject": "feat(FN-2271): optimize chat sidebar layout for mobile and desktop", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8cc83a639", + "time": 1776957853000, + "subject": "fix(FN-2278): align Pi extensions source badges and toggle styling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "606de5d14", + "time": 1777046102000, + "subject": "feat(FN-2394): add Fusion reinstall flow for Pi extensions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/cron-runner.test.ts", + "package": "packages/engine", + "valueScore": 22, + "positiveCount": 16, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 21, + "testOnlyCount": 4, + "testOnlyRatio": 0.19, + "signalTally": { + "added-with-source": 1, + "test+source": 12, + "test-only-churn": 4, + "fix+source": 4, + "churn-keyword": 2 + }, + "durationMs": 1700, + "testCount": 99, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 73.9, + "ageDays": 87, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "4c38950e5", + "time": 1774913243000, + "subject": "feat(KB-045): add scheduled tasks automation system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7569af8a9", + "time": 1774959270000, + "subject": "feat(KB-229): add multi-step scheduled tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "483809035", + "time": 1774982701000, + "subject": "test(KB-315): enhance cron-runner and worktree-pool test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a22676b1d", + "time": 1775586048000, + "subject": "feat(FN-1053): add AI prompt executor for cron workflow steps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "04f835f82", + "time": 1775776484000, + "subject": "feat(FN-1399): add background memory summarization after task completion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/run-audit.test.ts", + "package": "packages/core", + "valueScore": 108, + "positiveCount": 81, + "negativeCount": 18, + "neutralCount": 2, + "timesTouched": 101, + "testOnlyCount": 8, + "testOnlyRatio": 0.079, + "signalTally": { + "added-with-source": 1, + "test+source": 80, + "test-only-churn": 8, + "churn-keyword": 12, + "fix+source": 11, + "fix": 1, + "quarantine-ledger": 1 + }, + "durationMs": 8000, + "testCount": 28, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 73.4, + "ageDays": 77, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "bc9e919a0", + "time": 1775777956000, + "subject": "feat(FN-1403): add run audit system with SQLite persistence", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e40444443", + "time": 1775793979000, + "subject": "feat(FN-1259): add review handoff mechanism for user assignment", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3c58dbe08", + "time": 1775808321000, + "subject": "feat(FN-1266): add dashboard API integration tests for budget endpoints", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "91d4c113e", + "time": 1775831173000, + "subject": "feat(FN-1532): add performance indexes for dashboard boot queries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2e65bc76f", + "time": 1775879927000, + "subject": "test(FN-1567): update schema version assertions to v29", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3b849c47d", + "time": 1775881794000, + "subject": "feat(FN-1567): add mission contract assertions model types and APIs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-documents.test.ts", + "package": "packages/core", + "valueScore": 122, + "positiveCount": 89, + "negativeCount": 18, + "neutralCount": 2, + "timesTouched": 109, + "testOnlyCount": 8, + "testOnlyRatio": 0.073, + "signalTally": { + "added-with-source": 1, + "test+source": 88, + "fix+source": 11, + "test-only-churn": 8, + "churn-keyword": 13, + "fix": 1 + }, + "durationMs": 9000, + "testCount": 32, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 73.2, + "ageDays": 78, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "bae9d8cd2", + "time": 1775675381000, + "subject": "feat(FN-1270): add task document storage with revision history", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4aa1cbdba", + "time": 1775690072000, + "subject": "feat(FN-1153): add cross-tab locks for AI planning sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f227dba29", + "time": 1775692904000, + "subject": "feat(FN-1253): implement task checkout leasing end-to-end", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "697814d9e", + "time": 1775755022000, + "subject": "feat(FN-1260): add full-text search for tasks and comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fd412447e", + "time": 1775757501000, + "subject": "feat(FN-1359): add ChatStore for session and message management", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "27991efdf", + "time": 1775759013000, + "subject": "fix(FN-1371): replace placeholder MiniMax and Z.ai logos with real brand icons", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-planning.test.ts", + "package": "packages/dashboard", + "valueScore": 25, + "positiveCount": 19, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 24, + "testOnlyCount": 3, + "testOnlyRatio": 0.125, + "signalTally": { + "added": 1, + "test+source": 18, + "test-only-churn": 3, + "fix+source": 2, + "churn-keyword": 2 + }, + "durationMs": 1900, + "testCount": 101, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 73.1, + "ageDays": 54, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "cb3ab98e7", + "time": 1777954882000, + "subject": "feat(FN-3447): add planning session rewind capability with modal back actio", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1a79fa711", + "time": 1778005925000, + "subject": "feat(FN-3209): fix refine continuation flow in planning mode and add local", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c6d12ba5a", + "time": 1778195005000, + "subject": "feat(FN-3716): add planning mode priority controls for task routes and subt", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5ee049b83", + "time": 1778389869000, + "subject": "feat(FN-3214): add branch selection contract to planning routes and subtask", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ca0cb2b52", + "time": 1778597230000, + "subject": "feat(FN-4076): tighten mobile agents header and popup, add compact planning", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ScheduleForm.test.tsx", + "package": "packages/dashboard", + "valueScore": 15.5, + "positiveCount": 9, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "fix+source": 1 + }, + "durationMs": 1200, + "testCount": 59, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 72.7, + "ageDays": 87, + "lastTouched": "2026-04-16", + "evidence": [ + { + "sha": "4c38950e5", + "time": 1774913243000, + "subject": "feat(KB-045): add scheduled tasks automation system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "740ea9aee", + "time": 1774921324000, + "subject": "feat(KB-228): add schedule time presets", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "139456a3c", + "time": 1775012015000, + "subject": "fix(KB-649): fix multi-step scheduled task editor step addition and validation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ebfab59d7", + "time": 1776267115000, + "subject": "feat(FN-1873): replace model provider/ID inputs with standard model selector in schedule steps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9c31c1136", + "time": 1776268701000, + "subject": "feat(FN-1874): add command/AI prompt type toggle to schedule form simple mode", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/central-core.test.ts", + "package": "packages/core", + "valueScore": 29.5, + "positiveCount": 22, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 27, + "testOnlyCount": 2, + "testOnlyRatio": 0.074, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 3, + "fix+source": 1, + "fix": 2, + "test-only-churn": 2, + "test+source": 21 + }, + "durationMs": 2100, + "testCount": 167, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 68.9, + "ageDays": 86, + "lastTouched": "2026-06-11", + "evidence": [ + { + "sha": "1937adc7b", + "time": 1775012399000, + "subject": "feat(KB-500): add central infrastructure for multi-project support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "805e15eb8", + "time": 1775060390000, + "subject": "fix(FN-690): fix migration schema, dashboard type guards, and test stability", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "58fb961af", + "time": 1775075633000, + "subject": "fix(FN-679): sync task prompts when task metadata changes", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "339c05860", + "time": 1775078641000, + "subject": "feat(FN-681): add openai-codex provider support", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7224e383c", + "time": 1775455762000, + "subject": "feat(FN-1023): add project status reconciliation and apply to GET /api/projects route", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/docker.test.ts", + "package": "packages/cli", + "valueScore": 0.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test+source": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 78, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "44d0b400d", + "time": 1775656535000, + "subject": "feat(FN-1226): add production Docker workflow", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "2e3c94f4d", + "time": 1775763243000, + "subject": "feat(FN-1228): add Node Dashboard UI with mesh topology and routes tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b3219a7f4", + "time": 1777958230000, + "subject": "feat(FN-3411): document docker provisioning endpoints", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/pr-command.test.ts", + "package": "packages/cli", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 20, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "34c8ac9cd", + "time": 1780723730000, + "subject": "feat(pr): fn pr CLI commands, retire fn task pr-create (U8)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "841ff9d83", + "time": 1780729793000, + "subject": "Address PR review feedback (#1461)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/update.test.ts", + "package": "packages/cli", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 52, + "lastTouched": "2026-05-28", + "evidence": [ + { + "sha": "9dc727597", + "time": 1777929505000, + "subject": "feat(FN-3310): add fn update command to CLI reference", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b96b0bc79", + "time": 1780005015000, + "subject": "feat(FN-5632): add collision retry logic to fn update command", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/app-cli-action-wiring.test.tsx", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 11, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "cd2da104f", + "time": 1781515748000, + "subject": "FN-6458: wire CLI session banner actions", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "863ebfaa9", + "time": 1781515841000, + "subject": "FN-6464: add CLI session relaunch route", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentErrorDetailsModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "churn-keyword": 1, + "fix": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 45, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "42087ddfe", + "time": 1778526260000, + "subject": "feat(FN-4015): classify and recover from stale module-resolution incidents", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "2fd96d51c", + "time": 1779099422000, + "subject": "feat(FN-4960): merge fusion/fn-4960", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "6aa1ff0fb", + "time": 1779594241000, + "subject": "feat(FN-5475): add allow-resurrection control to task delete flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DevServerLogViewer.test.tsx", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 66, + "lastTouched": "2026-04-24", + "evidence": [ + { + "sha": "99cafa3a4", + "time": 1776724652000, + "subject": "feat(FN-2170): add dev-server preview detection and log viewer flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0d8d69b2b", + "time": 1777062588000, + "subject": "feat(FN-2482): add severity filtering for dashboard logs", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/LlamaCppProviderCard.test.tsx", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 52, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "b7ac46ece", + "time": 1777915118000, + "subject": "feat(FN-3195): document llama.cpp provider setup and onboarding", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "483916472", + "time": 1777970818000, + "subject": "feat(FN-3431): align llama.cpp compact layout and merge recovery coverage", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PrChecksList.test.tsx", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 2, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 2, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 39, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "a58c5df69", + "time": 1779032991000, + "subject": "feat(FN-4760): complete Step 4 — add PR checks list UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "770b7c858", + "time": 1779088839000, + "subject": "test(FN-5012): guard PR-flow CSS against mobile button overrides", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "48bd4d0b3", + "time": 1779088839000, + "subject": "test(FN-5012): tighten PrChecksList mobile selector regression", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "54bb1651b", + "time": 1779108219000, + "subject": "test(FN-5024): complete Step 2 — cover PrChecksList focus-visible selectors", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/SdlcFunnel.test.tsx", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 10, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "5bc8901f0", + "time": 1781579759000, + "subject": "feat(command-center): U7 — SDLC funnel + throughput", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "58a34e9cf", + "time": 1781789108000, + "subject": "FN-6631: fix Command Center completion gauges", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/usePreviewEmbed.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 66, + "lastTouched": "2026-04-21", + "evidence": [ + { + "sha": "9e1d52e42", + "time": 1776739712000, + "subject": "feat(FN-2172): add embedded dev server preview panel", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "315892a28", + "time": 1776748207000, + "subject": "feat(FN-2173): add auto-fallback flow for dev server preview", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-auth.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 46, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "95f6cd845", + "time": 1778415626000, + "subject": "feat(FN-3875): add GitHub tracking auth resolver and forced client auth mod", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2535de9f0", + "time": 1778542396000, + "subject": "feat(FN-4032): add tracking retry with actionable create issue error in tas", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-create-pr.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 38, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "60d3da739", + "time": 1779109063000, + "subject": "feat(FN-4993): wire pr create flags router and AI metadata parity", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d3593065e", + "time": 1782369171000, + "subject": "FN-6960: bound PR metadata generation", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-issue-comment.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 60, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "e2bc644fd", + "time": 1777252269000, + "subject": "feat(FN-2623): merge fusion/fn-2623", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-tracking-documentation.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test+source": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 47, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "314ec4e21", + "time": 1778401723000, + "subject": "feat(FN-3913): add GitHub tracking guide section to task-management docs", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "cedf07c1f", + "time": 1778452449000, + "subject": "feat(FN-3953): enable tracking issue creation on task edit and document the", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ebb867ea4", + "time": 1778547309000, + "subject": "feat(FN-4044): restore github tracking patch persistence", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "87da1cb75", + "time": 1779243827000, + "subject": "test(dashboard): align github-tracking-documentation phrases with current docs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-git-github.pr-errors.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 39, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "26c3d330d", + "time": 1779054511000, + "subject": "feat(FN-4764): complete Step 2-4 — surface structured gh errors in API UI CLI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d3593065e", + "time": 1782369171000, + "subject": "FN-6960: bound PR metadata generation", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-git-github.pr-options-preflight-metadata.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 37, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "ba1604835", + "time": 1779211537000, + "subject": "feat(FN-5144): add create PR metadata and preflight routes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cf8062287", + "time": 1780889933000, + "subject": "FN-5993: prevent PR metadata generation hangs", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "df01ab71d", + "time": 1781397971000, + "subject": "FN-6402: detect PR preflight conflicts by exit code", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d3593065e", + "time": 1782369171000, + "subject": "FN-6960: bound PR metadata generation", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/update-check-route.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 60, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "04157d0ad", + "time": 1777281584000, + "subject": "feat(FN-2664): add dashboard updates check endpoint and settings flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e8c2d516a", + "time": 1781393428000, + "subject": "FN-6386: add one-click update installation", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/register-agent-skills-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 23, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "5c4c76513", + "time": 1780450193000, + "subject": "FN-5904: feat(FN-5904): add browse-and-install flow for skills.sh catalog in Skills view", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "5697d2c98", + "time": 1782154192000, + "subject": "feat(dashboard): Skills detail renders SKILL.md as markdown + compact file browser", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/cli-agent-validator.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 21, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "8bac390e1", + "time": 1780643757000, + "subject": "feat(engine): cli-agent one-shot sessions for validator, planning, and CE (U9)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a9815fb1f", + "time": 1781515841000, + "subject": "FN-6457: add ACP ask runner and bundled Claude bridge setup", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/interactive-ai-session.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 23, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "4dbd72d54", + "time": 1780451193000, + "subject": "feat(core,engine): add interactive AI session seam for plugin routes (U4)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "8bac390e1", + "time": 1780643757000, + "subject": "feat(engine): cli-agent one-shot sessions for validator, planning, and CE (U9)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a9815fb1f", + "time": 1781515841000, + "subject": "FN-6457: add ACP ask runner and bundled Claude bridge setup", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "621003160", + "time": 1781859412000, + "subject": "FN-6689: route planning executor selection", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pi-prompt-section-compaction.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 47, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "44252e8c8", + "time": 1778358107000, + "subject": "feat(FN-3877): add section-aware prompt compaction for triage task specific", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b8beb22a5", + "time": 1778597230000, + "subject": "feat(FN-4082): compact reviewer prompts and retry on context limits", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/recovery-policy.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 83, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "8c246b036", + "time": 1775228325000, + "subject": "feat(FN-775): add recoverable-retry with bounded exponential backoff", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/mission-validator-behavioral-posture.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 14, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "483c71b01", + "time": 1781252194000, + "subject": "feat(engine): default-to-fail posture + non-mutating verification run (U2,U3)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2a3783958", + "time": 1781253088000, + "subject": "feat(engine): fix-feature dedup, inconclusive routing, durable events (U6)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/retry-burned-logger.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "9230c80fb", + "time": 1778797508000, + "subject": "feat(FN-4398): complete Step 3 — wire retry-burned logging and caps", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "652e820f7", + "time": 1778797508000, + "subject": "feat(FN-4398): complete remaining dashboard visibility and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/step-runner.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 21, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "3d03505a6", + "time": 1780599045000, + "subject": "feat(engine): U2 — runTaskStep/resetStepToBaseline substrate seams with blast-radius guard (RETHINK extraction)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a013bc030", + "time": 1781751140000, + "subject": "FN-6607: align step tools with zero-based prompt steps", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/transient-merge-error-classifier.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 14, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "9a71b1c7d", + "time": 1781228509000, + "subject": "FN-6242: recover transient spawn merge failures", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "2085610e9", + "time": 1781272169000, + "subject": "FN-6246: move AI merge clean rooms into repo storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-pool-double-lease.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test+source": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "dd234d21e", + "time": 1779077858000, + "subject": "test(FN-4954): complete Step 2 — reproduce pool rehydrate double-lease race", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "7e90bce8b", + "time": 1779077858000, + "subject": "feat(FN-4954): harden pool leasing invariants and wire runtime auditing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b8514b658", + "time": 1779077858000, + "subject": "test(FN-4954): cover pool double-lease throw and fresh fallback", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3cae2a30b", + "time": 1779081102000, + "subject": "feat(FN-5000): merge fusion/fn-5000", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/github-tracking-settings.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 46, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "44c26e341", + "time": 1778418386000, + "subject": "feat(FN-3876): add GitHub tracking test coverage across settings, issues, s", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/no-op-moved-cleanup-migration.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "1761a7ffd", + "time": 1780518017000, + "subject": "FN-5940: stop logging no-op task:moved activity rows", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/plugin-hot-reload.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 77, + "lastTouched": "2026-04-24", + "evidence": [ + { + "sha": "e0c7b2863", + "time": 1775787353000, + "subject": "feat(FN-1133): add plugin hot-reload support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "422b32410", + "time": 1777011118000, + "subject": "fix(FN-000): stabilize failing tests and trim slow waits", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/settings-consistency.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 21, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "cb9a3f1cc", + "time": 1780641690000, + "subject": "feat(settings): surface sweep for the hard-move — export v2 with workflowSettings, sync moved-key filtering, CLI redirect hints, consistency guard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e22afece5", + "time": 1781236381000, + "subject": "FN-6233: add typed triage policy settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b6ac5f2e5", + "time": 1781771229000, + "subject": "FN-6608: bound engine verification runs", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/signals-analytics.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 6, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "898ac1e85", + "time": 1781874260000, + "subject": "FN-6698: back command center signals with incidents", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-effective-node-fields.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 58, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "13c72659d", + "time": 1777411555000, + "subject": "feat(FN-2854): ship node routing persistence and dashboard workflow updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-partial-update.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "d3a2c8863", + "time": 1780888526000, + "subject": "FN-5945: narrow hot task updates to changed columns", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/dashboard-css-token-validity.css.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 7, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "87e87a8f1", + "time": 1781868421000, + "subject": "FN-6693: enforce dashboard CSS token references", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/settings-primitives.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 24, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "5e52f6a3f", + "time": 1780635604000, + "subject": "feat(dashboard): shared schema-driven settings UI primitives", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatQuestionResponse.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 9, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "a4537167a", + "time": 1781665993000, + "subject": "FN-6501: render chat question response controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ConnectNodeModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 77, + "lastTouched": "2026-04-18", + "evidence": [ + { + "sha": "0304df348", + "time": 1775763710000, + "subject": "feat(FN-1228): enhance MeshTopology with peer awareness and status legend", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7affac3d4", + "time": 1776540074000, + "subject": "fix(FN-2055): harden node test utilities and import resolution", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DroidCliProviderCard.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 200, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 55, + "lastTouched": "2026-05-02", + "evidence": [ + { + "sha": "17d45b8fe", + "time": 1777637719000, + "subject": "feat(FN-2980): add droid cli provider card to onboarding", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2948ffac7", + "time": 1777652050000, + "subject": "feat(FN-2981): add droid-cli auth and status routes with experimental agent", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c6fcebc14", + "time": 1777746308000, + "subject": "feat(FN-3129): add tokenized footer and mobile initialization to MissionMan", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MissionManager.goal-links.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 9, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "963362cd4", + "time": 1781647704000, + "subject": "FN-6490: add mission-goal linking controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsSyncConflictModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 70, + "lastTouched": "2026-04-16", + "evidence": [ + { + "sha": "19a06a6a2", + "time": 1776353888000, + "subject": "feat(FN-1826): merge fusion/fn-1826", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SetupProjectForm.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 71, + "lastTouched": "2026-04-16", + "evidence": [ + { + "sha": "c9e7f83d9", + "time": 1776339485000, + "subject": "feat(FN-1804): merge fusion/fn-1804", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.custom-fields.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "5fa5740af", + "time": 1780601165000, + "subject": "feat(dashboard,cli): U13 — schema-driven task fields UI (TaskFieldsSection, card badges, PATCH route, board-workflows fields payload, TUI chips)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3ebaa321f", + "time": 1780606915000, + "subject": "fix(review): apply code-review fixes — runId/foreachNodeId wiring, worktree-leak cleanup, rework re-execution, instance pruning, SIGKILL fallback, type dedup, board memo split, agent-native field-schema context + fn_workflow_get", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TrackingRepoSelect.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 40, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "51c60fe1b", + "time": 1778948433000, + "subject": "feat(FN-4731): add tracking repo dropdown to settings modal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useAgentLogs.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "4cbdd157c", + "time": 1779419208000, + "subject": "feat(FN-5469): add useAgentLogs resume instrumentation and test coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useDiscoveredSkillsCache.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "cfc70b21b", + "time": 1779272384000, + "subject": "feat(FN-5202): add SWR caching for chat agents, skills, and models", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useModelsCache.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "cfc70b21b", + "time": 1779272384000, + "subject": "feat(FN-5202): add SWR caching for chat agents, skills, and models", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/usePluginUiContributions.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 51, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "c630a94ef", + "time": 1778058845000, + "subject": "feat(FN-3564): isolate plugin loader test state to prevent cross-test conta", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useTasks.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 36, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "1913cb59f", + "time": 1779332329000, + "subject": "feat(FN-5389): add resume event instrumentation with SSE, hooks, and diagno", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useTasks.stale-trace.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "f9cf3f1bd", + "time": 1779070319000, + "subject": "feat(FN-4921): merge fusion/fn-4921", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useUpdateCheck.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 60, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "e80850e7c", + "time": 1777279207000, + "subject": "feat(FN-2663): add cached update-check setting, APIs, and banner", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/planning-document-tools-exposure.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 7, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "0ed46d900", + "time": 1781792582000, + "subject": "FN-6640: expose planning task document tools", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-prompt-sizes-integration.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "9a462388b", + "time": 1779043748000, + "subject": "feat(FN-4928): complete Step 2 — fix prompt-sizes SQL and add real DB regression test", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/workflow-migrate-route.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "d8ff8db75", + "time": 1780637605000, + "subject": "feat(core,dashboard): lazy idempotent legacy-step migration into workflow templates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/branch-worktree-auto-recovery.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "5e1a5a55b", + "time": 1778810785000, + "subject": "feat(FN-4536): complete auto-recovery branch/worktree handler", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/concurrent-execute-race.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "8bef30655", + "time": 1778982903000, + "subject": "fix(FN-4811): close concurrent-execute race that produced parallel runs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/secrets-env-materialization.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "48caf2814", + "time": 1779085761000, + "subject": "test(FN-4912): complete Step 9 — add env materialization verification coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/research-dispatcher.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "f4590ef90", + "time": 1778734360000, + "subject": "feat(FN-4221): complete Step 3 — wire research dispatcher into engine", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useNodeSettingsSync.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 3 + }, + "durationMs": 300, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 70, + "lastTouched": "2026-06-11", + "evidence": [ + { + "sha": "de8c92b42", + "time": 1776349386000, + "subject": "feat(FN-1824): merge fusion/fn-1824", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a4044e2b0", + "time": 1777049084000, + "subject": "feat(FN-2456): persist task token usage on task records", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "7ddf58d63", + "time": 1781158749000, + "subject": "FN-6208: sync workflow settings across nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07d5262a8", + "time": 1781194883000, + "subject": "FN-6208: sync workflow settings across nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-mail-cleanup.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 300, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 40, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "96be8d4cd", + "time": 1778953428000, + "subject": "feat(FN-4743): complete Step 3 — wire mail cleanup into maintenance", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fd202e935", + "time": 1779320607000, + "subject": "feat(FN-5329): remove orphan rescue and branch-recovery primitives from eng", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DevServerView.preview.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 4 + }, + "durationMs": 400, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 66, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "9e1d52e42", + "time": 1776739712000, + "subject": "feat(FN-2172): add embedded dev server preview panel", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "315892a28", + "time": 1776748207000, + "subject": "feat(FN-2173): add auto-fallback flow for dev server preview", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "53e3f351d", + "time": 1776898388000, + "subject": "feat(FN-2262): merge fusion/fn-2262 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "331d28312", + "time": 1776900690000, + "subject": "test(dashboard): realign DevServer tests with session-based component", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e9a6955b4", + "time": 1782258458000, + "subject": "FN-6939: add narrow dock preview modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/adapters/__tests__/generic.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 400, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "f3b700aa5", + "time": 1780641273000, + "subject": "feat(engine): add generic heuristic-tier cli-agent adapter (U6)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b9afce306", + "time": 1780656114000, + "subject": "fix(review): schema-version gate, output-filter escape-bypass, generic double-wrap, follow-up resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/migration-orchestrator.test.ts", + "package": "packages/core", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 500, + "testCount": 27, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 86, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "9d898aa88", + "time": 1775032842000, + "subject": "feat(KB-504): add multi-project migration system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5661188a6", + "time": 1777474738000, + "subject": "fix(FN-0000): harden sqlite startup validation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AddNodeModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4 + }, + "durationMs": 600, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 71, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "87b40c9f3", + "time": 1776306473000, + "subject": "feat(FN-1846): add mobile responsive styles for node modals", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d9835970e", + "time": 1777745979000, + "subject": "feat(FN-3107): merge fusion/fn-3107", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2522b1991", + "time": 1777786428000, + "subject": "feat(FN-3108): deliver docker node onboarding and node workflow updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "65a9371d3", + "time": 1778207394000, + "subject": "feat(FN-3505): add node onboarding mapping flow with asset-gated bundling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9f60a0da5", + "time": 1778221265000, + "subject": "feat(FN-3506): add discovery contract and integrate remote node discovery i", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/setup-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "test+source": 4, + "churn-keyword": 1 + }, + "durationMs": 800, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 57, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "5661188a6", + "time": 1777474738000, + "subject": "fix(FN-0000): harden sqlite startup validation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "b56306c42", + "time": 1778517173000, + "subject": "feat(FN-3905): use merger session model for post-merge workflow steps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7d2a98d2b", + "time": 1778517885000, + "subject": "feat(FN-4012): restore workspace verification in chat room routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useInsights.test.ts", + "package": "packages/dashboard", + "valueScore": 14, + "positiveCount": 9, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 2, + "testOnlyRatio": 0.182, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "fix+source": 1, + "fix": 1, + "test-only-churn": 2 + }, + "durationMs": 1000, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 71, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "a5188bb5e", + "time": 1776295130000, + "subject": "feat(FN-1708): add InsightsView UI with section rendering and action UX", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8de7feeb1", + "time": 1776380114000, + "subject": "feat(FN-1974): merge fusion/fn-1974", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f04b49804", + "time": 1776419881000, + "subject": "fix(FN-1989): display all generated insight categories", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "3f0aa6e3c", + "time": 1777810664000, + "subject": "feat(FN-3017): add insights coverage contracts, AgentsOverviewBar component", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "20fc4f842", + "time": 1777963646000, + "subject": "feat(FN-3315): add test coverage for archived insights in three test suites", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/git-repository.test.ts", + "package": "packages/core", + "valueScore": 17, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 6, + "added-with-source": 1, + "churn-keyword": 1 + }, + "durationMs": 1200, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 66.7, + "ageDays": 20, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "db971a91e", + "time": 1780731508000, + "subject": "fix(FN-1455): initialize git during project registration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "a9ea1f6fe", + "time": 1782281645000, + "subject": "fix(workspace): skip git init for workspace-mode project roots", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "cab375a6f", + "time": 1782285397000, + "subject": "fix(workspace): detect sub-repos when workspace.json is missing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ff155b9df", + "time": 1782285991000, + "subject": "fix(workspace): exclude node_modules from detection, best-effort save", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "42342eff0", + "time": 1782314196000, + "subject": "fix(workspace): respect explicit workspaceMode:false, improve exclusion test", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "11ffca161", + "time": 1782315415000, + "subject": "fix(workspace): persist workspaceMode:true in config.json, let save errors propagate", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-token-usage.test.ts", + "package": "packages/core", + "valueScore": 11.5, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 3, + "fix+source": 2 + }, + "durationMs": 800, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 64, + "ageDays": 45, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "deff107d9", + "time": 1778507262000, + "subject": "feat(FN-3978): split monolithic TaskStore test suite into focused domain fi", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "d0815470f", + "time": 1778735018000, + "subject": "feat(FN-4389): complete Step 1 — extend token usage mapping", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bc226da92", + "time": 1778735018000, + "subject": "fix(FN-4389): preserve legacy token usage rows with null cache writes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c857bea62", + "time": 1778771020000, + "subject": "feat(FN-4396): complete Step 3 — migrate and persist token budget fields", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f8dcc7bb6", + "time": 1778771020000, + "subject": "fix(FN-4396): support token budget fields in updateTask", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ef544597d", + "time": 1781827091000, + "subject": "FN-6665: group token analytics by runtime model", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useBackgroundSessions.test.ts", + "package": "packages/dashboard", + "valueScore": 15, + "positiveCount": 8, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 2, + "testOnlyRatio": 0.182, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 4, + "fix+source": 4, + "churn-keyword": 1 + }, + "durationMs": 1000, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 62.5, + "ageDays": 78, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "2a34ebe6c", + "time": 1775692115000, + "subject": "feat(FN-1154): sync AI session state across browser tabs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bf141c47d", + "time": 1775697216000, + "subject": "test(FN-1156): add AI session lifecycle and reconnect coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "97e153b75", + "time": 1775788517000, + "subject": "feat(FN-1456): add explicit abandon flow for planning and subtask AI sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e4b05b1c4", + "time": 1776026792000, + "subject": "fix(FN-1620): show error sessions in notification banner", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3a05ea019", + "time": 1776575240000, + "subject": "feat(FN-2092): merge fusion/fn-2092", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9d943f850", + "time": 1776618814000, + "subject": "test(FN-2125): add refresh fetch rejection regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MemoryView.test.tsx", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test+source": 5, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 400, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 61.5, + "ageDays": 61, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "6eacbc47e", + "time": 1777164872000, + "subject": "feat(FN-2544): stabilize memory backend status loading UX", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "1c96fee50", + "time": 1777411555000, + "subject": "feat(FN-2732): add manual dream processing actions in dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "aed253e38", + "time": 1777411555000, + "subject": "test(FN-2733): expand memory dreams regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "93ecf83a1", + "time": 1777723744000, + "subject": "feat(FN-3198): improve ListView split-pane UX and add agent runs tab", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ca2800208", + "time": 1778361603000, + "subject": "feat(FN-3890): include MemoryView in dashboard quality test allowlist", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4bfb6b46a", + "time": 1781692179000, + "subject": "FN-6528: add selection comments for new tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/FileBrowserModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 25, + "positiveCount": 19, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 24, + "testOnlyCount": 4, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 14, + "fix": 3, + "test-only-churn": 4, + "fix+source": 2, + "churn-keyword": 2 + }, + "durationMs": 1600, + "testCount": 38, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 61.5, + "ageDays": 87, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "6db4e785c", + "time": 1774925435000, + "subject": "feat(KB-246): add mobile support to FileBrowserModal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f2c00ad14", + "time": 1774945617000, + "subject": "feat(KB-175): move file browser to header with workspace support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa90b69f2", + "time": 1775104582000, + "subject": "feat(KB-662): complete Step 2 — add visibility refresh tests for useProjects", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9fa8f5f22", + "time": 1775267405000, + "subject": "feat(FN-801): show hidden files in workspace file listings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "69bc0db44", + "time": 1775664454000, + "subject": "fix(FN-1162): keep mobile file browser header controls accessible", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TerminalModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 84, + "positiveCount": 51, + "negativeCount": 12, + "neutralCount": 5, + "timesTouched": 68, + "testOnlyCount": 5, + "testOnlyRatio": 0.074, + "signalTally": { + "added-with-source": 2, + "test+source": 38, + "test-only-churn": 5, + "fix+source": 21, + "churn-keyword": 13, + "fix": 2 + }, + "durationMs": 5200, + "testCount": 152, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 61.2, + "ageDays": 88, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "f24ce6bbb", + "time": 1774837630000, + "subject": "feat(KB-028): add multi-agent terminal view", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e24050de6", + "time": 1774843171000, + "subject": "feat(KB-057): complete Step 3 — TerminalModal component with interactive shell UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c6f4c2d24", + "time": 1774843797000, + "subject": "feat(KB-057): add interactive terminal to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "33bfe2553", + "time": 1774843868000, + "subject": "feat(KB-057): add interactive terminal to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d990edd94", + "time": 1774852463000, + "subject": "feat(KB-058): complete Step 7 — add tests for terminal service and hook", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/branch-group-entry-point-e2e.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1 + }, + "durationMs": 300, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 60, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "3bea12f5d", + "time": 1780508903000, + "subject": "test(FN-branch-group): end-to-end planning + mission single-PR flows (U8)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/notification-service.test.ts", + "package": "packages/engine", + "valueScore": 16, + "positiveCount": 12, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 17, + "testOnlyCount": 4, + "testOnlyRatio": 0.235, + "signalTally": { + "added-with-source": 1, + "test+source": 10, + "fix+source": 2, + "test-only-churn": 4, + "churn-keyword": 1 + }, + "durationMs": 1000, + "testCount": 42, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 58.8, + "ageDays": 58, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "e782636c4", + "time": 1777411556000, + "subject": "feat(FN-2866): wire provider-backed notification service into engine", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1231db4a1", + "time": 1778079178000, + "subject": "feat(FN-3584): add memory file markdown preview to agent detail and log vie", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fdf387b22", + "time": 1778304347000, + "subject": "feat(FN-3800): add session switcher to chat header and mobile switcher", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7bf93e850", + "time": 1778349732000, + "subject": "fix(FN-3825): surface inline notification test feedback in settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2d3af5b6c", + "time": 1778363936000, + "subject": "fix(FN-3886): resolve peer agent names in mail and notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2d46a882f", + "time": 1778597231000, + "subject": "feat(FN-4078): add ntfy access token support to notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/init.test.ts", + "package": "packages/cli", + "valueScore": 23, + "positiveCount": 15, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 17, + "testOnlyCount": 2, + "testOnlyRatio": 0.118, + "signalTally": { + "added-with-source": 1, + "fix": 2, + "fix+source": 6, + "test+source": 6, + "test-only-churn": 2, + "churn-keyword": 1, + "quarantine-ledger": 1 + }, + "durationMs": 1400, + "testCount": 20, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 58.3, + "ageDays": 84, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "18a2b3ec3", + "time": 1775146725000, + "subject": "feat(KB-620): complete Step 7 — Migration and first-run experience", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "371ec764b", + "time": 1775177725000, + "subject": "fix(FN-000): harden project migration runtime", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "ca72ec81a", + "time": 1775362063000, + "subject": "fix(FN-952): activate projects after CLI registration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b56818866", + "time": 1776195909000, + "subject": "feat(FN-1798): merge fusion/fn-1798", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "35c89af4b", + "time": 1776395529000, + "subject": "fix(FN-1952): use fusion storage for pi config", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "39cbfaba0", + "time": 1776438996000, + "subject": "fix(FN-000): simplify qmd memory settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/RoutineEditor.test.tsx", + "package": "packages/dashboard", + "valueScore": 14.5, + "positiveCount": 7, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 2, + "fix": 1 + }, + "durationMs": 900, + "testCount": 44, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 58.1, + "ageDays": 77, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "eab57af28", + "time": 1775815645000, + "subject": "feat(FN-1275): add Routines tab to ScheduledTasksModal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "653a25ecd", + "time": 1776299778000, + "subject": "feat(FN-1717): add scope selection controls to dashboard UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a1f6b2524", + "time": 1776405480000, + "subject": "feat(FN-1979): add routine cron presets", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bab976159", + "time": 1776406060000, + "subject": "fix(FN-1952): recover routines schedules merge", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "49ec14c46", + "time": 1776407949000, + "subject": "fix(FN-1981): sync routine scope toggle state and submission", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1d1f1f0da", + "time": 1777096484000, + "subject": "feat(FN-2408): merge fusion/fn-2408", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/GitHubImportModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 37, + "positiveCount": 23, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 26, + "testOnlyCount": 2, + "testOnlyRatio": 0.077, + "signalTally": { + "added-with-source": 2, + "test+source": 18, + "fix": 1, + "churn-keyword": 1, + "test-only-churn": 2, + "fix+source": 3 + }, + "durationMs": 2200, + "testCount": 82, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 57.9, + "ageDays": 88, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "c782c60af", + "time": 1774831228000, + "subject": "feat(KB-002): add interactive GitHub issue import", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e95e50ba6", + "time": 1774832267000, + "subject": "feat(KB-015): add git remote selection to GitHub import modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f83e2112", + "time": 1774833188000, + "subject": "feat(KB-018): simplify GitHub import modal remote selection", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c9535023d", + "time": 1774880847000, + "subject": "feat(KB-094): redesign GitHub import modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f137d0ccf", + "time": 1774918709000, + "subject": "feat(KB-216): implement auto-load behavior for GitHub import modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PreviewIframe.test.tsx", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1, + "fix": 1 + }, + "durationMs": 200, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 57.1, + "ageDays": 66, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "9e1d52e42", + "time": 1776739712000, + "subject": "feat(FN-2172): add embedded dev server preview panel", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "315892a28", + "time": 1776748207000, + "subject": "feat(FN-2173): add auto-fallback flow for dev server preview", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/dev-server-manager-persistence.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 57.1, + "ageDays": 67, + "lastTouched": "2026-05-02", + "evidence": [ + { + "sha": "687c4ac0c", + "time": 1776656894000, + "subject": "feat(FN-2168): add persistent dev-server dashboard flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0df323434", + "time": 1776656894000, + "subject": "feat(FN-2181): add dashboard dev-server process manager and API routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1e6714e4d", + "time": 1777762638000, + "subject": "chore(test): add cross-worktree test lock and clean up dev-server test child", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/compound-engineering-skill-resolution.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 57.1, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "6d12ee3e9", + "time": 1780451981000, + "subject": "feat(compound-engineering): bundle and install ce-* pipeline skills (U2)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f5be21178", + "time": 1780458901000, + "subject": "feat(core,engine,compound-engineering): make CE sub-agent sessions load their skills", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-runs.test.ts", + "package": "packages/dashboard", + "valueScore": 27, + "positiveCount": 18, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 21, + "testOnlyCount": 1, + "testOnlyRatio": 0.048, + "signalTally": { + "added-with-source": 1, + "test+source": 16, + "churn-keyword": 2, + "fix+source": 2, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 1600, + "testCount": 58, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 57.1, + "ageDays": 79, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "637556343", + "time": 1775597892000, + "subject": "feat(FN-1059): add manual heartbeat run trigger with execution details in agent UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fb7edec4d", + "time": 1775602509000, + "subject": "feat(FN-1061): add heartbeat trigger scheduling for agent wakeup", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "750911a80", + "time": 1775634273000, + "subject": "feat(FN-1085): align agent routing and runtime contracts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e3aa02d58", + "time": 1775690254000, + "subject": "feat(FN-1298): add stop-agent-run flow across engine and dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9f8fd5e52", + "time": 1775768383000, + "subject": "feat(FN-1257): add runContext audit trail for task mutations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3be0e0d1e", + "time": 1775831782000, + "subject": "feat(FN-1405): add run-audit and timeline API endpoints with typed client", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/db-migrate.test.ts", + "package": "packages/core", + "valueScore": 62.5, + "positiveCount": 55, + "negativeCount": 18, + "neutralCount": 0, + "timesTouched": 73, + "testOnlyCount": 10, + "testOnlyRatio": 0.137, + "signalTally": { + "added-with-source": 1, + "test+source": 59, + "churn-keyword": 9, + "test-only-churn": 10, + "fix+source": 3 + }, + "durationMs": 3600, + "testCount": 44, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 56.7, + "ageDays": 86, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "1c788455f", + "time": 1774987474000, + "subject": "feat(KB-310): migrate storage layer to SQLite with WAL mode and auto-migration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "57f34d193", + "time": 1775012425000, + "subject": "feat(KB-336): rename data directory from .kb to .fusion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3757d761a", + "time": 1775032465000, + "subject": "feat(KB-622): unify steeringComments and comments into single field", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "54767f60e", + "time": 1775051690000, + "subject": "feat(KB-648): enable parallel test execution and optimize test performance", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "afc24408c", + "time": 1775052323000, + "subject": "feat(KB-622): unify steeringComments and comments into single comments field", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/CommandCenter.test.tsx", + "package": "packages/dashboard", + "valueScore": 31, + "positiveCount": 23, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 27, + "testOnlyCount": 1, + "testOnlyRatio": 0.037, + "signalTally": { + "added-with-source": 1, + "test+source": 24, + "churn-keyword": 3, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 1800, + "testCount": 41, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 56.3, + "ageDays": 10, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "90cfbfb4f", + "time": 1781576597000, + "subject": "feat(dashboard): U4 — Command Center view shell, nav, and chart primitives", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ed3c572a8", + "time": 1781578640000, + "subject": "feat(command-center): U5 — historical analytics areas + date-range filtering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cee24b8b8", + "time": 1781756990000, + "subject": "FN-6619: wire overview to analytics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "58a34e9cf", + "time": 1781789108000, + "subject": "FN-6631: fix Command Center completion gauges", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "2367918fd", + "time": 1781818687000, + "subject": "FN-6650: add Overview analytics charts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e14f33568", + "time": 1781819966000, + "subject": "FN-6651: fix Command Center in-progress count", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/skill-sync.test.ts", + "package": "packages/cli", + "valueScore": 4.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 1, + "fix": 2, + "test-only-churn": 2 + }, + "durationMs": 300, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 54.5, + "ageDays": 84, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "07d7c13ef", + "time": 1775161568000, + "subject": "feat(KB-328): bundle Fusion skill with CLI package for agent interoperability", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e78d05e02", + "time": 1775683590000, + "subject": "feat(FN-1216): rename extension tools to fn_* across CLI and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8a0885ad4", + "time": 1777046065000, + "subject": "fix(FN-2392): normalize skill-facing tool references to fn_*", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "bcc642eaa", + "time": 1777151456000, + "subject": "fix: regenerate pi-claude-cli MCP config per session and auto-sync skill tools", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "cfd78af50", + "time": 1777172869000, + "subject": "feat(FN-2569): sync fusion skill docs with runtime tools", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c623b5108", + "time": 1781767608000, + "subject": "FN-6624: document fn_ask_question engine tool", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/secrets-schema.test.ts", + "package": "packages/core", + "valueScore": 26.5, + "positiveCount": 19, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 21, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 19, + "churn-keyword": 2, + "fix+source": 1 + }, + "durationMs": 1500, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 54.5, + "ageDays": 40, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "9b7550a3f", + "time": 1778969115000, + "subject": "test(FN-4788): complete Step 4 — add secrets schema coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9d862d17a", + "time": 1778989680000, + "subject": "feat(FN-4822): complete Step 1 — add central task claim schema and API", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "10455b799", + "time": 1779036670000, + "subject": "feat(FN-4898): reconcile task title-id drift in storage migrations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b69265651", + "time": 1779107350000, + "subject": "feat(FN-4999): recover completion handoff limbo safely", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "aad121903", + "time": 1779144648000, + "subject": "feat(FN-4967): merge fusion/fn-4967", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7c9209bba", + "time": 1779192997000, + "subject": "test(FN-5105): complete Step 5 — align soft-delete regressions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-settings.test.ts", + "package": "packages/core", + "valueScore": 27, + "positiveCount": 17, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 18, + "testOnlyCount": 1, + "testOnlyRatio": 0.056, + "signalTally": { + "added": 1, + "test+source": 14, + "test-only-churn": 1, + "fix+source": 2 + }, + "durationMs": 1500, + "testCount": 136, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 53.6, + "ageDays": 45, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "deff107d9", + "time": 1778507262000, + "subject": "feat(FN-3978): split monolithic TaskStore test suite into focused domain fi", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1cf987208", + "time": 1778524879000, + "subject": "feat(FN-4018): isolate split merger temp workspaces with settings persisten", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "287ebaf10", + "time": 1778561306000, + "subject": "feat(FN-4053): unify task ID allocation with store-owned distributed alloca", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "55663219c", + "time": 1778630673000, + "subject": "feat(FN-4069): add direct merge commit routing to merger", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "72f623dc0", + "time": 1778695651000, + "subject": "test(FN-4353): complete Step 1 — core default-on regression coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e3cad24c4", + "time": 1778861998000, + "subject": "feat(FN-4606): complete Step 1 — settings schema and types", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useFavorites.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 400, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 53.3, + "ageDays": 78, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "321ec691b", + "time": 1775652804000, + "subject": "feat(FN-1203): extract App orchestration into focused hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1d0b87291", + "time": 1777174357000, + "subject": "fix(FN-2573): prevent stale-closure writes in useFavorites", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "cfc70b21b", + "time": 1779272384000, + "subject": "feat(FN-5202): add SWR caching for chat agents, skills, and models", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/owning-node-handoff.integration.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 400, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 53.3, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "2ca18e983", + "time": 1778977869000, + "subject": "feat(FN-4813): complete Step 4 — wire handoff into scheduler and lease recovery", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "63adddadf", + "time": 1778977869000, + "subject": "feat(FN-4813): complete Step 5 — add isolation transition runtime restart path", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b2ca02f74", + "time": 1778977870000, + "subject": "feat(FN-4813): complete docs, settings, and verification updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1553f1dd0", + "time": 1779000317000, + "subject": "test(FN-4826): complete Step 4 — cover handoff telemetry paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/backup.test.ts", + "package": "packages/core", + "valueScore": 18, + "positiveCount": 13, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 18, + "testOnlyCount": 2, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "test+source": 12, + "churn-keyword": 3, + "fix+source": 3, + "test-only-churn": 2 + }, + "durationMs": 1000, + "testCount": 59, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 52.6, + "ageDays": 86, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "1608efa7a", + "time": 1774996825000, + "subject": "feat(KB-327): add automatic database backup system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "57f34d193", + "time": 1775012425000, + "subject": "feat(KB-336): rename data directory from .kb to .fusion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d42ee113f", + "time": 1775022775000, + "subject": "feat(KB-648): optimize test execution speed across all packages", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "4b39bf1f4", + "time": 1775024343000, + "subject": "feat(KB-618): add multi-project support to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07e471db5", + "time": 1775024392000, + "subject": "feat(KB-648): enable parallel test execution and optimize test performance", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useMergeAdvanceNotice.test.ts", + "package": "packages/dashboard", + "valueScore": 12.5, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 2 + }, + "durationMs": 700, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 51.9, + "ageDays": 33, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "e5357a4af", + "time": 1779541611000, + "subject": "feat(FN-5359): add push-to-origin button and hook to merge advance notice", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "63ec70981", + "time": 1779552002000, + "subject": "feat(FN-5552): narrow push outcome union in useMergeAdvanceNotice", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "14bc63e81", + "time": 1779566808000, + "subject": "feat(FN-5419): add stash conflict modal gating and smart pull routing for m", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "99359b653", + "time": 1779577068000, + "subject": "fix(dashboard): unbreak banner dismiss + suppress when auto-sync handled it", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6e7f1e570", + "time": 1779586776000, + "subject": "fix(dashboard): useMergeAdvanceNotice tests should waitFor toBeDefined", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6aa1ff0fb", + "time": 1779594241000, + "subject": "feat(FN-5475): add allow-resurrection control to task delete flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/docs-readme-index.test.ts", + "package": "packages/cli", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 4, + "testOnlyRatio": 0.8, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test-only-churn": 4 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 52, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "6c59bdabb", + "time": 1777964392000, + "subject": "fix(FN-3433): restore workspace llama-cpp docs index integrity", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "43456664c", + "time": 1781326249000, + "subject": "FN-6331: remove Beads repository guidance", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fa7152585", + "time": 1781476175000, + "subject": "FN-6438: add external plugin proof-point runbook", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "de8f871b4", + "time": 1781515841000, + "subject": "FN-6479: index upstream ACP MCP forwarding doc", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cc5c5eb7b", + "time": 1781675520000, + "subject": "FN-6520: document workflow editor", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-format-task-line.test.ts", + "package": "packages/cli", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 37, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "a5d64e091", + "time": 1779198686000, + "subject": "test(FN-5115): complete Step 6 — add formatTaskLine regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/external-proof-point-runbook-install.test.ts", + "package": "packages/cli", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 9, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "601a85b7c", + "time": 1781647704000, + "subject": "FN-6474: clarify plugin tarball install docs", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/droid-cli-extension.test.ts", + "package": "packages/cli", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 55, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "655c194a5", + "time": 1777663312000, + "subject": "feat(FN-2983): remove stale react-hooks eslint-disable comment", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5191e1f22", + "time": 1782110666000, + "subject": "FN-6911: defer Droid CLI startup probes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__test-utils__/__tests__/core-dist.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 8, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "d3ea8dff3", + "time": 1781772318000, + "subject": "FN-6627: guard dist-barrel tests on complete core dist", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-permissions.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 79, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "1c17cfaa6", + "time": 1775637555000, + "subject": "feat(FN-1122): add agent permission access APIs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-provisioning-policy.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 46, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "fe50c3a3a", + "time": 1778465585000, + "subject": "feat(FN-3956): execute provisioning on approval decisions", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/daemon-token.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 35, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 72, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "8dc8fd7de", + "time": 1776249056000, + "subject": "feat(FN-1830): merge fusion/fn-1830", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/docker-provisioning.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 30, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 53, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "873a30141", + "time": 1777842611000, + "subject": "feat(FN-3110): add docker provisioning service, API routes, and status UI c", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/index-exports.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "bb48665dc", + "time": 1779122806000, + "subject": "feat(FN-5059): merge fusion/fn-5059", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/mesh-config-generator.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 53, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "7773e4e4a", + "time": 1777846388000, + "subject": "feat(FN-3111): add mesh configuration API routes and generator service", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0d7e24a72", + "time": 1778507263000, + "subject": "feat(FN-3986): remove PR lint pre-build and bun setup from pr-checks workfl", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/node-override-guard.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 58, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "02ae48b0d", + "time": 1777411555000, + "subject": "feat(FN-2721): enforce node override guard across task workflows", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b6eb85196", + "time": 1777483338000, + "subject": "feat(FN-2840): strengthen node routing and task diff visibility", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/port-probe-policy.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "211c0fd55", + "time": 1780534649000, + "subject": "perf(test): cut inner-loop fixed overhead to sub-second on cache-fresh runs", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/reflection-store.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 23, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 79, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "07d50ee63", + "time": 1775649339000, + "subject": "feat(FN-1181): add ReflectionStore with agent reflection models", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/run-command.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "churn-keyword": 1, + "fix+source": 1, + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 69, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "f35ea101c", + "time": 1776453219000, + "subject": "fix(FN-1572): stabilize fusion agent execution", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/secret-access-policy.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "9327da718", + "time": 1779002472000, + "subject": "test(FN-4792): complete Step 4 — add secret policy resolver coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/secrets-crypto.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "30bf7df2b", + "time": 1778990448000, + "subject": "test(FN-4790): complete Step 3 — add secrets crypto coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/settings-schema-agent-provisioning.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 46, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "fe50c3a3a", + "time": 1778465585000, + "subject": "feat(FN-3956): execute provisioning on approval decisions", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-parent-task-dedup.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 34, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "51fc82619", + "time": 1779530746000, + "subject": "fix(engine,core): dedup heartbeat-spawned follow-ups by parent task", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/unavailable-node-policy.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 59, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "35db935fe", + "time": 1777354808000, + "subject": "feat(FN-2718): add unavailable node policy setting and validation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b6eb85196", + "time": 1777483338000, + "subject": "feat(FN-2840): strengthen node routing and task diff visibility", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/use-droid-cli-settings.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 55, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "31bc668c2", + "time": 1777661756000, + "subject": "feat(FN-2982): merge fusion/fn-2982", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-ir-foreach.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 42, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 21, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "2a3c285ba", + "time": 1780598013000, + "subject": "feat(core): U1 — IR foreach/step-review/parse-steps/code kinds, rework edges, dependsOn parsing (FN step-inversion)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ce4d0a899", + "time": 1780950778000, + "subject": "FN-6008: document FTS migration defer evidence and align workflow IDs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-step-templates-verdict.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "870995e99", + "time": 1778787019000, + "subject": "test(FN-4493): complete Step 3 — add template verdict contract tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workspace-dependency-acyclicity.test.ts", + "package": "packages/core", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "7be377da0", + "time": 1780470733000, + "subject": "FN-5926: break bundled plugin dashboard dependency cycle", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/AgentMentionPopup.css.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 26, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "ef1a19be1", + "time": 1780176012000, + "subject": "FN-5734: render agent mention popup above input on tablet widths", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/activity-log-tablet-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "0856d3d3f", + "time": 1781373810000, + "subject": "FN-6380: widen Activity Log tablet layout", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/board-mobile-column-swipe.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "14ed177d8", + "time": 1781393428000, + "subject": "FN-6389: restore mobile board column swiping", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/board-mobile-corner-rendering.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 44, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "32856a3b1", + "time": 1778599663000, + "subject": "feat(FN-001): complete Step 3 — regression tests\\n\\n- Add board-mobile-corner-rendering.test.ts stylesheet regression\\n- Add board-mobile-view-switch.test.tsx component regression\\n- Register new test in vitest.config.ts qualityAppTests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/board-mobile-overscroll-containment.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "eea33639e", + "time": 1781376824000, + "subject": "FN-6378: contain mobile board overscroll", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/css-hygiene-scan.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 15, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "7e903494e", + "time": 1781096532000, + "subject": "FN-6186: tokenized dashboard accent text colors", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/goals-refinement-gate-docs.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "1853459de", + "time": 1780525949000, + "subject": "FN-5961: document goals refinement evidence gate", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mobile-horizontal-pan-containment.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "88e25dc9f", + "time": 1781374927000, + "subject": "FN-6365: prevent mobile document horizontal panning", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/settings-mobile-wrap.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 27, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "23e0593cb", + "time": 1780068028000, + "subject": "FN-5668: preserve word-boundary wrapping in mobile settings text", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/shell-native.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3df6dab65", + "time": 1778226015000, + "subject": "docs(FN-3408): document shell connection chrome contracts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "30d0553c6", + "time": 1778230675000, + "subject": "feat(FN-3409): add shell regression matrix for mobile, desktop, and dashboa", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/space-token-defined.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "1962bea0f", + "time": 1780474089000, + "subject": "FN-5934: replace undefined dashboard spacing token", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/api/__tests__/legacy-prinfo.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "f5cd0dd47", + "time": 1779069831000, + "subject": "feat(FN-4971): add PrInfo regression test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentMentionPopup.room.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 46, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "cab3c4970", + "time": 1778425180000, + "subject": "feat(FN-3812): add rooms test scaffolds and coverage across core and dashbo", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d02b9ed26", + "time": 1778452405000, + "subject": "feat(FN-3811): add room mention popup to dashboard architecture docs and te", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.swipe-back.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 44, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "efdc6c462", + "time": 1778630673000, + "subject": "feat(FN-4139): add swipe-back navigation to chat, mission, and planning flo", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "12a6ee9af", + "time": 1779275560000, + "subject": "feat(FN-5218): add hash mentions to chat composers and popups", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "fa23782db", + "time": 1780883506000, + "subject": "FN-5972: fix mobile auto-merge blank dashboard", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/GoalsView.css.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 40, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "b94eae4f2", + "time": 1778934567000, + "subject": "feat(FN-4719): complete Step 3-4 — goals view lazy wiring and changeset", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "67c026675", + "time": 1780067515000, + "subject": "FN-5667: enable scrolling in goals view on mobile", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PrPanel.spacing.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 28, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "fb27ead6b", + "time": 1780023053000, + "subject": "Recovery: re-land PR tab spacing tokens onto main", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ShellConnectionStatus.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3df6dab65", + "time": 1778226015000, + "subject": "docs(FN-3408): document shell connection chrome contracts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "30d0553c6", + "time": 1778230675000, + "subject": "feat(FN-3409): add shell regression matrix for mobile, desktop, and dashboa", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/StashRecoveryView.test.tsx", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 47, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "d604d090a", + "time": 1778381342000, + "subject": "feat(FN-3863): add stash recovery dashboard surface and API routes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1ab2d4161", + "time": 1781945546000, + "subject": "FN-6789: make dashboard utility views fill flex rows", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/CommandCenter.orgchart-connectors.css.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "69b817884", + "time": 1782087543000, + "subject": "FN-6884: expand Team org chart connectors", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/command-center-css-token-canonicalization.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 7, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "0f021aee4", + "time": 1781857299000, + "subject": "FN-6686: canonicalize Command Center CSS tokens", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/sseSplitIntegration.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "49c2de108", + "time": 1782288813000, + "subject": "test(dashboard): harden hook tests + drop dead App.tsx re-exports (code review)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "250444792", + "time": 1782318183000, + "subject": "test(dashboard): apply test-quality findings from focused re-review", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/heartbeatIntervals.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 29, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/highlightDiff.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/modelFilter.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 45, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/modelPresets.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/taskStuck.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 26, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/ai-session-diagnostics.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 49, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 64, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "4d5fc341a", + "time": 1776871416000, + "subject": "feat(FN-2242): add shared AI-session diagnostics helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/claude-cli-probe.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 63, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "32da0aeda", + "time": 1777010554000, + "subject": "feat: add \"Anthropic — via Claude CLI\" as a first-class provider", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/devserver-manager.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 66, + "lastTouched": "2026-04-22", + "evidence": [ + { + "sha": "e24c87866", + "time": 1776750326000, + "subject": "feat(FN-2183): add dev server management modules", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b2a82328f", + "time": 1776890813000, + "subject": "feat(FN-2186): merge fusion/fn-2186", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/devserver-preview-detect.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 64, + "lastTouched": "2026-04-22", + "evidence": [ + { + "sha": "b2a82328f", + "time": 1776890813000, + "subject": "feat(FN-2186): merge fusion/fn-2186", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-tracking-dedup.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 40, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "1ca873f64", + "time": 1778961391000, + "subject": "test(FN-4777): complete Step 4 — add dedup tracking coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/native-shell-documentation.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 50, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "f3c99eb4f", + "time": 1778151583000, + "subject": "feat(FN-3577): add native shell guide and bridge contract documentation", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/plugin-routes-wiring.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 47, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "9e415f81f", + "time": 1778347865000, + "subject": "feat(FN-3796): add plugin routes wiring and listTasksModifiedSince", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2dcfb19b3", + "time": 1778347865000, + "subject": "feat(FN-3798): add listTasksModifiedSince contract to task store", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-model-routes-cursor-cli.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 50, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "3735e0565", + "time": 1778152672000, + "subject": "feat(FN-3396): bundle Cursor CLI as a plugin provider with dashboard auth w", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e82f4bc78", + "time": 1778796338000, + "subject": "test(FN-4530): fix remaining dashboard deep-lane one-off regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-model-routes-zai-real-registry.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 12, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "b1ba87e59", + "time": 1781410640000, + "subject": "FN-6414: preserve built-in Z.ai models after extensions", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/todo-documentation.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 51, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "aea1396d3", + "time": 1777987953000, + "subject": "feat(FN-3415): add todo documentation contract test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/docker-node-failure.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 0, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 52, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "37f668d55", + "time": 1777954882000, + "subject": "feat(FN-3116): add docker node provisioning routes with planning modal and", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/docker-node-management-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 0, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 52, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "37f668d55", + "time": 1777954882000, + "subject": "feat(FN-3116): add docker node provisioning routes with planning modal and", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/register-secrets-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "235754a76", + "time": 1779056242000, + "subject": "test(FN-4945): complete Step 3 — add secrets route regression tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/register-task-workflow-routes.move-bypassguards.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "4e1b0fab0", + "time": 1780558872000, + "subject": "feat(core): workflow-resolved transitions behind workflowColumns flag, typed rejections, default-workflow hook parity (U4)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/stash-recovery-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 47, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "d604d090a", + "time": 1778381342000, + "subject": "feat(FN-3863): add stash recovery dashboard surface and API routes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bcb4107a1", + "time": 1778452449000, + "subject": "feat(FN-3932): add orphaned finalize-reset autostash safeguard in merger", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-reflection.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 78, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "79d8c1592", + "time": 1775652936000, + "subject": "feat(FN-1182): add agent reflection service and executor integration", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/auto-recovery-message-delivery.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "a01b90b07", + "time": 1778822204000, + "subject": "test(FN-4545): add unit coverage for contamination and delivery handlers", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "2d782569d", + "time": 1778822204000, + "subject": "fix(FN-4545): wire retry-burn logging and complete handler coverage", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/branch-conflicts-self-owned.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 42, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "e01d2ef04", + "time": 1778783023000, + "subject": "feat(FN-4485): complete Step 2 — tighten branch conflict classifier", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "934f2f0d0", + "time": 1780883507000, + "subject": "FN-6004: add execFile to engine child_process test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/docs-evidence-example.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "00282fbf2", + "time": 1781367538000, + "subject": "FN-6357: document external integration evidence format", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/evaluator-evidence.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 50, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "2413ccb39", + "time": 1778099903000, + "subject": "feat(FN-3391): persist evaluator evidence with score categories", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "578b71e8d", + "time": 1778727782000, + "subject": "feat(FN-4315): add audit recovery pipeline documentation and changeset", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a014c6d42", + "time": 1780075439000, + "subject": "FN-5697: retry transient auto-merge failures and fix migration versioning", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "d72cb2ab2", + "time": 1780474218000, + "subject": "FN-5911: move agent logs to per-task JSONL storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-branch-canonicalization.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 38, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "c56e0cf81", + "time": 1779154012000, + "subject": "feat(FN-5083): complete Step 3 — canonicalize fusion branch naming", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0d882b435", + "time": 1781374136000, + "subject": "FN-6383: add branch canonicalization unit coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-capture-modified-files-attribution.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "1df8b709a", + "time": 1779116826000, + "subject": "feat(FN-5039): add attribution-filtered modified file capture", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "16bbeba37", + "time": 1779116826000, + "subject": "test(FN-5039): complete Step 5 — verify narrowed scope-leak warnings", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-fast-mode-workflows.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 14, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "36f5ecdab", + "time": 1781194883000, + "subject": "FN-6226: skip fast-mode workflow graph validation nodes", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "5506fcc0f", + "time": 1782093298000, + "subject": "feat(FN-6880): migrate built-in browser-verification to an optional-group (U6)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e60b1378b", + "time": 1782191850000, + "subject": "fix(engine): address workflow cutover review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-task-done-shared-helper.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "3a17b85ed", + "time": 1779089264000, + "subject": "test(FN-4946): add implicit completion refusal guard coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/goal-citation-proof.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 27, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "46531c6b3", + "time": 1780067206000, + "subject": "FN-5659: add deterministic goal citation proof test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/identity-snapshot.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 40, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "b57d3bcc0", + "time": 1778966594000, + "subject": "test(FN-4787): regression tests for heartbeat identity snapshot", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/integration-branch.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 35, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "79850b233", + "time": 1779390298000, + "subject": "feat(FN-5349): add integration branch resolver with auto-recovery fallback", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "934f2f0d0", + "time": 1780883507000, + "subject": "FN-6004: add execFile to engine child_process test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/mission-factory-parity.integration.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 75, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "5205d8f0f", + "time": 1775930644000, + "subject": "feat(FN-1571): merge fusion/fn-1571", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "4e38c5f7d", + "time": 1776129691000, + "subject": "feat(FN-1719): rebuild eslint baseline and add memory lessons", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/paperclip-runtime-integration.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 59, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "3c387444d", + "time": 1777316311000, + "subject": "test(FN-2712): add runtime e2e and integration coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/post-merge-audit-action.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "e787036b8", + "time": 1778688380000, + "subject": "feat(FN-4333): emergency hot-fix for post-merge audit blocks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "704e213ff", + "time": 1778694352000, + "subject": "test(FN-4333): complete Step 4 — align audit helper test contract", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pr-changes-requested.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "439716165", + "time": 1779043159000, + "subject": "test(FN-4761): complete Step 5 — add review transition regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/auto-prerebase-interactions.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "5a4df7ae6", + "time": 1779110453000, + "subject": "test(FN-4958): complete Step 4 — reliability interaction backstop", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/auto-revive-and-watchdog.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "c7f8d3821", + "time": 1778735321000, + "subject": "test(FN-4361): add reliability interaction backstop suite", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/completion-fanout-x-self-healing.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "cc18c4f78", + "time": 1778792997000, + "subject": "test(FN-4523): complete Step 4 — add completion fan-out coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/dashboard-diff-boundary.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 40, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "05bd4fcdf", + "time": 1778953806000, + "subject": "test(FN-4754): add engine dashboard diff import boundary guard", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/pr-changes-requested-reexecution.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "0fd9d4094", + "time": 1779071822000, + "subject": "test(FN-4992): add changes-requested reliability interaction coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/pr-merged-auto-transition.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "dcb055df6", + "time": 1779071822000, + "subject": "test(FN-4992): add merged PR auto-transition interaction coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/secrets-sync-cross-node.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "a3e8c8f8b", + "time": 1779096321000, + "subject": "feat(FN-4882): add cross-node secrets sync reliability backstop with integr", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktree-metadata-reconcile.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "d13ee7f52", + "time": 1779058518000, + "subject": "feat(FN-4962): complete Step 4 — dashboard fallback and reliability coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d5ed2cd2b", + "time": 1779058518000, + "subject": "fix(FN-4962): address step 4 review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0e4fda59b", + "time": 1779058518000, + "subject": "test(FN-4962): stabilize recovery test expectations and typing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit-agent-session/executor-emit.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "6ecaa717d", + "time": 1779568661000, + "subject": "feat(FN-5556): add run-audit agent session and runtime audit tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit-agent-session/heartbeat-emit.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "6ecaa717d", + "time": 1779568661000, + "subject": "feat(FN-5556): add run-audit agent session and runtime audit tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit-agent-session/merger-emit.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "6ecaa717d", + "time": 1779568661000, + "subject": "feat(FN-5556): add run-audit agent session and runtime audit tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit-agent-session/mission-exec-emit.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "6ecaa717d", + "time": 1779568661000, + "subject": "feat(FN-5556): add run-audit agent session and runtime audit tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit-agent-session/no-auditor-backcompat.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "6ecaa717d", + "time": 1779568661000, + "subject": "feat(FN-5556): add run-audit agent session and runtime audit tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit-agent-session/reviewer-emit.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "6ecaa717d", + "time": 1779568661000, + "subject": "feat(FN-5556): add run-audit agent session and runtime audit tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit-agent-session/triage-emit.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "6ecaa717d", + "time": 1779568661000, + "subject": "feat(FN-5556): add run-audit agent session and runtime audit tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/sandbox/bubblewrap-detect.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 41, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "063977e23", + "time": 1778867403000, + "subject": "feat(FN-4637): complete Step 1 — detect bubblewrap availability", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "934f2f0d0", + "time": 1780883507000, + "subject": "FN-6004: add execFile to engine child_process test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/sandbox/sandbox-exec-detect.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 41, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "46348683b", + "time": 1778869124000, + "subject": "feat(FN-4638): complete Step 1 — add sandbox-exec detection", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "934f2f0d0", + "time": 1780883507000, + "subject": "FN-6004: add execFile to engine child_process test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-agent-link-drift.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 3, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 3, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 3, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 42, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "1b233d502", + "time": 1778762134000, + "subject": "test(FN-4296): repro — durable agent retains stale taskId for queued/done task", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5a80526fb", + "time": 1778762135000, + "subject": "test(FN-4296): align drift test with new recovery method", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f7e5aec4f", + "time": 1778762135000, + "subject": "test(FN-4296): complete Step 4 — add agent link drift regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "300e023e2", + "time": 1778762135000, + "subject": "test(FN-4296): tighten ephemeral exclusion coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b5b7ca9b0", + "time": 1778762135000, + "subject": "feat(FN-4296): complete Step 5 — finalize sync wiring and verification fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fe536b2af", + "time": 1782235850000, + "subject": "FN-6954: reconcile stale parked task assignments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/spec-validation-task-document-references.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 38, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "b5e257d6e", + "time": 1779177758000, + "subject": "feat(FN-5112): complete Step 1 — dangling task-doc reference detector", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7cfda7434", + "time": 1779590164000, + "subject": "test(engine): remove machine-specific paths from test fixtures", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/test-isolation-guard.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 60, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "caa773cb9", + "time": 1777233656000, + "subject": "feat(FN-2606): merge fusion/fn-2606 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1cf987208", + "time": 1778524879000, + "subject": "feat(FN-4018): isolate split merger temp workspaces with settings persisten", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-preflight.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "50654dff6", + "time": 1779090803000, + "subject": "feat(FN-4892): complete Step 1 — triage preflight module", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aa60dd3c1", + "time": 1779090804000, + "subject": "test(FN-4892): fix type-safe intake preflight coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-graph-merge-region-collapse.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 13, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "751d94244", + "time": 1781299278000, + "subject": "FN-6294: collapse workflow merge primitives", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5506fcc0f", + "time": 1782093298000, + "subject": "feat(FN-6880): migrate built-in browser-verification to an optional-group (U6)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-policy-ownership-map.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 16, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "0cb54dd8c", + "time": 1781031090000, + "subject": "refactor(workflow): map merge policy ownership", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "efe7db64f", + "time": 1781038086000, + "subject": "fix(review): stabilize ownership map test path", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-prompt-overrides-resolution.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "26c8d960a", + "time": 1782102221000, + "subject": "FN-6893: add editable built-in workflow prompts", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-settings-fallback-alignment.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "e8e54bf34", + "time": 1780637871000, + "subject": "feat(engine): per-task effective workflow settings — resolver, two-tier entry merge, fallback alignment", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4fe7dbe01", + "time": 1780640628000, + "subject": "feat(core): one-time hard-move migration of workflow-policy settings to workflow setting values", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-backend-no-execsync.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "81b2f4ea8", + "time": 1778899068000, + "subject": "test(FN-4623): add static execSync regression guard", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-desktop-artifacts.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "d702231ad", + "time": 1779094222000, + "subject": "feat(FN-4938): complete Step 2 — add helper and wire cleanup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d41dc24d2", + "time": 1779094224000, + "subject": "test(FN-4938): complete Step 5 — docs and verification follow-ups", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-hooks-cross-platform.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 34, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "3ccb132dc", + "time": 1779515006000, + "subject": "feat(FN-5519): merge fusion/fn-5519", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "934f2f0d0", + "time": 1780883507000, + "subject": "FN-6004: add execFile to engine child_process test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-stale-lock.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 40, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "9e2a2e37d", + "time": 1778990073000, + "subject": "feat(FN-4830): complete Step 1 — add stale lock helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "934f2f0d0", + "time": 1780883507000, + "subject": "FN-6004: add execFile to engine child_process test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/ipc/__tests__/ipc-host.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 31, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/ipc/__tests__/ipc-protocol.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/runtimes/__tests__/child-process-runtime.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 31, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/sandbox/__tests__/provisioning-gate.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "a6a72ee1f", + "time": 1778910991000, + "subject": "feat(FN-4641): complete Step 3 — add engine provisioning gate helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "10b73d538", + "time": 1778910991000, + "subject": "feat(FN-4641): complete Step 4 — integrate sandbox provisioning approvals in dashboard", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/sandbox/__tests__/types.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "92be0b421", + "time": 1778865841000, + "subject": "feat(FN-4636): complete Step 1 — define sandbox backend interface", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e22bd4626", + "time": 1778872370000, + "subject": "test(FN-4643): complete Step 3 — cover native streaming behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/i18n/src/__tests__/locale-fallback.test.ts", + "package": "packages/i18n", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 5, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "b2f564c2b", + "time": 1781978575000, + "subject": "FN-6791: add i18n regression guardrails", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/acp-dispatch.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 10, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "71a6c5a05", + "time": 1781546127000, + "subject": "test(acp): verify kill-switch dispatch routing (U11/R9/R14)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/stream-parser.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": 100, + "testCount": 24, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "74ebd238e", + "time": 1777084760000, + "subject": "chore: add pi-claude-cli + plugin-sdk __tests__/ dirs (test consolidation)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/dev-server-manager.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 2, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 67, + "lastTouched": "2026-05-02", + "evidence": [ + { + "sha": "c7f6b172d", + "time": 1776656893000, + "subject": "feat(FN-2178): add dashboard dev server management flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "99cafa3a4", + "time": 1776724652000, + "subject": "feat(FN-2170): add dev-server preview detection and log viewer flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1e6714e4d", + "time": 1777762638000, + "subject": "chore(test): add cross-worktree test lock and clean up dev-server test child", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-import-unmocked.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix": 1, + "added": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "f4039266e", + "time": 1779260158000, + "subject": "fix(FN-5170): use in-process tar extraction for company imports", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-in-review-stall.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 300, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 43, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "426d4fb67", + "time": 1778678974000, + "subject": "feat(FN-4217): complete Step 3 — hydrate in-review stall signal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7a9d2b0f3", + "time": 1781023288000, + "subject": "fix(FN-6086): preserve merge-queued review tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-id-integrity.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 300, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 44, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "15281c304", + "time": 1778638207000, + "subject": "feat(FN-4192): add task ID integrity detection and dashboard alerts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "33a1a9df1", + "time": 1778652296000, + "subject": "fix: drop false-positive committed_reservation_for_existing_id integrity check", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/StashConflictModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 300, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 35, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "921e0e616", + "time": 1779410814000, + "subject": "feat(FN-5358): add smart pull API route with stash conflict detection and r", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d37bebf8b", + "time": 1779495878000, + "subject": "feat(FN-5516): merge fusion/fn-5516", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "14bc63e81", + "time": 1779566808000, + "subject": "feat(FN-5419): add stash conflict modal gating and smart pull routing for m", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/step-parsers-route.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 300, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "6f7f6860b", + "time": 1780615010000, + "subject": "fix: address PR review feedback (#1424)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/api/__tests__/legacy-chat-stream.test.ts", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix+source": 1 + }, + "durationMs": 600, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 54, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "be909f88a", + "time": 1777797749000, + "subject": "feat(FN-3243): add tasks column/updatedAt index and debounce detail fetches", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b8a32f876", + "time": 1777988538000, + "subject": "feat(FN-3430): preserve and consume final assistant done payload", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f860d3d54", + "time": 1778108744000, + "subject": "feat(FN-3609): split TaskDetailModal tests into focused suites", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b080ea0bc", + "time": 1778298348000, + "subject": "fix(FN-3760): add SSE first-event watchdog for legacy chat streams", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "80f65de99", + "time": 1778348669000, + "subject": "feat(FN-3843): add chat stream reattach support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d0a7fe366", + "time": 1778507262000, + "subject": "feat(FN-3817): fix chat delta spacing in legacy streaming API", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MissionInterviewModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 11, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 17, + "testOnlyCount": 5, + "testOnlyRatio": 0.294, + "signalTally": { + "churn-keyword": 1, + "added": 1, + "test+source": 10, + "test-only-churn": 5, + "fix+source": 1 + }, + "durationMs": 600, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 78, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "8ef31a81c", + "time": 1775670522000, + "subject": "test(FN-1282): expand dashboard hook and modal coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "375d46d31", + "time": 1775683040000, + "subject": "feat(FN-1151): preserve and display planning conversation history", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4aa1cbdba", + "time": 1775690072000, + "subject": "feat(FN-1153): add cross-tab locks for AI planning sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c9c5bbf78", + "time": 1776046581000, + "subject": "feat(FN-1621): merge fusion/fn-1621", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9a0673c5f", + "time": 1776196802000, + "subject": "feat(FN-1809): merge fusion/fn-1809", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d4e90ccb9", + "time": 1776238129000, + "subject": "feat(FN-1752): add relaxed ESLint rules for plugins and improve onboarding", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/central-db.test.ts", + "package": "packages/core", + "valueScore": 17, + "positiveCount": 14, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 19, + "testOnlyCount": 3, + "testOnlyRatio": 0.158, + "signalTally": { + "added-with-source": 1, + "test+source": 14, + "test-only-churn": 3, + "churn-keyword": 2, + "fix+source": 1 + }, + "durationMs": 900, + "testCount": 34, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 86, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "1937adc7b", + "time": 1775012399000, + "subject": "feat(KB-500): add central infrastructure for multi-project support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b1c5fa03a", + "time": 1775614983000, + "subject": "feat(FN-1078): add central node registry support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ff7f35c6c", + "time": 1775672478000, + "subject": "feat(FN-1227): add mesh state and system metrics support to CentralCore", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ed275f202", + "time": 1775772859000, + "subject": "feat(FN-1246): add app version tracking and sync infrastructure", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4b1201a49", + "time": 1776240074000, + "subject": "feat(FN-1820): merge fusion/fn-1820", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useAgentLogs.test.ts", + "package": "packages/dashboard", + "valueScore": 23, + "positiveCount": 15, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 18, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 14, + "churn-keyword": 3, + "fix+source": 3 + }, + "durationMs": 1200, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 50, + "ageDays": 92, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "20264a854", + "time": 1774499808000, + "subject": "feat(HAI-072): add agent log viewer with persistence, streaming, and UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a7de078fe", + "time": 1774895215000, + "subject": "feat(KB-129): dashboard performance optimizations", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e3055f8d9", + "time": 1775021936000, + "subject": "fix(KB-503): address code review feedback for Step 1", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "4b39bf1f4", + "time": 1775024343000, + "subject": "feat(KB-618): add multi-project support to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-settings.test.ts", + "package": "packages/dashboard", + "valueScore": 17.5, + "positiveCount": 18, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 23, + "testOnlyCount": 4, + "testOnlyRatio": 0.174, + "signalTally": { + "added": 1, + "test-only-churn": 4, + "test+source": 15, + "fix+source": 3, + "churn-keyword": 2, + "quarantine-ledger": 1 + }, + "durationMs": 900, + "testCount": 133, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 48.6, + "ageDays": 54, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "cfdc72e51", + "time": 1777927402000, + "subject": "feat(FN-3199): align memory insight docs with canonical paths", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "760621cc8", + "time": 1778168958000, + "subject": "feat(FN-3393): add eval settings with scheduled eval project settings UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7bf93e850", + "time": 1778349732000, + "subject": "fix(FN-3825): surface inline notification test feedback in settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "95f6cd845", + "time": 1778415626000, + "subject": "feat(FN-3875): add GitHub tracking auth resolver and forced client auth mod", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1cf987208", + "time": 1778524879000, + "subject": "feat(FN-4018): isolate split merger temp workspaces with settings persisten", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/plugin-routes.routes.test.ts", + "package": "packages/dashboard", + "valueScore": 7.5, + "positiveCount": 8, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 2, + "testOnlyRatio": 0.154, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 2, + "churn-keyword": 3, + "test+source": 9 + }, + "durationMs": 400, + "testCount": 57, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 47.1, + "ageDays": 76, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "04babf2a9", + "time": 1775849653000, + "subject": "feat(FN-1411): implement plugin management API routes with project scoping", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2a1a0177f", + "time": 1776404330000, + "subject": "fix(FN-1952): remove stale task artifacts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b8d36506d", + "time": 1777894216000, + "subject": "feat(FN-3071): add droid runtime plugin with event bridge, process manageme", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "86ac01988", + "time": 1778039258000, + "subject": "feat(FN-3299): auto-install bundled runtime plugins on first save", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "408a46e1c", + "time": 1778067149000, + "subject": "feat(FN-3565): add plugin management CLI, loader, runner, and dashboard rou", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/project-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 31, + "positiveCount": 19, + "negativeCount": 1, + "neutralCount": 2, + "timesTouched": 22, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 16, + "fix+source": 4, + "churn-keyword": 3, + "fix": 1 + }, + "durationMs": 1500, + "testCount": 52, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 46.9, + "ageDays": 86, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "f88611b07", + "time": 1775031344000, + "subject": "feat(KB-502): add dashboard multi-project hooks and project API routes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b9584da06", + "time": 1775053649000, + "subject": "feat(FN-674): add multi-project dashboard support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a7354946c", + "time": 1775056650000, + "subject": "feat(KB-504): add migration and first-run experience for multi-project support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "648b054cb", + "time": 1775353691000, + "subject": "fix(FN-944): activate projects after registration in dashboard API", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "7224e383c", + "time": 1775455762000, + "subject": "feat(FN-1023): add project status reconciliation and apply to GET /api/projects route", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b3f057a28", + "time": 1775871023000, + "subject": "fix: improve merge verification and dashboard behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/NewTaskModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 82.5, + "positiveCount": 55, + "negativeCount": 8, + "neutralCount": 1, + "timesTouched": 64, + "testOnlyCount": 6, + "testOnlyRatio": 0.094, + "signalTally": { + "added-with-source": 1, + "test+source": 49, + "test-only-churn": 6, + "fix+source": 6, + "churn-keyword": 3, + "fix": 2 + }, + "durationMs": 3900, + "testCount": 85, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 46.7, + "ageDays": 88, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "8c46ef3cc", + "time": 1774849204000, + "subject": "feat(KB-074): add quick task creation with QuickEntryBox and NewTaskModal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4ca33625e", + "time": 1774882673000, + "subject": "feat(KB-125): add planning mode checkbox to new task flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fb4ae45f3", + "time": 1774883639000, + "subject": "test(KB-126): add scroll behavior test for NewTaskModal", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "dc8325d54", + "time": 1774884612000, + "subject": "feat(KB-150): remove title input fields from task creation modals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "919d524d9", + "time": 1774919590000, + "subject": "feat(KB-219): auto-focus description textarea in NewTaskModal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dfe560162", + "time": 1774947885000, + "subject": "feat(KB-184): add model presets for task creation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/QuickEntryBox.test.tsx", + "package": "packages/dashboard", + "valueScore": 127.5, + "positiveCount": 92, + "negativeCount": 12, + "neutralCount": 1, + "timesTouched": 105, + "testOnlyCount": 7, + "testOnlyRatio": 0.067, + "signalTally": { + "added-with-source": 1, + "test+source": 89, + "test-only-churn": 7, + "churn-keyword": 6, + "fix+source": 6, + "fix": 2, + "quarantine-ledger": 1 + }, + "durationMs": 6000, + "testCount": 224, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 46.7, + "ageDays": 88, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "8c46ef3cc", + "time": 1774849204000, + "subject": "feat(KB-074): add quick task creation with QuickEntryBox and NewTaskModal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "555cbd9dd", + "time": 1774884256000, + "subject": "feat(KB-141): fix workspace type resolution and add clean-checkout typecheck tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b34f180d9", + "time": 1774886817000, + "subject": "feat(KB-160): implement expandable textarea in QuickEntryBox", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "045519fa8", + "time": 1774917504000, + "subject": "feat(KB-163): add rich task creation UI to QuickEntryBox", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "23368cc25", + "time": 1774925625000, + "subject": "feat(KB-248): replace checkbox with Plan and Subtask buttons in task creation UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "062d00ab8", + "time": 1774927086000, + "subject": "feat(KB-252): implement collapse-on-blur behavior for QuickEntryBox", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentImportModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 3, + "added": 1, + "fix+source": 1, + "test+source": 7 + }, + "durationMs": 300, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 46.2, + "ageDays": 78, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "8ef31a81c", + "time": 1775670522000, + "subject": "test(FN-1282): expand dashboard hook and modal coverage", + "status": "A", + "touchedSource": false, + "category": "negative", + "weight": -2, + "signals": [ + "churn-keyword", + "added" + ] + }, + { + "sha": "4e66baf20", + "time": 1776371507000, + "subject": "fix(FN-1895): improve companies.sh import error handling and add retry behavior", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "ca2e085d7", + "time": 1776380712000, + "subject": "feat(FN-1968): add skill manifest previews to agent import", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b71697f9b", + "time": 1776874353000, + "subject": "feat(FN-2243): merge fusion/fn-2243", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2873bc038", + "time": 1776883406000, + "subject": "refactor(FN-2206): centralize agent modal styling in dashboard CSS", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3b0db3e9d", + "time": 1776974145000, + "subject": "feat(FN-2308): add selectable scope to agent company imports", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/CommandCenterControls.test.tsx", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 300, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 46.2, + "ageDays": 6, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "5145e609c", + "time": 1781912853000, + "subject": "FN-6727: add Command Center operator controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9483670d6", + "time": 1781939725000, + "subject": "FN-6755: move org chart and heartbeat controls to Team", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a98a0ae23", + "time": 1781950099000, + "subject": "FN-6768: show actual concurrency slider values", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ca0882881", + "time": 1782073541000, + "subject": "FN-6855: raise Command Center concurrency sliders to 50", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b29352575", + "time": 1782423472000, + "subject": "fix(dashboard): repair CSS token/contrast regressions and stale tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-reclaim-paused-review.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 300, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 46.2, + "ageDays": 42, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "b76eb7373", + "time": 1778783024000, + "subject": "feat(FN-4485): extend reclaim sweep to paused review conflicts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bc6c1cb1a", + "time": 1778783024000, + "subject": "fix(FN-4485): preserve userPaused intent during reclaim sweep", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "93b11c6c0", + "time": 1779264068000, + "subject": "feat(FN-5241): add atomic in-review handoff seam with executor/self-healing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SubtaskBreakdownModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 16.5, + "positiveCount": 14, + "negativeCount": 7, + "neutralCount": 1, + "timesTouched": 22, + "testOnlyCount": 5, + "testOnlyRatio": 0.227, + "signalTally": { + "added-with-source": 1, + "test+source": 13, + "test-only-churn": 5, + "fix+source": 3, + "churn-keyword": 3 + }, + "durationMs": 800, + "testCount": 40, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 45.7, + "ageDays": 86, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "0e95ba359", + "time": 1774961310000, + "subject": "feat(KB-247): add subtask breakdown dialog for AI-assisted task creation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d86ffcf96", + "time": 1774962012000, + "subject": "feat(KB-270): add drag-and-drop reordering for subtasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e4f1d1808", + "time": 1774981233000, + "subject": "test(KB-301): fix SubtaskBreakdownModal tests — add dataTransfer mocks for jsdom drag events", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f8465342", + "time": 1775177464000, + "subject": "fix(FN-000): scope dashboard project flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "040e0e45a", + "time": 1775340808000, + "subject": "fix(FN-920): improve error handling in subtask breakdown SSE stream", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/acp-driver.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 14.5, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "fix+source": 4, + "test+source": 3, + "fix": 1 + }, + "durationMs": 700, + "testCount": 19, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 45.2, + "ageDays": 10, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "85c180508", + "time": 1781528907000, + "subject": "feat(acp): U11 — drive pi-claude-cli provider via the ACP bridge (kill-switch OFF)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0d6b3f666", + "time": 1781529431000, + "subject": "fix(acp): apply review findings to streamViaAcp (U11)", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "daa37d08c", + "time": 1781551920000, + "subject": "feat(acp): surface bridge auth failure in the UI with fallback / fix-auth (R17)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dc8510447", + "time": 1781552588000, + "subject": "fix(review): address PR #1681 round-2 comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d217125a9", + "time": 1781555175000, + "subject": "feat(acp): wire ACP token usage (OQ3) + opt-in headless auth (R17)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4e2a88742", + "time": 1781555323000, + "subject": "fix(acp): import afterEach in acp-driver test (typecheck)", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentOnboardingModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 44.4, + "ageDays": 56, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "00de40da9", + "time": 1777609256000, + "subject": "feat(FN-3025): add agent onboarding flow with launch gating", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e0b82fda6", + "time": 1779212396000, + "subject": "test(FN-5151): complete Step 5 — add autosize regression coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/GraphWorkflowSwitcherSlot.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 44.4, + "ageDays": 1, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "d7f3c7093", + "time": 1782369171000, + "subject": "FN-6941: add graph workflow filtering", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6c51bd1d4", + "time": 1782419248000, + "subject": "FN-6989: make workflow editor float", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MessageComposer.autosize.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 44.4, + "ageDays": 41, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "a7859ccef", + "time": 1778909052000, + "subject": "feat(FN-4712): complete Step 3 — autosize mailbox composer", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e0b82fda6", + "time": 1779212396000, + "subject": "test(FN-5151): complete Step 5 — add autosize regression coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/cli-agent-runtime-wiring.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 44.4, + "ageDays": 21, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "58723312d", + "time": 1780655081000, + "subject": "feat: bootstrap cli-agent runtime and wire executor, transport, chat, and recovery seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "863ebfaa9", + "time": 1781515841000, + "subject": "FN-6464: add CLI session relaunch route", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/register-docker-node-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 44.4, + "ageDays": 53, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "93ecc88fe", + "time": 1777819665000, + "subject": "feat(FN-3109): add Docker connectivity service and target selector UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7773e4e4a", + "time": 1777846388000, + "subject": "feat(FN-3111): add mesh configuration API routes and generator service", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5dcb739bb", + "time": 1777900332000, + "subject": "feat(FN-3112): tokenize NodesView border-radius and motion styles", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-chat-cleanup.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 44.4, + "ageDays": 40, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "3b6c6b9df", + "time": 1778946647000, + "subject": "feat(FN-4733): complete Step 3 — wire chat cleanup into maintenance", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fd202e935", + "time": 1779320607000, + "subject": "feat(FN-5329): remove orphan rescue and branch-recovery primitives from eng", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/distributed-task-id.test.ts", + "package": "packages/core", + "valueScore": 8, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 400, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 44.4, + "ageDays": 50, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "4708e453a", + "time": 1778126284000, + "subject": "fix(dashboard): pin --vv-offset-top to resize/focus, ignore pan scrolls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "e3f2e4c3b", + "time": 1778172102000, + "subject": "fix: resume distributed task ID counter past existing IDs; extract plugin view types", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "24325cd3c", + "time": 1778179705000, + "subject": "feat(FN-3710): retry overlap-class cluster create failures in distributed t", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "72e94dddb", + "time": 1778597231000, + "subject": "feat(FN-4044): harden task ID collision guards and allocation safety", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowSettingsPanel.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4 + }, + "durationMs": 400, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 44.4, + "ageDays": 21, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "9089e1870", + "time": 1780639021000, + "subject": "feat(dashboard): WorkflowSettingsPanel — definitions/values tabs, setting-value routes, flow-mapping round-trip", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61ae1bf70", + "time": 1780895267000, + "subject": "feat(workflow-settings): simplify workflow model lanes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c8cb740b9", + "time": 1780950778000, + "subject": "FN-6026: use model dropdowns for workflow lane settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d66630a43", + "time": 1781011516000, + "subject": "FN-6073: preserve pending workflow value edits during save", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c94fb194c", + "time": 1781733176000, + "subject": "FN-6584: keep title summarizer out of workflow lanes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/routine-runner.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 400, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 44.4, + "ageDays": 76, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d8d961c80", + "time": 1775845579000, + "subject": "fix: align routine system with actual RoutineStore/Routine APIs to prevent CLI crash", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "15b27253b", + "time": 1775848315000, + "subject": "feat(FN-1269): complete routine engine integration with RoutineRunner and RoutineScheduler", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/board-stall-auto-recovery.test.ts", + "package": "packages/engine", + "valueScore": 15, + "positiveCount": 8, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 3, + "testOnlyRatio": 0.273, + "signalTally": { + "added-with-source": 1, + "fix+source": 3, + "test-only-churn": 3, + "test+source": 2, + "fix": 2 + }, + "durationMs": 700, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 43.8, + "ageDays": 39, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "70aa8b31b", + "time": 1779071772000, + "subject": "feat(FN-4890): complete Step 5 — board-health recovery levers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4d1051141", + "time": 1779071772000, + "subject": "fix(FN-4890): refine board-stall notification path", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "dfeb379a1", + "time": 1779071773000, + "subject": "test(FN-4890): strengthen board-stall sweep assertions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5f6dddf86", + "time": 1779071773000, + "subject": "test(FN-4890): cover board-stall verification and cooldown", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e40aecf77", + "time": 1779071773000, + "subject": "fix(FN-4890): isolate stall verification from self-rebound transitions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "5233bc934", + "time": 1779071773000, + "subject": "feat(FN-4890): complete Step 8 — docs, defaults, and reliability coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useTasks.test.ts", + "package": "packages/dashboard", + "valueScore": 57, + "positiveCount": 34, + "negativeCount": 10, + "neutralCount": 2, + "timesTouched": 46, + "testOnlyCount": 6, + "testOnlyRatio": 0.13, + "signalTally": { + "fix+source": 12, + "added-with-source": 2, + "test+source": 26, + "churn-keyword": 6, + "test-only-churn": 6, + "fix": 1 + }, + "durationMs": 2500, + "testCount": 82, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 43.1, + "ageDays": 88, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "ed933de5d", + "time": 1774837556000, + "subject": "fix(KB-042): prevent stale column state in SSE event handlers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "999866dbd", + "time": 1774838146000, + "subject": "feat(KB-033): add inline card editing with optimistic updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a7de078fe", + "time": 1774895215000, + "subject": "feat(KB-129): dashboard performance optimizations", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "337868e61", + "time": 1774912055000, + "subject": "test(KB-208): fix EventSource mock cleanup in useTasks tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "360f3e03b", + "time": 1774914634000, + "subject": "feat(KB-069): add Archive All Done feature", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useDevServer.test.ts", + "package": "packages/dashboard", + "valueScore": 6, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 2, + "fix": 1 + }, + "durationMs": 300, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 42.9, + "ageDays": 67, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "687c4ac0c", + "time": 1776656894000, + "subject": "feat(FN-2168): add persistent dev-server dashboard flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "18f985a72", + "time": 1776699024000, + "subject": "test(FN-2179): complete Step 6 dev server hook and component tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f21ed51b9", + "time": 1776722996000, + "subject": "feat(FN-2182): add dashboard dev server management view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "56fb6cbc1", + "time": 1776751648000, + "subject": "feat(FN-2188): harden dev server view lifecycle and mobile nav", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ThemeSelector.test.tsx", + "package": "packages/dashboard", + "valueScore": 27, + "positiveCount": 18, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 20, + "testOnlyCount": 1, + "testOnlyRatio": 0.05, + "signalTally": { + "added-with-source": 1, + "test+source": 16, + "test-only-churn": 1, + "fix+source": 1, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 1200, + "testCount": 40, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 42.9, + "ageDays": 88, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "6bfdb6bcd", + "time": 1774840920000, + "subject": "feat(KB-024): add comprehensive theme system to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cd7b866da", + "time": 1774851976000, + "subject": "feat(KB-070): add Ayu and One Dark themes to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bce16bd81", + "time": 1774856763000, + "subject": "feat(KB-072): expand dashboard theme system with Factory tokens", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e77f262e1", + "time": 1774913689000, + "subject": "feat(KB-173): add Zen theme to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2a914dec8", + "time": 1775295898000, + "subject": "feat(FN-839): add nord, dracula, gruvbox, and tokyo-night color themes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskReviewTab.test.tsx", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 13, + "negativeCount": 7, + "neutralCount": 0, + "timesTouched": 20, + "testOnlyCount": 4, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 4, + "test-only-churn": 4, + "test+source": 15 + }, + "durationMs": 400, + "testCount": 28, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 42.1, + "ageDays": 49, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "ecbf1f829", + "time": 1778221265000, + "subject": "feat(FN-3276): add task review tab with metadata persistence and desktop la", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fe663a498", + "time": 1778231861000, + "subject": "feat(FN-3725): add shell regression matrix and stabilize action gate and ro", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "cea0f6f6c", + "time": 1778261782000, + "subject": "feat(FN-3277): add review tab reviewState persistence and enriched UI state", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "04ff9d940", + "time": 1778265386000, + "subject": "feat(FN-3278): add direct-mode review tab to task detail modal", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "cb0b01b3d", + "time": 1778270727000, + "subject": "feat(FN-3279): refresh review state on manual trigger and restore roadmap e", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cc6cf53d6", + "time": 1778282883000, + "subject": "feat(FN-3280): harden reviewState persistence, API, and PR feedback sync", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/agent-modals-mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 9, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 5, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 5, + "test+source": 7, + "fix": 2, + "churn-keyword": 1 + }, + "durationMs": 400, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 42.1, + "ageDays": 78, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "0cdc163a6", + "time": 1775675935000, + "subject": "feat(FN-1178): harden mobile responsiveness across agent modals", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3c58dbe08", + "time": 1775808321000, + "subject": "feat(FN-1266): add dashboard API integration tests for budget endpoints", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2873bc038", + "time": 1776883406000, + "subject": "refactor(FN-2206): centralize agent modal styling in dashboard CSS", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9474e157d", + "time": 1777031232000, + "subject": "test(FN-0000): mock full agent detail API surface", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e1c767269", + "time": 1777271117000, + "subject": "feat(FN-2636): add plugin runtime mode support to agent management", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/node.test.ts", + "package": "packages/cli", + "valueScore": 1.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 58, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 79, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "b5980ebbb", + "time": 1775626138000, + "subject": "feat(FN-1080): add node management APIs and CLI commands", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a53da8890", + "time": 1775764456000, + "subject": "feat(FN-1229): add node mesh CLI commands for node and mesh management", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "65c9c2f6c", + "time": 1776256027000, + "subject": "feat(FN-1832): add daemon mode and auth-aware node connect", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cd3acff88", + "time": 1776258893000, + "subject": "feat(FN-1832): add daemon mode and auth middleware integration tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3263babe1", + "time": 1777443814000, + "subject": "feat(FN-2729): merge fusion/fn-2729", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "550e9edd4", + "time": 1781367242000, + "subject": "FN-6367: fix constructible CLI test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/activity-log-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 1.5, + "positiveCount": 3, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 3, + "testOnlyRatio": 0.429, + "signalTally": { + "added": 1, + "fix+source": 1, + "test-only-churn": 3, + "test+source": 1, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 83, + "lastTouched": "2026-06-11", + "evidence": [ + { + "sha": "80712060b", + "time": 1775263956000, + "subject": "feat(FN-795): add mobile responsive layout for Activity Log modal", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9f4e387be", + "time": 1775291116000, + "subject": "fix(FN-821): fix Activity Log modal layout and close control", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "53037dcc3", + "time": 1776189531000, + "subject": "feat(FN-1697): merge fusion/fn-1697", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "28187cf36", + "time": 1781159053000, + "subject": "FUS-7 keep activity modal on screen", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/git-manager-theme-styling.test.ts", + "package": "packages/dashboard", + "valueScore": 1.5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "fix": 1, + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "c41340715", + "time": 1777060644000, + "subject": "fix(FN-2365): tokenize Git Manager light-theme surface styles", + "status": "A", + "touchedSource": false, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix", + "added" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/task-detail-modal-tablet-width.test.ts", + "package": "packages/dashboard", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 28, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "2c4683a29", + "time": 1780022727000, + "subject": "Recovery: re-land tablet TaskDetailModal width onto main", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "eb607c6ff", + "time": 1781376413000, + "subject": "FN-6377: make tablet modals touch-resizable", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "98cb80d88", + "time": 1781664585000, + "subject": "FN-6500: fix tablet task detail modal sizing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/FileMentionPopup.test.tsx", + "package": "packages/dashboard", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 68, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "9974cc701", + "time": 1776523017000, + "subject": "feat(FN-1947): add file mention search and chat autocomplete", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ec8d1f524", + "time": 1778984208000, + "subject": "test(FN-4812): assert mobile FileMentionPopup anchoring rule", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "12a6ee9af", + "time": 1779275560000, + "subject": "feat(FN-5218): add hash mentions to chat composers and popups", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MailboxModal.cache.test.tsx", + "package": "packages/dashboard", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 40, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "49de604f3", + "time": 1779014096000, + "subject": "test(FN-4859): complete Steps 6-7 — cache coverage and loader invalidation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cec86d23a", + "time": 1779014096000, + "subject": "test(FN-4859): expand cache hydration coverage across views", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "24c15bc66", + "time": 1779238483000, + "subject": "test(dashboard): extract .data from SWR cache envelope in cache tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "00af26470", + "time": 1779257052000, + "subject": "Fix tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useToast.test.tsx", + "package": "packages/dashboard", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 86, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "789cc519d", + "time": 1775003248000, + "subject": "test(KB-606): add comprehensive test coverage across packages", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "39e833b91", + "time": 1776461503000, + "subject": "feat(FN-2014): merge fusion/fn-2014", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/inReviewStallCopy.test.ts", + "package": "packages/dashboard", + "valueScore": 1.5, + "positiveCount": 3, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 43, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "1b7d760b9", + "time": 1778714977000, + "subject": "feat(FN-4288): complete Step 1 — add in-review stall copy module", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3573573a3", + "time": 1778824667000, + "subject": "feat(FN-4462): complete Step 1 — per-code stall copy and counter", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "03a452211", + "time": 1778832176000, + "subject": "test(FN-4570): complete Step 3 — cover merge-active stall suppression", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5793c4bcd", + "time": 1779035467000, + "subject": "feat(FN-4885): complete Step 6 — add deadlock disposition dashboard copy", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ad35a1ccf", + "time": 1779201371000, + "subject": "test(FN-5134): complete Step 2 — cover no-worktree badge suppression", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "320b153c4", + "time": 1781034680000, + "subject": "FN-6113: fail fast on terminal provider errors", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/register-docker-provisioning-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 53, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "873a30141", + "time": 1777842611000, + "subject": "feat(FN-3110): add docker provisioning service, API routes, and status UI c", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1c706769f", + "time": 1779240816000, + "subject": "test(dashboard): add deterministicGuardLocks to remaining @fusion/core mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/auto-recovery-contamination.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "fix+source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 42, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "a01b90b07", + "time": 1778822204000, + "subject": "test(FN-4545): add unit coverage for contamination and delivery handlers", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "2d782569d", + "time": 1778822204000, + "subject": "fix(FN-4545): wire retry-burn logging and complete handler coverage", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "ad73d7658", + "time": 1778887182000, + "subject": "feat(FN-4640): complete Step 6 — dashboard sandbox audit surface", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a2caac36e", + "time": 1779062821000, + "subject": "test(FN-4887): complete Step 4-5 — add interaction coverage and docs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/auto-recovery.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "79eb74ca7", + "time": 1778806797000, + "subject": "feat(FN-4534): add auto-recovery dispatcher and pause-site wiring", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d2df78dfb", + "time": 1778806797000, + "subject": "test(FN-4534): fix auto-recovery audit assertion typing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ecd5ebfc3", + "time": 1778822204000, + "subject": "feat(FN-4545): complete Step 1 — extend auto-recovery failure taxonomy", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ad73d7658", + "time": 1778887182000, + "subject": "feat(FN-4640): complete Step 6 — dashboard sandbox audit surface", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-plan-only-scope-leak.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "churn-keyword": 1, + "test-only-churn": 2, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 42, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "ffd274d64", + "time": 1778794285000, + "subject": "feat(FN-4482): complete Step 2 — add plan-only scope leak guard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61cfb115c", + "time": 1778794285000, + "subject": "fix(FN-4482): harden scope guard typing and prompt source", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "4a485f0fc", + "time": 1778794286000, + "subject": "test(FN-4482): stabilize scope leak assertions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "ea6501bed", + "time": 1778983078000, + "subject": "test(FN-4810): complete Step 2 — cover truncation behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b69265651", + "time": 1779107350000, + "subject": "feat(FN-4999): recover completion handoff limbo safely", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/hybrid-executor-multi-node-routing.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 40, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "91895a8b8", + "time": 1778959990000, + "subject": "feat(FN-4775): add multi-node routing test coverage for hybrid executor", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6a6c6fdbf", + "time": 1779857851000, + "subject": "perf(dashboard): speed up startup and eliminate API request storms", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/hybrid-executor-startup.integration.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 40, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "55575dbf8", + "time": 1778956375000, + "subject": "test(FN-4772): add hybrid wiring integration and lifecycle coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6a6c6fdbf", + "time": 1779857851000, + "subject": "perf(dashboard): speed up startup and eliminate API request storms", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/plan-review-unavailable-recovery.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test+source": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "fcf2c39a9", + "time": 1778678975000, + "subject": "test(FN-4092): complete Step 1 — reproduce unavailable stall baseline", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "53f4de2fc", + "time": 1778678975000, + "subject": "feat(FN-4092): complete Step 2 — add reviewer fallback retry", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "203217a88", + "time": 1778678975000, + "subject": "fix(FN-4092): address step 2 review feedback", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/in-review-stall-deadlock-disposition.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added": 1, + "test+source": 3, + "test-only-churn": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 39, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "ddfc927ab", + "time": 1779035467000, + "subject": "test(FN-4885): complete Step 5 — add deadlock disposition reliability interaction", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "3d0cce72f", + "time": 1779035467000, + "subject": "feat(FN-4885): complete Step 7 — finalize docs and changeset", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "22c3acf2e", + "time": 1779119060000, + "subject": "test(FN-5052): complete Step 6 — cover self-healing autoMerge gating", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5030e2963", + "time": 1781001860000, + "subject": "FN-6070: fix completion-handoff limbo recovery accounting", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "320b153c4", + "time": 1781034680000, + "subject": "FN-6113: fail fast on terminal provider errors", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktrunk-self-healing.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 41, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "ad99f54a9", + "time": 1778914212000, + "subject": "test(FN-4628): complete Step 4 — add worktrunk self-healing interaction backstop", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "07baf9526", + "time": 1778914212000, + "subject": "test(FN-4628): address review feedback for interaction backstop", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fd202e935", + "time": 1779320607000, + "subject": "feat(FN-5329): remove orphan rescue and branch-recovery primitives from eng", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/stepwise-workflow-parity.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 21, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "60e9938f5", + "time": 1780604149000, + "subject": "feat(core,engine): U7 — builtin stepwise coding workflow + trajectory parity & invariant suite; agent-tool surfaces for custom fields and IR authoring", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d4e91d459", + "time": 1782025351000, + "subject": "feat(core): add workflow-step seam + browser-verification optional step to stepwise workflow", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5506fcc0f", + "time": 1782093298000, + "subject": "feat(FN-6880): migrate built-in browser-verification to an optional-group (U6)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "eb3833a54", + "time": 1782369172000, + "subject": "FN-6971: retire dual-observe cutover gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/runtimes/__tests__/remote-node-client.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 62, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "935166dbb", + "time": 1778137534000, + "subject": "feat(FN-3450): add mesh task create replication across nodes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "46a50c123", + "time": 1778993598000, + "subject": "feat(FN-4824): forward task assignment events across remote runtime", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/runtimes/__tests__/remote-node-runtime.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 62, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "46a50c123", + "time": 1778993598000, + "subject": "feat(FN-4824): forward task assignment events across remote runtime", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/sandbox/__tests__/native-streaming.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 41, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "e22bd4626", + "time": 1778872370000, + "subject": "test(FN-4643): complete Step 3 — cover native streaming behavior", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "cc7b9f308", + "time": 1778872370000, + "subject": "feat(FN-4643): complete Step 7 — documentation and delivery", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "818db4a71", + "time": 1779236342000, + "subject": "feat(FN-5189): complete Step 3 — migrate supervised spawns", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/plugin-loader-contributions.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 200, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 50, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "b28ae48ff", + "time": 1778073489000, + "subject": "feat(FN-3102): add plugin contribution types, scheduled evaluator, and agen", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ce54a0d82", + "time": 1778221265000, + "subject": "feat(FN-3182): scope plugin installs globally with project enablement", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "71822f26d", + "time": 1780890224000, + "subject": "feat(engine): add workflow extension plugin seams", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ActiveAgentsPanel.test.tsx", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 73, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "3da39fa6f", + "time": 1776119708000, + "subject": "feat(FN-1650): merge fusion/fn-1650", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c31090efb", + "time": 1777497838000, + "subject": "fix(dashboard): unstick Active Agents panel cards from \"Connecting...\"", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "480e55ffd", + "time": 1781303645000, + "subject": "FN-6311: fix localized next-heartbeat fallbacks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/runtime-selection-regression.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 64, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "866e7cdb7", + "time": 1776891430000, + "subject": "feat(FN-2260): merge fusion/fn-2260", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a24f50ba0", + "time": 1777245275000, + "subject": "feat(FN-2617): merge fusion/fn-2617 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "3f5893bdc", + "time": 1777904714000, + "subject": "feat(FN-3074): sort done column by recency, preserve merge-active state, ad", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2e3be32f1", + "time": 1778202432000, + "subject": "feat(FN-3560): add permanent agent gating enforcement in pi with tool class", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c89d68dd2", + "time": 1779270519000, + "subject": "feat(FN-5203): merge fusion/fn-5203", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/project-context.test.ts", + "package": "packages/cli", + "valueScore": 6.5, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1, + "fix+source": 2, + "quarantine-ledger": 1 + }, + "durationMs": 300, + "testCount": 11, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 86, + "lastTouched": "2026-05-02", + "evidence": [ + { + "sha": "1ac6ebf2b", + "time": 1775021846000, + "subject": "feat(KB-503): complete Step 1 — project context resolution utilities", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "07adb42d6", + "time": 1775081218000, + "subject": "feat(KB-503): merge kb/kb-503", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "327775136", + "time": 1776121505000, + "subject": "feat(FN-1692): merge fusion/fn-1692", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "84ed84313", + "time": 1776618814000, + "subject": "feat(FN-2123): merge fusion/fn-2123", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5661188a6", + "time": 1777474738000, + "subject": "fix(FN-0000): harden sqlite startup validation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-health.test.ts", + "package": "packages/core", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 300, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 44, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "afa2240fd", + "time": 1778597230000, + "subject": "feat(FN-4029): expose database health in API and store contracts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1b49cbc94", + "time": 1779275623000, + "subject": "feat(FN-5284): surface db corruption via health checks, self-healing, and d", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5c1503141", + "time": 1779343373000, + "subject": "fix(health): re-run integrity check on Refresh health, not just re-read cache", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentReflectionsTab.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 1, + "test-only-churn": 2, + "fix": 1 + }, + "durationMs": 300, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 77, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "c1e0df2fe", + "time": 1775758557000, + "subject": "feat(FN-1183): add agent reflections tab to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "73244a0f5", + "time": 1776656893000, + "subject": "fix(FN-2149): harden agent reflection error handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0206862c0", + "time": 1777046102000, + "subject": "feat(FN-2324): merge fusion/fn-2324", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "d6bea0d6e", + "time": 1778522066000, + "subject": "feat(FN-4016): convert hardcoded rgba colors to CSS token variables across", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/charts/recharts/__tests__/LineChart.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 300, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 7, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "d6e2f920e", + "time": 1781847001000, + "subject": "FN-6682: add themed recharts chart wrappers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8f052c6b9", + "time": 1781912853000, + "subject": "FN-6723: normalize activity trend chart scaling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d06e31693", + "time": 1782231164000, + "subject": "fix(command-center): keep Recharts cards from blanking", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/__tests__/one-shot-session.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1, + "fix+source": 2 + }, + "durationMs": 300, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 40, + "ageDays": 21, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "8bac390e1", + "time": 1780643757000, + "subject": "feat(engine): cli-agent one-shot sessions for validator, planning, and CE (U9)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a9815fb1f", + "time": 1781515841000, + "subject": "FN-6457: add ACP ask runner and bundled Claude bridge setup", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "61d2a1a60", + "time": 1782240518000, + "subject": "fix(engine): bound one-shot CLI output capture", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "4704e58ed", + "time": 1782241840000, + "subject": "fix(cli): drain TUI performance entries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-acquisition.test.ts", + "package": "packages/engine", + "valueScore": 22.5, + "positiveCount": 15, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 17, + "testOnlyCount": 2, + "testOnlyRatio": 0.118, + "signalTally": { + "added-with-source": 1, + "test+source": 13, + "test-only-churn": 2, + "fix+source": 1 + }, + "durationMs": 900, + "testCount": 23, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 38.3, + "ageDays": 43, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "bf6a679ff", + "time": 1778678974000, + "subject": "feat(FN-4257): run durable heartbeat task sessions in worktree", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "86f8caf14", + "time": 1778750936000, + "subject": "chore(FN-4428): import dependency content from fusion/fn-4410", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0570ec389", + "time": 1778755280000, + "subject": "feat(FN-4410): complete Step 1 — dispatch reclaim telemetry wiring", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0a98e97a9", + "time": 1778790781000, + "subject": "feat(FN-4499): complete Step 5 — add acquisition misbinding warning", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0f372f67c", + "time": 1778899068000, + "subject": "feat(FN-4623): complete Step 3 — add backend-aware path resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ed8c8752f", + "time": 1778992465000, + "subject": "feat(FN-4834): complete Step 1 — surface init diagnostics in task log", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/db-init-perf.test.ts", + "package": "packages/core", + "valueScore": 7, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix": 1, + "test+source": 2 + }, + "durationMs": 300, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 37.5, + "ageDays": 44, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "db1bbda36", + "time": 1778597231000, + "subject": "feat(FN-4094): cache schema compatibility checks with fingerprint fast path", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "95cd678c5", + "time": 1778779910000, + "subject": "fix(FN-4429): resolve lint and test gate regressions", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "573662603", + "time": 1778783025000, + "subject": "feat(FN-4485): complete verification and documentation updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f6f38676b", + "time": 1779406231000, + "subject": "feat(FN-5226): add scope auto-widen layer 2.5 to merger for attribution-bas", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/CustomProvidersSection.test.tsx", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 4 + }, + "durationMs": 300, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 37.5, + "ageDays": 57, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "74989993a", + "time": 1777531158000, + "subject": "feat(FN-2964): merge fusion/fn-2964", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1b3e68740", + "time": 1777551243000, + "subject": "feat(FN-2965): add custom providers API routes and settings UI", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a487a20bb", + "time": 1778684712000, + "subject": "feat: auto-detect models from custom providers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d767e2ecb", + "time": 1779942672000, + "subject": "feat(FN-5601): add OpenAI Responses API type support to custom providers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0077b10ef", + "time": 1781251593000, + "subject": "Fix masked API key echoed back when editing custom providers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7ffea9f4a", + "time": 1781273580000, + "subject": "FN-6290: expose Google Generative AI custom providers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/skills-view-mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 8, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 2, + "testOnlyRatio": 0.167, + "signalTally": { + "added": 1, + "test+source": 6, + "fix+source": 2, + "churn-keyword": 3, + "test-only-churn": 2, + "fix": 1 + }, + "durationMs": 300, + "testCount": 30, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 37.5, + "ageDays": 71, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "bbecfd097", + "time": 1776302597000, + "subject": "feat(FN-1793): merge fusion/fn-1793", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f2ab2226d", + "time": 1776345410000, + "subject": "feat(FN-1890): improve mobile UX for SkillsView component", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e3491b2d4", + "time": 1776349277000, + "subject": "fix(FN-1907): wrap skills page sections in scrollable content container", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "5edd49130", + "time": 1776511106000, + "subject": "feat(FN-1913): add skill content viewer to SkillsView", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5499405fc", + "time": 1776546587000, + "subject": "feat(FN-1986): improve skills content loading and mobile detail UX", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-pr-conflict.test.ts", + "package": "packages/engine", + "valueScore": 7, + "positiveCount": 5, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 3, + "testOnlyRatio": 0.375, + "signalTally": { + "added": 1, + "fix+source": 2, + "test-only-churn": 3, + "test+source": 2 + }, + "durationMs": 300, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 37.5, + "ageDays": 39, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "2f0e1c6c2", + "time": 1779050783000, + "subject": "test(FN-4763): add PR conflict reclaim engine coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "893fb32b6", + "time": 1779050783000, + "subject": "fix(FN-4763): add run-audit type and reclaim outcome coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "86c3063d9", + "time": 1779050783000, + "subject": "test(FN-4763): expand reclaim guard-path coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f9bcf2acf", + "time": 1779050783000, + "subject": "test(FN-4763): strengthen pr-conflict reclaim interaction coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "76b1ba817", + "time": 1779050783000, + "subject": "feat(FN-4763): complete Step 4 — add conflict reclaim route test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bba945c8b", + "time": 1779050784000, + "subject": "feat(FN-4763): complete Step 7 — finalize reclaim wiring and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkspaceSelector.test.tsx", + "package": "packages/dashboard", + "valueScore": 4.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 2 + }, + "durationMs": 200, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 36.4, + "ageDays": 87, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "f2c00ad14", + "time": 1774945617000, + "subject": "feat(KB-175): move file browser to header with workspace support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "efc49dee2", + "time": 1775059703000, + "subject": "test(FN-686): fix pre-existing dashboard test failures", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "93ecf83a1", + "time": 1777723744000, + "subject": "feat(FN-3198): improve ListView split-pane UX and add agent runs tab", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d6bea0d6e", + "time": 1778522066000, + "subject": "feat(FN-4016): convert hardcoded rgba colors to CSS token variables across", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b58a2c2dd", + "time": 1778822204000, + "subject": "feat(FN-4552): complete Step 3 — guard workspace selector rendering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/heartbeat-scheduler.test.ts", + "package": "packages/engine", + "valueScore": 13.5, + "positiveCount": 11, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 1, + "testOnlyRatio": 0.077, + "signalTally": { + "added": 1, + "test+source": 11, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 500, + "testCount": 82, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 34.5, + "ageDays": 52, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "88171eb5b", + "time": 1777928727000, + "subject": "feat(FN-3308): fix CSS token consistency in settings and task detail modals", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "202f88b80", + "time": 1778039258000, + "subject": "refactor(agents): remove terminated AgentState; collapse to paused/error", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f2fadd10", + "time": 1778044715000, + "subject": "feat(engine): gate executor and heartbeat on allowParallelExecution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e004b205d", + "time": 1778044715000, + "subject": "feat(agents): decouple heartbeat from task state, add allowParallelExecution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "94a5dca53", + "time": 1778062047000, + "subject": "feat(FN-3535): restore terminated agent state and align lifecycle controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1ce47fd87", + "time": 1778087907000, + "subject": "feat(FN-3580): restore canonical agent lifecycle and remove terminated agen", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 164.5, + "positiveCount": 116, + "negativeCount": 21, + "neutralCount": 4, + "timesTouched": 141, + "testOnlyCount": 12, + "testOnlyRatio": 0.085, + "signalTally": { + "added-with-source": 2, + "test+source": 109, + "fix+source": 15, + "churn-keyword": 14, + "fix": 3, + "test-only-churn": 12 + }, + "durationMs": 5700, + "testCount": 30, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 34.4, + "ageDays": 92, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "cf79ae52d", + "time": 1774487405000, + "subject": "test(HAI-013): complete Step 2 — add TaskDetailModal tests and vitest config", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "27c8744c4", + "time": 1774490489000, + "subject": "feat(HAI-024): complete Step 1 — remove PROMPT.md header from TaskDetailModal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "397716f37", + "time": 1774493889000, + "subject": "fix(HAI-039): eliminate duplicate description in prompts and modal heading", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "35177f448", + "time": 1774497011000, + "subject": "feat(HAI-055): add failed task status handling with retry support", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "f1c1f9e11", + "time": 1774497163000, + "subject": "feat(HAI-043): fix title fallback to show description instead of duplicate ID", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2296b3648", + "time": 1774497465000, + "subject": "fix(HAI-060): remove nested scrollbar from activity in card detail view", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/bin-targets.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "e33dadd77", + "time": 1780462454000, + "subject": "FN-5916: fix CLI bin targets for pnpm install", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/bundle-output-helpers.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "63a14fe7a", + "time": 1778205619000, + "subject": "feat(FN-3717): gate bootstrap on openclaw bridge asset", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "84a34a062", + "time": 1778206672000, + "subject": "feat(FN-3718): add droid runtime to tsup bundle with asset gate", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3bbd15381", + "time": 1778418859000, + "subject": "feat(FN-3170): harden plugin bundling contract and fix verification regress", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/goals-citations-cli.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 27, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "71e2aec5b", + "time": 1780068338000, + "subject": "FN-5663: add goal-citation audit trail to agent reasoning", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/goals-commands.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 28, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "009d569bd", + "time": 1780022655000, + "subject": "Recovery: re-land `fn goals` CLI + pi tools onto main", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/plugin-pack-shape.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 24, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "0a418e687", + "time": 1780368028000, + "subject": "FN-5844: add plugin dev loop and external authoring docs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/pr-automerge-cleanup.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "66591ec11", + "time": 1781356329000, + "subject": "FN-6333: add legacy auto-merge cleanup surfaces", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/llama-cpp-extension.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 52, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "b7ac46ece", + "time": 1777915118000, + "subject": "feat(FN-3195): document llama.cpp provider setup and onboarding", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/onboard-docs.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 24, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "c676cbe12", + "time": 1780359311000, + "subject": "FN-5813: update fn onboard help and CLI docs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/dashboard-tui/__tests__/bucket-mapping.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "66cffe904", + "time": 1780561984000, + "subject": "feat(cli): TUI trait-flag bucket mapping + read-only Other (custom) bucket — no card silently dropped (U11)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/dashboard-tui/__tests__/log-ring-buffer.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "a283ef2b7", + "time": 1777084760000, + "subject": "feat(cli): merge @fusion/tui into fn dashboard with Ink TUI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/dashboard-tui/__tests__/log-sink.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "a283ef2b7", + "time": 1777084760000, + "subject": "feat(cli): merge @fusion/tui into fn dashboard with Ink TUI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/dashboard-tui/__tests__/terminal-attach.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 24, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "57631c749", + "time": 1780642570000, + "subject": "feat(cli): TUI full-screen attach to cli-agent sessions (U14)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/plugins/__tests__/bundled-plugin-freshness.test.ts", + "package": "packages/cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 8, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "0767d1bf8", + "time": 1781754332000, + "subject": "FN-6616: generalize bundled plugin freshness guard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-log-file-store.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "d72cb2ab2", + "time": 1780474218000, + "subject": "FN-5911: move agent logs to per-task JSONL storage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-permission-policy-resolution.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "2aa580585", + "time": 1778789769000, + "subject": "feat(FN-4488): complete Step 1 — core permission policy model", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-role-policy.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "fix+source": 1, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "c0a2adf51", + "time": 1778230808000, + "subject": "fix(FN-3716): stabilize verification and role policy checks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + }, + { + "sha": "1f7958fc0", + "time": 1778561306000, + "subject": "feat(FN-3935): align engineer role routing with explicit assignment and del", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "167f9b054", + "time": 1781318737000, + "subject": "FN-6324: allow opted-in engineer backlog auto-claim", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/ai-engine-loader.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 54, + "lastTouched": "2026-05-02", + "evidence": [ + { + "sha": "8cdc0ff44", + "time": 1777753477000, + "subject": "feat(FN-3155): add createAiSession plugin context API with DI wiring", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/archive-db-title-id-drift.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "10455b799", + "time": 1779036670000, + "subject": "feat(FN-4898): reconcile task title-id drift in storage migrations", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/assert-not-workspace-task-merge.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "a6252e518", + "time": 1782093486000, + "subject": "refactor(merger): unify on runAiMerge as the sole merge path (U0)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7240b77c6", + "time": 1782094795000, + "subject": "fix(review): harden R7 workspace merge guard + deprecation warning (U0)", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/available-memory.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "d99246cb7", + "time": 1782073939000, + "subject": "FN-6834: use OS-available memory for system metrics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/board-action-services.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "71822f26d", + "time": 1780890224000, + "subject": "feat(engine): add workflow extension plugin seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/capacity.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "b32e7d491", + "time": 1778678975000, + "subject": "feat(FN-4199): complete Step 1 — add capacity helper and settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/central-claim-mutex.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "3190eac88", + "time": 1778989680000, + "subject": "test(FN-4822): complete Step 4 — add AgentStore central-claim wiring tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/central-core-docker-node.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 54, + "lastTouched": "2026-05-02", + "evidence": [ + { + "sha": "d9835970e", + "time": 1777745979000, + "subject": "feat(FN-3107): merge fusion/fn-3107", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/central-project-node-mappings.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "b434cc2d3", + "time": 1778182569000, + "subject": "feat(FN-3503): add project-node path mapping persistence APIs and schema", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/cli-session-store.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "ad5205f18", + "time": 1780638740000, + "subject": "feat(core): add cli_sessions table and CliSessionStore (U1)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/column-agent-resolver.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "e421774f6", + "time": 1780641332000, + "subject": "feat(core): column agent IR schema, validation, and effective-agent resolver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2a0223472", + "time": 1780676944000, + "subject": "Address PR review feedback (#1432)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "59364e7c5", + "time": 1780693190000, + "subject": "Address PR review feedback round 2 (#1432)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/custom-provider-key.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 29, + "lastTouched": "2026-05-28", + "evidence": [ + { + "sha": "d767e2ecb", + "time": 1779942672000, + "subject": "feat(FN-5601): add OpenAI Responses API type support to custom providers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/default-workflow-hooks.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "4e1b0fab0", + "time": 1780558872000, + "subject": "feat(core): workflow-resolved transitions behind workflowColumns flag, typed rejections, default-workflow hook parity (U4)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/dependency-blocked-todo-report.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "e97efc9f3", + "time": 1779186076000, + "subject": "feat(FN-5091): complete Step 1 — add core dependency blocked detector", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/duplicate-lineage.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "4b01e8e66", + "time": 1779116541000, + "subject": "feat(FN-4899): complete Step 1 — add duplicate lineage helpers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/eval-scoring.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 50, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "6c9f87f71", + "time": 1778090945000, + "subject": "feat(FN-3390): export eval score category type and harden evaluator switch", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/eval-signal-collector.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 50, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "6a599d607", + "time": 1778072705000, + "subject": "feat(FN-3389): fix scheduled evaluator integration types", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/experiment-session-types.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "1d369a268", + "time": 1778742723000, + "subject": "feat(FN-4218): complete Step 1 — define experiment session types", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/explicit-duplicate-marker.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "8f2d5e7e6", + "time": 1779312525000, + "subject": "feat(FN-5220): guard explicit duplicate markers in triage and self-healing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/frontend-ux-policy.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 13, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "f7f2cae9d", + "time": 1781281442000, + "subject": "FN-6237: apply frontend UX criteria as workflow policy", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/global-settings-cli-agents.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "243113a3c", + "time": 1780644627000, + "subject": "feat: cli-agent adapter settings, autonomy approval gate, and node editor config (U15)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/global-settings-guard.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 67, + "lastTouched": "2026-04-19", + "evidence": [ + { + "sha": "84ed84313", + "time": 1776618814000, + "subject": "feat(FN-2123): merge fusion/fn-2123", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/goal-citation-audit-aggregation.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 26, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "194dfa938", + "time": 1780206804000, + "subject": "FN-5758: add cited-goal audit aggregation and runtime route", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/goal-citation-extractor.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 27, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "71e2aec5b", + "time": 1780068338000, + "subject": "FN-5663: add goal-citation audit trail to agent reasoning", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/is-secret-scope.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "18f810f84", + "time": 1779056242000, + "subject": "feat(FN-4945): complete Step 1 — add isSecretScope guard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/merge-details.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "6d1ced69e", + "time": 1778803456000, + "subject": "feat(FN-4518): complete Step 1 — add MergeDetails rebase base SHA", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/mesh-task-replication.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 50, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "935166dbb", + "time": 1778137534000, + "subject": "feat(FN-3450): add mesh task create replication across nodes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/no-commits-finalize-guard.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 11, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "fee0178b4", + "time": 1781515748000, + "subject": "FN-6461: block incomplete no-commits no-op finalization", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/no-op-completion-marker.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 13, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "4e6df035c", + "time": 1781344497000, + "subject": "FN-6275: allow verified no-op completions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/project-identity.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 34, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "687237bd9", + "time": 1779535135000, + "subject": "feat(FN-5411): add project identity recovery and identity-aware startup rea", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/project-isolation-transition.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "63adddadf", + "time": 1778977869000, + "subject": "feat(FN-4813): complete Step 5 — add isolation transition runtime restart path", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/reconcile-droid-cli-paths.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 55, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "e67d4de40", + "time": 1777663544000, + "subject": "feat(FN-2984): add droid CLI path reconciliation extension", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/redact-secrets.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "ea18ef8d4", + "time": 1780638782000, + "subject": "feat(engine): extract shared PTY native-asset loader and redactSecrets (U16)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/resolvePersistAgentThinkingLog.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "e15035797", + "time": 1778678976000, + "subject": "feat(FN-4080): complete Step 1 — add thinking persistence resolver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/sandbox-provisioning-policy.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "9ef00e119", + "time": 1778910991000, + "subject": "feat(FN-4641): complete Step 2 — add sandbox provisioning policy resolver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/settings-schema-agent-permission-policy.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "2aa580585", + "time": 1778789769000, + "subject": "feat(FN-4488): complete Step 1 — core permission policy model", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/settings-schema-sandbox-provisioning.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "30f71d399", + "time": 1778910990000, + "subject": "feat(FN-4641): complete Step 1 — extend core types and settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/stalled-review-detector.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "5fc5a07a3", + "time": 1778678974000, + "subject": "feat(FN-4168): complete Step 2 — add stalled review detector", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-engine-active-since.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "c60045df2", + "time": 1779312547000, + "subject": "feat(FN-5223): anchor staleness and stall detectors to engine activation ti", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-stuck-kill-reset.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "b9b9447d6", + "time": 1782065876000, + "subject": "fix(FN-5048): reset stuck-kill streak on forward progress", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-helpers.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 38, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "aad121903", + "time": 1779144648000, + "subject": "feat(FN-4967): merge fusion/fn-4967", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9bc5b5f4e", + "time": 1779395799000, + "subject": "feat(FN-5443): merge fusion/fn-5443", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "216c32bfe", + "time": 1779403548000, + "subject": "feat(FN-5347): reset manual retry counters across task retry surfaces", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-lineage.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 45, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "5386d3856", + "time": 1778507263000, + "subject": "feat(FN-3990): add task lineage identity and association storage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/thinking-levels.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 6, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "c158dda8a", + "time": 1781912854000, + "subject": "FN-6745: add xhigh thinking level support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/trait-registry.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 20, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "a5ac822de", + "time": 1780557597000, + "subject": "feat(core): trait registry, 14 built-in traits, composition validator (U2)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/use-llama-cpp-settings.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 52, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "b7ac46ece", + "time": 1777915118000, + "subject": "feat(FN-3195): document llama.cpp provider setup and onboarding", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-ir-column-agent.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "e421774f6", + "time": 1780641332000, + "subject": "feat(core): column agent IR schema, validation, and effective-agent resolver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-prompt-overrides.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "26c8d960a", + "time": 1782102221000, + "subject": "FN-6893: add editable built-in workflow prompts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/App.boot-gate.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "c6e978286", + "time": 1778960997000, + "subject": "feat(FN-4779): merge fusion/fn-4779", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/ShellContext.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 50, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "419c6f3b3", + "time": 1778070596000, + "subject": "feat(FN-3400): add native shell connection handoff, plugin management CLI/l", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/browser-layout-smoke-fixture.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "dae08e455", + "time": 1779107714000, + "subject": "feat(FN-4999): fix completion handoff limbo and run context isolation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/column-fixed-width.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 4, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added": 1, + "test+source": 4, + "churn-keyword": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 89, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "cc4ff6d8f", + "time": 1774729823000, + "subject": "feat(KB-171): constrain column widths in desktop grid and mobile flex", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "52b820522", + "time": 1774839823000, + "subject": "feat(KB-034): add task archive/unarchive functionality", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7fd5704a8", + "time": 1775103908000, + "subject": "Removed unwanted files marked in .gitignore", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5654d2e23", + "time": 1775108298000, + "subject": "feat: add per-provider timeout for usage panel to prevent blocking on slow responses", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5450080d4", + "time": 1777219380000, + "subject": "feat(FN-2582): widen board columns and align mobile snap centering", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/dev-server-layout-css.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 66, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "99cafa3a4", + "time": 1776724652000, + "subject": "feat(FN-2170): add dev-server preview detection and log viewer flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "315892a28", + "time": 1776748207000, + "subject": "feat(FN-2173): add auto-fallback flow for dev server preview", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/global-theme-css-no-raw-rgba.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 9, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "222b5cedf", + "time": 1781647704000, + "subject": "FN-6489: replace dashboard rgba tokens with color-mix", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/goals-refinement-evidence-pack-docs.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "05098e403", + "time": 1780551083000, + "subject": "FN-5963: add goals refinement evidence pack", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/graph-workflow-header.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 1, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "d7f3c7093", + "time": 1782369171000, + "subject": "FN-6941: add graph workflow filtering", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/insight-model-selector.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "f7080fef6", + "time": 1778188179000, + "subject": "feat(insights): add collapsible model selector to InsightsView with gear trigger", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mobile-bottom-space-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 17, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "1d0921e06", + "time": 1780953723000, + "subject": "FN-6032: fix mobile dashboard bottom-space padding", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mobile-scripts.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "ed84a728c", + "time": 1775629534000, + "subject": "feat(FN-1093): add mobile build, PWA, and live reload workflow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/no-legacy-public.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 89, + "lastTouched": "2026-03-28", + "evidence": [ + { + "sha": "c3aa58f90", + "time": 1774729823000, + "subject": "feat(KB-168): remove legacy public/ directory and server fallback", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/pull-request-view.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 20, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "8a6a67a30", + "time": 1780723114000, + "subject": "feat(pr): dashboard PR view, routes, node-state UI + user controls (U7)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "aa8bd3dc9", + "time": 1780967688000, + "subject": "fix(FN-6043): recover stuck task processing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/swUpdate.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 48, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "13852e4ca", + "time": 1778251130000, + "subject": "feat(FN-3730): add action-gate reload endpoint for reloadable exempt-tools", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/viewport-compensation-keyboard.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 27, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "129e17d16", + "time": 1780110314000, + "subject": "FN-5702: keep mobile footer and nav pinned when keyboard opens", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/api/__tests__/deleteAiSession.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 23, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "dab1569ac", + "time": 1780429324000, + "subject": "FN-5892: dedupe planning sessions and persist history deletion", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/api/__tests__/legacy-pr-types.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "0b6d1594c", + "time": 1779102159000, + "subject": "feat(FN-4983): merge fusion/fn-4983", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/api/__tests__/plugin-setup-api.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 50, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "ea485b28b", + "time": 1778102234000, + "subject": "feat(FN-3573): harden plugin setup sync and test-isolation handling", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentAvatar.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 51, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "964e111f8", + "time": 1778039257000, + "subject": "feat(FN-3118): document avatar storage in agents and architecture", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentProvisioningPolicyEditor.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "93f5a4cf1", + "time": 1778854236000, + "subject": "feat(FN-4599): complete Step 3 — add provisioning policy editor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentTokenStatsPanel.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "3cf040a08", + "time": 1777100839000, + "subject": "feat(tui): card windowing, log G-jump, header tiny mode, expand-log width", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ApprovalNotificationBanner.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 47, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "409e18d70", + "time": 1778347865000, + "subject": "feat(FN-3551): add persistent approval notification banner", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/CapacityRiskBanner.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "2c50fb6b2", + "time": 1778678975000, + "subject": "feat(FN-4199): complete Step 3 — add capacity risk banner", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.cli-toggle.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "ace710633", + "time": 1780652318000, + "subject": "feat(dashboard): cli-agent hybrid chat transcript with raw-terminal toggle (U12)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DataBoundary.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 23, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "b95e7f757", + "time": 1780434864000, + "subject": "FN-5894: share project data-boundary and status helpers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DbCorruptionBanner.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "1b49cbc94", + "time": 1779275623000, + "subject": "feat(FN-5284): surface db corruption via health checks, self-healing, and d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DockerProvisioningStatus.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 53, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "873a30141", + "time": 1777842611000, + "subject": "feat(FN-3110): add docker provisioning service, API routes, and status UI c", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DockerTargetSelector.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 53, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "93ecc88fe", + "time": 1777819665000, + "subject": "feat(FN-3109): add Docker connectivity service and target selector UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/EngineControlMenu.css.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "da7fb002d", + "time": 1782073540000, + "subject": "FN-6862: give engine controls popover an opaque surface", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/FloatingWindowStack.cross-type.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 3, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "19be91c9f", + "time": 1782131590000, + "subject": "feat(dashboard): shared bring-to-front z-stack for all floating modals; fix TaskChatTab tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/GitHubStarPrompt.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "962b97ce8", + "time": 1780551328000, + "subject": "FN-5967: add first-task GitHub star prompt", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/IssueMentionPopup.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "aa8779951", + "time": 1778948466000, + "subject": "feat(FN-4735): complete Step 5 — add issue mention popup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/LoginInstructions.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 60, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "51f076b21", + "time": 1777281861000, + "subject": "feat(FN-2667): improve login instruction device code handling", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MissionManager.error-recovery.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "13b564b0f", + "time": 1779295360000, + "subject": "feat(FN-5328): guard malformed mission hierarchy data in MissionManager", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/NativeShellConnectionStatus.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 52, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/NodeHealthDot.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 58, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "3263babe1", + "time": 1777443814000, + "subject": "feat(FN-2729): merge fusion/fn-2729", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/NodeStatusIndicator.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 77, + "lastTouched": "2026-04-09", + "evidence": [ + { + "sha": "c4a48491e", + "time": 1775764879000, + "subject": "feat(FN-1232): add remote node mesh dashboard integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PlanningModeModal.dedupeSessionsById.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 23, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "dab1569ac", + "time": 1780429324000, + "subject": "FN-5892: dedupe planning sessions and persist history deletion", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ProjectHealthBadge.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 23, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "f20c37471", + "time": 1780415365000, + "subject": "FN-5881: guard project status badges against unknown states", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ProjectNodeSelector.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 58, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "3263babe1", + "time": 1777443814000, + "subject": "feat(FN-2729): merge fusion/fn-2729", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SelectionCommentPopover.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 9, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "4bfb6b46a", + "time": 1781692179000, + "subject": "FN-6528: add selection comments for new tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModal.memory-css.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 45, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "0e4a2afbd", + "time": 1778540797000, + "subject": "feat(FN-4043): fix memory editor flex layout in SettingsModal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModal.workflow-model-lane-css.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 17, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "474b492b2", + "time": 1780950778000, + "subject": "FN-6027: show and space default workflow model overrides", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsSyncLog.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 70, + "lastTouched": "2026-04-16", + "evidence": [ + { + "sha": "19a06a6a2", + "time": 1776353888000, + "subject": "feat(FN-1826): merge fusion/fn-1826", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ShadcnColorPicker.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "58f758842", + "time": 1782083634000, + "subject": "FN-6816: add shadcn custom color picker", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskCardBadge.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "1c4eee177", + "time": 1778709905000, + "subject": "feat(FN-4370): complete Step 1 — fix badge null-merge semantics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskDetailModal.terminal-tab.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "e10db8139", + "time": 1780647373000, + "subject": "feat(dashboard): cli-agent terminal UI, task-card states, and notification banner support (U11)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TerminalLauncher.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "7034b5528", + "time": 1782107014000, + "subject": "FN-6887: add footer terminal launcher", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TestModeBanner.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "9c2b61eec", + "time": 1779434114000, + "subject": "feat(FN-5204): add test mode activation across settings, engine, and dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowOptionalStepsDropdown.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 5, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "f08bf6af2", + "time": 1782026554000, + "subject": "feat(dashboard): shared optional-steps dropdown in the quick-add card", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkspaceWorktreesSummary.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "023e4b057", + "time": 1782101240000, + "subject": "feat(workspace): Phase A U3 — dashboard \"doesn't look broken\" floor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorktrunkInstallApprovalDetails.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "1eef42a91", + "time": 1778913583000, + "subject": "feat(FN-4702): complete Step 3 — render worktrunk approval details", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/board-no-legacy-flash.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 0, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 5, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "c80817797", + "time": 1781995336000, + "subject": "FN-6776: prevent workflow board legacy flash", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/board-quickcreate-workflow-lane-visibility.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "c4c8961c1", + "time": 1782104672000, + "subject": "FN-6903: preserve workflow quick-create visibility", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/mentionMatching.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 47, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "ef1d4c776", + "time": 1778347865000, + "subject": "feat(FN-3809): normalize mention filtering for underscore handles", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/node-summary.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 17, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "13c6d96fe", + "time": 1780995436000, + "subject": "FN-6031: add workflow notification nodes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/onboarding-events.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 69, + "lastTouched": "2026-04-17", + "evidence": [ + { + "sha": "8a8f6bf93", + "time": 1776438098000, + "subject": "feat(FN-1998): instrument onboarding funnel analytics events", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/shadcnCustomColors.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "58f758842", + "time": 1782083634000, + "subject": "FN-6816: add shadcn custom color picker", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/workflow-setting-display.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 8, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "c94fb194c", + "time": 1781733176000, + "subject": "FN-6584: keep title summarizer out of workflow lanes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/MissionControlPanel.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "070ed98ca", + "time": 1781579114000, + "subject": "feat(command-center): U6b — live Mission-Control panel", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/settings/sections/__tests__/MergeSection.legacy-automerge-cleanup.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "66591ec11", + "time": 1781356329000, + "subject": "FN-6333: add legacy auto-merge cleanup surfaces", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/context/__tests__/FileBrowserContext.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 44, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "25e76d61d", + "time": 1778648143000, + "subject": "feat(FN-4227): add clickable file path links across dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useAgentsMapCache.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "cfc70b21b", + "time": 1779272384000, + "subject": "feat(FN-5202): add SWR caching for chat agents, skills, and models", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useAiSessionSync.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 78, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "2a34ebe6c", + "time": 1775692115000, + "subject": "feat(FN-1154): sync AI session state across browser tabs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useArtifacts.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "ef4889585", + "time": 1782082867000, + "subject": "FN-6779: add artifacts gallery to Documents", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useAutosizeTextarea.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "accc89c7f", + "time": 1778909052000, + "subject": "feat(FN-4712): complete Step 2 — extract autosize textarea hook", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useBackgroundSessions.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "854045f43", + "time": 1779412526000, + "subject": "feat(FN-5416): instrument SSE stream resume events across PR checks, dev-se", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useBranchTaskFilters.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "79b71ad23", + "time": 1782269572000, + "subject": "refactor(dashboard): extract useBranchTaskFilters hook from App.tsx", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useChatRooms.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "1913cb59f", + "time": 1779332329000, + "subject": "feat(FN-5389): add resume event instrumentation with SSE, hooks, and diagno", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useChatUnread.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "9b51f01f9", + "time": 1778883596000, + "subject": "feat(FN-4661): complete Step 1 — add useChatUnread hook", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useDevServerLogs.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "854045f43", + "time": 1779412526000, + "subject": "feat(FN-5416): instrument SSE stream resume events across PR checks, dev-se", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useDockerProvisioning.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 53, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "873a30141", + "time": 1777842611000, + "subject": "feat(FN-3110): add docker provisioning service, API routes, and status UI c", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useDockerTargets.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 53, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "93ecc88fe", + "time": 1777819665000, + "subject": "feat(FN-3109): add Docker connectivity service and target selector UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useGitHubStarPrompt.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "962b97ce8", + "time": 1780551328000, + "subject": "FN-5967: add first-task GitHub star prompt", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useLiveTranscript.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 73, + "lastTouched": "2026-04-14", + "evidence": [ + { + "sha": "3da39fa6f", + "time": 1776119708000, + "subject": "feat(FN-1650): merge fusion/fn-1650", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4e38c5f7d", + "time": 1776129691000, + "subject": "feat(FN-1719): rebuild eslint baseline and add memory lessons", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "efd8c85e9", + "time": 1776191356000, + "subject": "feat(FN-1764): merge fusion/fn-1764", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useMailboxUnread.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "f98cce090", + "time": 1782269215000, + "subject": "refactor(dashboard): extract useMailboxUnread + useApprovalBanner hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useMainPanelTaskDetail.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "f6f9e822f", + "time": 1782274176000, + "subject": "refactor(dashboard): extract task-detail, board-scroll, popped-out hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useManagedDockerNodes.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "c04442f6e", + "time": 1779404993000, + "subject": "feat(FN-5415): wire visibility resume emissions in board hooks and add test", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useManagedDockerNodes.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 52, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "5dcb739bb", + "time": 1777900332000, + "subject": "feat(FN-3112): tokenize NodesView border-radius and motion styles", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useMeshState.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "c04442f6e", + "time": 1779404993000, + "subject": "feat(FN-5415): wire visibility resume emissions in board hooks and add test", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useModalResizePersist.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "eb607c6ff", + "time": 1781376413000, + "subject": "FN-6377: make tablet modals touch-resizable", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useNodeProxy.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 77, + "lastTouched": "2026-04-09", + "evidence": [ + { + "sha": "c4a48491e", + "time": 1775764879000, + "subject": "feat(FN-1232): add remote node mesh dashboard integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useNodes.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "c04442f6e", + "time": 1779404993000, + "subject": "feat(FN-5415): wire visibility resume emissions in board hooks and add test", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useOverlayDismiss.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 34, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "b22112af8", + "time": 1779527171000, + "subject": "feat(FN-5482): suppress touch-synthesized mouse events on overlay dismiss", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/usePoppedOutTasks.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "f6f9e822f", + "time": 1782274176000, + "subject": "refactor(dashboard): extract task-detail, board-scroll, popped-out hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/usePrChecksStream.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "854045f43", + "time": 1779412526000, + "subject": "feat(FN-5416): instrument SSE stream resume events across PR checks, dev-se", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/usePrChecksStream.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "76c5142f4", + "time": 1779032991000, + "subject": "feat(FN-4760): complete Step 3 — add PR checks polling hook", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useProjectBookmarks.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 19, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "cb455bf75", + "time": 1780773960000, + "subject": "feat(dashboard): scrollable, autocomplete, bookmarkable project selector", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useProjects.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "c04442f6e", + "time": 1779404993000, + "subject": "feat(FN-5415): wire visibility resume emissions in board hooks and add test", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useResearch.resume-instrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "854045f43", + "time": 1779412526000, + "subject": "feat(FN-5416): instrument SSE stream resume events across PR checks, dev-se", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useScopedDismissFlag.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "f8c366d8f", + "time": 1782270224000, + "subject": "refactor(dashboard): extract useDashboardHealth, useAuthTokenRecovery, useScopedDismissFlag", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useSelectionComment.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 9, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "4bfb6b46a", + "time": 1781692179000, + "subject": "FN-6528: add selection comments for new tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useShellConnection.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "7b9e5259d", + "time": 1778204145000, + "subject": "feat(FN-3403): add shell multi-profile support with connection manager onbo", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useShellContext.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "9e04467b5", + "time": 1778221265000, + "subject": "feat(FN-3406): add shell context hook plumbing for dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/i18n/__tests__/format.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "677fb9c46", + "time": 1780500169000, + "subject": "feat(dashboard): establish string-migration pattern and locale formatting (U5)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/i18n/__tests__/index.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "4f6013ff3", + "time": 1780502596000, + "subject": "test+refactor(i18n): close code-review residuals", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/i18n/__tests__/labels.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "677fb9c46", + "time": 1780500169000, + "subject": "feat(dashboard): establish string-migration pattern and locale formatting (U5)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/boardWorkflowsCache.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 5, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "c80817797", + "time": 1781995336000, + "subject": "FN-6776: prevent workflow board legacy flash", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/codemirror-language.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "280466a16", + "time": 1778750625000, + "subject": "feat(FN-4411): complete Step 2 — add CodeMirror language resolver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/dashboardTraceBuffer.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "f9cf3f1bd", + "time": 1779070319000, + "subject": "feat(FN-4921): merge fusion/fn-4921", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/findInReviewStallLogEntry.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "7591e1fad", + "time": 1778714977000, + "subject": "feat(FN-4288): complete Step 2 — add stall log entry locator", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/projectStatusConfig.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 23, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "b95e7f757", + "time": 1780434864000, + "subject": "FN-5894: share project data-boundary and status helpers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/resumeInstrumentation.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "1913cb59f", + "time": 1779332329000, + "subject": "feat(FN-5389): add resume event instrumentation with SSE, hooks, and diagno", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/roomOpenDiagnostics.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "e96cb0998", + "time": 1779334031000, + "subject": "feat(FN-5388): add warm room cache hydration with open diagnostics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/shell-connection-settings.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "7b9e5259d", + "time": 1778204145000, + "subject": "feat(FN-3403): add shell multi-profile support with connection manager onbo", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/stalePausedReviewCopy.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "273fc7018", + "time": 1778808930000, + "subject": "feat(FN-4452): complete Step 4 — surface stale paused review in dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/taskAgeStalenessCopy.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "927a32182", + "time": 1778763316000, + "subject": "feat(FN-4465): complete Step 4 — dashboard stale signal surfacing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/taskStalledReview.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "71b6e5893", + "time": 1778678975000, + "subject": "feat(FN-4168): complete Step 5 — add stalled review badge UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/taskTiming.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "3648d1e1d", + "time": 1778856634000, + "subject": "feat(FN-4595): implement cumulative execution timing semantics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/terminalPreferences.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 9, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "e923b5e84", + "time": 1781679984000, + "subject": "FN-6527: add terminal shortcuts and preferences", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "16b6e5dec", + "time": 1781813983000, + "subject": "FN-6638: stabilize mobile terminal font metrics", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "11c412070", + "time": 1781823574000, + "subject": "FN-6659: keep xterm font metrics symbols-free", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/viewportOffset.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 27, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "129e17d16", + "time": 1780110314000, + "subject": "FN-5702: keep mobile footer and nav pinned when keyboard opens", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/ai-session-timeout.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 58, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "60d084915", + "time": 1777411555000, + "subject": "fix(dashboard,core): bound AI session prompt() with timeout + abort", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-attachment-content.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 9, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "cc022867b", + "time": 1781669360000, + "subject": "FN-6505: inline chat attachment contents for agents", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-cli-sessions.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "ace710633", + "time": 1780652318000, + "subject": "feat(dashboard): cli-agent hybrid chat transcript with raw-terminal toggle (U12)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-manager-cli-send.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "58723312d", + "time": 1780655081000, + "subject": "feat: bootstrap cli-agent runtime and wire executor, transport, chat, and recovery seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-system-prompt.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "34fbe1b66", + "time": 1778728826000, + "subject": "test(FN-4186): complete Step 2 — add chat prompt guidance regression tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/cli-package-version.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 57, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "ba3d868c2", + "time": 1777471852000, + "subject": "feat(FN-2944): merge fusion/fn-2944", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/cli-session-transport.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 11, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "863ebfaa9", + "time": 1781515841000, + "subject": "FN-6464: add CLI session relaunch route", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/dev-server-config-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 66, + "lastTouched": "2026-04-20", + "evidence": [ + { + "sha": "4aac69dc6", + "time": 1776715198000, + "subject": "feat(FN-2166): persist dev server script configuration across sessions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/dev-server-port-detect.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 66, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "99cafa3a4", + "time": 1776724652000, + "subject": "feat(FN-2170): add dev-server preview detection and log viewer flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "908b01672", + "time": 1777127698000, + "subject": "feat(FN-2488): add terminal refresh fallbacks for terminal startup failures", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "07d132ee2", + "time": 1777139432000, + "subject": "feat(FN-2445): merge fusion/fn-2445 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/devserver-types.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 66, + "lastTouched": "2026-04-21", + "evidence": [ + { + "sha": "e24c87866", + "time": 1776750326000, + "subject": "feat(FN-2183): add dev server management modules", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/diff-counts.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "b7e8a9fc0", + "time": 1778792672000, + "subject": "feat(FN-4521): complete Step 1 — fix patch line counting", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-client-set-issue-state.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 47, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "adbc5f1c2", + "time": 1778406218000, + "subject": "feat(FN-3873): add GitHub tracking state service for issue close/reopen lif", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-pr-threads.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 20, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "b871046ad", + "time": 1780713479000, + "subject": "feat(pr): GitHub primitives — thread reply/resolve, ETag probe, expectedHeadOid merge (U2)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-source-issue-close.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 28, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "b2dce7d85", + "time": 1780022971000, + "subject": "Recovery: Re-land (Close source-imported GitHub issues on ta", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "747bbf51f", + "time": 1781112876000, + "subject": "FN-6194: fix archived GitHub issue reconciliation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/initialize.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "a48232c91", + "time": 1775631669000, + "subject": "feat(FN-1116): add Capacitor plugin managers for dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/legacy-automerge-stamps-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "66591ec11", + "time": 1781356329000, + "subject": "FN-6333: add legacy auto-merge cleanup surfaces", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/pr-conflict-resolver.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 12, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "df01ab71d", + "time": 1781397971000, + "subject": "FN-6402: detect PR preflight conflicts by exit code", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/rate-limit.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 92, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "669dc3d1d", + "time": 1774484151000, + "subject": "test(HAI-001): add rate limiter unit tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "782412d1f", + "time": 1774983715000, + "subject": "test(KB-316): add comprehensive test coverage for dashboard services", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "230de32d0", + "time": 1777010557000, + "subject": "fix(dashboard): bump in-memory rate limits to avoid spurious 429s", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-git-github.backfill.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 7, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "9b396b637", + "time": 1781835178000, + "subject": "FN-6674: backfill GitHub source issue close times", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-model-routes-llama-cpp.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 52, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "b7ac46ece", + "time": 1777915118000, + "subject": "feat(FN-3195): document llama.cpp provider setup and onboarding", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-settings-droid-cli.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 55, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "31bc668c2", + "time": 1777661756000, + "subject": "feat(FN-2982): merge fusion/fn-2982", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-signal-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "951c6ef5c", + "time": 1781576603000, + "subject": "feat(signals): U11 — external signal ingestion (Sentry/Datadog/PagerDuty/webhook)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-diff-workspace.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 1, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "98fc453f4", + "time": 1782350998000, + "subject": "feat(workspace): show per-sub-repo changes in the task Changes tab", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e6e096645", + "time": 1782353111000, + "subject": "fix(workspace): address code-review findings on the workspace diff + Git Manager", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-file-search.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 68, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "9974cc701", + "time": 1776523017000, + "subject": "feat(FN-1947): add file mention search and chat autocomplete", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3f061460b", + "time": 1777425677000, + "subject": "fix(FN-2662): honor project model overrides and stabilize tests", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-merge-advance-push-origin.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "e5357a4af", + "time": 1779541611000, + "subject": "feat(FN-5359): add push-to-origin button and hook to merge advance notice", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-pr-checks.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "49daa3046", + "time": 1779032991000, + "subject": "feat(FN-4760): complete Step 2 — add PR checks endpoint and client", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-pr-merge.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "73454fae5", + "time": 1779045111000, + "subject": "feat(FN-4762): complete Step 3 — PR merge routes and dashboard controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-pull-requests.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 20, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "8a6a67a30", + "time": 1780723114000, + "subject": "feat(pr): dashboard PR view, routes, node-state UI + user controls (U7)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "e617ce65d", + "time": 1781577857000, + "subject": "feat(pr): U18 — surface + gate auto-resolution of PR review comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "61f389ed3", + "time": 1781614571000, + "subject": "Address PR review feedback (#1683)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-session-files-stale-worktree.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "d13ee7f52", + "time": 1779058518000, + "subject": "feat(FN-4962): complete Step 4 — dashboard fallback and reliability coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-task-commit-associations.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 45, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "fe8c18652", + "time": 1778507263000, + "subject": "feat(FN-3998): add task lineage commit associations API, UI, and tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-tasks-explicit-duplicate-marker.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "8f2d5e7e6", + "time": 1779312525000, + "subject": "feat(FN-5220): guard explicit duplicate markers in triage and self-healing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/signal-source.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "951c6ef5c", + "time": 1781576603000, + "subject": "feat(signals): U11 — external signal ingestion (Sentry/Datadog/PagerDuty/webhook)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/sse-buffer.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 78, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "90fbf3e39", + "time": 1775653348000, + "subject": "feat(FN-1145): harden dashboard SSE streams with replay and reconnect", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/sse-task-deleted-payload.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 37, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "ee92b7153", + "time": 1779203586000, + "subject": "test(FN-5135): lock deletedAt SSE payload contract", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/stranded-refinements-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "2626f6170", + "time": 1778912902000, + "subject": "test(FN-4663): add stranded refinement route and store coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/test-isolation-guard.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 60, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "caa773cb9", + "time": 1777233656000, + "subject": "feat(FN-2606): merge fusion/fn-2606 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/todo-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 60, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "c7afa48c3", + "time": 1777236925000, + "subject": "feat(FN-2576): merge fusion/fn-2576 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/triage-trait.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "f45dde22e", + "time": 1781579318000, + "subject": "feat(triage): U12 — triage trait for issues and pull requests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/agent-onboarding-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "1f5e10231", + "time": 1778168958000, + "subject": "feat(FN-3554): expand AI agent interview onboarding flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/artifacts-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "ef4889585", + "time": 1782082867000, + "subject": "FN-6779: add artifacts gallery to Documents", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/cli-agent-settings-route.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "243113a3c", + "time": 1780644627000, + "subject": "feat: cli-agent adapter settings, autonomy approval gate, and node editor config (U15)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/register-diagnostics-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "1913cb59f", + "time": 1779332329000, + "subject": "feat(FN-5389): add resume event instrumentation with SSE, hooks, and diagno", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/register-settings-memory-worktrunk.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "26915af9a", + "time": 1778940965000, + "subject": "feat(FN-4723): complete Step 2 — gate settings API worktrunk enable", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9011c2107", + "time": 1779288297000, + "subject": "feat(FN-5320): canonicalize worktrunk binary name and manifest", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0453a65bf", + "time": 1781755973000, + "subject": "FN-6613: inject skills into agent session lanes", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/register-task-workflow-routes.merge.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "025683ca6", + "time": 1779413343000, + "subject": "feat(FN-5438): add manual merge blocker bypass mode for queued tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-heartbeat-procedures.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "d29b29736", + "time": 1778754222000, + "subject": "feat(FN-4394): complete Step 2 — add strict/lite/off heartbeat procedures", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-heartbeat-worktree.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "bf6a679ff", + "time": 1778678974000, + "subject": "feat(FN-4257): run durable heartbeat task sessions in worktree", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-memory-index.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "86381e4ad", + "time": 1778740895000, + "subject": "feat(FN-4393): complete Step 2 — add memory index builder", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-runtime-layers.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 46, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "24584c636", + "time": 1778443412000, + "subject": "feat(engine): add systemPromptLayers to AgentRuntimeOptions and wire into DefaultResourceLoader", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-self-improve.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 51, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "499417bc8", + "time": 1777987953000, + "subject": "feat(FN-3321): add agent self-improvement service and heartbeat evaluation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-session-helpers-mock.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "c89d68dd2", + "time": 1779270519000, + "subject": "feat(FN-5203): merge fusion/fn-5203", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-tools-ask-question.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 8, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "01b80db60", + "time": 1781740409000, + "subject": "FN-6589: add structured ask-question chat tool", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-tools-provisioning-approval.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 46, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "3ec12f10e", + "time": 1778481370000, + "subject": "feat(FN-3791): add agent provisioning approval guards and policy enforcemen", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-tools-web-fetch.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 48, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "a79e91d3a", + "time": 1778291948000, + "subject": "feat(FN-3758): align web fetch test coverage and documentation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-user-comments.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "0b410d54e", + "time": 1782124455000, + "subject": "FN-6915: surface user comments in agent prompts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/auto-merge-fact-providers.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "71822f26d", + "time": 1780890224000, + "subject": "feat(engine): add workflow extension plugin seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/automerge-toggle-legacy-advisory.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "bffae81a9", + "time": 1781352365000, + "subject": "FN-6277: track and reconcile legacy auto-merge stamps", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/await-input-sentinel.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "a43639b11", + "time": 1781366694000, + "subject": "feat(engine): pause workflow on skill-emitted await-input sentinel (U6)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/backlog-pressure-reporter.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "a8a413cc9", + "time": 1779132681000, + "subject": "feat(FN-5009): merge fusion/fn-5009", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/custom-providers-openai-responses.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 24, + "lastTouched": "2026-06-01", + "evidence": [ + { + "sha": "f76716e55", + "time": 1780327382000, + "subject": "FN-5833: fix custom Responses API model lookup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/dependency-blocked-todo-reporter.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "2bc1c023c", + "time": 1779186077000, + "subject": "feat(FN-5091): complete Step 3 — add dependency blocked todo reporter", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/effective-settings-merge.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "e8e54bf34", + "time": 1780637871000, + "subject": "feat(engine): per-task effective workflow settings — resolver, two-tier entry merge, fallback alignment", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/effective-settings-model-lane.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "e8e54bf34", + "time": 1780637871000, + "subject": "feat(engine): per-task effective workflow settings — resolver, two-tier entry merge, fallback alignment", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/engine-public-api.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 44, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "8220ec66b", + "time": 1778643541000, + "subject": "feat(FN-4238): export merger errors from engine and polish workflow results", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/error-classifier.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "22fee60ae", + "time": 1778700645000, + "subject": "chore(FN-4350): import dependency content from fusion/fn-4326", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-abort-all-in-flight.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 34, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "2a3a07a61", + "time": 1779516769000, + "subject": "feat(FN-5403): merge fusion/fn-5403", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-current-run-context-isolation.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "b69265651", + "time": 1779107350000, + "subject": "feat(FN-4999): recover completion handoff limbo safely", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-graph-requeue-gate.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 3, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "acf0fff41", + "time": 1782192157000, + "subject": "test(engine): cover workflow cutover recovery guards", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-lease-renewal.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "d3a2c8863", + "time": 1780888526000, + "subject": "FN-5945: narrow hot task updates to changed columns", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-missing-task-json-transient.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 28, + "lastTouched": "2026-05-28", + "evidence": [ + { + "sha": "200dda95d", + "time": 1779995403000, + "subject": "feat(FN-5624): suppress transient task.json ENOENT with guard, logging, and", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-reset-steps-if-work-lost.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "7bcffa5a5", + "time": 1779097412000, + "subject": "feat(FN-4990): complete Step 2 — recompute currentStep after lost work reset", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-review-step-indexing.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "cfe35325b", + "time": 1779097413000, + "subject": "feat(FN-4990): complete Step 5 — finalize verification and delivery", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a013bc030", + "time": 1781751140000, + "subject": "FN-6607: align step tools with zero-based prompt steps", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "0b410d54e", + "time": 1782124455000, + "subject": "FN-6915: surface user comments in agent prompts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-runtime-env.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 46, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "87772e1fb", + "time": 1778481369000, + "subject": "feat(FN-3767): add task runtime env injection into executor commands via pl", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-task-done-bulk-step-guard.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "3ca3b5e47", + "time": 1779003487000, + "subject": "feat(FN-4851): merge fusion/fn-4851", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-task-done-case-insensitive-branch.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "a2f4b99ec", + "time": 1779154012000, + "subject": "test(FN-5083): add case-insensitive task-done branch canonicalization", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-task-done-dissent-guard.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "3ca3b5e47", + "time": 1779003487000, + "subject": "feat(FN-4851): merge fusion/fn-4851", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-task-done-revise-verdict-guard.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "3ca3b5e47", + "time": 1779003487000, + "subject": "feat(FN-4851): merge fusion/fn-4851", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cfe35325b", + "time": 1779097413000, + "subject": "feat(FN-4990): complete Step 5 — finalize verification and delivery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a013bc030", + "time": 1781751140000, + "subject": "FN-6607: align step tools with zero-based prompt steps", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-workflow-revision-scope.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 44, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "7002427c9", + "time": 1778597230000, + "subject": "feat(FN-4070): add workflow revision forking for task retries", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-workspace-session-cwd.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "09bd01baf", + "time": 1782101240000, + "subject": "feat(workspace): Phase A U1 — executor session scoping for workspace mode", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-worktree-liveness.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "2531dff12", + "time": 1778678975000, + "subject": "test(FN-4114): complete Step 4 — add invariant and liveness regression tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "477f79f3e", + "time": 1778950588000, + "subject": "feat(FN-4737): parameterize worktree-escape test to use configured worktree", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f562c856d", + "time": 1779055355000, + "subject": "test(FN-4935): complete Step 5 — liveness gate regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7ee1fec22", + "time": 1782077338000, + "subject": "FN-6861: reject repo-root task worktrees", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ec1d29e81", + "time": 1782180668000, + "subject": "FN-6922: guard worktree acquisition returns from repo root", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/experiment-finalize-service.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "25234edc9", + "time": 1778756509000, + "subject": "feat(FN-4222): complete Step 3 — finalize service", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/experiment-metric-parser.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "629451ba7", + "time": 1778745524000, + "subject": "feat(FN-4219): complete Step 1 — add METRIC parser", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/external-integration-manifest.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "b06cf64cd", + "time": 1779317684000, + "subject": "feat(FN-5321): add evidence gap detector for external integration manifests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/external-integrations-registry.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "b06cf64cd", + "time": 1779317684000, + "subject": "feat(FN-5321): add evidence gap detector for external integration manifests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/goal-context-injector.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 27, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "335c49748", + "time": 1780063860000, + "subject": "FN-5651: add single-seam goal-context injector for system prompts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/goal-injection-diagnostics.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 27, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "ee0b1cd9c", + "time": 1780113008000, + "subject": "FN-5658: add goal injection visibility diagnostics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/in-review-merge-stall-deadlock-recovery.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 34, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "ba066c88a", + "time": 1779471441000, + "subject": "feat(FN-5488): merge fusion/fn-5488", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/manual-merge-bypass.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "025683ca6", + "time": 1779413343000, + "subject": "feat(FN-5438): add manual merge blocker bypass mode for queued tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-scope-auto-widen.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 35, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "f6f38676b", + "time": 1779406231000, + "subject": "feat(FN-5226): add scope auto-widen layer 2.5 to merger for attribution-bas", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-settings-degrade.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 15, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "bbf3de97a", + "time": 1781104045000, + "subject": "FN-6193: guard merger settings lookup for deleted tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/node-dispatch-validation.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "a1354685d", + "time": 1778221265000, + "subject": "feat(FN-3507): block dispatch when project lacks node mapping", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/persist-thinking-routing.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "8c4fbd5a6", + "time": 1778678976000, + "subject": "feat(FN-4080): complete Step 2 — route thinking persistence by agent kind", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pi-session-shutdown.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 47, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "f934cd6c3", + "time": 1778360105000, + "subject": "feat(FN-3889): emit shutdown event when Fusion session is disposed", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/post-merge-audit-emission.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "ce21271e5", + "time": 1778741959000, + "subject": "test(FN-4432): complete Step 3 — cover post-merge audit failure emission", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pr-rework-bound.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 20, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "96f801c01", + "time": 1780716744000, + "subject": "feat(pr): top-level bounded rework + auto-merge gate + legacy-bypass pin (U6)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/provider-adapters.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 61, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "db9f4ba57", + "time": 1777195228000, + "subject": "feat(FN-2519): add remote tunnel manager for settings sync", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pty-native.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "ea18ef8d4", + "time": 1780638782000, + "subject": "feat(engine): extract shared PTY native-asset loader and redactSecrets (U16)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/dual-observe-shadow-terminal-stage.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "18ba5c0c5", + "time": 1780545721000, + "subject": "Address PR review feedback (#1363)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/engine-active-since-floor.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "c60045df2", + "time": 1779312547000, + "subject": "feat(FN-5223): anchor staleness and stall detectors to engine activation ti", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/engine-stop-aborts-execution.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 34, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "2a3a07a61", + "time": 1779516769000, + "subject": "feat(FN-5403): merge fusion/fn-5403", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/executing-task-lock.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 2, + "fix+source": 2, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "b6df11a6a", + "time": 1778990811000, + "subject": "fix(FN-4811): process-wide executingTaskLock blocks parallel execute() across instances", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + }, + { + "sha": "5c36c0f15", + "time": 1778991310000, + "subject": "fix(FN-4811): scope-leak guard always allows .changeset/ paths", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/merge-request-shadow-handoff.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 26, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "20c1c3261", + "time": 1780177370000, + "subject": "FN-5741: persist merge-request handoff shadow contract", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/mission-validator-run-reaper.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 23, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "3b9ff4207", + "time": 1780439611000, + "subject": "FN-5901: reap stale mission validator runs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/node-settings-sync-auth.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "a49b8553f", + "time": 1779032836000, + "subject": "test(FN-4847): complete Step 4 — add denial-reason contract backstop", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "66ac44fa8", + "time": 1779032836000, + "subject": "fix(FN-4847): keep engine contract test build-safe", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/post-finalize-verification-noop-status-write.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 2, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "18e827dc8", + "time": 1779083395000, + "subject": "test(FN-5003): add post-finalize noop status-write race coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e2938114c", + "time": 1779083395000, + "subject": "feat(FN-5003): complete Step 8 — document invariant and finalize tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "29ac58f8d", + "time": 1780019423000, + "subject": "feat(FN-5633): standalone AI merge path (clean-room merge + AI reviewer)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a6252e518", + "time": 1782093486000, + "subject": "refactor(merger): unify on runAiMerge as the sole merge path (U0)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7240b77c6", + "time": 1782094795000, + "subject": "fix(review): harden R7 workspace merge guard + deprecation warning (U0)", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/reclaim-defers-on-active-session.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "a1b1f9aa0", + "time": 1778979543000, + "subject": "fix(FN-4811): defer self-healing reclaim when worktree has an active session", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/reclaim-phantom-executor-binding.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 6, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "df139ec84", + "time": 1781912853000, + "subject": "FN-6736: reclaim phantom executor bindings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/self-healing-multi-pr.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 38, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "aad121903", + "time": 1779144648000, + "subject": "feat(FN-4967): merge fusion/fn-4967", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/soft-delete-audit-and-column.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "c9fd41ef2", + "time": 1779270409000, + "subject": "feat(FN-5175): thread soft-delete audit context and add reconciliation scri", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/task-done-refusal-x-invariant.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "3ca3b5e47", + "time": 1779003487000, + "subject": "feat(FN-4851): merge fusion/fn-4851", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cfe35325b", + "time": 1779097413000, + "subject": "feat(FN-4990): complete Step 5 — finalize verification and delivery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a013bc030", + "time": 1781751140000, + "subject": "FN-6607: align step tools with zero-based prompt steps", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktrunk-failure.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "3339d94d4", + "time": 1778903634000, + "subject": "feat(FN-4625): complete Step 4 — add self-healing worktrunk pause guardrail", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reviewer-prompt-single-source.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 14, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "fb2c6e509", + "time": 1781236823000, + "subject": "FN-6235: source reviewer prompts from workflow IR", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/room-ambiguity.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "ee4652a49", + "time": 1779008881000, + "subject": "feat(FN-4861): merge fusion/fn-4861", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/room-coordination.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "6fdfb1ad5", + "time": 1779347853000, + "subject": "feat(FN-5425): add coordination notice system for multi-agent room task fil", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/routine-runner-sandbox-audit.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "423041a14", + "time": 1778888325000, + "subject": "test(FN-4689): complete Step 2 — add routine sandbox audit tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit-secret-taxonomy.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "8ef3f52cf", + "time": 1779051272000, + "subject": "feat(FN-4915): complete Step 1 — extend secret audit taxonomy", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit-session-runtime-resolved.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "7a20b9550", + "time": 1779563647000, + "subject": "feat(FN-5544): emit runtime-resolved audit event across engine lanes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit.sandbox.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "b28b1949a", + "time": 1778887182000, + "subject": "feat(FN-4640): complete Step 2 — add sandbox run auditor domain", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/runtime-primitives.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 17, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "8f42098cc", + "time": 1780971194000, + "subject": "feat(FN-6035): route execution through workflow primitives", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/runtime-resolution.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 23, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 64, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "866e7cdb7", + "time": 1776891430000, + "subject": "feat(FN-2260): merge fusion/fn-2260", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a24f50ba0", + "time": 1777245275000, + "subject": "feat(FN-2617): merge fusion/fn-2617 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/scope-leak-changeset-allowlist.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "5c36c0f15", + "time": 1778991310000, + "subject": "fix(FN-4811): scope-leak guard always allows .changeset/ paths", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/secrets-env-writer.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "48caf2814", + "time": 1779085761000, + "subject": "test(FN-4912): complete Step 9 — add env materialization verification coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-foreign-only-contamination.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "b5ed3d0c9", + "time": 1779062821000, + "subject": "feat(FN-4887): complete Step 2-3 — add foreign-only recovery sweep and shared handler", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-orphaned-task-dirs.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 6, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "c32c92532", + "time": 1781955631000, + "subject": "FN-6783: recover orphaned task dirs into the task index", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-paused-abort-recovery.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 6, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "964356387", + "time": 1781923846000, + "subject": "Fix pause-abort worktree leak + retry storm; add auto-recovery", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "7eaf51394", + "time": 1781925050000, + "subject": "Address PR #1687 review: harden pause-abort recovery + FNXC comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "08d1f0910", + "time": 1781993482000, + "subject": "FN-6796: preserve benign in-review pause aborts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-reattach-orphaned-executions.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 13, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "a9b11399d", + "time": 1781331448000, + "subject": "FN-6336: reattach orphaned assigned executions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-stale-merge-fanout.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "24e964274", + "time": 1778678974000, + "subject": "feat(FN-4241): close stale merging fanout recovery gap in self-healing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/shell-utils.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 59, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "db95f77d7", + "time": 1777303983000, + "subject": "feat(FN-2689): standardize cross-platform shell selection", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/stale-task-reporter.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "3577a8bab", + "time": 1778763316000, + "subject": "feat(FN-4465): complete Step 3 — scheduler stale task reporter", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/token-budget-enforcer.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "78b1842dd", + "time": 1778772241000, + "subject": "feat(FN-4396): merge fusion/fn-4396", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/token-usage-cache-ratio.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 46, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "7354abaf8", + "time": 1778443412000, + "subject": "feat(engine): add computeCacheHitRatio metric to token usage tracking", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-explicit-duplicate-marker.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 36, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "8f2d5e7e6", + "time": 1779312525000, + "subject": "feat(FN-5220): guard explicit duplicate markers in triage and self-healing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-fast-mode-workflow-variant.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 13, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "039d3ce44", + "time": 1781300391000, + "subject": "FN-6236: move fast triage into workflow settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-pause-abort.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 12, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "e305b1aa4", + "time": 1781365139000, + "subject": "FN-6361: respect paused tasks during triage planning", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-review-spec-dangling-refs.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "574d66113", + "time": 1779177758000, + "subject": "feat(FN-5112): complete Step 2 — gate fn_review_spec on dangling-ref detector", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-soft-delete-abort.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "ab0a25300", + "time": 1779264966000, + "subject": "feat(FN-5264): abort in-flight executor/merge/triage work on soft-delete (F", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-soft-delete-write-abort.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "87da1cb75", + "time": 1779243827000, + "subject": "test(dashboard): align github-tracking-documentation phrases with current docs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/web-fetch-universal.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 47, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "1d0c090b7", + "time": 1778347864000, + "subject": "feat(FN-3803): add universal web fetch to reviewer, merger, and triage agen", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/web-fetch.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 48, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "a79e91d3a", + "time": 1778291948000, + "subject": "feat(FN-3758): align web fetch test coverage and documentation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-graph-fanout.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "fcf175afb", + "time": 1780559645000, + "subject": "feat(engine): fan-out/join branch execution with crash-recoverable branch state, schema v107 (U13)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-graph-loop.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "a504238d2", + "time": 1780901785000, + "subject": "feat(FN-0000): add workflow loop nodes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-graph-optional-group.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "896b307a3", + "time": 1782091554000, + "subject": "feat(FN-6880): execute optional-group run-once-or-bypass in graph executor (U2)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-malformed-verdict-gate.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 8, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "403bd9d71", + "time": 1781733176000, + "subject": "FN-6582: enforce workflow gate artifact verdicts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-node-handlers-notify.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 17, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "13c6d96fe", + "time": 1780995436000, + "subject": "FN-6031: add workflow notification nodes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-parse-steps.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "14758f8ed", + "time": 1780602283000, + "subject": "feat(engine): U12e+U14 — parse-steps node handler, plugin parser adapter, code node runner (esbuild + child-process harness)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-required-artifact-gate.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 8, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "403bd9d71", + "time": 1781733176000, + "subject": "FN-6582: enforce workflow gate artifact verdicts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-step-parallel.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "af7c14197", + "time": 1780603455000, + "subject": "feat(engine): U10 — parallel step execution: dependency scheduler, per-instance worktrees, ordered integration, conflict→rework (KTD-11)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3ebaa321f", + "time": 1780606915000, + "subject": "fix(review): apply code-review fixes — runId/foreachNodeId wiring, worktree-leak cleanup, rework re-execution, instance pruning, SIGKILL fallback, type dedup, board memo split, agent-native field-schema context + fn_workflow_get", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-step-review.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "2cfa8a328", + "time": 1780601165000, + "subject": "feat(engine,core): U5+U6+U12core — step-review verdict handler, graph-source projection discipline, pluggable step-parser registry", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-verdict-provider-extensions.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "71822f26d", + "time": 1780890224000, + "subject": "feat(engine): add workflow extension plugin seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/__tests__/adapter-registry.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "4fc1a9dd4", + "time": 1780639453000, + "subject": "feat(engine): add CliAgentAdapter interface and CliSessionManager (U2)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/__tests__/autonomy.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "243113a3c", + "time": 1780644627000, + "subject": "feat: cli-agent adapter settings, autonomy approval gate, and node editor config (U15)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/__tests__/hook-scripts.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "d8248b4c4", + "time": 1780641547000, + "subject": "feat(dashboard): add cli-agent hook ingestion route and session hook scripts (U17)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/adapters/__tests__/claude-code.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 35, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "ec4377e10", + "time": 1780641178000, + "subject": "feat(engine): add Claude Code native-tier cli-agent adapter (U4)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/adapters/__tests__/codex.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 29, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "07dcb1695", + "time": 1780642805000, + "subject": "feat(engine): add Codex, Droid, and Pi cli-agent adapters (U5)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/adapters/__tests__/droid.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 26, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "07dcb1695", + "time": 1780642805000, + "subject": "feat(engine): add Codex, Droid, and Pi cli-agent adapters (U5)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/cli-agent/adapters/__tests__/pi.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "07dcb1695", + "time": 1780642805000, + "subject": "feat(engine): add Codex, Droid, and Pi cli-agent adapters (U5)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/notification/__tests__/oauth-alert-state.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 23, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "a1b7556c7", + "time": 1780467196000, + "subject": "FN-5924: throttle OAuth expiry alerts across restarts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/research/providers/__tests__/github-provider.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 57, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "9bea0a136", + "time": 1777540879000, + "subject": "feat(FN-2993): merge fusion/fn-2993", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "f738ed208", + "time": 1779584965000, + "subject": "fix: Replace htmlUrl with url in gh search repos query", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/research/providers/__tests__/web-search-provider.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 57, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "9bea0a136", + "time": 1777540879000, + "subject": "feat(FN-2993): merge fusion/fn-2993", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "e69631ec2", + "time": 1778380869000, + "subject": "feat(FN-3901): add builtin research web-search provider as default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "11e9d5b2b", + "time": 1778630672000, + "subject": "feat(FN-4135): add always-on web search with locked provider setting", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/sandbox/__tests__/container-argv.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "13e74488a", + "time": 1778918686000, + "subject": "feat(FN-4642): complete Step 1 — add container argv builder", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/i18n/src/__tests__/parity.test.ts", + "package": "packages/i18n", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 5, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "083ebf813", + "time": 1781963195000, + "subject": "FN-6780: make i18n status check key parity", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/mobile/src/__tests__/deep-links.test.ts", + "package": "packages/mobile", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 20, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "afd7ec34f", + "time": 1775634744000, + "subject": "feat(FN-1118): add mobile sharing and deep-link managers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/mobile/src/__tests__/push-notifications.test.ts", + "package": "packages/mobile", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 23, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "6da8853e7", + "time": 1775633523000, + "subject": "feat(FN-1117): add mobile push and dashboard plugin manager infrastructure", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/mobile/src/__tests__/share.test.ts", + "package": "packages/mobile", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "afd7ec34f", + "time": 1775634744000, + "subject": "feat(FN-1118): add mobile sharing and deep-link managers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/mobile/src/__tests__/shell-handoff.test.ts", + "package": "packages/mobile", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "9e04467b5", + "time": 1778221265000, + "subject": "feat(FN-3406): add shell context hook plumbing for dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/mobile/src/plugins/__tests__/connection-profiles.test.ts", + "package": "packages/mobile", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "7b9e5259d", + "time": 1778204145000, + "subject": "feat(FN-3403): add shell multi-profile support with connection manager onbo", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/execsync-guard.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 9, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "84830595f", + "time": 1781647704000, + "subject": "FN-6485: remove synchronous CLI probes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/pi-llama-cpp/src/__tests__/index.test.ts", + "package": "packages/pi-llama-cpp", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 52, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "b7ac46ece", + "time": 1777915118000, + "subject": "feat(FN-3195): document llama.cpp provider setup and onboarding", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/pi-llama-cpp/src/__tests__/resolver.test.ts", + "package": "packages/pi-llama-cpp", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 52, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "b7ac46ece", + "time": 1777915118000, + "subject": "feat(FN-3195): document llama.cpp provider setup and onboarding", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/central-core-ensure-project.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 34, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "687237bd9", + "time": 1779535135000, + "subject": "feat(FN-5411): add project identity recovery and identity-aware startup rea", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "db971a91e", + "time": 1780731508000, + "subject": "fix(FN-1455): initialize git during project registration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ProjectSelector.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 40, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 86, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "2b1e342ea", + "time": 1775032584000, + "subject": "feat(FN-674): implement multi-project dashboard UX", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f20c37471", + "time": 1780415365000, + "subject": "FN-5881: guard project status badges against unknown states", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cb455bf75", + "time": 1780773960000, + "subject": "feat(dashboard): scrollable, autocomplete, bookmarkable project selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a27921a27", + "time": 1780898618000, + "subject": "fix: address PR review feedback (#1467)", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/charts/recharts/__tests__/PieChart.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 7, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "d6e2f920e", + "time": 1781847001000, + "subject": "FN-6682: add themed recharts chart wrappers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d06e31693", + "time": 1782231164000, + "subject": "fix(command-center): keep Recharts cards from blanking", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useConfirm.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 200, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 60, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "410a438a7", + "time": 1777287925000, + "subject": "feat(FN-2639): replace native confirms with dashboard confirm dialog", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "44562cdf7", + "time": 1779108674000, + "subject": "feat(FN-4996): complete Step 1 — add tertiary confirm choice", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6aa1ff0fb", + "time": 1779594241000, + "subject": "feat(FN-5475): add allow-resurrection control to task delete flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/cli-session-ws.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "17c9303f2", + "time": 1780641879000, + "subject": "feat(dashboard): cli-agent session transport — WS attach, tickets, SSE state, output hardening (U10)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b9afce306", + "time": 1780656114000, + "subject": "fix(review): schema-version gate, output-filter escape-bypass, generic double-wrap, follow-up resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/active-merger-status.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 200, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 50, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "8a417a70b", + "time": 1778113519000, + "subject": "fix(merger): add active-merger advisory + observe destructive ops + log rescue stashes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-stalled-review.test.ts", + "package": "packages/core", + "valueScore": 8, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2 + }, + "durationMs": 300, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 33.3, + "ageDays": 43, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "e871a0256", + "time": 1778678974000, + "subject": "feat(FN-4168): complete Step 4 — hydrate stalled review signal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "13d2cf6e7", + "time": 1778678974000, + "subject": "fix(FN-4168): populate stalled review on full hydration paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0b0186a22", + "time": 1781034626000, + "subject": "fix(FN-6088): suppress queued merge stalled badges", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/settings-mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": 44.5, + "positiveCount": 35, + "negativeCount": 17, + "neutralCount": 0, + "timesTouched": 52, + "testOnlyCount": 14, + "testOnlyRatio": 0.269, + "signalTally": { + "added-with-source": 1, + "test+source": 29, + "test-only-churn": 14, + "fix": 2, + "fix+source": 6, + "churn-keyword": 3 + }, + "durationMs": 1500, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 33, + "ageDays": 78, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "537d1857a", + "time": 1775663301000, + "subject": "feat(FN-1141): improve dashboard mobile adaptations", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4f48d2d18", + "time": 1775671232000, + "subject": "feat(FN-1163): align command references with fn naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d70cef193", + "time": 1775691433000, + "subject": "feat(FN-1215): refresh settings branding and scope banner theming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9c3215387", + "time": 1775787382000, + "subject": "feat(FN-1440): promote Authentication in Settings sidebar with globe icon", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "60b9f8614", + "time": 1775837956000, + "subject": "feat(FN-1442): replace emoji scope icons with theme-aware Lucide icons", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "583285fa6", + "time": 1775842709000, + "subject": "feat(FN-1463): fix settings tab highlight alignment on mobile", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/memory-insights.test.ts", + "package": "packages/core", + "valueScore": 11.5, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 400, + "testCount": 102, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 32, + "ageDays": 82, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "c609df7db", + "time": 1775334322000, + "subject": "feat(FN-924): add memory insights module with extraction settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "04f835f82", + "time": 1775776484000, + "subject": "feat(FN-1399): add background memory summarization after task completion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "27c02d33c", + "time": 1775794068000, + "subject": "feat(FN-1477): add memory pruning to daily insight extraction", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "049f356f8", + "time": 1776577637000, + "subject": "feat(FN-2087): finalize canonical memory path migration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a9e68b38e", + "time": 1777194954000, + "subject": "fix(FN-2545): persist memory audit extraction state and polish MemoryView", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SpecEditor.test.tsx", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 2, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 300, + "testCount": 39, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 31.6, + "ageDays": 88, + "lastTouched": "2026-03-31", + "evidence": [ + { + "sha": "08c30401a", + "time": 1774834961000, + "subject": "feat(KB-014): add spec editing and AI revision to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "58a4753d6", + "time": 1774850053000, + "subject": "fix(KB-083): fix SpecEditor layout with proper CSS and remove hardcoded rows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b40973a03", + "time": 1774922992000, + "subject": "feat(KB-234): add double-click edit and Escape key handling to SpecEditor", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/insight-store.test.ts", + "package": "packages/core", + "valueScore": 100.5, + "positiveCount": 75, + "negativeCount": 20, + "neutralCount": 2, + "timesTouched": 97, + "testOnlyCount": 10, + "testOnlyRatio": 0.103, + "signalTally": { + "added-with-source": 1, + "test+source": 75, + "fix+source": 10, + "churn-keyword": 12, + "test-only-churn": 10, + "fix": 1 + }, + "durationMs": 3200, + "testCount": 67, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 31.5, + "ageDays": 71, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "7f06467f1", + "time": 1776278235000, + "subject": "docs(FN-1732): remove changeset for docs-only task", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "08a0d7157", + "time": 1776295936000, + "subject": "feat(FN-1715): add scope-aware automation and routine scheduling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4a576c028", + "time": 1776393155000, + "subject": "fix(FN-1952): bound recovery and task log growth", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bab976159", + "time": 1776406060000, + "subject": "fix(FN-1952): recover routines schedules merge", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6f1237572", + "time": 1776460177000, + "subject": "feat(FN-1982): merge fusion/fn-1982", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "074868dd5", + "time": 1776493712000, + "subject": "feat: auto-revive in-review tasks with failed pre-merge workflow steps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentPermissionPolicyEditor.test.tsx", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 30.8, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "921a9d362", + "time": 1778789770000, + "subject": "feat(FN-4488): complete Step 4 — shared policy editor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bf5170f5f", + "time": 1778789770000, + "subject": "feat(FN-4488): complete Step 5 — wire settings and agent permission panels", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "193e9e129", + "time": 1778854236000, + "subject": "feat(FN-4599): complete Step 2 — expose category and exempt tool examples", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "be2cccfba", + "time": 1778854236000, + "subject": "test(FN-4599): complete Step 5 — lock category and exempt panel coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f990b93a8", + "time": 1778861066000, + "subject": "test(FN-4612): complete Step 3 — add bullet list indentation regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/EngineControlMenu.test.tsx", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 2, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 30.8, + "ageDays": 5, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "48c86d7ca", + "time": 1782039699000, + "subject": "FN-6844: move engine controls to footer status bar", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e18745b79", + "time": 1782057640000, + "subject": "FN-6844: move engine controls to footer status bar", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "32fad6dfb", + "time": 1782073541000, + "subject": "FN-6863: raise footer concurrency slider limits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ExperimentalAgentOnboardingModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 30.8, + "ageDays": 55, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "58c0c612a", + "time": 1777650970000, + "subject": "feat(FN-3024): add experimental agent onboarding modal with create form han", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "409f06c5e", + "time": 1778071981000, + "subject": "feat(FN-3553): improve agent creation with native shell connection and onbo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f5e10231", + "time": 1778168958000, + "subject": "feat(FN-3554): expand AI agent interview onboarding flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e60c8c3c5", + "time": 1778178301000, + "subject": "feat(FN-3555): document richer onboarding drafts in agents.md and dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0cfc160bd", + "time": 1778181174000, + "subject": "feat(FN-3556): add review-before-apply flow with explicit draft review gate", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "15371e6c1", + "time": 1778184697000, + "subject": "feat(FN-3557): add draft-apply save/cancel confirmations and SQLite approva", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ScriptsModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 30.8, + "ageDays": 86, + "lastTouched": "2026-04-03", + "evidence": [ + { + "sha": "88fa46dd3", + "time": 1775033299000, + "subject": "feat(KB-643): Add project scripts management UI to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "dda3a569a", + "time": 1775147517000, + "subject": "feat(KB-643): add Dashboard Scripts UI feature", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f8465342", + "time": 1775177464000, + "subject": "fix(FN-000): scope dashboard project flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d063d3433", + "time": 1775180228000, + "subject": "test(FN-712): add regression test for modal overlay 'open' class visibility", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-nodes-sync-contract.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 6, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 2, + "testOnlyRatio": 0.222, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 5, + "fix": 1, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 30.8, + "ageDays": 40, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "a71cc8b78", + "time": 1778955218000, + "subject": "test(FN-4755): complete Step 2 — add sync contract endpoint catalog", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "933947373", + "time": 1779015040000, + "subject": "feat(FN-4870): add missing-URL denial regression test for node settings syn", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cca96a760", + "time": 1779047881000, + "subject": "test(FN-4913): complete Step 7 — add secrets sync contract coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "070ad2815", + "time": 1779169671000, + "subject": "feat(FN-5060): complete Step 7 — testing and verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useAuthOnboarding.test.ts", + "package": "packages/dashboard", + "valueScore": 18.5, + "positiveCount": 9, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "fix+source": 3 + }, + "durationMs": 600, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 30.8, + "ageDays": 78, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "321ec691b", + "time": 1775652804000, + "subject": "feat(FN-1203): extract App orchestration into focused hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9bc42a1cb", + "time": 1776125055000, + "subject": "feat(FN-1702): merge fusion/fn-1702", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "123ec5949", + "time": 1776235480000, + "subject": "feat(FN-1862): add completion state tracking for onboarding", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8a8f6bf93", + "time": 1776438098000, + "subject": "feat(FN-1998): instrument onboarding funnel analytics events", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8938bdf93", + "time": 1777125890000, + "subject": "feat(FN-2403): add project setup step to onboarding flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a5f97f6e6", + "time": 1777308965000, + "subject": "fix(FN-2704): gate auth onboarding behind setup wizard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/FileBrowser.test.tsx", + "package": "packages/dashboard", + "valueScore": 15.5, + "positiveCount": 9, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 5, + "fix": 3, + "fix+source": 1 + }, + "durationMs": 500, + "testCount": 50, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 30.3, + "ageDays": 81, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "81e4eb002", + "time": 1775447651000, + "subject": "feat(FN-943): add file browser context menu with copy, move, delete, rename, and download operations", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "af5701518", + "time": 1775653152000, + "subject": "feat(FN-1137): improve mobile dropdown and file browser interactions", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "7a60e0328", + "time": 1775743669000, + "subject": "fix(FN-1310): remove mobile 44px touch target enforcement from FileBrowser", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "51e23786c", + "time": 1776055234000, + "subject": "fix(dashboard): ensure file/import API calls are project-scoped in tests", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "1cbf9e101", + "time": 1776580907000, + "subject": "test: enforce test-directory isolation across all packages", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d01fb6a01", + "time": 1776846700000, + "subject": "feat(FN-2220): merge fusion/fn-2220", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ResearchView.test.tsx", + "package": "packages/dashboard", + "valueScore": 15.5, + "positiveCount": 14, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 20, + "testOnlyCount": 5, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 13, + "test-only-churn": 5, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 500, + "testCount": 27, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 30.3, + "ageDays": 57, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "c5de7e183", + "time": 1777526487000, + "subject": "feat(FN-2991): merge fusion/fn-2991", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a227d5b30", + "time": 1777535317000, + "subject": "feat(FN-2992): merge fusion/fn-2992", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c5f35ab34", + "time": 1777545801000, + "subject": "feat(FN-2994): merge fusion/fn-2994", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1b6ee247f", + "time": 1777600139000, + "subject": "feat(FN-2995): export research settings resolver for dashboard alias builds", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "44a996e76", + "time": 1777776343000, + "subject": "feat(FN-2998): scope ResearchView bottom safe-area padding to mobile", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d4c534a8d", + "time": 1777793855000, + "subject": "feat(FN-3016): research hardening, docker node onboarding, planning model s", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/GoalsView.test.tsx", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 7, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 10, + "testOnlyCount": 2, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "test-only-churn": 2, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 300, + "testCount": 29, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 30, + "ageDays": 40, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "b94eae4f2", + "time": 1778934567000, + "subject": "feat(FN-4719): complete Step 3-4 — goals view lazy wiring and changeset", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7ba5ad078", + "time": 1780067206000, + "subject": "FN-5649: wire GoalsView to Goals API workflows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d585ac218", + "time": 1780271038000, + "subject": "FN-5791: add markdown goal descriptions with show-more toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "41c891d7d", + "time": 1780379441000, + "subject": "FN-5850: add AI goal description drafting", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "abbeaec0a", + "time": 1780448321000, + "subject": "FN-5897: surface linked goals in mission read paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "963362cd4", + "time": 1781647704000, + "subject": "FN-6490: add mission-goal linking controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/onboard-autolaunch-backcompat-e2e.test.ts", + "package": "packages/cli", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 24, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "245129e24", + "time": 1780358156000, + "subject": "FN-5812: add onboard autolaunch backcompat guard coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "d4db0b0b0", + "time": 1780365148000, + "subject": "FN-5847: honor onboarding completion marker in auto-launch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/plugins/__tests__/resolve-plugin-entry-path-sync.test.ts", + "package": "packages/cli", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 21, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "7dde43a63", + "time": 1780636220000, + "subject": "Address PR review feedback (#1428)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "4c3186d0d", + "time": 1781750807000, + "subject": "FN-6615: prefer fresh plugin source over stale dist", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-companies-exporter.test.ts", + "package": "packages/core", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 78, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "15f3dca93", + "time": 1775680267000, + "subject": "feat(FN-1190): add agent export for Agent Companies packages", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "648c71e2a", + "time": 1778128591000, + "subject": "feat(FN-3619): preserve agent memory across import/export flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-companies-types.test.ts", + "package": "packages/core", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 79, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "c1fee2bf2", + "time": 1775638909000, + "subject": "feat(FN-1188): add Agent Companies parser and core exports", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c36d54b75", + "time": 1775669728000, + "subject": "feat(FN-1174): migrate agent import flow to agent companies format", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/central-integration.test.ts", + "package": "packages/core", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 86, + "lastTouched": "2026-04-13", + "evidence": [ + { + "sha": "1937adc7b", + "time": 1775012399000, + "subject": "feat(KB-500): add central infrastructure for multi-project support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "327775136", + "time": 1776121505000, + "subject": "feat(FN-1692): merge fusion/fn-1692", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/docker-client.test.ts", + "package": "packages/core", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 53, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "93ecc88fe", + "time": 1777819665000, + "subject": "feat(FN-3109): add Docker connectivity service and target selector UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "73a774c7a", + "time": 1778635993000, + "subject": "feat(FN-4133): lazy-load dockerode in DockerClientService", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/api-auth.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 46, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 54, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "c0cd5553d", + "time": 1778285879000, + "subject": "feat(FN-3281): ship review revisions and dashboard/plugin integration updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/left-sidebar-active-accent.css.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 4, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "c9146e15b", + "time": 1782073541000, + "subject": "FN-6830: use theme accent for sidebar active states", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "2d038e7ff", + "time": 1782197918000, + "subject": "feat(FN-6950): polish dashboard responsive chrome", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mission-planning-modals-mobile.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added": 1, + "fix": 1, + "test+source": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 78, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "a19116e1d", + "time": 1775673489000, + "subject": "feat(FN-1177): polish mission and planning modals for mobile", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9c5dc0716", + "time": 1775735984000, + "subject": "fix(FN-1304): reduce mobile button heights from 44px to 36px", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "83a7a66fc", + "time": 1777807889000, + "subject": "feat(FN-3258): enhance planning mode modal and quick chat FAB styling", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0488e33b2", + "time": 1778481370000, + "subject": "feat(FN-3976): restore shared mobile bottom spacing contract with regressio", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/setup-wizard-modal-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 64, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "66bb9ea66", + "time": 1776919990000, + "subject": "feat(FN-2221): constrain setup wizard modal shell and add CSS regression test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/spinner-animation.css.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 24, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "b6c15fe47", + "time": 1780381761000, + "subject": "FN-5855: fix frozen dashboard spinners", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "39d96bc83", + "time": 1780452804000, + "subject": "FN-5913: fix dashboard spinner anchoring", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0744ab381", + "time": 1782401684000, + "subject": "FN-6961: restore dashboard spinner animations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.scroll-to-top.test.tsx", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 35, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "8e872301c", + "time": 1779403248000, + "subject": "feat(FN-5379): add scroll-to-top action for chat messages", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "eba6a7259", + "time": 1780184893000, + "subject": "FN-5757: prevent chat message list from snapping to top", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a67ad70bf", + "time": 1780950778000, + "subject": "FN-6003: wrap dashboard chat and review tests in async act", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DevServerView.mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 39, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "abd4fad92", + "time": 1779051796000, + "subject": "test(FN-4925): complete Step 6 — add mobile layout regression coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "e9a6955b4", + "time": 1782258458000, + "subject": "FN-6939: add narrow dock preview modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/OAuthManualCodeForm.test.tsx", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 45, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "4908b862f", + "time": 1778561306000, + "subject": "feat(FN-4052): add mobile oauth manual-code scroll assist and modal flow te", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "6aa1ff0fb", + "time": 1779594241000, + "subject": "feat(FN-5475): add allow-resurrection control to task delete flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/agentsOrgChartLayout.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 51, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "0bc75914e", + "time": 1777989941000, + "subject": "feat(FN-3472): expand org chart regression test assertions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "09fe09fdc", + "time": 1778678974000, + "subject": "test(FN-4121): complete Step 2 — cover layout preference resolver behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5c9920ebf", + "time": 1778678975000, + "subject": "feat(FN-4121): complete Step 2 — align resolver dimensions with chart CSS", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/createChatStreamHandlers.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 45, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "d0a7fe366", + "time": 1778507262000, + "subject": "feat(FN-3817): fix chat delta spacing in legacy streaming API", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "25bc5d3a1", + "time": 1779002099000, + "subject": "test(FN-4835): broaden chunk-boundary whitespace regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3d28b3b21", + "time": 1781789763000, + "subject": "FN-6632: preserve reattached chat stream chunks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useApprovalBanner.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "f98cce090", + "time": 1782269215000, + "subject": "refactor(dashboard): extract useMailboxUnread + useApprovalBanner hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "49c2de108", + "time": 1782288813000, + "subject": "test(dashboard): harden hook tests + drop dead App.tsx re-exports (code review)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "250444792", + "time": 1782318183000, + "subject": "test(dashboard): apply test-quality findings from focused re-review", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useBlockerFanout.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 47, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "309e3f91a", + "time": 1778379581000, + "subject": "feat(FN-3897): add blocker fan-out hook, badge, and detail modal section", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e9834def8", + "time": 1778453709000, + "subject": "feat(FN-3942): surface high fan-out blockers in task cards and executor sta", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2aec3474b", + "time": 1778481370000, + "subject": "feat(FN-3954): blocker staleness fanout and escalation for tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4380f0151", + "time": 1778798995000, + "subject": "feat(FN-3977): complete Step 1 — overlap fanout semantics", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e2a3a37b2", + "time": 1781697091000, + "subject": "FN-6569: make auto-merge retry cap configurable", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useChatUnreadBadge.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "475af26a6", + "time": 1782268553000, + "subject": "refactor(dashboard): extract useChatUnreadBadge hook from App.tsx", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "49c2de108", + "time": 1782288813000, + "subject": "test(dashboard): harden hook tests + drop dead App.tsx re-exports (code review)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "250444792", + "time": 1782318183000, + "subject": "test(dashboard): apply test-quality findings from focused re-review", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useDashboardHealth.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "f8c366d8f", + "time": 1782270224000, + "subject": "refactor(dashboard): extract useDashboardHealth, useAuthTokenRecovery, useScopedDismissFlag", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "49c2de108", + "time": 1782288813000, + "subject": "test(dashboard): harden hook tests + drop dead App.tsx re-exports (code review)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "250444792", + "time": 1782318183000, + "subject": "test(dashboard): apply test-quality findings from focused re-review", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useFlashOnIncrease.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 92, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "133fc5929", + "time": 1774495876000, + "subject": "feat(HAI-051): add column flash animation on count increase", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ec7691fcb", + "time": 1774498253000, + "subject": "feat(HAI-069): double flash animation duration from 700ms to 1400ms", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/nodeProjectAssignment.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 62, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "eed16abac", + "time": 1778291056000, + "subject": "feat(FN-3509): document node mapping availability UI in dashboard guide", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-manager-room-hybrid.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 47, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "f3f8dfbf5", + "time": 1778358107000, + "subject": "feat(FN-3810): define room responder policy helper for hybrid room chat", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "13c14f5cb", + "time": 1778397512000, + "subject": "feat(FN-3914): restore room reply verification path and add hybrid chat tes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0e5a72bf9", + "time": 1778796338000, + "subject": "test(FN-4530): align chat manager prompt and room store test fakes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-room-compaction.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 44, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "f27ac8bf5", + "time": 1778630673000, + "subject": "feat(FN-4180): compact room transcript context to reduce token usage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7b68913bf", + "time": 1778760450000, + "subject": "test(FN-4191): complete Step 5 — cover configurable compaction behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5f9f77763", + "time": 1779372348000, + "subject": "feat(FN-5374): raise room transcript defaults and align compaction settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/devserver-persistence.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 64, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "b2a82328f", + "time": 1776890813000, + "subject": "feat(FN-2186): merge fusion/fn-2186", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "caa773cb9", + "time": 1777233656000, + "subject": "feat(FN-2606): merge fusion/fn-2606 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-model-routes-droid-cli.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 55, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "31bc668c2", + "time": 1777661756000, + "subject": "feat(FN-2982): merge fusion/fn-2982", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "05f852458", + "time": 1777814250000, + "subject": "feat(FN-3120): show resolved planning model in planning modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f5893bdc", + "time": 1777904714000, + "subject": "feat(FN-3074): sort done column by recency, preserve merge-active state, ad", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-tasks-deterministic-dedup.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 5, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 3, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 2, + "test-only-churn": 3, + "fix+source": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "0046fc92e", + "time": 1779146586000, + "subject": "feat(FN-4918): merge fusion/fn-4918", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f46629ef1", + "time": 1779151980000, + "subject": "feat(FN-5084): merge fusion/fn-5084", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "daa1edf1d", + "time": 1779158673000, + "subject": "feat(FN-5060): complete Step 4 — refactor dashboard dedup route to shared helper", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "39db6157e", + "time": 1779165875000, + "subject": "test(FN-5094): stabilize dashboard API tests for current route exports", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "0820b64d1", + "time": 1779166974000, + "subject": "fix(FN-5095): restore workspace verification gates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "093ae0bac", + "time": 1779171288000, + "subject": "feat(FN-5096): fix dashboard typecheck and stabilize verification gates", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-tasks-duplicate-check.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 40, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "df998cb54", + "time": 1778995602000, + "subject": "feat(FN-4829): merge fusion/fn-4829", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0046fc92e", + "time": 1779146586000, + "subject": "feat(FN-4918): merge fusion/fn-4918", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6431c972e", + "time": 1779215454000, + "subject": "test(FN-5152): complete Step 4 — add near-duplicate route regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-tasks-near-duplicate.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 37, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "6431c972e", + "time": 1779215454000, + "subject": "test(FN-5152): complete Step 4 — add near-duplicate route regressions", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "24e0c44b4", + "time": 1780181566000, + "subject": "FN-5731: require confirmation before archiving near-duplicate tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/register-task-workflow-routes.unpause.test.ts", + "package": "packages/dashboard", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 41, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "947df2753", + "time": 1778851957000, + "subject": "test(FN-4592): complete Step 2 — cover unpause clearing userPaused", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "09acfbb70", + "time": 1782084881000, + "subject": "FN-6875: allow manual unpause for assigned tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/ce-workflow-step-executor.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 5, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "c8f97df34", + "time": 1782021618000, + "subject": "test(engine): cover graph-step skill loading, preamble, spawn gating, headless, verdict (U6)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "7235b25fb", + "time": 1782025640000, + "subject": "Address PR review feedback (#1696)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/custom-providers-openai-completions.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 29, + "lastTouched": "2026-06-01", + "evidence": [ + { + "sha": "d767e2ecb", + "time": 1779942672000, + "subject": "feat(FN-5601): add OpenAI Responses API type support to custom providers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "130f6f1e9", + "time": 1780329918000, + "subject": "FN-5834: enforce explicit developer-role compatibility for custom providers", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/experiment-git-policy.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "a73cfc710", + "time": 1778745524000, + "subject": "feat(FN-4219): complete Step 3 — add git policy and ops", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aef0dd46e", + "time": 1778745524000, + "subject": "feat(FN-4219): complete Steps 5-7 — docs, changeset, and verification fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "81b1eae39", + "time": 1778757906000, + "subject": "feat(FN-4222): add experiment-finalize CLI command and API route", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/hermes-runtime-integration.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 60, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "253acc356", + "time": 1777240486000, + "subject": "feat(FN-2616): merge fusion/fn-2616 (auto-resolved)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "2ca67c02f", + "time": 1778099903000, + "subject": "feat(FN-3612): preserve fusion context in hermes runtime skill forwarding", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/invariant-wrong-checkout-completion.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 43, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "58e7594a8", + "time": 1778678976000, + "subject": "test(FN-4115): complete Step 1 — wrong-checkout completion rejection tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "3bbc5077b", + "time": 1779055355000, + "subject": "feat(FN-4935): complete Step 7 — testing and verification", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-diff-scope.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 45, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "de1e13d22", + "time": 1778534686000, + "subject": "feat(FN-4014): split merger monolith into domain-specific test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-session-recovery.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 45, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "de1e13d22", + "time": 1778534686000, + "subject": "feat(FN-4014): split merger monolith into domain-specific test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-skills.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 45, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "de1e13d22", + "time": 1778534686000, + "subject": "feat(FN-4014): split merger monolith into domain-specific test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/project-engine-soft-delete-merge-abort.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 37, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "ab0a25300", + "time": 1779264966000, + "subject": "feat(FN-5264): abort in-flight executor/merge/triage work on soft-delete (F", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a1b7556c7", + "time": 1780467196000, + "subject": "FN-5924: throttle OAuth expiry alerts across restarts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktrunk-audit.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 41, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "178bad0d0", + "time": 1778908689000, + "subject": "test(FN-4626): complete Step 6 — add worktrunk audit coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9011c2107", + "time": 1779288297000, + "subject": "feat(FN-5320): canonicalize worktrunk binary name and manifest", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit-worktrunk.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 41, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "178bad0d0", + "time": 1778908689000, + "subject": "test(FN-4626): complete Step 6 — add worktrunk audit coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9011c2107", + "time": 1779288297000, + "subject": "feat(FN-5320): canonicalize worktrunk binary name and manifest", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-reclaim-live-zero-commits.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 42, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "14ef1041a", + "time": 1778787849000, + "subject": "feat(FN-4500): complete Step 3 — add live zero-commit reclaim fast-path", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2d9badbc1", + "time": 1778787850000, + "subject": "test(FN-4500): cover fast-path guards and align legacy reclaim assertions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-threshold-settings.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 14, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "e22afece5", + "time": 1781236381000, + "subject": "FN-6233: add typed triage policy settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c7b56a5ab", + "time": 1782057640000, + "subject": "FN-6832: preserve default workflow routing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c229a15e2", + "time": 1782176307000, + "subject": "FN-6934: restrict agent workflow reassignment", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/runtimes/__tests__/child-process-worker.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 62, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "636401a53", + "time": 1777232705000, + "subject": "feat(FN-2603): merge fusion/fn-2603 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/i18n/src/__tests__/i18n-gate-coverage.test.ts", + "package": "packages/i18n", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 5, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "b2f564c2b", + "time": 1781978575000, + "subject": "FN-6791: add i18n regression guardrails", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e77f785fb", + "time": 1782093336000, + "subject": "FN-6890: rename documents navigation to artifacts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/mobile/src/__tests__/connection-profiles.test.ts", + "package": "packages/mobile", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 52, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "419c6f3b3", + "time": 1778070596000, + "subject": "feat(FN-3400): add native shell connection handoff, plugin management CLI/l", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "30d0553c6", + "time": 1778230675000, + "subject": "feat(FN-3409): add shell regression matrix for mobile, desktop, and dashboa", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/mobile/src/__tests__/native-shell.test.ts", + "package": "packages/mobile", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 52, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "419c6f3b3", + "time": 1778070596000, + "subject": "feat(FN-3400): add native shell connection handoff, plugin management CLI/l", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "30d0553c6", + "time": 1778230675000, + "subject": "feat(FN-3409): add shell regression matrix for mobile, desktop, and dashboa", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/mobile/src/__tests__/qr-scanner.test.ts", + "package": "packages/mobile", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 52, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "419c6f3b3", + "time": 1778070596000, + "subject": "feat(FN-3400): add native shell connection handoff, plugin management CLI/l", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "30d0553c6", + "time": 1778230675000, + "subject": "feat(FN-3409): add shell regression matrix for mobile, desktop, and dashboa", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/control-handler.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 62, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "74ebd238e", + "time": 1777084760000, + "subject": "chore: add pi-claude-cli + plugin-sdk __tests__/ dirs (test consolidation)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f25aad9ff", + "time": 1777453655000, + "subject": "feat(FN-2938): merge fusion/fn-2938", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/thinking-config.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 62, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "74ebd238e", + "time": 1777084760000, + "subject": "chore: add pi-claude-cli + plugin-sdk __tests__/ dirs (test consolidation)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/tool-mapping.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 39, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 62, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "74ebd238e", + "time": 1777084760000, + "subject": "chore: add pi-claude-cli + plugin-sdk __tests__/ dirs (test consolidation)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "fed1d6975", + "time": 1777308709000, + "subject": "feat(FN-2703): support custom MCP tools in plan generation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PrPanel.merge.test.tsx", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 3 + }, + "durationMs": 300, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 39, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "73454fae5", + "time": 1779045111000, + "subject": "feat(FN-4762): complete Step 3 — PR merge routes and dashboard controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1543df69a", + "time": 1779045111000, + "subject": "fix(FN-4762): address review feedback for PR panel merge controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "aad121903", + "time": 1779144648000, + "subject": "feat(FN-4967): merge fusion/fn-4967", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f5cf97450", + "time": 1780029174000, + "subject": "FN-5639: fix PR panel merge button disabled state", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "41ee33142", + "time": 1780036263000, + "subject": "FN-5648: show in-progress feedback while merging PRs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/RoutingTab.test.tsx", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 8, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 3, + "testOnlyRatio": 0.273, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "test-only-churn": 3 + }, + "durationMs": 300, + "testCount": 23, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 58, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "2a26d61b2", + "time": 1777411556000, + "subject": "feat(FN-2724): add interactive task routing controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "701feb8ea", + "time": 1777411556000, + "subject": "feat(FN-2845): streamline node routing configuration in dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "58e227e97", + "time": 1777411556000, + "subject": "feat(FN-2885): upgrade routing controls and task timing UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fdeba4cf8", + "time": 1777411556000, + "subject": "feat(FN-2727): add node routing controls to CLI and dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "69a5cd4ab", + "time": 1777414849000, + "subject": "feat(FN-2869): merge fusion/fn-2869 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3263babe1", + "time": 1777443814000, + "subject": "feat(FN-2729): merge fusion/fn-2729", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useSessionFiles.test.ts", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 1 + }, + "durationMs": 300, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 87, + "lastTouched": "2026-04-10", + "evidence": [ + { + "sha": "f2c00ad14", + "time": 1774945617000, + "subject": "feat(KB-175): move file browser to header with workspace support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f8465342", + "time": 1775177464000, + "subject": "fix(FN-000): scope dashboard project flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "753f2561c", + "time": 1775354053000, + "subject": "feat(FN-947): show files-changed on done column task cards", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3870d0c9d", + "time": 1775843088000, + "subject": "feat(FN-1544): add viewport-gated loading and lightweight memo comparison", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-attachment-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 16.5, + "positiveCount": 9, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 1, + "testOnlyRatio": 0.1, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 5, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 500, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 58, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "0684a18a6", + "time": 1777432074000, + "subject": "feat(FN-2909): merge fusion/fn-2909", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f49ec30c5", + "time": 1777991718000, + "subject": "fix: isolate chat SSE broadcasts per generation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "aa587347d", + "time": 1777994050000, + "subject": "Revert \"fix: isolate chat SSE broadcasts per generation\"", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9239707f1", + "time": 1777994493000, + "subject": "Reapply \"fix: isolate chat SSE broadcasts per generation\"", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "070ad2815", + "time": 1779169671000, + "subject": "feat(FN-5060): complete Step 7 — testing and verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f3732afcd", + "time": 1780384027000, + "subject": "FN-5858: fix multipart chat attachment sends", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/CustomModelDropdown.test.tsx", + "package": "packages/dashboard", + "valueScore": 20, + "positiveCount": 11, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 14, + "testOnlyCount": 2, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "fix+source": 3, + "fix": 4, + "test+source": 4, + "churn-keyword": 1 + }, + "durationMs": 600, + "testCount": 28, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 88, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "44ac59c6a", + "time": 1774849883000, + "subject": "feat(KB-081): add provider icons to model selector with custom dropdown", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d362f36a5", + "time": 1774982370000, + "subject": "feat(KB-314): add OpenAI logo to custom model dropdown with integration tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "da24b8152", + "time": 1775075549000, + "subject": "fix(FN-667): fix model dropdown layering in quick entry", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a44519b87", + "time": 1775107851000, + "subject": "feat(FN-669): complete Step 8 — add and update tests for model favorites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f96879380", + "time": 1775107999000, + "subject": "fix(FN-669): fix failing tests for model favorites", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "cca4bde3a", + "time": 1775148533000, + "subject": "feat(FN-681): add multi-tab terminal support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowResultsTab.test.tsx", + "package": "packages/dashboard", + "valueScore": 27, + "positiveCount": 23, + "negativeCount": 8, + "neutralCount": 1, + "timesTouched": 32, + "testOnlyCount": 7, + "testOnlyRatio": 0.219, + "signalTally": { + "added-with-source": 1, + "test+source": 22, + "test-only-churn": 7, + "churn-keyword": 2, + "fix+source": 1, + "fix": 1 + }, + "durationMs": 800, + "testCount": 85, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 28.6, + "ageDays": 86, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "9af06c81d", + "time": 1774986666000, + "subject": "test(KB-323): add end-to-end verification test for steering comments injection", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c85c3e4ec", + "time": 1775349378000, + "subject": "feat(FN-837): add workflow step phase support with pre-merge and post-merge execution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "70190c6fe", + "time": 1775472040000, + "subject": "feat(FN-1030): enhance workflow results tab with summary bar, collapsible output, and always-visible tab", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a875ce231", + "time": 1775626188000, + "subject": "feat(FN-1100): enable inline workflow step editing in task workflow tab", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentListModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 42.5, + "positiveCount": 26, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 27, + "testOnlyCount": 1, + "testOnlyRatio": 0.037, + "signalTally": { + "fix+source": 3, + "added-with-source": 1, + "test+source": 21, + "fix": 2, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 1200, + "testCount": 56, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 27.6, + "ageDays": 86, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "21d264957", + "time": 1775002639000, + "subject": "fix(KB-605): add CSS variables for agent badges and AgentListModal tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "204604ec4", + "time": 1775010063000, + "subject": "feat(KB-644): add list/board view toggle to agent list modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f8465342", + "time": 1775177464000, + "subject": "fix(FN-000): scope dashboard project flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0ed3c84cf", + "time": 1775306003000, + "subject": "feat(FN-849): normalize agent UI theme consistency and simplify workflow step API", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "127b98e7f", + "time": 1775307695000, + "subject": "feat(FN-863): tokenize create-row input and select styling in Agents View", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TodoView.test.tsx", + "package": "packages/dashboard", + "valueScore": 24.5, + "positiveCount": 15, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 16, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 2, + "test+source": 13 + }, + "durationMs": 700, + "testCount": 40, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 27.5, + "ageDays": 60, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "48401f321", + "time": 1777241552000, + "subject": "feat(FN-2577): merge fusion/fn-2577 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c00942740", + "time": 1777266463000, + "subject": "fix(FN-2577): preserve Todos access and TodoView interaction behavior", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "fca0fce60", + "time": 1777277553000, + "subject": "feat(FN-2660): refine TodoView empty state and edit flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "410a438a7", + "time": 1777287925000, + "subject": "feat(FN-2639): replace native confirms with dashboard confirm dialog", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "503311462", + "time": 1777305692000, + "subject": "feat(FN-2697): add todo task creation with agent picker actions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b0cda2398", + "time": 1777508602000, + "subject": "feat(FN-2923): merge fusion/fn-2923", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/GroupTaskModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 26.7, + "ageDays": 24, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "eb425d17d", + "time": 1780316114000, + "subject": "FN-5825: add dedicated grouped-task modal popup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9512e9833", + "time": 1780507878000, + "subject": "feat(FN-branch-group): surface group PR controls in dashboard + CLI (U7)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PostOnboardingRecommendations.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 200, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 26.7, + "ageDays": 69, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "24f0bf8d3", + "time": 1776429362000, + "subject": "feat(FN-1943): add post-onboarding setup recommendations panel", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8938bdf93", + "time": 1777125890000, + "subject": "feat(FN-2403): add project setup step to onboarding flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f5268019f", + "time": 1777954882000, + "subject": "feat(FN-3260): document static slot-host rendering contract", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f0fbc5999", + "time": 1782128375000, + "subject": "feat(onboarding): align first-agent setup flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ScheduleCard.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 200, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 26.7, + "ageDays": 87, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "4c38950e5", + "time": 1774913243000, + "subject": "feat(KB-045): add scheduled tasks automation system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7569af8a9", + "time": 1774959270000, + "subject": "feat(KB-229): add multi-step scheduled tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "410a438a7", + "time": 1777287925000, + "subject": "feat(FN-2639): replace native confirms with dashboard confirm dialog", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useDeepLink.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 200, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 26.7, + "ageDays": 78, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "321ec691b", + "time": 1775652804000, + "subject": "feat(FN-1203): extract App orchestration into focused hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "685cfc063", + "time": 1777886584000, + "subject": "feat(FN-3344): preserve history state in deep-link close", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3b52721b7", + "time": 1778347864000, + "subject": "feat(FN-3792): add /tasks deep-link support with theme-data URL resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0a6da9f4c", + "time": 1779606668000, + "subject": "feat(FN-5583): handle notification deep links in useDeepLink hook", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/dev-server-store.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 200, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 26.7, + "ageDays": 67, + "lastTouched": "2026-04-24", + "evidence": [ + { + "sha": "687c4ac0c", + "time": 1776656894000, + "subject": "feat(FN-2168): add persistent dev-server dashboard flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0df323434", + "time": 1776656894000, + "subject": "feat(FN-2181): add dashboard dev-server process manager and API routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4aac69dc6", + "time": 1776715198000, + "subject": "feat(FN-2166): persist dev server script configuration across sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "403e3a751", + "time": 1777053980000, + "subject": "feat(FN-2477): add executable OpenClaw runtime adapter", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/paused-scope-decay.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 26.7, + "ageDays": 39, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "f71c2a182", + "time": 1779071772000, + "subject": "feat(FN-4890): complete Step 3 — paused-scope decay auto-rebound", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5233bc934", + "time": 1779071773000, + "subject": "feat(FN-4890): complete Step 8 — docs, defaults, and reliability coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a8715ed96", + "time": 1779416127000, + "subject": "fix(FN-5335): enforce triple-proof gating for backward recovery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useMultiAgentLogs.test.ts", + "package": "packages/dashboard", + "valueScore": 18, + "positiveCount": 12, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 1, + "testOnlyRatio": 0.067, + "signalTally": { + "added-with-source": 2, + "churn-keyword": 2, + "test+source": 10, + "fix+source": 2, + "test-only-churn": 1 + }, + "durationMs": 500, + "testCount": 23, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 26.3, + "ageDays": 88, + "lastTouched": "2026-04-15", + "evidence": [ + { + "sha": "f24ce6bbb", + "time": 1774837630000, + "subject": "feat(KB-028): add multi-agent terminal view", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a7de078fe", + "time": 1774895215000, + "subject": "feat(KB-129): dashboard performance optimizations", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "3d7ba96d8", + "time": 1774912517000, + "subject": "fix(KB-209): fix infinite loop in useMultiAgentLogs hook", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c49246623", + "time": 1774913194000, + "subject": "test(KB-213): fix EventSource mock cleanup in useMultiAgentLogs tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/package-config.test.ts", + "package": "packages/cli", + "valueScore": 3, + "positiveCount": 12, + "negativeCount": 17, + "neutralCount": 0, + "timesTouched": 29, + "testOnlyCount": 17, + "testOnlyRatio": 0.586, + "signalTally": { + "added": 1, + "test+source": 8, + "test-only-churn": 17, + "fix+source": 1, + "fix": 2 + }, + "durationMs": 100, + "testCount": 24, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 91, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "a7a9e985e", + "time": 1774579451000, + "subject": "feat(HAI-108): remove binary builds and configure npm publishing", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b4577994b", + "time": 1774656641000, + "subject": "feat(KB-131): bundle workspace dependencies into CLI for npm publish", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5e3cc792b", + "time": 1774656641000, + "subject": "feat(KB-134): exclude Bun-compiled binaries from npm publish tarball", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4927346f5", + "time": 1774900327000, + "subject": "feat(KB-136): add shared badge pub/sub for multi-instance deployments", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4435659cf", + "time": 1774919758000, + "subject": "feat(KB-221): rename CLI binary from kb to fn", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-priority.test.ts", + "package": "packages/core", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 62, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "52168d7f2", + "time": 1777046065000, + "subject": "feat(FN-2383): persist task priority across core storage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fbf91c74a", + "time": 1778117843000, + "subject": "feat(FN-3596): unify board/list task ordering, split TaskDetailModal test m", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a747479cc", + "time": 1779017174000, + "subject": "test(FN-4873): complete Step 5 — add PR checks and core export coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "02ba659dd", + "time": 1779083835000, + "subject": "feat(FN-4969): merge fusion/fn-4969", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-steps-to-ir.test.ts", + "package": "packages/core", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 21, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "28e74f10d", + "time": 1780636716000, + "subject": "feat(core): workflow kind discriminator and steps-to-IR converter", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c0f330e70", + "time": 1782022572000, + "subject": "fix(review): apply autofix feedback", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "7235b25fb", + "time": 1782025640000, + "subject": "Address PR review feedback (#1696)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/api-settings.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 47, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 54, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "0e72fb8b1", + "time": 1778252164000, + "subject": "feat(FN-3559): cover launch flow and summary handoff (+1 more)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ea8cca24b", + "time": 1778293258000, + "subject": "feat(FN-3164): update roadmap API architecture docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fbb1f5e36", + "time": 1778347864000, + "subject": "feat(FN-3166): remove dashboard roadmap backend and add reports plugin scaf", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/footer-safe-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 4, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 3, + "testOnlyRatio": 0.375, + "signalTally": { + "added-with-source": 1, + "fix": 2, + "test-only-churn": 3, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 83, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "29e225dda", + "time": 1775270086000, + "subject": "refactor(FN-811): make project workspace footer-safe and simplify file diff routes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6430a5117", + "time": 1775775209000, + "subject": "fix(FN-1339): update CSS static-analysis tests for new stacking order", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "7acae1928", + "time": 1775800243000, + "subject": "feat(FN-1372): reduce mobile nav bar height from 56px to 48px", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7ad9bf6f6", + "time": 1775848021000, + "subject": "feat(FN-1464): merge fusion/fn-1464", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07d132ee2", + "time": 1777139432000, + "subject": "feat(FN-2445): merge fusion/fn-2445 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/onboarding-overlay-layering.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix": 1, + "added": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "2bc3543e7", + "time": 1777094757000, + "subject": "fix(self-healing): use slim listTasks in maintenance recover loops", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.chat-input-autosize.test.tsx", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 4, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 4, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 44, + "lastTouched": "2026-06-11", + "evidence": [ + { + "sha": "9ac213a16", + "time": 1778630673000, + "subject": "feat(FN-4189): lift chat input height cap and add autosize behavior", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6db8c60be", + "time": 1779202658000, + "subject": "test(FN-5146): complete Step 4 — update autosize caps and growth regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "232a9fea8", + "time": 1779286801000, + "subject": "feat(FN-5322): fix main chat composer flex sizing and expand behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ab1f6a7ff", + "time": 1780112833000, + "subject": "FN-5706: hide chat input overflow until max-height", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8d2f43892", + "time": 1780950778000, + "subject": "FN-6020: align chat stop button size with send button", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "21f7a47c2", + "time": 1781034680000, + "subject": "FN-6103: align chat stop button sizing with composer height", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskCard-TaskChangesTab-parity.test.tsx", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 42, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "a5c379e06", + "time": 1778792672000, + "subject": "test(FN-4521): add TaskCard and TaskChangesTab parity coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "11d011466", + "time": 1778792672000, + "subject": "test(FN-4521): harden parity test mocks for deep suite isolation", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7c7fb065d", + "time": 1780411237000, + "subject": "fix(dashboard): remove Lineage commit associations from Task Changes UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/board-mobile-view-switch.test.tsx", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix": 2 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 44, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "32856a3b1", + "time": 1778599663000, + "subject": "feat(FN-001): complete Step 3 — regression tests\\n\\n- Add board-mobile-corner-rendering.test.ts stylesheet regression\\n- Add board-mobile-view-switch.test.tsx component regression\\n- Register new test in vitest.config.ts qualityAppTests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/CommandCenter.mobile-chart-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 7, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "fe207ca96", + "time": 1781849288000, + "subject": "FN-6680: fix Command Center mobile chart layouts", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "c8daf21cd", + "time": 1781860471000, + "subject": "FN-6685: add Command Center chart browser smoke", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4711e875e", + "time": 1781869024000, + "subject": "Command Center fixes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cfddde5a4", + "time": 1781875271000, + "subject": "FN-6699: fix Command Center chart rendering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-tracking-comments.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 4, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 24, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 47, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "ce87d81df", + "time": 1778403882000, + "subject": "feat(FN-3872): add GitHub tracking comments service", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "95f6cd845", + "time": 1778415626000, + "subject": "feat(FN-3875): add GitHub tracking auth resolver and forced client auth mod", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "44c26e341", + "time": 1778418386000, + "subject": "feat(FN-3876): add GitHub tracking test coverage across settings, issues, s", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e0b9eb2fa", + "time": 1778603570000, + "subject": "feat(FN-4142): enrich GitHub tracking comments with done status", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9a114c14f", + "time": 1778630590000, + "subject": "feat(FN-4148): derive GitHub tracking titles from task descriptions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d9f81099f", + "time": 1778803457000, + "subject": "feat(FN-4518): complete Step 4 — carry rebase base through self-healing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/planning-flow-diagnostics-guardrail.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 64, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "68ebf50f4", + "time": 1776875974000, + "subject": "feat(FN-2245): enforce shared diagnostics in planning interview flows", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a2a79662d", + "time": 1776979969000, + "subject": "fix(FN-2349): migrate agent-generation diagnostics to shared helper", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "fe0d673e5", + "time": 1776981357000, + "subject": "feat(FN-2363): merge fusion/fn-2363", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "94b118088", + "time": 1777046065000, + "subject": "fix(FN-2364): harden diagnostics context and plugin reload imports", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-command-center-routes.auth.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 6, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 2, + "testOnlyRatio": 0.222, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "churn-keyword": 2, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 10, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "113263f36", + "time": 1781577850000, + "subject": "feat(command-center): U9+U6a — analytics API endpoints + live snapshot composer", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61f389ed3", + "time": 1781614571000, + "subject": "Address PR review feedback (#1683)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "504305e1c", + "time": 1781824732000, + "subject": "FN-6653: add GitHub issue analytics to Command Center", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "36f1feef3", + "time": 1781830328000, + "subject": "FN-6655: add Command Center team analytics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "898ac1e85", + "time": 1781874260000, + "subject": "FN-6698: back command center signals with incidents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "87f18f87e", + "time": 1781912853000, + "subject": "FN-6705: add plugin activation analytics", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-prompt-sizes.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 43, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "6b2607dae", + "time": 1778758363000, + "subject": "feat(FN-4400): complete Step 7 — add prompt-size api and dashboard sparkline", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1c706769f", + "time": 1779240816000, + "subject": "test(dashboard): add deterministicGuardLocks to remaining @fusion/core mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-token-usage.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 43, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "444a076ff", + "time": 1778737289000, + "subject": "feat(FN-4388): complete Step 3 — add agent token usage API route", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1c706769f", + "time": 1779240816000, + "subject": "test(dashboard): add deterministicGuardLocks to remaining @fusion/core mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/board-workflows.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "fix+source": 2, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 22, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "3aa8d2d28", + "time": 1780562991000, + "subject": "feat(dashboard): flag-gated multi-lane board — lane per workflow, trait-keyed columns, typed drag rejections, hold promote (U9)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e13897103", + "time": 1780900216000, + "subject": "fix: stabilize workflow board and loop recovery", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "56b194383", + "time": 1780900216000, + "subject": "fix: address workflow PR feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f77aa073c", + "time": 1780950778000, + "subject": "FN-6025: fix builtin coding auto-merge review flags", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b29352575", + "time": 1782423472000, + "subject": "fix(dashboard): repair CSS token/contrast regressions and stale tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-token-usage.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix": 1, + "added": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "7490c3bd0", + "time": 1778735018000, + "subject": "fix(FN-4389): complete missing token usage parity and dashboard split", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/project-manager.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 86, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "52a74036d", + "time": 1775013148000, + "subject": "feat(KB-616): add ProjectRuntime abstraction for task execution isolation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a0fb5c40f", + "time": 1775151951000, + "subject": "test(FN-695): add assertion for updateProject call in addProject test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "438aff290", + "time": 1775627769000, + "subject": "feat(FN-1079): add remote node runtime orchestration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/branch-recovery-stale-cached-base.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 42, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "72a71e9db", + "time": 1778801607000, + "subject": "test(FN-4508): complete Step 5 — add reliability interaction backstops", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "fd202e935", + "time": 1779320607000, + "subject": "feat(FN-5329): remove orphan rescue and branch-recovery primitives from eng", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/pr-conflict-reclaim.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 39, + "lastTouched": "2026-05-22", + "evidence": [ + { + "sha": "2f0e1c6c2", + "time": 1779050783000, + "subject": "test(FN-4763): add PR conflict reclaim engine coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f9bcf2acf", + "time": 1779050783000, + "subject": "test(FN-4763): strengthen pr-conflict reclaim interaction coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a8715ed96", + "time": 1779416127000, + "subject": "fix(FN-5335): enforce triple-proof gating for backward recovery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/starved-refinement-x-approval-gate.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "cdd85ba23", + "time": 1778907477000, + "subject": "test(FN-4662): complete Step 3 — add starvation sweep coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "0f9c07454", + "time": 1778907477000, + "subject": "fix(FN-4662): address test typing and scenario coverage", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/starved-refinement-x-triage-poll.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "cdd85ba23", + "time": 1778907477000, + "subject": "test(FN-4662): complete Step 3 — add starvation sweep coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "0f9c07454", + "time": 1778907477000, + "subject": "fix(FN-4662): address test typing and scenario coverage", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/sandbox/sandbox-exec-backend.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 41, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "ba5495777", + "time": 1778869124000, + "subject": "feat(FN-4638): complete Step 4 — implement sandbox-exec backend", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cc15f194d", + "time": 1778869124000, + "subject": "fix(FN-4638): align sandbox-exec logger calls and lint", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e22bd4626", + "time": 1778872370000, + "subject": "test(FN-4643): complete Step 3 — cover native streaming behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "934f2f0d0", + "time": 1780883507000, + "subject": "FN-6004: add execFile to engine child_process test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-starved-refinement.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "cdd85ba23", + "time": 1778907477000, + "subject": "test(FN-4662): complete Step 3 — add starvation sweep coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "0f9c07454", + "time": 1778907477000, + "subject": "fix(FN-4662): address test typing and scenario coverage", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-duplicate-search-regression.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 40, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "e1667a789", + "time": 1778999516000, + "subject": "test(FN-4815): complete Step 2 — add duplicate-search regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "75ac66a8a", + "time": 1779011206000, + "subject": "test(FN-4866): complete Step 2 — add named duplicate-search regression case", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1a716f2f9", + "time": 1781194883000, + "subject": "FN-6232: centralize triage planning prompt resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "039d3ce44", + "time": 1781300391000, + "subject": "FN-6236: move fast triage into workflow settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/RoutineCard.test.tsx", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix": 1 + }, + "durationMs": 200, + "testCount": 31, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 77, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "eab57af28", + "time": 1775815645000, + "subject": "feat(FN-1275): add Routines tab to ScheduledTasksModal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cd9190c08", + "time": 1777285854000, + "subject": "feat(FN-2670): surface routine run state and output inline", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "410a438a7", + "time": 1777287925000, + "subject": "feat(FN-2639): replace native confirms with dashboard confirm dialog", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DirectoryPicker.test.tsx", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 2 + }, + "durationMs": 300, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 84, + "lastTouched": "2026-06-06", + "evidence": [ + { + "sha": "6b0ee4969", + "time": 1775161808000, + "subject": "feat(FN-694): add DirectoryPicker component and redesign SetupWizardModal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c9e7f83d9", + "time": 1776339485000, + "subject": "feat(FN-1804): merge fusion/fn-1804", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "452d1c7a2", + "time": 1777089525000, + "subject": "fix(FN-2396): align directory picker select button styling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "97f705537", + "time": 1777141713000, + "subject": "feat(FN-2493): add plugin add alias and normalize install guidance", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d8e325b17", + "time": 1780734726000, + "subject": "fix: empty folder selection reverts in DirectoryPicker + add create-folder button", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PrPanel.test.tsx", + "package": "packages/dashboard", + "valueScore": 15, + "positiveCount": 11, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 1, + "testOnlyRatio": 0.083, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 10 + }, + "durationMs": 400, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 25, + "ageDays": 40, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "0f625eac3", + "time": 1779013701000, + "subject": "test(FN-4757): complete Step 4 — add PrPanel coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a747479cc", + "time": 1779017174000, + "subject": "test(FN-4873): complete Step 5 — add PR checks and core export coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "9be005cd4", + "time": 1779032991000, + "subject": "feat(FN-4760): complete Step 5 — wire live checks into PR panel", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5bde911bd", + "time": 1779043159000, + "subject": "feat(FN-4761): sync PR reviews and surface review threads", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "73454fae5", + "time": 1779045111000, + "subject": "feat(FN-4762): complete Step 3 — PR merge routes and dashboard controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f8c20e1b9", + "time": 1779050784000, + "subject": "feat(FN-4763): complete Step 5 — surface PR conflict reclaim in panel", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/board-mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": 11.5, + "positiveCount": 15, + "negativeCount": 17, + "neutralCount": 0, + "timesTouched": 32, + "testOnlyCount": 15, + "testOnlyRatio": 0.469, + "signalTally": { + "added": 1, + "test+source": 9, + "fix": 3, + "test-only-churn": 15, + "fix+source": 4, + "churn-keyword": 2 + }, + "durationMs": 300, + "testCount": 34, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 24, + "ageDays": 78, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "a18686667", + "time": 1775656079000, + "subject": "feat(FN-1139): improve mobile board touch experience", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "db9fcd0bd", + "time": 1775675416000, + "subject": "feat(FN-1297): prevent mobile detail open from control taps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1db727b8e", + "time": 1775711097000, + "subject": "fix(FN-1296): reduce done-card mobile touch targets to prevent vertical stretching", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "325776b03", + "time": 1775717594000, + "subject": "perf: speed up tests with parallel execution and fix type errors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9c5dc0716", + "time": 1775735984000, + "subject": "fix(FN-1304): reduce mobile button heights from 44px to 36px", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "c83961303", + "time": 1775751026000, + "subject": "feat(FN-1311): improve mobile touch targets and reduce column header min-height", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/mesh-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 11.5, + "positiveCount": 7, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "fix": 1, + "test+source": 5, + "churn-keyword": 2 + }, + "durationMs": 300, + "testCount": 29, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 24, + "ageDays": 77, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "159a11746", + "time": 1775766149000, + "subject": "feat(FN-1224): add peer gossip protocol for mesh network synchronization", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b3f057a28", + "time": 1775871023000, + "subject": "fix: improve merge verification and dashboard behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ddb8b2f96", + "time": 1775881002000, + "subject": "fix(types): correct GitHubOperations interface and test type assertions", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "d6a0ac621", + "time": 1776348647000, + "subject": "feat(FN-1822): add settings sync between mesh nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b48c840e7", + "time": 1777046065000, + "subject": "feat(FN-2353): add structured diagnostics for remote route failures", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "4708e453a", + "time": 1778126284000, + "subject": "fix(dashboard): pin --vv-offset-top to resize/focus, ignore pan scrolls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-import.test.ts", + "package": "packages/dashboard", + "valueScore": 11.5, + "positiveCount": 12, + "negativeCount": 8, + "neutralCount": 1, + "timesTouched": 21, + "testOnlyCount": 4, + "testOnlyRatio": 0.19, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 5, + "test+source": 13, + "fix+source": 3, + "test-only-churn": 4 + }, + "durationMs": 300, + "testCount": 37, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 24, + "ageDays": 79, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "612827eee", + "time": 1775587298000, + "subject": "feat(FN-976): add companies.sh agent import for CLI and dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c1ccf9201", + "time": 1775657618000, + "subject": "feat(FN-1189): add Agent Companies import support", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c36d54b75", + "time": 1775669728000, + "subject": "feat(FN-1174): migrate agent import flow to agent companies format", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "22c19ca29", + "time": 1776032457000, + "subject": "feat(FN-1450): Add companies.sh catalog browse mode for agent import", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "324783bf9", + "time": 1776109919000, + "subject": "feat(FN-1451): complete Step 2 — resolve hierarchy in dashboard imports", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/RightDock.test.tsx", + "package": "packages/dashboard", + "valueScore": 20, + "positiveCount": 11, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 13, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 8, + "churn-keyword": 2, + "fix+source": 4 + }, + "durationMs": 500, + "testCount": 19, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 23.8, + "ageDays": 4, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "32455363d", + "time": 1782075132000, + "subject": "FN-6845: add resizable right dock for More views", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e77f785fb", + "time": 1782093336000, + "subject": "FN-6890: rename documents navigation to artifacts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4fec13992", + "time": 1782098913000, + "subject": "FN-6881: move stash recovery into Git Manager", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5b33da926", + "time": 1782100528000, + "subject": "FN-6882: move toolbar tools into right dock", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a91388198", + "time": 1782110245000, + "subject": "FN-6899: make right dock persistent", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4850e4309", + "time": 1782125830000, + "subject": "fix(dashboard): apply code-review fixes + live UI tweaks", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-prompt.test.ts", + "package": "packages/engine", + "valueScore": 20, + "positiveCount": 12, + "negativeCount": 1, + "neutralCount": 2, + "timesTouched": 15, + "testOnlyCount": 1, + "testOnlyRatio": 0.067, + "signalTally": { + "added": 1, + "test+source": 8, + "test-only-churn": 1, + "fix": 1, + "churn-keyword": 2, + "fix+source": 4 + }, + "durationMs": 500, + "testCount": 94, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 23.8, + "ageDays": 49, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "f240683fc", + "time": 1778221265000, + "subject": "feat(FN-3720): split executor.test.ts into eight focused suites and add she", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "d7093deda", + "time": 1778597230000, + "subject": "feat(FN-4031): recover stale review sessions and unblock dependent tasks on", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5c3170f58", + "time": 1778630673000, + "subject": "feat(FN-4167): clear paused state in fn_task_done (FN-3964 follow-up)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "df52cc2e8", + "time": 1778633999000, + "subject": "feat(FN-4145): clear task pause state when fn_task_done is received", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ab8f3a563", + "time": 1778644268000, + "subject": "feat(FN-4137): add review markdown toggle to document view (FN-4137)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d41dc24d2", + "time": 1779094224000, + "subject": "test(FN-4938): complete Step 5 — docs and verification follow-ups", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/custom-providers.test.ts", + "package": "packages/dashboard", + "valueScore": 16, + "positiveCount": 9, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 6, + "fix+source": 3, + "churn-keyword": 1 + }, + "durationMs": 400, + "testCount": 25, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 23.5, + "ageDays": 56, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "1b3e68740", + "time": 1777551243000, + "subject": "feat(FN-2965): add custom providers API routes and settings UI", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b56306c42", + "time": 1778517173000, + "subject": "feat(FN-3905): use merger session model for post-merge workflow steps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7d2a98d2b", + "time": 1778517885000, + "subject": "feat(FN-4012): restore workspace verification in chat room routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a487a20bb", + "time": 1778684712000, + "subject": "feat: auto-detect models from custom providers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "55c35cf61", + "time": 1778766971000, + "subject": "fix: Google provider save after model detection, SSRF protection, PR review fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "96311245f", + "time": 1778818368000, + "subject": "fix: resolve PR check failures", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/agents-view-mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": 25, + "positiveCount": 22, + "negativeCount": 9, + "neutralCount": 0, + "timesTouched": 31, + "testOnlyCount": 7, + "testOnlyRatio": 0.226, + "signalTally": { + "added-with-source": 1, + "fix": 3, + "fix+source": 4, + "test+source": 16, + "test-only-churn": 7, + "churn-keyword": 4 + }, + "durationMs": 600, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 23.1, + "ageDays": 78, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "537d1857a", + "time": 1775663301000, + "subject": "feat(FN-1141): improve dashboard mobile adaptations", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8fb9237da", + "time": 1776471660000, + "subject": "fix(FN-1988): improve dashboard mobile view ergonomics", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "b4517581c", + "time": 1776876986000, + "subject": "fix(FN-2204): restore tokenized styling in agents views", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c4b944f51", + "time": 1776931030000, + "subject": "feat(FN-2222): move heartbeat multiplier control to Agents screen", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7beb103db", + "time": 1777062863000, + "subject": "feat(FN-2378): add popup controls and reorder agents view sections", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/restart.integration.test.ts", + "package": "packages/engine", + "valueScore": 77.5, + "positiveCount": 57, + "negativeCount": 19, + "neutralCount": 3, + "timesTouched": 79, + "testOnlyCount": 12, + "testOnlyRatio": 0.152, + "signalTally": { + "added": 1, + "test+source": 43, + "fix+source": 17, + "churn-keyword": 13, + "fix": 6, + "test-only-churn": 12 + }, + "durationMs": 1800, + "testCount": 42, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.9, + "ageDays": 92, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "f92c842fb", + "time": 1774493557000, + "subject": "test(HAI-035): add restart integration tests for engine recovery scenarios", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "cdb0ae5d4", + "time": 1774498182000, + "subject": "feat(HAI-065): add file-scope overlap detection with blockedBy tracking", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "40099be89", + "time": 1774500148000, + "subject": "feat(HAI-075): add project commands to buildExecutionPrompt", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ab2b66338", + "time": 1774729823000, + "subject": "feat(KB-154): persist worktree pool across engine restarts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "08cdacf41", + "time": 1774729823000, + "subject": "feat(KB-161): terminate active agent sessions on engine pause", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-web-fetch.test.ts", + "package": "packages/cli", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 48, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "a79e91d3a", + "time": 1778291948000, + "subject": "feat(FN-3758): align web fetch test coverage and documentation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5a098da4c", + "time": 1778904485000, + "subject": "feat(FN-4649): complete Step 7 — run verification and fix test regressions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/onboard-autolaunch-backcompat.test.ts", + "package": "packages/cli", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 24, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "e1a35a364", + "time": 1780346036000, + "subject": "FN-5808: skip onboarding auto-launch for non-interactive and existing setups", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d4db0b0b0", + "time": 1780365148000, + "subject": "FN-5847: honor onboarding completion marker in auto-launch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/onboard-autolaunch-bypass.test.ts", + "package": "packages/cli", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 24, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "38e0422d3", + "time": 1780348066000, + "subject": "FN-5809: add onboarding skip-flag and env bypass handling", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d4db0b0b0", + "time": 1780365148000, + "subject": "FN-5847: honor onboarding completion marker in auto-launch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/dashboard-tui/__tests__/startup-yield.test.ts", + "package": "packages/cli", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 41, + "lastTouched": "2026-05-27", + "evidence": [ + { + "sha": "caf32fc55", + "time": 1778882708000, + "subject": "feat(FN-4671): complete Step 5-7 — add startup chain tests and changeset", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6a6c6fdbf", + "time": 1779857851000, + "subject": "perf(dashboard): speed up startup and eliminate API request storms", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-memory-mode.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "cb17dcf1a", + "time": 1778740895000, + "subject": "feat(FN-4393): complete Step 1 — add memory inclusion mode settings and resolver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "49bb2b385", + "time": 1778792350000, + "subject": "feat(FN-4455): complete Step 5 — migrate memory mode resolution and tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/blocker-fanout.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 46, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "2aec3474b", + "time": 1778481370000, + "subject": "feat(FN-3954): blocker staleness fanout and escalation for tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4380f0151", + "time": 1778798995000, + "subject": "feat(FN-3977): complete Step 1 — overlap fanout semantics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/builtin-lead-generation-workflow-ir.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 5, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "52924ba23", + "time": 1781970215000, + "subject": "FN-6759: add built-in lead-generation workflow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bb663a470", + "time": 1782108946000, + "subject": "FN-6906: improve non-coding workflow artifact prompts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/builtin-workflow-settings-triage.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 14, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "e22afece5", + "time": 1781236381000, + "subject": "FN-6233: add typed triage policy settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "039d3ce44", + "time": 1781300391000, + "subject": "FN-6236: move fast triage into workflow settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/db-mission-base-branch.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 31, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "5eacd79b4", + "time": 1779748026000, + "subject": "feat(FN-5584): merge fusion/fn-5584", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0605d13ab", + "time": 1780093547000, + "subject": "FN-5675: add mission branch strategy and planning breakdown controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/duplicate-detection.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 40, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "df998cb54", + "time": 1778995602000, + "subject": "feat(FN-4829): merge fusion/fn-4829", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0046fc92e", + "time": 1779146586000, + "subject": "feat(FN-4918): merge fusion/fn-4918", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/eval-settings.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "760621cc8", + "time": 1778168958000, + "subject": "feat(FN-3393): add eval settings with scheduled eval project settings UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cafaa68a5", + "time": 1778267146000, + "subject": "feat(FN-3738): add fusion-plugin-even-realities-glasses plugin package with", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/locale-settings.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "b8045b6f2", + "time": 1780498285000, + "subject": "feat(core): add locale primitives and GlobalSettings.language (U1)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e703bdd60", + "time": 1780533196000, + "subject": "feat(i18n): add Korean locale + localized READMEs with language switcher", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/merge-conflict-strategy.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 58, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "ad45c0b1b", + "time": 1777416278000, + "subject": "feat(core,engine): split smart merge strategy into prefer-main / prefer-branch", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0d0796ab7", + "time": 1778602014000, + "subject": "feat(FN-4071): add overlap guard to prevent concurrent merge conflicts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/mesh-replication-protocol.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 51, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "2dd38a618", + "time": 1777987953000, + "subject": "feat(FN-3448): normalize AgentsView button utility classes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "878fba40a", + "time": 1778465585000, + "subject": "feat(FN-3960): add mesh replay outage contracts and runtime hooks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/otel-metrics.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "168dc2f79", + "time": 1781579956000, + "subject": "feat(command-center): U10 — OpenTelemetry (OTLP) metrics export", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f5bd86214", + "time": 1781582397000, + "subject": "feat(monitor): U13 — monitor stage (deployments, incidents, MTTR) closes the loop", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/sandbox-prompt-override.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "56a88de4a", + "time": 1778866897000, + "subject": "test(FN-4639): complete Step 5 — add sandbox exports and tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e291e7e95", + "time": 1778871764000, + "subject": "feat(FN-4650): complete Step 2 — gate sandbox backend resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/sandbox-settings.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "56a88de4a", + "time": 1778866897000, + "subject": "test(FN-4639): complete Step 5 — add sandbox exports and tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "24221bcfe", + "time": 1778871764000, + "subject": "feat(FN-4650): complete Step 1 — add sandbox experimental helper", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/shared-mesh-state.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 49, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "957b8b4ef", + "time": 1778157622000, + "subject": "feat(FN-3463): refine ScriptsModal responsive token usage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "05329fb05", + "time": 1778289974000, + "subject": "feat(FN-3707): implement mesh auth snapshot replication across core, engine", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/stale-paused-review.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 42, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "18695c860", + "time": 1778808930000, + "subject": "feat(FN-4452): complete Step 1 — core stale paused review detector", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c60045df2", + "time": 1779312547000, + "subject": "feat(FN-5223): anchor staleness and stall detectors to engine activation ti", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/stale-paused-todo.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 38, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "8e1ee3efa", + "time": 1779185425000, + "subject": "feat(FN-5034): complete Step 2 — add stale paused todo detector", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c60045df2", + "time": 1779312547000, + "subject": "feat(FN-5223): anchor staleness and stall detectors to engine activation ti", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-update-step-order.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 39, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "dca221829", + "time": 1779097413000, + "subject": "feat(FN-4990): complete Step 3 — guard out-of-order done updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2cfa8a328", + "time": 1780601165000, + "subject": "feat(engine,core): U5+U6+U12core — step-review verdict handler, graph-source projection discipline, pluggable step-parser registry", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-age-staleness.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 42, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "6b637eaf6", + "time": 1778763316000, + "subject": "feat(FN-4465): complete Step 1 — core detector helper and types", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c60045df2", + "time": 1779312547000, + "subject": "feat(FN-5223): anchor staleness and stall detectors to engine activation ti", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-cutover.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 18, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "eb3833a54", + "time": 1782369172000, + "subject": "FN-6971: retire dual-observe cutover gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-parity.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 25, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "5b4eecb5d", + "time": 1780241521000, + "subject": "FN-5768: add dual-observe workflow parity instrumentation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6c0ea28f4", + "time": 1780537887000, + "subject": "feat(core): workflow parity observation builders (CU-U5 #1)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-settings-resolver.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "e8e54bf34", + "time": 1780637871000, + "subject": "feat(engine): per-task effective workflow settings — resolver, two-tier entry merge, fallback alignment", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4fe7dbe01", + "time": 1780640628000, + "subject": "feat(core): one-time hard-move migration of workflow-policy settings to workflow setting values", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/worktrunk-settings.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "c2260db36", + "time": 1778868463000, + "subject": "feat(FN-4621): complete Step 3 — add worktrunk resolver and validator", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "43e3fbf60", + "time": 1778940965000, + "subject": "feat(FN-4723): complete Step 1 — add worktrunk transition classifier", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/zai-provider.test.ts", + "package": "packages/core", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 12, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "9149121bb", + "time": 1781393429000, + "subject": "FN-6401: add built-in Z.ai GLM-5.2 support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b1ba87e59", + "time": 1781410640000, + "subject": "FN-6414: preserve built-in Z.ai models after extensions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/dashboard-footer-mobile-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix": 2, + "added": 1, + "test+source": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 83, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "cd1a06d66", + "time": 1775284680000, + "subject": "fix(FN-824): replace mobile board viewport-height with percentage fill", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/executor-status-bar-theme.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix": 2, + "test+source": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 82, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "b4ed704a0", + "time": 1775345995000, + "subject": "feat(FN-890): tokenized executor footer state backgrounds and accents", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6a64b1fd2", + "time": 1775361435000, + "subject": "fix(FN-919): remove green tint from dashboard footer", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mobile-bottom-bars-keyboard-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 27, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "16d20063b", + "time": 1780072342000, + "subject": "FN-5673: keep mobile nav and footer pinned when keyboard opens", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "129e17d16", + "time": 1780110314000, + "subject": "FN-5702: keep mobile footer and nav pinned when keyboard opens", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/api/__tests__/research-api.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 57, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "c5de7e183", + "time": 1777526487000, + "subject": "feat(FN-2991): merge fusion/fn-2991", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7fc7b7653", + "time": 1778118052000, + "subject": "feat(FN-3599): align documentation with delivery process", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AuthTokenRecoveryDialog.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "5c0809cba", + "time": 1777098765000, + "subject": "feat(tui): git view, project-scoped task stats, polished layout/theme", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "daa7aaeec", + "time": 1777106729000, + "subject": "feat(FN-2407): add blocking auth token recovery flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/Board.canDropTask.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 21, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "010976cee", + "time": 1780582366000, + "subject": "test: promote/board-workflows routes, concurrent sweep, canDropTask, migration forward paths (#1404 #1414 #1415 #1416 #1417)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e57db86a5", + "time": 1780950778000, + "subject": "FN-6029: restore board drop-check regression coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/CommitDiffTab.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 84, + "lastTouched": "2026-04-06", + "evidence": [ + { + "sha": "536d2402e", + "time": 1775186531000, + "subject": "feat(FN-751): add Commits tab with diff viewer to TaskDetailModal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6501535a8", + "time": 1775455707000, + "subject": "feat(FN-1020): add scoped compact spacing for TaskChangesTab file rows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ConversationHistory.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 78, + "lastTouched": "2026-05-02", + "evidence": [ + { + "sha": "375d46d31", + "time": 1775683040000, + "subject": "feat(FN-1151): preserve and display planning conversation history", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d227c6416", + "time": 1777707477000, + "subject": "feat(FN-3139): add planning comment input to interview modals and show in c", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DuplicateWarningModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 40, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "df998cb54", + "time": 1778995602000, + "subject": "feat(FN-4829): merge fusion/fn-4829", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a6685b7f0", + "time": 1782196965000, + "subject": "FN-6930: add New Task duplicate preflight", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/EvalsView.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 49, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "c32999b29", + "time": 1778199851000, + "subject": "feat(FN-3394): add evals dashboard view with API routes and client hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "419222046", + "time": 1778239280000, + "subject": "test(FN-3729): add eval dashboard coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/LanguageSelector.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "3ae1fc383", + "time": 1780499984000, + "subject": "feat(dashboard): add language switcher and persistence (U4)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e08a5633f", + "time": 1780516943000, + "subject": "feat(i18n): language reset-to-auto-detect + review nitpicks (#1352)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MobileWorkflowGraphView.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 16, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "c1a723134", + "time": 1781019035000, + "subject": "feat: redesign mobile workflow editor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7b3c628fb", + "time": 1781691136000, + "subject": "FN-6524: add simple editor step reordering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PluginSlot.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 2, + "test+source": 5 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 70, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "513cab6fc", + "time": 1776359084000, + "subject": "feat(FN-1925): add plugin UI slot infrastructure", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "39ba9ab0b", + "time": 1777704403000, + "subject": "feat(FN-3066): extend plugin UI slot metadata and fix settings token fallba", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "4f897d1a4", + "time": 1777781821000, + "subject": "feat(FN-3067): polish onboarding disclosure UX, plugin slot fallback, and m", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b8d36506d", + "time": 1777894216000, + "subject": "feat(FN-3071): add droid runtime plugin with event bridge, process manageme", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "6ea138463", + "time": 1777897552000, + "subject": "feat(FN-3072): fix design tokens, mobile touch targets, and plugin settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f5268019f", + "time": 1777954882000, + "subject": "feat(FN-3260): document static slot-host rendering contract", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PrPanel.reviews.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "5bde911bd", + "time": 1779043159000, + "subject": "feat(FN-4761): sync PR reviews and surface review threads", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aad121903", + "time": 1779144648000, + "subject": "feat(FN-4967): merge fusion/fn-4967", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SetupWarningBanner.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 70, + "lastTouched": "2026-04-20", + "evidence": [ + { + "sha": "e30bd2e24", + "time": 1776426388000, + "subject": "feat(FN-1941): surface setup readiness warnings in task entry flows", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b052f17bd", + "time": 1776656893000, + "subject": "feat(FN-2154): show dismissible setup warning on project page", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskIdIntegrityBanner.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 44, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "15281c304", + "time": 1778638207000, + "subject": "feat(FN-4192): add task ID integrity detection and dashboard alerts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1b49cbc94", + "time": 1779275623000, + "subject": "feat(FN-5284): surface db corruption via health checks, self-healing, and d", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TopProgressBar.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "c6e978286", + "time": 1778960997000, + "subject": "feat(FN-4779): merge fusion/fn-4779", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4d5e29604", + "time": 1778987610000, + "subject": "feat(FN-4801): merge fusion/fn-4801", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/backlog-health-filter.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "2a2d7b1d4", + "time": 1779145690000, + "subject": "feat(FN-5070): merge fusion/fn-5070", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4915e80fc", + "time": 1779186077000, + "subject": "feat(FN-5091): complete Step 5 — extend backlog health allowlist", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/workflow-auto-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "d382d51c7", + "time": 1780632052000, + "subject": "feat(dashboard): one-click auto-layout respecting column bands", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "563cb5b37", + "time": 1780692965000, + "subject": "Address PR review feedback (#1433)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/workflow-mobile-graph.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 16, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "c1a723134", + "time": 1781019035000, + "subject": "feat: redesign mobile workflow editor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7b3c628fb", + "time": 1781691136000, + "subject": "FN-6524: add simple editor step reordering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/areas/__tests__/TeamArea.orgchart-pan.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "6b59c5bbd", + "time": 1782090836000, + "subject": "FN-6885: enable org chart drag panning", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "efd659be0", + "time": 1782124456000, + "subject": "feat(dashboard): Command Center Team card - View Board/Agents buttons + heartbeat multiplier slider", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/nodes/__tests__/node-help.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "9c6b4dd3c", + "time": 1782087912000, + "subject": "feat(FN-6879): document workflow nodes in editor detail pane", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "be7c23693", + "time": 1782091798000, + "subject": "feat(FN-6880): author optional-group container in the node editor (U4)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/modalPersistence.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 27, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 82, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "47ccd2066", + "time": 1775343406000, + "subject": "feat(FN-936): add modal description persistence for re-entry", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0359166b6", + "time": 1775669978000, + "subject": "feat(FN-1276): scope dashboard persistence by project", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useAuthTokenRecovery.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "f8c366d8f", + "time": 1782270224000, + "subject": "refactor(dashboard): extract useDashboardHealth, useAuthTokenRecovery, useScopedDismissFlag", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "49c2de108", + "time": 1782288813000, + "subject": "test(dashboard): harden hook tests + drop dead App.tsx re-exports (code review)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useBoardScrollRestore.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "f6f9e822f", + "time": 1782274176000, + "subject": "refactor(dashboard): extract task-detail, board-scroll, popped-out hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "49c2de108", + "time": 1782288813000, + "subject": "test(dashboard): harden hook tests + drop dead App.tsx re-exports (code review)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useCapacityRiskBanner.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "b8c511fe3", + "time": 1782270854000, + "subject": "refactor(dashboard): extract useCapacityRiskBanner hook from App.tsx", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "49c2de108", + "time": 1782288813000, + "subject": "test(dashboard): harden hook tests + drop dead App.tsx re-exports (code review)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useFileMention.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 68, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "9974cc701", + "time": 1776523017000, + "subject": "feat(FN-1947): add file mention search and chat autocomplete", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "12a6ee9af", + "time": 1779275560000, + "subject": "feat(FN-5218): add hash mentions to chat composers and popups", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useMeshState.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 46, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "d144a081f", + "time": 1778457216000, + "subject": "feat(FN-3454): add typed mesh snapshot API consumed by nodes view", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f7450ba3a", + "time": 1778461483000, + "subject": "feat(FN-3955): align mesh state hook contract with topology consumers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useProjectActions.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 78, + "lastTouched": "2026-04-16", + "evidence": [ + { + "sha": "95c27f395", + "time": 1775673599000, + "subject": "refactor(FN-1289): extract AppInner logic into hooks and modal component", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f83d3483a", + "time": 1776308002000, + "subject": "feat(FN-1733): add dedicated pause/resume APIs for projects", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useStashOrphanCount.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 2, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "20b5c144f", + "time": 1782268102000, + "subject": "refactor(dashboard): extract useStashOrphanCount hook from App.tsx", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "49c2de108", + "time": 1782288813000, + "subject": "test(dashboard): harden hook tests + drop dead App.tsx re-exports (code review)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/mobileBarKeyboardFlags.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 27, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "9b54f52b3", + "time": 1780113792000, + "subject": "FN-5707: fix Android executor footer overlap after keyboard dismiss", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "869a4f77d", + "time": 1781317331000, + "subject": "FN-6329: prevent Quick Chat keyboard board shift", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/parseQuestionToolCall.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 9, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "a4537167a", + "time": 1781665993000, + "subject": "FN-6501: render chat question response controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "01b80db60", + "time": 1781740409000, + "subject": "FN-6589: add structured ask-question chat tool", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/relativeTimeAgo.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 8, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "c261217ac", + "time": 1781738514000, + "subject": "FN-6597: add task chat timestamps", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ca14a12b9", + "time": 1781744239000, + "subject": "FN-6601: consolidate relative-time bucket formatting", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/taskDelete.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 47, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "1563533e1", + "time": 1778374519000, + "subject": "feat(FN-3889): add bulk delete with dependency conflict detection to ListVi", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e6c7dcdd6", + "time": 1779242184000, + "subject": "feat(FN-5139): wire lineage unlink delete and archive flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/browse-directory-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 71, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "6177cfb5f", + "time": 1776339289000, + "subject": "feat(FN-1803): add nodeId support to project registration and browse-directory", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "369b40e46", + "time": 1776909009000, + "subject": "fix(FN-000): improve setup wizard browse flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/cli-sessions-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 21, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "17c9303f2", + "time": 1780641879000, + "subject": "feat(dashboard): cli-agent session transport — WS attach, tickets, SSE state, output hardening (U10)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "863ebfaa9", + "time": 1781515841000, + "subject": "FN-6464: add CLI session relaunch route", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/dashboard-test-config-guard.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 24, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "e549d7af3", + "time": 1780386819000, + "subject": "FN-5849: shard dashboard quality Vitest runs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ed80f9821", + "time": 1780455072000, + "subject": "FN-5918: reap dashboard vitest workers on wrapper exit", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c9191b733", + "time": 1780533395000, + "subject": "test: close dashboard curated-gate and engine-slow coverage holes; add inventory harness", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8f66a41c1", + "time": 1781313504000, + "subject": "FN-6308: parallelize dashboard quality lanes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/dev-server-detect.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 67, + "lastTouched": "2026-04-20", + "evidence": [ + { + "sha": "c7f6b172d", + "time": 1776656893000, + "subject": "feat(FN-2178): add dashboard dev server management flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0df323434", + "time": 1776656894000, + "subject": "feat(FN-2181): add dashboard dev-server process manager and API routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/droid-cli-probe.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 56, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "09551f3d3", + "time": 1777633382000, + "subject": "feat(FN-2979): add droid CLI probe module for node diagnostics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5be5da193", + "time": 1777889073000, + "subject": "feat(FN-3332): add droid runtime plugin with event bridge and process manag", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-poll.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 5, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 3, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "test-only-churn": 3, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 47, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 88, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "89b289993", + "time": 1774865991000, + "subject": "feat(KB-063): add realtime GitHub badge updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c48c6aba6", + "time": 1774903053000, + "subject": "feat(KB-137): add GitHub App webhooks for real-time badge updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "782412d1f", + "time": 1774983715000, + "subject": "test(KB-316): add comprehensive test coverage for dashboard services", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d14697e33", + "time": 1775108684000, + "subject": "feat: refactor tests and improve mocking for file-service and GitHub polling - Updated mocking strategy for node:fs and node:fs/promises in file-service tests. - Removed redundant test files and improved test implementations for better clarity. - Enhanced GitHub polling service tests with rate limiter integration.", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-source-issue-reconciler.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 28, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "b2dce7d85", + "time": 1780022971000, + "subject": "Recovery: Re-land (Close source-imported GitHub issues on ta", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ffadb0c77", + "time": 1780273406000, + "subject": "FN-5792: fix GitHub auto-close reconciliation for soft-deleted tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "9b396b637", + "time": 1781835178000, + "subject": "FN-6674: backfill GitHub source issue close times", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-tracking-auth.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 46, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "95f6cd845", + "time": 1778415626000, + "subject": "feat(FN-3875): add GitHub tracking auth resolver and forced client auth mod", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9a114c14f", + "time": 1778630590000, + "subject": "feat(FN-4148): derive GitHub tracking titles from task descriptions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-webhooks.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 50, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 87, + "lastTouched": "2026-04-01", + "evidence": [ + { + "sha": "c48c6aba6", + "time": 1774903053000, + "subject": "feat(KB-137): add GitHub App webhooks for real-time badge updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a75b74380", + "time": 1775001803000, + "subject": "feat(KB-335): rename environment variables from KB_* to FUSION_*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/goals-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 28, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "2a3535893", + "time": 1779989536000, + "subject": "feat(FN-5622): add goals REST API with store accessor and route handlers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "963362cd4", + "time": 1781647704000, + "subject": "FN-6490: add mission-goal linking controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/monitor-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "f5bd86214", + "time": 1781582397000, + "subject": "feat(monitor): U13 — monitor stage (deployments, incidents, MTTR) closes the loop", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61f389ed3", + "time": 1781614571000, + "subject": "Address PR review feedback (#1683)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/network.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "a48232c91", + "time": 1775631669000, + "subject": "feat(FN-1116): add Capacitor plugin managers for dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b8672cf79", + "time": 1775661017000, + "subject": "refactor(FN-1240): remove dashboard Capacitor coupling in favor of @fusion/mobile", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/pi-extensions-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 68, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "2fd586f6d", + "time": 1776519101000, + "subject": "feat(FN-1944): add Pi settings package management flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "606de5d14", + "time": 1777046102000, + "subject": "feat(FN-2394): add Fusion reinstall flow for Pi extensions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/pr-routes-auto-merge.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "bf0e9a3e3", + "time": 1779070300000, + "subject": "feat(FN-4766): merge fusion/fn-4766", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aad121903", + "time": 1779144648000, + "subject": "feat(FN-4967): merge fusion/fn-4967", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/pr-routes.contract.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 39, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "bf0e9a3e3", + "time": 1779070300000, + "subject": "feat(FN-4766): merge fusion/fn-4766", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aad121903", + "time": 1779144648000, + "subject": "feat(FN-4967): merge fusion/fn-4967", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ba1604835", + "time": 1779211537000, + "subject": "feat(FN-5144): add create PR metadata and preflight routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d3593065e", + "time": 1782369171000, + "subject": "FN-6960: bound PR metadata generation", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-git-github.pr-resolve-conflicts.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 22, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "8aed4da76", + "time": 1780525949000, + "subject": "FN-5949: add AI PR conflict resolution to Create PR flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "df01ab71d", + "time": 1781397971000, + "subject": "FN-6402: detect PR preflight conflicts by exit code", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-knowledge-routes.auth.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 10, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "0a87890bd", + "time": 1781580892000, + "subject": "feat(knowledge): U14 — persistent knowledge index", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61f389ed3", + "time": 1781614571000, + "subject": "Address PR review feedback (#1683)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-plugin-registry.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 17, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "f8200adb7", + "time": 1781004473000, + "subject": "FN-6071: add plugin registry browsing and install actions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4f8bb3177", + "time": 1781012593000, + "subject": "FN-6074: add plugin registry QA coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-project-isolation-transition.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 40, + "lastTouched": "2026-05-27", + "evidence": [ + { + "sha": "63adddadf", + "time": 1778977869000, + "subject": "feat(FN-4813): complete Step 5 — add isolation transition runtime restart path", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6a6c6fdbf", + "time": 1779857851000, + "subject": "perf(dashboard): speed up startup and eliminate API request storms", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/server-static-assets.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 0, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 85, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "5b8f83d96", + "time": 1775105843000, + "subject": "feat(KB-662): add visibility-based refresh to dashboard hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cc3ade1bd", + "time": 1776964166000, + "subject": "feat(FN-2322): centralize loopback integration test gating", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b6ec14e8b", + "time": 1776966644000, + "subject": "fix(FN-2321): standardize loopback-gated integration test labeling", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/splash-screen.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "a48232c91", + "time": 1775631669000, + "subject": "feat(FN-1116): add Capacitor plugin managers for dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b8672cf79", + "time": 1775661017000, + "subject": "refactor(FN-1240): remove dashboard Capacitor coupling in favor of @fusion/mobile", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/update-check.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 60, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "e80850e7c", + "time": 1777279207000, + "subject": "feat(FN-2663): add cached update-check setting, APIs, and banner", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61ea16e31", + "time": 1777337715000, + "subject": "feat(dashboard,cli): update-check frequency, GitHub star button, more resizable modals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ba3d868c2", + "time": 1777471852000, + "subject": "feat(FN-2944): merge fusion/fn-2944", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e8c2d516a", + "time": 1781393428000, + "subject": "FN-6386: add one-click update installation", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/view-chunk-manifest.test.ts", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 40, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "6bb70dc80", + "time": 1779008199000, + "subject": "feat(FN-4782): complete Step 2 — add view chunk manifest helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "67aff5de8", + "time": 1779035068000, + "subject": "fix(dashboard): auto-invalidate index.html and view-chunk caches on mtime change", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "9d07e8523", + "time": 1781866196000, + "subject": "FN-6690: preload lazy-view CSS chunks", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-session-helpers-test-mode.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 35, + "lastTouched": "2026-06-11", + "evidence": [ + { + "sha": "9c2b61eec", + "time": 1779434114000, + "subject": "feat(FN-5204): add test mode activation across settings, engine, and dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4ea9d66b4", + "time": 1781194883000, + "subject": "FN-6219: prefer fresh agent model settings for automatic runs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-tools-config.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 52, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "452c31a08", + "time": 1777933300000, + "subject": "feat(FN-3320): add agent configuration tools for settings management", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "840653e52", + "time": 1778292910000, + "subject": "feat(FN-3777): add create_agent and delete_agent tools", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/claude-acp-enable.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 10, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "45184aef7", + "time": 1781550860000, + "subject": "feat(acp): enable Route A via experimental flag (claudeCliAcp), default ON", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "daa37d08c", + "time": 1781551920000, + "subject": "feat(acp): surface bridge auth failure in the UI with fallback / fix-auth (R17)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/context-limit-detector.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 35, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 82, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "4c2be10d7", + "time": 1775357268000, + "subject": "feat(FN-882): add loop detection recovery with compact-and-resume", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "d0fda6d98", + "time": 1775815358000, + "subject": "feat(FN-1462): add context window exceeds limit pattern to context-limit-detector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ec80d98d2", + "time": 1777831587000, + "subject": "feat(FN-3302): restore Claude usage tracking with Fusion Anthropic auth sto", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/custom-providers.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 49, + "lastTouched": "2026-06-01", + "evidence": [ + { + "sha": "55d8e87cc", + "time": 1778167611000, + "subject": "test(FN-000): harden local test suite", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f76716e55", + "time": 1780327382000, + "subject": "FN-5833: fix custom Responses API model lookup", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/eval-followups.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 50, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "52c673a4c", + "time": 1778122555000, + "subject": "feat(FN-3392): implement follow-up suggestion contract and policy system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b078a8135", + "time": 1779244085000, + "subject": "feat(FN-5232): add deterministic verification-followup deduplication to pre", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-paused-abort-todo-benign.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 3, + "added-with-source": 1, + "test+source": 5, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 6, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "964356387", + "time": 1781923846000, + "subject": "Fix pause-abort worktree leak + retry storm; add auto-recovery", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "7eaf51394", + "time": 1781925050000, + "subject": "Address PR #1687 review: harden pause-abort recovery + FNXC comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2d327604f", + "time": 1782010076000, + "subject": "Clear stale failed status on benign todo pause-abort", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7b85fead5", + "time": 1782011227000, + "subject": "Address code-review findings on pause-abort + task-chat fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c8a82e795", + "time": 1782024597000, + "subject": "fix(engine): auto-continue agent session after engine-internal pause/resume abort", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "92bd060b9", + "time": 1782026883000, + "subject": "Address PR review feedback (#1697)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-task-done-summary.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 44, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "34da8cffc", + "time": 1778599724000, + "subject": "feat(FN-4106): preserve rerun summaries in executor task-done output", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b69265651", + "time": 1779107350000, + "subject": "feat(FN-4999): recover completion handoff limbo safely", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/experiment-finalize-plan.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 43, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "7ac32a5a6", + "time": 1778756509000, + "subject": "feat(FN-4222): complete Step 1 — finalize plan model", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0c425788c", + "time": 1780260623000, + "subject": "FN-5782: wire branch groups into merge routing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/gating-classifications-provisioning.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 46, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "fe50c3a3a", + "time": 1778465585000, + "subject": "feat(FN-3956): execute provisioning on approval decisions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "867df0414", + "time": 1778507262000, + "subject": "feat(FN-3976): reclassify github import action gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/goal-anchoring-audit.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 27, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "afc3b4749", + "time": 1780110314000, + "subject": "FN-5655: add goal anchoring audit events across lanes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "194dfa938", + "time": 1780206804000, + "subject": "FN-5758: add cited-goal audit aggregation and runtime route", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/goal-context-injection.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 27, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "ff575f8b0", + "time": 1780110314000, + "subject": "FN-5653: inject active goal context into heartbeat and executor prompts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d98ff8780", + "time": 1780203246000, + "subject": "FN-5759: inject active-goal context across engine lanes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/hybrid-executor-gate.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 40, + "lastTouched": "2026-05-27", + "evidence": [ + { + "sha": "d9ad41626", + "time": 1778956375000, + "subject": "feat(FN-4772): complete Step 2 — add hybrid executor gate", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6a6c6fdbf", + "time": 1779857851000, + "subject": "perf(dashboard): speed up startup and eliminate API request storms", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/in-review-unmet-dependency-reconcile.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 5, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "d2fc70ac9", + "time": 1781968413000, + "subject": "FN-6793: enforce dependency gates before review", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61ff17a05", + "time": 1781976086000, + "subject": "FN-6797: harden in-review dependency rebound audits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-layer3-scope-partition.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "863fbeac0", + "time": 1779093015000, + "subject": "feat(FN-4956): complete Step 1 — add scope partition helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "807255465", + "time": 1779093015000, + "subject": "feat(FN-4956): complete Step 2-3 — scope-partition layer3 conflicts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-post-push-stats-refresh.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 42, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "31dd80ba1", + "time": 1778794726000, + "subject": "feat(FN-4526): complete Step 1 — refresh post-push merge stats", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-skip-already-done.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 39, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "7dc7f3ff4", + "time": 1779098569000, + "subject": "feat(FN-5007): complete Step 2 — add merger finalized-task guard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/mission-autopilot-end-to-end.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 28, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "41f40b466", + "time": 1780031274000, + "subject": "FN-5641: trigger assertion runs during mission autopilot progression", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b8c8642ca", + "time": 1780037927000, + "subject": "FN-5645: fix mission autopilot progression to wait for assertion runs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/mission-verification.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 14, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "483c71b01", + "time": 1781252194000, + "subject": "feat(engine): default-to-fail posture + non-mutating verification run (U2,U3)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c4549dece", + "time": 1781257058000, + "subject": "fix(review): resolve lint-gate errors in mission-verification", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1bb8cea9f", + "time": 1781389527000, + "subject": "Address PR review feedback (#1666)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/owning-node-handoff-policy.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "2ff19bc9c", + "time": 1778977869000, + "subject": "feat(FN-4813): complete Step 3 — add owning-node handoff policy", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b2ca02f74", + "time": 1778977870000, + "subject": "feat(FN-4813): complete docs, settings, and verification updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/plugin-skill-integration.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 55, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "1f68bc351", + "time": 1777705469000, + "subject": "feat(FN-3117): add plugin dashboard views, chat session icons, and SQLite t", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/rate-limit-retry.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 84, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "281fd206b", + "time": 1775162344000, + "subject": "feat(FN-705): add rate-limit retry with exponential backoff for AI agents", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "371ec764b", + "time": 1775177725000, + "subject": "fix(FN-000): harden project migration runtime", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/auto-recovery-dispatch.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "79eb74ca7", + "time": 1778806797000, + "subject": "feat(FN-4534): add auto-recovery dispatcher and pause-site wiring", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ad73d7658", + "time": 1778887182000, + "subject": "feat(FN-4640): complete Step 6 — dashboard sandbox audit surface", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/branch-recovery-live-zero-commits.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 42, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "2d9badbc1", + "time": 1778787850000, + "subject": "test(FN-4500): cover fast-path guards and align legacy reclaim assertions", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "62743e2ba", + "time": 1778787851000, + "subject": "test(FN-4500): complete Step 4 — add reliability interaction coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a8715ed96", + "time": 1779416127000, + "subject": "fix(FN-5335): enforce triple-proof gating for backward recovery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/dual-observe-merge-seam.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 26, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "8609669a5", + "time": 1780192339000, + "subject": "FN-5742: add dual-observe merge-request parity seam", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c9b159f4e", + "time": 1780199296000, + "subject": "FN-5743: cut over merge dequeue authority to merge-request queue", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/post-completion-stale-self-owned-binding.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 36, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "f79837869", + "time": 1779339182000, + "subject": "feat(FN-5346): add post-completion defensive backstop and shared reconcile", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cf0101be7", + "time": 1779379583000, + "subject": "fix(FN-5256): keep live task worktrees through pause/resume races", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "09bd01baf", + "time": 1782101240000, + "subject": "feat(workspace): Phase A U1 — executor session scoping for workspace mode", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/post-done-continuation-no-wedge.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 24, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "f4cbaed49", + "time": 1780390106000, + "subject": "FN-5866: suppress post-done non-continuable session errors", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "742a56449", + "time": 1780420460000, + "subject": "FN-5888: retry non-continuable sessions with a fresh session", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "8156382d7", + "time": 1780423398000, + "subject": "FN-5889: suppress post-done continuation wedges", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e48df026c", + "time": 1781734315000, + "subject": "FN-6594: classify Codex transcript desync as non-continuable", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/soft-delete-deadlock-scan-exclusion.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 34, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "d4ec82bf0", + "time": 1779532433000, + "subject": "feat(FN-5528): add soft-delete exclusion to stale blocked-by recovery scrip", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9b7e87667", + "time": 1779598447000, + "subject": "feat(FN-5566): add soft-delete cleanup sweep for blocker residue", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/stale-self-owned-active-session-recovery.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 39, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "6aea112a2", + "time": 1779066642000, + "subject": "feat(FN-4973): reconcile stale active-session worktree entries in executor cleanup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cf0101be7", + "time": 1779379583000, + "subject": "fix(FN-5256): keep live task worktrees through pause/resume races", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "09bd01baf", + "time": 1782101240000, + "subject": "feat(workspace): Phase A U1 — executor session scoping for workspace mode", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/workflow-interpreter-dual-observe.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 25, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "5b4eecb5d", + "time": 1780241521000, + "subject": "FN-5768: add dual-observe workflow parity instrumentation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "eb3833a54", + "time": 1782369172000, + "subject": "FN-6971: retire dual-observe cutover gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/research-step-runner.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 57, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "a227d5b30", + "time": 1777535317000, + "subject": "feat(FN-2992): merge fusion/fn-2992", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3a97bf238", + "time": 1777925877000, + "subject": "feat(FN-3292): document research boundary contract", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/scheduler-node-unreachable-audit.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "14cf263bc", + "time": 1778986724000, + "subject": "feat(FN-4825): complete Step 3 — add scheduler unreachable-owner audits", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8c3c0206f", + "time": 1778996844000, + "subject": "feat(FN-4836): consolidate settings round-trip/default tests with it.each m", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "01f0bf625", + "time": 1779000317000, + "subject": "fix(FN-4826): complete Step 6 — stabilize audit emission and tests", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-stale-merger-status.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 38, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "a0b75579b", + "time": 1779166479000, + "subject": "feat(FN-5094): merge fusion/fn-5094", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/spec-validation-external-integration-evidence.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 36, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "b06cf64cd", + "time": 1779317684000, + "subject": "feat(FN-5321): add evidence gap detector for external integration manifests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7eafa91dd", + "time": 1781351699000, + "subject": "FN-6350: accept labeled external integration evidence", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/streaming-delta.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 25, + "lastTouched": "2026-06-01", + "evidence": [ + { + "sha": "2140ab2dc", + "time": 1780271308000, + "subject": "FN-5789: normalize missing sentence spaces in streamed deltas", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "feceedbf7", + "time": 1780295093000, + "subject": "FN-5803: normalize streamed sentence spacing across message boundaries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/task-completion.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 49, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "55d8e87cc", + "time": 1778167611000, + "subject": "test(FN-000): harden local test suite", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ab66e5b60", + "time": 1778631884000, + "subject": "feat(FN-4091): fix stale blocker in WorkflowResultsTab", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/token-cap-detector.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 81, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "bd4322fcd", + "time": 1775454603000, + "subject": "feat(FN-1000): add token cap detection for agent task execution", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-review-spec-external-integration.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 36, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "b06cf64cd", + "time": 1779317684000, + "subject": "feat(FN-5321): add evidence gap detector for external integration manifests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7eafa91dd", + "time": 1781351699000, + "subject": "FN-6350: accept labeled external integration evidence", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-split-into-subtasks-delete.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 37, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "2c7ae1c1a", + "time": 1779200428000, + "subject": "feat(FN-5131): add lineage-unlink flag to triage parent deletes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c9fd41ef2", + "time": 1779270409000, + "subject": "feat(FN-5175): thread soft-delete audit context and add reconciliation scri", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/unlinked-missions-advisory-reporter.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 18, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "fb6b441fb", + "time": 1780883506000, + "subject": "FN-5960: add unlinked mission advisory reporting", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "df74a6b75", + "time": 1781002414000, + "subject": "FN-6050: stop re-emitting existing mission advisories", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-step-verdict-parsing.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "db7867975", + "time": 1778782547000, + "subject": "feat(FN-4367): add structured JSON verdict output for prompt-mode workflow steps", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "09ad2b4ed", + "time": 1778782547000, + "subject": "feat(FN-4367): finalize structured workflow verdict contract", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/notification/__tests__/oauth-validity-logger.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 29, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "da34bd06e", + "time": 1779942672000, + "subject": "feat(FN-5595): add oauth relogin banner with validity logger", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a1b7556c7", + "time": 1780467196000, + "subject": "FN-5924: throttle OAuth expiry alerts across restarts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/research/__tests__/provider-registry.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 57, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "9bea0a136", + "time": 1777540879000, + "subject": "feat(FN-2993): merge fusion/fn-2993", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "a02b42106", + "time": 1777954882000, + "subject": "feat(FN-3313): add plugin slot registry, planning mode rewind, and docker n", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e69631ec2", + "time": 1778380869000, + "subject": "feat(FN-3901): add builtin research web-search provider as default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "11e9d5b2b", + "time": 1778630672000, + "subject": "feat(FN-4135): add always-on web search with locked provider setting", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/sandbox/__tests__/audit.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "115db18d1", + "time": 1778887182000, + "subject": "feat(FN-4640): complete Step 3 — add sandbox audit decorator", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ad73d7658", + "time": 1778887182000, + "subject": "feat(FN-4640): complete Step 6 — dashboard sandbox audit surface", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/settings-sections.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 21, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "8c9702e90", + "time": 1780643715000, + "subject": "refactor(dashboard): extract SettingsModal Account/Global/Runtimes sections into shared-primitive components with pure save-split helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3a3360415", + "time": 1780645619000, + "subject": "feat(dashboard): remove moved settings from SettingsModal with workflow-editor redirect stubs, target-IA regroup, secrets/prompts extraction", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f9043d733", + "time": 1782182930000, + "subject": "fix(dashboard): polish workflow and chrome defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f5e1b966a", + "time": 1782401684000, + "subject": "FN-6943: add worktree file copy settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MergeAdvanceNotice.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4 + }, + "durationMs": 200, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 35, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "0f6f0263f", + "time": 1779401185000, + "subject": "feat(FN-5352): merge fusion/fn-5352", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "921e0e616", + "time": 1779410814000, + "subject": "feat(FN-5358): add smart pull API route with stash conflict detection and r", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d37bebf8b", + "time": 1779495878000, + "subject": "feat(FN-5516): merge fusion/fn-5516", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e5357a4af", + "time": 1779541611000, + "subject": "feat(FN-5359): add push-to-origin button and hook to merge advance notice", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "14bc63e81", + "time": 1779566808000, + "subject": "feat(FN-5419): add stash conflict modal gating and smart pull routing for m", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useWorkspaceFileBrowser.test.ts", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 87, + "lastTouched": "2026-04-13", + "evidence": [ + { + "sha": "f2c00ad14", + "time": 1774945617000, + "subject": "feat(KB-175): move file browser to header with workspace support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9fa8f5f22", + "time": 1775267405000, + "subject": "feat(FN-801): show hidden files in workspace file listings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c9cd9284d", + "time": 1776044306000, + "subject": "fix: project-scope terminal, file browser, agent execution, and heartbeat monitor", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-parsing.test.ts", + "package": "packages/core", + "valueScore": 17, + "positiveCount": 10, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 2, + "testOnlyRatio": 0.167, + "signalTally": { + "added": 1, + "test+source": 4, + "churn-keyword": 1, + "test-only-churn": 2, + "fix+source": 5 + }, + "durationMs": 400, + "testCount": 42, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 45, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "36e130937", + "time": 1778531106000, + "subject": "refactor(FN-4021): split core store tests into domain-focused suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "074fd1e23", + "time": 1778714951000, + "subject": "feat(FN-4402): validate file scope tokens in prompt parsing and writes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "35b2971f5", + "time": 1779282887000, + "subject": "feat(FN-5216): sanitize duplicate paths in file scope when parsing task sto", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2a3c285ba", + "time": 1780598013000, + "subject": "feat(core): U1 — IR foreach/step-review/parse-steps/code kinds, rework edges, dependsOn parsing (FN step-inversion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e94985351", + "time": 1782064033000, + "subject": "test(FN-5048): migrate 41 core store tests to shared in-memory harness", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "c8be19f9e", + "time": 1782384261000, + "subject": "test(FN-783): cover poisoned write-scope metadata", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useAppSettings.test.ts", + "package": "packages/dashboard", + "valueScore": 26, + "positiveCount": 14, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 4, + "test+source": 10, + "churn-keyword": 1 + }, + "durationMs": 600, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 22.2, + "ageDays": 78, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "321ec691b", + "time": 1775652804000, + "subject": "feat(FN-1203): extract App orchestration into focused hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2019b71e6", + "time": 1775891902000, + "subject": "fix(FN-1488): add showQuickChatFAB setting to control Quick Chat FAB visibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "274600322", + "time": 1776007517000, + "subject": "feat(FN-1613): merge fusion/fn-1613", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "24513716e", + "time": 1776464702000, + "subject": "feat(FN-2018): merge fusion/fn-2018", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bbc0ce89b", + "time": 1776618814000, + "subject": "feat(FN-2119): merge fusion/fn-2119", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc43d2652", + "time": 1776967116000, + "subject": "fix(FN-2313): make PR auth checks gh-first across settings UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-tasks.test.ts", + "package": "packages/dashboard", + "valueScore": 22.5, + "positiveCount": 19, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 25, + "testOnlyCount": 4, + "testOnlyRatio": 0.16, + "signalTally": { + "added": 1, + "test+source": 19, + "churn-keyword": 2, + "test-only-churn": 4, + "fix+source": 1 + }, + "durationMs": 500, + "testCount": 87, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 21.3, + "ageDays": 54, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9b56e521e", + "time": 1778115263000, + "subject": "docs(FN-3421): document branch field plumbing architecture", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "935166dbb", + "time": 1778137534000, + "subject": "feat(FN-3450): add mesh task create replication across nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "24325cd3c", + "time": 1778179705000, + "subject": "feat(FN-3710): retry overlap-class cluster create failures in distributed t", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "ecbf1f829", + "time": 1778221265000, + "subject": "feat(FN-3276): add task review tab with metadata persistence and desktop la", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cea0f6f6c", + "time": 1778261782000, + "subject": "feat(FN-3277): add review tab reviewState persistence and enriched UI state", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-sort.test.ts", + "package": "packages/core", + "valueScore": 8.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 21.1, + "ageDays": 89, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "ac4166902", + "time": 1774741217000, + "subject": "fix(KB-186): add ID-based tiebreaker to sort comparators for stable ordering", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "57f34d193", + "time": 1775012425000, + "subject": "feat(KB-336): rename data directory from .kb to .fusion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "84ed84313", + "time": 1776618814000, + "subject": "feat(FN-2123): merge fusion/fn-2123", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "52168d7f2", + "time": 1777046065000, + "subject": "feat(FN-2383): persist task priority across core storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a29bc688a", + "time": 1777262191000, + "subject": "test(core,dashboard): expand in-memory SQLite to more store tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useWorkspaceFileEditor.test.ts", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1, + "fix": 1 + }, + "durationMs": 200, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 21.1, + "ageDays": 87, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "f2c00ad14", + "time": 1774945617000, + "subject": "feat(KB-175): move file browser to header with workspace support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c9cd9284d", + "time": 1776044306000, + "subject": "fix: project-scope terminal, file browser, agent execution, and heartbeat monitor", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MailboxView.test.tsx", + "package": "packages/dashboard", + "valueScore": 37, + "positiveCount": 30, + "negativeCount": 11, + "neutralCount": 0, + "timesTouched": 41, + "testOnlyCount": 9, + "testOnlyRatio": 0.22, + "signalTally": { + "added-with-source": 1, + "test+source": 22, + "fix": 4, + "fix+source": 5, + "churn-keyword": 4, + "test-only-churn": 9 + }, + "durationMs": 800, + "testCount": 77, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 21.1, + "ageDays": 71, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "ed35b494f", + "time": 1776265442000, + "subject": "feat(FN-1634): promote mailbox to first-class navigation view", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "58e4360da", + "time": 1776344177000, + "subject": "feat(FN-1888): add mobile-ready MailboxView with agents load and styles", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9c20cb0c1", + "time": 1776346417000, + "subject": "fix(FN-1894): add base and mobile CSS for .mailbox-view full-page layout", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "e6d003bdf", + "time": 1776464677000, + "subject": "feat(FN-1956): merge fusion/fn-1956", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d7c165715", + "time": 1776529803000, + "subject": "feat(FN-1957): add inbox/outbox sub-tabs to agent mailbox views", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "15139cd68", + "time": 1776872816000, + "subject": "feat(FN-2250): merge fusion/fn-2250", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/memory-backend.test.ts", + "package": "packages/core", + "valueScore": 18.5, + "positiveCount": 11, + "negativeCount": 3, + "neutralCount": 1, + "timesTouched": 15, + "testOnlyCount": 3, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "test-only-churn": 3, + "fix+source": 4, + "churn-keyword": 1 + }, + "durationMs": 400, + "testCount": 108, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20.5, + "ageDays": 75, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "431f63d10", + "time": 1775934805000, + "subject": "feat(FN-1420): add pluggable memory backend system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "19199b843", + "time": 1776141347000, + "subject": "feat(FN-1767): add QMD memory backend with async execution and backend-aware project helpers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b4df0cbb3", + "time": 1776187731000, + "subject": "feat(FN-1738): merge fusion/fn-1738", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "06cade022", + "time": 1776319742000, + "subject": "test(FN-1893): add comprehensive QMD test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "39cbfaba0", + "time": 1776438996000, + "subject": "fix(FN-000): simplify qmd memory settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2425b6b6b", + "time": 1776439790000, + "subject": "fix(FN-000): scope qmd memory search to project", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/task-steer.test.ts", + "package": "packages/cli", + "valueScore": 4, + "positiveCount": 6, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 3, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "test-only-churn": 3, + "fix": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 87, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "5ca255bd8", + "time": 1774918257000, + "subject": "feat(KB-204): add kb task steer command", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fce5e6c1e", + "time": 1775011815000, + "subject": "feat(KB-334): change default task prefix from KB to FN", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "afc24408c", + "time": 1775052323000, + "subject": "feat(KB-622): unify steeringComments and comments into single comments field", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/claude-cli-extension.test.ts", + "package": "packages/cli", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 63, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "32da0aeda", + "time": 1777010554000, + "subject": "feat: add \"Anthropic — via Claude CLI\" as a first-class provider", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "256ba0ee6", + "time": 1777010557000, + "subject": "refactor(claude-cli): always load extension, gate via /api/models filter", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "de5dd6f7d", + "time": 1777046065000, + "subject": "feat(FN-2370): merge fusion/fn-2370 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/claude-skills.test.ts", + "package": "packages/cli", + "valueScore": 4, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 63, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "534be73bd", + "time": 1777010553000, + "subject": "fix: prevent nested .fusion/.fusion dir from PluginStore path bug", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/gh-cli.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "churn-keyword": 1, + "fix+source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 27, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 88, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "5794c301b", + "time": 1774842727000, + "subject": "feat(KB-052): refactor GitHub integration to use gh CLI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "60d084915", + "time": 1777411555000, + "subject": "fix(dashboard,core): bound AI session prompt() with timeout + abort", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "71dfc916f", + "time": 1779054511000, + "subject": "feat(FN-4764): complete Step 1 — add structured gh error classification", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d78fbccac", + "time": 1780034358000, + "subject": "FN-5643: fix gh api --json flag handling for PR fetches", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/logger.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 62, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "40e44401f", + "time": 1777046065000, + "subject": "fix(FN-2371): preserve log severity in dashboard TUI capture", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/master-key.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 40, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "e49c41185", + "time": 1778987207000, + "subject": "test(FN-4789): add initial master key manager tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1a527fa75", + "time": 1778987207000, + "subject": "fix(FN-4789): harden rotation semantics for active backend", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/model-resolution.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "churn-keyword": 1, + "fix+source": 1, + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 58, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "3f061460b", + "time": 1777425677000, + "subject": "fix(FN-2662): honor project model overrides and stabilize tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + }, + { + "sha": "9c2b61eec", + "time": 1779434114000, + "subject": "feat(FN-5204): add test mode activation across settings, engine, and dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4ea9d66b4", + "time": 1781194883000, + "subject": "FN-6219: prefer fresh agent model settings for automatic runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "905d5bf84", + "time": 1781235892000, + "subject": "FN-6228: prioritize project model overrides", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/plugin-contribution-types.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 50, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "b28ae48ff", + "time": 1778073489000, + "subject": "feat(FN-3102): add plugin contribution types, scheduled evaluator, and agen", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "87772e1fb", + "time": 1778481369000, + "subject": "feat(FN-3767): add task runtime env injection into executor commands via pl", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "71822f26d", + "time": 1780890224000, + "subject": "feat(engine): add workflow extension plugin seams", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-ir-settings.test.ts", + "package": "packages/core", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 21, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "04d5e66d2", + "time": 1780635604000, + "subject": "feat(core): workflow IR typed settings declarations with built-in moved-key catalog", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4fe7dbe01", + "time": 1780640628000, + "subject": "feat(core): one-time hard-move migration of workflow-policy settings to workflow setting values", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9c84ba2e9", + "time": 1780950778000, + "subject": "FN-6035: align builtin coding workflow registry with canonical IR", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e22afece5", + "time": 1781236381000, + "subject": "FN-6233: add typed triage policy settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/api-projects.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 65, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 54, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "01aa2681f", + "time": 1778204828000, + "subject": "feat(FN-3504): add path mapping API with core contracts, routes, client hel", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "90cba95bd", + "time": 1782200700000, + "subject": "FN-6933: show stopped engine state in footer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/api-tasks.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 8, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 3, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test+source": 8, + "test-only-churn": 3, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 65, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 54, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9b56e521e", + "time": 1778115263000, + "subject": "docs(FN-3421): document branch field plumbing architecture", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "935166dbb", + "time": 1778137534000, + "subject": "feat(FN-3450): add mesh task create replication across nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19584fcde", + "time": 1778183253000, + "subject": "feat(FN-3428): add project-node path mapping APIs and agent detail review-b", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c2b01ffab", + "time": 1778188244000, + "subject": "test(api): add triggerInsightRun model params tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cd97d0837", + "time": 1778347865000, + "subject": "feat(FN-3168): add plugin routes wiring and listTasksModifiedSince contract", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/detail-body-mobile-overflow.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "fix": 2, + "added": 1, + "test-only-churn": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 77, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "7cd9cc975", + "time": 1775772138000, + "subject": "fix(FN-1331): prevent horizontal scroll in task modal logs panel on mobile", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + }, + { + "sha": "4c3356517", + "time": 1776184137000, + "subject": "feat(FN-1648): merge fusion/fn-1648", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "88171eb5b", + "time": 1777928727000, + "subject": "feat(FN-3308): fix CSS token consistency in settings and task detail modals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mobile-input-font-size.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 87, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "317e6603a", + "time": 1774885107000, + "subject": "feat(KB-131): add mobile-safe task entry input with regression tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "3af3adbc4", + "time": 1775637967000, + "subject": "feat(FN-1107): establish dashboard mobile CSS foundation", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "95f582f8a", + "time": 1777411555000, + "subject": "fix(FN-2838): prevent mobile zoom on dashboard form inputs", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "444032c58", + "time": 1777616669000, + "subject": "feat(FN-3042): scale board typography and improve theme selector accessibil", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1bc17b637", + "time": 1779593058000, + "subject": "feat(FN-5569): merge fusion/fn-5569", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mobile-scroll-snap.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 2, + "test+source": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 89, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "01e1bdab3", + "time": 1774729823000, + "subject": "feat(KB-167): add mobile scroll-snap CSS to board columns", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f5e717695", + "time": 1774729823000, + "subject": "feat(KB-170): CSS scroll-snap center alignment for board columns", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "01024a9d7", + "time": 1775281200000, + "subject": "feat(FN-817): add expand button and swipe-friendly touch behavior for board cards", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e7f7965aa", + "time": 1778599663000, + "subject": "fix(FN-001): update stale mobile-scroll-snap test and add AGENTS.md pitfall note", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "1bc17b637", + "time": 1779593058000, + "subject": "feat(FN-5569): merge fusion/fn-5569", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/styles-css-rgba-tokenization.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 15, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "49fdd8f41", + "time": 1781099336000, + "subject": "FN-6190: replace remaining raw rgba styles with color-mix tokens", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "4ed84be7d", + "time": 1782199255000, + "subject": "fix(FN-6950): polish dashboard modal and chat chrome", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MergeDetails.test.tsx", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 86, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "ace0732a1", + "time": 1774993435000, + "subject": "test(KB-601): add test for pause/unpause with missing directory", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fce5e6c1e", + "time": 1775011815000, + "subject": "feat(KB-334): change default task prefix from KB to FN", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "92721f41f", + "time": 1778872072000, + "subject": "test(FN-4647): complete Step 5 — add done-task diff labeling regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ModelSelectionModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 31, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 86, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "fbedd0dd8", + "time": 1775005226000, + "subject": "test(KB-627): add ModelSelectionModal tests and update QuickEntryBox tests for modal integration", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "40b89f4ec", + "time": 1775272236000, + "subject": "feat(FN-807): add model preset selection to QuickEntryBox and InlineCreateCard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "52fe1289c", + "time": 1777231510000, + "subject": "feat(FN-2597): merge fusion/fn-2597 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TodoView.mobile-css.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 55, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "58d6dfbc1", + "time": 1777667273000, + "subject": "feat(FN-3063): restructure todo item rows and improve action row styling", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1c0aef28c", + "time": 1778174868000, + "subject": "feat(FN-3702): fix todo mobile layout keyboard handling and modal row heigh", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1bc17b637", + "time": 1779593058000, + "subject": "feat(FN-5569): merge fusion/fn-5569", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e67dd11b5", + "time": 1782073540000, + "subject": "FN-6829: dock todos as a project view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowColumnPanel.test.tsx", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 12, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "fcb7444e0", + "time": 1781393428000, + "subject": "FN-6400: theme workflow column controls", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "64936609a", + "time": 1782154733000, + "subject": "fix(dashboard): show workflow minimap and theme column controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/context/__tests__/NodeContext.test.tsx", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 64, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "85a1adbd0", + "time": 1776903147000, + "subject": "feat(FN-2269): migrate dashboard session selection to global settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useExecutorStats.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "churn-keyword": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 31, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 84, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "30de037c3", + "time": 1775151471000, + "subject": "feat(FN-684): complete Step 2 — create useExecutorStats hook with tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fa8c63766", + "time": 1775234426000, + "subject": "fix(FN-782): fix footer status bar count derivation and sync with board view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d6e30300a", + "time": 1775288121000, + "subject": "feat(FN-822): unify stuck-task detection with configurable project timeout", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "90cba95bd", + "time": 1782200700000, + "subject": "FN-6933: show stopped engine state in footer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/truncatePath.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 62, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "83ad6e45a", + "time": 1777441431000, + "subject": "feat(FN-2921): merge fusion/fn-2921", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "af036992e", + "time": 1777454589000, + "subject": "feat(FN-2946): merge fusion/fn-2946", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/worktreeGrouping.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 62, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "42c27fcc3", + "time": 1777473323000, + "subject": "fix(FN-XXX): harden windows path handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/planning-board-tools.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 41, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "f522d79e5", + "time": 1778870823000, + "subject": "feat(FN-4620): complete Step 1 — add shared planning board tools", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "24076970b", + "time": 1779073776000, + "subject": "feat(FN-4926): add fn_task_list regression tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "593ebac85", + "time": 1781733175000, + "subject": "FN-6573: guard task-list formatter resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4929198b5", + "time": 1781778297000, + "subject": "FN-6629: Lower task-list text budget", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/server.events.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 77, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "34f780e63", + "time": 1775816145000, + "subject": "feat(FN-1412): add plugin lifecycle event relay over dashboard SSE", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ca6094acf", + "time": 1776192232000, + "subject": "feat(FN-1747): merge fusion/fn-1747", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ae988d0ef", + "time": 1777285319000, + "subject": "feat(FN-2673): stream automation schedule events over SSE", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/docker-node-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix+source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 54, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "2522b1991", + "time": 1777786428000, + "subject": "feat(FN-3108): deliver docker node onboarding and node workflow updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c1f711b92", + "time": 1778796337000, + "subject": "test(FN-4530): extend engine mocks for integrated route imports", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-action-gate-project-default.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "5cf13392d", + "time": 1778789769000, + "subject": "feat(FN-4488): complete Step 2 — engine project-default wiring", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3bd4539a2", + "time": 1778789770000, + "subject": "fix(FN-4488): align policy typing across gate resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "73b5e70a4", + "time": 1778856922000, + "subject": "test(FN-4603): complete Step 3 — cover web fetch network_api gating", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-skills-flow.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 72, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "924673f97", + "time": 1776196849000, + "subject": "feat(FN-1811): merge fusion/fn-1811", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "149134aaf", + "time": 1776618813000, + "subject": "feat(FN-2104): merge fusion/fn-2104", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a0d99391b", + "time": 1777148462000, + "subject": "feat(FN-2508): merge fusion/fn-2508", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/builtin-coding-browser-verification-group.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "5506fcc0f", + "time": 1782093298000, + "subject": "feat(FN-6880): migrate built-in browser-verification to an optional-group (U6)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e4a810e9b", + "time": 1782100051000, + "subject": "fix(FN-6880): address PR review feedback (#1712)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-column-agent-custom-node.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "d88bfc4c7", + "time": 1780642402000, + "subject": "feat(engine): custom workflow nodes run as their column's agent", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7a4f6aa50", + "time": 1780644772000, + "subject": "test(engine): column-agent surface matrix, parity invisibility proof, docs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d05d5f575", + "time": 1780646269000, + "subject": "fix(review): apply autofix feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-column-agent-seams.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "4fa54075a", + "time": 1780643102000, + "subject": "feat(engine): execute and step-execute sessions run as the column agent", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7a4f6aa50", + "time": 1780644772000, + "subject": "test(engine): column-agent surface matrix, parity invisibility proof, docs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d05d5f575", + "time": 1780646269000, + "subject": "fix(review): apply autofix feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-workflow-step-scope.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 43, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "540c5e16d", + "time": 1778727811000, + "subject": "feat(FN-4343): complete Step 2 — dual-signal frontend ux auto-skip", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a3b505e2c", + "time": 1778727811000, + "subject": "feat(FN-4343): complete Step 3 — enforce workflow step scope invariants", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e246076a7", + "time": 1778727811000, + "subject": "fix(FN-4343): isolate workflow-step scope checks to post-step delta", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "95d742abb", + "time": 1778762112000, + "subject": "feat(FN-4468): add workflow step gateMode advisory gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "656744fb9", + "time": 1779116826000, + "subject": "test(FN-5039): stabilize workflow scope tests under attribution filtering", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/gating-classifications.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 5, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 3, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "test-only-churn": 3, + "fix": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 48, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "f09c62959", + "time": 1778273018000, + "subject": "feat(FN-3751): unify agent action gating classifications across permanent a", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "867df0414", + "time": 1778507262000, + "subject": "feat(FN-3976): reclassify github import action gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "df993ada4", + "time": 1778790464000, + "subject": "test(FN-4517): update gating classification snapshot", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "73b5e70a4", + "time": 1778856922000, + "subject": "test(FN-4603): complete Step 3 — cover web fetch network_api gating", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "acd05ce7a", + "time": 1778856922000, + "subject": "fix(FN-4603): relax exempt-set includes typing in parity test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "8f7697198", + "time": 1778901898000, + "subject": "test(FN-4624): add worktrunk installer tests and gating classification tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-conflict-resolution.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 50, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 45, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "de1e13d22", + "time": 1778534686000, + "subject": "feat(FN-4014): split merger monolith into domain-specific test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "292bf0738", + "time": 1780178764000, + "subject": "FN-5752: flush merger agent logs before disposing sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-rebase-base-sha.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 42, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "3623697b5", + "time": 1778803457000, + "subject": "feat(FN-4518): complete Step 2 — persist rebase merge base SHA", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6c542462e", + "time": 1778889000000, + "subject": "feat(FN-4688): complete Step 1 — ungate rebase base persistence", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pi-prompt-with-fallback-recursion.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 39, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "890494d00", + "time": 1779034048000, + "subject": "test(FN-4900): add failing recursion regression", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6e2f4274f", + "time": 1779034048000, + "subject": "fix(FN-4900): stop standalone promptWithFallback redispatch loop", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/auto-recovery-contamination.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 42, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "650e6443f", + "time": 1778822204000, + "subject": "test(FN-4545): add reliability interaction coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ad73d7658", + "time": 1778887182000, + "subject": "feat(FN-4640): complete Step 6 — dashboard sandbox audit surface", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b5ed3d0c9", + "time": 1779062821000, + "subject": "feat(FN-4887): complete Step 2-3 — add foreign-only recovery sweep and shared handler", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/in-review-stalled-detector.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 38, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "802922745", + "time": 1779188089000, + "subject": "test(FN-5093): complete Step 5 — add reliability interaction backstop", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "7a9d2b0f3", + "time": 1781023288000, + "subject": "fix(FN-6086): preserve merge-queued review tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/lease-recovery-central-claim.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 40, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "6fa9aef63", + "time": 1778991964000, + "subject": "feat(FN-4823): complete lease recovery central-claim reconciliation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a9dfb17b3", + "time": 1778991964000, + "subject": "test(FN-4823): expand central-claim recovery coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a8a413cc9", + "time": 1779132681000, + "subject": "feat(FN-5009): merge fusion/fn-5009", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1a5aff9c4", + "time": 1779328178000, + "subject": "feat(FN-5337): remove speculative orphan requeue from self-healing sweep", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/stale-self-owned-session-registry.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 39, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "f6ec25b5f", + "time": 1779070902000, + "subject": "test(FN-4976): add reliability backstop for self-owned session-registry deadlock", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f79837869", + "time": 1779339182000, + "subject": "feat(FN-5346): add post-completion defensive backstop and shared reconcile", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cf0101be7", + "time": 1779379583000, + "subject": "fix(FN-5256): keep live task worktrees through pause/resume races", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "09bd01baf", + "time": 1782101240000, + "subject": "feat(workspace): Phase A U1 — executor session scoping for workspace mode", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/restart-recovery-coordinator.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "test-only-churn": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 46, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "46e5f517d", + "time": 1778452405000, + "subject": "feat(FN-3934): add restart recovery coordinator", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0d6115f45", + "time": 1778481370000, + "subject": "feat(FN-3972): recover in-review tasks with missing worktrees", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d7093deda", + "time": 1778597230000, + "subject": "feat(FN-4031): recover stale review sessions and unblock dependent tasks on", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "75bebda87", + "time": 1778825927000, + "subject": "test(FN-4564): complete Step 2 — cover all worktree error variants", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5a9de72b3", + "time": 1778874701000, + "subject": "feat(FN-4651): complete Step 2 — split predicates and persist retry counter", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "ebd0be13d", + "time": 1778874701000, + "subject": "feat(FN-4651): complete Step 3 — recover no-progress worktree failures", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/scheduler-auto-claim-invalidation.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 43, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "f86061865", + "time": 1778746247000, + "subject": "feat(FN-4401): complete remaining auto-claim snapshot integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a8a413cc9", + "time": 1779132681000, + "subject": "feat(FN-5009): merge fusion/fn-5009", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f74c0d510", + "time": 1779201912000, + "subject": "test(FN-5137): complete Step 4-6 — soft-delete regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "59bebf080", + "time": 1779346137000, + "subject": "feat(FN-5430): gate task update invalidation in scheduler", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-ghost-branch-recovery.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 42, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "267ca8a43", + "time": 1778801607000, + "subject": "test(FN-4508): add stale-resolved and ghost-branch recovery regressions", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "fd202e935", + "time": 1779320607000, + "subject": "feat(FN-5329): remove orphan rescue and branch-recovery primitives from eng", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-orphan-only-scope.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 43, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "d0a748b68", + "time": 1778707343000, + "subject": "test(FN-4379): complete Step 4 — orphan-only scope unit coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "d53110cd0", + "time": 1778870495000, + "subject": "test(FN-4648): complete Step 4 — regression coverage updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/task-agent-sync.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 42, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "f7e5aec4f", + "time": 1778762135000, + "subject": "test(FN-4296): complete Step 4 — add agent link drift regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b5b7ca9b0", + "time": 1778762135000, + "subject": "feat(FN-4296): complete Step 5 — finalize sync wiring and verification fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fe536b2af", + "time": 1782235850000, + "subject": "FN-6954: reconcile stale parked task assignments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-paths.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 41, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "f00df58eb", + "time": 1778861998000, + "subject": "feat(FN-4606): complete Step 2 — add worktree path resolver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a2245e195", + "time": 1778899068000, + "subject": "test(FN-4623): cover backend layout resolution paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4e4fad5c8", + "time": 1778915958000, + "subject": "test(FN-4715): complete Step 2 — add default invariant regressions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "283adce4d", + "time": 1781293774000, + "subject": "FN-6295: move AI merge clean rooms into worktrees", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/process-manager.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 4, + "positiveCount": 5, + "negativeCount": 3, + "neutralCount": 1, + "timesTouched": 9, + "testOnlyCount": 3, + "testOnlyRatio": 0.333, + "signalTally": { + "added": 1, + "test-only-churn": 3, + "churn-keyword": 1, + "fix+source": 1, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 50, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 62, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "74ebd238e", + "time": 1777084760000, + "subject": "chore: add pi-claude-cli + plugin-sdk __tests__/ dirs (test consolidation)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "dfd82b144", + "time": 1777242819000, + "subject": "feat(FN-2618): merge fusion/fn-2618", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7960b3d4c", + "time": 1777425801000, + "subject": "fix(FN-2897): harden npm bundle packaging and merge recovery flows", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "0c9d9be85", + "time": 1777426721000, + "subject": "feat(FN-2898): expand Claude model coverage and subprocess diagnostics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f25aad9ff", + "time": 1777453655000, + "subject": "feat(FN-2938): merge fusion/fn-2938", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "abf5dac4a", + "time": 1777568513000, + "subject": "test(pi-claude-cli): cover async CLI validation probes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/setup-test-isolation.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 4, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 60, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "3bdb6a044", + "time": 1777239101000, + "subject": "feat(FN-2614): merge fusion/fn-2614 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "42c27fcc3", + "time": 1777473323000, + "subject": "fix(FN-XXX): harden windows path handling", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowSwitcher.test.tsx", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 2, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "test-only-churn": 2, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 6, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "7eceec00c", + "time": 1781946516000, + "subject": "FN-6763: add themed workflow status switcher", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5d9162e13", + "time": 1782012978000, + "subject": "FN-6806: show workflow counts only when expanded", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3c6db0827", + "time": 1782015376000, + "subject": "FN-6805: color workflow counts by column", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0a04feec9", + "time": 1782024193000, + "subject": "FN-6825: combine workflow actions in switcher", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2f7905386", + "time": 1782073541000, + "subject": "FN-6848: refresh workflow dropdown counts on open", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2db99ec6f", + "time": 1782095031000, + "subject": "FN-6894: widen workflow switcher menus", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 39, + "positiveCount": 26, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 32, + "testOnlyCount": 6, + "testOnlyRatio": 0.188, + "signalTally": { + "added-with-source": 1, + "test+source": 18, + "test-only-churn": 6, + "fix+source": 7, + "quarantine-ledger": 1 + }, + "durationMs": 800, + "testCount": 61, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 20, + "ageDays": 77, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "e95c4f1f9", + "time": 1775807327000, + "subject": "feat(FN-1360): add chat API with AI agent and SSE streaming", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "763848eb7", + "time": 1776242981000, + "subject": "feat(FN-1549): simplify chat creation with agent-only selection and auto title", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cff03f11a", + "time": 1776302585000, + "subject": "feat(FN-1675): merge fusion/fn-1675", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ae4254b5e", + "time": 1776303039000, + "subject": "feat(FN-1736): add projectId scoping to chat session creation", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "eb5b9534e", + "time": 1776303486000, + "subject": "feat(FN-1844): merge fusion/fn-1844", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "df7362236", + "time": 1776343654000, + "subject": "fix(FN-1817): enrich session list with lastMessagePreview and restore active session on remount", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskForm.test.tsx", + "package": "packages/dashboard", + "valueScore": 56.5, + "positiveCount": 36, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 41, + "testOnlyCount": 1, + "testOnlyRatio": 0.024, + "signalTally": { + "added-with-source": 1, + "test+source": 31, + "fix": 3, + "fix+source": 5, + "test-only-churn": 1, + "churn-keyword": 4 + }, + "durationMs": 1100, + "testCount": 70, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 19.1, + "ageDays": 84, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "f72924c7a", + "time": 1775184021000, + "subject": "feat(FN-734): extract reusable TaskForm component and integrate into modals", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "70ef237bc", + "time": 1775186795000, + "subject": "feat(FN-752): wire up model favorites across dashboard components", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "881674b19", + "time": 1775242729000, + "subject": "feat(FN-781): reposition AI-assisted creation controls adjacent to description field", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d9515c0c7", + "time": 1775286256000, + "subject": "fix(FN-819): remove stale tests and add regression coverage for new-task surfaces", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "81e61f76f", + "time": 1775294516000, + "subject": "feat(FN-836): add workflow step reorder UX in TaskForm", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c85c3e4ec", + "time": 1775349378000, + "subject": "feat(FN-837): add workflow step phase support with pre-merge and post-merge execution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/Lane.test.tsx", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 2, + "test+source": 3 + }, + "durationMs": 200, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 19, + "ageDays": 22, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "3aa8d2d28", + "time": 1780562991000, + "subject": "feat(dashboard): flag-gated multi-lane board — lane per workflow, trait-keyed columns, typed drag rejections, hold promote (U9)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e13897103", + "time": 1780900216000, + "subject": "fix: stabilize workflow board and loop recovery", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "d8a015e22", + "time": 1780904984000, + "subject": "fix(FN-0000): show auto-merge on workflow review columns", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "59c613cf3", + "time": 1780993787000, + "subject": "FN-6052: move hold-task promote action into task cards", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "34d889f04", + "time": 1781034680000, + "subject": "FN-6115: remove workflow lane chevron icon", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "17312c9fa", + "time": 1781034680000, + "subject": "FN-6118: make workflow lane headers tappable", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-soul-memory.test.ts", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 19, + "ageDays": 78, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "9cb4d3f32", + "time": 1775678412000, + "subject": "feat(FN-1171): add agent soul memory and employees workflows", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "55bfbea71", + "time": 1776656893000, + "subject": "feat(FN-2150): add agent memory file management", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-task-done-invariant.test.ts", + "package": "packages/engine", + "valueScore": 25.5, + "positiveCount": 12, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 1, + "testOnlyRatio": 0.077, + "signalTally": { + "added": 1, + "test+source": 5, + "test-only-churn": 1, + "fix+source": 6 + }, + "durationMs": 500, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.9, + "ageDays": 43, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "2531dff12", + "time": 1778678975000, + "subject": "test(FN-4114): complete Step 4 — add invariant and liveness regression tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "951d8f6fe", + "time": 1778777955000, + "subject": "feat(FN-4371): complete Step 2 — executor no-commits guard flag", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "93b11c6c0", + "time": 1779264068000, + "subject": "feat(FN-5241): add atomic in-review handoff seam with executor/self-healing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cb128f582", + "time": 1781301519000, + "subject": "test(FN-424): cover plan-only no-commit finalization", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "35502afdb", + "time": 1781301520000, + "subject": "fix(FN-424): align no-commit regression fixtures", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskCard.test.tsx", + "package": "packages/dashboard", + "valueScore": 201, + "positiveCount": 150, + "negativeCount": 50, + "neutralCount": 1, + "timesTouched": 201, + "testOnlyCount": 35, + "testOnlyRatio": 0.174, + "signalTally": { + "added": 1, + "test-only-churn": 35, + "test+source": 136, + "churn-keyword": 16, + "fix": 8, + "fix+source": 21 + }, + "durationMs": 3700, + "testCount": 222, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.3, + "ageDays": 92, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "43cc7e7f0", + "time": 1774487467000, + "subject": "test(HAI-015): complete Step 3 — add TaskCard agent-active tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "239ec0a53", + "time": 1774490565000, + "subject": "test(HAI-025): complete Step 2 — add column-based agent-active test cases", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "30f6e902c", + "time": 1774495020000, + "subject": "feat(HAI-045): normalize queued status for file-scope-deferred tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "35177f448", + "time": 1774497011000, + "subject": "feat(HAI-055): add failed task status handling with retry support", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "b5075f7d6", + "time": 1774497580000, + "subject": "feat(HAI-063): add dependency tooltip to TaskCard badge", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cac3bad36", + "time": 1774498103000, + "subject": "fix(HAI-067): fix tooltip stacking context and background variable", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/prompt-overrides.test.ts", + "package": "packages/core", + "valueScore": 4.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 39, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.2, + "ageDays": 77, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "a9e8073d2", + "time": 1775784089000, + "subject": "feat(FN-1423): add promptOverrides to project settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c1bb1adce", + "time": 1775852549000, + "subject": "feat(FN-1269): add Routine Engine Integration and fix PROMPT_KEY_CATALOG", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e2fe909d2", + "time": 1775874742000, + "subject": "feat(FN-1446): wire planning + subtask prompt override resolution with regression tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "87e22f16a", + "time": 1775946183000, + "subject": "feat(FN-1445): add project-scoping and fallback handling for AI routes and missions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "00de40da9", + "time": 1777609256000, + "subject": "feat(FN-3025): add agent onboarding flow with launch gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/debug-execfile.test.ts", + "package": "packages/dashboard", + "valueScore": 4.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix": 1, + "added": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.2, + "ageDays": 74, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "b2e25c08b", + "time": 1776021186000, + "subject": "fix(FN-1473): recover no-progress task_done failures", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + }, + { + "sha": "f85b12412", + "time": 1778167635000, + "subject": "test(FN-000): resolve dashboard test noise", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/dev-server-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 4.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.2, + "ageDays": 67, + "lastTouched": "2026-05-02", + "evidence": [ + { + "sha": "c7f6b172d", + "time": 1776656893000, + "subject": "feat(FN-2178): add dashboard dev server management flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "687c4ac0c", + "time": 1776656894000, + "subject": "feat(FN-2168): add persistent dev-server dashboard flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0df323434", + "time": 1776656894000, + "subject": "feat(FN-2181): add dashboard dev-server process manager and API routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "99cafa3a4", + "time": 1776724652000, + "subject": "feat(FN-2170): add dev-server preview detection and log viewer flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "422b32410", + "time": 1777011118000, + "subject": "fix(FN-000): stabilize failing tests and trim slow waits", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "1e6714e4d", + "time": 1777762638000, + "subject": "chore(test): add cross-worktree test lock and clean up dev-server test child", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/heartbeat-skills.test.ts", + "package": "packages/engine", + "valueScore": 4.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added": 1, + "test+source": 3, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.2, + "ageDays": 52, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "88171eb5b", + "time": 1777928727000, + "subject": "feat(FN-3308): fix CSS token consistency in settings and task detail modals", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "3f2fadd10", + "time": 1778044715000, + "subject": "feat(engine): gate executor and heartbeat on allowParallelExecution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e004b205d", + "time": 1778044715000, + "subject": "feat(agents): decouple heartbeat from task state, add allowParallelExecution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "324ab5d44", + "time": 1778195375000, + "subject": "feat(FN-3718): add agent workspace memory reader and include workspace memo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "736bbcad4", + "time": 1778678974000, + "subject": "test(FN-4257): update heartbeat skill tests for worktree cwd", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/mission-scheduler.test.ts", + "package": "packages/engine", + "valueScore": 4.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added": 1, + "test+source": 3, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.2, + "ageDays": 85, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "6009ebaf0", + "time": 1775055891000, + "subject": "feat(KB-636): add Missions system for large-scale project planning", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "7fd5704a8", + "time": 1775103908000, + "subject": "Removed unwanted files marked in .gitignore", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d653391d3", + "time": 1775613978000, + "subject": "test(FN-1084): expand mission workflow automated test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4f80cfc50", + "time": 1775783429000, + "subject": "feat(FN-1454): improve mission autopilot and stale recovery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/permanent-agent-gating.test.ts", + "package": "packages/engine", + "valueScore": 4.5, + "positiveCount": 5, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 2, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.2, + "ageDays": 49, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "2e3be32f1", + "time": 1778202432000, + "subject": "feat(FN-3560): add permanent agent gating enforcement in pi with tool class", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4770b1225", + "time": 1778221265000, + "subject": "feat(FN-3561): wire permanent-agent approval context in runtime paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c621562b5", + "time": 1778251779000, + "subject": "feat(FN-3734): add heartbeat readonly gating and action-gate reload endpoin", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fbc47ec49", + "time": 1778265791000, + "subject": "feat(FN-3724): add coordination tools and permanent-agent action gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "867df0414", + "time": 1778507262000, + "subject": "feat(FN-3976): reclassify github import action gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f9f4f6ef", + "time": 1778790464000, + "subject": "test(FN-4517): complete Step 2 — add gating regressions for room posts", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/project-runtime.test.ts", + "package": "packages/engine", + "valueScore": 4.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix": 2, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.2, + "ageDays": 86, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "6307fea20", + "time": 1775013445000, + "subject": "feat(KB-501): implement multi-project runtime architecture with HybridExecutor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0c00194d7", + "time": 1775336348000, + "subject": "fix: repair pre-existing engine test failures from missing pi-ai mock", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0257bdf9d", + "time": 1780595807000, + "subject": "fix(ci): align tests/docs with issue-fix commits (recoveryRehome args, pi-ai mock Unknown/Record, new agent tools doc, hex-pattern comment reword)", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChangesDiffModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 10, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix": 1, + "test+source": 2, + "fix+source": 1 + }, + "durationMs": 200, + "testCount": 47, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.2, + "ageDays": 81, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "14f2b2f35", + "time": 1775422998000, + "subject": "feat(FN-961): add ChangesDiffModal for expanded task change viewing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "34e33e28e", + "time": 1775584023000, + "subject": "fix(FN-1052): fix modal height overflow with calc-based max-height", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "156caf8a3", + "time": 1777344946000, + "subject": "fix(dashboard): card timer matches stats panel + resizable Changes diff modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a41e058be", + "time": 1777481176000, + "subject": "feat(FN-2957): merge fusion/fn-2957", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/CustomModelDropdown.integration.test.tsx", + "package": "packages/dashboard", + "valueScore": 10, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 2, + "test+source": 2 + }, + "durationMs": 200, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.2, + "ageDays": 86, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "d362f36a5", + "time": 1774982370000, + "subject": "feat(KB-314): add OpenAI logo to custom model dropdown with integration tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "57414b585", + "time": 1775794096000, + "subject": "fix(FN-1475): replace Kimi logo with correct Moonshot AI brand mark", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "255847659", + "time": 1777139706000, + "subject": "fix(dashboard): drop the border around the footer folder toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "7b9c78769", + "time": 1777164295000, + "subject": "feat(FN-2529): merge fusion/fn-2529", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "953ac8a88", + "time": 1778128591000, + "subject": "feat(FN-3618): surface provider icons in settings and dropdowns", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/UsageIndicator.test.tsx", + "package": "packages/dashboard", + "valueScore": 48.5, + "positiveCount": 32, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 37, + "testOnlyCount": 4, + "testOnlyRatio": 0.108, + "signalTally": { + "added-with-source": 1, + "added": 1, + "test+source": 27, + "test-only-churn": 4, + "fix+source": 4, + "churn-keyword": 1 + }, + "durationMs": 900, + "testCount": 97, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 18.2, + "ageDays": 88, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "fc3742582", + "time": 1774845969000, + "subject": "feat(KB-039): complete Step 2 — frontend API client and hook for usage data", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c541b928c", + "time": 1774846147000, + "subject": "test(KB-082): update executor tests to expect error field", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "7954c6220", + "time": 1774885841000, + "subject": "feat(KB-153): add usage view mode toggle and provider icons", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4b919fb73", + "time": 1774892654000, + "subject": "feat(KB-168): add usage pace indicator to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2eaf776ff", + "time": 1774903552000, + "subject": "feat(KB-152): add Minimax and Zai providers with usage pace indicators", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "875c75811", + "time": 1774916298000, + "subject": "test(KB-215): add pace integration tests for usage indicators", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SessionNotificationBanner.test.tsx", + "package": "packages/dashboard", + "valueScore": 10.5, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test-only-churn": 1, + "fix": 1, + "test+source": 3, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 17.4, + "ageDays": 78, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "0ff0e3e91", + "time": 1775679508000, + "subject": "feat(FN-1150): add session notification banner for awaiting input", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e4b05b1c4", + "time": 1776026792000, + "subject": "fix(FN-1620): show error sessions in notification banner", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6fe1d01f7", + "time": 1776034900000, + "subject": "fix: improve mission interview UX — banner, dismiss, modal height, multiple choice, resume prompt", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "e10db8139", + "time": 1780647373000, + "subject": "feat(dashboard): cli-agent terminal UI, task-card states, and notification banner support (U11)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github.test.ts", + "package": "packages/dashboard", + "valueScore": 33.5, + "positiveCount": 23, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 27, + "testOnlyCount": 2, + "testOnlyRatio": 0.074, + "signalTally": { + "added-with-source": 1, + "test+source": 21, + "churn-keyword": 2, + "test-only-churn": 2, + "fix": 1, + "fix+source": 2 + }, + "durationMs": 600, + "testCount": 98, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 17.4, + "ageDays": 88, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "5794c301b", + "time": 1774842727000, + "subject": "feat(KB-052): refactor GitHub integration to use gh CLI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7d62a3abc", + "time": 1774851204000, + "subject": "feat(KB-093): add PR-first merge mode with configurable merge strategies", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d928a31bd", + "time": 1774893393000, + "subject": "feat(KB-066): add batch GitHub import with throttled request handling", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "b2c429389", + "time": 1774914084000, + "subject": "feat(KB-064): add batch GitHub badge status fetching", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-companies-parser.test.ts", + "package": "packages/core", + "valueScore": 16.5, + "positiveCount": 11, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 2, + "testOnlyRatio": 0.154, + "signalTally": { + "added-with-source": 1, + "test+source": 9, + "test-only-churn": 2, + "fix+source": 1 + }, + "durationMs": 300, + "testCount": 49, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 17.1, + "ageDays": 79, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "c1fee2bf2", + "time": 1775638909000, + "subject": "feat(FN-1188): add Agent Companies parser and core exports", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c36d54b75", + "time": 1775669728000, + "subject": "feat(FN-1174): migrate agent import flow to agent companies format", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1011866aa", + "time": 1775959352000, + "subject": "feat(FN-1449): complete agent UI field parity with Agent Companies", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9a69ef936", + "time": 1776109769000, + "subject": "feat(FN-1451): complete Step 1 — add core hierarchy import planning", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ca2e085d7", + "time": 1776380712000, + "subject": "feat(FN-1968): add skill manifest previews to agent import", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fce07dacb", + "time": 1776575372000, + "subject": "feat(FN-2101): merge fusion/fn-2101", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/heartbeat-session-prompt.test.ts", + "package": "packages/engine", + "valueScore": 16.5, + "positiveCount": 14, + "negativeCount": 3, + "neutralCount": 1, + "timesTouched": 18, + "testOnlyCount": 1, + "testOnlyRatio": 0.056, + "signalTally": { + "added": 1, + "test+source": 15, + "churn-keyword": 3, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 300, + "testCount": 28, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 17.1, + "ageDays": 52, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "88171eb5b", + "time": 1777928727000, + "subject": "feat(FN-3308): fix CSS token consistency in settings and task detail modals", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "452c31a08", + "time": 1777933300000, + "subject": "feat(FN-3320): add agent configuration tools for settings management", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9da910952", + "time": 1777954882000, + "subject": "feat(FN-3459): enable tool mode for heartbeat agent sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "499417bc8", + "time": 1777987953000, + "subject": "feat(FN-3321): add agent self-improvement service and heartbeat evaluation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "202f88b80", + "time": 1778039258000, + "subject": "refactor(agents): remove terminated AgentState; collapse to paused/error", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f2fadd10", + "time": 1778044715000, + "subject": "feat(engine): gate executor and heartbeat on allowParallelExecution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ScheduledTasksModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 28.5, + "positiveCount": 15, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 16, + "testOnlyCount": 1, + "testOnlyRatio": 0.063, + "signalTally": { + "added-with-source": 1, + "test+source": 9, + "fix+source": 4, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 500, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.9, + "ageDays": 87, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "4c38950e5", + "time": 1774913243000, + "subject": "feat(KB-045): add scheduled tasks automation system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "eab57af28", + "time": 1775815645000, + "subject": "feat(FN-1275): add Routines tab to ScheduledTasksModal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9c31c1136", + "time": 1776268701000, + "subject": "feat(FN-1874): add command/AI prompt type toggle to schedule form simple mode", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "653a25ecd", + "time": 1776299778000, + "subject": "feat(FN-1717): add scope selection controls to dashboard UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0f7bb4efd", + "time": 1776353935000, + "subject": "feat(FN-1924): merge fusion/fn-1924", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/custom-provider-registry.test.ts", + "package": "packages/cli", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 57, + "lastTouched": "2026-06-01", + "evidence": [ + { + "sha": "38f515971", + "time": 1777524164000, + "subject": "feat(FN-2962): merge fusion/fn-2962", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d767e2ecb", + "time": 1779942672000, + "subject": "feat(FN-5601): add OpenAI Responses API type support to custom providers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "130f6f1e9", + "time": 1780329918000, + "subject": "FN-5834: enforce explicit developer-role compatibility for custom providers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/onboard-autolaunch.test.ts", + "package": "packages/cli", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 24, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "641b93263", + "time": 1780344200000, + "subject": "FN-5807: add onboarding auto-launch hook before interactive commands", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e1a35a364", + "time": 1780346036000, + "subject": "FN-5808: skip onboarding auto-launch for non-interactive and existing setups", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d4db0b0b0", + "time": 1780365148000, + "subject": "FN-5847: honor onboarding completion marker in auto-launch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-permission-policy.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "fix+source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 49, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "c177a526f", + "time": 1778180443000, + "subject": "feat(FN-3545): add agent permission policy model and persistence", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "cf5b21992", + "time": 1778789769000, + "subject": "fix(FN-4488): align policy preset tests with custom preset", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2a8ffa442", + "time": 1778854235000, + "subject": "feat(FN-4599): complete Step 1 — export approval gate tool metadata", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "db8c49f0c", + "time": 1778856922000, + "subject": "feat(FN-4603): complete Step 4 — reconcile network_api tool examples", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/duplicate-guard.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 38, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "9b88f1a3e", + "time": 1779158635000, + "subject": "feat(FN-5060): complete Step 3 — extract core duplicate guard helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cae5f9f29", + "time": 1779158635000, + "subject": "fix(FN-5060): correct TaskStore type imports for duplicate guard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/duplicate-intake.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 39, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "77d4a9b46", + "time": 1779090803000, + "subject": "feat(FN-4892): add same-agent duplicate intake helper and store gate", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "51fc82619", + "time": 1779530746000, + "subject": "fix(engine,core): dedup heartbeat-spawned follow-ups by parent task", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/fn-binary-probe.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 54, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "43a9cad3b", + "time": 1777798945000, + "subject": "fix(fusion): prevent nested .fusion roots and safe fn version lookup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/github-tracking.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 47, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "81243b762", + "time": 1778384525000, + "subject": "feat(FN-3869): add github tracking fields and resolver to tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "89e4451c5", + "time": 1778415263000, + "subject": "feat(FN-3920): export repo override regex from github-tracking module", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "63286c29d", + "time": 1778416181000, + "subject": "feat(FN-3921): align dashboard githubTracking with core REPO_OVERRIDE_RE ex", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/model-pricing.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 10, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "4519732b2", + "time": 1781577114000, + "subject": "feat(analytics): U3 — model pricing map + cost derivation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f80a785b9", + "time": 1782073541000, + "subject": "FN-6869: add Codex model pricing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "efb94c862", + "time": 1782202451000, + "subject": "FN-6876: add editable model pricing refresh", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/pi-extensions-format.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 57, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "42c27fcc3", + "time": 1777473323000, + "subject": "fix(FN-XXX): harden windows path handling", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/pr-entity.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 20, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "4ecf3e86f", + "time": 1780705567000, + "subject": "feat(pr): PR entity foundation — schema v109, store CRUD, predicates (U1)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "841ff9d83", + "time": 1780729793000, + "subject": "Address PR review feedback (#1461)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e617ce65d", + "time": 1781577857000, + "subject": "feat(pr): U18 — surface + gate auto-resolution of PR review comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/project-root-guard.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 54, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "43a9cad3b", + "time": 1777798945000, + "subject": "fix(fusion): prevent nested .fusion roots and safe fn version lookup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/reconcile-claude-cli-paths.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 61, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "818bff7d0", + "time": 1777155908000, + "subject": "fix(extensions): always prefer vendored @fusion/pi-claude-cli over external installs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/sqlite-validation.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 57, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "5661188a6", + "time": 1777474738000, + "subject": "fix(FN-0000): harden sqlite startup validation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-title-id-drift.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 39, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "10455b799", + "time": 1779036670000, + "subject": "feat(FN-4898): reconcile task title-id drift in storage migrations", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3a3f4edbe", + "time": 1779101188000, + "subject": "feat(FN-4978): merge fusion/fn-4978", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "896ae7a93", + "time": 1779141680000, + "subject": "feat(FN-5077): merge fusion/fn-5077", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/vitest-processes.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "614bec212", + "time": 1780518818000, + "subject": "fix(tui): stop vitest auto-kill firing on garbage memory metric and killing non-vitest processes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-extension-registry.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "71822f26d", + "time": 1780890224000, + "subject": "feat(engine): add workflow extension plugin seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "01523a658", + "time": 1780892350000, + "subject": "fix(engine): address workflow extension PR feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-ir-extension-metadata.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "71822f26d", + "time": 1780890224000, + "subject": "feat(engine): add workflow extension plugin seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "01523a658", + "time": 1780892350000, + "subject": "fix(engine): address workflow extension PR feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-ir-loop.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "a504238d2", + "time": 1780901785000, + "subject": "feat(FN-0000): add workflow loop nodes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "75867c400", + "time": 1780903190000, + "subject": "fix(FN-0000): address workflow loop review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-ir-optional-group.test.ts", + "package": "packages/core", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "93ea54f77", + "time": 1782091034000, + "subject": "feat(FN-6880): add optional-group container IR kind + validation (U1)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e4a810e9b", + "time": 1782100051000, + "subject": "fix(FN-6880): address PR review feedback (#1712)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/App.shell-onboarding.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 52, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "419c6f3b3", + "time": 1778070596000, + "subject": "feat(FN-3400): add native shell connection handoff, plugin management CLI/l", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7b9e5259d", + "time": 1778204145000, + "subject": "feat(FN-3403): add shell multi-profile support with connection manager onbo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/air-theme.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 6, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "fc0636fe9", + "time": 1781912854000, + "subject": "FN-6748: add Air dashboard theme", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a1cac3a6a", + "time": 1782167023000, + "subject": "fix(dashboard): replace quick chat with modal chat", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/animation-duration-tokens.css.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "2d2024fb0", + "time": 1780541320000, + "subject": "fix(dashboard): unfreeze animations broken by transition tokens used as durations", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/settings-moved-keys.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "3a3360415", + "time": 1780645619000, + "subject": "feat(dashboard): remove moved settings from SettingsModal with workflow-editor redirect stubs, target-IA regroup, secrets/prompts extraction", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6c9a81a05", + "time": 1780649622000, + "subject": "fix(review): apply autofix feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/task-log-entry-display.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 11, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "84cf3ff6e", + "time": 1781470217000, + "subject": "fix(dashboard): guard task detail log entry rendering", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/terminal-mobile-header-row.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 56, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "2bac5d06f", + "time": 1777609614000, + "subject": "fix(dashboard): keep mobile terminal header on a single row", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentMentionPopup.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix": 2, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 69, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "9baa29fd0", + "time": 1776442568000, + "subject": "feat(FN-2000): add memory auto-summarize settings and automation sync", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ef1d4c776", + "time": 1778347865000, + "subject": "feat(FN-3809): normalize mention filtering for underscore handles", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cab3c4970", + "time": 1778425180000, + "subject": "feat(FN-3812): add rooms test scaffolds and coverage across core and dashbo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "24cecb76b", + "time": 1778599724000, + "subject": "fix(FN-4117): render mobile mention popup above the composer", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "ef1a19be1", + "time": 1780176012000, + "subject": "FN-5734: render agent mention popup above input on tablet widths", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentMetricsBar.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 72, + "lastTouched": "2026-04-22", + "evidence": [ + { + "sha": "4fb8e5c49", + "time": 1776190465000, + "subject": "feat(FN-1774): merge fusion/fn-1774", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b4517581c", + "time": 1776876986000, + "subject": "fix(FN-2204): restore tokenized styling in agents views", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentsOverviewBar.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 50, + "lastTouched": "2026-05-06", + "evidence": [ + { + "sha": "8231fef06", + "time": 1778079887000, + "subject": "fix(dashboard): split active vs running counts in agents overview label", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ChatView.default-model-icon.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 38, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "c2596f882", + "time": 1779176795000, + "subject": "test(FN-5108): complete Step 2 — add default model icon coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cfc70b21b", + "time": 1779272384000, + "subject": "feat(FN-5202): add SWR caching for chat agents, skills, and models", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "12a6ee9af", + "time": 1779275560000, + "subject": "feat(FN-5218): add hash mentions to chat composers and popups", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/LoadingSpinner.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 5, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "3b61ac3d2", + "time": 1782039223000, + "subject": "fix: make loading spinners actually spin across the dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MailboxMessageContent.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 48, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "72f8c48de", + "time": 1778298506000, + "subject": "feat(dashboard): render mailbox messages as markdown", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "556db0ba9", + "time": 1778949757000, + "subject": "feat(FN-4736): complete Step 1 — linkify mailbox message content", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8640a747a", + "time": 1782151705000, + "subject": "feat(dashboard): shared markdown renders embedded HTML (sanitized) + mermaid diagrams", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/NativeShellOnboardingModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 52, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "419c6f3b3", + "time": 1778070596000, + "subject": "feat(FN-3400): add native shell connection handoff, plugin management CLI/l", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7b9e5259d", + "time": 1778204145000, + "subject": "feat(FN-3403): add shell multi-profile support with connection manager onbo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskCard.cli-states.test.tsx", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 21, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "e10db8139", + "time": 1780647373000, + "subject": "feat(dashboard): cli-agent terminal UI, task-card states, and notification banner support (U11)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aa8bd3dc9", + "time": 1780967688000, + "subject": "fix(FN-6043): recover stuck task processing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/githubTracking.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 47, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "7850edfcb", + "time": 1778412413000, + "subject": "feat(FN-3918): restore github tracking regex helper and tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "89e4451c5", + "time": 1778415263000, + "subject": "feat(FN-3920): export repo override regex from github-tracking module", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "63286c29d", + "time": 1778416181000, + "subject": "feat(FN-3921): align dashboard githubTracking with core REPO_OVERRIDE_RE ex", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useBoardWorkflows.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "cc2753c8a", + "time": 1782127115000, + "subject": "fix(dashboard): resizers, overlaps, dock pop-out, dedup refactors, live tweaks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useIssueMention.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 40, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "aa3b2cfb4", + "time": 1778948466000, + "subject": "feat(FN-4735): complete Step 4 — add useIssueMention hook", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b5011953c", + "time": 1778948466000, + "subject": "fix(FN-4735): address useIssueMention selection spacing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useNavigationHistory.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 53, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "00a4e5a43", + "time": 1777865832000, + "subject": "feat(FN-3344): add navigation history hook unit and integration tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "efdc6c462", + "time": 1778630673000, + "subject": "feat(FN-4139): add swipe-back navigation to chat, mission, and planning flo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7960789d3", + "time": 1781070270000, + "subject": "FN-6167: fix stale mobile modal navigation history", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useNodes.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 79, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "b9f6f8e56", + "time": 1775629832000, + "subject": "feat(FN-1081): add dashboard nodes management workflow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "65a9371d3", + "time": 1778207394000, + "subject": "feat(FN-3505): add node onboarding mapping flow with asset-gated bundling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b6243d68f", + "time": 1781108508000, + "subject": "FN-6197: suppress tab-resume fetch errors in dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/boardScrollSnapshot.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 3, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "4fd8d444f", + "time": 1782177666000, + "subject": "fix(dashboard): polish app chrome and workflow defaults", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/pathDisplay.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 57, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "42c27fcc3", + "time": 1777473323000, + "subject": "fix(FN-XXX): harden windows path handling", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/auth-middleware.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 72, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "7f86f704b", + "time": 1776250862000, + "subject": "feat(FN-1831): merge fusion/fn-1831", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5a9535327", + "time": 1777210546000, + "subject": "fix(FN-2525): harden remote access auth and tunnel regression coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/badge-pubsub.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 33, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 87, + "lastTouched": "2026-04-01", + "evidence": [ + { + "sha": "4927346f5", + "time": 1774900327000, + "subject": "feat(KB-136): add shared badge pub/sub for multi-instance deployments", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a75b74380", + "time": 1775001803000, + "subject": "feat(KB-335): rename environment variables from KB_* to FUSION_*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/cli-session-output-filter.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "17c9303f2", + "time": 1780641879000, + "subject": "feat(dashboard): cli-agent session transport — WS attach, tickets, SSE state, output hardening (U10)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b9afce306", + "time": 1780656114000, + "subject": "fix(review): schema-version gate, output-filter escape-bypass, generic double-wrap, follow-up resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/experiment-routes.finalize.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 43, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "81b1eae39", + "time": 1778757906000, + "subject": "feat(FN-4222): add experiment-finalize CLI command and API route", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-close-group-pr.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "928b14ae1", + "time": 1780509616000, + "subject": "refactor(FN-branch-group): remove dead cross-unit group-PR helpers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e54417c98", + "time": 1780515805000, + "subject": "fix(FN-branch-group): security, parity, reconcile-on-read, N+1 review residuals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/integrated-routers-group-pr-token.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "e54417c98", + "time": 1780515805000, + "subject": "fix(FN-branch-group): security, parity, reconcile-on-read, N+1 review residuals", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/pr-metadata-generator.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 4, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 39, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "09a18f81b", + "time": 1779088745000, + "subject": "feat(FN-4991): add PR metadata generator helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cf8062287", + "time": 1780889933000, + "subject": "FN-5993: prevent PR metadata generation hangs", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "e623340e7", + "time": 1780950778000, + "subject": "FN-5994: restore project summarization model settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d3593065e", + "time": 1782369171000, + "subject": "FN-6960: bound PR metadata generation", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/register-settings-sync-helpers.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 60, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "65956ee85", + "time": 1777228544000, + "subject": "fix(sync): merge auth providers across all candidate files", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/reliability-metrics.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 43, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "e79123038", + "time": 1778736423000, + "subject": "feat(FN-4360): complete Step 1 — add reliability aggregation helpers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc5061afd", + "time": 1778863977000, + "subject": "feat(FN-4608): complete Step 2 — handle empty-sample reliability days", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "507da28fb", + "time": 1779085294000, + "subject": "feat(FN-4908): complete Step 3 — switch reliability route to SQL aggregations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/shared-branch-group-entry-points.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "churn-keyword": 2, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 24, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "5af7eeb60", + "time": 1780320975000, + "subject": "FN-5823: add shared-branch-group entry-point verification coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "66ca583ec", + "time": 1780503471000, + "subject": "fix(FN-branch-group): stamp real BG- id into branchContext.groupId (U1)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c12e7e39f", + "time": 1781476175000, + "subject": "FN-6444: rescue dashboard route API tests", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/sse-chat-rooms.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 47, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "05016de3d", + "time": 1778347865000, + "subject": "fix(FN-3808): increase create-room member role typography", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/status-bar.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 79, + "lastTouched": "2026-05-03", + "evidence": [ + { + "sha": "a48232c91", + "time": 1775631669000, + "subject": "feat(FN-1116): add Capacitor plugin managers for dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b8672cf79", + "time": 1775661017000, + "subject": "refactor(FN-1240): remove dashboard Capacitor coupling in favor of @fusion/mobile", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "27fb55700", + "time": 1777770698000, + "subject": "perf(test): run dashboard src tests in node env, app tests in jsdom", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/register-task-workflow-routes.merge-advance-events.test.ts", + "package": "packages/dashboard", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 35, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "0f6f0263f", + "time": 1779401185000, + "subject": "feat(FN-5352): merge fusion/fn-5352", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "dc944949b", + "time": 1779574397000, + "subject": "fix(engine,dashboard): close 7 review findings on merger auto-sync", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/active-session-registry.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 2, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "churn-keyword": 2, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 40, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "69d7b282c", + "time": 1778975701000, + "subject": "feat(FN-4811): complete Step 1 — add active session registry wiring", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3a53c6778", + "time": 1779066641000, + "subject": "feat(FN-4973): complete Step 1 — add stale self-owned registry reconcile helper", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f79837869", + "time": 1779339182000, + "subject": "feat(FN-5346): add post-completion defensive backstop and shared reconcile", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cf0101be7", + "time": 1779379583000, + "subject": "fix(FN-5256): keep live task worktrees through pause/resume races", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "627bdcfb0", + "time": 1782115912000, + "subject": "fix(review): Phase C merge-loop hardening — double-land, lease clobber, retry storm", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-workflow-tools-exposure.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "8a5fa66de", + "time": 1780638889000, + "subject": "feat(engine,dashboard): expose workflow authoring tools to chat and planning agents", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a47ea3f7a", + "time": 1780646751000, + "subject": "fix(review): strip approval-bypass flags in agent workflow authoring for chat/planning lanes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-soft-delete-abort.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 37, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "ab0a25300", + "time": 1779264966000, + "subject": "feat(FN-5264): abort in-flight executor/merge/triage work on soft-delete (F", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7d25d98b2", + "time": 1779383678000, + "subject": "fix(FN-5256): await disposal across task:moved-away and task:deleted", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-task-done-premise-stale.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 34, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "838002491", + "time": 1779514472000, + "subject": "fix(executor): bypass summary-incomplete refusal for PREMISE STALE: summaries", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-workspace-concurrent-session.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 1, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "f06281961", + "time": 1782339223000, + "subject": "fix(workspace): persist workspaceWorktrees and isolate concurrent session leases", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/fallback-model-observer.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 53, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "a3ce8e1f8", + "time": 1777874885000, + "subject": "fix(FN-XXX): unify codex auth and chat fallback", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/goal-injection-diagnostics-wiring.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 27, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "ee0b1cd9c", + "time": 1780113008000, + "subject": "FN-5658: add goal injection visibility diagnostics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d98ff8780", + "time": 1780203246000, + "subject": "FN-5759: inject active-goal context across engine lanes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "866d01f53", + "time": 1780525949000, + "subject": "FN-5959: bridge task goal provenance from mission links", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/group-pr-sync-on-landing.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "64d02b510", + "time": 1780532531000, + "subject": "fix(FN-branch-group): address third-round PR review feedback (#1357)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/heartbeat-procedure-resolver.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "f276610bd", + "time": 1778754222000, + "subject": "feat(FN-4394): complete Step 3 — add heartbeat scope resolver helpers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7d7f23c1a", + "time": 1778754222000, + "subject": "feat(FN-4394): complete Step 4 — wire heartbeat scope resolver into runs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a47904d96", + "time": 1778758362000, + "subject": "feat(FN-4400): complete Step 3 — add heartbeat prompt template resolver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/heartbeat-prompt-trim.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "5c9a1b046", + "time": 1778758362000, + "subject": "feat(FN-4400): complete Step 4 — add heartbeat prompt trim helpers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "146f0668c", + "time": 1778758363000, + "subject": "fix(FN-4400): preserve triggering comment headings in trim helper", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-ai-merge-body.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 28, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "aa7eccbad", + "time": 1780032235000, + "subject": "FN-5642: add AI-generated merge commit body summaries", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c89ad28e7", + "time": 1780041317000, + "subject": "FN-5646: preserve AI body when canonicalizing merge commits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "905d5bf84", + "time": 1781235892000, + "subject": "FN-6228: prioritize project model overrides", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/mission-autopilot.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 5, + "negativeCount": 3, + "neutralCount": 1, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 4, + "added-with-source": 1, + "test+source": 6, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 63, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 81, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "b89825054", + "time": 1775455888000, + "subject": "feat(FN-980): add mission autopilot for autonomous slice progression", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "1afa5938f", + "time": 1775661753000, + "subject": "feat(FN-1217): add mission observability events and APIs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dfa109742", + "time": 1775667666000, + "subject": "feat(FN-1218): harden mission autopilot with self-healing recovery", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "a16568a75", + "time": 1775762511000, + "subject": "fix(FN-1187): integration fixes for mission health and type updates", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "b5b37c4fa", + "time": 1775767519000, + "subject": "refactor(FN-1353): simplify mission autopilot to single toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "428b8f7b1", + "time": 1776032007000, + "subject": "Harden architecture hot paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/node-routing-policy.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 0, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 57, + "lastTouched": "2026-04-30", + "evidence": [ + { + "sha": "fd4353f02", + "time": 1777490238000, + "subject": "feat(FN-2950): merge fusion/fn-2950", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7cb9d2012", + "time": 1777498610000, + "subject": "feat(FN-2951): enforce unavailable-node scheduling and improve active agents panel", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8a92042fc", + "time": 1777509039000, + "subject": "feat(FN-2956): merge fusion/fn-2956", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/parse-porcelain-z.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 50, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "9a8311729", + "time": 1778115859000, + "subject": "fix(merger): address code-review findings on autostash + observer", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/prompt-layers.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 46, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "2f2798e81", + "time": 1778443411000, + "subject": "feat(engine): add SystemPromptLayers type and builder for cross-session caching", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7a299ca54", + "time": 1778443412000, + "subject": "fix(engine): preserve memory-before-instructions ordering in dynamic layer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/mission-stranded-feature-retriage.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 26, + "lastTouched": "2026-06-15", + "evidence": [ + { + "sha": "0e0b17f3c", + "time": 1780184835000, + "subject": "FN-5754: re-triage stranded features in active mission slices", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "283f689d8", + "time": 1781490415000, + "subject": "fix(engine): retriage stale mission feature links", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/research-orchestrator.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 2, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 57, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "a227d5b30", + "time": 1777535317000, + "subject": "feat(FN-2992): merge fusion/fn-2992", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f2fa44e27", + "time": 1777824664000, + "subject": "feat(FN-2999): harden research lifecycle with idempotent cancel/retry, SSE", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "3a97bf238", + "time": 1777925877000, + "subject": "feat(FN-3292): document research boundary contract", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8541db318", + "time": 1781305032000, + "subject": "fix(engine): normalize dashboard research providers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reviewer-prompt-layers.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 46, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "b01a360a5", + "time": 1778443412000, + "subject": "feat(engine): reviewer uses prompt layers for cross-session caching", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aed62b0dd", + "time": 1778443412000, + "subject": "fix(engine): address PR review — remove dead skill scoping, fix memory layer placement, clarify JSDoc, sort builtin allowlist, remove redundant tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reviewer-workspace.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "81edbeefb", + "time": 1782107080000, + "subject": "feat(workspace): Phase B U2 — per-repo review (both sites) + fn_task_done verify + scope-leak", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "453ed92db", + "time": 1782108166000, + "subject": "fix(review): Phase B workspace hardening — fail-closed scope guard, review conjunction, .changeset carve-out", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/sandbox/bubblewrap-policy.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "b755553bd", + "time": 1778867403000, + "subject": "feat(FN-4637): complete Step 2 — add bubblewrap policy adapter", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3427e8b47", + "time": 1778867403000, + "subject": "fix(FN-4637): harden bubblewrap runner and extend coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/sandbox/sandbox-exec-policy.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 41, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "c087ee4b3", + "time": 1778869124000, + "subject": "feat(FN-4638): complete Step 3 — add sandbox-exec policy adapter", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "08dd73ee1", + "time": 1778869124000, + "subject": "fix(FN-4638): tighten network bind scope and add fusion guard regressions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-cli-sessions.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 21, + "lastTouched": "2026-06-11", + "evidence": [ + { + "sha": "10acf17c6", + "time": 1780643774000, + "subject": "feat(engine): cli-agent resume coordinator and self-healing integration (U8)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8c1639543", + "time": 1781194883000, + "subject": "fix: stop self-healing from reaping worktrees with live sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-leaked-slot-reaper.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 6, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "8e4b9e4f0", + "time": 1781924604000, + "subject": "Add leaked-slot reaper (A2) to self-healing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7eaf51394", + "time": 1781925050000, + "subject": "Address PR #1687 review: harden pause-abort recovery + FNXC comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8c93e2ad6", + "time": 1781926493000, + "subject": "Re-check execution ownership before reaping a leaked slot (PR #1687)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-tempdir-sweep.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 15, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "4032a35a2", + "time": 1781093620000, + "subject": "FN-6188: harden AI merge temp worktree cleanup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d75f861f2", + "time": 1781114222000, + "subject": "FN-6199: harden AI merge worktree cleanup", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3e69d3990", + "time": 1781218489000, + "subject": "FN-6244: protect active AI merge worktrees", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "2085610e9", + "time": 1781272169000, + "subject": "FN-6246: move AI merge clean rooms into repo storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "283adce4d", + "time": 1781293774000, + "subject": "FN-6295: move AI merge clean rooms into worktrees", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-finalize-duplicate-lineage.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 38, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "67d6a292c", + "time": 1779116541000, + "subject": "feat(FN-4899): complete Step 3 — capture duplicate lineage in triage finalize", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c7ae1c1a", + "time": 1779200428000, + "subject": "feat(FN-5131): add lineage-unlink flag to triage parent deletes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c9fd41ef2", + "time": 1779270409000, + "subject": "feat(FN-5175): thread soft-delete audit context and add reconciliation scri", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage-planning-prompt-single-source.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 14, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "1a716f2f9", + "time": 1781194883000, + "subject": "FN-6232: centralize triage planning prompt resolution", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e22afece5", + "time": 1781236381000, + "subject": "FN-6233: add typed triage policy settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "039d3ce44", + "time": 1781300391000, + "subject": "FN-6236: move fast triage into workflow settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-graph-step-rerun.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "fix+source": 2, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "3ebaa321f", + "time": 1780606915000, + "subject": "fix(review): apply code-review fixes — runId/foreachNodeId wiring, worktree-leak cleanup, rework re-execution, instance pruning, SIGKILL fallback, type dedup, board memo split, agent-native field-schema context + fn_workflow_get", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + }, + { + "sha": "6f7f6860b", + "time": 1780615010000, + "subject": "fix: address PR review feedback (#1424)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-merge-nodes.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 14, + "lastTouched": "2026-06-11", + "evidence": [ + { + "sha": "53d644714", + "time": 1781192607000, + "subject": "feat(FN-000): extract workflow merge node capability", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "283c64dfe", + "time": 1781192607000, + "subject": "fix(FN-000): harden workflow merge classification", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-node-handlers.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 25, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "ba81d1f0a", + "time": 1780241521000, + "subject": "FN-5767: wire workflow graph executor to legacy seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ba27e499b", + "time": 1780507593000, + "subject": "feat(engine): executable custom nodes in the workflow graph interpreter (CU-U1)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "44e77fda5", + "time": 1780510050000, + "subject": "feat(engine): graph interpreter owns the full task lifecycle behind the flag (CU-U3, CU-U4)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-step-integration-cwd.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 21, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "6f7f6860b", + "time": 1780615010000, + "subject": "fix: address PR review feedback (#1424)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-acquisition-secrets-env.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 39, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "48caf2814", + "time": 1779085761000, + "subject": "test(FN-4912): complete Step 9 — add env materialization verification coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fbce59b70", + "time": 1782057640000, + "subject": "FN-6777: add artifact registry storage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ec1d29e81", + "time": 1782180668000, + "subject": "FN-6922: guard worktree acquisition returns from repo root", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktrunk-failure-handler.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "743b7a480", + "time": 1778903634000, + "subject": "fix(FN-4625): address step 2 typing and exports", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/notification/__tests__/oauth-expiry-monitor.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 40, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "b48f8f1fa", + "time": 1778964402000, + "subject": "feat(FN-4783): complete Step 2 — add OAuth expiry monitor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9f2993552", + "time": 1780253711000, + "subject": "FN-5778: throttle OAuth expiry notifications per provider", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a1b7556c7", + "time": 1780467196000, + "subject": "FN-5924: throttle OAuth expiry alerts across restarts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/sandbox/__tests__/container.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "d8768a280", + "time": 1778918686000, + "subject": "feat(FN-4642): complete Step 2 — add container backend prototype", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8955db96e", + "time": 1778918687000, + "subject": "fix(FN-4642): harden container backend against child_process mocks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/cli/src/i18n/__tests__/i18n.test.tsx", + "package": "packages/cli", + "valueScore": 11, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 2 + }, + "durationMs": 200, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "454b6cd0e", + "time": 1780500532000, + "subject": "feat(cli): add terminal-UI i18n runtime and upgrade Ink to 7 (U6)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4b0a6df63", + "time": 1780500654000, + "subject": "feat(cli): migrate TUI board strings to i18n (U7)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f707b6215", + "time": 1780501901000, + "subject": "fix(i18n): address code-review findings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "75213bbb0", + "time": 1780514942000, + "subject": "fix(i18n): address PR review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e08a5633f", + "time": 1780516943000, + "subject": "feat(i18n): language reset-to-auto-detect + review nitpicks (#1352)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/command-center/__tests__/charts.test.tsx", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 8, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 8 + }, + "durationMs": 200, + "testCount": 34, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.7, + "ageDays": 10, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "90cfbfb4f", + "time": 1781576597000, + "subject": "feat(dashboard): U4 — Command Center view shell, nav, and chart primitives", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "58a34e9cf", + "time": 1781789108000, + "subject": "FN-6631: fix Command Center completion gauges", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "662a09b63", + "time": 1781819507000, + "subject": "FN-6656: add live activity trend charts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f41732d04", + "time": 1781821677000, + "subject": "FN-6652: add live token usage timeline", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cfddde5a4", + "time": 1781875271000, + "subject": "FN-6699: fix Command Center chart rendering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ee72c942f", + "time": 1781912853000, + "subject": "FN-6715: move Overview funnel below charts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/goals-schema.test.ts", + "package": "packages/core", + "valueScore": 29.5, + "positiveCount": 23, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 29, + "testOnlyCount": 3, + "testOnlyRatio": 0.103, + "signalTally": { + "added-with-source": 1, + "test+source": 23, + "churn-keyword": 3, + "test-only-churn": 3, + "fix": 1, + "fix+source": 1 + }, + "durationMs": 500, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.4, + "ageDays": 28, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "2a3535893", + "time": 1779989536000, + "subject": "feat(FN-5622): add goals REST API with store accessor and route handlers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "71e2aec5b", + "time": 1780068338000, + "subject": "FN-5663: add goal-citation audit trail to agent reasoning", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a312da63e", + "time": 1780073788000, + "subject": "FN-5674: add per-task auto-merge persistence and resolver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b265d6b39", + "time": 1780082717000, + "subject": "FN-5700: remove duplicate task autoMerge declarations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bac12d1e2", + "time": 1780086913000, + "subject": "FN-5695: sync feature assertions for late-added mission features", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0605d13ab", + "time": 1780093547000, + "subject": "FN-5675: add mission branch strategy and planning breakdown controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/InlineCreateCard.test.tsx", + "package": "packages/dashboard", + "valueScore": 78.5, + "positiveCount": 51, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 56, + "testOnlyCount": 3, + "testOnlyRatio": 0.054, + "signalTally": { + "added-with-source": 1, + "test+source": 47, + "fix+source": 5, + "churn-keyword": 2, + "test-only-churn": 3 + }, + "durationMs": 1300, + "testCount": 80, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16.4, + "ageDays": 92, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "c2166723e", + "time": 1774497689000, + "subject": "feat(HAI-064): add blur-to-cancel behavior for empty InlineCreateCard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b0d361cc3", + "time": 1774729823000, + "subject": "feat(KB-156): add search input to dependency dropdowns", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "beab7bd0b", + "time": 1774736148000, + "subject": "fix(KB-183): prevent dep-dropdown clicks from dismissing InlineCreateCard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1a4c34362", + "time": 1774739973000, + "subject": "feat(KB-185): sort dependency dropdown newest-first in InlineCreateCard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ac4166902", + "time": 1774741217000, + "subject": "fix(KB-186): add ID-based tiebreaker to sort comparators for stable ordering", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DevServerView.test.tsx", + "package": "packages/dashboard", + "valueScore": 11.5, + "positiveCount": 8, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 1, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 7 + }, + "durationMs": 200, + "testCount": 23, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16, + "ageDays": 67, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "687c4ac0c", + "time": 1776656894000, + "subject": "feat(FN-2168): add persistent dev-server dashboard flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "18f985a72", + "time": 1776699024000, + "subject": "test(FN-2179): complete Step 6 dev server hook and component tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4aac69dc6", + "time": 1776715198000, + "subject": "feat(FN-2166): persist dev server script configuration across sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f21ed51b9", + "time": 1776722996000, + "subject": "feat(FN-2182): add dashboard dev server management view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "99cafa3a4", + "time": 1776724652000, + "subject": "feat(FN-2170): add dev-server preview detection and log viewer flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9e1d52e42", + "time": 1776739712000, + "subject": "feat(FN-2172): add embedded dev server preview panel", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/server.test.ts", + "package": "packages/dashboard", + "valueScore": 74, + "positiveCount": 43, + "negativeCount": 7, + "neutralCount": 0, + "timesTouched": 50, + "testOnlyCount": 5, + "testOnlyRatio": 0.1, + "signalTally": { + "added-with-source": 1, + "test+source": 32, + "test-only-churn": 5, + "fix+source": 11, + "churn-keyword": 2, + "fix": 1 + }, + "durationMs": 1200, + "testCount": 116, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 16, + "ageDays": 87, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "7e594b395", + "time": 1774938528000, + "subject": "feat(KB-251): complete Step 1 — core types and store updates for AI title generation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a021b3636", + "time": 1774946323000, + "subject": "feat(KB-180): add planning route diagnostics and harden JSON error handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "30b3f1145", + "time": 1774981358000, + "subject": "test(KB-301): fix server.test.ts — update error response assertion to match implementation", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e3055f8d9", + "time": 1775021936000, + "subject": "fix(KB-503): address code review feedback for Step 1", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "4b39bf1f4", + "time": 1775024343000, + "subject": "feat(KB-618): add multi-project support to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useTheme.test.ts", + "package": "packages/dashboard", + "valueScore": 37, + "positiveCount": 24, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 27, + "testOnlyCount": 3, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "test+source": 20, + "fix+source": 2, + "fix": 1, + "test-only-churn": 3 + }, + "durationMs": 600, + "testCount": 56, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.8, + "ageDays": 88, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "6bfdb6bcd", + "time": 1774840920000, + "subject": "feat(KB-024): add comprehensive theme system to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cd7b866da", + "time": 1774851976000, + "subject": "feat(KB-070): add Ayu and One Dark themes to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bce16bd81", + "time": 1774856763000, + "subject": "feat(KB-072): expand dashboard theme system with Factory tokens", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2a914dec8", + "time": 1775295898000, + "subject": "feat(FN-839): add nord, dracula, gruvbox, and tokyo-night color themes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8b2881aad", + "time": 1775674698000, + "subject": "feat(FN-1277): hydrate dashboard theme settings from backend", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/project-engine.test.ts", + "package": "packages/engine", + "valueScore": 50.5, + "positiveCount": 33, + "negativeCount": 7, + "neutralCount": 7, + "timesTouched": 47, + "testOnlyCount": 4, + "testOnlyRatio": 0.085, + "signalTally": { + "added-with-source": 1, + "fix+source": 13, + "test+source": 29, + "test-only-churn": 4, + "churn-keyword": 10 + }, + "durationMs": 800, + "testCount": 80, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.5, + "ageDays": 69, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "9baa29fd0", + "time": 1776442568000, + "subject": "feat(FN-2000): add memory auto-summarize settings and automation sync", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8958d84fb", + "time": 1776618814000, + "subject": "fix(FN-2124): harden swallowed project-engine error paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c5f80a5f6", + "time": 1777161998000, + "subject": "fix(FN-2546): harden scheduled automation catch-up reliability", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0c696f010", + "time": 1777178375000, + "subject": "feat(FN-2571): enforce merger aborts through shutdown and git flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "db9f4ba57", + "time": 1777195228000, + "subject": "feat(FN-2519): add remote tunnel manager for settings sync", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/auth-paths.test.ts", + "package": "packages/cli", + "valueScore": 5.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 70, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "5ef809d93", + "time": 1776410419000, + "subject": "fix(FN-1952): merge pi package settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "1cbf9e101", + "time": 1776580907000, + "subject": "test: enforce test-directory isolation across all packages", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/in-review-stall.test.ts", + "package": "packages/core", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 3, + "test-only-churn": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 32, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 43, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "38a6e1e60", + "time": 1778678974000, + "subject": "feat(FN-4217): complete Step 1 — add in-review stall helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ceb7aa438", + "time": 1778678974000, + "subject": "fix(FN-4217): export stall signal types and align helper contract", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e3cfd0b05", + "time": 1779035466000, + "subject": "feat(FN-4885): complete Step 1 — core deadlock threshold primitives", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "32f294890", + "time": 1779119060000, + "subject": "test(FN-5052): complete Step 5 — cover autoMerge stall suppression in core", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c60045df2", + "time": 1779312547000, + "subject": "feat(FN-5223): anchor staleness and stall detectors to engine activation ti", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "320b153c4", + "time": 1781034680000, + "subject": "FN-6113: fail fast on terminal provider errors", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/system-metrics.test.ts", + "package": "packages/core", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 78, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "ff7f35c6c", + "time": 1775672478000, + "subject": "feat(FN-1227): add mesh state and system metrics support to CentralCore", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d99246cb7", + "time": 1782073939000, + "subject": "FN-6834: use OS-available memory for system metrics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/activity-feed-theme-styling.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 82, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "718057577", + "time": 1775315503000, + "subject": "fix(FN-873): replace hardcoded error color with theme-aware CSS variable in ActivityFeed", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "f89f18d33", + "time": 1775585927000, + "subject": "refactor(FN-1056): remove dead code and unused CSS", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/api-missions.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 61, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 54, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5c521434d", + "time": 1778639919000, + "subject": "feat(FN-4124): surface mission interview drafts across mission tooling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ad73d7658", + "time": 1778887182000, + "subject": "feat(FN-4640): complete Step 6 — dashboard sandbox audit surface", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "acad46cc1", + "time": 1780241521000, + "subject": "FN-5764: expose mission assertion backfill through API and CLI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/agent-presets.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 34, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 77, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "5d124c447", + "time": 1775773431000, + "subject": "feat(FN-1443): create dedicated soul.md files for all New Agent presets", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "eccaed9e6", + "time": 1776539683000, + "subject": "refactor(FN-2056): replace agent preset emojis with symbol glyphs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useWorkspaces.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 87, + "lastTouched": "2026-04-17", + "evidence": [ + { + "sha": "f2c00ad14", + "time": 1774945617000, + "subject": "feat(KB-175): move file browser to header with workspace support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d8f75d503", + "time": 1774981209000, + "subject": "test(KB-301): fix useWorkspaces tests — use real timers for polling interval", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bab976159", + "time": 1776406060000, + "subject": "fix(FN-1952): recover routines schedules merge", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/api-error.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 78, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "3a9bee20b", + "time": 1775677067000, + "subject": "fix(FN-1287): standardize dashboard API error responses", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "6bfad343b", + "time": 1776977325000, + "subject": "feat(FN-2327): standardize dashboard runtime logging pipeline", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/project-pause-resume-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1, + "fix+source": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 71, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "f83d3483a", + "time": 1776308002000, + "subject": "feat(FN-1733): add dedicated pause/resume APIs for projects", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c1f711b92", + "time": 1778796337000, + "subject": "test(FN-4530): extend engine mocks for integrated route imports", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-pr-reviews.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 39, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "5bde911bd", + "time": 1779043159000, + "subject": "feat(FN-4761): sync PR reviews and surface review threads", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9cee0ef08", + "time": 1779043159000, + "subject": "fix(FN-4761): correct review-feedback document persistence", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "49990a1b1", + "time": 1779243008000, + "subject": "test(dashboard): align PR-reviews/PR-merged tests with current signatures", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d34cf8c9a", + "time": 1779265642000, + "subject": "feat(FN-5181): paginate PR review snapshots", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/runtime-plugin-alias-regression.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 51, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "24df2fd99", + "time": 1778039257000, + "subject": "feat(FN-3298): add regression test for runtime plugin alias", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "958af16de", + "time": 1778370284000, + "subject": "fix(FN-3888): resolve dependency-graph plugin from src in dashboard build", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "7cfc2168a", + "time": 1781034680000, + "subject": "FN-6111: alias bundled plugin views to source entries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/agent-avatar-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 51, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "964e111f8", + "time": 1778039257000, + "subject": "feat(FN-3118): document avatar storage in agents and architecture", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c1f711b92", + "time": 1778796337000, + "subject": "test(FN-4530): extend engine mocks for integrated route imports", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/custom-provider-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 57, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "567873bc0", + "time": 1777518905000, + "subject": "feat(FN-2959): merge fusion/fn-2959-2", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "56fd8712c", + "time": 1777520501000, + "subject": "feat(FN-2961): merge fusion/fn-2961", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a2bd876eb", + "time": 1779039095000, + "subject": "test(FN-4907): cover stale settings invalidation and sync refresh paths", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d767e2ecb", + "time": 1779942672000, + "subject": "feat(FN-5601): add OpenAI Responses API type support to custom providers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f0d2415c2", + "time": 1781248238000, + "subject": "Fix custom provider sends failing on masked API key", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/interpreter-merge-seam.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 22, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "8bb02f7d3", + "time": 1780534420000, + "subject": "fix(engine,core): merge-seam multi-waiter + autoMerge gate; selection lock; settings toggle", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "18ba5c0c5", + "time": 1780545721000, + "subject": "Address PR review feedback (#1363)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-post-merge.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 3, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 45, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "de1e13d22", + "time": 1778534686000, + "subject": "feat(FN-4014): split merger monolith into domain-specific test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4ffd0a2dd", + "time": 1780952057000, + "subject": "FN-6030: fix workflow terminal notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f0fa75b27", + "time": 1780975777000, + "subject": "fix(FN-6043): address stuck task PR feedback", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "55ba994ae", + "time": 1781034626000, + "subject": "FN-6096: run worktree init command in post-merge worktrees", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/prompt-cache-integration.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 46, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "05b8cbea8", + "time": 1778443412000, + "subject": "test(engine): verify layer forwarding and cross-session cache invariant", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "aed62b0dd", + "time": 1778443412000, + "subject": "fix(engine): address PR review — remove dead skill scoping, fix memory layer placement, clarify JSDoc, sort builtin allowlist, remove redundant tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "fb2c6e509", + "time": 1781236823000, + "subject": "FN-6235: source reviewer prompts from workflow IR", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/soft-delete-in-flight-abort.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 37, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "ab0a25300", + "time": 1779264966000, + "subject": "feat(FN-5264): abort in-flight executor/merge/triage work on soft-delete (F", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7d25d98b2", + "time": 1779383678000, + "subject": "fix(FN-5256): await disposal across task:moved-away and task:deleted", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a1b7556c7", + "time": 1780467196000, + "subject": "FN-5924: throttle OAuth expiry alerts across restarts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/sandbox/__tests__/resolve.test.ts", + "package": "packages/engine", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 41, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "fcaa0d3b8", + "time": 1778865841000, + "subject": "feat(FN-4636): complete Step 3 — add sandbox backend resolver", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d44a3625d", + "time": 1778867403000, + "subject": "feat(FN-4637): complete Step 3 — implement bubblewrap backend", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ba5495777", + "time": 1778869124000, + "subject": "feat(FN-4638): complete Step 4 — implement sandbox-exec backend", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d3e578bb2", + "time": 1778918686000, + "subject": "feat(FN-4642): wire container sandbox backends into resolver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6998ac4ed", + "time": 1778918687000, + "subject": "test(FN-4642): lock native default backend capability id", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/mcp-config.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 5.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 62, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "74ebd238e", + "time": 1777084760000, + "subject": "chore: add pi-claude-cli + plugin-sdk __tests__/ dirs (test consolidation)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "bcc642eaa", + "time": 1777151456000, + "subject": "fix: regenerate pi-claude-cli MCP config per session and auto-sync skill tools", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "fed1d6975", + "time": 1777308709000, + "subject": "feat(FN-2703): support custom MCP tools in plan generation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ProjectOverview.test.tsx", + "package": "packages/dashboard", + "valueScore": 12, + "positiveCount": 7, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 1, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 4, + "fix+source": 2, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 200, + "testCount": 30, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 15.4, + "ageDays": 86, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "2b1e342ea", + "time": 1775032584000, + "subject": "feat(FN-674): implement multi-project dashboard UX", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "34a6c4268", + "time": 1775752411000, + "subject": "feat(FN-1316): add mobile responsive styles and tests for ProjectOverview", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "67d0deb95", + "time": 1776184148000, + "subject": "feat(FN-1734): merge fusion/fn-1734", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b80cae1b5", + "time": 1776506880000, + "subject": "feat(FN-1850): aggregate projects across connected nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "eed16abac", + "time": 1778291056000, + "subject": "feat(FN-3509): document node mapping availability UI in dashboard guide", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b95e7f757", + "time": 1780434864000, + "subject": "FN-5894: share project data-boundary and status helpers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/project-store-resolver.test.ts", + "package": "packages/dashboard", + "valueScore": 12.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 3, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 19, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 14.8, + "ageDays": 84, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "38492af44", + "time": 1775196707000, + "subject": "fix(FN-758): fix project-scoped real-time dashboard updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "356af7c9e", + "time": 1775225327000, + "subject": "fix: resolve race condition in project-store-resolver breaking real-time dashboard updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "425f398e1", + "time": 1776056299000, + "subject": "fix(dashboard): start engine for every registered project on first access", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e9933cfa9", + "time": 1778952704000, + "subject": "feat(FN-4748): complete Step 3 — attach tracking state service to all project stores", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/InsightsView.test.tsx", + "package": "packages/dashboard", + "valueScore": 19.5, + "positiveCount": 11, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 1, + "testOnlyRatio": 0.083, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "fix": 1, + "test+source": 7, + "test-only-churn": 1 + }, + "durationMs": 300, + "testCount": 26, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 14.6, + "ageDays": 71, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "a5188bb5e", + "time": 1776295130000, + "subject": "feat(FN-1708): add InsightsView UI with section rendering and action UX", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f50e62713", + "time": 1776482183000, + "subject": "fix(FN-2022): correct insights status badge classes and mobile wrapping", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "09cf8ccdb", + "time": 1777455777000, + "subject": "feat(FN-2948): merge fusion/fn-2948", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "64d0f258a", + "time": 1777505130000, + "subject": "fix(dashboard): rework Insights view with two-pane layout", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3f0aa6e3c", + "time": 1777810664000, + "subject": "feat(FN-3017): add insights coverage contracts, AgentsOverviewBar component", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MailboxModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 40, + "positiveCount": 24, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 28, + "testOnlyCount": 2, + "testOnlyRatio": 0.071, + "signalTally": { + "added-with-source": 1, + "test+source": 18, + "churn-keyword": 2, + "fix": 2, + "fix+source": 5, + "test-only-churn": 2 + }, + "durationMs": 600, + "testCount": 66, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 14.6, + "ageDays": 79, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "7cc4ee5eb", + "time": 1775586119000, + "subject": "feat(FN-989): add inter-agent messaging system with mailbox UI and CLI commands", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4a239c003", + "time": 1775594276000, + "subject": "feat(FN-1064): replace agent sidebar with dropdown select in MailboxModal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6659185fa", + "time": 1775612782000, + "subject": "fix(FN-1082): harden mailbox modal mobile layout", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "182e30d5e", + "time": 1775649540000, + "subject": "fix(FN-1136): tighten dashboard mobile header and mailbox layouts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "351bccb21", + "time": 1775777391000, + "subject": "feat(FN-1357): replace hardcoded colors with semantic CSS tokens", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "9d83ed7ef", + "time": 1776036896000, + "subject": "feat(FN-1652): add compose action from Agents tab with deterministic state behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ExecutorStatusBar.test.tsx", + "package": "packages/dashboard", + "valueScore": 26.5, + "positiveCount": 17, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 19, + "testOnlyCount": 1, + "testOnlyRatio": 0.053, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 15, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 400, + "testCount": 53, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 14.5, + "ageDays": 84, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "7fd8144c6", + "time": 1775151777000, + "subject": "feat(FN-684): complete Step 3 — create ExecutorStatusBar component with tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fa8c63766", + "time": 1775234426000, + "subject": "fix(FN-782): fix footer status bar count derivation and sync with board view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2420c9ac3", + "time": 1775240077000, + "subject": "feat(FN-778): reserve layout space for executor footer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d6e30300a", + "time": 1775288121000, + "subject": "feat(FN-822): unify stuck-task detection with configurable project timeout", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "d2e9aafff", + "time": 1776002449000, + "subject": "feat(FN-1465): merge fusion/fn-1465", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07d132ee2", + "time": 1777139432000, + "subject": "feat(FN-2445): merge fusion/fn-2445 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/roadmap-suggestions.test.ts", + "package": "packages/dashboard", + "valueScore": 6, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 2, + "test+source": 4, + "test-only-churn": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 14.3, + "ageDays": 71, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "0c948f507", + "time": 1776271785000, + "subject": "feat(FN-1671): add AI milestone suggestion feature", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7f972c753", + "time": 1776282608000, + "subject": "feat(FN-1672): add AI feature suggestion UI to roadmaps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6d3fa11cc", + "time": 1776354794000, + "subject": "feat(FN-1920): merge fusion/fn-1920", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "910c5ab38", + "time": 1776369912000, + "subject": "feat(FN-1892): merge fusion/fn-1892", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-base-commit-capture.test.ts", + "package": "packages/engine", + "valueScore": 6, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 14.3, + "ageDays": 43, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "82c52473e", + "time": 1778711314000, + "subject": "test(FN-4383): complete Step 2 — add base commit capture unit tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ff4f6b22d", + "time": 1778711314000, + "subject": "fix(FN-4383): satisfy tsc signatures in exec mock implementations", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "a2b494ddc", + "time": 1778723081000, + "subject": "fix(FN-4417): stop false-positive branch contamination from stale baseCommitSha", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/heartbeat-monitor-per-agent-config.test.ts", + "package": "packages/engine", + "valueScore": 6, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added": 1, + "test+source": 4, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 23, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 14.3, + "ageDays": 52, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "88171eb5b", + "time": 1777928727000, + "subject": "feat(FN-3308): fix CSS token consistency in settings and task detail modals", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "2d6187d9c", + "time": 1777987953000, + "subject": "feat(FN-3475): merge fusion/fn-3475", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f2fadd10", + "time": 1778044715000, + "subject": "feat(engine): gate executor and heartbeat on allowParallelExecution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e004b205d", + "time": 1778044715000, + "subject": "feat(agents): decouple heartbeat from task state, add allowParallelExecution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b936ab9bb", + "time": 1779333343000, + "subject": "feat(FN-5414): merge fusion/fn-5414", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1029a1b8b", + "time": 1780983304000, + "subject": "test(FN-6035): fix broad workflow suite expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/routine-scheduler.test.ts", + "package": "packages/engine", + "valueScore": 6, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 54, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 14.3, + "ageDays": 76, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d8d961c80", + "time": 1775845579000, + "subject": "fix: align routine system with actual RoutineStore/Routine APIs to prevent CLI crash", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "15b27253b", + "time": 1775848315000, + "subject": "feat(FN-1269): complete routine engine integration with RoutineRunner and RoutineScheduler", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "aa9d7069d", + "time": 1776297210000, + "subject": "feat(FN-1766): merge fusion/fn-1766", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "41fa75d4f", + "time": 1776326885000, + "subject": "feat(FN-1743): merge fusion/fn-1743", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/notification/__tests__/notification-service.test.ts", + "package": "packages/engine", + "valueScore": 6, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 2, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 14.3, + "ageDays": 43, + "lastTouched": "2026-05-28", + "evidence": [ + { + "sha": "0ee31db9e", + "time": 1778710541000, + "subject": "feat(FN-4332): complete Step 2 — defer failed notifications", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "74f069b57", + "time": 1778713128000, + "subject": "feat(FN-4307): complete Step 1 — defer failed notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b75230712", + "time": 1778713129000, + "subject": "test(FN-4307): fix notification tests for strict task status typing", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c31bf013d", + "time": 1779114689000, + "subject": "test(FN-5046): complete Step 3 — cover terminal-only failure notification behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "200dda95d", + "time": 1779995403000, + "subject": "feat(FN-5624): suppress transient task.json ENOENT with guard, logging, and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e75c4dae2", + "time": 1780007963000, + "subject": "fix(FN-5627): suppress ntfy notifications for transient merge failures the engine auto-recovers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/LeftSidebarNav.test.tsx", + "package": "packages/dashboard", + "valueScore": 34.5, + "positiveCount": 21, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 23, + "testOnlyCount": 1, + "testOnlyRatio": 0.043, + "signalTally": { + "added-with-source": 1, + "test+source": 17, + "test-only-churn": 1, + "churn-keyword": 1, + "fix+source": 3, + "fix": 1 + }, + "durationMs": 500, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 14.1, + "ageDays": 6, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "24246fba2", + "time": 1781936915000, + "subject": "FN-6772: add experimental left sidebar navigation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "aaa1aa2fe", + "time": 1781943102000, + "subject": "FN-6786: narrow experimental sidebar labels", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2ca262753", + "time": 1781948814000, + "subject": "FN-6788: verify bottom settings placement", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "adbb1bbaa", + "time": 1781954388000, + "subject": "FN-6787: remove duplicate sidebar branding", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c8c76a2d1", + "time": 1782007730000, + "subject": "FN-6801: float sidebar collapse toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "185ff70d8", + "time": 1782015797000, + "subject": "FN-6819: keep sidebar settings above footer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-tracking-state.test.ts", + "package": "packages/dashboard", + "valueScore": 13.5, + "positiveCount": 11, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 14, + "testOnlyCount": 2, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 11, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 44, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.8, + "ageDays": 47, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "adbc5f1c2", + "time": 1778406218000, + "subject": "feat(FN-3873): add GitHub tracking state service for issue close/reopen lif", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "95f6cd845", + "time": 1778415626000, + "subject": "feat(FN-3875): add GitHub tracking auth resolver and forced client auth mod", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "44c26e341", + "time": 1778418386000, + "subject": "feat(FN-3876): add GitHub tracking test coverage across settings, issues, s", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d0c9e47f6", + "time": 1778645481000, + "subject": "feat(FN-4253): close linked GitHub issues on task deletion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19f2b96f9", + "time": 1778706771000, + "subject": "feat(FN-4378): complete Step 3 — honor github issue action on delete", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d7b855c31", + "time": 1778952703000, + "subject": "test(FN-4748): complete Step 2 — reproduce tracking gaps with failing tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-nodes.test.ts", + "package": "packages/dashboard", + "valueScore": 13.5, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 3, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 200, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.8, + "ageDays": 77, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "2e3c94f4d", + "time": 1775763243000, + "subject": "feat(FN-1228): add Node Dashboard UI with mesh topology and routes tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "07ddb1ca1", + "time": 1776417594000, + "subject": "feat(FN-1984): enrich chat and heartbeat prompts with agent context", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "5f4fd222d", + "time": 1778452449000, + "subject": "feat(FN-3952): expose full mesh state aggregation and fix graph selection b", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d144a081f", + "time": 1778457216000, + "subject": "feat(FN-3454): add typed mesh snapshot API consumed by nodes view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/task-plan.test.ts", + "package": "packages/cli", + "valueScore": 6.5, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 2, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 1, + "test-only-churn": 2, + "fix": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 87, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "f9596d964", + "time": 1774896796000, + "subject": "feat(KB-181): add kb task plan command with planning mode", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f8a2e944", + "time": 1776618814000, + "subject": "fix(FN-2107): normalize task ID handling for task creation tools", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b0cda2398", + "time": 1777508602000, + "subject": "feat(FN-2923): merge fusion/fn-2923", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "070ad2815", + "time": 1779169671000, + "subject": "feat(FN-5060): complete Step 7 — testing and verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/research.test.ts", + "package": "packages/cli", + "valueScore": 6.5, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 55, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "09235042d", + "time": 1777641607000, + "subject": "feat(FN-2997): merge fusion/fn-2997-2", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f1ee69e59", + "time": 1777911607000, + "subject": "feat(FN-3014): document research recovery semantics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a02b42106", + "time": 1777954882000, + "subject": "feat(FN-3313): add plugin slot registry, planning mode rewind, and docker n", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e69631ec2", + "time": 1778380869000, + "subject": "feat(FN-3901): add builtin research web-search provider as default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "31a20856b", + "time": 1778678976000, + "subject": "test(FN-4223): complete Step 5 — lock disambiguation copy assertions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1c69ea78b", + "time": 1781078868000, + "subject": "FN-6173: fix CLI stale constructor mocks and plugin SDK shims", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/startup-model-sync.test.ts", + "package": "packages/cli", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 52, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "1dce4ee00", + "time": 1777940541000, + "subject": "feat(FN-3227): add startup model sync for opencode-go commands", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e6a675a5a", + "time": 1778865527000, + "subject": "feat(FN-4616): complete Step 2 — enhance OpenRouter startup sync behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b12ff26f3", + "time": 1779341672000, + "subject": "feat(FN-5424): add opencode-go provider to settings with model refresh on k", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "978d07c96", + "time": 1780621960000, + "subject": "Address PR review comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/in-review-stalled.test.ts", + "package": "packages/core", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 38, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "d251cbecd", + "time": 1779188088000, + "subject": "feat(FN-5093): complete Step 1 — core detector module", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "dd78e42f7", + "time": 1779188089000, + "subject": "fix(FN-5093): complete Step 7-8 — verification fixes and changeset", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c60045df2", + "time": 1779312547000, + "subject": "feat(FN-5223): anchor staleness and stall detectors to engine activation ti", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/near-duplicate.test.ts", + "package": "packages/core", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 37, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "7d01a666a", + "time": 1779215454000, + "subject": "feat(FN-5152): complete Step 1 — add near-duplicate core helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4f7b3ac78", + "time": 1781476175000, + "subject": "FN-6439: clear stale near-duplicate flags", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "53825ad0a", + "time": 1782384262000, + "subject": "fix(core): prefer explicit file scope for duplicate signatures", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/settings-validation.test.ts", + "package": "packages/core", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 47, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "25dd8cbb3", + "time": 1778358107000, + "subject": "feat(FN-3868): add changeset for github tracking settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "55663219c", + "time": 1778630673000, + "subject": "feat(FN-4069): add direct merge commit routing to merger", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0e14950ae", + "time": 1778754222000, + "subject": "feat(FN-4394): complete Step 1 — add heartbeat scope discipline types and defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ae150d169", + "time": 1778758362000, + "subject": "feat(FN-4400): complete Step 2 — add heartbeat prompt template settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/strip-approval-bypass-flags.test.ts", + "package": "packages/core", + "valueScore": 6.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 21, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "a47ea3f7a", + "time": 1780646751000, + "subject": "fix(review): strip approval-bypass flags in agent workflow authoring for chat/planning lanes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "563cb5b37", + "time": 1780692965000, + "subject": "Address PR review feedback (#1433)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-compiler.test.ts", + "package": "packages/core", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 2, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 22, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "c9250df33", + "time": 1780503880000, + "subject": "feat(core): compile workflow IR to executable WorkflowSteps (U2)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "eb67d0821", + "time": 1780533132000, + "subject": "Address PR review feedback (#1363)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8d3b869ec", + "time": 1780981346000, + "subject": "fix(FN-6035): model pre-merge workflow steps in builtin coding", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "535c40d24", + "time": 1781209087000, + "subject": "fix(core): compile branching merge-region in builtin workflows", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "491b04c44", + "time": 1781296562000, + "subject": "FN-6289: Treat merge primitives as terminal workflow boundaries", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "5506fcc0f", + "time": 1782093298000, + "subject": "feat(FN-6880): migrate built-in browser-verification to an optional-group (U6)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-optional-steps.test.ts", + "package": "packages/core", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 13, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "bd87ce7d7", + "time": 1781312239000, + "subject": "FN-6304: add optional workflow steps", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d4e91d459", + "time": 1782025351000, + "subject": "feat(core): add workflow-step seam + browser-verification optional step to stepwise workflow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ab8c8beb4", + "time": 1782091554000, + "subject": "feat(FN-6880): resolve optional-step toggles + seeding from optional-group nodes (U3)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5506fcc0f", + "time": 1782093298000, + "subject": "feat(FN-6880): migrate built-in browser-verification to an optional-group (U6)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/auth.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "fix+source": 1, + "fix": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 65, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "d01fb6a01", + "time": 1776846700000, + "subject": "feat(FN-2220): merge fusion/fn-2220", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4113e1c08", + "time": 1777100595000, + "subject": "fix(dashboard): keep Agents title row on a single line on mobile", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "641267c2d", + "time": 1777151968000, + "subject": "chore: clear pre-existing lint warnings", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "9e04467b5", + "time": 1778221265000, + "subject": "feat(FN-3406): add shell context hook plumbing for dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/GitHubBadge.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 6, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 3, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "test-only-churn": 3 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 88, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "6c59560a0", + "time": 1774840333000, + "subject": "feat(KB-022): add GitHub issue status badges to task cards", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8ecb11011", + "time": 1775515065000, + "subject": "feat(FN-1032): replace hardcoded colors with CSS custom properties across dashboard components", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4225f9fa0", + "time": 1777990712000, + "subject": "feat(FN-3287): document PR link visibility in dashboard README", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "31c5f7992", + "time": 1778688380000, + "subject": "test(FN-4310): complete Step 3 — assert badge spacing and typography styles", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0ec2163fd", + "time": 1778775554000, + "subject": "feat(FN-4481): complete Step 4 — align github badge size and coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MeshTopology.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 77, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "0304df348", + "time": 1775763710000, + "subject": "feat(FN-1228): enhance MeshTopology with peer awareness and status legend", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d6c8f1118", + "time": 1777048696000, + "subject": "fix(FN-2444): polish node dashboard UX and discovery core handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d144a081f", + "time": 1778457216000, + "subject": "feat(FN-3454): add typed mesh snapshot API consumed by nodes view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/NativeShellConnectionManager.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 52, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "419c6f3b3", + "time": 1778070596000, + "subject": "feat(FN-3400): add native shell connection handoff, plugin management CLI/l", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d8f75202e", + "time": 1778101892000, + "subject": "feat(FN-3402): address shell connection feedback in NativeShellConnectionMa", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7b9e5259d", + "time": 1778204145000, + "subject": "feat(FN-3403): add shell multi-profile support with connection manager onbo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ProjectThemeTokens.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 80, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "2a6f74af1", + "time": 1775513121000, + "subject": "fix(FN-1031): replace var(--error) with var(--color-error) in project components", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "b95e7f757", + "time": 1780434864000, + "subject": "FN-5894: share project data-boundary and status helpers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowSelector.test.tsx", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 22, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "3aa8d2d28", + "time": 1780562991000, + "subject": "feat(dashboard): flag-gated multi-lane board — lane per workflow, trait-keyed columns, typed drag rejections, hold promote (U9)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bd5315fd4", + "time": 1780930422000, + "subject": "feat: allow disabling built-in workflows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4366a933d", + "time": 1780996171000, + "subject": "FN-6046: add collapsible workflow selectors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a2f4bb14c", + "time": 1781018056000, + "subject": "FN-6080: remove workflow selector collapse controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/workflowStatusCounts.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 6, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "7eceec00c", + "time": 1781946516000, + "subject": "FN-6763: add themed workflow status switcher", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "465b7b626", + "time": 1782073540000, + "subject": "FN-6842: fix trait-less workflow status counts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4fd8d444f", + "time": 1782177666000, + "subject": "fix(dashboard): polish app chrome and workflow defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useDocuments.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 2, + "testOnlyRatio": 0.286, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 70, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "184b1f966", + "time": 1776354721000, + "subject": "feat(FN-1842): add Documents view with search and grouping", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "39f38c0ab", + "time": 1776547962000, + "subject": "feat(FN-1980): add project markdown files to Documents view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6e3503b81", + "time": 1776618813000, + "subject": "feat(FN-2030): add project markdown explorer to Documents view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "eff537928", + "time": 1776706718000, + "subject": "feat(FN-2192): rename markdown files route to markdown-list", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "9417c8149", + "time": 1781014157000, + "subject": "FN-6078: fix dashboard tests to use constructable mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useLanguage.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "3ae1fc383", + "time": 1780499984000, + "subject": "feat(dashboard): add language switcher and persistence (U4)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4f6013ff3", + "time": 1780502596000, + "subject": "test+refactor(i18n): close code-review residuals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e08a5633f", + "time": 1780516943000, + "subject": "feat(i18n): language reset-to-auto-detect + review nitpicks (#1352)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e703bdd60", + "time": 1780533196000, + "subject": "feat(i18n): add Korean locale + localized READMEs with language switcher", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/branch-selection.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 47, + "lastTouched": "2026-06-01", + "evidence": [ + { + "sha": "5ee049b83", + "time": 1778389869000, + "subject": "feat(FN-3214): add branch selection contract to planning routes and subtask", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4fee2c132", + "time": 1780073057000, + "subject": "FN-5671: add branch-strategy selection to new task creation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9ba3a8e45", + "time": 1780303199000, + "subject": "FN-5826: centralize branch assignment derivation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9c29e2e77", + "time": 1780309390000, + "subject": "FN-5829: add shared feature branch option for new tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/command-center-csv.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 10, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "29acf1488", + "time": 1781579114000, + "subject": "feat(command-center): U8 — CSV export for analytics endpoints", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "64092ca0a", + "time": 1781826716000, + "subject": "FN-6654: add Command Center agent-run sheets", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "59d3eee7f", + "time": 1781912854000, + "subject": "FN-6721: estimate productivity hours saved", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "511794437", + "time": 1781915135000, + "subject": "FN-6720: add productivity task duration stats", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/discovery-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 78, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "29e247560", + "time": 1775685514000, + "subject": "feat(FN-1222): add distributed node discovery APIs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "b3f057a28", + "time": 1775871023000, + "subject": "fix: improve merge verification and dashboard behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d6c8f1118", + "time": 1777048696000, + "subject": "fix(FN-2444): polish node dashboard UX and discovery core handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/research-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 57, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "c5f35ab34", + "time": 1777545801000, + "subject": "feat(FN-2994): merge fusion/fn-2994", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "44a996e76", + "time": 1777776343000, + "subject": "feat(FN-2998): scope ResearchView bottom safe-area padding to mobile", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d4c534a8d", + "time": 1777793855000, + "subject": "feat(FN-3016): research hardening, docker node onboarding, planning model s", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f2fa44e27", + "time": 1777824664000, + "subject": "feat(FN-2999): harden research lifecycle with idempotent cancel/retry, SSE", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "f1ee69e59", + "time": 1777911607000, + "subject": "feat(FN-3014): document research recovery semantics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2e8fb88c4", + "time": 1778011557000, + "subject": "feat(FN-3368): tighten research view test coverage and resolve dashboard ty", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-approval-sandbox-provisioning.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 41, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "10b73d538", + "time": 1778910991000, + "subject": "feat(FN-4641): complete Step 4 — integrate sandbox provisioning approvals in dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-projects-across-nodes.test.ts", + "package": "packages/dashboard", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 69, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "b80cae1b5", + "time": 1776506880000, + "subject": "feat(FN-1850): aggregate projects across connected nodes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6bfad343b", + "time": 1776977325000, + "subject": "feat(FN-2327): standardize dashboard runtime logging pipeline", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-document-tools.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 78, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "d271b4284", + "time": 1775676431000, + "subject": "feat(FN-1272): add task document tools for triage and executor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9d3a4c7ca", + "time": 1777519126000, + "subject": "feat(FN-2987): merge fusion/fn-2987", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07c552f82", + "time": 1777620797000, + "subject": "feat(FN-3044): add canonical mock helpers and migrate representative test s", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b1a2aeebf", + "time": 1781791560000, + "subject": "FN-6635: expose task document tools to chat agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/evaluator.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 50, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "6a599d607", + "time": 1778072705000, + "subject": "feat(FN-3389): fix scheduled evaluator integration types", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6c9f87f71", + "time": 1778090945000, + "subject": "feat(FN-3390): export eval score category type and harden evaluator switch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2413ccb39", + "time": 1778099903000, + "subject": "feat(FN-3391): persist evaluator evidence with score categories", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "52c673a4c", + "time": 1778122555000, + "subject": "feat(FN-3392): implement follow-up suggestion contract and policy system", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/gridlock-detector.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 58, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "54f4fd540", + "time": 1777411555000, + "subject": "feat(FN-2862): merge fusion/fn-2862", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "42e8e462f", + "time": 1777533651000, + "subject": "feat(FN-3019): merge fusion/fn-3019", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8bc3d7b0a", + "time": 1780957167000, + "subject": "FN-6042: raise dependency security floors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9fabc9d75", + "time": 1782401744000, + "subject": "FN-6962: ignore hidden overlap paths by default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/in-process-runtime.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 52, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "c48feb2f7", + "time": 1777934019000, + "subject": "feat(FN-3324): add runtime guard regression sentinel", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8b5e467f5", + "time": 1778837006000, + "subject": "feat(FN-4583): complete Step 2 — expose engine chat store accessor", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "41f40b466", + "time": 1780031274000, + "subject": "FN-5641: trigger assertion runs during mission autopilot progression", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a9d2064f6", + "time": 1780110314000, + "subject": "FN-5703: forward task:deleted events through in-process runtime", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-landed-files-capture.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "fix": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 41, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "3ffc1e689", + "time": 1778876539000, + "subject": "feat(FN-4646): complete Step 2 — capture landed files at merge time", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "03212ce00", + "time": 1779179095000, + "subject": "test(FN-5103): complete Step 6 — add landed-files attribution reliability coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3e7073ab8", + "time": 1779179095000, + "subject": "test(FN-5103): address review gaps in landed-files coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0b17d7915", + "time": 1779179095000, + "subject": "fix(FN-5103): complete Step 8 — resolve verification regressions", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "c5e9dc43f", + "time": 1779290620000, + "subject": "fix(FN-5304): guard against silent no-op landed-file attribution mismatches", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/mock-provider.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 37, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "c89d68dd2", + "time": 1779270519000, + "subject": "feat(FN-5203): merge fusion/fn-5203", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "76bd3a7d9", + "time": 1779528300000, + "subject": "feat(FN-5205): add workflow-step test mode dispatch and routing for mock pr", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2209c57dd", + "time": 1779530940000, + "subject": "chore(engine): remove workflow-step mock routing + stale FN-5482 docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/usage-limit-detector.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "fix+source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 89, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "85687be6a", + "time": 1774729823000, + "subject": "feat(KB-147): auto-pause engine on API usage limit errors", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e1bd4be9b", + "time": 1774729823000, + "subject": "fix(KB-153): detect exhausted-retry errors from pi-coding-agent sessions", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bbc0ce89b", + "time": 1776618814000, + "subject": "feat(FN-2119): merge fusion/fn-2119", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-graph-foreach.test.ts", + "package": "packages/engine", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 13.3, + "ageDays": 21, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "a782e5c04", + "time": 1780599809000, + "subject": "feat(engine): U3 — foreach expansion, iterative instance sub-walk, bounded rework cycles, step-execute seam", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2cfa8a328", + "time": 1780601165000, + "subject": "feat(engine,core): U5+U6+U12core — step-review verdict handler, graph-source projection discipline, pluggable step-parser registry", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "af7c14197", + "time": 1780603455000, + "subject": "feat(engine): U10 — parallel step execution: dependency scheduler, per-instance worktrees, ordered integration, conflict→rework (KTD-11)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "38d7f1c43", + "time": 1781020846000, + "subject": "FN-6087: skip completed foreach steps on resume", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ScheduleStepsEditor.test.tsx", + "package": "packages/dashboard", + "valueScore": 14.5, + "positiveCount": 7, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 2, + "fix": 1 + }, + "durationMs": 200, + "testCount": 34, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.9, + "ageDays": 86, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "7569af8a9", + "time": 1774959270000, + "subject": "feat(KB-229): add multi-step scheduled tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "139456a3c", + "time": 1775012015000, + "subject": "fix(KB-649): fix multi-step scheduled task editor step addition and validation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ba40c042d", + "time": 1775459361000, + "subject": "fix(FN-1028): add crypto.randomUUID fallback for schedule step ID generation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ebfab59d7", + "time": 1776267115000, + "subject": "feat(FN-1873): replace model provider/ID inputs with standard model selector in schedule steps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "72076c65d", + "time": 1776271557000, + "subject": "feat(FN-1875): merge fusion/fn-1875", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/concurrency.test.ts", + "package": "packages/engine", + "valueScore": 14.5, + "positiveCount": 9, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 11, + "testOnlyCount": 1, + "testOnlyRatio": 0.091, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "test-only-churn": 1, + "fix+source": 2, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 32, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.9, + "ageDays": 92, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "6379008a8", + "time": 1774487653000, + "subject": "feat(HAI-016): complete Step 1 — create shared AgentSemaphore", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "640c28883", + "time": 1774487851000, + "subject": "feat(HAI-016): complete Step 2 — integrate semaphore into TriageProcessor", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6a45531a7", + "time": 1774488102000, + "subject": "feat(HAI-016): complete Step 4 — integrate semaphore into merge path", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0f80d4f2b", + "time": 1774488307000, + "subject": "feat(HAI-016): complete Step 5 — wire semaphore into dashboard engine components", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5a851a714", + "time": 1774729823000, + "subject": "feat(KB-138): add priority-based scheduling to AgentSemaphore", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1b98f167a", + "time": 1775421441000, + "subject": "feat(FN-978): add diagnostic logging, semaphore resilience, and executor tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ActivityLogModal.test.tsx", + "package": "packages/dashboard", + "valueScore": 22.5, + "positiveCount": 13, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 1, + "testOnlyRatio": 0.067, + "signalTally": { + "added-with-source": 1, + "test+source": 9, + "churn-keyword": 1, + "fix+source": 3, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 300, + "testCount": 27, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.8, + "ageDays": 87, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "de23fbcbd", + "time": 1774920986000, + "subject": "test(KB-086): complete Step 8 — add ActivityLogModal component tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2b1e342ea", + "time": 1775032584000, + "subject": "feat(FN-674): implement multi-project dashboard UX", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "54767f60e", + "time": 1775051690000, + "subject": "feat(KB-648): enable parallel test execution and optimize test performance", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "b9584da06", + "time": 1775053649000, + "subject": "feat(FN-674): add multi-project dashboard support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/onboard.test.ts", + "package": "packages/cli", + "valueScore": 7, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 25, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "e854d3337", + "time": 1780303339000, + "subject": "FN-5805: add fn onboard command with sequential runOnboard flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "40b491958", + "time": 1780345255000, + "subject": "FN-5806: make onboarding steps individually skippable", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "379d01ae4", + "time": 1780348637000, + "subject": "FN-5810: add onboard test guard for force re-run flow", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bf37ce89f", + "time": 1780349949000, + "subject": "FN-5811: respect persisted CLI onboarding completion marker", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "aa71ace10", + "time": 1781418006000, + "subject": "fix(auth): refresh expired Claude OAuth tokens", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/api-git.test.ts", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 71, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 54, + "lastTouched": "2026-05-25", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "86e76ad0d", + "time": 1778223680000, + "subject": "feat(FN-3724): add split-button for git pull with rebase option", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "683287594", + "time": 1778706771000, + "subject": "feat(FN-4378): complete Step 4 — plumb github issue action through API", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e6c7dcdd6", + "time": 1779242184000, + "subject": "feat(FN-5139): wire lineage unlink delete and archive flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1fb905afb", + "time": 1779751977000, + "subject": "feat(FN-5585): add planning branch controls to planning mode modal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/quick-entry-expanded-height.test.tsx", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 73, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "7c0d44e82", + "time": 1776131906000, + "subject": "feat(FN-1631): merge fusion/fn-1631", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d212ee12b", + "time": 1777446579000, + "subject": "feat(FN-2913): merge fusion/fn-2913", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "99b8183f0", + "time": 1777715666000, + "subject": "feat(FN-3186): add priority control to quick-entry box", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2a2b7d0b6", + "time": 1781019985000, + "subject": "FN-6081: expand quick task entry by default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useRemoteNodeEvents.test.ts", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 77, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "c4a48491e", + "time": 1775764879000, + "subject": "feat(FN-1232): add remote node mesh dashboard integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "94df3daea", + "time": 1776464475000, + "subject": "fix(FN-2024): gate task SSE subscriptions by active view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-tracking-reconciler.test.ts", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 6, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 40, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "d7b855c31", + "time": 1778952703000, + "subject": "test(FN-4748): complete Step 2 — reproduce tracking gaps with failing tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "2a802ab4c", + "time": 1778952704000, + "subject": "feat(FN-4748): complete Step 4 — add startup github tracking reconciliation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "41727cd3b", + "time": 1779596384000, + "subject": "feat(FN-5577): add github-tracking reconciler for deleted archived tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ffadb0c77", + "time": 1780273406000, + "subject": "FN-5792: fix GitHub auto-close reconciliation for soft-deleted tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "edde74d56", + "time": 1781060898000, + "subject": "FN-6146: harden dashboard test mocks and request helper", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "747bbf51f", + "time": 1781112876000, + "subject": "FN-6194: fix archived GitHub issue reconciliation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/github-tracking.test.ts", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 9, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 4, + "testOnlyRatio": 0.267, + "signalTally": { + "added-with-source": 1, + "test+source": 10, + "test-only-churn": 4, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 42, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 47, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "647fbf6f8", + "time": 1778394144000, + "subject": "feat(FN-3870): wire GitHub tracking issue creation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a9ecc8ae2", + "time": 1778395883000, + "subject": "feat(FN-3871): add tracking issue title/body formatters", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "95f6cd845", + "time": 1778415626000, + "subject": "feat(FN-3875): add GitHub tracking auth resolver and forced client auth mod", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "44c26e341", + "time": 1778418386000, + "subject": "feat(FN-3876): add GitHub tracking test coverage across settings, issues, s", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "48f0353b7", + "time": 1778452405000, + "subject": "feat(FN-3943): align tracking resolution to honor task-level override seman", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0c5c47933", + "time": 1778481369000, + "subject": "feat(FN-3963): clarify automation tracked-task creation semantics", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/remote-auth.test.ts", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 2, + "churn-keyword": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 61, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "a4c219f89", + "time": 1777203513000, + "subject": "feat(FN-2521): add remote auth handoff endpoints and login URL flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5a9535327", + "time": 1777210546000, + "subject": "fix(FN-2525): harden remote access auth and tunnel regression coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "4379922cc", + "time": 1777220343000, + "subject": "feat(FN-2585): remove top-level remote access toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e087f5ec5", + "time": 1777229383000, + "subject": "feat(FN-2586): merge fusion/fn-2586", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ff22e4888", + "time": 1777931695000, + "subject": "fix(tests): resolve 4 failing tests across cli and dashboard packages", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/scripts-routes.routes.test.ts", + "package": "packages/dashboard", + "valueScore": 7, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix+source": 1, + "test-only-churn": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 85, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "e5b1644ba", + "time": 1775076738000, + "subject": "feat(KB-643): add dashboard scripts management and execution", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7fd5704a8", + "time": 1775103908000, + "subject": "Removed unwanted files marked in .gitignore", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f8465342", + "time": 1775177464000, + "subject": "fix(FN-000): scope dashboard project flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0c8089b1d", + "time": 1776285207000, + "subject": "feat(FN-1644): rename default global data directory from ~/.pi/fusion to ~/.fusion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-user-cancel.test.ts", + "package": "packages/engine", + "valueScore": 7, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 42, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "500065433", + "time": 1778779909000, + "subject": "test(FN-4429): complete Step 4 — add executor user-cancel regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "40fee0c12", + "time": 1778779910000, + "subject": "fix(FN-4429): harden step-session abort path on user cancel", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "7d25d98b2", + "time": 1779383678000, + "subject": "fix(FN-5256): await disposal across task:moved-away and task:deleted", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-prompt-and-utils.test.ts", + "package": "packages/engine", + "valueScore": 7, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 30, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 45, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "de1e13d22", + "time": 1778534686000, + "subject": "feat(FN-4014): split merger monolith into domain-specific test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e291d8644", + "time": 1779507491000, + "subject": "feat: attribute Fusion as Co-authored-by trailer instead of primary author", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c89ad28e7", + "time": 1780041317000, + "subject": "FN-5646: preserve AI body when canonicalizing merge commits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0b410d54e", + "time": 1782124455000, + "subject": "FN-6915: surface user comments in agent prompts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/mesh-lease-manager.test.ts", + "package": "packages/engine", + "valueScore": 7, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "test-only-churn": 1, + "fix+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 47, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "e0a84b27f", + "time": 1778351517000, + "subject": "feat(FN-3452): document mesh lease recovery semantics", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ee121a9f7", + "time": 1778986724000, + "subject": "feat(FN-4825): complete Step 2 — emit mesh lease unreachable-owner audits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6fa9aef63", + "time": 1778991964000, + "subject": "feat(FN-4823): complete lease recovery central-claim reconciliation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a9dfb17b3", + "time": 1778991964000, + "subject": "test(FN-4823): expand central-claim recovery coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "405d24f9a", + "time": 1778991964000, + "subject": "fix(FN-4823): tighten lease recovery audit semantics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "01f0bf625", + "time": 1779000317000, + "subject": "fix(FN-4826): complete Step 6 — stabilize audit emission and tests", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/prompt-layers-backward-compat.test.ts", + "package": "packages/engine", + "valueScore": 7, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 46, + "lastTouched": "2026-05-10", + "evidence": [ + { + "sha": "616e3c7ec", + "time": 1778443412000, + "subject": "test(engine): improve coverage for prompt layers wiring, backward compat, and skill scoping", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "aed62b0dd", + "time": 1778443412000, + "subject": "fix(engine): address PR review — remove dead skill scoping, fix memory layer placement, clarify JSDoc, sort builtin allowlist, remove redundant tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "7a299ca54", + "time": 1778443412000, + "subject": "fix(engine): preserve memory-before-instructions ordering in dynamic layer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-completion-fanout.test.ts", + "package": "packages/engine", + "valueScore": 7, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 42, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "cc18c4f78", + "time": 1778792997000, + "subject": "test(FN-4523): complete Step 4 — add completion fan-out coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "211fd0817", + "time": 1778792997000, + "subject": "feat(FN-4523): complete Step 6 — docs, audit type, and verification fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e2de8fed6", + "time": 1778951282000, + "subject": "feat(FN-4742): complete Step 4 — migrate pool and self-healing removals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "83ed89338", + "time": 1779024180000, + "subject": "feat(FN-4879): merge fusion/fn-4879", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "61d687440", + "time": 1780883506000, + "subject": "FN-5770: promote workflow interpreter to guarded lifecycle driver", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing-in-progress-limbo.test.ts", + "package": "packages/engine", + "valueScore": 7, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 36, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "1a4525e0b", + "time": 1779280079000, + "subject": "feat(FN-5219): detect and recover in-progress limbo tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fd202e935", + "time": 1779320607000, + "subject": "feat(FN-5329): remove orphan rescue and branch-recovery primitives from eng", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0257bdf9d", + "time": 1780595807000, + "subject": "fix(ci): align tests/docs with issue-fix commits (recoveryRehome args, pi-ai mock Unknown/Record, new agent tools doc, hex-pattern comment reword)", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "3615b0b19", + "time": 1780883507000, + "subject": "FN-5941: stop todo/in-progress flapping", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-node-handler-extensions.test.ts", + "package": "packages/engine", + "valueScore": 7, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 18, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "71822f26d", + "time": 1780890224000, + "subject": "feat(engine): add workflow extension plugin seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "01523a658", + "time": 1780892350000, + "subject": "fix(engine): address workflow extension PR feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6d47d1abd", + "time": 1780896108000, + "subject": "fix(engine): tighten workflow extension feedback fixes", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/prompt-builder.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 7, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 2, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 55, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 62, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "74ebd238e", + "time": 1777084760000, + "subject": "chore: add pi-claude-cli + plugin-sdk __tests__/ dirs (test consolidation)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "7a55f491a", + "time": 1777161033000, + "subject": "fix(pi-claude-cli): rewrite bare custom tool refs in system prompt to MCP names", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "371f2d8e0", + "time": 1777186849000, + "subject": "fix(pi-claude-cli): unblock parameterless MCP tool calls in triage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "fed1d6975", + "time": 1777308709000, + "subject": "feat(FN-2703): support custom MCP tools in plan generation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2948ffac7", + "time": 1777652050000, + "subject": "feat(FN-2981): add droid-cli auth and status routes with experimental agent", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/NodesView.test.tsx", + "package": "packages/dashboard", + "valueScore": 23, + "positiveCount": 16, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 19, + "testOnlyCount": 3, + "testOnlyRatio": 0.158, + "signalTally": { + "added-with-source": 1, + "test+source": 14, + "fix+source": 1, + "test-only-churn": 3 + }, + "durationMs": 300, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.5, + "ageDays": 79, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "b9f6f8e56", + "time": 1775629832000, + "subject": "feat(FN-1081): add dashboard nodes management workflow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0304df348", + "time": 1775763710000, + "subject": "feat(FN-1228): enhance MeshTopology with peer awareness and status legend", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0489f035b", + "time": 1776041707000, + "subject": "fix: scope all git, activity, webhook, and summarize-title routes to correct project store", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "76dec1e9f", + "time": 1776185940000, + "subject": "feat(FN-1655): merge fusion/fn-1655", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "89dfabb35", + "time": 1776198624000, + "subject": "feat(FN-1838): merge fusion/fn-1838", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2cca71945", + "time": 1776350287000, + "subject": "feat(FN-1825): merge fusion/fn-1825", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-step-session.test.ts", + "package": "packages/engine", + "valueScore": 15.5, + "positiveCount": 16, + "negativeCount": 9, + "neutralCount": 1, + "timesTouched": 26, + "testOnlyCount": 5, + "testOnlyRatio": 0.192, + "signalTally": { + "added": 1, + "test-only-churn": 5, + "test+source": 15, + "churn-keyword": 6, + "fix+source": 5 + }, + "durationMs": 200, + "testCount": 58, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 12.1, + "ageDays": 49, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "f240683fc", + "time": 1778221265000, + "subject": "feat(FN-3720): split executor.test.ts into eight focused suites and add she", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "234c2a594", + "time": 1778481370000, + "subject": "feat(FN-3968): add tests for task env inheritance and isolation in spawn/ch", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e44139820", + "time": 1778523681000, + "subject": "feat(FN-3906): add frontend scope helpers for workflow step auto-skip", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7002427c9", + "time": 1778597230000, + "subject": "feat(FN-4070): add workflow revision forking for task retries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "95d742abb", + "time": 1778762112000, + "subject": "feat(FN-4468): add workflow step gateMode advisory gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a8e05b575", + "time": 1778768505000, + "subject": "feat(FN-4368): complete Step 3 — advisory workflow failures never block", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/board.test.ts", + "package": "packages/core", + "valueScore": 7.5, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "added": 1, + "test+source": 5, + "fix+source": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 25, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.8, + "ageDays": 86, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "789cc519d", + "time": 1775003248000, + "subject": "test(KB-606): add comprehensive test coverage across packages", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6d1c6411d", + "time": 1775316919000, + "subject": "fix(FN-850): harden merge readiness and reopen done tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "51d8e88a7", + "time": 1775438984000, + "subject": "feat(FN-996): add in-review to todo retry transition with UI and state cleanup", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "6f1237572", + "time": 1776460177000, + "subject": "feat(FN-1982): merge fusion/fn-1982", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/memory-compaction.test.ts", + "package": "packages/core", + "valueScore": 7.5, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "churn-keyword": 1, + "fix": 1, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 29, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.8, + "ageDays": 71, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "7af2ae494", + "time": 1776315830000, + "subject": "feat(FN-1741): add memory compaction feature", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "910c5ab38", + "time": 1776369912000, + "subject": "feat(FN-1892): merge fusion/fn-1892", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4e66baf20", + "time": 1776371507000, + "subject": "fix(FN-1895): improve companies.sh import error handling and add retry behavior", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "53cad3ba9", + "time": 1776574966000, + "subject": "fix(FN-2078): adopt canonical .fusion/memory paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "331d28312", + "time": 1776900690000, + "subject": "test(dashboard): realign DevServer tests with session-based component", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/memory-dreams.test.ts", + "package": "packages/core", + "valueScore": 7.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.8, + "ageDays": 69, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "985b8a4eb", + "time": 1776436582000, + "subject": "fix(FN-000): rebuild layered memory system", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "9bcefcb3a", + "time": 1776445426000, + "subject": "fix(FN-000): process agent memory dreams", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a555868b7", + "time": 1777482608000, + "subject": "test(memory): cover dream session-state extraction and undefined output", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "17b7502c6", + "time": 1777987953000, + "subject": "feat(FN-3197): refresh qmd after agent dream writes and normalize agent-mem", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DashboardLoader.test.tsx", + "package": "packages/dashboard", + "valueScore": 7.5, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 2, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 5 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.8, + "ageDays": 78, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "35abe6768", + "time": 1775702325000, + "subject": "feat(FN-1238): add dashboard loading screen with animated loader component", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c6e978286", + "time": 1778960997000, + "subject": "feat(FN-4779): merge fusion/fn-4779", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f3901808e", + "time": 1778963096000, + "subject": "feat(FN-4780): complete Step 5 — clear SWR caches on version update", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bb3f204a7", + "time": 1778966594000, + "subject": "test(FN-4787): fix dashboard loader duplicate mock declaration", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4caee9be3", + "time": 1779003828000, + "subject": "test(FN-4854): cover chat-room cache hydration and invalidation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/auth-middleware-integration.test.ts", + "package": "packages/dashboard", + "valueScore": 7.5, + "positiveCount": 7, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 1, + "testOnlyRatio": 0.111, + "signalTally": { + "added": 1, + "test-only-churn": 1, + "test+source": 7, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.8, + "ageDays": 71, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "65c9c2f6c", + "time": 1776256027000, + "subject": "feat(FN-1832): add daemon mode and auth-aware node connect", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a53ad1ae1", + "time": 1777215114000, + "subject": "test(FN-2531): expand headless remote access test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e087f5ec5", + "time": 1777229383000, + "subject": "feat(FN-2586): merge fusion/fn-2586", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07c552f82", + "time": 1777620797000, + "subject": "feat(FN-3044): add canonical mock helpers and migrate representative test s", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1e53b76ed", + "time": 1778534117000, + "subject": "feat(FN-4025): defer database integrity check and expose via health endpoin", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "afa2240fd", + "time": 1778597230000, + "subject": "feat(FN-4029): expose database health in API and store contracts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/heartbeat-monitor.test.ts", + "package": "packages/engine", + "valueScore": 7.5, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added": 1, + "test+source": 5, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 45, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.8, + "ageDays": 52, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "88171eb5b", + "time": 1777928727000, + "subject": "feat(FN-3308): fix CSS token consistency in settings and task detail modals", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "2d6187d9c", + "time": 1777987953000, + "subject": "feat(FN-3475): merge fusion/fn-3475", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f2fadd10", + "time": 1778044715000, + "subject": "feat(engine): gate executor and heartbeat on allowParallelExecution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e004b205d", + "time": 1778044715000, + "subject": "feat(agents): decouple heartbeat from task state, add allowParallelExecution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7d02ac81e", + "time": 1778085831000, + "subject": "feat(FN-3593): add test isolation CI enforcement, fix stuck-requeue race, a", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "44a9fb8ed", + "time": 1778481370000, + "subject": "feat(FN-3958): add heartbeat timer reconciliation self-healing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-branch-groups.test.ts", + "package": "packages/dashboard", + "valueScore": 16.5, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 4, + "fix": 2, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": 200, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.4, + "ageDays": 25, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "e9de195ef", + "time": 1780314439000, + "subject": "FN-5822: wire shared branch-group visibility and merge controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "88b4b0d5b", + "time": 1780503824000, + "subject": "fix(FN-branch-group): unify landed/completion predicate in core (U2)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "508b9c44d", + "time": 1780505214000, + "subject": "fix(FN-branch-group): add engine.promoteBranchGroup bridge method (U4)", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "415470c7b", + "time": 1780507230000, + "subject": "feat(FN-branch-group): sync group PR as members land + terminal lifecycle (U6)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "e54417c98", + "time": 1780515805000, + "subject": "fix(FN-branch-group): security, parity, reconcile-on-read, N+1 review residuals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/Column.test.tsx", + "package": "packages/dashboard", + "valueScore": 43.5, + "positiveCount": 25, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 27, + "testOnlyCount": 1, + "testOnlyRatio": 0.037, + "signalTally": { + "added-with-source": 1, + "test+source": 19, + "fix+source": 5, + "churn-keyword": 1, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 500, + "testCount": 39, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.2, + "ageDays": 92, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "133fc5929", + "time": 1774495876000, + "subject": "feat(HAI-051): add column flash animation on count increase", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b93bcc0ef", + "time": 1774838204000, + "subject": "fix(KB-043): fix type errors and test failures across all packages", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8c46ef3cc", + "time": 1774849204000, + "subject": "feat(KB-074): add quick task creation with QuickEntryBox and NewTaskModal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a7de078fe", + "time": 1774895215000, + "subject": "feat(KB-129): dashboard performance optimizations", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/plugin-scaffold.test.ts", + "package": "packages/cli", + "valueScore": 8, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 77, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "749babf52", + "time": 1775786652000, + "subject": "feat(FN-1114): merge fusion/fn-1114 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9cbb54906", + "time": 1780356052000, + "subject": "FN-5843: scaffold standalone external-author plugins with reference template", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0a418e687", + "time": 1780368028000, + "subject": "FN-5844: add plugin dev loop and external authoring docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "30e747beb", + "time": 1781351091000, + "subject": "FN-6351: add plugin scaffold dev toolchain dependencies", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "59f2596c6", + "time": 1781476175000, + "subject": "FN-6435: add plugin scaffold state", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/project-resolver.test.ts", + "package": "packages/cli", + "valueScore": 8, + "positiveCount": 7, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 3, + "testOnlyRatio": 0.3, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix+source": 2, + "test-only-churn": 3, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 47, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 86, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "25a543844", + "time": 1775025696000, + "subject": "feat(KB-619): add multi-project CLI support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "81a1adb20", + "time": 1775052970000, + "subject": "feat(KB-619): add CLI multi-project commands and --project flag support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b23fd18ec", + "time": 1775073603000, + "subject": "feat(KB-619): add multi-project CLI resolution and commands", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ca72ec81a", + "time": 1775362063000, + "subject": "fix(FN-952): activate projects after CLI registration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "4c843a60f", + "time": 1775669895000, + "subject": "test(FN-1283): expand CLI settings and routing coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/branch-assignment.test.ts", + "package": "packages/core", + "valueScore": 8, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 25, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "9ba3a8e45", + "time": 1780303199000, + "subject": "FN-5826: centralize branch assignment derivation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e54417c98", + "time": 1780515805000, + "subject": "fix(FN-branch-group): security, parity, reconcile-on-read, N+1 review residuals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/branch-group-completion.test.ts", + "package": "packages/core", + "valueScore": 8, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 22, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "88b4b0d5b", + "time": 1780503824000, + "subject": "fix(FN-branch-group): unify landed/completion predicate in core (U2)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/research-settings.test.ts", + "package": "packages/core", + "valueScore": 8, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 56, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "1b6ee247f", + "time": 1777600139000, + "subject": "feat(FN-2995): export research settings resolver for dashboard alias builds", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a02b42106", + "time": 1777954882000, + "subject": "feat(FN-3313): add plugin slot registry, planning mode rewind, and docker n", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "af82119a7", + "time": 1778175152000, + "subject": "feat(FN-3705): gate research tools behind experimental flag", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e69631ec2", + "time": 1778380869000, + "subject": "feat(FN-3901): add builtin research web-search provider as default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "11e9d5b2b", + "time": 1778630672000, + "subject": "feat(FN-4135): add always-on web search with locked provider setting", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/shadcn-gray-theme.test.ts", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 5, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "4672203ac", + "time": 1782038456000, + "subject": "FN-6814: add Shadcn Gray theme variant", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a1cac3a6a", + "time": 1782167023000, + "subject": "fix(dashboard): replace quick chat with modal chat", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "4ed84be7d", + "time": 1782199255000, + "subject": "fix(FN-6950): polish dashboard modal and chat chrome", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/terminal-input.test.ts", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 6, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 1, + "testOnlyRatio": 0.111, + "signalTally": { + "fix": 1, + "added": 1, + "test+source": 6, + "fix+source": 1, + "test-only-churn": 1, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 78, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "665132e52", + "time": 1775701189000, + "subject": "fix(FN-1235): restore terminal text input interaction", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + }, + { + "sha": "d6b7d076d", + "time": 1776570972000, + "subject": "feat(FN-2075): merge fusion/fn-2075", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7a33b5c1d", + "time": 1776572221000, + "subject": "fix(FN-000): harden mobile terminal focus capture for soft keyboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6bb120525", + "time": 1781408814000, + "subject": "FN-6424: scope terminal symbols font glyph ranges", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1bd8f6de6", + "time": 1781747333000, + "subject": "FN-6603: fix mobile terminal font measurement", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/api/__tests__/chat-rooms-api.test.ts", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 47, + "lastTouched": "2026-05-16", + "evidence": [ + { + "sha": "05016de3d", + "time": 1778347865000, + "subject": "fix(FN-3808): increase create-room member role typography", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "e240993d5", + "time": 1778837010000, + "subject": "feat(FN-4583): complete Step 4 — fetch newest chat room message window", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "207b62a31", + "time": 1778950614000, + "subject": "feat(FN-4739): complete Step 4 — add room clear API helper", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/BranchGroupCard.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 25, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "e9de195ef", + "time": 1780314439000, + "subject": "FN-5822: wire shared branch-group visibility and merge controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "837678186", + "time": 1780356261000, + "subject": "FN-5845: fix mobile agent log scroll and add collapsible branch group card", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9512e9833", + "time": 1780507878000, + "subject": "feat(FN-branch-group): surface group PR controls in dashboard + CLI (U7)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ConfirmDialog.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 60, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "410a438a7", + "time": 1777287925000, + "subject": "feat(FN-2639): replace native confirms with dashboard confirm dialog", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "27544a188", + "time": 1777913514000, + "subject": "feat(FN-3374): update mobile fullscreen modal selector assertion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "44562cdf7", + "time": 1779108674000, + "subject": "feat(FN-4996): complete Step 1 — add tertiary confirm choice", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6aa1ff0fb", + "time": 1779594241000, + "subject": "feat(FN-5475): add allow-resurrection control to task delete flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "66925816b", + "time": 1782149174000, + "subject": "feat(dashboard): move Planning+Missions below Graph (before Agents); confirm dialog renders above floating modals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/DockFilesView.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 3, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "13bd2e473", + "time": 1782146847000, + "subject": "feat(dashboard): list-header one-row, file pop-out opens current file, taller overview buttons; fix redesign test suite", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ce6c0fb0b", + "time": 1782169291000, + "subject": "fix(dashboard): align view headers and toolbars", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f9043d733", + "time": 1782182930000, + "subject": "fix(dashboard): polish workflow and chrome defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MessageComposer.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 26, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 79, + "lastTouched": "2026-06-01", + "evidence": [ + { + "sha": "7cc4ee5eb", + "time": 1775586119000, + "subject": "feat(FN-989): add inter-agent messaging system with mailbox UI and CLI commands", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4d8da65cb", + "time": 1775777741000, + "subject": "feat(FN-1358): replace text input with always-dropdown in MessageComposer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7d02ac81e", + "time": 1778085831000, + "subject": "feat(FN-3593): add test isolation CI enforcement, fix stuck-requeue race, a", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0efba0890", + "time": 1778175671000, + "subject": "feat(FN-3588): add immediate wake controls for agent inbox and message API", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0c87f4278", + "time": 1778264809000, + "subject": "feat(FN-3750): stabilize mailbox mobile keyboard and wake handling", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "a04cf1b8a", + "time": 1778347865000, + "subject": "feat(FN-3824): remove dashboard roadmap backend and add reports plugin scaf", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/nodes-view-mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix": 2, + "added": 1, + "fix+source": 1, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 69, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "8fb9237da", + "time": 1776471660000, + "subject": "fix(FN-1988): improve dashboard mobile view ergonomics", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + }, + { + "sha": "d6c8f1118", + "time": 1777048696000, + "subject": "fix(FN-2444): polish node dashboard UX and discovery core handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5dcb739bb", + "time": 1777900332000, + "subject": "feat(FN-3112): tokenize NodesView border-radius and motion styles", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f58fb8955", + "time": 1779506442000, + "subject": "fix(engine-tests): eliminate temp-dir leak and raise subprocess guard for concurrent workspace runs", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/overflowViewRegistry.test.tsx", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 4, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "32455363d", + "time": 1782075132000, + "subject": "FN-6845: add resizable right dock for More views", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e77f785fb", + "time": 1782093336000, + "subject": "FN-6890: rename documents navigation to artifacts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4fec13992", + "time": 1782098913000, + "subject": "FN-6881: move stash recovery into Git Manager", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5b33da926", + "time": 1782100528000, + "subject": "FN-6882: move toolbar tools into right dock", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "744bb384d", + "time": 1782124455000, + "subject": "feat(dashboard): Usage back to header; Skills/Memory after Mailbox; tests updated", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/visibilitySuspension.test.ts", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 47, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "ed6d2e242", + "time": 1778347865000, + "subject": "fix(FN-3838): suppress suspended-tab chat load failure toasts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "0dc42334c", + "time": 1778700367000, + "subject": "feat(FN-4350): complete Step 1 — visibility became-visible subscription", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b6243d68f", + "time": 1781108508000, + "subject": "FN-6197: suppress tab-resume fetch errors in dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-worktrunk.test.ts", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 41, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "d733b0192", + "time": 1778913583000, + "subject": "feat(FN-4702): complete Step 2 — worktrunk approval routes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9011c2107", + "time": 1779288297000, + "subject": "feat(FN-5320): canonicalize worktrunk binary name and manifest", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/subtask-breakdown.test.ts", + "package": "packages/dashboard", + "valueScore": 8, + "positiveCount": 10, + "negativeCount": 5, + "neutralCount": 1, + "timesTouched": 16, + "testOnlyCount": 3, + "testOnlyRatio": 0.188, + "signalTally": { + "added-with-source": 1, + "test+source": 10, + "test-only-churn": 3, + "churn-keyword": 4, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 37, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 78, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "90fbf3e39", + "time": 1775653348000, + "subject": "feat(FN-1145): harden dashboard SSE streams with replay and reconnect", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5d540f7c7", + "time": 1775662017000, + "subject": "feat(FN-1147): rehydrate AI sessions across server restarts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cf5c862db", + "time": 1775670021000, + "subject": "test(FN-1281): expand mission and subtask test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0ff6d42c0", + "time": 1775686246000, + "subject": "feat(FN-1152): add retry flows for failed AI planning sessions", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "e2fe909d2", + "time": 1775874742000, + "subject": "feat(FN-1446): wire planning + subtask prompt override resolution with regression tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "936f71aa2", + "time": 1776043501000, + "subject": "feat(FN-1479): restore projectId on subtask session rehydration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-action-gate.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "fix+source": 1, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 49, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "667761a88", + "time": 1778187163000, + "subject": "feat(FN-3547): add runtime action classification and gating system for agen", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2e3be32f1", + "time": 1778202432000, + "subject": "feat(FN-3560): add permanent agent gating enforcement in pi with tool class", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ae2fe3548", + "time": 1778229463000, + "subject": "fix(FN-3724): exempt internal coordination tools from action gate", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2005a0f6e", + "time": 1778249938000, + "subject": "feat(FN-3731): add action-gate reload endpoint for reloadable exempt-tools", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fbc47ec49", + "time": 1778265791000, + "subject": "feat(FN-3724): add coordination tools and permanent-agent action gating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6ee85daa4", + "time": 1778297440000, + "subject": "feat(FN-3548): add agent action routes and approval pause/resume lifecycle", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/derive-subject-summary.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 50, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "b81196e3a", + "time": 1778112406000, + "subject": "fix(merger): prefer step headline subject + add autostash race-rescue", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "9a8311729", + "time": 1778115859000, + "subject": "fix(merger): address code-review findings on autostash + observer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-column-agent-principal.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 21, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "41f25d5c5", + "time": 1780643953000, + "subject": "feat(engine): effective column agent becomes the execution principal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d05d5f575", + "time": 1780646269000, + "subject": "fix(review): apply autofix feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2a0223472", + "time": 1780676944000, + "subject": "Address PR review feedback (#1432)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "59364e7c5", + "time": 1780693190000, + "subject": "Address PR review feedback round 2 (#1432)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f9043d733", + "time": 1782182930000, + "subject": "fix(dashboard): polish workflow and chrome defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/node-health-monitor.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 79, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "438aff290", + "time": 1775627769000, + "subject": "feat(FN-1079): add remote node runtime orchestration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bddf86346", + "time": 1775967196000, + "subject": "fix: suppress execution output on stdout", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "878fba40a", + "time": 1778465585000, + "subject": "feat(FN-3960): add mesh replay outage contracts and runtime hooks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/peer-exchange-service.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 31, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 77, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "159a11746", + "time": 1775766149000, + "subject": "feat(FN-1224): add peer gossip protocol for mesh network synchronization", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d6a0ac621", + "time": 1776348647000, + "subject": "feat(FN-1822): add settings sync between mesh nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f35ea101c", + "time": 1776453219000, + "subject": "fix(FN-1572): stabilize fusion agent execution", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "29692dbbc", + "time": 1778177727000, + "subject": "feat(FN-3464): wire shared state in peer exchange service (FN-3464 Step 1)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "878fba40a", + "time": 1778465585000, + "subject": "feat(FN-3960): add mesh replay outage contracts and runtime hooks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/scheduler-workflow-cutover.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 3, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "65c4dc543", + "time": 1782189905000, + "subject": "fix(engine): harden workflow runtime cutover", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "e60b1378b", + "time": 1782191850000, + "subject": "fix(engine): address workflow cutover review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/spec-staleness.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 20, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 74, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "db6e51d58", + "time": 1776041362000, + "subject": "feat(FN-1646): add stale-spec guard to prevent execution of outdated tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "636401a53", + "time": 1777232705000, + "subject": "feat(FN-2603): merge fusion/fn-2603 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ce6ebb7b8", + "time": 1780203180000, + "subject": "fix(engine): preserve parked progress through stale-spec checks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/transient-error-detector.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 8, + "negativeCount": 3, + "neutralCount": 2, + "timesTouched": 13, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 10, + "churn-keyword": 5, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 57, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 87, + "lastTouched": "2026-06-17", + "evidence": [ + { + "sha": "bff0c13d8", + "time": 1774886107000, + "subject": "feat(KB-159): complete Step 4 — update frontend for streaming display", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e8e77ec23", + "time": 1775363767000, + "subject": "feat(FN-955): add 'request was aborted' to transient error patterns", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e5391a05a", + "time": 1775365422000, + "subject": "feat(FN-957): filter silent transient errors from executor and triage logs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4bd3dc5c2", + "time": 1776581225000, + "subject": "Cleanup and fix transient error detection in review", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a59d058ad", + "time": 1776843788000, + "subject": "fix(FN-LOCAL): refresh docs and retry codex server errors", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/tunnel-process-manager.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 61, + "lastTouched": "2026-04-30", + "evidence": [ + { + "sha": "db9f4ba57", + "time": 1777195228000, + "subject": "feat(FN-2519): add remote tunnel manager for settings sync", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5a9535327", + "time": 1777210546000, + "subject": "fix(FN-2525): harden remote access auth and tunnel regression coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e087f5ec5", + "time": 1777229383000, + "subject": "feat(FN-2586): merge fusion/fn-2586", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "48f2dd0de", + "time": 1777552993000, + "subject": "feat(FN-2976): detect and display external Tailscale funnel tunnels in remo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktrunk-installer.test.ts", + "package": "packages/engine", + "valueScore": 8, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added": 1, + "fix": 1, + "test+source": 4, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 41, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "8f7697198", + "time": 1778901898000, + "subject": "test(FN-4624): add worktrunk installer tests and gating classification tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "7851f44a5", + "time": 1778901898000, + "subject": "fix(FN-4624): fix TypeScript errors in test file", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "3defcbe84", + "time": 1778905385000, + "subject": "feat(FN-4706): complete Step 2 — disable worktrunk auto-install path", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "412e59e1f", + "time": 1778913583000, + "subject": "feat(FN-4702): complete Step 1 — engine approval helpers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f77bc253", + "time": 1778921896000, + "subject": "feat(FN-4717): complete Step 3 — widen worktrunk installer contract", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b85506237", + "time": 1778922778000, + "subject": "test(FN-4711): complete Step 4 — cover worktrunk install audit emission", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/i18n/src/__tests__/config.test.ts", + "package": "packages/i18n", + "valueScore": 8, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 11.1, + "ageDays": 22, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "9072d7130", + "time": 1780498831000, + "subject": "feat(i18n): add @fusion/i18n package, catalogs, and i18next-cli tooling (U2)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4f6013ff3", + "time": 1780502596000, + "subject": "test+refactor(i18n): close code-review residuals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "75213bbb0", + "time": 1780514942000, + "subject": "fix(i18n): address PR review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "083ebf813", + "time": 1781963195000, + "subject": "FN-6780: make i18n status check key parity", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-tools.test.ts", + "package": "packages/engine", + "valueScore": 63, + "positiveCount": 35, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 40, + "testOnlyCount": 2, + "testOnlyRatio": 0.05, + "signalTally": { + "added-with-source": 1, + "test+source": 26, + "fix+source": 11, + "test-only-churn": 2, + "churn-keyword": 3 + }, + "durationMs": 700, + "testCount": 99, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10.9, + "ageDays": 70, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "9e1c18e0c", + "time": 1776372610000, + "subject": "feat(FN-1949): add send_message and read_messages agent tools", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "80e49b8e4", + "time": 1776388858000, + "subject": "feat(FN-1976): forward mailbox message events end to end", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "985b8a4eb", + "time": 1776436582000, + "subject": "fix(FN-000): rebuild layered memory system", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "728022366", + "time": 1776444743000, + "subject": "fix(FN-000): search agent memory through memory tools", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "9bcefcb3a", + "time": 1776445426000, + "subject": "fix(FN-000): process agent memory dreams", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d1c097e82", + "time": 1776575935000, + "subject": "fix(FN-2090): log and cover engine warning fallbacks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/git.test.ts", + "package": "packages/cli", + "valueScore": 8.5, + "positiveCount": 7, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 1, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10.5, + "ageDays": 87, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "d9bf79026", + "time": 1774918011000, + "subject": "feat(KB-203): add git commands to CLI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1840f17eb", + "time": 1775024923000, + "subject": "feat(KB-503): add multi-project CLI support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "54767f60e", + "time": 1775051690000, + "subject": "feat(KB-648): enable parallel test execution and optimize test performance", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "c671beae9", + "time": 1775052135000, + "subject": "feat(KB-503): add multi-project CLI support with project subcommands", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07adb42d6", + "time": 1775081218000, + "subject": "feat(KB-503): merge kb/kb-503", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-ir-resolver.test.ts", + "package": "packages/core", + "valueScore": 8.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10.5, + "ageDays": 21, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "cfc9bb5fd", + "time": 1780583642000, + "subject": "fix(core): shared workflow-IR resolver, prod branch persistence + pruning, latest-run JOIN, sweep reservation-leak fix (#1402 #1407 #1412 #1413)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "f77aa073c", + "time": 1780950778000, + "subject": "FN-6025: fix builtin coding auto-merge review flags", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9c84ba2e9", + "time": 1780950778000, + "subject": "FN-6035: align builtin coding workflow registry with canonical IR", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4ffd0a2dd", + "time": 1780952057000, + "subject": "FN-6030: fix workflow terminal notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "849b40d22", + "time": 1782197794000, + "subject": "FN-6947: tolerate workflow project identity failures", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/sse-bus.test.ts", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10.5, + "ageDays": 69, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "39e833b91", + "time": 1776461503000, + "subject": "feat(FN-2014): merge fusion/fn-2014", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "01aeb449d", + "time": 1776506029000, + "subject": "fix(FN-2048): prevent stale SSE reconnects after channel teardown", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b8012c288", + "time": 1777029824000, + "subject": "test(FN-0000): update SSE bus URL expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f9cf3f1bd", + "time": 1779070319000, + "subject": "feat(FN-4921): merge fusion/fn-4921", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fade815c8", + "time": 1782236594000, + "subject": "fix(dashboard): reduce SSE keepalive churn", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useProjects.test.ts", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 7, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 1, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 7, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10.5, + "ageDays": 85, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "fa90b69f2", + "time": 1775104582000, + "subject": "feat(KB-662): complete Step 2 — add visibility refresh tests for useProjects", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4e38c5f7d", + "time": 1776129691000, + "subject": "feat(FN-1719): rebuild eslint baseline and add memory lessons", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "b80cae1b5", + "time": 1776506880000, + "subject": "feat(FN-1850): aggregate projects across connected nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7cc4563a1", + "time": 1776585816000, + "subject": "Cleanup and fix transient error detection in review", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "eed16abac", + "time": 1778291056000, + "subject": "feat(FN-3509): document node mapping availability UI in dashboard guide", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-approval-secrets.test.ts", + "package": "packages/dashboard", + "valueScore": 8.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix": 1, + "fix+source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10.5, + "ageDays": 39, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "abb0f63aa", + "time": 1779051272000, + "subject": "feat(FN-4915): complete Step 2-3 — add secret audit emitters and approval audits", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/run-audit.test.ts", + "package": "packages/engine", + "valueScore": 8.5, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10.5, + "ageDays": 46, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "3ec12f10e", + "time": 1778481370000, + "subject": "feat(FN-3791): add agent provisioning approval guards and policy enforcemen", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5a76a8907", + "time": 1779399299000, + "subject": "feat(FN-5351): add merge audit telemetry with typed events and integration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f6f38676b", + "time": 1779406231000, + "subject": "feat(FN-5226): add scope auto-widen layer 2.5 to merger for attribution-bas", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "921e0e616", + "time": 1779410814000, + "subject": "feat(FN-5358): add smart pull API route with stash conflict detection and r", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e5357a4af", + "time": 1779541611000, + "subject": "feat(FN-5359): add push-to-origin button and hook to merge advance notice", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "14bc63e81", + "time": 1779566808000, + "subject": "feat(FN-5419): add stash conflict modal gating and smart pull routing for m", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-step-readonly-allowlist.test.ts", + "package": "packages/engine", + "valueScore": 8.5, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10.5, + "ageDays": 42, + "lastTouched": "2026-05-31", + "evidence": [ + { + "sha": "af3550bb6", + "time": 1778765043000, + "subject": "feat(FN-4366): enforce readonly tool allowlist for workflow steps", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "25d072082", + "time": 1778830598000, + "subject": "feat(FN-4569): add fn_feature_update mission tool", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "27095d1fa", + "time": 1778839656000, + "subject": "feat(FN-4578): complete Step 6 — classify fn_milestone_update as mutating", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0c139a455", + "time": 1778862660000, + "subject": "feat(FN-4618): add inline in-review move control with meta row", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3b594879a", + "time": 1780155578000, + "subject": "FN-5713: add mission update tool and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0ffe7f060", + "time": 1780241521000, + "subject": "FN-5762: add mission hierarchy delete tools with linked-task guards", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pi.test.ts", + "package": "packages/engine", + "valueScore": 27.5, + "positiveCount": 19, + "negativeCount": 7, + "neutralCount": 1, + "timesTouched": 27, + "testOnlyCount": 3, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 5, + "test+source": 17, + "fix+source": 6, + "test-only-churn": 3 + }, + "durationMs": 300, + "testCount": 51, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10.5, + "ageDays": 84, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "c82b99740", + "time": 1775184755000, + "subject": "feat(FN-742): add describeModel helper and log model in agent creation sites", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4c2be10d7", + "time": 1775357268000, + "subject": "feat(FN-882): add loop detection recovery with compact-and-resume", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "6ccbeb3e2", + "time": 1776194133000, + "subject": "feat(FN-1795): merge fusion/fn-1795", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7ef373737", + "time": 1776274940000, + "subject": "feat(FN-1877): add auto-compaction on context window errors to promptWithFallback", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "985b8a4eb", + "time": 1776436582000, + "subject": "fix(FN-000): rebuild layered memory system", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2a981fc4d", + "time": 1776444065000, + "subject": "fix(FN-000): align qmd memory lifecycle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AppModals.test.tsx", + "package": "packages/dashboard", + "valueScore": 37.5, + "positiveCount": 20, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 21, + "testOnlyCount": 1, + "testOnlyRatio": 0.048, + "signalTally": { + "added-with-source": 1, + "fix+source": 5, + "test+source": 13, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 400, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10.4, + "ageDays": 71, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "653a25ecd", + "time": 1776299778000, + "subject": "feat(FN-1717): add scope selection controls to dashboard UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc43d2652", + "time": 1776967116000, + "subject": "fix(FN-2313): make PR auth checks gh-first across settings UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d3c9476ce", + "time": 1776974150000, + "subject": "feat(FN-2318): merge fusion/fn-2318", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7529d7a7e", + "time": 1777046065000, + "subject": "fix(FN-2404): scope onboarding first-task creation to active project", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "33853f9f2", + "time": 1777058290000, + "subject": "test(dashboard): consolidate AppModals ScheduledTasksModal forwarding", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "8e18fad15", + "time": 1777166557000, + "subject": "feat(FN-2559): merge fusion/fn-2559", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/serve.test.ts", + "package": "packages/cli", + "valueScore": 28.5, + "positiveCount": 29, + "negativeCount": 13, + "neutralCount": 1, + "timesTouched": 43, + "testOnlyCount": 8, + "testOnlyRatio": 0.186, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 7, + "fix+source": 6, + "test+source": 27, + "test-only-churn": 8, + "fix": 1, + "quarantine-ledger": 1 + }, + "durationMs": 300, + "testCount": 54, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 10.2, + "ageDays": 78, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "eac3f1c6a", + "time": 1775665616000, + "subject": "feat(FN-1225): add headless fn serve command with health checks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "82bc3a484", + "time": 1775753792000, + "subject": "fix: sync semaphore concurrency limit on every settings change", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "04f835f82", + "time": 1775776484000, + "subject": "feat(FN-1399): add background memory summarization after task completion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0266b6d00", + "time": 1775794966000, + "subject": "feat(FN-1468): wire plugin backend into dashboard and serve startup", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7b8960f3e", + "time": 1775796727000, + "subject": "feat(FN-1496): harden semaphore lane-vs-utility boundary", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2ece64dd7", + "time": 1775850466000, + "subject": "refactor(FN-1563): decouple CLI commands from UI dependencies", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mobile-header-controls.test.ts", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 87, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "254081879", + "time": 1774884689000, + "subject": "feat(KB-133): add mobile-responsive header with collapsible controls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "797ac1a8d", + "time": 1775227151000, + "subject": "feat(FN-766): add three-tier responsive header with tablet compact mode", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "074755fef", + "time": 1775247962000, + "subject": "feat(FN-788): nest Scripts under Terminal in compact overflow menu", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d9be6a838", + "time": 1775774332000, + "subject": "feat(FN-1335): render header search box as floating element below header", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "92b67d866", + "time": 1775839199000, + "subject": "fix(FN-1458): add safe-area-inset padding to mobile header floating search", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/OnboardingResumeCard.test.tsx", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "test+source": 6 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 72, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "5ba08aee2", + "time": 1776206460000, + "subject": "feat(FN-1704): add onboarding resume card for dismissed modals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6a5542d1d", + "time": 1776319226000, + "subject": "feat(FN-1861): restore completed steps in onboarding resume flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8a8f6bf93", + "time": 1776438098000, + "subject": "feat(FN-1998): instrument onboarding funnel analytics events", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1d1f1f0da", + "time": 1777096484000, + "subject": "feat(FN-2408): merge fusion/fn-2408", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8938bdf93", + "time": 1777125890000, + "subject": "feat(FN-2403): add project setup step to onboarding flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f0fbc5999", + "time": 1782128375000, + "subject": "feat(onboarding): align first-agent setup flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskTokenStatsPanel.test.tsx", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 9, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 2, + "testOnlyRatio": 0.182, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "fix+source": 2, + "churn-keyword": 2, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 61, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "522078fbb", + "time": 1777130773000, + "subject": "feat(FN-2458): merge fusion/fn-2458", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "78b09711a", + "time": 1777165596000, + "subject": "feat(FN-2557): expand task stats tab with execution insights", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4a819cf96", + "time": 1777429210000, + "subject": "fix(FN-2711): keep dashboard timing stats live", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b9b6d06ca", + "time": 1778122555000, + "subject": "feat(FN-3622): add canonical task-detail timing calculations and stats pane", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7490c3bd0", + "time": 1778735018000, + "subject": "fix(FN-4389): complete missing token usage parity and dashboard split", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "8539a3dec", + "time": 1778737289000, + "subject": "feat(FN-4388): complete remaining observability surfaces", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/model-onboarding-state.test.ts", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "test+source": 6 + }, + "durationMs": 100, + "testCount": 78, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 72, + "lastTouched": "2026-04-17", + "evidence": [ + { + "sha": "5ba08aee2", + "time": 1776206460000, + "subject": "feat(FN-1704): add onboarding resume card for dismissed modals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "123ec5949", + "time": 1776235480000, + "subject": "feat(FN-1862): add completion state tracking for onboarding", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "946b9e271", + "time": 1776237356000, + "subject": "feat(FN-1860): merge fusion/fn-1860", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6a5542d1d", + "time": 1776319226000, + "subject": "feat(FN-1861): restore completed steps in onboarding resume flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0a9fba6f8", + "time": 1776418709000, + "subject": "feat(FN-1937): track skipped onboarding steps in modal progress", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "24f0bf8d3", + "time": 1776429362000, + "subject": "feat(FN-1943): add post-onboarding setup recommendations panel", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/utility-mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix": 5, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 78, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "537d1857a", + "time": 1775663301000, + "subject": "feat(FN-1141): improve dashboard mobile adaptations", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "07cc2019f", + "time": 1776122404000, + "subject": "feat(FN-1700): merge fusion/fn-1700", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e6964068f", + "time": 1776480277000, + "subject": "fix(FN-2019): raise mobile toast position above bottom actions", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "4b027c381", + "time": 1776960221000, + "subject": "fix(FN-2292): increase mobile toast clearance and stabilize related tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7270d4113", + "time": 1777148752000, + "subject": "fix(FN-2513): anchor mobile toasts below header", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useBatchBadgeFetch.test.ts", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 1, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 87, + "lastTouched": "2026-04-28", + "evidence": [ + { + "sha": "b2c429389", + "time": 1774914084000, + "subject": "feat(KB-064): add batch GitHub badge status fetching", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f8465342", + "time": 1775177464000, + "subject": "fix(FN-000): scope dashboard project flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "055e7d84f", + "time": 1776023552000, + "subject": "test: remove waits from slow tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/ai-refine.test.ts", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 8, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 2, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 2, + "test+source": 6, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 42, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 87, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "62f87947f", + "time": 1774956037000, + "subject": "feat(KB-225): add AI text refinement feature to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "00d4a71d1", + "time": 1774981273000, + "subject": "test(KB-301): fix ai-refine.test.ts — mock @kb/engine to prevent dynamic import timeout", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "87e22f16a", + "time": 1775946183000, + "subject": "feat(FN-1445): add project-scoping and fallback handling for AI routes and missions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-budget.test.ts", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 77, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "028d7f44c", + "time": 1775805917000, + "subject": "feat(FN-1265): add agent budget settings UI and API", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "070ad2815", + "time": 1779169671000, + "subject": "feat(FN-5060): complete Step 7 — testing and verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-keys.test.ts", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 79, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "51152a7b5", + "time": 1775629946000, + "subject": "feat(FN-1119): add agent API key management APIs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "070ad2815", + "time": 1779169671000, + "subject": "feat(FN-5060): complete Step 7 — testing and verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-ratings.test.ts", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 77, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "26ff7eb90", + "time": 1775759620000, + "subject": "feat(FN-1186): add Performance tab to agent detail with ratings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "070ad2815", + "time": 1779169671000, + "subject": "feat(FN-5060): complete Step 7 — testing and verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-revisions.test.ts", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 79, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "8391818e2", + "time": 1775635968000, + "subject": "feat(FN-1120): add agent config revision history APIs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1c706769f", + "time": 1779240816000, + "subject": "test(dashboard): add deterministicGuardLocks to remaining @fusion/core mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-org-chart.test.ts", + "package": "packages/dashboard", + "valueScore": 9, + "positiveCount": 4, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 78, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "e3acec201", + "time": 1775654616000, + "subject": "feat(FN-1165): add agent org chart routes and API helpers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1c706769f", + "time": 1779240816000, + "subject": "test(dashboard): add deterministicGuardLocks to remaining @fusion/core mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/branch-autocorrect.test.ts", + "package": "packages/engine", + "valueScore": 9, + "positiveCount": 4, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 2, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "fix+source": 3 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 42, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "765838cc1", + "time": 1778774210000, + "subject": "test(FN-4474): add branch autocorrect unit coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f0a736bc0", + "time": 1778774902000, + "subject": "feat(FN-4474): merge fusion/fn-4474", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "a3ec2e55c", + "time": 1779510962000, + "subject": "fix(FN-5456): never create task branches from arbitrary HEAD in autocorrect", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdfe620fa", + "time": 1779511240000, + "subject": "fix(FN-5456): tighten branch-autocorrect verify and add real-git regression", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d9fe33fec", + "time": 1779519792000, + "subject": "fix(FN-5456): tidy autocorrect shell quoting and disambiguate checkout", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "934f2f0d0", + "time": 1780883507000, + "subject": "FN-6004: add execFile to engine child_process test mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/session-token-usage.test.ts", + "package": "packages/engine", + "valueScore": 9, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 60, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "d30edfda5", + "time": 1777290689000, + "subject": "feat: live task token usage and stats-tab fixes", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4e6440a12", + "time": 1778735018000, + "subject": "feat(FN-4389): complete Step 8 — run verification and fix regressions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7490c3bd0", + "time": 1778735018000, + "subject": "fix(FN-4389): complete missing token usage parity and dashboard split", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "48f18511d", + "time": 1778737289000, + "subject": "feat(FN-4388): complete Step 1 — engine cache metrics logs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8539a3dec", + "time": 1778737289000, + "subject": "feat(FN-4388): complete remaining observability surfaces", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "ef544597d", + "time": 1781827091000, + "subject": "FN-6665: group token analytics by runtime model", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/provider.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 9, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 3, + "timesTouched": 11, + "testOnlyCount": 1, + "testOnlyRatio": 0.091, + "signalTally": { + "added": 1, + "churn-keyword": 3, + "fix+source": 3, + "test+source": 6, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 50, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 62, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "74ebd238e", + "time": 1777084760000, + "subject": "chore: add pi-claude-cli + plugin-sdk __tests__/ dirs (test consolidation)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "679054905", + "time": 1777163916000, + "subject": "fix(pi-claude-cli): bump inactivity timeout from 180s to 300s", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "99afec0da", + "time": 1777164549000, + "subject": "fix(pi-claude-cli): defer to engine StuckTaskDetector instead of 300s subprocess kill", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "7960b3d4c", + "time": 1777425801000, + "subject": "fix(FN-2897): harden npm bundle packaging and merge recovery flows", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "0c9d9be85", + "time": 1777426721000, + "subject": "feat(FN-2898): expand Claude model coverage and subprocess diagnostics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f25aad9ff", + "time": 1777453655000, + "subject": "feat(FN-2938): merge fusion/fn-2938", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-instructions.test.ts", + "package": "packages/engine", + "valueScore": 19, + "positiveCount": 12, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 1, + "testOnlyRatio": 0.077, + "signalTally": { + "added-with-source": 1, + "test+source": 10, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 200, + "testCount": 61, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 10, + "ageDays": 79, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "335a20e1b", + "time": 1775600228000, + "subject": "feat(FN-1050): add per-agent custom instructions support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "750911a80", + "time": 1775634273000, + "subject": "feat(FN-1085): align agent routing and runtime contracts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "16467dce1", + "time": 1775654327000, + "subject": "feat(FN-1185): inject agent rating feedback into runtime instructions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3a6bd140e", + "time": 1775879224000, + "subject": "feat(FN-1444): complete Step 2 — include soul in agent instructions assembly", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "35084c8e2", + "time": 1775880760000, + "subject": "chore: snapshot WIP across dashboard, engine, and core", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07ddb1ca1", + "time": 1776417594000, + "subject": "feat(FN-1984): enrich chat and heartbeat prompts with agent context", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MobileNavBar.test.tsx", + "package": "packages/dashboard", + "valueScore": 81.5, + "positiveCount": 54, + "negativeCount": 8, + "neutralCount": 2, + "timesTouched": 64, + "testOnlyCount": 5, + "testOnlyRatio": 0.078, + "signalTally": { + "added-with-source": 1, + "test+source": 49, + "fix+source": 8, + "churn-keyword": 5, + "test-only-churn": 5, + "fix": 1 + }, + "durationMs": 800, + "testCount": 74, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.7, + "ageDays": 79, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "3bb58cd9b", + "time": 1775647231000, + "subject": "feat(FN-1108): add mobile bottom navigation to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "62f00aaac", + "time": 1775676624000, + "subject": "feat(FN-1301): add Projects action to mobile more sheet", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3d8abda54", + "time": 1775704627000, + "subject": "feat(FN-1291): add board/list toggle sub-buttons to MobileNavBar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b834233ba", + "time": 1775709751000, + "subject": "feat(FN-1303): redesign mobile nav with 4-tab structure", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6c9f48761", + "time": 1775710620000, + "subject": "feat(FN-1322): add missions tab to mobile nav bar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2711df9a7", + "time": 1775737337000, + "subject": "feat(FN-1305): add scripts submenu to MobileNavBar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/bundle-output.test.ts", + "package": "packages/cli", + "valueScore": 9.5, + "positiveCount": 19, + "negativeCount": 15, + "neutralCount": 1, + "timesTouched": 35, + "testOnlyCount": 15, + "testOnlyRatio": 0.429, + "signalTally": { + "added-with-source": 1, + "fix+source": 5, + "test+source": 11, + "fix": 3, + "churn-keyword": 5, + "test-only-churn": 15 + }, + "durationMs": 100, + "testCount": 28, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 90, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "b4577994b", + "time": 1774656641000, + "subject": "feat(KB-131): bundle workspace dependencies into CLI for npm publish", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "af1347861", + "time": 1774938750000, + "subject": "fix(KB-140): fix standalone CLI native asset packaging for terminal support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "371ec764b", + "time": 1775177725000, + "subject": "fix(FN-000): harden project migration runtime", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "fb9827b70", + "time": 1775191841000, + "subject": "fix(FN-745): improve fallback model recovery", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/oauth-credential-interop.test.ts", + "package": "packages/core", + "valueScore": 9.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 53, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "a3ce8e1f8", + "time": 1777874885000, + "subject": "fix(FN-XXX): unify codex auth and chat fallback", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "d91780d17", + "time": 1777963646000, + "subject": "feat(FN-3434): add Claude OAuth credential interop with verification and st", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "aa71ace10", + "time": 1781418006000, + "subject": "fix(auth): refresh expired Claude OAuth tokens", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/terminal-mobile-keyboard-layout.test.ts", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 9, + "testOnlyCount": 2, + "testOnlyRatio": 0.222, + "signalTally": { + "added": 1, + "fix+source": 3, + "test+source": 3, + "churn-keyword": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 81, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "ad56abc7e", + "time": 1775456819000, + "subject": "feat(FN-1025): harden mobile keyboard-open layout for terminal modal", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "dd409094f", + "time": 1775536546000, + "subject": "fix(FN-1043): fix terminal mobile keyboard layout", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1d1f1f0da", + "time": 1777096484000, + "subject": "feat(FN-2408): merge fusion/fn-2408", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "61f09b2e3", + "time": 1777144490000, + "subject": "fix(FN-2500): improve terminal modal sizing and input behavior", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "4e18453fa", + "time": 1777229079000, + "subject": "fix(terminal): tighten CSS selector in keyboard layout test", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/versionCheck.test.ts", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5 + }, + "durationMs": 100, + "testCount": 27, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 53, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "53ab441a9", + "time": 1777847971000, + "subject": "feat(FN-3333): fix spurious version reloads with deterministic build", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "8bc76ee52", + "time": 1777850807000, + "subject": "feat(FN-3334): add auto-reload setting and fix worktree project resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b852401e2", + "time": 1778263067000, + "subject": "feat(FN-3748): add workspace aliases for @fusion/* packages to desktop vite", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f9cf3f1bd", + "time": 1779070319000, + "subject": "feat(FN-4921): merge fusion/fn-4921", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19f8d8615", + "time": 1781039247000, + "subject": "FN-6124: add dashboard bundle version polling reload", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c9d48fb75", + "time": 1781076035000, + "subject": "FN-6180: fix stale dashboard asset reload handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/FloatingWindow.test.tsx", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 3, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "62a96e371", + "time": 1782130212000, + "subject": "feat(dashboard): floating windows (pop-out task detail, floating New Task), consolidate AI engine row", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "915d4b028", + "time": 1782155767000, + "subject": "fix(dashboard): unify movable task detail header", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a1cac3a6a", + "time": 1782167023000, + "subject": "fix(dashboard): replace quick chat with modal chat", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2d038e7ff", + "time": 1782197918000, + "subject": "feat(FN-6950): polish dashboard responsive chrome", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/nodes/__tests__/node-summary.test.ts", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 40, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 21, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "297a00d3d", + "time": 1780626415000, + "subject": "feat(dashboard): redesign workflow nodes as card-style with config summaries", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "904e68143", + "time": 1780883507000, + "subject": "FN-6006: name built-in workflow seam nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a504238d2", + "time": 1780901785000, + "subject": "feat(FN-0000): add workflow loop nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "91017050d", + "time": 1782025503000, + "subject": "fix: show plugin-contributed skills in the workflow editor", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "cf6718f3c", + "time": 1782105255000, + "subject": "FN-6892: show default model for configured prompt nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/swrCache.test.ts", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 40, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "167b2cf0c", + "time": 1778963090000, + "subject": "feat(FN-4780): complete Step 1 — add swr cache utility", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "672339619", + "time": 1779014095000, + "subject": "feat(FN-4859): complete Step 1 — extend swr cache keys", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7ad3449c8", + "time": 1779042836000, + "subject": "feat(FN-4924): complete Step 1 — add swr cache envelope ttl", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "13bcb8ed8", + "time": 1779046881000, + "subject": "feat(FN-4924): complete Step 1 — add tasks TTL constant", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bca388af8", + "time": 1779100494000, + "subject": "feat(FN-4963): complete Step 2 — add chat sessions cache key", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cfc70b21b", + "time": 1779272384000, + "subject": "feat(FN-5202): add SWR caching for chat agents, skills, and models", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-approval.test.ts", + "package": "packages/dashboard", + "valueScore": 9.5, + "positiveCount": 8, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 2, + "testOnlyRatio": 0.167, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "test+source": 7, + "test-only-churn": 2, + "fix": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 48, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "6ee85daa4", + "time": 1778297440000, + "subject": "feat(FN-3548): add agent action routes and approval pause/resume lifecycle", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "070421c0a", + "time": 1778347865000, + "subject": "feat(FN-3549): add mailbox approvals inbox and decision flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fe50c3a3a", + "time": 1778465585000, + "subject": "feat(FN-3956): execute provisioning on approval decisions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3ec12f10e", + "time": 1778481370000, + "subject": "feat(FN-3791): add agent provisioning approval guards and policy enforcemen", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d733b0192", + "time": 1778913583000, + "subject": "feat(FN-4702): complete Step 2 — worktrunk approval routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5993f41f5", + "time": 1778913583000, + "subject": "test(FN-4702): stabilize approval route tests and quality lane", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/auto-claim-snapshot.test.ts", + "package": "packages/engine", + "valueScore": 9.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 43, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "90ed849e0", + "time": 1778746247000, + "subject": "feat(FN-4401): complete Step 1 — add auto-claim snapshot manager", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "422e598a8", + "time": 1778746247000, + "subject": "fix(FN-4401): address snapshot review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f86061865", + "time": 1778746247000, + "subject": "feat(FN-4401): complete remaining auto-claim snapshot integration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9620a5075", + "time": 1782073541000, + "subject": "FN-6850: refresh auto-claim candidates before heartbeat claims", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d5ea17d8a", + "time": 1782084222000, + "subject": "FN-6873: exclude archived tasks from auto-claim scans", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-worktree-conflict.test.ts", + "package": "packages/engine", + "valueScore": 9.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 3, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 39, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "6aea112a2", + "time": 1779066642000, + "subject": "feat(FN-4973): reconcile stale active-session worktree entries in executor cleanup", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "665173d30", + "time": 1779070902000, + "subject": "fix(FN-4976): preserve live self-owned session bindings during stale cleanup", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f79837869", + "time": 1779339182000, + "subject": "feat(FN-5346): add post-completion defensive backstop and shared reconcile", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cf0101be7", + "time": 1779379583000, + "subject": "fix(FN-5256): keep live task worktrees through pause/resume races", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "7e7eb6299", + "time": 1781984794000, + "subject": "Harden orphan-worktree/stale-task-dir cleanup (code-review follow-up)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "09bd01baf", + "time": 1782101240000, + "subject": "feat(workspace): Phase A U1 — executor session scoping for workspace mode", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/mission-validation-trigger-gap.test.ts", + "package": "packages/engine", + "valueScore": 9.5, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 26, + "lastTouched": "2026-06-03", + "evidence": [ + { + "sha": "3255965ad", + "time": 1780159382000, + "subject": "FN-5715: gate mission feature completion on assertion validation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9c4e8edf3", + "time": 1780175240000, + "subject": "FN-5733: enforce mission completion-gate assertions for live Goals mission", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "159447014", + "time": 1780178666000, + "subject": "FN-5738: make mission loop no-assertion auto-pass deterministic", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "539673003", + "time": 1780188311000, + "subject": "FN-5755: harden mission validation recovery flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "acad46cc1", + "time": 1780241521000, + "subject": "FN-5764: expose mission assertion backfill through API and CLI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cc18206bc", + "time": 1780449086000, + "subject": "FN-5902: make mission validation AI-run all criteria", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/webhook-provider.test.ts", + "package": "packages/engine", + "valueScore": 9.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 58, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "8d606b45c", + "time": 1777411556000, + "subject": "feat(FN-2878): add webhook notification provider support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "68f34dd0f", + "time": 1777776954000, + "subject": "feat(FN-3008): notify when model settings fall back to defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fdf387b22", + "time": 1778304347000, + "subject": "feat(FN-3800): add session switcher to chat header and mobile switcher", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2d3af5b6c", + "time": 1778363936000, + "subject": "fix(FN-3886): resolve peer agent names in mail and notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2a26b0d34", + "time": 1778630673000, + "subject": "feat(FN-4178): add room message notification delivery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-names.test.ts", + "package": "packages/engine", + "valueScore": 9.5, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5 + }, + "durationMs": 100, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.5, + "ageDays": 92, + "lastTouched": "2026-06-01", + "evidence": [ + { + "sha": "b9d7c8990", + "time": 1774494565000, + "subject": "feat(HAI-034): use humanized worktree names instead of task-ID-based directories", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cd165cdb5", + "time": 1774496053000, + "subject": "feat(HAI-052): deduplicate worktree name word lists and add uniqueness tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "85c01c6f2", + "time": 1775684316000, + "subject": "refactor(FN-1317): rename remaining kb references to fn", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "327f0a9a4", + "time": 1780303045000, + "subject": "FN-5818: fix shared-branch-group execution to use per-task working branches", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useMobileKeyboard.test.ts", + "package": "packages/dashboard", + "valueScore": 10, + "positiveCount": 7, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 10, + "testOnlyCount": 1, + "testOnlyRatio": 0.1, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "churn-keyword": 3, + "fix+source": 4, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.1, + "ageDays": 60, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "90a28dfe2", + "time": 1777278148000, + "subject": "feat(FN-2661): add keyboard-aware mobile chat layouts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "442238196", + "time": 1777563392000, + "subject": "chore: remove changeset negation rules from .gitignore", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f740bf29e", + "time": 1777583523000, + "subject": "fix(engine): preserve step progress + worktree across internal task bounces", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c36945957", + "time": 1777837882000, + "subject": "feat(FN-3290): add changeset for modal keyboard isolation fix", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "330541049", + "time": 1777862068000, + "subject": "fix(dashboard): treat keyboard as closed on blur instead of waiting for vv settle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useTaskHandlers.test.ts", + "package": "packages/dashboard", + "valueScore": 10, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.1, + "ageDays": 78, + "lastTouched": "2026-04-30", + "evidence": [ + { + "sha": "95c27f395", + "time": 1775673599000, + "subject": "refactor(FN-1289): extract AppInner logic into hooks and modal component", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "833c7eb15", + "time": 1775689426000, + "subject": "feat(FN-1209): add quick entry image attachment flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "fb309e5ee", + "time": 1777501506000, + "subject": "fix(FN-XXX): show planning-created tasks without refresh", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b0cda2398", + "time": 1777508602000, + "subject": "feat(FN-2923): merge fusion/fn-2923", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-system.test.ts", + "package": "packages/dashboard", + "valueScore": 10, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 6, + "churn-keyword": 2, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.1, + "ageDays": 54, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "a01ae6008", + "time": 1777767940000, + "subject": "chore(test): split dashboard api/routes monoliths and document core fork-only constraint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "6dfe7c5e0", + "time": 1777933013000, + "subject": "feat(FN-3211): document app CPU metric in system stats", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f85b12412", + "time": 1778167635000, + "subject": "test(FN-000): resolve dashboard test noise", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2005a0f6e", + "time": 1778249938000, + "subject": "feat(FN-3731): add action-gate reload endpoint for reloadable exempt-tools", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "435963d23", + "time": 1779671596000, + "subject": "fix(context): trigger engine start as fire-and-forget in getProjectContext", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "614bec212", + "time": 1780518818000, + "subject": "fix(tui): stop vitest auto-kill firing on garbage memory metric and killing non-vitest processes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-review-verdicts.test.ts", + "package": "packages/engine", + "valueScore": 10, + "positiveCount": 12, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 17, + "testOnlyCount": 3, + "testOnlyRatio": 0.176, + "signalTally": { + "added": 1, + "churn-keyword": 3, + "fix+source": 1, + "test+source": 12, + "test-only-churn": 3 + }, + "durationMs": 100, + "testCount": 54, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.1, + "ageDays": 49, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "f240683fc", + "time": 1778221265000, + "subject": "feat(FN-3720): split executor.test.ts into eight focused suites and add she", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "24f2c5641", + "time": 1778274306000, + "subject": "fix(engine): defend autostash drop against TOCTOU race", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "0a4a07bda", + "time": 1778281986000, + "subject": "feat(FN-3757): normalize stepIndex lookups in task update map to match verd", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5d03d355c", + "time": 1778597231000, + "subject": "feat(FN-4067): add squash audit gate to merger with integration tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e0fcc7e2f", + "time": 1778597231000, + "subject": "feat(FN-4095): restore green verification gates and add QuickChatFAB regres", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5bed5a004", + "time": 1778597231000, + "subject": "feat(FN-4093): refactor PR checks workflow with new setup-node-pnpm composi", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/hybrid-executor.test.ts", + "package": "packages/engine", + "valueScore": 10, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 31, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.1, + "ageDays": 86, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "6307fea20", + "time": 1775013445000, + "subject": "feat(KB-501): implement multi-project runtime architecture with HybridExecutor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "438aff290", + "time": 1775627769000, + "subject": "feat(FN-1079): add remote node runtime orchestration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "42c27fcc3", + "time": 1777473323000, + "subject": "fix(FN-XXX): harden windows path handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6a6cb07d2", + "time": 1778285059000, + "subject": "feat(FN-3508): resolve node-specific working dirs and align runtime surfaces", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ba64de9f2", + "time": 1778956375000, + "subject": "feat(FN-4772): complete Step 1 — export HybridExecutor", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "63adddadf", + "time": 1778977869000, + "subject": "feat(FN-4813): complete Step 5 — add isolation transition runtime restart path", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/active-worktree-removal-liveness.test.ts", + "package": "packages/engine", + "valueScore": 10, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "churn-keyword": 1, + "fix": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.1, + "ageDays": 40, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "4c26aa6e9", + "time": 1778970967000, + "subject": "fix(FN-4811): refuse to force-remove worktrees actively bound to live sessions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "dcd6bf60f", + "time": 1778973928000, + "subject": "fix(FN-4811): recover from validation-failed remove + collapse broken FN-4806 nested branches", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "be9baad3b", + "time": 1778976489000, + "subject": "fix(FN-4807): unblock engine build with typed liveness mocks", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "08d1f0910", + "time": 1781993482000, + "subject": "FN-6796: preserve benign in-review pause aborts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "09bd01baf", + "time": 1782101240000, + "subject": "feat(workspace): Phase A U1 — executor session scoping for workspace mode", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/pi-claude-cli/src/__tests__/event-bridge.test.ts", + "package": "packages/pi-claude-cli", + "valueScore": 10, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 2, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 53, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 9.1, + "ageDays": 62, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "74ebd238e", + "time": 1777084760000, + "subject": "chore: add pi-claude-cli + plugin-sdk __tests__/ dirs (test consolidation)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "371f2d8e0", + "time": 1777186849000, + "subject": "fix(pi-claude-cli): unblock parameterless MCP tool calls in triage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "fed1d6975", + "time": 1777308709000, + "subject": "feat(FN-2703): support custom MCP tools in plan generation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5f3eb5e12", + "time": 1777681859000, + "subject": "fix(FN-XXXX): show chat streaming feedback during Claude waits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/dashboard.test.ts", + "package": "packages/cli", + "valueScore": 44, + "positiveCount": 48, + "negativeCount": 25, + "neutralCount": 1, + "timesTouched": 74, + "testOnlyCount": 15, + "testOnlyRatio": 0.203, + "signalTally": { + "added-with-source": 1, + "test+source": 40, + "churn-keyword": 15, + "fix": 7, + "fix+source": 11, + "test-only-churn": 15, + "quarantine-ledger": 1 + }, + "durationMs": 400, + "testCount": 85, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 8.9, + "ageDays": 91, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "5e76a0328", + "time": 1774579451000, + "subject": "feat(HAI-103): wire AuthStorage and ModelRegistry into dashboard server", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1812bf431", + "time": 1774729823000, + "subject": "feat(KB-137): add automatic port fallback when dashboard port is in use", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "f82316180", + "time": 1774729823000, + "subject": "feat(KB-157): add soft-pause (enginePaused) alongside hard-stop (globalPause)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "7d62a3abc", + "time": 1774851204000, + "subject": "feat(KB-093): add PR-first merge mode with configurable merge strategies", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "580b997d4", + "time": 1774881250000, + "subject": "feat(KB-107): merge kb/kb-107", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/mobile-feature-access-regression.test.tsx", + "package": "packages/dashboard", + "valueScore": 33, + "positiveCount": 19, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 21, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 14, + "fix+source": 5, + "churn-keyword": 2, + "fix": 1 + }, + "durationMs": 300, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.8, + "ageDays": 78, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "70a581089", + "time": 1775676575000, + "subject": "test(FN-1312): add mobile feature access regression guard", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "3d8abda54", + "time": 1775704627000, + "subject": "feat(FN-1291): add board/list toggle sub-buttons to MobileNavBar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6c9f48761", + "time": 1775710620000, + "subject": "feat(FN-1322): add missions tab to mobile nav bar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2019b71e6", + "time": 1775891902000, + "subject": "fix(FN-1488): add showQuickChatFAB setting to control Quick Chat FAB visibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "13b80f89e", + "time": 1776269438000, + "subject": "feat(FN-1330): consolidate mobile Board/List tabs into Tasks tab with header toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "326ea9b1c", + "time": 1776478644000, + "subject": "feat(FN-2033): gate agents view navigation behind feature flag", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/notification-dispatcher.test.ts", + "package": "packages/core", + "valueScore": 10.5, + "positiveCount": 8, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 2, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.7, + "ageDays": 58, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "770818e74", + "time": 1777411556000, + "subject": "feat(FN-2865): add notification provider abstractions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "68f34dd0f", + "time": 1777776954000, + "subject": "feat(FN-3008): notify when model settings fall back to defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f22db4d1f", + "time": 1778103746000, + "subject": "feat(FN-3180): add dreams notification event and harden plugin setup sync", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "61e941c74", + "time": 1778360641000, + "subject": "docs(FN-3887): clarify ntfy allowlist requirement for agent messages", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2a26b0d34", + "time": 1778630673000, + "subject": "feat(FN-4178): add room message notification delivery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "719b6284d", + "time": 1778710541000, + "subject": "feat(FN-4332): complete Step 1 — add failure notification settings defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/plugin-types.test.ts", + "package": "packages/core", + "valueScore": 10.5, + "positiveCount": 12, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 16, + "testOnlyCount": 2, + "testOnlyRatio": 0.125, + "signalTally": { + "added-with-source": 1, + "test+source": 13, + "test-only-churn": 2, + "churn-keyword": 3 + }, + "durationMs": 100, + "testCount": 108, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.7, + "ageDays": 77, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "f045c438c", + "time": 1775771132000, + "subject": "feat(FN-1111): merge fusion/fn-1111 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e740df66c", + "time": 1776227456000, + "subject": "feat(FN-1779): merge fusion/fn-1779", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "695e90859", + "time": 1776351211000, + "subject": "feat(FN-1914): merge fusion/fn-1914", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c187c670e", + "time": 1776888085000, + "subject": "feat(FN-2255): add plugin runtime discovery contracts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "76797f71c", + "time": 1777679370000, + "subject": "feat(FN-3093): address plugin manager responsive overflow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/milestone-slice-interview.test.ts", + "package": "packages/dashboard", + "valueScore": 10.5, + "positiveCount": 7, + "negativeCount": 2, + "neutralCount": 2, + "timesTouched": 11, + "testOnlyCount": 2, + "testOnlyRatio": 0.182, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 5, + "churn-keyword": 2, + "fix+source": 3 + }, + "durationMs": 100, + "testCount": 32, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.7, + "ageDays": 77, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "a983cfe7f", + "time": 1775811983000, + "subject": "feat(FN-1368): add milestone and slice interview sessions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4cb378477", + "time": 1775843043000, + "subject": "feat(FN-1369): add mission planning context propagation to tasks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "60d084915", + "time": 1777411555000, + "subject": "fix(dashboard,core): bound AI session prompt() with timeout + abort", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-agent-export.test.ts", + "package": "packages/dashboard", + "valueScore": 10.5, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 1, + "test-only-churn": 1, + "fix": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.7, + "ageDays": 78, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "15f3dca93", + "time": 1775680267000, + "subject": "feat(FN-1190): add agent export for Agent Companies packages", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "62f54dab4", + "time": 1777596014000, + "subject": "fix(test-harness): restore promisify(exec) + unblock CLI introspection probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1c706769f", + "time": 1779240816000, + "subject": "test(dashboard): add deterministicGuardLocks to remaining @fusion/core mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d9b5bb4b4", + "time": 1780572766000, + "subject": "fix(ci): spread real @fusion/core into partial test mocks; deterministic editor save test", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/auth-storage.test.ts", + "package": "packages/engine", + "valueScore": 22, + "positiveCount": 9, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 1, + "testOnlyRatio": 0.1, + "signalTally": { + "fix+source": 5, + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 4 + }, + "durationMs": 200, + "testCount": 26, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.7, + "ageDays": 70, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "bd8324eba", + "time": 1776397970000, + "subject": "fix(FN-1952): recover failed review tasks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "a99af2429", + "time": 1776399408000, + "subject": "fix(FN-1952): read legacy oauth auth", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "84ed84313", + "time": 1776618814000, + "subject": "feat(FN-2123): merge fusion/fn-2123", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "caa773cb9", + "time": 1777233656000, + "subject": "feat(FN-2606): merge fusion/fn-2606 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d01be28d9", + "time": 1777832922000, + "subject": "feat(FN-3305): add models.json API key fallback resolution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/plugin-runner.test.ts", + "package": "packages/engine", + "valueScore": 22, + "positiveCount": 13, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 1, + "testOnlyRatio": 0.067, + "signalTally": { + "added-with-source": 1, + "test+source": 10, + "fix+source": 3, + "test-only-churn": 1, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 78, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.7, + "ageDays": 77, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "99ecab432", + "time": 1775784826000, + "subject": "feat(FN-1113): complete Step 2 — executor integration with PluginRunner", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e0c7b2863", + "time": 1775787353000, + "subject": "feat(FN-1133): add plugin hot-reload support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d1c097e82", + "time": 1776575935000, + "subject": "fix(FN-2090): log and cover engine warning fallbacks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c187c670e", + "time": 1776888085000, + "subject": "feat(FN-2255): add plugin runtime discovery contracts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "482853751", + "time": 1777681561000, + "subject": "feat(FN-3094): add cached plugin contribution accessors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/branch-group.test.ts", + "package": "packages/cli", + "valueScore": 11, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 3 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "9512e9833", + "time": 1780507878000, + "subject": "feat(FN-branch-group): surface group PR controls in dashboard + CLI (U7)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e54417c98", + "time": 1780515805000, + "subject": "fix(FN-branch-group): security, parity, reconcile-on-read, N+1 review residuals", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "64d02b510", + "time": 1780532531000, + "subject": "fix(FN-branch-group): address third-round PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ActivityFeed.test.tsx", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 86, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "4a3fe6475", + "time": 1775022239000, + "subject": "fix(KB-503): remove duplicate getDefaultProject function", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "718057577", + "time": 1775315503000, + "subject": "fix(FN-873): replace hardcoded error color with theme-aware CSS variable in ActivityFeed", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e70903ae7", + "time": 1779094619000, + "subject": "test(FN-5030): complete Step 6 - cover auto-archived activity events", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ca14a12b9", + "time": 1781744239000, + "subject": "FN-6601: consolidate relative-time bucket formatting", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/Header.css.test.ts", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 3, + "added-with-source": 1 + }, + "durationMs": 100, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 3, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "a1cac3a6a", + "time": 1782167023000, + "subject": "fix(dashboard): replace quick chat with modal chat", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "4fd8d444f", + "time": 1782177666000, + "subject": "fix(dashboard): polish app chrome and workflow defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "4ed84be7d", + "time": 1782199255000, + "subject": "fix(FN-6950): polish dashboard modal and chat chrome", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/UpdateAvailableBanner.test.tsx", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 3, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 60, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "e80850e7c", + "time": 1777279207000, + "subject": "feat(FN-2663): add cached update-check setting, APIs, and banner", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "234a81933", + "time": 1777411555000, + "subject": "feat(FN-2837): add infusion.ai links to update notices", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "181007b91", + "time": 1777414849000, + "subject": "fix(FN-2837): correct infusion.ai → runfusion.ai in update notices", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "476d17e2c", + "time": 1777523598000, + "subject": "fix(FN-XXX): update release notes link in update notification", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ac64aa5c8", + "time": 1778485943000, + "subject": "fix(FN-000): improve local startup UX", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e8c2d516a", + "time": 1781393428000, + "subject": "FN-6386: add one-click update installation", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/core-modals-mobile.test.tsx", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 16, + "negativeCount": 17, + "neutralCount": 0, + "timesTouched": 33, + "testOnlyCount": 16, + "testOnlyRatio": 0.485, + "signalTally": { + "added": 1, + "fix": 7, + "test-only-churn": 16, + "test+source": 8, + "fix+source": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 30, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 78, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "ac4d8a18b", + "time": 1775678379000, + "subject": "feat(FN-1179): improve dashboard core modal mobile behavior", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "9c5dc0716", + "time": 1775735984000, + "subject": "fix(FN-1304): reduce mobile button heights from 44px to 36px", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "583285fa6", + "time": 1775842709000, + "subject": "feat(FN-1463): fix settings tab highlight alignment on mobile", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "95f3b2286", + "time": 1776055796000, + "subject": "fix(FN-1606): constrain task detail dropdown menus to viewport on mobile", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "bb5b5266f", + "time": 1776056220000, + "subject": "fix(FN-1606): constrain task detail dropdown menus to viewport on mobile", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "e5d6cc7d2", + "time": 1776099854000, + "subject": "fix mobile task action menu positioning", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useBadgeWebSocket.test.ts", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 7, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 6 + }, + "durationMs": 100, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 88, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "89b289993", + "time": 1774865991000, + "subject": "feat(KB-063): add realtime GitHub badge updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6b27ab160", + "time": 1776189537000, + "subject": "feat(FN-1746): merge fusion/fn-1746", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ca6094acf", + "time": 1776192232000, + "subject": "feat(FN-1747): merge fusion/fn-1747", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "85e764145", + "time": 1776194101000, + "subject": "feat(FN-1763): merge fusion/fn-1763", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1c4eee177", + "time": 1778709905000, + "subject": "feat(FN-4370): complete Step 1 — fix badge null-merge semantics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/plugins/__tests__/registerBundledPluginViews.test.tsx", + "package": "packages/dashboard", + "valueScore": 11, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 47, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "f5ad672b0", + "time": 1778383769000, + "subject": "feat(FN-3904): support static bundled plugin views in dashboard routing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d7302b332", + "time": 1778401527000, + "subject": "feat(FN-3916): fix bundled Dependency Graph view load path", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6769b836f", + "time": 1778452449000, + "subject": "feat(FN-3763): add cli printing press wizard plugin", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8b56dff8b", + "time": 1778454218000, + "subject": "feat(FN-3764): add manage view with edit modal for CLI printing press plugi", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d910c0c0f", + "time": 1778507263000, + "subject": "feat(FN-3637): establish canonical roadmap plugin ID and compatibility rout", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "742c5edd1", + "time": 1778630590000, + "subject": "feat(FN-4128): fix bundled plugin entry resolution and surface load errors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-session-helpers.test.ts", + "package": "packages/engine", + "valueScore": 11, + "positiveCount": 8, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1, + "test+source": 8 + }, + "durationMs": 100, + "testCount": 28, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 60, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "a24f50ba0", + "time": 1777245275000, + "subject": "feat(FN-2617): merge fusion/fn-2617 (auto-resolved)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "18e0a4e22", + "time": 1778388080000, + "subject": "feat(FN-3892): honor assigned runtime model for merger sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a1f4b53e2", + "time": 1778406870000, + "subject": "feat(FN-3914): add durable heartbeat model fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bccc39f74", + "time": 1778481370000, + "subject": "feat(FN-3961): propagate taskEnv into agent subprocess sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "76bd3a7d9", + "time": 1779528300000, + "subject": "feat(FN-5205): add workflow-step test mode dispatch and routing for mock pr", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2209c57dd", + "time": 1779530940000, + "subject": "chore(engine): remove workflow-step mock routing + stale FN-5482 docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-tools-delegation.test.ts", + "package": "packages/engine", + "valueScore": 11, + "positiveCount": 7, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "churn-keyword": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 19, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 70, + "lastTouched": "2026-05-19", + "evidence": [ + { + "sha": "ee72c3e3b", + "time": 1776370637000, + "subject": "feat(FN-1950): add list_agents and delegate_task agent delegation tools", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b0cda2398", + "time": 1777508602000, + "subject": "feat(FN-2923): merge fusion/fn-2923", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "95cd10752", + "time": 1777664616000, + "subject": "feat(FN-3060): add agent task auto-summarization and droid CLI path reconci", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f6c32f104", + "time": 1778481369000, + "subject": "feat(FN-3957): add delegate_task override flag to bypass executor role poli", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f7958fc0", + "time": 1778561306000, + "subject": "feat(FN-3935): align engineer role routing with explicit assignment and del", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/completion-handoff-limbo.test.ts", + "package": "packages/engine", + "valueScore": 11, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 38, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "b69265651", + "time": 1779107350000, + "subject": "feat(FN-4999): recover completion handoff limbo safely", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "93b11c6c0", + "time": 1779264068000, + "subject": "feat(FN-5241): add atomic in-review handoff seam with executor/self-healing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1bffa22ca", + "time": 1779463872000, + "subject": "feat(FN-5479): fix identity-guard merger bypass on detached HEAD and gate l", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "16b18bf33", + "time": 1779467843000, + "subject": "chore(dashboard): publish MobileNavBar render decision to vpdebug", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5030e2963", + "time": 1781001860000, + "subject": "FN-6070: fix completion-handoff limbo recovery accounting", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7a9d2b0f3", + "time": 1781023288000, + "subject": "fix(FN-6086): preserve merge-queued review tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/AgentLogViewer.test.tsx", + "package": "packages/dashboard", + "valueScore": 59, + "positiveCount": 40, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 45, + "testOnlyCount": 2, + "testOnlyRatio": 0.044, + "signalTally": { + "added-with-source": 1, + "test+source": 38, + "fix+source": 3, + "churn-keyword": 3, + "test-only-churn": 2, + "fix": 1 + }, + "durationMs": 500, + "testCount": 132, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 92, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "20264a854", + "time": 1774499808000, + "subject": "feat(HAI-072): add agent log viewer with persistence, streaming, and UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2baa11996", + "time": 1774501151000, + "subject": "feat(HAI-082): display tool call details in AgentLogViewer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5fc95d4e1", + "time": 1774567799000, + "subject": "feat(HAI-097): add scroll-direction auto-follow to AgentLogViewer", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a32897921", + "time": 1774656641000, + "subject": "feat(KB-133): fix auto-scroll to use proximity-to-bottom detection", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9f6b73921", + "time": 1774749133000, + "subject": "feat(KB-189): suppress duplicate agent badges on consecutive inline entries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/heartbeat-executor.test.ts", + "package": "packages/engine", + "valueScore": 59, + "positiveCount": 47, + "negativeCount": 12, + "neutralCount": 2, + "timesTouched": 61, + "testOnlyCount": 8, + "testOnlyRatio": 0.131, + "signalTally": { + "added": 1, + "test+source": 48, + "churn-keyword": 6, + "fix+source": 4, + "test-only-churn": 8 + }, + "durationMs": 500, + "testCount": 148, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.3, + "ageDays": 52, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "88171eb5b", + "time": 1777928727000, + "subject": "feat(FN-3308): fix CSS token consistency in settings and task detail modals", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "452c31a08", + "time": 1777933300000, + "subject": "feat(FN-3320): add agent configuration tools for settings management", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "525787edb", + "time": 1777940541000, + "subject": "feat(FN-3323): recover orphaned agents and add reports health section to he", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9da910952", + "time": 1777954882000, + "subject": "feat(FN-3459): enable tool mode for heartbeat agent sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cd2a464a4", + "time": 1777968678000, + "subject": "feat(FN-3250): add auto-claim setting UI and documentation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "499417bc8", + "time": 1777987953000, + "subject": "feat(FN-3321): add agent self-improvement service and heartbeat evaluation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskChangesTab.test.tsx", + "package": "packages/dashboard", + "valueScore": 35.5, + "positiveCount": 21, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 25, + "testOnlyCount": 4, + "testOnlyRatio": 0.16, + "signalTally": { + "added-with-source": 1, + "test+source": 15, + "fix+source": 5, + "test-only-churn": 4 + }, + "durationMs": 300, + "testCount": 64, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8.2, + "ageDays": 83, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "64384f332", + "time": 1775282653000, + "subject": "feat(FN-818): use merge commit diff for done-task Changes tab", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "86008ac87", + "time": 1775314420000, + "subject": "feat(FN-866): add theme-aware status styling for changed files and refactor stuck-task detector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9900c2d11", + "time": 1775318146000, + "subject": "fix: unify diff endpoints and show changed files on done task cards", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "9da06dbbd", + "time": 1775347632000, + "subject": "feat(FN-906): add file navigation to changes tab and reduce diff margins", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b2a8d0c6c", + "time": 1775348708000, + "subject": "feat(FN-907): add word wrap toggle to diff viewer in TaskChangesTab", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "14f2b2f35", + "time": 1775422998000, + "subject": "feat(FN-961): add ChangesDiffModal for expanded task change viewing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/plugins/__tests__/bundled-plugin-install.test.ts", + "package": "packages/cli", + "valueScore": 11.5, + "positiveCount": 12, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 16, + "testOnlyCount": 3, + "testOnlyRatio": 0.188, + "signalTally": { + "added-with-source": 1, + "fix": 1, + "test+source": 11, + "test-only-churn": 3, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 27, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8, + "ageDays": 53, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "dc301fc84", + "time": 1777843883000, + "subject": "feat(FN-3318): harden bundled-plugin-install to detect stale path/version", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1f1096efb", + "time": 1778039258000, + "subject": "fix(dashboard): drop terminated-state leftovers and AgentListModal duplicate Resume", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "ed7769856", + "time": 1778093261000, + "subject": "feat(FN-3590): prioritize workspace source entry for bundled plugins and ad", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3735e0565", + "time": 1778152672000, + "subject": "feat(FN-3396): bundle Cursor CLI as a plugin provider with dashboard auth w", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ae2baa09e", + "time": 1778221265000, + "subject": "feat(FN-3158): migrate roadmap domain modules to fusion-plugin-roadmap pack", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c17aba703", + "time": 1778262119000, + "subject": "feat(FN-3737): add even realities integration research report", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/builtin-traits.test.ts", + "package": "packages/core", + "valueScore": 11.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8, + "ageDays": 22, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "a5ac822de", + "time": 1780557597000, + "subject": "feat(core): trait registry, 14 built-in traits, composition validator (U2)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2d28ea0c6", + "time": 1780560214000, + "subject": "feat(engine): merge trait — enqueue-only orchestration, workflow-configurable strategy/fileScope, lost-work guards non-configurable (U7)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d8a015e22", + "time": 1780904984000, + "subject": "fix(FN-0000): show auto-merge on workflow review columns", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c0fb92352", + "time": 1780930631000, + "subject": "fix(FN-0000): address auto-merge review feedback", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "83565a535", + "time": 1780987112000, + "subject": "fix(FN-6035): project workflow dispatch metadata", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/api-node.test.ts", + "package": "packages/dashboard", + "valueScore": 11.5, + "positiveCount": 8, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 1, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 33, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8, + "ageDays": 77, + "lastTouched": "2026-06-11", + "evidence": [ + { + "sha": "c4a48491e", + "time": 1775764879000, + "subject": "feat(FN-1232): add remote node mesh dashboard integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5c95d30c8", + "time": 1775815178000, + "subject": "feat(FN-1529): implement search query propagation to remote node data", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "de8c92b42", + "time": 1776349386000, + "subject": "feat(FN-1824): merge fusion/fn-1824", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "01aa2681f", + "time": 1778204828000, + "subject": "feat(FN-3504): add path mapping API with core contracts, routes, client hel", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "65a9371d3", + "time": 1778207394000, + "subject": "feat(FN-3505): add node onboarding mapping flow with asset-gated bundling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MissionManager.mobile-css.test.ts", + "package": "packages/dashboard", + "valueScore": 11.5, + "positiveCount": 9, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 4, + "testOnlyRatio": 0.308, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "test-only-churn": 4, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 24, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8, + "ageDays": 78, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "5dd618b26", + "time": 1775696886000, + "subject": "feat(FN-1219): add mission observability and autopilot dashboard UX", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c6fcebc14", + "time": 1777746308000, + "subject": "feat(FN-3129): add tokenized footer and mobile initialization to MissionMan", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4ed60ba88", + "time": 1777811706000, + "subject": "feat(FN-3132): tokenize sidebar titles and mission manager sizing, add Agen", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c2acc74dc", + "time": 1777813657000, + "subject": "feat(FN-3133): restore mobile back button with CSS contract tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8da490014", + "time": 1777830106000, + "subject": "feat(FN-3135): restore Claude usage tracking with Fusion Anthropic auth sto", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ProjectCard.test.tsx", + "package": "packages/dashboard", + "valueScore": 11.5, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "fix+source": 1, + "added-with-source": 1, + "test+source": 5, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 28, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8, + "ageDays": 86, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "4a3fe6475", + "time": 1775022239000, + "subject": "fix(KB-503): remove duplicate getDefaultProject function", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "b9f6f8e56", + "time": 1775629832000, + "subject": "feat(FN-1081): add dashboard nodes management workflow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "34a6c4268", + "time": 1775752411000, + "subject": "feat(FN-1316): add mobile responsive styles and tests for ProjectOverview", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fda2cf57d", + "time": 1776188631000, + "subject": "feat(FN-1688): merge fusion/fn-1688", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "eed16abac", + "time": 1778291056000, + "subject": "feat(FN-3509): document node mapping availability UI in dashboard guide", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f20c37471", + "time": 1780415365000, + "subject": "FN-5881: guard project status badges against unknown states", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/branch-attribution.test.ts", + "package": "packages/engine", + "valueScore": 11.5, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 3, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8, + "ageDays": 38, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "6e1ce2eb0", + "time": 1779116826000, + "subject": "feat(FN-5039): complete Step 3 — add branch attribution helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "1df8b709a", + "time": 1779116826000, + "subject": "feat(FN-5039): add attribution-filtered modified file capture", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "92be8225e", + "time": 1779163551000, + "subject": "fix(FN-5090): subject-prefix fallback in trailer attribution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "65f9995b2", + "time": 1779169489000, + "subject": "test(FN-5090): align attribution test shape with commit metadata", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "3ac14a360", + "time": 1779179094000, + "subject": "fix(FN-5103): expose own commit shas in attribution helper", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c5e9dc43f", + "time": 1779290620000, + "subject": "fix(FN-5304): guard against silent no-op landed-file attribution mismatches", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-verification.test.ts", + "package": "packages/engine", + "valueScore": 11.5, + "positiveCount": 7, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 5, + "churn-keyword": 1, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 92, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 8, + "ageDays": 45, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "de1e13d22", + "time": 1778534686000, + "subject": "feat(FN-4014): split merger monolith into domain-specific test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "0d0796ab7", + "time": 1778602014000, + "subject": "feat(FN-4071): add overlap guard to prevent concurrent merge conflicts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "036387610", + "time": 1779510719000, + "subject": "feat(merger): scope pnpm verification to changed packages in monorepo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d02cd38d7", + "time": 1779510730000, + "subject": "fix(merger): short-circuit out-of-scope fix loop to prevent limbo recovery cycle", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "6e7f1e570", + "time": 1779586776000, + "subject": "fix(dashboard): useMergeAdvanceNotice tests should waitFor toBeDefined", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/Board.test.tsx", + "package": "packages/dashboard", + "valueScore": 50.5, + "positiveCount": 45, + "negativeCount": 11, + "neutralCount": 1, + "timesTouched": 57, + "testOnlyCount": 8, + "testOnlyRatio": 0.14, + "signalTally": { + "added": 1, + "test-only-churn": 8, + "test+source": 41, + "fix": 2, + "fix+source": 5, + "churn-keyword": 6, + "quarantine-ledger": 1 + }, + "durationMs": 400, + "testCount": 61, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 7.8, + "ageDays": 92, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "1dfd70757", + "time": 1774496215000, + "subject": "feat(HAI-053): add responsive mobile horizontal scroll for board", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "637254ed2", + "time": 1774497378000, + "subject": "feat(HAI-059): add horizontal scroll support for board columns", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d42b98a2a", + "time": 1774729823000, + "subject": "feat(KB-160): thread engineStopped prop to suppress agent-active indicator", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0a08c1193", + "time": 1774729823000, + "subject": "feat(KB-164): fix mobile board double scrollbar with flex layout", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "de21f68f3", + "time": 1774729823000, + "subject": "fix(KB-166): revert mobile board flex layout from KB-164", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/dev-with-memory-lib.test.ts", + "package": "packages/cli", + "valueScore": 12, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "fix": 2 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.7, + "ageDays": 53, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "a3ce8e1f8", + "time": 1777874885000, + "subject": "fix(FN-XXX): unify codex auth and chat fallback", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "ac64aa5c8", + "time": 1778485943000, + "subject": "fix(FN-000): improve local startup UX", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a5ad2c2a1", + "time": 1778499411000, + "subject": "fix(FN-000): address startup review feedback", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "538bf42e3", + "time": 1781815297000, + "subject": "fix(dev): rebuild core+engine+dashboard on dev/local startup + stale-dist check", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/roadmap-routes.routes.test.ts", + "package": "packages/dashboard", + "valueScore": 12, + "positiveCount": 9, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 1, + "testOnlyRatio": 0.091, + "signalTally": { + "added-with-source": 1, + "test+source": 8, + "test-only-churn": 1, + "fix": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.7, + "ageDays": 71, + "lastTouched": "2026-05-11", + "evidence": [ + { + "sha": "3c30687b0", + "time": 1776288426000, + "subject": "feat(FN-1686): merge fusion/fn-1686", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9e4ee18b6", + "time": 1776292265000, + "subject": "feat(FN-1691): add roadmap export and handoff API", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b37dfc23f", + "time": 1776297996000, + "subject": "feat(FN-1674): add roadmap export and handoff system", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cff03f11a", + "time": 1776302585000, + "subject": "feat(FN-1675): merge fusion/fn-1675", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6d3fa11cc", + "time": 1776354794000, + "subject": "feat(FN-1920): merge fusion/fn-1920", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/session-skill-context.test.ts", + "package": "packages/engine", + "valueScore": 12, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "added-with-source": 2, + "test+source": 4, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 46, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.7, + "ageDays": 72, + "lastTouched": "2026-05-02", + "evidence": [ + { + "sha": "c604c118f", + "time": 1776179567000, + "subject": "feat(FN-1511): add session-skill-context helper for unified skill selection", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "919c2774c", + "time": 1776181221000, + "subject": "feat(FN-1511): add skill selection resolver for deterministic session skills", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2d7da656e", + "time": 1776182166000, + "subject": "feat(FN-1513): track excluded skill paths and improve skill resolver diagnostics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0b7a0cab5", + "time": 1776182623000, + "subject": "fix(FN-1513): fix SessionSkillContextInput to use AgentStore instead of TaskStore", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "924673f97", + "time": 1776196849000, + "subject": "feat(FN-1811): merge fusion/fn-1811", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-acquisition-backend.test.ts", + "package": "packages/engine", + "valueScore": 12, + "positiveCount": 10, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 15, + "testOnlyCount": 4, + "testOnlyRatio": 0.267, + "signalTally": { + "added": 1, + "test-only-churn": 4, + "fix+source": 2, + "test+source": 8, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.7, + "ageDays": 41, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "a70c39c5f", + "time": 1778890066000, + "subject": "test(FN-4685): align backend acquisition integration tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5e14a9459", + "time": 1778892774000, + "subject": "test(FN-4686): complete Step 5 — cover backend acquisition paths", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cc065f7f2", + "time": 1778892774000, + "subject": "fix(FN-4686): align worktrunk create audit semantics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c0f9ddedc", + "time": 1778892775000, + "subject": "feat(FN-4686): complete Step 7 — docs and changeset delivery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "af2435d3a", + "time": 1778894631000, + "subject": "test(FN-4687): align backend wiring expectations", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "dfc291f8c", + "time": 1778896488000, + "subject": "test(FN-4622): align worktrunk acquisition assertions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/agent-runs-ui.test.ts", + "package": "packages/dashboard", + "valueScore": 12.5, + "positiveCount": 7, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 27, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.4, + "ageDays": 79, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "637556343", + "time": 1775597892000, + "subject": "feat(FN-1059): add manual heartbeat run trigger with execution details in agent UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e3aa02d58", + "time": 1775690254000, + "subject": "feat(FN-1298): add stop-agent-run flow across engine and dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8beb1e181", + "time": 1776730582000, + "subject": "feat(FN-2201): make Run Now available for active agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b0886cdfd", + "time": 1777172187000, + "subject": "fix(FN-2539): preserve dashboard API compatibility and harden proxy wildcard routing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "410a438a7", + "time": 1777287925000, + "subject": "feat(FN-2639): replace native confirms with dashboard confirm dialog", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4e13a02af", + "time": 1778371543000, + "subject": "Agent run fixes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MultiProjectFlow.test.tsx", + "package": "packages/dashboard", + "valueScore": 12.5, + "positiveCount": 9, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 2, + "testOnlyRatio": 0.182, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "fix": 1, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.4, + "ageDays": 86, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "2b1e342ea", + "time": 1775032584000, + "subject": "feat(FN-674): implement multi-project dashboard UX", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6da0cdb09", + "time": 1775354902000, + "subject": "feat(FN-949): add Projects button to Header for single-project users", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0359166b6", + "time": 1775669978000, + "subject": "feat(FN-1276): scope dashboard persistence by project", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bf5ce66a0", + "time": 1776040578000, + "subject": "feat(FN-1656): complete Step 1 — implement canonical node-project counting rules", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7624d6e76", + "time": 1776045666000, + "subject": "feat(FN-1601): merge fusion/fn-1601", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1af382829", + "time": 1776968171000, + "subject": "feat(FN-2296): move project management into selector dropdown", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/TaskComments.test.tsx", + "package": "packages/dashboard", + "valueScore": 12.5, + "positiveCount": 7, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.4, + "ageDays": 86, + "lastTouched": "2026-04-27", + "evidence": [ + { + "sha": "ace0732a1", + "time": 1774993435000, + "subject": "test(KB-601): add test for pause/unpause with missing directory", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "681dc48eb", + "time": 1775060339000, + "subject": "feat(FN-691): merge Steering and Comments tabs into unified Comments tab", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa90b69f2", + "time": 1775104582000, + "subject": "feat(KB-662): complete Step 2 — add visibility refresh tests for useProjects", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f8465342", + "time": 1775177464000, + "subject": "fix(FN-000): scope dashboard project flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b9e088843", + "time": 1775182665000, + "subject": "feat(FN-735): remove comment mode toggle and unify to steering comments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useMobileScrollLock.test.ts", + "package": "packages/dashboard", + "valueScore": 12.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 3, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.4, + "ageDays": 53, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "4bb3af220", + "time": 1777860070000, + "subject": "fix(dashboard): mobile keyboard scroll lock, auto-reload hash, ChatView snap", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "f455ee10e", + "time": 1777862718000, + "subject": "fix(dashboard): always restore scroll to 0 in useMobileScrollLock cleanup", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "60a001269", + "time": 1779483669000, + "subject": "fix(dashboard): gate mobile scroll-lock to iOS so Android keyboard stays open", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "38007db54", + "time": 1781371764000, + "subject": "FN-6364: reset iOS mobile viewport on restore", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/agent-onboarding.test.ts", + "package": "packages/dashboard", + "valueScore": 12.5, + "positiveCount": 7, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.4, + "ageDays": 56, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "00de40da9", + "time": 1777609256000, + "subject": "feat(FN-3025): add agent onboarding flow with launch gating", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "58c0c612a", + "time": 1777650970000, + "subject": "feat(FN-3024): add experimental agent onboarding modal with create form han", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f5e10231", + "time": 1778168958000, + "subject": "feat(FN-3554): expand AI agent interview onboarding flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e60c8c3c5", + "time": 1778178301000, + "subject": "feat(FN-3555): document richer onboarding drafts in agents.md and dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dfe8dfd70", + "time": 1780649148000, + "subject": "fix(ci): add createWorkflowAuthoringTools to partial engine mocks; bump roadmap schema assertion to 109", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "85f70148a", + "time": 1780653747000, + "subject": "feat(dashboard): wire cli-agent chat surface and runner glue; fix stale engine mocks (U12 completion)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/server-webhook.test.ts", + "package": "packages/dashboard", + "valueScore": 12.5, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix": 2, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 0, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.4, + "ageDays": 87, + "lastTouched": "2026-04-23", + "evidence": [ + { + "sha": "c48c6aba6", + "time": 1774903053000, + "subject": "feat(KB-137): add GitHub App webhooks for real-time badge updates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa90b69f2", + "time": 1775104582000, + "subject": "feat(KB-662): complete Step 2 — add visibility refresh tests for useProjects", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dd8acb76b", + "time": 1775333823000, + "subject": "fix: resolve all 41 pre-existing dashboard test failures", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "b3f057a28", + "time": 1775871023000, + "subject": "fix: improve merge verification and dashboard behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/logger.test.ts", + "package": "packages/engine", + "valueScore": 12.5, + "positiveCount": 6, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.4, + "ageDays": 91, + "lastTouched": "2026-04-26", + "evidence": [ + { + "sha": "1c5eb494d", + "time": 1774579451000, + "subject": "feat(HAI-113): add structured logger and replace console calls", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "438aff290", + "time": 1775627769000, + "subject": "feat(FN-1079): add remote node runtime orchestration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bddf86346", + "time": 1775967196000, + "subject": "fix: suppress execution output on stdout", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "40e44401f", + "time": 1777046065000, + "subject": "fix(FN-2371): preserve log severity in dashboard TUI capture", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "636401a53", + "time": 1777232705000, + "subject": "feat(FN-2603): merge fusion/fn-2603 (auto-resolved)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/message-notification-pipeline.test.ts", + "package": "packages/engine", + "valueScore": 12.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 3, + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.4, + "ageDays": 47, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "7bf93e850", + "time": 1778349732000, + "subject": "fix(FN-3825): surface inline notification test feedback in settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "2d3af5b6c", + "time": 1778363936000, + "subject": "fix(FN-3886): resolve peer agent names in mail and notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2d46a882f", + "time": 1778597231000, + "subject": "feat(FN-4078): add ntfy access token support to notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "670970341", + "time": 1778604084000, + "subject": "fix(FN-4127): harden ntfy notification delivery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/scheduler-overlap-starvation.test.ts", + "package": "packages/engine", + "valueScore": 12.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": 100, + "testCount": 21, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.4, + "ageDays": 27, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "9112b7dc0", + "time": 1780084676000, + "subject": "fix(FN-080): ignore non-runnable queued overlap blockers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "f8bda5671", + "time": 1780148822000, + "subject": "fix(FN-166): bypass coordination-only overlap leases", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "fe536b2af", + "time": 1782235850000, + "subject": "FN-6954: reconcile stale parked task assignments", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e2a84d4dd", + "time": 1782384262000, + "subject": "feat(FN-783): complete Step 4 — reconcile stale overlap blockers safely", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9fabc9d75", + "time": 1782401744000, + "subject": "FN-6962: ignore hidden overlap paths by default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-graph-executor-handlers.test.ts", + "package": "packages/engine", + "valueScore": 12.5, + "positiveCount": 5, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 3, + "test+source": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.4, + "ageDays": 25, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "ba81d1f0a", + "time": 1780241521000, + "subject": "FN-5767: wire workflow graph executor to legacy seams", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "83565a535", + "time": 1780987112000, + "subject": "fix(FN-6035): project workflow dispatch metadata", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ad68c9d61", + "time": 1780987653000, + "subject": "fix(FN-6035): harden workflow projection publishing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "40d05c813", + "time": 1780988460000, + "subject": "fix(FN-6035): address workflow projection review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "751d94244", + "time": 1781299278000, + "subject": "FN-6294: collapse workflow merge primitives", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/ai-summarize.test.ts", + "package": "packages/core", + "valueScore": 13, + "positiveCount": 10, + "negativeCount": 3, + "neutralCount": 1, + "timesTouched": 14, + "testOnlyCount": 1, + "testOnlyRatio": 0.071, + "signalTally": { + "added-with-source": 1, + "test+source": 10, + "test-only-churn": 1, + "churn-keyword": 3, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 63, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.1, + "ageDays": 86, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "9490792af", + "time": 1775008742000, + "subject": "feat(KB-621): add AI title summarization feature", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c0f71e0db", + "time": 1775264287000, + "subject": "feat(FN-794): raise auto-summarization threshold from 140 to 200 characters", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "331d28312", + "time": 1776900690000, + "subject": "test(dashboard): realign DevServer tests with session-based component", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "414cbcffd", + "time": 1777476634000, + "subject": "refactor(core,merger): consolidate AI commit-body summarization into ai-summarize.ts", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-remote-access.test.ts", + "package": "packages/dashboard", + "valueScore": 13, + "positiveCount": 6, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 1, + "testOnlyRatio": 0.143, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "test+source": 4, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.1, + "ageDays": 60, + "lastTouched": "2026-05-04", + "evidence": [ + { + "sha": "5a9535327", + "time": 1777210546000, + "subject": "fix(FN-2525): harden remote access auth and tunnel regression coverage", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "4379922cc", + "time": 1777220343000, + "subject": "feat(FN-2585): remove top-level remote access toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e087f5ec5", + "time": 1777229383000, + "subject": "feat(FN-2586): merge fusion/fn-2586", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8df19490f", + "time": 1777411556000, + "subject": "fix(FN-2867): simplify remote access settings activation flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "7392688db", + "time": 1777496261000, + "subject": "feat(FN-2920): merge fusion/fn-2920", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "cf87c3e3d", + "time": 1777605052000, + "subject": "feat(FN-3009): migrate remote settings to global scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-merge-details.test.ts", + "package": "packages/engine", + "valueScore": 13, + "positiveCount": 8, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 6, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 27, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.1, + "ageDays": 45, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "de1e13d22", + "time": 1778534686000, + "subject": "feat(FN-4014): split merger monolith into domain-specific test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "8bfad91c8", + "time": 1778803456000, + "subject": "test(FN-4518): cover rebase base SHA persistence in merger details", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d94ef5123", + "time": 1779115568000, + "subject": "feat(FN-5047): emit task:merged across merge finalize paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "79850b233", + "time": 1779390298000, + "subject": "feat(FN-5349): add integration branch resolver with auto-recovery fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6e7f1e570", + "time": 1779586776000, + "subject": "fix(dashboard): useMergeAdvanceNotice tests should waitFor toBeDefined", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pr-monitor.test.ts", + "package": "packages/engine", + "valueScore": 13, + "positiveCount": 8, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 2, + "test+source": 6 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.1, + "ageDays": 88, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "efd7c176f", + "time": 1774833035000, + "subject": "feat(KB-004): add GitHub PR creation and comment monitoring", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5794c301b", + "time": 1774842727000, + "subject": "feat(KB-052): refactor GitHub integration to use gh CLI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7d62a3abc", + "time": 1774851204000, + "subject": "feat(KB-093): add PR-first merge mode with configurable merge strategies", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5cfb93ecb", + "time": 1775293318000, + "subject": "feat(FN-840): add closed/merged PR feedback contract and clean up unused code", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/non-progress-churn.test.ts", + "package": "packages/engine", + "valueScore": 13, + "positiveCount": 6, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 1, + "testOnlyRatio": 0.125, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 4, + "test-only-churn": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.1, + "ageDays": 37, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "7ac8a73f1", + "time": 1779232525000, + "subject": "test(FN-5168): complete Step 5 — reliability interaction regression", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "93b11c6c0", + "time": 1779264068000, + "subject": "feat(FN-5241): add atomic in-review handoff seam with executor/self-healing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ab38ee09e", + "time": 1780197695000, + "subject": "fix(engine): park incomplete stuck-loop exhaustions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "586188445", + "time": 1780241736000, + "subject": "fix(engine): requeue incomplete stuck-loop exhaustion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a7bd44ca9", + "time": 1780250274000, + "subject": "fix(engine): split stuck requeue fallback handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bb810d6f3", + "time": 1781393428000, + "subject": "FN-6394: relax non-progress userPaused assertion", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/stuck-task-detector.test.ts", + "package": "packages/engine", + "valueScore": 13, + "positiveCount": 13, + "negativeCount": 8, + "neutralCount": 3, + "timesTouched": 24, + "testOnlyCount": 1, + "testOnlyRatio": 0.042, + "signalTally": { + "churn-keyword": 11, + "added-with-source": 1, + "test+source": 14, + "test-only-churn": 1, + "fix+source": 8 + }, + "durationMs": 100, + "testCount": 89, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.1, + "ageDays": 87, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "b7349a3f1", + "time": 1774916195000, + "subject": "feat(KB-206): add stuck task detection and auto-recovery", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "f94265b63", + "time": 1774939144000, + "subject": "feat(KB-249): immediate stuck task check on timeout setting change", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "06a2755c9", + "time": 1774981469000, + "subject": "test(KB-301): add stuck-task-detector tests — track/untrack, activity, stuck detection, killAndRetry", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bcb991596", + "time": 1775255712000, + "subject": "feat: add SelfHealingManager for unattended multi-day operation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/builtin-workflows.test.ts", + "package": "packages/core", + "valueScore": 27, + "positiveCount": 23, + "negativeCount": 5, + "neutralCount": 1, + "timesTouched": 29, + "testOnlyCount": 2, + "testOnlyRatio": 0.069, + "signalTally": { + "added-with-source": 1, + "test+source": 24, + "churn-keyword": 5, + "test-only-churn": 2, + "fix+source": 2 + }, + "durationMs": 200, + "testCount": 37, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 7.1, + "ageDays": 22, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "62aba2c09", + "time": 1780520097000, + "subject": "feat(core): built-in workflow templates incl. compound engineering", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "964744cd4", + "time": 1780557191000, + "subject": "feat(core): WorkflowIr v2 — workflow-defined columns, hold/split/join nodes, v1 upgrade (U1)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "60e9938f5", + "time": 1780604149000, + "subject": "feat(core,engine): U7 — builtin stepwise coding workflow + trajectory parity & invariant suite; agent-tool surfaces for custom fields and IR authoring", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f313567d", + "time": 1780724556000, + "subject": "feat(pr): built-in PR workflow template, end-to-end (U9)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "904e68143", + "time": 1780883507000, + "subject": "FN-6006: name built-in workflow seam nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bd5315fd4", + "time": 1780930422000, + "subject": "feat: allow disabling built-in workflows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/lazy-loaded-views-docs.test.ts", + "package": "packages/dashboard", + "valueScore": 13.5, + "positiveCount": 12, + "negativeCount": 7, + "neutralCount": 0, + "timesTouched": 19, + "testOnlyCount": 6, + "testOnlyRatio": 0.316, + "signalTally": { + "fix": 1, + "added": 1, + "test+source": 11, + "fix+source": 1, + "test-only-churn": 6, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.9, + "ageDays": 52, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "80ca89308", + "time": 1777971139000, + "subject": "fix(FN-3469): correct lazy-loaded views count in AGENTS.md (13→15) and add regression test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 3, + "signals": [ + "fix", + "added" + ] + }, + { + "sha": "c32999b29", + "time": 1778199851000, + "subject": "feat(FN-3394): add evals dashboard view with API routes and client hooks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d42d8ee2f", + "time": 1778284267000, + "subject": "fix(FN-3161): migrate roadmap dashboard surface to bundled plugin", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d604d090a", + "time": 1778381342000, + "subject": "feat(FN-3863): add stash recovery dashboard surface and API routes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a362f4223", + "time": 1778736423000, + "subject": "feat(FN-4360): complete Step 6 — document reliability metrics surface", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0dbfee07e", + "time": 1778934567000, + "subject": "test(FN-4719): ignore internal underscored lazy views in docs inventory", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/NodeCard.test.tsx", + "package": "packages/dashboard", + "valueScore": 13.5, + "positiveCount": 8, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 1, + "testOnlyRatio": 0.111, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test-only-churn": 1, + "test+source": 5, + "fix": 1 + }, + "durationMs": 100, + "testCount": 26, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.9, + "ageDays": 79, + "lastTouched": "2026-05-09", + "evidence": [ + { + "sha": "b9f6f8e56", + "time": 1775629832000, + "subject": "feat(FN-1081): add dashboard nodes management workflow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0489f035b", + "time": 1776041707000, + "subject": "fix: scope all git, activity, webhook, and summarize-title routes to correct project store", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "89dfabb35", + "time": 1776198624000, + "subject": "feat(FN-1838): merge fusion/fn-1838", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2cca71945", + "time": 1776350287000, + "subject": "feat(FN-1825): merge fusion/fn-1825", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d0d6c3109", + "time": 1776355686000, + "subject": "feat(FN-1827): merge fusion/fn-1827", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/WorkflowNodeEditor.css.test.ts", + "package": "packages/dashboard", + "valueScore": 13.5, + "positiveCount": 12, + "negativeCount": 8, + "neutralCount": 0, + "timesTouched": 20, + "testOnlyCount": 7, + "testOnlyRatio": 0.35, + "signalTally": { + "added": 1, + "test+source": 7, + "test-only-churn": 7, + "churn-keyword": 2, + "fix+source": 5 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.9, + "ageDays": 18, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "1f2c7e22d", + "time": 1780889795000, + "subject": "FN-5992: improve workflow editor mobile responsiveness", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "40c0048f7", + "time": 1780950778000, + "subject": "FN-6024: fix built-in workflow graph edges", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5976b63fd", + "time": 1780950778000, + "subject": "FN-6033: fix mobile workflow editor selection and touch targets", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "61cbc5c3d", + "time": 1780992899000, + "subject": "FN-6058: improve mobile workflow node editor layout", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "43007be53", + "time": 1781001554000, + "subject": "FN-6034: fix mobile workflow canvas width and project controls", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d2b98f14b", + "time": 1781017883000, + "subject": "FN-6079: fix mobile workflow editor edge rendering", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat.rooms.test.ts", + "package": "packages/dashboard", + "valueScore": 13.5, + "positiveCount": 10, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 2, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "test+source": 9 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.9, + "ageDays": 46, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "cab3c4970", + "time": 1778425180000, + "subject": "feat(FN-3812): add rooms test scaffolds and coverage across core and dashbo", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d8fef5e4a", + "time": 1778452405000, + "subject": "feat(FN-3926): add chat room integration tests across core and dashboard", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c743e32da", + "time": 1778481370000, + "subject": "feat(FN-3969): restore room responder fallback in chat", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "95c7588e3", + "time": 1778511773000, + "subject": "feat(FN-4004): add bounded room thread and mailbox reply context to agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b56306c42", + "time": 1778517173000, + "subject": "feat(FN-3905): use merger session model for post-merge workflow steps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "79182d212", + "time": 1778597230000, + "subject": "feat(FN-4075): repair room reply session creation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/terminal-service.test.ts", + "package": "packages/dashboard", + "valueScore": 13.5, + "positiveCount": 10, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 1, + "testOnlyRatio": 0.077, + "signalTally": { + "added": 1, + "fix+source": 2, + "test+source": 9, + "churn-keyword": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 45, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.9, + "ageDays": 88, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "d990edd94", + "time": 1774852463000, + "subject": "feat(KB-058): complete Step 7 — add tests for terminal service and hook", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b64b94be1", + "time": 1774852532000, + "subject": "fix(KB-058): resolve API naming conflict and TypeScript errors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "89b289993", + "time": 1774865991000, + "subject": "feat(KB-063): add realtime GitHub badge updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "824799fad", + "time": 1774897872000, + "subject": "fix(KB-172): fix terminal session leak with activity tracking and stale eviction", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "534e001de", + "time": 1775031811000, + "subject": "feat(KB-641): improve terminal session result flow and remove mission commands", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "54767f60e", + "time": 1775051690000, + "subject": "feat(KB-648): enable parallel test execution and optimize test performance", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-graph-executor-parity.test.ts", + "package": "packages/engine", + "valueScore": 13.5, + "positiveCount": 9, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 2, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "test-only-churn": 2, + "churn-keyword": 1, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.9, + "ageDays": 25, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "1edbb54fc", + "time": 1780241521000, + "subject": "FN-5766: add flagged-off workflow graph executor scaffold", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ba81d1f0a", + "time": 1780241521000, + "subject": "FN-5767: wire workflow graph executor to legacy seams", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "44e77fda5", + "time": 1780510050000, + "subject": "feat(engine): graph interpreter owns the full task lifecycle behind the flag (CU-U3, CU-U4)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a782e5c04", + "time": 1780599809000, + "subject": "feat(engine): U3 — foreach expansion, iterative instance sub-walk, bounded rework cycles, step-execute seam", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2cfa8a328", + "time": 1780601165000, + "subject": "feat(engine,core): U5+U6+U12core — step-review verdict handler, graph-source projection discipline, pluggable step-parser registry", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "60e9938f5", + "time": 1780604149000, + "subject": "feat(core,engine): U7 — builtin stepwise coding workflow + trajectory parity & invariant suite; agent-tool surfaces for custom fields and IR authoring", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/settings-save-split.test.ts", + "package": "packages/dashboard", + "valueScore": 14, + "positiveCount": 7, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 4 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.7, + "ageDays": 21, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "8c9702e90", + "time": 1780643715000, + "subject": "refactor(dashboard): extract SettingsModal Account/Global/Runtimes sections into shared-primitive components with pure save-split helper", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6c9a81a05", + "time": 1780649622000, + "subject": "fix(review): apply autofix feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "72e320aab", + "time": 1780703164000, + "subject": "Address PR review feedback (#1445)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bd5315fd4", + "time": 1780930422000, + "subject": "feat: allow disabling built-in workflows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d963a756c", + "time": 1781153285000, + "subject": "FN-6205: skip custom providers in settings save split", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "74c63a75d", + "time": 1781194883000, + "subject": "FN-6205: skip custom providers in settings save split", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/branch-conflicts.test.ts", + "package": "packages/engine", + "valueScore": 14, + "positiveCount": 11, + "negativeCount": 7, + "neutralCount": 0, + "timesTouched": 18, + "testOnlyCount": 6, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test+source": 8, + "test-only-churn": 6, + "churn-keyword": 1, + "fix+source": 3 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.7, + "ageDays": 44, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "bddcc3a93", + "time": 1778631269000, + "subject": "feat(FN-4068): add branch conflict detection and recovery for stale worktre", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "22fee60ae", + "time": 1778700645000, + "subject": "chore(FN-4350): import dependency content from fusion/fn-4326", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0c729718d", + "time": 1778716714000, + "subject": "test(FN-4397): complete Step 2 — reproduce stale/live misclassification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "b0f01451d", + "time": 1778716714000, + "subject": "test(FN-4397): annotate regression coverage for stale/live branch conflict", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d39430b34", + "time": 1778719486000, + "subject": "feat(FN-4409): add branch contamination assertions in worktree flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "86f8caf14", + "time": 1778750936000, + "subject": "chore(FN-4428): import dependency content from fusion/fn-4410", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/workflow-ir.test.ts", + "package": "packages/core", + "valueScore": 14.5, + "positiveCount": 8, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 2, + "fix+source": 1, + "test+source": 5 + }, + "durationMs": 100, + "testCount": 38, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.5, + "ageDays": 25, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "3d22a98cf", + "time": 1780241521000, + "subject": "FN-5761: add workflow IR parsing and serialization contract", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "964744cd4", + "time": 1780557191000, + "subject": "feat(core): WorkflowIr v2 — workflow-defined columns, hold/split/join nodes, v1 upgrade (U1)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "afc72b6bb", + "time": 1780585233000, + "subject": "fix(core): widen Task.column to ColumnId across packages; v1-preserving IR persistence for rollback safety (#1403 #1405)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3f313567d", + "time": 1780724556000, + "subject": "feat(pr): built-in PR workflow template, end-to-end (U9)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "13c6d96fe", + "time": 1780995436000, + "subject": "FN-6031: add workflow notification nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bd87ce7d7", + "time": 1781312239000, + "subject": "FN-6304: add optional workflow steps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/node-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 14.5, + "positiveCount": 9, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 1, + "testOnlyRatio": 0.091, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 7, + "test-only-churn": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 39, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.5, + "ageDays": 79, + "lastTouched": "2026-06-10", + "evidence": [ + { + "sha": "b5980ebbb", + "time": 1775626138000, + "subject": "feat(FN-1080): add node management APIs and CLI commands", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "3a9bee20b", + "time": 1775677067000, + "subject": "fix(FN-1287): standardize dashboard API error responses", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0304df348", + "time": 1775763710000, + "subject": "feat(FN-1228): enhance MeshTopology with peer awareness and status legend", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b3f057a28", + "time": 1775871023000, + "subject": "fix: improve merge verification and dashboard behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d79d2eef4", + "time": 1775873663000, + "subject": "feat(FN-1559): recover orphaned features in autopilot reconciliation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c63af6745", + "time": 1776131898000, + "subject": "feat(FN-1518): merge fusion/fn-1518", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-acquisition-worktrunk.test.ts", + "package": "packages/engine", + "valueScore": 14.5, + "positiveCount": 10, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 1, + "testOnlyRatio": 0.091, + "signalTally": { + "added": 2, + "test+source": 7, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.5, + "ageDays": 41, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "232d7fc4d", + "time": 1778888690000, + "subject": "test(FN-4684): complete Step 6 — add worktrunk acquisition integration coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "ffc4174d2", + "time": 1778894631000, + "subject": "test(FN-4687): complete Step 5 — add worktrunk acquisition coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "dfc291f8c", + "time": 1778896488000, + "subject": "test(FN-4622): align worktrunk acquisition assertions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3d9260e0a", + "time": 1778899068000, + "subject": "feat(FN-4623): complete Step 6/7 — verification fixes, docs, and changeset", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3339d94d4", + "time": 1778903634000, + "subject": "feat(FN-4625): complete Step 4 — add self-healing worktrunk pause guardrail", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6e74f6366", + "time": 1778920900000, + "subject": "fix(FN-4698): harden worktrunk path resolution and coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useTerminal.test.ts", + "package": "packages/dashboard", + "valueScore": 15, + "positiveCount": 9, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 1, + "testOnlyRatio": 0.091, + "signalTally": { + "added": 1, + "test+source": 6, + "fix+source": 3, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 41, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.3, + "ageDays": 88, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "d990edd94", + "time": 1774852463000, + "subject": "feat(KB-058): complete Step 7 — add tests for terminal service and hook", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "89b289993", + "time": 1774865991000, + "subject": "feat(KB-063): add realtime GitHub badge updates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "76913c24b", + "time": 1775182344000, + "subject": "fix(FN-730): add missing ping handler in useTerminal WebSocket hook", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1690c4835", + "time": 1775224060000, + "subject": "fix(FN-771): reset disclosure state on task creation and preserve terminal sessions across reconnects", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e0610863d", + "time": 1775232994000, + "subject": "feat(FN-772): fix terminal startup and prompt delivery reliability", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7b59df34f", + "time": 1775371400000, + "subject": "fix(FN-958): fix terminal idle disconnect with heartbeat tolerance", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/agentHealth.test.tsx", + "package": "packages/dashboard", + "valueScore": 15, + "positiveCount": 9, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 6, + "fix": 1, + "churn-keyword": 1, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 35, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.3, + "ageDays": 62, + "lastTouched": "2026-05-13", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1d1f1f0da", + "time": 1777096484000, + "subject": "feat(FN-2408): merge fusion/fn-2408", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "01cf62b00", + "time": 1777495775000, + "subject": "feat(FN-2920): improve remote tunnel setup and heartbeat scheduling", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "a1b74de12", + "time": 1777837628000, + "subject": "feat(FN-3319): enrich agent heartbeat callbacks with reason in UI", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f1096efb", + "time": 1778039258000, + "subject": "fix(dashboard): drop terminated-state leftovers and AgentListModal duplicate Resume", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/file-service.test.ts", + "package": "packages/dashboard", + "valueScore": 15, + "positiveCount": 12, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 1, + "testOnlyRatio": 0.067, + "signalTally": { + "added": 1, + "test+source": 12, + "churn-keyword": 2, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 118, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.3, + "ageDays": 86, + "lastTouched": "2026-04-24", + "evidence": [ + { + "sha": "782412d1f", + "time": 1774983715000, + "subject": "test(KB-316): add comprehensive test coverage for dashboard services", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "57f34d193", + "time": 1775012425000, + "subject": "feat(KB-336): rename data directory from .kb to .fusion", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5654d2e23", + "time": 1775108298000, + "subject": "feat: add per-provider timeout for usage panel to prevent blocking on slow responses", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "d14697e33", + "time": 1775108684000, + "subject": "feat: refactor tests and improve mocking for file-service and GitHub polling - Updated mocking strategy for node:fs and node:fs/promises in file-service tests. - Removed redundant test files and improved test implementations for better clarity. - Enhanced GitHub polling service tests with rate limiter integration.", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-merge-lifecycle.test.ts", + "package": "packages/engine", + "valueScore": 15, + "positiveCount": 12, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 16, + "testOnlyCount": 4, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "test+source": 10, + "test-only-churn": 4, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 71, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.3, + "ageDays": 45, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "de1e13d22", + "time": 1778534686000, + "subject": "feat(FN-4014): split merger monolith into domain-specific test suites", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "5d03d355c", + "time": 1778597231000, + "subject": "feat(FN-4067): add squash audit gate to merger with integration tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0d0796ab7", + "time": 1778602014000, + "subject": "feat(FN-4071): add overlap guard to prevent concurrent merge conflicts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3d6edb409", + "time": 1778630672000, + "subject": "feat(FN-4097): add merger audit gate test coverage for combined audit findi", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "55663219c", + "time": 1778630673000, + "subject": "feat(FN-4069): add direct merge commit routing to merger", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1777a34c7", + "time": 1778691225000, + "subject": "docs(FN-4333): document postMergeAuditMode + add mode=off/warn integration tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-diff.test.ts", + "package": "packages/dashboard", + "valueScore": 31, + "positiveCount": 16, + "negativeCount": 6, + "neutralCount": 1, + "timesTouched": 23, + "testOnlyCount": 6, + "testOnlyRatio": 0.261, + "signalTally": { + "fix+source": 8, + "added-with-source": 1, + "fix": 1, + "test-only-churn": 6, + "test+source": 8, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 29, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 6.3, + "ageDays": 84, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "f779d8285", + "time": 1775150757000, + "subject": "fix(FN-679): use merge-base diff in modal changes tab", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "dd8acb76b", + "time": 1775333823000, + "subject": "fix: resolve all 41 pre-existing dashboard test failures", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "a67bd31f3", + "time": 1775350718000, + "subject": "fix(FN-895): compute diff from merge base for done tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bc3400191", + "time": 1775370099000, + "subject": "fix(FN-951): use baseCommitSha for done task diff base calculation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "8ba4c9a54", + "time": 1775437613000, + "subject": "test: update done-task diff comment", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "81e4eb002", + "time": 1775447651000, + "subject": "feat(FN-943): add file browser context menu with copy, move, delete, rename, and download operations", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/project.test.ts", + "package": "packages/cli", + "valueScore": 16, + "positiveCount": 13, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 16, + "testOnlyCount": 3, + "testOnlyRatio": 0.188, + "signalTally": { + "added-with-source": 1, + "fix": 1, + "test+source": 8, + "fix+source": 3, + "test-only-churn": 3, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.9, + "ageDays": 86, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "e80441e59", + "time": 1775022104000, + "subject": "feat(KB-503): complete Step 2 — project subcommand implementation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cc88db5d6", + "time": 1775022177000, + "subject": "fix(KB-503): fix process.exit mock in project tests", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "25a543844", + "time": 1775025696000, + "subject": "feat(KB-619): add multi-project CLI support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c671beae9", + "time": 1775052135000, + "subject": "feat(KB-503): add multi-project CLI support with project subcommands", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "81a1adb20", + "time": 1775052970000, + "subject": "feat(KB-619): add CLI multi-project commands and --project flag support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b23fd18ec", + "time": 1775073603000, + "subject": "feat(KB-619): add multi-project CLI resolution and commands", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/pwa.test.ts", + "package": "packages/dashboard", + "valueScore": 16, + "positiveCount": 10, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 5, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "fix+source": 3, + "fix": 2, + "test+source": 4, + "test-only-churn": 5 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.9, + "ageDays": 79, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "ed84a728c", + "time": 1775629534000, + "subject": "feat(FN-1093): add mobile build, PWA, and live reload workflow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2a4e5df3f", + "time": 1776101475000, + "subject": "fix(lint): resolve pre-existing lint errors and merge conflicts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bbc17b460", + "time": 1776118712000, + "subject": "fix(triage): enforce per-project maxConcurrent limit on triage", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "1a43e2356", + "time": 1776897552000, + "subject": "feat(FN-2266): align PWA and favicon assets with dashboard brand mark", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0c64766b2", + "time": 1777023500000, + "subject": "fix(FN-0000): prevent stale dashboard service worker reload traps", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c3d1716fd", + "time": 1777084760000, + "subject": "refactor(dashboard): split monolithic styles.css into per-component files", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/remote-access-routes.test.ts", + "package": "packages/dashboard", + "valueScore": 16, + "positiveCount": 10, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 8, + "fix+source": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 28, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.9, + "ageDays": 60, + "lastTouched": "2026-05-25", + "evidence": [ + { + "sha": "a53ad1ae1", + "time": 1777215114000, + "subject": "test(FN-2531): expand headless remote access test coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "4379922cc", + "time": 1777220343000, + "subject": "feat(FN-2585): remove top-level remote access toggle", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e087f5ec5", + "time": 1777229383000, + "subject": "feat(FN-2586): merge fusion/fn-2586", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8df19490f", + "time": 1777411556000, + "subject": "fix(FN-2867): simplify remote access settings activation flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "01cf62b00", + "time": 1777495775000, + "subject": "feat(FN-2920): improve remote tunnel setup and heartbeat scheduling", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "48f2dd0de", + "time": 1777552993000, + "subject": "feat(FN-2976): detect and display external Tailscale funnel tunnels in remo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/settings-defaults.test.ts", + "package": "packages/core", + "valueScore": 16.5, + "positiveCount": 10, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 1, + "testOnlyRatio": 0.083, + "signalTally": { + "added": 1, + "test+source": 7, + "test-only-churn": 1, + "churn-keyword": 1, + "fix+source": 3 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.7, + "ageDays": 41, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "4e4fad5c8", + "time": 1778915958000, + "subject": "test(FN-4715): complete Step 2 — add default invariant regressions", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "43e3fbf60", + "time": 1778940965000, + "subject": "feat(FN-4723): complete Step 1 — add worktrunk transition classifier", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "faf34445e", + "time": 1779096736000, + "subject": "test(FN-4950): lock recycleWorktrees default invariants", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "106499c37", + "time": 1779110452000, + "subject": "feat(FN-4958): complete Step 1 — settings surface", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b3f995c85", + "time": 1779392990000, + "subject": "feat(FN-5348): remove cwd-main integration mode fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/sse.test.ts", + "package": "packages/dashboard", + "valueScore": 16.5, + "positiveCount": 11, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 14, + "testOnlyCount": 2, + "testOnlyRatio": 0.143, + "signalTally": { + "churn-keyword": 2, + "fix+source": 3, + "added-with-source": 1, + "test+source": 9, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.7, + "ageDays": 84, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "5c6a574b3", + "time": 1775183675000, + "subject": "fix(FN-732): fix dashboard real-time updates and SSE pipeline", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + }, + { + "sha": "5dd618b26", + "time": 1775696886000, + "subject": "feat(FN-1219): add mission observability and autopilot dashboard UX", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "34f780e63", + "time": 1775816145000, + "subject": "feat(FN-1412): add plugin lifecycle event relay over dashboard SSE", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ed52f413e", + "time": 1776018759000, + "subject": "fix dashboard task payload freezes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "80e49b8e4", + "time": 1776388858000, + "subject": "feat(FN-1976): forward mailbox message events end to end", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "430f7cf39", + "time": 1776498267000, + "subject": "feat(FN-1975): stream chat session updates through SSE", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/executor-contamination-base.test.ts", + "package": "packages/engine", + "valueScore": 16.5, + "positiveCount": 7, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 2, + "testOnlyRatio": 0.222, + "signalTally": { + "fix+source": 4, + "added-with-source": 1, + "test+source": 3, + "test-only-churn": 2 + }, + "durationMs": 100, + "testCount": 10, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.7, + "ageDays": 43, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "a2b494ddc", + "time": 1778723081000, + "subject": "fix(FN-4417): stop false-positive branch contamination from stale baseCommitSha", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "b78b6ae70", + "time": 1778724451000, + "subject": "fix(FN-4417): prefer local main over origin/main in contamination base", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "406632df7", + "time": 1778750937000, + "subject": "feat(FN-4428): add contamination auto-recovery executor flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "259903e56", + "time": 1778790781000, + "subject": "feat(FN-4499): complete Step 4 — wire bootstrap contamination recovery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "14c5a1784", + "time": 1779044635000, + "subject": "fix(FN-4939): preserve worktree on contamination auto-recovery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3bbc5077b", + "time": 1779055355000, + "subject": "feat(FN-4935): complete Step 7 — testing and verification", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/builtin-coding-workflow-ir.test.ts", + "package": "packages/core", + "valueScore": 17, + "positiveCount": 9, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "fix+source": 3, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 12, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.6, + "ageDays": 25, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "1edbb54fc", + "time": 1780241521000, + "subject": "FN-5766: add flagged-off workflow graph executor scaffold", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ba81d1f0a", + "time": 1780241521000, + "subject": "FN-5767: wire workflow graph executor to legacy seams", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "964744cd4", + "time": 1780557191000, + "subject": "feat(core): WorkflowIr v2 — workflow-defined columns, hold/split/join nodes, v1 upgrade (U1)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "904e68143", + "time": 1780883507000, + "subject": "FN-6006: name built-in workflow seam nodes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d8a015e22", + "time": 1780904984000, + "subject": "fix(FN-0000): show auto-merge on workflow review columns", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "7d8ae5333", + "time": 1780950778000, + "subject": "FN-6028: add retries to builtin execute node", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/skills-adapter.test.ts", + "package": "packages/dashboard", + "valueScore": 17, + "positiveCount": 7, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "fix+source": 4, + "added-with-source": 1, + "test+source": 4, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 26, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.6, + "ageDays": 69, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "e98eb9063", + "time": 1776470769000, + "subject": "fix(FN-1987): move skills search to top and improve catalog fallback", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "5edd49130", + "time": 1776511106000, + "subject": "feat(FN-1913): add skill content viewer to SkillsView", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "17339046e", + "time": 1777146032000, + "subject": "fix(FN-2510): harden skills catalog fallback for short and invalid queries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "42c27fcc3", + "time": 1777473323000, + "subject": "fix(FN-XXX): harden windows path handling", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "e6ce50033", + "time": 1780380086000, + "subject": "FN-5853: persist skills toggle state in dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5c4c76513", + "time": 1780450193000, + "subject": "FN-5904: feat(FN-5904): add browse-and-install flow for skills.sh catalog in Skills view", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/global-settings.test.ts", + "package": "packages/core", + "valueScore": 35, + "positiveCount": 22, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 25, + "testOnlyCount": 3, + "testOnlyRatio": 0.12, + "signalTally": { + "added-with-source": 1, + "test+source": 18, + "fix+source": 3, + "test-only-churn": 3 + }, + "durationMs": 200, + "testCount": 47, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.6, + "ageDays": 87, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "dac470576", + "time": 1774951953000, + "subject": "feat(KB-185): add global/project settings hierarchy with scope-aware UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "be7ec1877", + "time": 1775232161000, + "subject": "fix: restore ntfyDashboardHost setting and add schema protection for global settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "55e54696a", + "time": 1775815431000, + "subject": "feat(FN-1336): add write-through cache to GlobalSettingsStore", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "274f8bd8a", + "time": 1776136930000, + "subject": "feat(FN-1627): expose global execution concurrency limit in settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9047b8bcc", + "time": 1776243437000, + "subject": "feat(FN-1710): add dual-scope model settings lane fields", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/settings.test.ts", + "package": "packages/cli", + "valueScore": 17.5, + "positiveCount": 16, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 20, + "testOnlyCount": 3, + "testOnlyRatio": 0.15, + "signalTally": { + "added-with-source": 1, + "test+source": 15, + "churn-keyword": 2, + "test-only-churn": 3, + "fix": 1 + }, + "durationMs": 100, + "testCount": 25, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.4, + "ageDays": 87, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "1b532091e", + "time": 1774917303000, + "subject": "feat(KB-201): add settings CLI commands", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "25a543844", + "time": 1775025696000, + "subject": "feat(KB-619): add multi-project CLI support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "54767f60e", + "time": 1775051690000, + "subject": "feat(KB-648): enable parallel test execution and optimize test performance", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "81a1adb20", + "time": 1775052970000, + "subject": "feat(KB-619): add CLI multi-project commands and --project flag support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07adb42d6", + "time": 1775081218000, + "subject": "feat(KB-503): merge kb/kb-503", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/status-colors-theme.test.ts", + "package": "packages/dashboard", + "valueScore": 17.5, + "positiveCount": 11, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 14, + "testOnlyCount": 1, + "testOnlyRatio": 0.071, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 5, + "fix": 6, + "churn-keyword": 2, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 47, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.4, + "ageDays": 80, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "8ecb11011", + "time": 1775515065000, + "subject": "feat(FN-1032): replace hardcoded colors with CSS custom properties across dashboard components", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7d58c2059", + "time": 1775708759000, + "subject": "feat(FN-1293): add --accent override to all 34 color theme variants", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7f7da7944", + "time": 1775804855000, + "subject": "feat(FN-1409): extract color-theme CSS to separate theme-data.css", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "35823350b", + "time": 1776975158000, + "subject": "fix(FN-2338): standardize surface-hover token usage", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "e3070ec9b", + "time": 1777058828000, + "subject": "fix(FN-2336): standardize surface-hover token contract", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "c41340715", + "time": 1777060644000, + "subject": "fix(FN-2365): tokenize Git Manager light-theme surface styles", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/agent-generation.test.ts", + "package": "packages/dashboard", + "valueScore": 18, + "positiveCount": 9, + "negativeCount": 1, + "neutralCount": 1, + "timesTouched": 11, + "testOnlyCount": 1, + "testOnlyRatio": 0.091, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix+source": 4, + "fix": 1, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 37, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.3, + "ageDays": 82, + "lastTouched": "2026-04-25", + "evidence": [ + { + "sha": "602534a1b", + "time": 1775368390000, + "subject": "feat(FN-865): add AI agent generation service with dashboard UI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a43ec905b", + "time": 1775850578000, + "subject": "feat(FN-1434): add prompt overrides for agent generation", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b3f057a28", + "time": 1775871023000, + "subject": "fix: improve merge verification and dashboard behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "ddb8b2f96", + "time": 1775881002000, + "subject": "fix(types): correct GitHubOperations interface and test type assertions", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "997dd01ec", + "time": 1775885609000, + "subject": "feat(FN-1426): add tests for prompt override edit/reset/save behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "961bf4b34", + "time": 1776035694000, + "subject": "feat: change default max turns for new agents from 10 to 1000", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/worktrunk-worktree-removal.test.ts", + "package": "packages/engine", + "valueScore": 18, + "positiveCount": 8, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix+source": 5, + "churn-keyword": 1, + "fix": 1, + "test+source": 2 + }, + "durationMs": 100, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.3, + "ageDays": 40, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "251a47245", + "time": 1778951282000, + "subject": "test(FN-4742): complete Step 5 — add worktrunk removal interaction backstop", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "378762c4a", + "time": 1778951282000, + "subject": "fix(FN-4742): address review for worktrunk removal backstop", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "33755d44f", + "time": 1778951282000, + "subject": "fix(FN-4742): stabilize worktrunk removal interaction assertions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "14cc9d82d", + "time": 1781304653000, + "subject": "test(FN-343): cover merger temp cleanup visibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2ac9968ea", + "time": 1781304675000, + "subject": "fix(FN-343): address PR review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "02a85818c", + "time": 1781304675000, + "subject": "fix(FN-343): address follow-up review findings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-graph-task-runner.test.ts", + "package": "packages/engine", + "valueScore": 18, + "positiveCount": 8, + "negativeCount": 2, + "neutralCount": 1, + "timesTouched": 11, + "testOnlyCount": 2, + "testOnlyRatio": 0.182, + "signalTally": { + "added-with-source": 1, + "test+source": 2, + "fix+source": 6, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.3, + "ageDays": 22, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "83451b165", + "time": 1780507753000, + "subject": "feat(engine): WorkflowGraphTaskRunner — interpreter drives a task's lifecycle (CU-U2)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "44e77fda5", + "time": 1780510050000, + "subject": "feat(engine): graph interpreter owns the full task lifecycle behind the flag (CU-U3, CU-U4)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cfc9bb5fd", + "time": 1780583642000, + "subject": "fix(core): shared workflow-IR resolver, prod branch persistence + pruning, latest-run JOIN, sweep reservation-leak fix (#1402 #1407 #1412 #1413)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "28e74f10d", + "time": 1780636716000, + "subject": "feat(core): workflow kind discriminator and steps-to-IR converter", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "e13897103", + "time": 1780900216000, + "subject": "fix: stabilize workflow board and loop recovery", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "56b194383", + "time": 1780900216000, + "subject": "fix: address workflow PR feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/chat-store.test.ts", + "package": "packages/core", + "valueScore": 18.5, + "positiveCount": 13, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 2, + "testOnlyRatio": 0.133, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 9, + "churn-keyword": 1, + "test-only-churn": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 77, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 5.1, + "ageDays": 77, + "lastTouched": "2026-05-27", + "evidence": [ + { + "sha": "fd412447e", + "time": 1775757501000, + "subject": "feat(FN-1359): add ChatStore for session and message management", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "df7362236", + "time": 1776343654000, + "subject": "fix(FN-1817): enrich session list with lastMessagePreview and restore active session on remount", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "759075bdb", + "time": 1776464686000, + "subject": "feat(FN-2012): merge fusion/fn-2012", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "430f7cf39", + "time": 1776498267000, + "subject": "feat(FN-1975): stream chat session updates through SSE", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a269f4829", + "time": 1777010554000, + "subject": "refactor: remove legacy kb compatibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "83630a519", + "time": 1777046102000, + "subject": "feat(FN-2449): merge fusion/fn-2449", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/ProviderIcon.test.tsx", + "package": "packages/dashboard", + "valueScore": 39.5, + "positiveCount": 23, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 23, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 19, + "fix+source": 3 + }, + "durationMs": 200, + "testCount": 91, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.9, + "ageDays": 88, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "44ac59c6a", + "time": 1774849883000, + "subject": "feat(KB-081): add provider icons to model selector with custom dropdown", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0a718fc3e", + "time": 1774881628000, + "subject": "feat(KB-121): replace generic icons with brand SVG logos in ProviderIcon", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c62e1d90", + "time": 1775022118000, + "subject": "feat(KB-652): add openai-codex provider alias", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4b39bf1f4", + "time": 1775024343000, + "subject": "feat(KB-618): add multi-project support to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc13b9a8f", + "time": 1775056663000, + "subject": "feat(FN-681): add openai-codex provider support with OpenAI icon and label mapping", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "71914d3e3", + "time": 1775749429000, + "subject": "feat(FN-1344): add MiniMax and Z.ai provider logos to usage dialog", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-integration-worktree.test.ts", + "package": "packages/engine", + "valueScore": 20.5, + "positiveCount": 11, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 12, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix": 1, + "fix+source": 3, + "test+source": 7, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 34, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.7, + "ageDays": 36, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d6196a866", + "time": 1779303941000, + "subject": "fix(FN-5363): implement targetTaskId in store SQL so lease targets correct task", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "b4fc54bb2", + "time": 1779380274000, + "subject": "fix(FN-5256): route merger-handoff reconcile through hardened gates", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "b3f995c85", + "time": 1779392990000, + "subject": "feat(FN-5348): remove cwd-main integration mode fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0c2416903", + "time": 1779396025000, + "subject": "feat(FN-5363): enforce strict target lease to prevent merge queue pollution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5a76a8907", + "time": 1779399299000, + "subject": "feat(FN-5351): add merge audit telemetry with typed events and integration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/pr-comment-handler.test.ts", + "package": "packages/engine", + "valueScore": 20.5, + "positiveCount": 14, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 2, + "test+source": 13, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 13, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.7, + "ageDays": 88, + "lastTouched": "2026-05-20", + "evidence": [ + { + "sha": "efd7c176f", + "time": 1774833035000, + "subject": "feat(KB-004): add GitHub PR creation and comment monitoring", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7d62a3abc", + "time": 1774851204000, + "subject": "feat(KB-093): add PR-first merge mode with configurable merge strategies", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "555cbd9dd", + "time": 1774884256000, + "subject": "feat(KB-141): fix workspace type resolution and add clean-checkout typecheck tests", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/project-memory.test.ts", + "package": "packages/core", + "valueScore": 21, + "positiveCount": 13, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 2, + "testOnlyRatio": 0.133, + "signalTally": { + "added-with-source": 1, + "test+source": 10, + "test-only-churn": 2, + "fix+source": 2 + }, + "durationMs": 100, + "testCount": 67, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.5, + "ageDays": 80, + "lastTouched": "2026-05-12", + "evidence": [ + { + "sha": "92b516e5f", + "time": 1775547679000, + "subject": "feat(FN-1022): add project memory bootstrap with agent integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2200971d2", + "time": 1775893122000, + "subject": "feat(FN-1553): reduce memory bloat with selective save behavior", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "19199b843", + "time": 1776141347000, + "subject": "feat(FN-1767): add QMD memory backend with async execution and backend-aware project helpers", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5b0b0591b", + "time": 1776143022000, + "subject": "feat(FN-1772): add backend-aware memory instruction context API", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "06cade022", + "time": 1776319742000, + "subject": "test(FN-1893): add comprehensive QMD test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "39cbfaba0", + "time": 1776438996000, + "subject": "fix(FN-000): simplify qmd memory settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useModalManager.test.ts", + "package": "packages/dashboard", + "valueScore": 21, + "positiveCount": 14, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 15, + "testOnlyCount": 1, + "testOnlyRatio": 0.067, + "signalTally": { + "added-with-source": 1, + "test+source": 12, + "fix": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.5, + "ageDays": 78, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "321ec691b", + "time": 1775652804000, + "subject": "feat(FN-1203): extract App orchestration into focused hooks", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6388c4047", + "time": 1775712084000, + "subject": "feat(FN-1328): enable optimistic task detail modal opening", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ed35b494f", + "time": 1776265442000, + "subject": "feat(FN-1634): promote mailbox to first-class navigation view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cf12664e5", + "time": 1777274058000, + "subject": "feat(FN-2644): merge fusion/fn-2644", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3031d05a6", + "time": 1777345192000, + "subject": "fix(dashboard): clear all 661 test-file type errors", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "25e76d61d", + "time": 1778648143000, + "subject": "feat(FN-4227): add clickable file path links across dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/mission-interview.test.ts", + "package": "packages/dashboard", + "valueScore": 21, + "positiveCount": 14, + "negativeCount": 3, + "neutralCount": 2, + "timesTouched": 19, + "testOnlyCount": 1, + "testOnlyRatio": 0.053, + "signalTally": { + "added": 1, + "test+source": 12, + "churn-keyword": 4, + "fix+source": 5, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 46, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.5, + "ageDays": 79, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "d653391d3", + "time": 1775613978000, + "subject": "test(FN-1084): expand mission workflow automated test coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "90fbf3e39", + "time": 1775653348000, + "subject": "feat(FN-1145): harden dashboard SSE streams with replay and reconnect", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5d540f7c7", + "time": 1775662017000, + "subject": "feat(FN-1147): rehydrate AI sessions across server restarts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0ff6d42c0", + "time": 1775686246000, + "subject": "feat(FN-1152): add retry flows for failed AI planning sessions", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "87e22f16a", + "time": 1775946183000, + "subject": "feat(FN-1445): add project-scoping and fallback handling for AI routes and missions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3977b3889", + "time": 1776539460000, + "subject": "fix(FN-2054): harden agent loop stuck-detection and self-healing", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/skill-resolver.test.ts", + "package": "packages/engine", + "valueScore": 21, + "positiveCount": 13, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 14, + "testOnlyCount": 1, + "testOnlyRatio": 0.071, + "signalTally": { + "added-with-source": 2, + "test+source": 10, + "test-only-churn": 1, + "fix+source": 1 + }, + "durationMs": 100, + "testCount": 46, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.5, + "ageDays": 72, + "lastTouched": "2026-06-09", + "evidence": [ + { + "sha": "d7e27ae08", + "time": 1776178798000, + "subject": "feat(FN-1510): add skill resolver and createKbAgent override tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "13a3e1b93", + "time": 1776179633000, + "subject": "feat(FN-1510): merge fusion/fn-1510", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "04e4cd7db", + "time": 1776181297000, + "subject": "feat(FN-1513): regression tests for skill override wiring and resolver fallback semantics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2d7da656e", + "time": 1776182166000, + "subject": "feat(FN-1513): track excluded skill paths and improve skill resolver diagnostics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b56818866", + "time": 1776195909000, + "subject": "feat(FN-1798): merge fusion/fn-1798", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "924673f97", + "time": 1776196849000, + "subject": "feat(FN-1811): merge fusion/fn-1811", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/Header.test.tsx", + "package": "packages/dashboard", + "valueScore": 153.5, + "positiveCount": 104, + "negativeCount": 12, + "neutralCount": 1, + "timesTouched": 117, + "testOnlyCount": 7, + "testOnlyRatio": 0.06, + "signalTally": { + "added-with-source": 1, + "test+source": 99, + "churn-keyword": 6, + "test-only-churn": 7, + "fix+source": 8, + "fix": 2 + }, + "durationMs": 700, + "testCount": 150, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.5, + "ageDays": 92, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "2ab34bc11", + "time": 1774501527000, + "subject": "feat(HAI-089): add logo SVG to header component with tests", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "36873e57c", + "time": 1774729823000, + "subject": "feat(KB-145): add global pause button to halt all AI engine activity", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f82316180", + "time": 1774729823000, + "subject": "feat(KB-157): add soft-pause (enginePaused) alongside hard-stop (globalPause)", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "6dabb8036", + "time": 1774732634000, + "subject": "feat(KB-180): rename pause button titles from 'AI engine' to 'scheduling'", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c782c60af", + "time": 1774831228000, + "subject": "feat(KB-002): add interactive GitHub issue import", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merge-error-recovery.test.ts", + "package": "packages/engine", + "valueScore": 21.5, + "positiveCount": 16, + "negativeCount": 4, + "neutralCount": 4, + "timesTouched": 24, + "testOnlyCount": 2, + "testOnlyRatio": 0.083, + "signalTally": { + "churn-keyword": 7, + "fix+source": 6, + "added-with-source": 1, + "test+source": 15, + "test-only-churn": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 31, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.4, + "ageDays": 68, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "891c95bf8", + "time": 1776573030000, + "subject": "fix(FN-2084): improve auto-merge error recovery observability", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "churn-keyword", + "fix+source", + "added-with-source" + ] + }, + { + "sha": "1bf057d07", + "time": 1777262968000, + "subject": "fix(engine): cap verification-failure bounces, reap unregistered worktrees, dedupe activity log", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "14d2bb7b8", + "time": 1777443430000, + "subject": "fix(engine): prevent auto-merge cooldown loop on unresolvable conflicts", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "1bd32a542", + "time": 1777903239000, + "subject": "feat(FN-3231): preserve merge-active state on verification bounce and board", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d3060ef7f", + "time": 1777931232000, + "subject": "feat(FN-3317): add merge scheduler recovery test coverage", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "aac3c2236", + "time": 1777970436000, + "subject": "feat(FN-3479): add agent heartbeat monitoring, auto-claim setting, and work", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/ntfy-provider.test.ts", + "package": "packages/engine", + "valueScore": 21.5, + "positiveCount": 11, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "fix+source": 3 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.4, + "ageDays": 58, + "lastTouched": "2026-06-02", + "evidence": [ + { + "sha": "e782636c4", + "time": 1777411556000, + "subject": "feat(FN-2866): wire provider-backed notification service into engine", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "68f34dd0f", + "time": 1777776954000, + "subject": "feat(FN-3008): notify when model settings fall back to defaults", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fdf387b22", + "time": 1778304347000, + "subject": "feat(FN-3800): add session switcher to chat header and mobile switcher", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7bf93e850", + "time": 1778349732000, + "subject": "fix(FN-3825): surface inline notification test feedback in settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2d3af5b6c", + "time": 1778363936000, + "subject": "fix(FN-3886): resolve peer agent names in mail and notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2d46a882f", + "time": 1778597231000, + "subject": "feat(FN-4078): add ntfy access token support to notifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/provider-auth.test.ts", + "package": "packages/cli", + "valueScore": 22, + "positiveCount": 10, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 1, + "testOnlyRatio": 0.091, + "signalTally": { + "fix+source": 4, + "added-with-source": 1, + "test+source": 6, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.3, + "ageDays": 70, + "lastTouched": "2026-05-21", + "evidence": [ + { + "sha": "48d377f68", + "time": 1776396228000, + "subject": "fix(FN-1952): read legacy pi auth keys", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "bd8324eba", + "time": 1776397970000, + "subject": "fix(FN-1952): recover failed review tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a99af2429", + "time": 1776399408000, + "subject": "fix(FN-1952): read legacy oauth auth", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1cbf9e101", + "time": 1776580907000, + "subject": "test: enforce test-directory isolation across all packages", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0928f3fb3", + "time": 1777226180000, + "subject": "feat(FN-2594): merge fusion/fn-2594", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/agent-css-classes.test.ts", + "package": "packages/dashboard", + "valueScore": 23, + "positiveCount": 19, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 25, + "testOnlyCount": 5, + "testOnlyRatio": 0.2, + "signalTally": { + "added-with-source": 1, + "test+source": 16, + "fix+source": 2, + "test-only-churn": 5, + "churn-keyword": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 16, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.2, + "ageDays": 81, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "6d6bec9eb", + "time": 1775399190000, + "subject": "feat(FN-909): redesign Agent Manager UI with CSS class approach and design tokens", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fd79050af", + "time": 1775881370000, + "subject": "feat(FN-1490): merge fusion/fn-1490", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b4517581c", + "time": 1776876986000, + "subject": "fix(FN-2204): restore tokenized styling in agents views", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2873bc038", + "time": 1776883406000, + "subject": "refactor(FN-2206): centralize agent modal styling in dashboard CSS", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "0206862c0", + "time": 1777046102000, + "subject": "feat(FN-2324): merge fusion/fn-2324", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7beb103db", + "time": 1777062863000, + "subject": "feat(FN-2378): add popup controls and reorder agents view sections", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/routes-session-files.test.ts", + "package": "packages/dashboard", + "valueScore": 23, + "positiveCount": 11, + "negativeCount": 0, + "neutralCount": 1, + "timesTouched": 12, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 6, + "fix+source": 5, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 3, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.2, + "ageDays": 85, + "lastTouched": "2026-04-29", + "evidence": [ + { + "sha": "da4fc74e7", + "time": 1775057446000, + "subject": "feat(FN-675): align session-files endpoint with diff endpoint", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "fa90b69f2", + "time": 1775104582000, + "subject": "feat(KB-662): complete Step 2 — add visibility refresh tests for useProjects", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "182fa8eeb", + "time": 1775146970000, + "subject": "feat(FN-675): align session-files endpoint with diff endpoint", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "1f8465342", + "time": 1775177464000, + "subject": "fix(FN-000): scope dashboard project flows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "71aa63e58", + "time": 1775225367000, + "subject": "fix(FN-756): reset recycled worktree baselines", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/tablet-header-controls.test.tsx", + "package": "packages/dashboard", + "valueScore": 47, + "positiveCount": 29, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 30, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 26, + "fix+source": 3, + "churn-keyword": 1 + }, + "durationMs": 200, + "testCount": 47, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4.2, + "ageDays": 83, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "797ac1a8d", + "time": 1775227151000, + "subject": "feat(FN-766): add three-tier responsive header with tablet compact mode", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cf3e1a142", + "time": 1775231341000, + "subject": "feat(FN-786): move Settings to last position in overflow menu", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "074755fef", + "time": 1775247962000, + "subject": "feat(FN-788): nest Scripts under Terminal in compact overflow menu", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f402a70dc", + "time": 1775266149000, + "subject": "feat(FN-796): convert compact Terminal overflow to split action with script submenu", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f3311d5aa", + "time": 1775359824000, + "subject": "fix(FN-949): prevent bounce-back on Projects nav and show in mobile overflow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3072b497a", + "time": 1775687599000, + "subject": "feat(FN-1206): promote missions to an inline top-level view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useViewState.test.ts", + "package": "packages/dashboard", + "valueScore": 24, + "positiveCount": 15, + "negativeCount": 3, + "neutralCount": 1, + "timesTouched": 19, + "testOnlyCount": 2, + "testOnlyRatio": 0.105, + "signalTally": { + "added-with-source": 1, + "test+source": 12, + "fix+source": 4, + "test-only-churn": 2, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 32, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4, + "ageDays": 78, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "95c27f395", + "time": 1775673599000, + "subject": "refactor(FN-1289): extract AppInner logic into hooks and modal component", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d52ae1cb9", + "time": 1776297506000, + "subject": "feat(FN-1709): add InsightsView navigation and routing integration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "687c4ac0c", + "time": 1776656894000, + "subject": "feat(FN-2168): add persistent dev-server dashboard flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f21ed51b9", + "time": 1776722996000, + "subject": "feat(FN-2182): add dashboard dev server management view", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "56fb6cbc1", + "time": 1776751648000, + "subject": "feat(FN-2188): harden dev server view lifecycle and mobile nav", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "85a1adbd0", + "time": 1776903147000, + "subject": "feat(FN-2269): migrate dashboard session selection to global settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/projectStorage.test.ts", + "package": "packages/dashboard", + "valueScore": 24, + "positiveCount": 17, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 18, + "testOnlyCount": 1, + "testOnlyRatio": 0.056, + "signalTally": { + "added": 1, + "test+source": 16, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 14, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4, + "ageDays": 62, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "d13aec45e", + "time": 1777084760000, + "subject": "chore: consolidate remaining tests into __tests__/ dirs and refactor mocks", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "b533c346a", + "time": 1777227562000, + "subject": "feat(FN-2593): add hide/show controls for planning usage windows", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e6c79f1a4", + "time": 1777663820000, + "subject": "feat(FN-2985): add droid CLI path reconciliation extension", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d42dfb0ab", + "time": 1777707021000, + "subject": "feat(FN-3121): merge fusion/fn-3121", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "521482941", + "time": 1777710055000, + "subject": "feat(FN-3153): add drag-and-drop provider reorder with Quick Chat FAB and p", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3e747f219", + "time": 1777722447000, + "subject": "feat(FN-3190): fix ListView split-pane UX follow-up issues", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/mission-execution-loop.test.ts", + "package": "packages/engine", + "valueScore": 24, + "positiveCount": 18, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 22, + "testOnlyCount": 2, + "testOnlyRatio": 0.091, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "churn-keyword": 3, + "test-only-churn": 2, + "test+source": 18 + }, + "durationMs": 100, + "testCount": 53, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 4, + "ageDays": 75, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "ecf7f266b", + "time": 1775962133000, + "subject": "fix(FEAT-004-FIX-001): fix MissionExecutionLoop validation parsing and recovery", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "767bcee08", + "time": 1775963627000, + "subject": "test(FEAT-004-FIX-002): add comprehensive unit tests for MissionExecutionLoop", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "53ed76427", + "time": 1776239168000, + "subject": "feat(FN-1787): merge fusion/fn-1787", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6f1237572", + "time": 1776460177000, + "subject": "feat(FN-1982): merge fusion/fn-1982", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f528b379c", + "time": 1776585816000, + "subject": "feat(FN-2089): merge fusion/fn-2089", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6714f7654", + "time": 1776656894000, + "subject": "refactor(FN-2161): standardize on createFnAgent naming", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/daemon.test.ts", + "package": "packages/cli", + "valueScore": 25, + "positiveCount": 18, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 24, + "testOnlyCount": 4, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 4, + "fix+source": 3, + "test+source": 16, + "churn-keyword": 2 + }, + "durationMs": 100, + "testCount": 17, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 3.8, + "ageDays": 72, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "7f86f704b", + "time": 1776250862000, + "subject": "feat(FN-1831): merge fusion/fn-1831", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0c8089b1d", + "time": 1776285207000, + "subject": "feat(FN-1644): rename default global data directory from ~/.pi/fusion to ~/.fusion", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "8df18fab2", + "time": 1776400936000, + "subject": "fix(FN-1952): restore pi auth and extension loading", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "39e833b91", + "time": 1776461503000, + "subject": "feat(FN-2014): merge fusion/fn-2014", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4e85969d5", + "time": 1776827520000, + "subject": "perf(executor): recover approved steps on engine restart", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7e71f6a62", + "time": 1777010554000, + "subject": "refactor: migrate to ModelRegistry.create factory", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/workflow-task-runtime.test.ts", + "package": "packages/engine", + "valueScore": 26.5, + "positiveCount": 11, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 1, + "testOnlyRatio": 0.077, + "signalTally": { + "added-with-source": 1, + "fix+source": 8, + "test+source": 3, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 23, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 3.6, + "ageDays": 18, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "cbc2bbff7", + "time": 1780879363000, + "subject": "refactor(workflow): add workflow task runtime facade", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ce8402e37", + "time": 1780880364000, + "subject": "fix(FN-6021): align workflow runtime fallback run ids", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "8f42098cc", + "time": 1780971194000, + "subject": "feat(FN-6035): route execution through workflow primitives", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b6800e862", + "time": 1780978592000, + "subject": "fix(FN-6035): address workflow primitive review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "8d3b869ec", + "time": 1780981346000, + "subject": "fix(FN-6035): model pre-merge workflow steps in builtin coding", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "fc8086c48", + "time": 1780981545000, + "subject": "fix(FN-6035): fail execute on missing prepared worktree", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/agent-prompts.test.ts", + "package": "packages/core", + "valueScore": 28, + "positiveCount": 17, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 18, + "testOnlyCount": 1, + "testOnlyRatio": 0.056, + "signalTally": { + "added-with-source": 1, + "test+source": 14, + "fix+source": 2, + "test-only-churn": 1 + }, + "durationMs": 100, + "testCount": 50, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 3.4, + "ageDays": 79, + "lastTouched": "2026-06-23", + "evidence": [ + { + "sha": "5646a03d8", + "time": 1775590288000, + "subject": "feat(FN-1048): add configurable agent prompts with built-in templates", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "07ae3fad4", + "time": 1775788424000, + "subject": "feat(FN-1429): enforce always-green test-suite instructions for executor agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "03f010cf6", + "time": 1775804385000, + "subject": "feat(FN-1430): add worktree execution boundaries to prevent out-of-scope modifications", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4137dbd22", + "time": 1775850507000, + "subject": "feat(FN-1540): add lint as inline quality gate in task prompts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fa5af13df", + "time": 1776120665000, + "subject": "feat(FN-1663): merge fusion/fn-1663", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "53cad3ba9", + "time": 1776574966000, + "subject": "fix(FN-2078): adopt canonical .fusion/memory paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/task-lifecycle.test.ts", + "package": "packages/cli", + "valueScore": 29.5, + "positiveCount": 16, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 22, + "testOnlyCount": 4, + "testOnlyRatio": 0.182, + "signalTally": { + "fix+source": 7, + "added-with-source": 1, + "churn-keyword": 2, + "test+source": 11, + "test-only-churn": 4 + }, + "durationMs": 100, + "testCount": 33, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 3.3, + "ageDays": 57, + "lastTouched": "2026-06-05", + "evidence": [ + { + "sha": "8fdadb079", + "time": 1777495337000, + "subject": "fix(cli): push per-task branch to origin before creating PR; drop dead autoCreatePr", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "01cf62b00", + "time": 1777495775000, + "subject": "feat(FN-2920): improve remote tunnel setup and heartbeat scheduling", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "551977a21", + "time": 1777913683000, + "subject": "Add changeset", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "4225f9fa0", + "time": 1777990712000, + "subject": "feat(FN-3287): document PR link visibility in dashboard README", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "021768bbf", + "time": 1778331887000, + "subject": "fix: guard PR retries for missing task branches", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c96629e6a", + "time": 1778401333000, + "subject": "feat(FN-3220): add regression tests for branch routing and merge-target beh", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/task-merge.test.ts", + "package": "packages/core", + "valueScore": 29.5, + "positiveCount": 18, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 22, + "testOnlyCount": 4, + "testOnlyRatio": 0.182, + "signalTally": { + "added-with-source": 1, + "test+source": 13, + "test-only-churn": 4, + "fix+source": 4 + }, + "durationMs": 100, + "testCount": 78, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 3.3, + "ageDays": 82, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "c85c3e4ec", + "time": 1775349378000, + "subject": "feat(FN-837): add workflow step phase support with pre-merge and post-merge execution", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e40444443", + "time": 1775793979000, + "subject": "feat(FN-1259): add review handoff mechanism for user assignment", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "428b8f7b1", + "time": 1776032007000, + "subject": "Harden architecture hot paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "db15ab78f", + "time": 1776340389000, + "subject": "feat(FN-1808): merge fusion/fn-1808", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d3a65654a", + "time": 1777420646000, + "subject": "fix(core): block merging tasks in planning/specifying status", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/task.test.ts", + "package": "packages/cli", + "valueScore": 32, + "positiveCount": 37, + "negativeCount": 14, + "neutralCount": 1, + "timesTouched": 52, + "testOnlyCount": 8, + "testOnlyRatio": 0.154, + "signalTally": { + "added-with-source": 1, + "test+source": 40, + "test-only-churn": 8, + "churn-keyword": 10, + "fix+source": 2, + "fix": 1 + }, + "durationMs": 100, + "testCount": 138, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 3, + "ageDays": 92, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "e9d30c869", + "time": 1774491612000, + "subject": "test(HAI-029): add tests for runTaskShow output", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "123c481df", + "time": 1774498001000, + "subject": "feat(HAI-042): add file attachment support for tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7170e5ba5", + "time": 1774590810000, + "subject": "feat(KB-127): add --depends flag to task create CLI command", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b5217a08c", + "time": 1774830276000, + "subject": "test(KB-001): add GitHub import tests and update extension tool count", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "c782c60af", + "time": 1774831228000, + "subject": "feat(KB-002): add interactive GitHub issue import", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/agent-logger.test.ts", + "package": "packages/engine", + "valueScore": 33.5, + "positiveCount": 19, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 19, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 15, + "fix+source": 3 + }, + "durationMs": 100, + "testCount": 41, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 2.9, + "ageDays": 91, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "121b50968", + "time": 1774567757000, + "subject": "refactor(HAI-093): extract AgentLogger abstraction and rewire agents", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9bb25a15e", + "time": 1774568036000, + "subject": "feat(HAI-099): remove truncation from summarizeToolArgs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "948928d25", + "time": 1774588782000, + "subject": "feat(KB-123): add agent role tracking and expanded logging to agent system", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/chat-manager.test.ts", + "package": "packages/dashboard", + "valueScore": 38.5, + "positiveCount": 32, + "negativeCount": 8, + "neutralCount": 1, + "timesTouched": 41, + "testOnlyCount": 3, + "testOnlyRatio": 0.073, + "signalTally": { + "added-with-source": 1, + "test+source": 31, + "churn-keyword": 6, + "fix+source": 4, + "fix": 2, + "test-only-churn": 3, + "quarantine-ledger": 1 + }, + "durationMs": 100, + "testCount": 72, + "quarantined": true, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 2.5, + "ageDays": 72, + "lastTouched": "2026-06-18", + "evidence": [ + { + "sha": "414297d63", + "time": 1776217594000, + "subject": "feat(FN-1857): merge fusion/fn-1857", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "763848eb7", + "time": 1776242981000, + "subject": "feat(FN-1549): simplify chat creation with agent-only selection and auto title", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "07ddb1ca1", + "time": 1776417594000, + "subject": "feat(FN-1984): enrich chat and heartbeat prompts with agent context", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9baa29fd0", + "time": 1776442568000, + "subject": "feat(FN-2000): add memory auto-summarize settings and automation sync", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f35ea101c", + "time": 1776453219000, + "subject": "fix(FN-1572): stabilize fusion agent execution", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "a63bca856", + "time": 1776570972000, + "subject": "fix(FN-2060): preserve quick chat state on streaming errors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/notifier.test.ts", + "package": "packages/engine", + "valueScore": 38.5, + "positiveCount": 25, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 28, + "testOnlyCount": 3, + "testOnlyRatio": 0.107, + "signalTally": { + "added-with-source": 1, + "test+source": 21, + "fix": 1, + "fix+source": 2, + "test-only-churn": 3 + }, + "durationMs": 100, + "testCount": 82, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 2.5, + "ageDays": 88, + "lastTouched": "2026-06-01", + "evidence": [ + { + "sha": "036473d2c", + "time": 1774838795000, + "subject": "feat(KB-026): add ntfy.sh push notification support", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "05fad4951", + "time": 1774881316000, + "subject": "feat(KB-106): remove duplicate ntfy notifications and add per-event-type deduplication", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "36a7bbe18", + "time": 1774882184000, + "subject": "fix(KB-124): resolve ntfy duplicate notifications and spec editor layout", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "109bfb97b", + "time": 1775002085000, + "subject": "feat(KB-604): include task context in notifications with description fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/triage.test.ts", + "package": "packages/engine", + "valueScore": 160.5, + "positiveCount": 101, + "negativeCount": 12, + "neutralCount": 4, + "timesTouched": 117, + "testOnlyCount": 9, + "testOnlyRatio": 0.077, + "signalTally": { + "added-with-source": 1, + "test+source": 89, + "fix+source": 16, + "churn-keyword": 7, + "fix": 2, + "test-only-churn": 9, + "symptom-verification": 1 + }, + "durationMs": 400, + "testCount": 140, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 2.5, + "ageDays": 92, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "640c28883", + "time": 1774487851000, + "subject": "feat(HAI-016): complete Step 2 — integrate semaphore into TriageProcessor", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "289f86568", + "time": 1774491464000, + "subject": "feat(HAI-027): complete Step 2 — inject commands into triage agent context", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "afcd074ca", + "time": 1774497890000, + "subject": "feat(HAI-061): make scheduler and triage processor read settings dynamically", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "123c481df", + "time": 1774498001000, + "subject": "feat(HAI-042): add file attachment support for tasks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "93a79a5bf", + "time": 1774501069000, + "subject": "fix(HAI-086): handle ENOENT gracefully in specifyTask", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a8a7fd711", + "time": 1774502227000, + "subject": "feat(HAI-091): add agent log persistence to triage and merger agents", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-pool.test.ts", + "package": "packages/engine", + "valueScore": 41.5, + "positiveCount": 27, + "negativeCount": 6, + "neutralCount": 1, + "timesTouched": 34, + "testOnlyCount": 4, + "testOnlyRatio": 0.118, + "signalTally": { + "added-with-source": 1, + "test+source": 23, + "test-only-churn": 4, + "fix+source": 6, + "churn-keyword": 3 + }, + "durationMs": 100, + "testCount": 57, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 2.4, + "ageDays": 92, + "lastTouched": "2026-06-20", + "evidence": [ + { + "sha": "74379bdbc", + "time": 1774494484000, + "subject": "feat(HAI-037): add WorktreePool for recycling idle worktrees", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ab2b66338", + "time": 1774729823000, + "subject": "feat(KB-154): persist worktree pool across engine restarts", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "483809035", + "time": 1774982701000, + "subject": "test(KB-315): enhance cron-runner and worktree-pool test coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fc0411713", + "time": 1774989224000, + "subject": "feat(KB-330): rename internal packages from @kb/* to @fusion/*", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5647e500c", + "time": 1775010587000, + "subject": "feat(KB-332): rename task prefix from KB to FN and branches from kb/ to fusion/", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/step-session-executor.test.ts", + "package": "packages/engine", + "valueScore": 45, + "positiveCount": 28, + "negativeCount": 8, + "neutralCount": 1, + "timesTouched": 37, + "testOnlyCount": 5, + "testOnlyRatio": 0.135, + "signalTally": { + "added-with-source": 1, + "fix+source": 9, + "test+source": 22, + "churn-keyword": 4, + "test-only-churn": 5 + }, + "durationMs": 100, + "testCount": 98, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 2.2, + "ageDays": 80, + "lastTouched": "2026-06-24", + "evidence": [ + { + "sha": "d8a6d1339", + "time": 1775535857000, + "subject": "feat(FN-1039): add StepSessionExecutor for parallel wave-based step execution", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "478b2eec4", + "time": 1775666846000, + "subject": "fix(FN-1249): degrade failed wave worktrees to sequential fallback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "bcbe4ad28", + "time": 1775677584000, + "subject": "fix(FN-1300): capture agent run output in heartbeat and step sessions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "551caf0e9", + "time": 1776034209000, + "subject": "feat(FN-1643): add context-limit recovery for step-session execution", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "afafd26e9", + "time": 1776039684000, + "subject": "fix(FN-1619): convert remaining engine execSync calls to async execAsync", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "322a2629e", + "time": 1776063796000, + "subject": "fix(engine): keep executor prompts scoped to worktrees", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/workflow-flow-mapping.test.ts", + "package": "packages/dashboard", + "valueScore": 45.5, + "positiveCount": 25, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 26, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 19, + "fix+source": 6, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 58, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 2.2, + "ageDays": 22, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "eb67d0821", + "time": 1780533132000, + "subject": "Address PR review feedback (#1363)", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "e5a0a199e", + "time": 1780562811000, + "subject": "feat(dashboard): node editor authors columns, traits, hold and split/join nodes with inline validation (U10)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ad5cd579b", + "time": 1780599045000, + "subject": "feat(dashboard): U8 — node editor authoring for foreach/step-review/parse-steps/code, rework edge inspector, template round-trip", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "297a00d3d", + "time": 1780626415000, + "subject": "feat(dashboard): redesign workflow nodes as card-style with config summaries", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ffc4d8a6e", + "time": 1780626934000, + "subject": "feat(dashboard): success/failure edge authoring with cycle guard and interpreter-only banner", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f67a2542b", + "time": 1780627544000, + "subject": "feat(dashboard): node/edge deletion with safe cascade semantics", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reviewer.test.ts", + "package": "packages/engine", + "valueScore": 49.5, + "positiveCount": 31, + "negativeCount": 6, + "neutralCount": 2, + "timesTouched": 39, + "testOnlyCount": 2, + "testOnlyRatio": 0.051, + "signalTally": { + "added-with-source": 1, + "test+source": 29, + "churn-keyword": 6, + "fix+source": 7, + "test-only-churn": 2, + "symptom-verification": 1 + }, + "durationMs": 100, + "testCount": 59, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 2, + "ageDays": 91, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "1a61f0937", + "time": 1774579451000, + "subject": "feat(HAI-102): thread model settings through reviewer and merger", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e1bd4be9b", + "time": 1774729823000, + "subject": "fix(KB-153): detect exhausted-retry errors from pi-coding-agent sessions", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "d7a9daf5c", + "time": 1774729823000, + "subject": "feat(KB-172): add spec review loop to triage agent", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a8063f395", + "time": 1774838175000, + "subject": "feat(KB-025): add per-task model overrides for executor and validator", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "a53e4c142", + "time": 1774839101000, + "subject": "feat(KB-048): add collapsible list sections to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-backend.test.ts", + "package": "packages/engine", + "valueScore": 51.5, + "positiveCount": 29, + "negativeCount": 4, + "neutralCount": 2, + "timesTouched": 35, + "testOnlyCount": 3, + "testOnlyRatio": 0.086, + "signalTally": { + "added-with-source": 1, + "test+source": 21, + "fix+source": 10, + "churn-keyword": 3, + "test-only-churn": 3 + }, + "durationMs": 100, + "testCount": 61, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1.9, + "ageDays": 41, + "lastTouched": "2026-06-12", + "evidence": [ + { + "sha": "c1abebc98", + "time": 1778888689000, + "subject": "feat(FN-4684): complete Step 2 — add worktree backend primitives", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "00a44e82a", + "time": 1778890065000, + "subject": "feat(FN-4685): complete Step 1 — define native backend", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "339147771", + "time": 1778892774000, + "subject": "feat(FN-4686): complete Step 2 — add worktrunk create scaffold", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c0f9ddedc", + "time": 1778892775000, + "subject": "feat(FN-4686): complete Step 7 — docs and changeset delivery", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e2d7dcbf2", + "time": 1778894630000, + "subject": "feat(FN-4687): complete Step 2 — scaffold worktrunk backend", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f3c557b21", + "time": 1778896488000, + "subject": "feat(FN-4622): complete Step 1 — native backend sync contract", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/__tests__/usage.test.ts", + "package": "packages/dashboard", + "valueScore": 67, + "positiveCount": 39, + "negativeCount": 8, + "neutralCount": 5, + "timesTouched": 52, + "testOnlyCount": 4, + "testOnlyRatio": 0.077, + "signalTally": { + "added-with-source": 2, + "test+source": 26, + "test-only-churn": 4, + "churn-keyword": 10, + "fix+source": 18, + "fix": 2 + }, + "durationMs": 100, + "testCount": 156, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1.5, + "ageDays": 88, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "e4e525085", + "time": 1774845774000, + "subject": "feat(KB-082): complete Step 4 — Display failure in TaskCard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "49f290da3", + "time": 1774846124000, + "subject": "feat(KB-088): clear failed status when moving tasks and improve error display", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2eaf776ff", + "time": 1774903552000, + "subject": "feat(KB-152): add Minimax and Zai providers with usage pace indicators", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "875c75811", + "time": 1774916298000, + "subject": "test(KB-215): add pace integration tests for usage indicators", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fc37015f7", + "time": 1775023133000, + "subject": "feat(FN-666): implement retry logic with exponential backoff for Claude usage API", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "4b39bf1f4", + "time": 1775024343000, + "subject": "feat(KB-618): add multi-project support to dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/settings-parity.test.ts", + "package": "packages/core", + "valueScore": 78.5, + "positiveCount": 51, + "negativeCount": 5, + "neutralCount": 1, + "timesTouched": 57, + "testOnlyCount": 5, + "testOnlyRatio": 0.088, + "signalTally": { + "fix+source": 4, + "added-with-source": 1, + "test+source": 47, + "test-only-churn": 5, + "fix": 1, + "churn-keyword": 1 + }, + "durationMs": 100, + "testCount": 44, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 1.3, + "ageDays": 78, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "90908794c", + "time": 1775668875000, + "subject": "fix(FN-1278): enforce settings parity for keys and defaults", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "a9e8073d2", + "time": 1775784089000, + "subject": "feat(FN-1423): add promptOverrides to project settings", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e40444443", + "time": 1775793979000, + "subject": "feat(FN-1259): add review handoff mechanism for user assignment", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "2019b71e6", + "time": 1775891902000, + "subject": "fix(FN-1488): add showQuickChatFAB setting to control Quick Chat FAB visibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "431f63d10", + "time": 1775934805000, + "subject": "feat(FN-1420): add pluggable memory backend system", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "428b8f7b1", + "time": 1776032007000, + "subject": "Harden architecture hot paths", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/self-healing.test.ts", + "package": "packages/engine", + "valueScore": 230, + "positiveCount": 134, + "negativeCount": 26, + "neutralCount": 7, + "timesTouched": 167, + "testOnlyCount": 19, + "testOnlyRatio": 0.114, + "signalTally": { + "added-with-source": 1, + "test+source": 98, + "fix+source": 47, + "churn-keyword": 15, + "test-only-churn": 19, + "fix": 2 + }, + "durationMs": 200, + "testCount": 338, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0.9, + "ageDays": 83, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "bcb991596", + "time": 1775255712000, + "subject": "feat: add SelfHealingManager for unattended multi-day operation", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7b0e2a9c4", + "time": 1775352678000, + "subject": "feat(FN-946): add orphaned branch scanning and automatic cleanup", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "eb6fbbb42", + "time": 1775427872000, + "subject": "fix: recover completed tasks stuck in progress", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "9a6592e29", + "time": 1775450178000, + "subject": "chore: update stuck task handling and dashboard tweaks", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "d1b4f5d41", + "time": 1775663829000, + "subject": "fix: recover approved triage tasks stuck specifying", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "03ac3258a", + "time": 1775671264000, + "subject": "fix(FN-1284): move terminal execution failures to in-review", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/QuickChatFAB.test.tsx", + "package": "packages/dashboard", + "valueScore": 132.5, + "positiveCount": 91, + "negativeCount": 24, + "neutralCount": 1, + "timesTouched": 116, + "testOnlyCount": 22, + "testOnlyRatio": 0.19, + "signalTally": { + "added-with-source": 1, + "fix+source": 20, + "test+source": 71, + "fix": 2, + "test-only-churn": 22, + "churn-keyword": 6 + }, + "durationMs": 100, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0.7, + "ageDays": 79, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "73bcbfd38", + "time": 1775634201000, + "subject": "feat(FN-1104): add quick chat FAB to dashboard", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "2019b71e6", + "time": 1775891902000, + "subject": "fix(FN-1488): add showQuickChatFAB setting to control Quick Chat FAB visibility", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "d2e9aafff", + "time": 1776002449000, + "subject": "feat(FN-1465): merge fusion/fn-1465", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "94996e204", + "time": 1776022385000, + "subject": "feat(FN-1594): merge fusion/fn-1594", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "70f2af665", + "time": 1776119381000, + "subject": "feat(FN-1680): merge fusion/fn-1680", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8bc5b9185", + "time": 1776343044000, + "subject": "feat(FN-1813): merge fusion/fn-1813", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-overlap-guard.slow.test.ts", + "package": "packages/engine", + "valueScore": -8.5, + "positiveCount": 4, + "negativeCount": 9, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 9, + "testOnlyRatio": 0.692, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 9, + "churn-keyword": 2, + "test+source": 3 + }, + "durationMs": null, + "testCount": 12, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 44, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "0d0796ab7", + "time": 1778602014000, + "subject": "feat(FN-4071): add overlap guard to prevent concurrent merge conflicts", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6c1cb40c3", + "time": 1778606856000, + "subject": "feat(FN-4132): sync task ownership on agent reassignment", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "046c534dc", + "time": 1778606856000, + "subject": "feat(FN-4146): append verification subtask to planning flow", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "2169c74d6", + "time": 1778630590000, + "subject": "feat(FN-4157): remove composite checkout, add workflow-level checkout steps", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "f27ac8bf5", + "time": 1778630673000, + "subject": "feat(FN-4180): compact room transcript context to reduce token usage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1a1136983", + "time": 1778630673000, + "subject": "feat(FN-4179): optimistically clear room composer on send", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/commands/__tests__/agent-export.test.ts", + "package": "packages/cli", + "valueScore": -5, + "positiveCount": 1, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 4, + "testOnlyRatio": 0.8, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 4, + "churn-keyword": 1 + }, + "durationMs": null, + "testCount": 3, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 78, + "lastTouched": "2026-05-02", + "evidence": [ + { + "sha": "15f3dca93", + "time": 1775680267000, + "subject": "feat(FN-1190): add agent export for Agent Companies packages", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "19d62b41f", + "time": 1776656894000, + "subject": "refactor(FN-2162): rename kb-agent identifiers to fn-agent", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bdcb048e2", + "time": 1777084760000, + "subject": "chore: consolidate test files into __tests__/ dirs and clean stray engine artifacts", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "00b96f4fe", + "time": 1777249440000, + "subject": "test(cli): bump timeouts and skip slow FS-heavy suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "e3f2cab79", + "time": 1777718884000, + "subject": "feat(FN-3189): add explicit slow-lane CI gating and inline priority picker", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/electron-builder-config.test.ts", + "package": "packages/desktop", + "valueScore": -3, + "positiveCount": 2, + "negativeCount": 6, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 6, + "testOnlyRatio": 0.75, + "signalTally": { + "added": 1, + "test-only-churn": 6, + "fix": 1 + }, + "durationMs": null, + "testCount": 8, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 30, + "lastTouched": "2026-06-08", + "evidence": [ + { + "sha": "40f7cad3e", + "time": 1779841174000, + "subject": "feat(FN-5587): add windows desktop packaging workflow, scripts, and tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "a4628c864", + "time": 1779841175000, + "subject": "feat(FN-5592): merge fusion/fn-5592", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "d99cfaf51", + "time": 1779841175000, + "subject": "feat(FN-5594): add Windows ARM64 build support and test assertions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "0d0d07ded", + "time": 1779942672000, + "subject": "feat(FN-5603): add desktop release jobs for macOS and Linux with artifact a", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "9504c31a8", + "time": 1779942672000, + "subject": "feat(FN-5607): add cross-platform updater feeds for desktop releases", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "925a46604", + "time": 1779942672000, + "subject": "feat(FN-5608): add linux arm64 dual-arch support to desktop release workflo", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/branch-group-automerge-precedence.slow.test.ts", + "package": "packages/engine", + "valueScore": -3, + "positiveCount": 1, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 2, + "testOnlyRatio": 0.667, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": null, + "testCount": 2, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 25, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "06d84905b", + "time": 1780265831000, + "subject": "FN-5783: enforce branch-group autoMerge precedence for shared promotions", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "0d7510141", + "time": 1780542587000, + "subject": "test(engine): consolidate redundant branch-group integration permutations (~34s)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4cdf19806", + "time": 1780542747000, + "subject": "test(engine): quarantine remaining branch-group real-git suites to engine-slow", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/process-manager.test.ts", + "package": "packages/droid-cli", + "valueScore": -1.5, + "positiveCount": 1, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 2, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 2, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": null, + "testCount": 51, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 56, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "0ec5dfa3b", + "time": 1777632430000, + "subject": "feat(FN-2978): add droid-cli package with provider registration and model d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "84830595f", + "time": 1781647704000, + "subject": "FN-6485: remove synchronous CLI probes", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "37c4cfa56", + "time": 1782016363000, + "subject": "FN-6808: handle AI CLI probe spawn failures", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1f23a2e62", + "time": 1782085232000, + "subject": "FN-6878: register Droid provider before probes", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModal.general.test.tsx", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 50, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "003740d01", + "time": 1782409850000, + "subject": "test: speed up slow dashboard test suites", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModal.models-auth.test.tsx", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 52, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "003740d01", + "time": 1782409850000, + "subject": "test: speed up slow dashboard test suites", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModal.remote-notifications.test.tsx", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 57, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "003740d01", + "time": 1782409850000, + "subject": "test: speed up slow dashboard test suites", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/SettingsModal.scheduling-merge.test.tsx", + "package": "packages/dashboard", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 80, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "003740d01", + "time": 1782409850000, + "subject": "test: speed up slow dashboard test suites", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/provider.test.ts", + "package": "packages/droid-cli", + "valueScore": -1, + "positiveCount": 3, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 3, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 3, + "test+source": 2, + "churn-keyword": 1 + }, + "durationMs": null, + "testCount": 1, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 56, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "0ec5dfa3b", + "time": 1777632430000, + "subject": "feat(FN-2978): add droid-cli package with provider registration and model d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ada8b2db5", + "time": 1777666313000, + "subject": "test(FN-2986): expand droid provider unit coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "5be5da193", + "time": 1777889073000, + "subject": "feat(FN-3332): add droid runtime plugin with event bridge and process manag", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3f5893bdc", + "time": 1777904714000, + "subject": "feat(FN-3074): sort done column by recency, preserve merge-active state, ad", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4b6c11ff0", + "time": 1777925877000, + "subject": "docs(FN-3293): finalize stabilization audit documentation", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "7e1768b1b", + "time": 1777940541000, + "subject": "feat(FN-3328): refactor droid-cli into compatibility shim backed by fusion-", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/file-scoped-verification.test.ts", + "package": "packages/engine", + "valueScore": -1, + "positiveCount": 0, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 1, + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 13, + "quarantined": false, + "recommendation": "delete", + "safeDelete": true, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "744aa2cc0", + "time": 1782429105000, + "subject": "feat(engine): scope verification to changed files + scope-aware timeout", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/extension-integration.test.ts", + "package": "packages/cli", + "valueScore": -0.5, + "positiveCount": 4, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 3, + "testOnlyRatio": 0.429, + "signalTally": { + "added": 1, + "test+source": 3, + "test-only-churn": 3, + "churn-keyword": 1 + }, + "durationMs": null, + "testCount": 6, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 49, + "lastTouched": "2026-06-14", + "evidence": [ + { + "sha": "55d8e87cc", + "time": 1778167611000, + "subject": "test(FN-000): harden local test suite", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "840653e52", + "time": 1778292910000, + "subject": "feat(FN-3777): add create_agent and delete_agent tools", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f934cd6c3", + "time": 1778360105000, + "subject": "feat(FN-3889): emit shutdown event when Fusion session is disposed", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "fe50c3a3a", + "time": 1778465585000, + "subject": "feat(FN-3956): execute provisioning on approval decisions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1b7643b38", + "time": 1778597230000, + "subject": "feat(FN-4045): surface and handle delegate task collision errors", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "e9b8ba5c5", + "time": 1778597230000, + "subject": "feat(FN-4074): add priority option to task creation in engine and extension", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/native.test.ts", + "package": "packages/desktop", + "valueScore": 0, + "positiveCount": 5, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 8, + "testOnlyCount": 2, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 4, + "fix+source": 1, + "churn-keyword": 3, + "test-only-churn": 2 + }, + "durationMs": null, + "testCount": 46, + "quarantined": false, + "recommendation": "delete", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "ce017cca9", + "time": 1775630189000, + "subject": "feat(FN-1075): add desktop native and deep-link APIs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f5e78d77d", + "time": 1778221265000, + "subject": "feat(FN-3405): persist and restore desktop launch mode via IPC bridge", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "6dde53ff0", + "time": 1778961072000, + "subject": "fix(desktop): app icon + harden auto-updater loading", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "a2710fb70", + "time": 1778962500000, + "subject": "test(FN-4802): stabilize desktop auto-updater setup assertions", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "415cd6a11", + "time": 1778964403000, + "subject": "test(FN-4783): stabilize workspace test lanes for verification", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "e257ca660", + "time": 1779043748000, + "subject": "feat(FN-4939): complete Step 1 — add window-state display clamp helper", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/__tests__/build-output.test.ts", + "package": "packages/dashboard", + "valueScore": 0.5, + "positiveCount": 2, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 3, + "testOnlyRatio": 0.6, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 3, + "test+source": 1 + }, + "durationMs": null, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-05-17", + "evidence": [ + { + "sha": "ed84a728c", + "time": 1775629534000, + "subject": "feat(FN-1093): add mobile build, PWA, and live reload workflow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "abe35bea8", + "time": 1776976163000, + "subject": "test(FN-2343): harden build-output contract coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "79d00604a", + "time": 1776977759000, + "subject": "feat(FN-2345): merge fusion/fn-2345", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6c8373172", + "time": 1777604803000, + "subject": "feat(FN-3039): bundle nerd font glyph asset and prioritize it in terminal f", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "007fb43da", + "time": 1779039474000, + "subject": "test(FN-4916): complete Step 3 — add theme link regression coverage", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/deep-link.test.ts", + "package": "packages/desktop", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": null, + "testCount": 22, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "ce017cca9", + "time": 1775630189000, + "subject": "feat(FN-1075): add desktop native and deep-link APIs", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "63f1e097a", + "time": 1781366499000, + "subject": "FN-6366: fix desktop Vitest constructor mocks", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/shared-branch-group-working-branch.slow.test.ts", + "package": "packages/engine", + "valueScore": 0.5, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test+source": 1 + }, + "durationMs": null, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 25, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "327f0a9a4", + "time": 1780303045000, + "subject": "FN-5818: fix shared-branch-group execution to use per-task working branches", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "9e959566c", + "time": 1780540703000, + "subject": "test(engine): quarantine worktree-heavy reliability tests + fail-fast on wedge", + "status": "R", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/node-pty-types.test.ts", + "package": "packages/desktop", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": null, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 42, + "lastTouched": "2026-05-15", + "evidence": [ + { + "sha": "994a51643", + "time": 1778822204000, + "subject": "test(FN-4557): add type regression test for desktop node-pty shim", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/execsync-guard.test.ts", + "package": "packages/droid-cli", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": null, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 9, + "lastTouched": "2026-06-16", + "evidence": [ + { + "sha": "84830595f", + "time": 1781647704000, + "subject": "FN-6485: remove synchronous CLI probes", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/index.test.ts", + "package": "packages/droid-cli", + "valueScore": 1, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "churn-keyword": 1, + "test+source": 2 + }, + "durationMs": null, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 46, + "lastTouched": "2026-06-22", + "evidence": [ + { + "sha": "85b96a754", + "time": 1778452404000, + "subject": "feat(FN-3938): add integration tests for droid-cli extension entrypoint", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "1f23a2e62", + "time": 1782085232000, + "subject": "FN-6878: register Droid provider before probes", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "5191e1f22", + "time": 1782110666000, + "subject": "FN-6911: defer Droid CLI startup probes", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-ai-dependency-install.slow.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 1, + "testOnlyRatio": 0.5, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1 + }, + "durationMs": null, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 12, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "7b839069b", + "time": 1781410152000, + "subject": "FN-6420: run dependency sync in AI merge worktrees", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "93fdc073e", + "time": 1782401744000, + "subject": "FN-7004: expect merge abort errors in dependency install test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/shared-branch-group-lifecycle.slow.test.ts", + "package": "packages/engine", + "valueScore": 1, + "positiveCount": 3, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 3, + "testOnlyRatio": 0.429, + "signalTally": { + "added": 1, + "test+source": 2, + "fix+source": 1, + "churn-keyword": 1, + "test-only-churn": 3 + }, + "durationMs": null, + "testCount": 6, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 24, + "lastTouched": "2026-06-19", + "evidence": [ + { + "sha": "1d3978e20", + "time": 1780325005000, + "subject": "FN-5820: add shared-branch-group lifecycle regression coverage", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "e56129017", + "time": 1780370377000, + "subject": "FN-5846: route shared-group member finalization to shared branch", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "88b4b0d5b", + "time": 1780503824000, + "subject": "fix(FN-branch-group): unify landed/completion predicate in core (U2)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "9e959566c", + "time": 1780540703000, + "subject": "test(engine): quarantine worktree-heavy reliability tests + fail-fast on wedge", + "status": "R", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "0d7510141", + "time": 1780542587000, + "subject": "test(engine): consolidate redundant branch-group integration permutations (~34s)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "09c54c5d6", + "time": 1781809064000, + "subject": "FN-6646: speed up shared branch lifecycle tests", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/plugin-sdk/src/__tests__/re-export-contract.test.ts", + "package": "packages/plugin-sdk", + "valueScore": 1, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1 + }, + "durationMs": null, + "testCount": 1, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 42, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "2f393d4d7", + "time": 1778779382000, + "subject": "test(FN-4486): complete Step 4 — add plugin-sdk re-export contract test", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/branch-group-merge-routing.slow.test.ts", + "package": "packages/engine", + "valueScore": 1.5, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 2, + "testOnlyRatio": 0.4, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1, + "test-only-churn": 2, + "churn-keyword": 1 + }, + "durationMs": null, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 25, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "0c425788c", + "time": 1780260623000, + "subject": "FN-5782: wire branch groups into merge routing", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "35ce9bd24", + "time": 1780306956000, + "subject": "FN-5819: allow shared-group members to merge into group branch with auto-merge off", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "cad44b1f5", + "time": 1780504830000, + "subject": "fix(FN-5846): commit-ownership-anchor already-merged attribution (U3)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "0d7510141", + "time": 1780542587000, + "subject": "test(engine): consolidate redundant branch-group integration permutations (~34s)", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "4cdf19806", + "time": 1780542747000, + "subject": "test(engine): quarantine remaining branch-group real-git suites to engine-slow", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/core/src/__tests__/store-plugin-store-close.test.ts", + "package": "packages/core", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "ae98ec37a", + "time": 1782401744000, + "subject": "FN-7005: close cached plugin store with TaskStore", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/EngineStatusBanner.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 8, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "e46ea00ff", + "time": 1782401744000, + "subject": "FN-6827: add engine status banner", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MissionManager.workflow-triage.test.tsx", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "6df404305", + "time": 1782401744000, + "subject": "FN-6942: preserve mission workflow selection", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/hooks/__tests__/useEngineStatus.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "e46ea00ff", + "time": 1782401744000, + "subject": "FN-6827: add engine status banner", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/utils/__tests__/file-preview-kind.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "4cc9c2f3f", + "time": 1782415513000, + "subject": "FN-6972: add browser-native file previews", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/dashboard/src/routes/__tests__/mission-workflow-triage-route.test.ts", + "package": "packages/dashboard", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "6df404305", + "time": 1782401744000, + "subject": "FN-6942: preserve mission workflow selection", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/release-workflow.test.ts", + "package": "packages/desktop", + "valueScore": 2, + "positiveCount": 4, + "negativeCount": 5, + "neutralCount": 0, + "timesTouched": 9, + "testOnlyCount": 5, + "testOnlyRatio": 0.556, + "signalTally": { + "added": 1, + "test-only-churn": 5, + "fix": 3 + }, + "durationMs": null, + "testCount": 7, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 30, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "202895c31", + "time": 1779841175000, + "subject": "feat(FN-5593): add windows desktop build jobs to release workflows", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "0d0d07ded", + "time": 1779942672000, + "subject": "feat(FN-5603): add desktop release jobs for macOS and Linux with artifact a", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "294efb02f", + "time": 1779942672000, + "subject": "feat(FN-5605): add linux gpg signing for release artifacts", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "9504c31a8", + "time": 1779942672000, + "subject": "feat(FN-5607): add cross-platform updater feeds for desktop releases", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "925a46604", + "time": 1779942672000, + "subject": "feat(FN-5608): add linux arm64 dual-arch support to desktop release workflo", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "7d2cf330d", + "time": 1779942672000, + "subject": "feat(FN-5609): add macOS desktop signing configuration and entitlements", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/tray.test.ts", + "package": "packages/desktop", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 9, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "c1fa49c71", + "time": 1775628688000, + "subject": "feat(FN-1074): add desktop tray and application menu", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/desktop/src/renderer/__tests__/DesktopModeChooser.test.tsx", + "package": "packages/desktop", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 52, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "f7995bd4e", + "time": 1777963645000, + "subject": "feat(FN-3399): route desktop remote mode into shell onboarding flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/desktop/src/renderer/__tests__/DesktopShellBootstrap.test.tsx", + "package": "packages/desktop", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 52, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "f7995bd4e", + "time": 1777963645000, + "subject": "feat(FN-3399): route desktop remote mode into shell onboarding flow", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/desktop/src/renderer/__tests__/TitleBar.test.tsx", + "package": "packages/desktop", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "f3c463cb5", + "time": 1775632585000, + "subject": "feat(FN-1072): add Electron desktop renderer integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/desktop/src/renderer/__tests__/api-electron.test.ts", + "package": "packages/desktop", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "f3c463cb5", + "time": 1775632585000, + "subject": "feat(FN-1072): add Electron desktop renderer integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/desktop/src/renderer/__tests__/useAutoUpdate.test.ts", + "package": "packages/desktop", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "f3c463cb5", + "time": 1775632585000, + "subject": "feat(FN-1072): add Electron desktop renderer integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/desktop/src/renderer/__tests__/useDeepLink.test.ts", + "package": "packages/desktop", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 4, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "f3c463cb5", + "time": 1775632585000, + "subject": "feat(FN-1072): add Electron desktop renderer integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/desktop/src/renderer/__tests__/useElectron.test.ts", + "package": "packages/desktop", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-04-08", + "evidence": [ + { + "sha": "f3c463cb5", + "time": 1775632585000, + "subject": "feat(FN-1072): add Electron desktop renderer integration", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/control-handler.test.ts", + "package": "packages/droid-cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 14, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 56, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "0ec5dfa3b", + "time": 1777632430000, + "subject": "feat(FN-2978): add droid-cli package with provider registration and model d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/mcp-config.test.ts", + "package": "packages/droid-cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 13, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 56, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "0ec5dfa3b", + "time": 1777632430000, + "subject": "feat(FN-2978): add droid-cli package with provider registration and model d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/setup-test-isolation.test.ts", + "package": "packages/droid-cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 56, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "0ec5dfa3b", + "time": 1777632430000, + "subject": "feat(FN-2978): add droid-cli package with provider registration and model d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/stream-parser.test.ts", + "package": "packages/droid-cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 24, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 56, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "0ec5dfa3b", + "time": 1777632430000, + "subject": "feat(FN-2978): add droid-cli package with provider registration and model d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/tool-mapping.test.ts", + "package": "packages/droid-cli", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 39, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 56, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "0ec5dfa3b", + "time": 1777632430000, + "subject": "feat(FN-2978): add droid-cli package with provider registration and model d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/smart-pull.slow.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "db9928a4b", + "time": 1779571617000, + "subject": "feat(engine): export smartPull() library for stash-aware fast-forward", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/worktree-copy-files.test.ts", + "package": "packages/engine", + "valueScore": 2, + "positiveCount": 1, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 1, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1 + }, + "durationMs": null, + "testCount": 5, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "f5e1b966a", + "time": 1782401684000, + "subject": "FN-6943: add worktree file copy settings", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/local-runtime.resolution.test.ts", + "package": "packages/desktop", + "valueScore": 2.5, + "positiveCount": 2, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 1, + "testOnlyRatio": 0.333, + "signalTally": { + "added-with-source": 1, + "test-only-churn": 1, + "test+source": 1 + }, + "durationMs": null, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 45, + "lastTouched": "2026-05-14", + "evidence": [ + { + "sha": "bf4786e55", + "time": 1778515879000, + "subject": "feat(FN-4011): align room input keyboard handlers", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "07ac77630", + "time": 1778545598000, + "subject": "feat(FN-4045): keep inline metadata controls visible on mobile row", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "bba4a1668", + "time": 1778779381000, + "subject": "test(FN-4486): complete Step 3 — lock desktop core/dashboard typing contract", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/pr-mode-worktree-invariants.slow.test.ts", + "package": "packages/engine", + "valueScore": 2.5, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 3, + "churn-keyword": 1 + }, + "durationMs": null, + "testCount": 11, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 35, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "41c94a326", + "time": 1779409919000, + "subject": "feat(FN-5420): add PR-mode worktree invariant backstop tests", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "4a99e3fba", + "time": 1779509280000, + "subject": "feat(FN-5455): merge fusion/fn-5455", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7d20a997b", + "time": 1780411598000, + "subject": "FN-5872: clear active-session registry on PR cleanup", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9e959566c", + "time": 1780540703000, + "subject": "test(engine): quarantine worktree-heavy reliability tests + fail-fast on wedge", + "status": "R", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/PlanningModeModal.css.test.ts", + "package": "packages/dashboard", + "valueScore": 3, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "fix": 1 + }, + "durationMs": null, + "testCount": 2, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "419d58f65", + "time": 1782415514000, + "subject": "FN-6974: fix tablet planning summary action wrapping", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "c20205372", + "time": 1782419257000, + "subject": "fix(dashboard): make embedded Planning view scroll on mobile", + "status": "M", + "touchedSource": false, + "category": "positive", + "weight": 2, + "signals": [ + "fix" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/branch-group-single-pr-e2e.slow.test.ts", + "package": "packages/engine", + "valueScore": 3, + "positiveCount": 3, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 1, + "testOnlyRatio": 0.25, + "signalTally": { + "added": 1, + "fix+source": 2, + "churn-keyword": 1, + "test-only-churn": 1 + }, + "durationMs": null, + "testCount": 3, + "quarantined": false, + "recommendation": "review", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "3bea12f5d", + "time": 1780508903000, + "subject": "test(FN-branch-group): end-to-end planning + mission single-PR flows (U8)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1557fc5a4", + "time": 1780534620000, + "subject": "fix(FN-branch-group): repair CI failures — execFile mock compatibility, TaskCard narrowing, e2e memo race", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "4cdf19806", + "time": 1780542747000, + "subject": "test(engine): quarantine remaining branch-group real-git suites to engine-slow", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/HeaderWorkflowSwitcherSlot.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": null, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 0, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "6df404305", + "time": 1782401744000, + "subject": "FN-6942: preserve mission workflow selection", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "6c51bd1d4", + "time": 1782419248000, + "subject": "FN-6989: make workflow editor float", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/dashboard/app/components/__tests__/MissionManager.delete-confirm.test.tsx", + "package": "packages/dashboard", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": null, + "testCount": 8, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 1, + "lastTouched": "2026-06-25", + "evidence": [ + { + "sha": "7a00811b4", + "time": 1782370350000, + "subject": "FN-6987: load mission delete confirmation in modal", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "d984fce0a", + "time": 1782401684000, + "subject": "FN-6984: fix mission draft discard scoping", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/local-runtime.test.ts", + "package": "packages/desktop", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": null, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 49, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "22834e5c4", + "time": 1778221264000, + "subject": "feat(FN-3404): add local embedded runtime manager to desktop app", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7ef381762", + "time": 1782025057000, + "subject": "feat: start engines by default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/event-bridge.test.ts", + "package": "packages/droid-cli", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": null, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 56, + "lastTouched": "2026-05-05", + "evidence": [ + { + "sha": "0ec5dfa3b", + "time": 1777632430000, + "subject": "feat(FN-2978): add droid-cli package with provider registration and model d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7e1768b1b", + "time": 1777940541000, + "subject": "feat(FN-3328): refactor droid-cli into compatibility shim backed by fusion-", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/thinking-config.test.ts", + "package": "packages/droid-cli", + "valueScore": 3.5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1 + }, + "durationMs": null, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 56, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "0ec5dfa3b", + "time": 1777632430000, + "subject": "feat(FN-2978): add droid-cli package with provider registration and model d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "cec191eac", + "time": 1780028628000, + "subject": "FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-staging-allowlist.slow.test.ts", + "package": "packages/engine", + "valueScore": 3.5, + "positiveCount": 4, + "negativeCount": 6, + "neutralCount": 1, + "timesTouched": 11, + "testOnlyCount": 5, + "testOnlyRatio": 0.455, + "signalTally": { + "fix+source": 2, + "added-with-source": 1, + "churn-keyword": 2, + "fix": 1, + "test-only-churn": 5, + "test+source": 3 + }, + "durationMs": null, + "testCount": 18, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 52, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "89da1de31", + "time": 1777925877000, + "subject": "fix(merger): restrict staging to allowlist and harden git invocations", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 5, + "signals": [ + "fix+source", + "added-with-source" + ] + }, + { + "sha": "8bbcb3e88", + "time": 1777954362000, + "subject": "fix: resolve Greptile P1 close() timer leak, engine git init, dashboard test", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "de78113bf", + "time": 1778247972000, + "subject": "fix(merger): stop phantom-merge guard stranding tasks whose commit already landed", + "status": "M", + "touchedSource": true, + "category": "neutral", + "weight": 0, + "signals": [ + "churn-keyword", + "fix+source" + ] + }, + { + "sha": "9d7c02a98", + "time": 1778347865000, + "subject": "test(FN-3842): update staging-allowlist tests for MergeFinalizeResult return shape", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "1cf987208", + "time": 1778524879000, + "subject": "feat(FN-4018): isolate split merger temp workspaces with settings persisten", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + }, + { + "sha": "6c1cb40c3", + "time": 1778606856000, + "subject": "feat(FN-4132): sync task ownership on agent reassignment", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-diff-volume-gate.slow.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 5, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 6, + "testOnlyCount": 1, + "testOnlyRatio": 0.167, + "signalTally": { + "added-with-source": 1, + "churn-keyword": 1, + "test-only-churn": 1, + "test+source": 4 + }, + "durationMs": null, + "testCount": 11, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 44, + "lastTouched": "2026-05-29", + "evidence": [ + { + "sha": "8fa3e8bfd", + "time": 1778635618000, + "subject": "feat(FN-4072): add diff volume gate to merger", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "5cd0e6665", + "time": 1778996217000, + "subject": "feat(FN-4839): harden real-git test timeouts across engine suites", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + }, + { + "sha": "76790c424", + "time": 1779171267000, + "subject": "feat(FN-5053): fix verification gate registration for workspace test stabil", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b1d185b93", + "time": 1779547637000, + "subject": "perf(engine): tier 4 slow real-git test files into engine-slow project", + "status": "R", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c89ad28e7", + "time": 1780041317000, + "subject": "FN-5646: preserve AI body when canonicalizing merge commits", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/branch-group-pr-sync.slow.test.ts", + "package": "packages/engine", + "valueScore": 4, + "positiveCount": 3, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 5, + "testOnlyCount": 1, + "testOnlyRatio": 0.2, + "signalTally": { + "churn-keyword": 2, + "added-with-source": 1, + "fix+source": 3, + "test-only-churn": 1 + }, + "durationMs": null, + "testCount": 4, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 22, + "lastTouched": "2026-06-04", + "evidence": [ + { + "sha": "415470c7b", + "time": 1780507230000, + "subject": "feat(FN-branch-group): sync group PR as members land + terminal lifecycle (U6)", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "f3bc757d2", + "time": 1780519873000, + "subject": "fix(FN-branch-group): address PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3e927bc5f", + "time": 1780526783000, + "subject": "fix(FN-branch-group): address second-round PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "64d02b510", + "time": 1780532531000, + "subject": "fix(FN-branch-group): address third-round PR review feedback (#1357)", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "4cdf19806", + "time": 1780542747000, + "subject": "test(engine): quarantine remaining branch-group real-git suites to engine-slow", + "status": "R", + "touchedSource": false, + "category": "negative", + "weight": -4, + "signals": [ + "churn-keyword", + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/shell-settings.test.ts", + "package": "packages/desktop", + "valueScore": 5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 2 + }, + "durationMs": null, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 52, + "lastTouched": "2026-05-08", + "evidence": [ + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f7995bd4e", + "time": 1777963645000, + "subject": "feat(FN-3399): route desktop remote mode into shell onboarding flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7b9e5259d", + "time": 1778204145000, + "subject": "feat(FN-3403): add shell multi-profile support with connection manager onbo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/droid-cli/src/__tests__/prompt-builder.test.ts", + "package": "packages/droid-cli", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": null, + "testCount": 55, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 56, + "lastTouched": "2026-05-01", + "evidence": [ + { + "sha": "0ec5dfa3b", + "time": 1777632430000, + "subject": "feat(FN-2978): add droid-cli package with provider registration and model d", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f5267ce23", + "time": 1777652475000, + "subject": "fix(pi-claude-cli,droid-cli,dashboard): stop ballooning resumed CLI sessions and thread per-chat session", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/merger-auto-sync.slow.test.ts", + "package": "packages/engine", + "valueScore": 5, + "positiveCount": 2, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 2, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1 + }, + "durationMs": null, + "testCount": 7, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 33, + "lastTouched": "2026-05-23", + "evidence": [ + { + "sha": "4c31e885b", + "time": 1779572471000, + "subject": "feat(engine): merger auto-syncs project-root checkout after ref advance", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "dc944949b", + "time": 1779574397000, + "subject": "fix(engine,dashboard): close 7 review findings on merger auto-sync", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/main-local-mode.test.ts", + "package": "packages/desktop", + "valueScore": 5.5, + "positiveCount": 5, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 5, + "churn-keyword": 2, + "fix": 1 + }, + "durationMs": null, + "testCount": 1, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 52, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f7995bd4e", + "time": 1777963645000, + "subject": "feat(FN-3399): route desktop remote mode into shell onboarding flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "22834e5c4", + "time": 1778221264000, + "subject": "feat(FN-3404): add local embedded runtime manager to desktop app", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f5e78d77d", + "time": 1778221265000, + "subject": "feat(FN-3405): persist and restore desktop launch mode via IPC bridge", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "329b102eb", + "time": 1779043749000, + "subject": "fix(FN-4939): stabilize desktop test mocks and restore lint/type safety", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "dd0d4b74b", + "time": 1779108397000, + "subject": "feat(FN-5022): merge fusion/fn-5022", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/main.integration.test.ts", + "package": "packages/desktop", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 7, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "churn-keyword": 3, + "added-with-source": 1, + "fix+source": 2, + "test+source": 3, + "fix": 1 + }, + "durationMs": null, + "testCount": 2, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "ecf0eb6d8", + "time": 1775637605000, + "subject": "feat(FN-1073): add desktop CLI workflow and packaging support", + "status": "A", + "touchedSource": true, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "added-with-source" + ] + }, + { + "sha": "ef9b4edd1", + "time": 1775774982000, + "subject": "fix(FN-1339): move executor status bar above mobile nav bar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "f5e78d77d", + "time": 1778221265000, + "subject": "feat(FN-3405): persist and restore desktop launch mode via IPC bridge", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "329b102eb", + "time": 1779043749000, + "subject": "fix(FN-4939): stabilize desktop test mocks and restore lint/type safety", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "churn-keyword", + "fix" + ] + }, + { + "sha": "dd0d4b74b", + "time": 1779108397000, + "subject": "feat(FN-5022): merge fusion/fn-5022", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/plugin-sdk/src/__tests__/index.test.ts", + "package": "packages/plugin-sdk", + "valueScore": 5.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added": 1, + "test+source": 3 + }, + "durationMs": null, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 62, + "lastTouched": "2026-05-07", + "evidence": [ + { + "sha": "74ebd238e", + "time": 1777084760000, + "subject": "chore: add pi-claude-cli + plugin-sdk __tests__/ dirs (test consolidation)", + "status": "A", + "touchedSource": false, + "category": "positive", + "weight": 1, + "signals": [ + "added" + ] + }, + { + "sha": "0597b34ee", + "time": 1777703555000, + "subject": "feat(FN-3079): add plugin dashboard views and dependency graph plugin", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c630a94ef", + "time": 1778058845000, + "subject": "feat(FN-3564): isolate plugin loader test state to prevent cross-test conta", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "3735e0565", + "time": 1778152672000, + "subject": "feat(FN-3396): bundle Cursor CLI as a plugin provider with dashboard auth w", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/local-server.test.ts", + "package": "packages/desktop", + "valueScore": 6.5, + "positiveCount": 3, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 3, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 1, + "fix+source": 1 + }, + "durationMs": null, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 52, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "7ef381762", + "time": 1782025057000, + "subject": "feat: start engines by default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "42a1346d6", + "time": 1782033324000, + "subject": "fix: address engine startup review feedback", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/menu.test.ts", + "package": "packages/desktop", + "valueScore": 6.5, + "positiveCount": 4, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 4, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "test+source": 3 + }, + "durationMs": null, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "c1fa49c71", + "time": 1775628688000, + "subject": "feat(FN-1074): add desktop tray and application menu", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "4e85969d5", + "time": 1776827520000, + "subject": "perf(executor): recover approved steps on engine restart", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "dd0d4b74b", + "time": 1779108397000, + "subject": "feat(FN-5022): merge fusion/fn-5022", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7ef381762", + "time": 1782025057000, + "subject": "feat: start engines by default", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/build-exe-cross.test.ts", + "package": "packages/cli", + "valueScore": 8.5, + "positiveCount": 9, + "negativeCount": 4, + "neutralCount": 0, + "timesTouched": 13, + "testOnlyCount": 3, + "testOnlyRatio": 0.231, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "fix+source": 1, + "test-only-churn": 3, + "churn-keyword": 2, + "fix": 1 + }, + "durationMs": null, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 92, + "lastTouched": "2026-05-30", + "evidence": [ + { + "sha": "6643f1f5e", + "time": 1774499877000, + "subject": "feat(HAI-076): add cross-compilation support for CLI executable builds", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "af1347861", + "time": 1774938750000, + "subject": "fix(KB-140): fix standalone CLI native asset packaging for terminal support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "b94c7428d", + "time": 1775684850000, + "subject": "feat(FN-1318): rename CLI binary artifacts from kb to fn", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "5f89c6419", + "time": 1776618813000, + "subject": "feat(FN-2102): merge fusion/fn-2102", + "status": "M", + "touchedSource": false, + "category": "negative", + "weight": -1, + "signals": [ + "test-only-churn" + ] + } + ] + }, + { + "file": "packages/cli/src/__tests__/build-exe.test.ts", + "package": "packages/cli", + "valueScore": 10.5, + "positiveCount": 13, + "negativeCount": 7, + "neutralCount": 0, + "timesTouched": 20, + "testOnlyCount": 5, + "testOnlyRatio": 0.25, + "signalTally": { + "added-with-source": 1, + "test+source": 9, + "fix+source": 2, + "fix": 3, + "churn-keyword": 4, + "test-only-churn": 5 + }, + "durationMs": null, + "testCount": 6, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 92, + "lastTouched": "2026-05-28", + "evidence": [ + { + "sha": "fbecff725", + "time": 1774499577000, + "subject": "feat(HAI-071): add Bun single-binary compile support for CLI", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "eac1eda49", + "time": 1774502298000, + "subject": "feat(HAI-090): remove package.json dependency from compiled binary", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "c802108a0", + "time": 1774579451000, + "subject": "refactor(HAI-116): rename kb to hai across all packages, CLI, and docs", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "580b997d4", + "time": 1774881250000, + "subject": "feat(KB-107): merge kb/kb-107", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "af1347861", + "time": 1774938750000, + "subject": "fix(KB-140): fix standalone CLI native asset packaging for terminal support", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "2c48ce085", + "time": 1775146242000, + "subject": "feat: rename data directory, add global project settings, multi-project CLI commands, and provider badge in model selector", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/main-integration.test.ts", + "package": "packages/desktop", + "valueScore": 13.5, + "positiveCount": 8, + "negativeCount": 2, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 2, + "test+source": 5, + "churn-keyword": 2, + "fix": 2 + }, + "durationMs": null, + "testCount": 15, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-06-13", + "evidence": [ + { + "sha": "8904fbf95", + "time": 1775634323000, + "subject": "feat(FN-1076): integrate desktop IPC bridge and lifecycle modules", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ef9b4edd1", + "time": 1775774982000, + "subject": "fix(FN-1339): move executor status bar above mobile nav bar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f5e78d77d", + "time": 1778221265000, + "subject": "feat(FN-3405): persist and restore desktop launch mode via IPC bridge", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "9e04467b5", + "time": 1778221265000, + "subject": "feat(FN-3406): add shell context hook plumbing for dashboard", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/preload.test.ts", + "package": "packages/desktop", + "valueScore": 14.5, + "positiveCount": 9, + "negativeCount": 1, + "neutralCount": 0, + "timesTouched": 10, + "testOnlyCount": 1, + "testOnlyRatio": 0.1, + "signalTally": { + "added-with-source": 1, + "test+source": 7, + "fix+source": 1, + "test-only-churn": 1 + }, + "durationMs": null, + "testCount": 5, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "f128b059d", + "time": 1775626385000, + "subject": "feat(FN-1070): restore desktop Electron scaffolding", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "f3c463cb5", + "time": 1775632585000, + "subject": "feat(FN-1072): add Electron desktop renderer integration", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8904fbf95", + "time": 1775634323000, + "subject": "feat(FN-1076): integrate desktop IPC bridge and lifecycle modules", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ef9b4edd1", + "time": 1775774982000, + "subject": "fix(FN-1339): move executor status bar above mobile nav bar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f5e78d77d", + "time": 1778221265000, + "subject": "feat(FN-3405): persist and restore desktop launch mode via IPC bridge", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/ipc.test.ts", + "package": "packages/desktop", + "valueScore": 18.5, + "positiveCount": 11, + "negativeCount": 0, + "neutralCount": 0, + "timesTouched": 11, + "testOnlyCount": 0, + "testOnlyRatio": 0, + "signalTally": { + "added-with-source": 1, + "fix+source": 1, + "test+source": 9 + }, + "durationMs": null, + "testCount": 9, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-05-18", + "evidence": [ + { + "sha": "8904fbf95", + "time": 1775634323000, + "subject": "feat(FN-1076): integrate desktop IPC bridge and lifecycle modules", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "ef9b4edd1", + "time": 1775774982000, + "subject": "fix(FN-1339): move executor status bar above mobile nav bar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "3feeb9026", + "time": 1777958230000, + "subject": "feat(FN-3398): update desktop README with multi-project setup and troublesh", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "f7995bd4e", + "time": 1777963645000, + "subject": "feat(FN-3399): route desktop remote mode into shell onboarding flow", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "419c6f3b3", + "time": 1778070596000, + "subject": "feat(FN-3400): add native shell connection handoff, plugin management CLI/l", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "7b9e5259d", + "time": 1778204145000, + "subject": "feat(FN-3403): add shell multi-profile support with connection manager onbo", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + } + ] + }, + { + "file": "packages/desktop/src/__tests__/main.test.ts", + "package": "packages/desktop", + "valueScore": 20.5, + "positiveCount": 13, + "negativeCount": 3, + "neutralCount": 0, + "timesTouched": 16, + "testOnlyCount": 1, + "testOnlyRatio": 0.063, + "signalTally": { + "added-with-source": 1, + "test+source": 11, + "churn-keyword": 2, + "fix+source": 3, + "test-only-churn": 1 + }, + "durationMs": null, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 79, + "lastTouched": "2026-06-21", + "evidence": [ + { + "sha": "f128b059d", + "time": 1775626385000, + "subject": "feat(FN-1070): restore desktop Electron scaffolding", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "c1fa49c71", + "time": 1775628688000, + "subject": "feat(FN-1074): add desktop tray and application menu", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "8904fbf95", + "time": 1775634323000, + "subject": "feat(FN-1076): integrate desktop IPC bridge and lifecycle modules", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 1.5, + "signals": [ + "test+source" + ] + }, + { + "sha": "ecf0eb6d8", + "time": 1775637605000, + "subject": "feat(FN-1073): add desktop CLI workflow and packaging support", + "status": "M", + "touchedSource": true, + "category": "negative", + "weight": -1.5, + "signals": [ + "churn-keyword", + "test+source" + ] + }, + { + "sha": "ef9b4edd1", + "time": 1775774982000, + "subject": "fix(FN-1339): move executor status bar above mobile nav bar", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "9830ea96c", + "time": 1775833263000, + "subject": "fix(ci): fix test failures from recent feature additions", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + }, + { + "file": "packages/engine/src/__tests__/reliability-interactions/merge-reuse-task-worktree.slow.test.ts", + "package": "packages/engine", + "valueScore": 34, + "positiveCount": 17, + "negativeCount": 4, + "neutralCount": 1, + "timesTouched": 22, + "testOnlyCount": 4, + "testOnlyRatio": 0.182, + "signalTally": { + "added-with-source": 1, + "fix+source": 9, + "test+source": 8, + "test-only-churn": 4, + "churn-keyword": 1 + }, + "durationMs": null, + "testCount": 22, + "quarantined": false, + "recommendation": "keep", + "safeDelete": false, + "deletionPriority": 0, + "ageDays": 36, + "lastTouched": "2026-05-24", + "evidence": [ + { + "sha": "22d59b5f9", + "time": 1779295360000, + "subject": "feat(FN-5279): add merge integration worktree feature with settings UI and", + "status": "A", + "touchedSource": true, + "category": "positive", + "weight": 2, + "signals": [ + "added-with-source" + ] + }, + { + "sha": "499784581", + "time": 1779298379000, + "subject": "fix(FN-5353): fallback merge reuse handoff to cwd-main", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "6d66559eb", + "time": 1779299255000, + "subject": "fix(FN-5353): reacquire fresh worktree on reuse-handoff refusal", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "7df11bc2c", + "time": 1779299909000, + "subject": "fix(FN-5353): reacquire fresh worktree when reuse handoff fails instead of falling back to main", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "c82481018", + "time": 1779312499000, + "subject": "fix(FN-5279): apply reuse-mode squash to local main and guard executor-lease race", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + }, + { + "sha": "1983dac6e", + "time": 1779323508000, + "subject": "fix(FN-5345): refuse empty commits + early empty-own-diff finalize", + "status": "M", + "touchedSource": true, + "category": "positive", + "weight": 3, + "signals": [ + "fix+source" + ] + } + ] + } + ] +} diff --git a/docs/test-value-audit.md b/docs/test-value-audit.md new file mode 100644 index 0000000000..29c11669e2 --- /dev/null +++ b/docs/test-value-audit.md @@ -0,0 +1,144 @@ +# Test Value Audit + +> Generated by `scripts/test-value-audit.mjs` on 2026-06-26T00:03:00.110Z. +> +> **This is a HEURISTIC, not ground truth.** It is an evidence base for a human +> deletion decision. The script does **not** delete any tests. See Methodology + Caveats. + +## Summary + +- Files analyzed: **2051** +- With timing data: **1979** +- `delete` candidates (valueScore ≤ 0 or quarantined): **288** +- `review` candidates (0 < valueScore ≤ 3): **839** +- `keep` (valueScore > 3): **924** +- "Safe delete" under the deletion-ratchet (zero positive evidence + churn/quarantine): **54** +- In quarantine ledger (current or historical): **59** + +## Methodology + +For every audited test file we run a single whole-history `git log --name-status` +pass and classify each commit that touched the file (renames followed backward): + +**Positive signal** (encoded/caught a real bug): +- `fix(...)`/`fix:` subject **with** a sibling source change in the same package (+3) +- `fix(...)`/`fix:` subject alone (+2) +- `## Symptom Verification` regression marker in the commit body (+3, FN-5893) +- test file first **added** together with source (+2), or added alone (+1) +- a plain test+source co-change modify (+1.5) + +**Negative signal** (low value / churn): +- subject/body mentions `flake`, `flaky`, `deflake`, `quarantine`, `stabiliz`, `appease`, `timeout`, `retry` (−3) +- a modify that touched **only** the test file, no source (−1) +- appears in `scripts/lib/test-quarantine.json` history (−5) + +The per-file **valueScore** is the sum of commit weights (plus the quarantine penalty). +**deletionPriority** = `durationMs / (1 + max(0, valueScore))` with a small boost for +net-negative files — so the ranking surfaces **slow AND low-value** files first +(most CI time saved per unit of lost signal). Recommendation: `delete` (≤0), `review` +(≤3), else `keep`. + +## Caveats (read before deleting anything) + +- **Heuristic, not truth.** A quiet, never-modified test can still be load-bearing; + a high-churn test can still be valuable. Use this to *prioritize human review*. +- **`git log --follow` / rename limits.** Renames are followed only through linear + `R`/`C` name-status chains; squash-merges collapse multi-commit history into one + subject, so per-commit signal is lost for squashed work (this repo defaults to + squash merges — a major reason to treat scores as lower bounds on value). +- **Subjects lie.** `fix(...)` is trusted as a positive even if the test was unrelated; + conversely a real bug fixed under a `feat(...)`/`FN-` subject without source co-change + may be undercounted. +- **Timing is a snapshot** from `scripts/test-timings.json`; files with no entry show + `n/a` duration and get deletionPriority 0 (cost unknown, not necessarily cheap). +- **Not a green light.** Deleting a gate test still requires the gate-eviction process + (AGENTS.md). "Safe delete" only flags files that meet the ratchet's churn/quarantine bar. + +## Top 40 deletion candidates + +| # | File | Tests | Duration | Value | Priority | Rec | Why (recent commits) | +|---|------|------:|---------:|------:|---------:|-----|----------------------| +| 1 | `packages/engine/src/__tests__/workspace-merger-idempotency.test.ts` | 8 | 12.7s | -1 | 13335 | delete (safe-delete) | `754434632` feat(workspace): Phase C U2 — per-repo landed pr _(churn-keyword,added-with-source)_
`627bdcfb0` fix(review): Phase C merge-loop hardening — doub _(churn-keyword,fix+source)_
`3a7123762` fix(review): address PR #1717 Phase C merge-loop _(churn-keyword,fix+source)_ | +| 2 | `packages/dashboard/src/__tests__/github-tracking-delete.test.ts` | 9 | 8.7s | -7.5 | 11962.5 | delete | `d0c9e47f6` feat(FN-4253): close linked GitHub issues on tas _(added-with-source)_
`9dfefc551` feat(FN-4941): close or delete GitHub issues whe _(test+source)_
`46fb3f0ef` feat(FN-5305): fix async synchronization in gith _(test-only-churn)_ | +| 3 | `packages/engine/src/__tests__/reliability-interactions/merge-runner-spawn-enoent-prevention.test.ts` | 5 | 7.9s | -2 | 8690 | delete (safe-delete) | `7763ba5fa` FN-6278: preflight reusable merge worktree cwd _(churn-keyword,added-with-source)_
`a768d36da` FN-6817: root reliability fixtures under worker _(test-only-churn)_ | +| 4 | `packages/dashboard/src/__tests__/session-reconnect.test.ts` | 4 | 6.1s | -6.5 | 8082.5 | delete (quarantined) | `bf141c47d` test(FN-1156): add AI session lifecycle and reco _(added)_
`84ed84313` feat(FN-2123): merge fusion/fn-2123 _(test-only-churn)_
`6714f7654` refactor(FN-2161): standardize on createFnAgent _(test+source)_ | +| 5 | `packages/engine/src/__tests__/self-healing-already-merged.real-git.test.ts` | 7 | 4.6s | -12 | 7360 | delete (quarantined) | `602a7da51` feat(FN-3865): complete Steps 3-6 — recover alre _(added-with-source)_
`39e0b3c6a` fix(FN-3865): align merge recovery types and rea _(fix+source)_
`6fc804483` feat(FN-3940): expose github tracking controls i _(test-only-churn)_ | +| 6 | `packages/core/src/__tests__/run-audit.integration.test.ts` | 24 | 5.8s | -2 | 6380 | delete (quarantined) | `c2d0ac572` test(FN-1414): add run-audit integration tests f _(churn-keyword,added)_
`84ed84313` feat(FN-2123): merge fusion/fn-2123 _(test+source)_
`a269f4829` refactor: remove legacy kb compatibility _(test+source)_ | +| 7 | `packages/engine/src/__tests__/workspace-merger-lease.test.ts` | 4 | 5.8s | -1 | 6090 | delete (safe-delete) | `64e87f9a1` feat(workspace): Phase C U3 — per-repo land leas _(churn-keyword,added-with-source)_
`627bdcfb0` fix(review): Phase C merge-loop hardening — doub _(churn-keyword,fix+source)_ | +| 8 | `packages/engine/src/__tests__/workspace-merger.test.ts` | 7 | 8.0s | 0.5 | 5333.3 | review | `744ed098a` feat(workspace): Phase C U1 — per-repo merge loo _(churn-keyword,added-with-source)_
`754434632` feat(workspace): Phase C U2 — per-repo landed pr _(churn-keyword,test+source)_
`3a7123762` fix(review): address PR #1717 Phase C merge-loop _(churn-keyword,fix+source)_ | +| 9 | `packages/cli/src/__tests__/extension-task-tools.test.ts` | 4 | 3.8s | -7 | 5130 | delete (quarantined) | `47eaf089b` feat(FN-4904): complete Step 3 — align engine an _(added-with-source)_
`0dc4c9c6a` test(FN-4904): cover worktree-root lookup in ext _(test-only-churn)_
`b80b517a4` test(FN-4927): cover no-task fallback for task t _(test-only-churn)_ | +| 10 | `packages/engine/src/__tests__/worktree-db-hydrate.test.ts` | 12 | 7.1s | 0.5 | 4733.3 | review | `e59a740d0` feat(FN-3841): add worktree database hydration t _(added-with-source)_
`6acc51cf0` feat(FN-4039): recover worktree db scratch boots _(test+source)_
`93dc5a727` feat(FN-4083): add WAL enforcement, immediate wr _(test+source)_ | +| 11 | `packages/core/src/__tests__/activity-analytics.test.ts` | 25 | 4.6s | 0 | 4600 | delete (quarantined) | `53bb1d8f3` feat(analytics): U2 — core date-range aggregator _(added-with-source)_
`5bc8901f0` feat(command-center): U7 — SDLC funnel + through _(test+source)_
`f5bd86214` feat(monitor): U13 — monitor stage (deployments, _(test+source)_ | +| 12 | `packages/dashboard/src/routes/__tests__/board-workflows-route.test.ts` | 4 | 3.6s | -5.5 | 4590 | delete | `010976cee` test: promote/board-workflows routes, concurrent _(added-with-source)_
`f77aa073c` FN-6025: fix builtin coding auto-merge review fl _(test-only-churn)_
`edde74d56` FN-6146: harden dashboard test mocks and request _(churn-keyword,test+source)_ | +| 13 | `packages/dashboard/app/components/__tests__/TaskDetailModal.responsive-and-dependencies.test.tsx` | 44 | 6.6s | 0.5 | 4400 | review | `ed52c3dff` test(FN-3591): split TaskDetailModal coverage in _(added)_
`ecbf1f829` feat(FN-3276): add task review tab with metadata _(test+source)_
`309e3f91a` feat(FN-3897): add blocker fan-out hook, badge, _(test+source)_ | +| 14 | `packages/core/src/__tests__/todo-store.test.ts` | 17 | 3.8s | -3 | 4370 | delete (quarantined) | `6f4b42a89` feat(FN-2575): merge fusion/fn-2575 _(added-with-source)_ | +| 15 | `packages/engine/src/__tests__/reliability-interactions/soft-blocker-auto-finalize-interactions.real-git.test.ts` | 7 | 3.4s | -4 | 4080 | delete | `208753fb8` test(FN-4653): complete Step 1 — add merge-path _(added)_
`875b32266` test(FN-4653): complete Step 2 — cover mixed blo _(test-only-churn)_
`5548b6f4a` test(FN-4653): complete Step 3 — add scheduler s _(test-only-churn)_ | +| 16 | `packages/core/src/__tests__/move-task-characterization.test.ts` | 10 | 8.1s | 1 | 4050 | review | `4e1b0fab0` feat(core): workflow-resolved transitions behind _(added-with-source)_
`0b7549a53` FN-6126: enable workflow experimental flags by d _(test+source)_
`9a7881441` FN-6245: keep default auto-merge tasks on live s _(test+source)_ | +| 17 | `packages/engine/src/__tests__/pr-response-run.test.ts` | 23 | 11.6s | 2 | 3866.7 | review | `31d4b5335` feat(pr): security-hardened review-response run _(added-with-source)_ | +| 18 | `packages/engine/src/__tests__/merger-autostash-orphan-surface.test.ts` | 6 | 3.7s | 0 | 3700 | delete | `d604d090a` feat(FN-3863): add stash recovery dashboard surf _(added-with-source)_
`bcb4107a1` feat(FN-3932): add orphaned finalize-reset autos _(test+source)_
`1cf987208` feat(FN-4018): isolate split merger temp workspa _(test-only-churn)_ | +| 19 | `packages/engine/src/__tests__/merger-empty-cherry-pick-fallback.test.ts` | 2 | 3.0s | -1.5 | 3225 | delete | `653500959` test(FN-4475): add fallback empty cherry-pick re _(added)_
`ebd79d21b` feat(FN-4475): remove unstable merger empty cher _(churn-keyword,test-only-churn)_
`22d59b5f9` feat(FN-5279): add merge integration worktree fe _(test+source)_ | +| 20 | `packages/engine/src/__tests__/merger-ai-cleanup.test.ts` | 15 | 2.8s | -3 | 3220 | delete (quarantined) | `4032a35a2` FN-6188: harden AI merge temp worktree cleanup _(added-with-source)_
`d75f861f2` FN-6199: harden AI merge worktree cleanup _(test+source)_
`3e69d3990` FN-6244: protect active AI merge worktrees _(churn-keyword,test+source)_ | +| 21 | `packages/dashboard/src/__tests__/routes-secrets-sync.test.ts` | 17 | 2.7s | -3 | 3105 | delete | `cca96a760` test(FN-4913): complete Step 7 — add secrets syn _(added-with-source)_
`b5e674059` test(FN-4980): cover sync-export auth rejection _(test-only-churn)_
`47775e942` test(FN-4981): complete Step 2 — add push missin _(test-only-churn)_ | +| 22 | `packages/core/src/__tests__/store-concurrent-writes.test.ts` | 6 | 2.8s | -1.5 | 3010 | delete (quarantined) | `93dc5a727` feat(FN-4083): add WAL enforcement, immediate wr _(added-with-source)_
`67c680c8d` fix(FN-4122): use unique tmp filename for task.j _(fix+source)_
`a38752c6b` FN-6486: rescue quarantined flaky tests _(churn-keyword,test+source)_ | +| 23 | `packages/core/src/__tests__/store-archive-search.test.ts` | 63 | 3.0s | 0 | 3000 | delete | `ac6aaca2c` feat(FN-3982): split monolithic store.test.ts in _(added)_
`139e25fcf` feat(FN-4837): complete Step 2 — migrate store t _(test-only-churn)_
`294209f64` FN-5943: maintain tasks FTS5 indexes automatical _(test+source)_ | +| 24 | `packages/engine/src/__tests__/reliability-interactions/in-review-branch-rebind.test.ts` | 10 | 7.4s | 1.5 | 2960 | review | `5c3096c7d` feat(FN-5083): complete Steps 5-7 rebind UI and _(added)_
`b3ac0beaa` test(FN-5083): tighten rebind reliability and qu _(test-only-churn)_
`3566cf8a1` FN-6695: block unsafe in-review branch rebinds _(test+source)_ | +| 25 | `packages/core/src/__tests__/store-activity.test.ts` | 49 | 5.9s | 1 | 2950 | review | `36e130937` refactor(FN-4021): split core store tests into d _(added)_
`287ebaf10` feat(FN-4053): unify task ID allocation with sto _(test+source)_
`a0f2bc530` feat(FN-4429): complete Step 1 — plumb moveSourc _(test+source)_ | +| 26 | `packages/dashboard/app/components/__tests__/AgentDetailView.mobile-scroll.test.tsx` | 4 | 2.5s | -3 | 2875 | delete | `3a4397215` feat(FN-4231): restore mobile scroll in AgentDet _(added)_
`d68fe3e9f` FN-6209: fix tablet tab overflow in agent detail _(test-only-churn)_
`b7c23c09c` FN-6450: enable touch scrolling for agent detail _(test-only-churn)_ | +| 27 | `packages/dashboard/src/__tests__/insights-routes.test.ts` | 24 | 26.5s | 8.5 | 2789.5 | keep | `629398483` fix(FN-1909): reorder insights routes to prevent _(fix+source,added-with-source)_
`8de7feeb1` feat(FN-1974): merge fusion/fn-1974 _(test+source)_
`6714f7654` refactor(FN-2161): standardize on createFnAgent _(test+source)_ | +| 28 | `packages/engine/src/__tests__/branch-conflicts-ghost-references.test.ts` | 5 | 2.5s | -2 | 2750 | delete | `663e5d2cd` feat(FN-4508): complete Step 1 — harden inspectB _(added-with-source)_
`5cd0e6665` feat(FN-4839): harden real-git test timeouts acr _(churn-keyword,test-only-churn)_ | +| 29 | `packages/core/src/__tests__/soft-delete-lineage-children.test.ts` | 11 | 2.6s | 0 | 2600 | delete | `e0c0745c0` test(FN-5129): add lineage soft-delete and archi _(added-with-source)_
`2c7ae1c1a` feat(FN-5131): add lineage-unlink flag to triage _(test-only-churn)_
`4955ccf6e` feat(FN-5132): align soft-delete-lineage-childre _(test-only-churn)_ | +| 30 | `packages/core/src/__tests__/store-handoff-to-review.test.ts` | 8 | 2.6s | 0 | 2600 | delete (quarantined) | `93b11c6c0` feat(FN-5241): add atomic in-review handoff seam _(added-with-source)_
`2d425b1e2` fix: scrub queued/blockedBy/overlapBlockedBy on _(fix+source)_ | +| 31 | `packages/engine/src/__tests__/branch-conflicts-zero-unique.test.ts` | 4 | 2.2s | -2.5 | 2475 | delete | `bcb0035d1` feat(FN-4500): complete Step 2 — harden zero-uni _(added-with-source)_
`14ef1041a` feat(FN-4500): complete Step 3 — add live zero-c _(test+source)_
`5ce377afe` feat(FN-4508): complete Step 7 — docs and compat _(test-only-churn)_ | +| 32 | `packages/engine/src/__tests__/workspace-e2e.test.ts` | 2 | 4.8s | 1 | 2400 | review | `78d7a28f1` test(workspace): Phase D U2 — e2e merge + recove _(added)_ | +| 33 | `packages/cli/src/__tests__/research-extension-tools.test.ts` | 10 | 2.1s | -2.5 | 2362.5 | delete (quarantined) | `6670837b7` feat(FN-2996): add research agent tools with ext _(added-with-source)_
`f2fa44e27` feat(FN-2999): harden research lifecycle with id _(churn-keyword,test+source)_
`f1ee69e59` feat(FN-3014): document research recovery semant _(test+source)_ | +| 34 | `packages/cli/src/__tests__/extension-mission-goal-tools.test.ts` | 4 | 1.7s | -7 | 2295 | delete (quarantined) | `93e8bd994` FN-5899: add mission-goal linking commands and t _(added-with-source)_
`26bc80a0a` FN-5958: add mission goal linking to create and _(test+source)_
`259cdfb53` FN-6734: stabilize CLI extension test cleanup _(churn-keyword,test-only-churn)_ | +| 35 | `packages/engine/src/__tests__/worktree-acquisition-workspace.test.ts` | 8 | 6.6s | 2 | 2200 | review | `12d33c512` feat(workspace): Phase A U2 — per-repo acquisiti _(added-with-source)_
`d5fa8654f` fix(review): Phase A workspace hardening — tool _(churn-keyword,fix+source)_ | +| 36 | `packages/dashboard/src/routes/__tests__/workflow-import-export.test.ts` | 10 | 6.5s | 2 | 2166.7 | review | `407ce03bf` feat(dashboard): workflow and template JSON impo _(added-with-source)_ | +| 37 | `packages/cli/src/__tests__/extension-goal-tools.test.ts` | 7 | 1.6s | -7 | 2160 | delete (quarantined) | `b335f3d7c` FN-5652: add goal retrieval tool for agent execu _(added-with-source)_
`fab8a62b5` FN-5977: expose goal retrieval tools across engi _(test+source)_
`259cdfb53` FN-6734: stabilize CLI extension test cleanup _(churn-keyword,test-only-churn)_ | +| 38 | `packages/dashboard/app/components/__tests__/AgentDetailView.settings.test.tsx` | 25 | 10.7s | 4 | 2140 | keep | `d98c053ed` feat(FN-4088): split AgentDetailView tests into _(added)_
`91931bd5d` feat(FN-4394): complete Step 5 — add dashboard s _(test+source)_
`6b2607dae` feat(FN-4400): complete Step 7 — add prompt-size _(test+source)_ | +| 39 | `packages/engine/src/cli-agent/__tests__/session-manager.test.ts` | 19 | 4.2s | 1 | 2100 | review | `4fc1a9dd4` feat(engine): add CliAgentAdapter interface and _(added-with-source)_
`773ba7620` test(engine): self-skip real-PTY e2e when PTY I/ _(test-only-churn)_ | +| 40 | `packages/engine/src/__tests__/reliability-interactions/ai-merge-worktree-cleanup.test.ts` | 7 | 6.3s | 2 | 2100 | review | `ac342f501` FN-6220: harden AI merge worktree cleanup _(churn-keyword,added-with-source)_
`2085610e9` FN-6246: move AI merge clean rooms into repo sto _(test+source)_
`dc4c2b220` FN-6453: clean up AI-merge worktrees after setup _(test+source)_ | + +### One-line recommendations + +1. `packages/engine/src/__tests__/workspace-merger-idempotency.test.ts` — **delete**: no positive (bug-encoding) signal in history; pure churn — strong delete candidate (slow: 12.7s — high CI time payoff) +2. `packages/dashboard/src/__tests__/github-tracking-delete.test.ts` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 8.7s — high CI time payoff) +3. `packages/engine/src/__tests__/reliability-interactions/merge-runner-spawn-enoent-prevention.test.ts` — **delete**: no positive (bug-encoding) signal in history; pure churn — strong delete candidate (slow: 7.9s — high CI time payoff) +4. `packages/dashboard/src/__tests__/session-reconnect.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 6.1s — high CI time payoff) +5. `packages/engine/src/__tests__/self-healing-already-merged.real-git.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 4.6s — high CI time payoff) +6. `packages/core/src/__tests__/run-audit.integration.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 5.8s — high CI time payoff) +7. `packages/engine/src/__tests__/workspace-merger-lease.test.ts` — **delete**: no positive (bug-encoding) signal in history; pure churn — strong delete candidate (slow: 5.8s — high CI time payoff) +8. `packages/engine/src/__tests__/workspace-merger.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 8.0s — high CI time payoff) +9. `packages/cli/src/__tests__/extension-task-tools.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 3.8s — high CI time payoff) +10. `packages/engine/src/__tests__/worktree-db-hydrate.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 7.1s — high CI time payoff) +11. `packages/core/src/__tests__/activity-analytics.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 4.6s — high CI time payoff) +12. `packages/dashboard/src/routes/__tests__/board-workflows-route.test.ts` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 3.6s — high CI time payoff) +13. `packages/dashboard/app/components/__tests__/TaskDetailModal.responsive-and-dependencies.test.tsx` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 6.6s — high CI time payoff) +14. `packages/core/src/__tests__/todo-store.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 3.8s — high CI time payoff) +15. `packages/engine/src/__tests__/reliability-interactions/soft-blocker-auto-finalize-interactions.real-git.test.ts` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 3.4s — high CI time payoff) +16. `packages/core/src/__tests__/move-task-characterization.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 8.1s — high CI time payoff) +17. `packages/engine/src/__tests__/pr-response-run.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 11.6s — high CI time payoff) +18. `packages/engine/src/__tests__/merger-autostash-orphan-surface.test.ts` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 3.7s — high CI time payoff) +19. `packages/engine/src/__tests__/merger-empty-cherry-pick-fallback.test.ts` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 3.0s — high CI time payoff) +20. `packages/engine/src/__tests__/merger-ai-cleanup.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 2.8s — high CI time payoff) +21. `packages/dashboard/src/__tests__/routes-secrets-sync.test.ts` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 2.7s — high CI time payoff) +22. `packages/core/src/__tests__/store-concurrent-writes.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 2.8s — high CI time payoff) +23. `packages/core/src/__tests__/store-archive-search.test.ts` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 3.0s — high CI time payoff) +24. `packages/engine/src/__tests__/reliability-interactions/in-review-branch-rebind.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 7.4s — high CI time payoff) +25. `packages/core/src/__tests__/store-activity.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 5.9s — high CI time payoff) +26. `packages/dashboard/app/components/__tests__/AgentDetailView.mobile-scroll.test.tsx` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 2.5s — high CI time payoff) +27. `packages/dashboard/src/__tests__/insights-routes.test.ts` — **keep**: carries real bug-fix / source-coupled signal — keep +28. `packages/engine/src/__tests__/branch-conflicts-ghost-references.test.ts` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 2.5s — high CI time payoff) +29. `packages/core/src/__tests__/soft-delete-lineage-children.test.ts` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 2.6s — high CI time payoff) +30. `packages/core/src/__tests__/store-handoff-to-review.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 2.6s — high CI time payoff) +31. `packages/engine/src/__tests__/branch-conflicts-zero-unique.test.ts` — **delete**: net-negative value (churn outweighs signal) — delete candidate (slow: 2.2s — high CI time payoff) +32. `packages/engine/src/__tests__/workspace-e2e.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 4.8s — high CI time payoff) +33. `packages/cli/src/__tests__/research-extension-tools.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 2.1s — high CI time payoff) +34. `packages/cli/src/__tests__/extension-mission-goal-tools.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 1.7s — high CI time payoff) +35. `packages/engine/src/__tests__/worktree-acquisition-workspace.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 6.6s — high CI time payoff) +36. `packages/dashboard/src/routes/__tests__/workflow-import-export.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 6.5s — high CI time payoff) +37. `packages/cli/src/__tests__/extension-goal-tools.test.ts` — **delete**: in quarantine ledger — delete per ratchet once expiry passes (slow: 1.6s — high CI time payoff) +38. `packages/dashboard/app/components/__tests__/AgentDetailView.settings.test.tsx` — **keep**: carries real bug-fix / source-coupled signal — keep +39. `packages/engine/src/cli-agent/__tests__/session-manager.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 4.2s — high CI time payoff) +40. `packages/engine/src/__tests__/reliability-interactions/ai-merge-worktree-cleanup.test.ts` — **review**: thin positive signal; confirm it asserts a real invariant before trimming (slow: 6.3s — high CI time payoff) + diff --git a/scripts/__tests__/test-value-audit.test.mjs b/scripts/__tests__/test-value-audit.test.mjs new file mode 100644 index 0000000000..03866f4921 --- /dev/null +++ b/scripts/__tests__/test-value-audit.test.mjs @@ -0,0 +1,171 @@ +import test from "node:test"; +import assert from "node:assert/strict"; + +import { + classifyCommit, + scoreFile, + isFixSubject, + WEIGHTS, + NEGATIVE_KEYWORDS, +} from "../lib/test-value-audit-lib.mjs"; + +/* +FNXC:TestInfrastructure 2026-06-25-00:00: +Unit coverage for the test-value-audit classifier. Feeds synthetic commit records and +asserts the scoring so the heuristic's behavior is pinned independent of git/FS IO. +*/ + +// --- isFixSubject --- +test("isFixSubject matches conventional fix subjects incl. fix(FN-XXXX)", () => { + assert.ok(isFixSubject("fix(FN-1234): correct merge race")); + assert.ok(isFixSubject("fix: handle null")); + assert.ok(isFixSubject("fix!: breaking repair")); + assert.ok(!isFixSubject("feat(FN-1): add thing")); + assert.ok(!isFixSubject("prefix change")); +}); + +// --- classifyCommit positive signals --- +test("fix subject + source change is strongest positive", () => { + const c = classifyCommit({ subject: "fix(FN-9): bug", body: "", status: "M", touchedSource: true }); + assert.equal(c.category, "positive"); + assert.equal(c.weight, WEIGHTS.fixWithSource); + assert.ok(c.signals.includes("fix+source")); +}); + +test("fix subject without source change is a weaker positive", () => { + const c = classifyCommit({ subject: "fix: bug", body: "", status: "M", touchedSource: false }); + assert.equal(c.weight, WEIGHTS.fix); + assert.ok(c.signals.includes("fix")); +}); + +test("symptom verification marker adds positive weight on top of fix", () => { + const c = classifyCommit({ + subject: "fix(FN-5893): invariant", + body: "## Symptom Verification\nOriginal symptom: ...", + status: "M", + touchedSource: true, + }); + assert.equal(c.weight, WEIGHTS.fixWithSource + WEIGHTS.symptomVerification); + assert.ok(c.signals.includes("symptom-verification")); +}); + +test("added with source is positive; added alone is weak positive", () => { + const withSrc = classifyCommit({ subject: "feat: x", status: "A", touchedSource: true }); + assert.equal(withSrc.weight, WEIGHTS.addedWithSource); + assert.ok(withSrc.signals.includes("added-with-source")); + + const alone = classifyCommit({ subject: "test: x", status: "A", touchedSource: false }); + assert.equal(alone.weight, WEIGHTS.added); + assert.ok(alone.signals.includes("added")); +}); + +test("non-fix test+source modify is a mild positive", () => { + const c = classifyCommit({ subject: "refactor: rework", status: "M", touchedSource: true }); + assert.equal(c.weight, WEIGHTS.testPlusSource); + assert.ok(c.signals.includes("test+source")); +}); + +// --- classifyCommit negative signals --- +test("flake/quarantine keywords produce negative weight", () => { + for (const kw of NEGATIVE_KEYWORDS) { + const c = classifyCommit({ subject: `chore: ${kw} the test`, status: "M", touchedSource: false }); + assert.ok(c.weight <= WEIGHTS.churnKeyword, `keyword ${kw} should be negative`); + assert.ok(c.signals.includes("churn-keyword")); + } +}); + +test("test-only modify (no source, no fix) is churn", () => { + const c = classifyCommit({ subject: "chore: tidy assertions", status: "M", touchedSource: false }); + assert.equal(c.category, "negative"); + assert.equal(c.weight, WEIGHTS.testOnlyChurn); + assert.ok(c.signals.includes("test-only-churn")); +}); + +test("a fix that also mentions a churn keyword nets toward neutral (mixed signal)", () => { + const c = classifyCommit({ + subject: "fix(FN-1): widen timeout to stabilize merge", + status: "M", + touchedSource: true, + }); + // churnKeyword(-3) + fixWithSource(+3) = 0 -> neutral, both signals recorded. + assert.equal(c.weight, 0); + assert.equal(c.category, "neutral"); + assert.ok(c.signals.includes("churn-keyword")); + assert.ok(c.signals.includes("fix+source")); +}); + +// --- scoreFile aggregation --- +test("scoreFile sums weights and recommends keep for net-positive files", () => { + const commits = [ + classifyCommit({ subject: "test: add", status: "A", touchedSource: true }), // +2 + classifyCommit({ subject: "fix(FN-2): real bug", status: "M", touchedSource: true }), // +3 + ]; + const s = scoreFile({ commits, durationMs: 500, testCount: 4 }); + assert.equal(s.valueScore, 5); + assert.equal(s.positiveCount, 2); + assert.equal(s.recommendation, "keep"); + assert.equal(s.safeDelete, false); +}); + +test("scoreFile recommends delete + safeDelete for pure churn with no positives", () => { + const commits = [ + classifyCommit({ subject: "chore: tweak", status: "M", touchedSource: false }), // -1 + classifyCommit({ subject: "chore: deflake", status: "M", touchedSource: false }), // -3 (and -1 churn? no: keyword path only) + ]; + const s = scoreFile({ commits, durationMs: 9000, testCount: 3 }); + assert.ok(s.valueScore < 0); + assert.equal(s.positiveCount, 0); + assert.equal(s.recommendation, "delete"); + assert.equal(s.safeDelete, true); +}); + +test("quarantine ledger membership forces delete and applies the penalty", () => { + const commits = [classifyCommit({ subject: "fix(FN-3): bug", status: "M", touchedSource: true })]; // +3 + const s = scoreFile({ commits, durationMs: 100, testCount: 2, quarantined: true }); + // +3 then -5 quarantine = -2 => delete; but positiveCount=1 so NOT safeDelete. + assert.equal(s.valueScore, WEIGHTS.fixWithSource + WEIGHTS.quarantineLedger); + assert.equal(s.recommendation, "delete"); + assert.equal(s.quarantined, true); + assert.equal(s.safeDelete, false); +}); + +test("deletionPriority surfaces slow + low-value above slow + valuable", () => { + const lowValueSlow = scoreFile({ + commits: [classifyCommit({ subject: "chore: tweak", status: "M", touchedSource: false })], + durationMs: 10_000, + testCount: 1, + }); + const highValueSlow = scoreFile({ + commits: [ + classifyCommit({ subject: "fix(FN-4): bug", status: "M", touchedSource: true }), + classifyCommit({ subject: "fix(FN-5): bug2", status: "M", touchedSource: true }), + ], + durationMs: 10_000, + testCount: 1, + }); + assert.ok( + lowValueSlow.deletionPriority > highValueSlow.deletionPriority, + "low-value slow file must outrank high-value slow file", + ); +}); + +test("missing duration yields zero deletionPriority (unknown cost)", () => { + const s = scoreFile({ + commits: [classifyCommit({ subject: "chore: tweak", status: "M", touchedSource: false })], + durationMs: null, + testCount: 1, + }); + assert.equal(s.deletionPriority, 0); + assert.equal(s.durationMs, null); +}); + +test("testOnlyRatio reflects churn fraction", () => { + const commits = [ + classifyCommit({ subject: "test: add", status: "A", touchedSource: true }), // not churn + classifyCommit({ subject: "chore: tidy", status: "M", touchedSource: false }), // churn + classifyCommit({ subject: "chore: tidy2", status: "M", touchedSource: false }), // churn + ]; + const s = scoreFile({ commits, durationMs: 1, testCount: 1 }); + assert.equal(s.testOnlyCount, 2); + assert.equal(s.testOnlyRatio, Number((2 / 3).toFixed(3))); +}); diff --git a/scripts/lib/test-value-audit-lib.mjs b/scripts/lib/test-value-audit-lib.mjs new file mode 100644 index 0000000000..234efbf299 --- /dev/null +++ b/scripts/lib/test-value-audit-lib.mjs @@ -0,0 +1,203 @@ +/* +FNXC:TestInfrastructure 2026-06-25-00:00: +Heuristic "test value audit" scoring library. Pure functions only — all git/FS IO +lives in scripts/test-value-audit.mjs so the classification logic stays unit-testable +with synthetic commit records. + +Why this exists (requirement): the suite has rotted before (FN-5048 slow tests, the +quarantine deletion-ratchet in AGENTS.md). We want a data-driven signal for WHICH test +files have actually encoded real bugs vs. only ever churned/flaked, so a human can drive +aggressive deletion of low-signal-yet-slow tests. This is a HEURISTIC, never ground truth: +git history is lossy (renames, squashes), commit subjects lie, and a quiet test can still +be load-bearing. Treat the output as evidence, not a verdict. + +Scoring model (transparent + auditable on purpose): +- POSITIVE signal = the commit encoded/caught a real behavioral bug. Strongest when a + `fix(...)` / `fix:` subject lands alongside a sibling SOURCE change, or carries a + `## Symptom Verification` regression marker (FN-5893), or the test file was first ADDED + together with source. +- NEGATIVE signal = low value / churn. Commits whose subject/body mention flake words + (flake/quarantine/stabiliz/appease/timeout/retry/flaky/deflake) or that repeatedly + touch ONLY the test file with no source change. Appearing in the quarantine ledger + history is the strongest negative. +*/ + +/** Churn / appeasement keywords. A commit mentioning any of these is a negative signal. */ +export const NEGATIVE_KEYWORDS = [ + "flake", + "flaky", + "deflake", + "quarantine", + "stabiliz", // stabilize / stabilization / stabilise + "appease", + "timeout", + "retry", +]; + +/** Per-commit signed weights. Documented so the report can explain every score. */ +export const WEIGHTS = { + churnKeyword: -3, + fixWithSource: 3, + fix: 2, + symptomVerification: 3, + addedWithSource: 2, + added: 1, + testPlusSource: 1.5, + testOnlyChurn: -1, + quarantineLedger: -5, +}; + +/** Recommendation thresholds on the final summed value score. */ +export const THRESHOLDS = { + delete: 0, // valueScore <= 0 => delete candidate + review: 3, // 0 < valueScore <= 3 => review + // valueScore > 3 => keep +}; + +/** + * True when the subject is a conventional `fix(...)` / `fix:` / `fix!:` commit. + * The repo convention is `fix(FN-XXXX):` so this also captures task bug fixes. + * @param {string} subject + */ +export function isFixSubject(subject) { + return /^\s*fix(\(|:|!)/i.test(subject ?? ""); +} + +/** + * Classify a single commit that touched a given test file. + * + * @param {object} record + * @param {string} [record.subject] commit subject line + * @param {string} [record.body] commit body + * @param {string} [record.status] git name-status of the TEST file in this commit ("A","M","D","R"...) + * @param {boolean} [record.touchedSource] did the commit also change a non-test source file in the same package? + * @returns {{category:"positive"|"negative"|"neutral", weight:number, signals:string[]}} + */ +export function classifyCommit(record) { + const subject = record.subject ?? ""; + const body = record.body ?? ""; + const status = record.status ?? "M"; + const touchedSource = Boolean(record.touchedSource); + const text = `${subject}\n${body}`.toLowerCase(); + + const isAdd = status.startsWith("A"); + const isFix = isFixSubject(subject); + const hasSymptom = /symptom verification/i.test(body) || /symptom verification/i.test(subject); + const churnKeyword = NEGATIVE_KEYWORDS.some((k) => text.includes(k)); + + let weight = 0; + const signals = []; + + if (churnKeyword) { + weight += WEIGHTS.churnKeyword; + signals.push("churn-keyword"); + } + + if (isFix && touchedSource) { + weight += WEIGHTS.fixWithSource; + signals.push("fix+source"); + } else if (isFix) { + weight += WEIGHTS.fix; + signals.push("fix"); + } + + if (hasSymptom) { + weight += WEIGHTS.symptomVerification; + signals.push("symptom-verification"); + } + + if (isAdd && touchedSource) { + weight += WEIGHTS.addedWithSource; + signals.push("added-with-source"); + } else if (isAdd) { + weight += WEIGHTS.added; + signals.push("added"); + } + + // Test+source co-change (non-fix, non-add modify) is real behavioral coverage. + if (!isAdd && !isFix && touchedSource) { + weight += WEIGHTS.testPlusSource; + signals.push("test+source"); + } + + // A modify that touched ONLY the test file (no source, not a fix, not the add) is churn. + if (!isAdd && !isFix && !touchedSource && !hasSymptom) { + weight += WEIGHTS.testOnlyChurn; + signals.push("test-only-churn"); + } + + let category = "neutral"; + if (weight > 0) category = "positive"; + else if (weight < 0) category = "negative"; + + return { category, weight, signals }; +} + +/** + * Aggregate per-commit classifications into a file-level value score + recommendation. + * + * @param {object} input + * @param {Array<{category:string, weight:number, signals:string[]}>} input.commits classified commits + * @param {number|null} [input.durationMs] per-file test duration from scripts/test-timings.json + * @param {number} [input.testCount] number of it()/test() cases in the file + * @param {boolean} [input.quarantined] does the file appear in the quarantine ledger (current or historical)? + */ +export function scoreFile({ commits = [], durationMs = null, testCount = 0, quarantined = false }) { + let valueScore = 0; + let positiveCount = 0; + let negativeCount = 0; + let neutralCount = 0; + let testOnlyCount = 0; + const signalTally = {}; + + for (const c of commits) { + valueScore += c.weight; + if (c.category === "positive") positiveCount += 1; + else if (c.category === "negative") negativeCount += 1; + else neutralCount += 1; + for (const s of c.signals ?? []) { + signalTally[s] = (signalTally[s] ?? 0) + 1; + if (s === "test-only-churn") testOnlyCount += 1; + } + } + + if (quarantined) { + valueScore += WEIGHTS.quarantineLedger; + signalTally["quarantine-ledger"] = (signalTally["quarantine-ledger"] ?? 0) + 1; + } + + const timesTouched = commits.length; + const testOnlyRatio = timesTouched > 0 ? testOnlyCount / timesTouched : 0; + + let recommendation = "keep"; + if (quarantined || valueScore <= THRESHOLDS.delete) recommendation = "delete"; + else if (valueScore <= THRESHOLDS.review) recommendation = "review"; + + // Deletion priority surfaces SLOW + LOW-VALUE files first (most time saved per unit of + // lost signal). Valuable files divide their cost down; non-positive files keep full cost + // and get a small extra nudge proportional to how negative they are. + const cost = typeof durationMs === "number" && Number.isFinite(durationMs) ? durationMs : 0; + const negativityBoost = 1 + Math.max(0, -valueScore) * 0.05; + const deletionPriority = (cost / (1 + Math.max(0, valueScore))) * negativityBoost; + + // Under the deletion-ratchet (AGENTS.md), a file is a "safe delete" candidate when it + // carries zero positive evidence and is either quarantined or pure churn. + const safeDelete = positiveCount === 0 && (quarantined || valueScore <= 0); + + return { + valueScore: Number(valueScore.toFixed(2)), + positiveCount, + negativeCount, + neutralCount, + timesTouched, + testOnlyCount, + testOnlyRatio: Number(testOnlyRatio.toFixed(3)), + signalTally, + durationMs: cost || null, + testCount, + quarantined: Boolean(quarantined), + recommendation, + safeDelete, + deletionPriority: Number(deletionPriority.toFixed(1)), + }; +} diff --git a/scripts/test-value-audit.mjs b/scripts/test-value-audit.mjs new file mode 100644 index 0000000000..4cac426b84 --- /dev/null +++ b/scripts/test-value-audit.mjs @@ -0,0 +1,429 @@ +#!/usr/bin/env node +/* +FNXC:TestInfrastructure 2026-06-25-00:00: +Test Value Audit. Builds a heuristic "value score" for every test file under + - packages/(asterisk)/src/(asterisk)(asterisk)/__tests__/(asterisk)(asterisk) + - packages/dashboard/app/(asterisk)(asterisk)/__tests__/(asterisk)(asterisk) +from git history, joins it with per-file durations (scripts/test-timings.json), and ranks +the SLOW + LOW-VALUE files first as deletion candidates. Emits docs/test-value-audit.json +(machine artifact) and docs/test-value-audit.md (human report). This is an EVIDENCE BASE +for a human/follow-up deletion decision — the script never deletes tests. + +Requirement context: AGENTS.md "Do Not Add Slow Tests" (FN-5048) + the quarantine deletion +ratchet. We need to know which slow tests are also low-signal so they can be cut without +losing real regression coverage. + +HEURISTIC, not ground truth. Caveats live in the generated report's Methodology section. + +Usage: + node scripts/test-value-audit.mjs # full run, writes artifacts, prints top 15 + node scripts/test-value-audit.mjs --top 30 # change how many rows are printed/written to md + node scripts/test-value-audit.mjs --json-only # skip markdown +*/ + +import { execFileSync } from "node:child_process"; +import { readFileSync, writeFileSync, existsSync } from "node:fs"; +import { resolve, relative } from "node:path"; +import { fileURLToPath, URL } from "node:url"; + +import { classifyCommit, scoreFile, WEIGHTS, NEGATIVE_KEYWORDS } from "./lib/test-value-audit-lib.mjs"; + +const repoRoot = fileURLToPath(new URL("..", import.meta.url)); + +function arg(name, fallback) { + const i = process.argv.indexOf(name); + if (i === -1) return fallback; + const v = process.argv[i + 1]; + return v && !v.startsWith("--") ? v : true; +} + +const TOP_N = Number(arg("--top", 40)) || 40; +const JSON_ONLY = process.argv.includes("--json-only"); + +function git(args) { + return execFileSync("git", args, { cwd: repoRoot, encoding: "utf8", maxBuffer: 512 * 1024 * 1024 }); +} + +// --- Target test files ------------------------------------------------------- +// Globs (POSIX-style, repo-relative) for the two audited surfaces. +function isTargetTestFile(path) { + if (!/\.(test|spec)\.(ts|tsx|mts|cts|js|mjs|cjs)$/.test(path)) return false; + if (!path.includes("/__tests__/")) return false; + if (/^packages\/[^/]+\/src\//.test(path)) return true; + if (path.startsWith("packages/dashboard/app/")) return true; + return false; +} + +function packageRootOf(path) { + const m = path.match(/^(packages\/[^/]+)\//); + return m ? m[1] : null; +} + +// A non-test source file in the same package (used for "test + source changed together"). +function isSourceFileInPackage(path, pkgRoot) { + if (!pkgRoot || !path.startsWith(pkgRoot + "/")) return false; + if (!/\.(ts|tsx|mts|cts|js|mjs|cjs)$/.test(path)) return false; + if (/\.(test|spec)\./.test(path)) return false; + if (path.includes("/__tests__/")) return false; + if (path.includes("/__test-utils__/") || path.includes("/__mocks__/")) return false; + return true; +} + +// --- Timings ----------------------------------------------------------------- +function loadTimings() { + const p = resolve(repoRoot, "scripts/test-timings.json"); + const map = new Map(); + if (!existsSync(p)) return map; + const data = JSON.parse(readFileSync(p, "utf8")); + for (const pkg of Object.values(data.packages ?? {})) { + for (const [file, ms] of Object.entries(pkg.files ?? {})) { + // Keep the max if a path appears twice across packages. + map.set(file, Math.max(map.get(file) ?? 0, Number(ms) || 0)); + } + } + return map; +} + +// --- Quarantine ledger (current + historical) -------------------------------- +function loadQuarantinePaths() { + const set = new Set(); + const ledger = "scripts/lib/test-quarantine.json"; + try { + const current = JSON.parse(readFileSync(resolve(repoRoot, ledger), "utf8")); + for (const e of current.entries ?? []) if (e.file) set.add(e.file); + } catch { + /* ledger may not exist */ + } + // Historical entries: scan every past revision of the ledger for "file": "". + try { + const blob = git(["log", "-p", "--format=", "--", ledger]); + for (const m of blob.matchAll(/"file"\s*:\s*"([^"]+)"/g)) set.add(m[1]); + } catch { + /* no history */ + } + return set; +} + +// --- Whole-history parse ----------------------------------------------------- +// One git invocation yields every commit's subject/body/time + name-status file list. +// Field sep \x1f, body terminator \x02, commit start \x01. +function loadHistory() { + const SEP = "\x1f"; + const BODY_END = "\x02"; + const COMMIT_START = "\x01"; + const raw = git([ + "log", + "--no-color", + "--name-status", + `--format=${COMMIT_START}%H${SEP}%ct${SEP}%s${SEP}%b${BODY_END}`, + ]); + + const commits = []; + // newPath -> oldPath rename map (last writer wins; good enough for linear chains). + const renameMap = new Map(); + // path -> array of commit indices that touched it (as add/modify/rename target). + const byPath = new Map(); + + const chunks = raw.split(COMMIT_START); + for (const chunk of chunks) { + if (!chunk.trim()) continue; + const bodyEnd = chunk.indexOf(BODY_END); + if (bodyEnd === -1) continue; + const head = chunk.slice(0, bodyEnd); + const [sha, ct, subject, ...bodyParts] = head.split(SEP); + const body = bodyParts.join(SEP); + const nameStatusBlock = chunk.slice(bodyEnd + 1); + + const files = []; + for (const line of nameStatusBlock.split("\n")) { + const t = line.trim(); + if (!t) continue; + const cols = t.split("\t"); + const statusRaw = cols[0]; + if (!statusRaw) continue; + const status = statusRaw[0]; // A/M/D/R/C/T + if ((status === "R" || status === "C") && cols.length >= 3) { + const oldPath = cols[1]; + const newPath = cols[2]; + files.push({ status, path: newPath, oldPath }); + renameMap.set(newPath, oldPath); + } else if (cols.length >= 2) { + files.push({ status, path: cols[1] }); + } + } + + const idx = commits.length; + commits.push({ + sha, + time: Number(ct) * 1000, + subject: subject ?? "", + body: body ?? "", + files, + }); + for (const f of files) { + if (f.status === "D") continue; + if (!byPath.has(f.path)) byPath.set(f.path, []); + byPath.get(f.path).push(idx); + } + } + + return { commits, renameMap, byPath }; +} + +// Follow renames backward to collect every historical path this file lived at. +function historicalPaths(currentPath, renameMap) { + const paths = new Set([currentPath]); + let p = currentPath; + let guard = 0; + while (renameMap.has(p) && guard < 100) { + p = renameMap.get(p); + if (paths.has(p)) break; + paths.add(p); + guard += 1; + } + return paths; +} + +function countTestCases(absPath) { + try { + const src = readFileSync(absPath, "utf8"); + let n = 0; + for (const line of src.split("\n")) { + if (/^\s*(it|test)\s*(\.\w+)?\s*\(/.test(line)) n += 1; + } + return n; + } catch { + return 0; + } +} + +function fmtMs(ms) { + if (ms == null) return "n/a"; + if (ms >= 1000) return `${(ms / 1000).toFixed(1)}s`; + return `${ms}ms`; +} + +// --- Main -------------------------------------------------------------------- +function main() { + const started = Date.now(); + const timings = loadTimings(); + const quarantinePaths = loadQuarantinePaths(); + const { commits, renameMap, byPath } = loadHistory(); + + const tracked = git(["ls-files"]).split("\n").filter(Boolean); + const testFiles = tracked.filter(isTargetTestFile).sort(); + + const rows = []; + for (const file of testFiles) { + const pkgRoot = packageRootOf(file) ?? "packages/dashboard"; + const paths = historicalPaths(file, renameMap); + + // Gather candidate commit indices across all historical paths, dedup. + const idxSet = new Set(); + for (const p of paths) for (const i of byPath.get(p) ?? []) idxSet.add(i); + + const classified = []; + const evidence = []; + for (const i of [...idxSet].sort((a, b) => b - a)) { + const c = commits[i]; + const fileEntry = c.files.find((f) => paths.has(f.path) && f.status !== "D"); + if (!fileEntry) continue; + const status = fileEntry.status; + const touchedSource = c.files.some( + (f) => f.status !== "D" && isSourceFileInPackage(f.path, pkgRoot), + ); + const cls = classifyCommit({ subject: c.subject, body: c.body, status, touchedSource }); + classified.push(cls); + evidence.push({ + sha: c.sha.slice(0, 9), + time: c.time, + subject: c.subject, + status, + touchedSource, + category: cls.category, + weight: cls.weight, + signals: cls.signals, + }); + } + + const durationMs = timings.has(file) ? timings.get(file) : null; + const testCount = countTestCases(resolve(repoRoot, file)); + const quarantined = [...paths].some((p) => quarantinePaths.has(p)); + + const score = scoreFile({ commits: classified, durationMs, testCount, quarantined }); + + const times = evidence.map((e) => e.time).filter(Boolean); + const firstSeen = times.length ? Math.min(...times) : null; + const lastSeen = times.length ? Math.max(...times) : null; + const ageDays = firstSeen ? Math.round((Date.now() - firstSeen) / 86_400_000) : null; + + rows.push({ + file, + package: pkgRoot, + ...score, + ageDays, + lastTouched: lastSeen ? new Date(lastSeen).toISOString().slice(0, 10) : null, + evidence: evidence.slice(0, 6), // most-recent commits as the "why" + }); + } + + // Rank: slow + low-value first. + rows.sort((a, b) => b.deletionPriority - a.deletionPriority || a.valueScore - b.valueScore); + + const summary = { + total: rows.length, + deleteCandidates: rows.filter((r) => r.recommendation === "delete").length, + reviewCandidates: rows.filter((r) => r.recommendation === "review").length, + keep: rows.filter((r) => r.recommendation === "keep").length, + safeDeletes: rows.filter((r) => r.safeDelete).length, + withTiming: rows.filter((r) => r.durationMs != null).length, + quarantined: rows.filter((r) => r.quarantined).length, + }; + + const artifact = { + generatedAt: new Date().toISOString(), + heuristic: true, + note: "HEURISTIC, not ground truth. Do not auto-delete from this file. See docs/test-value-audit.md methodology + caveats.", + weights: WEIGHTS, + negativeKeywords: NEGATIVE_KEYWORDS, + timingsCapturedFrom: "scripts/test-timings.json", + summary, + rows, + }; + + const jsonPath = resolve(repoRoot, "docs/test-value-audit.json"); + writeFileSync(jsonPath, JSON.stringify(artifact, null, 2) + "\n"); + + if (!JSON_ONLY) writeMarkdown(rows, summary); + + // Console: top 15 rows. + const top = rows.slice(0, 15); + const tbl = top.map((r, i) => ({ + "#": i + 1, + file: r.file.replace(/^packages\//, "").length > 58 ? "…" + r.file.slice(-57) : r.file.replace(/^packages\//, ""), + tests: r.testCount, + dur: fmtMs(r.durationMs), + score: r.valueScore, + rec: r.recommendation, + })); + console.log(`\nTest Value Audit — ${rows.length} files analyzed in ${((Date.now() - started) / 1000).toFixed(1)}s`); + console.log( + `delete=${summary.deleteCandidates} review=${summary.reviewCandidates} keep=${summary.keep} ` + + `safeDelete=${summary.safeDeletes} withTiming=${summary.withTiming}\n`, + ); + console.log("Top 15 deletion candidates (slow + low value first):"); + console.table(tbl); + console.log(`\nArtifacts:\n ${relative(repoRoot, jsonPath)}`); + if (!JSON_ONLY) console.log(` docs/test-value-audit.md`); +} + +function recEmoji(rec) { + return rec === "delete" ? "delete" : rec === "review" ? "review" : "keep"; +} + +function writeMarkdown(rows, summary) { + const top = rows.slice(0, TOP_N); + const L = []; + L.push("# Test Value Audit"); + L.push(""); + L.push(`> Generated by \`scripts/test-value-audit.mjs\` on ${new Date().toISOString()}.`); + L.push(">"); + L.push("> **This is a HEURISTIC, not ground truth.** It is an evidence base for a human"); + L.push("> deletion decision. The script does **not** delete any tests. See Methodology + Caveats."); + L.push(""); + L.push("## Summary"); + L.push(""); + L.push(`- Files analyzed: **${summary.total}**`); + L.push(`- With timing data: **${summary.withTiming}**`); + L.push(`- \`delete\` candidates (valueScore ≤ 0 or quarantined): **${summary.deleteCandidates}**`); + L.push(`- \`review\` candidates (0 < valueScore ≤ 3): **${summary.reviewCandidates}**`); + L.push(`- \`keep\` (valueScore > 3): **${summary.keep}**`); + L.push(`- "Safe delete" under the deletion-ratchet (zero positive evidence + churn/quarantine): **${summary.safeDeletes}**`); + L.push(`- In quarantine ledger (current or historical): **${summary.quarantined}**`); + L.push(""); + L.push("## Methodology"); + L.push(""); + L.push("For every audited test file we run a single whole-history `git log --name-status`"); + L.push("pass and classify each commit that touched the file (renames followed backward):"); + L.push(""); + L.push("**Positive signal** (encoded/caught a real bug):"); + L.push("- `fix(...)`/`fix:` subject **with** a sibling source change in the same package (+3)"); + L.push("- `fix(...)`/`fix:` subject alone (+2)"); + L.push("- `## Symptom Verification` regression marker in the commit body (+3, FN-5893)"); + L.push("- test file first **added** together with source (+2), or added alone (+1)"); + L.push("- a plain test+source co-change modify (+1.5)"); + L.push(""); + L.push("**Negative signal** (low value / churn):"); + L.push("- subject/body mentions " + NEGATIVE_KEYWORDS.map((k) => `\`${k}\``).join(", ") + " (−3)"); + L.push("- a modify that touched **only** the test file, no source (−1)"); + L.push("- appears in `scripts/lib/test-quarantine.json` history (−5)"); + L.push(""); + L.push("The per-file **valueScore** is the sum of commit weights (plus the quarantine penalty)."); + L.push("**deletionPriority** = `durationMs / (1 + max(0, valueScore))` with a small boost for"); + L.push("net-negative files — so the ranking surfaces **slow AND low-value** files first"); + L.push("(most CI time saved per unit of lost signal). Recommendation: `delete` (≤0), `review`"); + L.push("(≤3), else `keep`."); + L.push(""); + L.push("## Caveats (read before deleting anything)"); + L.push(""); + L.push("- **Heuristic, not truth.** A quiet, never-modified test can still be load-bearing;"); + L.push(" a high-churn test can still be valuable. Use this to *prioritize human review*."); + L.push("- **`git log --follow` / rename limits.** Renames are followed only through linear"); + L.push(" `R`/`C` name-status chains; squash-merges collapse multi-commit history into one"); + L.push(" subject, so per-commit signal is lost for squashed work (this repo defaults to"); + L.push(" squash merges — a major reason to treat scores as lower bounds on value)."); + L.push("- **Subjects lie.** `fix(...)` is trusted as a positive even if the test was unrelated;"); + L.push(" conversely a real bug fixed under a `feat(...)`/`FN-` subject without source co-change"); + L.push(" may be undercounted."); + L.push("- **Timing is a snapshot** from `scripts/test-timings.json`; files with no entry show"); + L.push(" `n/a` duration and get deletionPriority 0 (cost unknown, not necessarily cheap)."); + L.push("- **Not a green light.** Deleting a gate test still requires the gate-eviction process"); + L.push(" (AGENTS.md). \"Safe delete\" only flags files that meet the ratchet's churn/quarantine bar."); + L.push(""); + L.push(`## Top ${top.length} deletion candidates`); + L.push(""); + L.push("| # | File | Tests | Duration | Value | Priority | Rec | Why (recent commits) |"); + L.push("|---|------|------:|---------:|------:|---------:|-----|----------------------|"); + top.forEach((r, i) => { + const why = r.evidence + .slice(0, 3) + .map((e) => { + const subj = (e.subject || "").replace(/\|/g, "\\|").slice(0, 48); + return `\`${e.sha}\` ${subj} _(${e.signals.join(",") || "neutral"})_`; + }) + .join("
"); + const flags = []; + if (r.quarantined) flags.push("quarantined"); + if (r.safeDelete) flags.push("safe-delete"); + const rec = recEmoji(r.recommendation) + (flags.length ? ` (${flags.join(", ")})` : ""); + L.push( + `| ${i + 1} | \`${r.file}\` | ${r.testCount} | ${fmtMs(r.durationMs)} | ${r.valueScore} | ${r.deletionPriority} | ${rec} | ${why || "_no git evidence_"} |`, + ); + }); + L.push(""); + L.push("### One-line recommendations"); + L.push(""); + top.forEach((r, i) => { + let rationale; + if (r.recommendation === "delete") { + rationale = r.quarantined + ? "in quarantine ledger — delete per ratchet once expiry passes" + : r.positiveCount === 0 + ? "no positive (bug-encoding) signal in history; pure churn — strong delete candidate" + : "net-negative value (churn outweighs signal) — delete candidate"; + } else if (r.recommendation === "review") { + rationale = "thin positive signal; confirm it asserts a real invariant before trimming"; + } else { + rationale = "carries real bug-fix / source-coupled signal — keep"; + } + if (r.durationMs != null && r.durationMs >= 1000 && r.recommendation !== "keep") { + rationale += ` (slow: ${fmtMs(r.durationMs)} — high CI time payoff)`; + } + L.push(`${i + 1}. \`${r.file}\` — **${r.recommendation}**: ${rationale}`); + }); + L.push(""); + + writeFileSync(resolve(repoRoot, "docs/test-value-audit.md"), L.join("\n") + "\n"); +} + +main();