Answer architecture round 1: 0 🔴, 5 🟡; a job of its own that only releases wait for, filing each vulnerability atop the plan by a pull request, a recorded decision, one gate list, and Renovate on the go run tools

This commit is contained in:
2026-10-14 12:53:20 +02:00
committed by Lillem4n
parent 3d0d7ef180
commit 273dd45128
8 changed files with 205 additions and 17 deletions
+11 -5
View File
@@ -1170,7 +1170,7 @@ internal/rows/ a table's rows: the TSV, the options proved over it, the links b
data/ the shipped modules, each a Go package embedding its categories (JSON, and a TSV per table) and its manifest; and Modules, which lists them
data-import/ the scripts that rebuild each sourced table (see DATA-LICENSES.md), and the modules they share
docs/ the decision log, the register research behind the shipped data, the survey of other libraries, panels' scores and rulings on how readable the code is, and what each chunk cost an agent to read
release-tooling/ the release CI publishes from the changelog heading, and the binaries, packages, image and package repositories built for it
release-tooling/ the release CI publishes from the changelog heading, and the binaries, packages, image and package repositories built for it, and the filing of known vulnerabilities
testdata/ the pinned shipped shape (see Versioning)
```
@@ -1219,14 +1219,20 @@ check and the release tooling's tests:
docker build . # latest
docker build --build-arg GO_VERSION=1.22.12 --target portable . # lowest supported
GO_VERSION=1.22.12 docker compose run --rm test # the same tests, without the image build
docker build --no-cache-filter vulnerabilities --target vulnerabilities . # known vulnerabilities
docker build --no-cache-filter vulnerabilities --target vulnerability-report --output /tmp/fejkdata-vulnerabilities .
python3 release-tooling/file_vulnerabilities.py /tmp/fejkdata-vulnerabilities/report.json todo.md
```
The last line runs `govulncheck` over the Go release the gate builds with and the module's
The last two lines run `govulncheck` over the Go release the gate builds with and the module's
requirements, and fails on any known vulnerability, whether or not fejkdata calls it: the
release binaries carry that Go release, and image scanners flag it. CI runs it on every pull
request and push, and daily, and a release waits for it. A failure is fixed by raising
`GO_VERSION`, which Renovate opens a pull request for.
request and push, and daily; GitHub pauses the daily run after 60 days with no activity in
the repository. It is not part of the gate: a pull request merges while it fails, but no
release is cut. Each vulnerability it finds is filed as a `security` item atop the next
release in `todo.md`; on `main` and in the daily run CI opens a pull request from the branch
`vulnerabilities` with that item, unless the branch exists. The fix is raising
`GO_VERSION`, which Renovate opens a pull request for; a failure that names no
vulnerability is vuln.go.dev failing to answer.
A change to Go code, `release-tooling/`, the `Dockerfile`, `.dockerignore`, the licence
files or either workflow also runs the package-repository checks. They build the release