cc-triage: featureless vs feature-bearing #2267

Paste a Claude Code changelog. See whether cc-triage.mjs graduates it (no LLM, no parse_failed) or routes it to the extractor — using the exact FEATURE_HINT_RE the fix ships.

Changelog bullets

Verdict

    A snapshot graduates as featureless: true only when no bullet matches a capability hint. Conservative by design — anything ambiguous routes to the LLM and sentinels per the existing M134 guard.
    ✗ before #2267 Featureless version → LLM returns [] → treated as failure → parse_failed: true forever → re-filed as "manual triage needed" every run (#2203 / #2227 / #2254; 2.1.159 + 2.1.156 in all three).
    ✓ after #2267 No capability bullet → graduates as featureless: true with no LLM call. Stuck sentinels (2.1.156/159/165/167) self-heal on the next normal run. The empty-array failure path stays reserved for the genuine burp.