Skip to content

pm duplicates silently accepts --status all and scans zero items instead of rejecting it or selecting all statuses #930

Closed

Description

@unbraind

Summary

On @unbrained/pm-cli 2026.8.7, pm duplicates --status all exits successfully but silently scans zero items. The equivalent unfiltered command scans the complete tracker. This creates a false clean duplicate-audit result in the natural all-status workflow.

This is a core command issue and reproduces with project extensions enabled or disabled.

Reproduction

In a workspace containing 85 items across lifecycle statuses:

$ pm --version
2026.8.7

$ pm duplicates --status all --threshold 0.82 --limit 100
count: 0
cost:
  item_count: 0
  candidate_pairs: 0
  scored_pairs: 0

$ pm duplicates --threshold 0.82 --limit 100
count: 0
cost:
  item_count: 85
  candidate_pairs: 1490
  scored_pairs: 1490

$ pm duplicates --status open,in_progress,blocked,closed,canceled,draft --threshold 0.82 --limit 100
count: 0
cost:
  item_count: 85
  candidate_pairs: 1490
  scored_pairs: 1490

The result cluster count happens to be zero in this workspace, but the cost.item_count evidence shows that the --status all invocation did not inspect the tracker.

Contract inconsistency

pm contracts --command duplicates --json describes status as project-configurable and states:

Unknown statuses are rejected at runtime with a did-you-mean hint.

all is not one of this workspace's configured statuses, yet it is accepted and treated as a literal filter that matches nothing. By comparison, pm list --status all explicitly supports the natural all-status spelling.

Expected behavior

Either behavior would be safe and internally consistent:

  1. Treat --status all as the explicit all-status alias, matching pm list; or
  2. Reject all as an unknown status with a non-zero exit and remediation to omit --status or enumerate configured statuses.

The current exit-0 empty scan is unsafe because it looks exactly like a successful full-tracker duplicate check.

Duplicate search

Searched all open and closed issues for:

  • pm duplicates --status all
  • duplicates unknown status
  • duplicates status filter
  • zero items duplicates

Reviewed adjacent duplicate-command issues #705, #709, #739, #830, and #871. None covers silent zero-item scans for the all status value.

Activity

  1. coderabbitai commented on Aug 7, 2026

    @coderabbitai
    🔗 Related PRs

    #310 - Fix status-all context filters [merged]
    #545 - SDK contract integrity: workspace paths, dependency truth, validation, and MCP parity [merged]
    #712 - SDK context integrity: atomic Plans, batch similarity, sparse settings, and tombstones [merged]
    #753 - feat(sdk): universal context, concurrency, and discovery primitives [merged]
    #795 - SDK output budgets, exact dependency accounting, and portable merge contracts [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  2. unbraind commented on Aug 7, 2026

    @unbraind
    OwnerAuthor

    Canonical PM item: pm-sy24w2. This preserves the all-status duplicate check, reproduction, typed links to the earlier package-owned all-status fix and list/search contract, acceptance criteria, and future verification evidence.

  3. unbraind commented on Aug 8, 2026

    @unbraind
    OwnerAuthor

    Resolved by #940. Duplicate detection now supports truthful all-status scans plus bounded status/type/tag filters, canonical filter receipts, and fail-closed empty-filter validation. Full lineage and verification: pm-sy24w2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions