Skip to content

bug: surface unlabelled open issues to grooming intake #325

@joryirving

Description

@joryirving

Bug

After the agent queue fix, unlabelled/no-status issues are correctly excluded from normal worker queues. That keeps worker queues from claiming random or noisy issues, but it also creates a blind spot: open issues with no status/* label may never be surfaced to grooming.

Problem

Current desired worker behavior:

  • Worker queues return actionable work only.
  • No-status/unlabelled issues are not claimable worker tasks.
  • Renovate dashboards and other no-status noise should not show up as worker tasks.

But grooming needs an intake path for open issues that have no status/* label. Otherwise they can remain invisible forever and never get classified into status/backlog, status/ready, or another terminal/non-work state.

Desired model

worker queue = actionable work
groomer intake = triage/unclassified work

Unlabelled issues should be surfaced to the groomer, not returned to /api/agents/{agentName}/queue by default.

Desired behavior

Add a groomer-only intake path for open issues with no status/* label. Possible API shapes:

GET /api/issues?status=none
GET /api/issues?untriaged=true
GET /api/issues/grooming-intake

The exact shape is flexible, but the contract should be explicit: this is for grooming/intake, not worker claiming.

Implementation notes

  • Keep default agent worker queues unchanged.
  • Do not re-add no-status issues to /api/agents/{agentName}/queue by default.
  • Update scheduled grooming / project_groom.py / backlog grooming integration so grooming sees both:
    • status/backlog issues
    • open no-status/unlabelled issues
  • Re-check live GitHub state before mutation.
  • Skip closed issues.
  • Skip Renovate/dependency-dashboard issues unless explicitly included.
  • Bound the number of untriaged issues processed per run.
  • Do not claim these issues as worker work.

Grooming outcomes

For open no-status issues, grooming should be able to classify into:

  • actionable -> status/ready + appropriate lane
  • needs context/decomposition -> status/backlog + reason/report
  • closed -> status/done if appropriate
  • noise/non-work -> leave unlabelled or apply an explicit excluded/non-work label if that exists

Acceptance criteria

  • An open issue with no status/* label appears in grooming intake.
  • The same issue does not appear in normal/escalated worker queues by default.
  • Grooming can promote a no-status issue to status/ready or status/backlog.
  • Renovate Dashboard issues do not get promoted accidentally.
  • Tests cover no-status grooming intake separately from worker queues.
  • Existing worker queue behavior from bug: agent queue excludes issues with status set (only returns null-status items) #291 remains intact.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions