Files
fusion/docs/triage-duplicate-detection-postmortem.md
Fusion (runfusion.ai) fc8654800d feat(FN-4774): complete Step 1 — add duplicate-detection post-mortem
Fusion-Task-Id: FN-4774
Fusion-Task-Lineage: f3b81550-fb23-441e-aee7-44ffec63d03d
2026-05-16 11:55:39 -07:00

37 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Triage Duplicate Detection Post-Mortem (FN-4774)
## Summary
Between 14:29 and 16:05 on 2026-05-16, three independent tasks were filed and executed for the same defect: rebase-merge done-task diff truncation in `packages/dashboard/src/routes/register-session-diff-routes.ts` (with related tests in `packages/dashboard/src/__tests__/routes-diff.test.ts`). This duplicated implementation and review effort.
## Timeline
- **FN-4726**
- Created: **14:29**
- Merged: **14:52**
- GitHub tracking: **#400**
- Scope touched: `register-session-diff-routes.ts`, `routes-diff.test.ts`
- **FN-4734**
- Created: **14:54**
- Finalization: **15:33** (auto no-op finalize)
- GitHub tracking: **#414**
- Scope touched: same target files
- **FN-4741**
- Created: **15:04**
- Merged: **16:05**
- GitHub tracking: **#424**
- Scope touched: same target files
## Root cause
1. **Triage duplicate scan blind spot:** `fn_task_list` intentionally excludes `done` tasks (`tasks.filter((t) => t.column !== "done")` in `packages/engine/src/triage.ts`), so recently completed fixes were invisible to the duplicate check.
2. **No triage keyword search tool:** Triage had no exposed keyword search over full task history (including done/archived), despite `TaskStore.searchTasks(...)` already existing and backed by FTS5.
3. **GitHub issue duplication gap:** Tracking issue creation did not include a check for existing closed issues covering the same files/keywords.
## Decision
1. **Add `fn_task_search` triage tool** that wraps `store.searchTasks(...)` with defaults that include historical tasks (`includeArchived: true`, done tasks included by default).
2. **Strengthen duplicate-check prompt guidance** so triage must run both list and keyword search (multiple phrases from title/description/file paths/symptoms/symbol names), then inspect likely matches before filing.
3. **Record GitHub-side dedup as follow-up work** (new task) rather than expanding this fixs scope.
## Acceptance-criteria mapping
1. **Document what happened and why:** covered by timeline + root-cause analysis above.
2. **Close triage duplicate-detection gap:** addressed by adding `fn_task_search` and prompt instructions to query done/archived history.
3. **Preserve scope discipline:** GitHub-side dedup is explicitly deferred into a follow-up task instead of being implemented here.