Skip to content

work-items(triage): "Apply outcome" step never removes the raw-intake marker — literal execution stacks status:ready onto needs-triage and re-triages forever #488

Description

@kyle-sexton

Lane: triage · Category: bug (behavioral — silent-loop-kill class)

Triggering example

2026-07-19 triage loop cycle. Applying an outcome to each item (step 5), the natural literal action is "apply labels + the autonomous-eligible/human-gated role label" per the "Apply outcome" table. Nothing in step 5 — or anywhere in the workflow — says to remove the raw-intake marker (status: needs-triage, or this repo's priority: needs-triage). A pre-flight review caught that stacking status: ready + role label on top of needs-triage leaves the item in the attention-view raw bucket, so the very next cycle re-fetches and re-triages it — forever.

Observed vs expected

  • Observed: the triage state machine describes transitions (raw → verified → briefed → autonomous-eligible / human-gated) and the "Triage states" table marks raw as "unlabeled or status: needs-triage", but the mechanical label edit that clears the raw marker is never stated. The "Apply outcome" table lists what to add for each outcome; it never says to remove needs-triage. The attention view (bucket 1 "unlabeled", bucket 2 "status: needs-triage") re-selects any item whose marker was not cleared. Result: an operator following step 5 literally produces items that are simultaneously status: ready and needs-triage, re-entering the queue indefinitely.
  • Expected: step 5 (and/or the "Apply outcome" table) states explicitly that every terminal outcome removes the raw-intake marker — normalization is a replacement, not an addition. Leaving a raw-intake label alongside a briefed/ready/needs-human label is a contradiction the skill should forbid. Ideally a closing invariant: "after applying any outcome, the item carries no needs-triage/raw marker."

Category

bug (behavioral). Highest-consequence failure mode: silent infinite re-triage of the same items, wasting every subsequent cycle — the same class of silent-loop failure #480 cites (a mis-worded rule quietly killing a lane). Priority weighted high per the week directive (pipeline correctness).

Note

Distinct from #459 (wait-gate), #478 (routing-rule absorption), #486 (authorship-based scope boundary). This is specifically the missing "clear the raw marker on outcome" mechanic. A concurrent process labeled ~13 more items priority: needs-triage during this cycle, so a re-triage loop here would compound fast.

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: highSignificant impact, or blocks an imminent release; staff this cycle.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions