Skip to content

tri triage calls everything it does not recognise actionable, so blocked work is advertised as available #2156

Description

@gHashTag

tri triage currently sorts open issues into three classes — journal, plan, actionable — and actionable is the default: anything that does not look like a journal entry lands there. That default is the defect.

Three kinds of issue cannot be picked up and finished by a loop, yet all three are counted as available work:

  • one waiting on hardware, an upstream release, or a human decision;
  • one asking a research question, where "done" is a judgement and not a check;
  • one that duplicates or has been superseded by another.

So the reported "~26 actionable" is an upper bound being read as an estimate, and a loop that takes its next item from that list will periodically pick something it cannot finish, and then either stall or misreport.

Required classification

Every entry must be classified as exactly one of, in this order:

actionable   a defect or change with a checkable completion condition
research     an open question; done is judgement, not a check
tracking     journal entry, plan or epic; records or aggregates, never closes
blocked      needs something outside the tool: hardware, upstream, a human, a credential
duplicate    superseded, obsolete, or the same subject as an earlier issue

The ordering is part of the requirement. blocked must be tested before actionable, so that a blocked defect is never advertised as available. duplicate is tested last, because a duplicate that is also blocked is more usefully reported as blocked.

Autoclose is forbidden

The tool prints and exits. It must not close, label, or otherwise mutate the tracker, and no output of it licenses a bulk action. 80% of this tracker is journal records with no completion condition; a bulk close driven by a title regex would destroy the record while claiming to tidy it. The classification is a composition estimate, never a verdict on an individual issue, and the output must say so in as many words.

Acceptance

  • Five classes, matched in the stated order, first match wins.
  • Every open issue receives exactly one class and a machine-readable reason for it.
  • --json output carries counts for all five classes even when a class is empty, so that an empty class is visibly zero rather than silently absent.
  • No mutation of any kind.

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