Why decisions live in git
Why does Vulnlog store triage decisions in a YAML file in your repository, instead of a scanner’s ignore file or a vulnerability management platform?
The decision is the valuable part
A scanner finding is cheap: every scan reproduces it.
The expensive part is the human work that follows: understanding the finding, deciding whether it affects the product, and standing behind that decision months later.
Scanner ignore files throw that work away.
A line in .trivyignore records that a finding is silenced, but not who decided, when, why, or for which release.
When the next engineer, an auditor, or a customer asks, the analysis has to be done again.
A Vulnlog file keeps the finding, the analysis, the verdict, and the resolution together in one reviewable place. The suppression files are generated from it, so silencing a finding without a recorded decision is not possible.
Git already solves the hard problems
Storing the file in the repository means the surrounding questions are answered by tools you already trust:
- Review
-
A triage decision changes in a pull request, next to the code it concerns, with the same review process as any other change.
- Attribution and history
-
git logandgit blameshow who recorded which decision and when. The file itself stays free of audit boilerplate; the history is the audit trail. - Branching
-
Release branches carry their own decisions. A vulnerability can be
not affectedon one branch andaffectedon another, and both are recorded (see Organize files across branches). - Availability
-
The decisions are wherever the code is: on every clone, in every fork, readable offline, with no service dependency and no account.
No platform between you and your data
Vulnlog is a plain-text format plus a CLI that transforms it. There is no server, no database, and no vendor holding the history. For an open source project this means contributors and downstream users can read every decision directly on GitHub; for a company it means the audit trail survives any tooling change.
Consequences
-
Treat the Vulnlog file like code: change it through pull requests, protect it with the same branch rules.
-
Commit messages matter; they become part of the decision history.
-
Generated artifacts (suppression files, reports) are disposable and reproducible; the YAML file is the single source of truth.
Related
-
The Vulnlog data model describes what exactly is recorded.
-
The Vulnlog file format defines the file’s contract.
-
Triage a new scanner finding puts the model to work.