BACK-465 - Detect and warn about duplicate task IDs#632
Conversation
…MCP interfaces When two git branches independently create tasks with the same numeric ID and are then merged, the duplicate is silently dropped. This adds detection and user-facing warnings across all three surfaces: - Web browser: amber dismissible banner listing duplicate groups with a "Copy AI fix prompt" button that provides a ready-to-use prompt - TUI board: 15-second startup warning in the footer listing affected IDs - MCP task_list: prepends a⚠️ warning block with the AI cleanup prompt Detection runs against the raw filesystem task list (before Map dedup) so duplicates aren't lost before they can be reported. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Context: how this actually happened I was working on a separate project that uses Backlog.md for task management with multiple AI agents. The project has a GitHub remote and I work on it from one machine. I usually use Parallel Code, but briefly used Conductor which updates the origin vs. Paralell Code updating local main. The exact sequence that caused the duplicates:
Why it went unnoticed for a while: Backlog.md's How I eventually noticed: I opened The same situation affected Why Backlog.md's existing dedup-prevention didn't catch it: Backlog.md already has a |
|
The failing test ( Our changes touch: The test itself deletes a file on disk and then waits for a filesystem watch event to propagate within a platform-dependent timeout. It failed at 5026ms, which is right at the timeout boundary — a classic sign of CI environment I/O latency rather than a code regression. The test passes consistently when run locally and in isolation ( |
Summary
task_listdetectDuplicateTaskIds(tasks)+buildDuplicateCleanupPrompt(groups)insrc/utils/duplicate-detection.tsWeb browser interface
TUI board
MCP
task_list⚠️ WARNINGblock to the tool output including the AI cleanup prompt when duplicates existTest plan
src/test/duplicate-detection.test.tscover: empty input, all-unique, two duplicates, multiple groups, case-insensitivity, 3-way duplicates, prompt contentbunx tsc --noEmitpassesbiome checkpasses on all changed filesbun testpasses (1 pre-existing flaky failure inparallel-loading.test.tsunrelated to this change)🤖 Generated with Claude Code