Skip to content

feat: auditable finding suppressions and enforced security invariants - #5

Merged
hlinor-systems merged 2 commits into
mainfrom
agent/security-invariants
Aug 19, 2026
Merged

feat: auditable finding suppressions and enforced security invariants#5
hlinor-systems merged 2 commits into
mainfrom
agent/security-invariants

Conversation

@hlinor-systems

Copy link
Copy Markdown
Collaborator

What changed

  • Enforce adversarial security invariants through the corpus manifest and mutation-based checks.
  • Move invariant helpers into test-only code and add full-repository build coverage in CI.
  • Add fail-closed finding suppressions with strict schema validation, expiry, reason, duplicate, path, symlink, and unknown-finding checks.
  • Preserve suppressed findings in JSON, text, and SARIF output, using SARIF result.suppressions with an auditable justification and expiry metadata.
  • Keep suppressed findings excluded from --fail-on while retaining their evidence in generated reports.

Why

Security and compliance users must be able to distinguish an accepted, time-bounded exception from an absent finding. The adversarial corpus must also verify the declared security contract rather than only exercising decorative metadata.

Validation

  • gofmt -l .
  • go build ./...
  • go vet ./...
  • go test -race ./...
  • Pinned external benchmark: 6/6 cases passed with exact manifest refs; source_acp005: 0 for all cases.
  • Demo fixture, SARIF fixture, suppression fail-closed paths, and deterministic output verified.

@hlinor-systems
hlinor-systems marked this pull request as ready for review August 19, 2026 17:36
@hlinor-systems
hlinor-systems merged commit fa3b29b into main Aug 19, 2026
7 checks passed
@hlinor-systems
hlinor-systems deleted the agent/security-invariants branch August 19, 2026 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants