Repository navigation
quality-workflow v0.2.1 — honor skylos suppressions
Bug fix: suppressed findings no longer inflate active counts
The bug
v0.2.0's skylos adapter ingested every finding in skylos's JSON output without checking the reason field. When skylos honors an inline # skylos: ignore directive, it still emits the finding in JSON — just with "reason": "inline ignore comment". The adapter counted these as active, so a project with 54 honored suppressions snapshotted as 180 active findings when only 126 were genuinely active.
This was surfaced while dogfooding in now-playing during an autopilot run — the sql-injection-history-queries feature appeared to need work, but the suppression at queries.py:75 was already correct and skylos already honored it; the snapshot just didn't reflect that.
The fix
QualityFindinggainssuppressed: boolandsuppression_reason: Optional[str]fields (default False/None — backward compatible).skylos_adapterreadsitem.get("reason"). Non-empty →suppressed=True+ stored reason.fallow_adapterexplicitly leavessuppressed=False(fallow doesn't surface per-finding suppression state; its// fallow-ignore-next-linedirectives drop findings from JSON output entirely).QualitySnapshotgains.active_findings()/.suppressed_findings()helpers.SnapshotDiffgains.active_new/.active_resolved/.active_persistingproperties.
Snapshots retain BOTH active and suppressed findings, so a finding that gains or loses its suppression between snapshots is observable as movement. Only the headlines and delta tables in /quality-audit filter to active-only.
Tests
- 8 new tests (4 adapter, 4 snapshot) covering inline-ignore detection, missing-reason → active, empty-reason → active edge case, mixed payloads, helper filtering, roundtrip preservation, and active-view diffing.
- 73/73 total tests passing.
Backward compatibility
- Older snapshot JSONs load without modification —
QualityFinding.from_dict()defensively drops unknown keys. - Call sites that don't pass
suppressedkeep working (defaults match prior behavior).
To install
/plugin update quality-workflow@schuettc-claude-code-plugins
Then re-run /quality-audit to take a snapshot under v0.2.1. Active counts should drop dramatically in any project that has been disciplined about inline suppressions.
PR: #12