Problem
When a baseline file is active, the terminal shows only non-suppressed findings. A user seeing "0 findings" cannot determine whether the codebase is clean or whether 40 findings are suppressed. This undermines trust in green CI output — "passing" might mean "genuinely clean" or "heavily suppressed."
Scope
Add suppressed finding count to:
- Terminal summary line
- JSON
ScanReport.summary
- SARIF
inlineExternalProperties.externalizedProperties
No changes to finding content, exit codes, or fail-on behavior.
Acceptance Criteria
- Terminal (with active baseline):
3 findings (12 suppressed by baseline)
- Terminal (no baseline):
3 findings (no suppressed mention, no clutter)
- JSON
summary gains suppressed: number field (0 when no baseline)
- SARIF adds
suppressedCount to inlineExternalProperties.externalizedProperties
- Expected exit code: unchanged
- Expected JSON diff:
ScanReport.summary adds suppressed: number
- Unit test: mock baseline suppressing 2 of 5 findings; assert
summary.suppressed === 2
- Fixture test: golden JSON diff shows
suppressed field
Non-goals
- Listing suppressed findings inline (separate issue)
- Changing what counts as suppressed
- Any change to action.yml inputs/outputs
QA Checklist
Risk
Low — additive output change. New JSON key on summary; existing consumers ignore unknown keys.
Problem
When a baseline file is active, the terminal shows only non-suppressed findings. A user seeing "0 findings" cannot determine whether the codebase is clean or whether 40 findings are suppressed. This undermines trust in green CI output — "passing" might mean "genuinely clean" or "heavily suppressed."
Scope
Add suppressed finding count to:
ScanReport.summaryinlineExternalProperties.externalizedPropertiesNo changes to finding content, exit codes, or fail-on behavior.
Acceptance Criteria
3 findings (12 suppressed by baseline)3 findings(no suppressed mention, no clutter)summarygainssuppressed: numberfield (0 when no baseline)suppressedCounttoinlineExternalProperties.externalizedPropertiesScanReport.summaryaddssuppressed: numbersummary.suppressed === 2suppressedfieldNon-goals
QA Checklist
summary.suppressedis 0 when no baselinesummary.suppressedis correct count when baseline suppresses findingssuppressedCountin metadata--fail-on)pnpm testpassesRisk
Low — additive output change. New JSON key on
summary; existing consumers ignore unknown keys.