Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
99f2fc6
ci(deps): run the OSS Index audit in one job that can prove it scanned
astubbs Aug 10, 2026
0244782
ci(deps): fix two renderer bugs review found in the audit guard
astubbs Aug 10, 2026
1c2a6cc
ci(deps): qualify the issue reference in the audit workflow header
astubbs Aug 10, 2026
408c8a9
docs(inflight): record that automatic dependency submission is failing
astubbs Aug 10, 2026
6ad8d16
ci(review): grant actionlint and the audit scripts, and pay the revie…
astubbs Aug 11, 2026
949837d
docs(inflight): drop the grants entry instead of narrating that it cl…
astubbs Aug 11, 2026
ebeee0d
docs(inflight): the managed dependency submission cannot work here
astubbs Aug 11, 2026
2892662
Merge master: move this branch's CI entries into docs/ci.md
astubbs Aug 11, 2026
fe95c93
docs(inflight): the review forfeit is a blocking red, not a meaningle…
astubbs Aug 11, 2026
7a0fa54
ci(deps): point the scheduled-build exception at docs/ci.md
astubbs Aug 11, 2026
dbaede0
docs(inflight): the CVE triage is pushed and open, not unpushed work
astubbs Aug 11, 2026
5e99246
Revert "docs(inflight): the CVE triage is pushed and open, not unpush…
astubbs Aug 11, 2026
642d89a
ci(deps): astubbs/parallel-consumer#259 has landed, so drop the condi…
astubbs Aug 11, 2026
c6af27f
ci(deps): the standing backlog is gone, so say why reporting-only rem…
astubbs Aug 11, 2026
c8d69a2
ci(deps): gate PRs on new CVEs, and name the check for what it scans
astubbs Aug 11, 2026
0cfe05b
Merge remote-tracking branch 'origin/master' into ci/ossindex-audit-job
astubbs Aug 11, 2026
477b298
build(deps): park two unreleased-fix Jackson CVEs, and split the excl…
astubbs Aug 11, 2026
a8a301a
build(deps): scope the Jackson ignores to the bump we are waiting for
astubbs Aug 11, 2026
3ef9c83
ci(deps): make temporary CVE exclusions expire instead of asking to b…
astubbs Aug 11, 2026
d2f5915
Merge origin/master into ci/ossindex-audit-job
astubbs Aug 11, 2026
59f1d32
Merge origin/master into ci/ossindex-audit-job
astubbs Aug 11, 2026
629c5eb
docs(data): publish the two CVE gates as evidence, and narrow static-…
astubbs Aug 11, 2026
6968b8d
docs(inflight): correct the claim that no reviewer has run the audit …
astubbs Aug 11, 2026
3664b91
docs(inflight): there was never a second approval layer, only master'…
astubbs Aug 12, 2026
d494a14
ci(review): tell the reviewer whose allowlist and whose tree it is st…
astubbs Aug 12, 2026
2aace08
ci(review): grant the bin/ guards by pattern, so the grant can land b…
astubbs Aug 12, 2026
d202c3f
ci(review): the comment route does check the PR out - undo the correc…
astubbs Aug 12, 2026
186c71f
docs(data): say what a green cve-exclusion-expiry run does not mean
astubbs Aug 12, 2026
97331c7
ci(review): grant git rev-parse, so "check which tree you are in" is …
astubbs Aug 12, 2026
f633585
fix(ci): an empty comment is not a rationale for a CVE exclusion
astubbs Aug 12, 2026
ef9d2dd
ci(deps): skip the whole-tree audit on Dependabot PRs, not fail it
astubbs Aug 12, 2026
8d92d4f
docs(ci): naming a bin/ script is now the grant, so say so where it i…
astubbs Aug 12, 2026
6242ae1
docs(solutions): findings are fatal now, so stop telling readers they…
astubbs Aug 12, 2026
641281f
docs(inflight): do not re-enable a workflow this note proves cannot work
astubbs Aug 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 42 additions & 4 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,31 @@ updates:
# comments, whose ignore conditions live invisibly in Dependabot's state and give
# future maintainers no clue why a dependency silently stopped updating.
# Full rationale for each: docs/inflight/deps-deferred-majors.md.
#
# SCOPE EVERY IGNORE TO THE UPDATE YOU ACTUALLY FEAR. A bare `dependency-name` with
# no `update-types` silences the dependency completely, including the patch release
# you are waiting for - and an ignore is invisible: nothing reports the PR that was
# never opened. Write a blanket ignore only when the dependency is FROZEN, meaning
# you want no movement of any size until a stated condition is met (byte-buddy
# below is the one honest example). If you expect it to move again, say which sizes
# are dangerous and let the rest through.
ignore:
# Module-local, test-scoped pin coupled to WireMock's Jackson. Bumping it
# globally forces WireMock onto an incompatible Jackson and breaks VertxTest.
# Managed by hand in the curated versions-maven-plugin sweep instead.
# Line changes stay hand-managed, via the curated versions-maven-plugin sweep.
# See parallel-consumer-example-metrics/pom.xml.
#
# Patches allowed, minor/major blocked - narrowed for the same reason as the
# jackson-bom entry below, and deliberately kept the same shape as it, since the
# two pins are siblings. The recorded hazard is a LINE change; a patch inside the
# pinned line touches one test-scoped dependency in one example module and is
# exactly how a future advisory against it would be fixed. The whole-tree CVE scan
# resolves test scope, so it WILL report such an advisory - and a blanket ignore
# would leave that red with no automated route to green.
- dependency-name: "com.fasterxml.jackson.core:jackson-databind"
update-types:
- "version-update:semver-minor"
- "version-update:semver-major"
# The second Jackson pin: the jackson-bom import in
# parallel-consumer-example-streams, which holds that module at 2.18.9. It needs
# the same hand management as the databind pin above, and it is a *different*
Expand All @@ -41,15 +60,34 @@ updates:
# introduced in 2.18.0 and fixed only in 2.18.9, and CVE-2026-54518 applies to
# 2.21.0-2.21.3 only. The root pom greenlights CVE-2026-54518 as a false positive
# *because this module resolves 2.18.9*; a bump into 2.21.0-2.21.3 would make that
# finding real while the exclusion silently hid it. Bump this by hand, and
# re-check the exclusion list when you do.
# See docs/inflight/deps-cve-backlog.md.
# finding real while the exclusion silently hid it. Leaving the LINE is therefore a
# hand-managed decision, and the exclusion list gets re-checked when it happens.
#
# Allow patches within the pinned line; block minor/major - the same shape as the
# micrometer entry below, but here the patch allowance is load-bearing rather than
# tidy. This started out blanket, which was wrong in a way worth recording: every
# danger named above is a LINE change (2.18 -> 2.21), while a patch inside 2.18 is
# the exact thing we are waiting for. The root pom's TEMPORARY exclusions for
# CVE-2026-68497 and CVE-2026-19032 retire when jackson-databind 2.18.10 reaches
# Central - a patch bump IS the retirement mechanism - and a blanket ignore
# suppressed the only PR that would have announced it. Neither id is in OSV, NVD or
# GHSA, so no Dependabot alert can arrive instead: the ignore was covering the one
# notification we were relying on. bin/check-cve-exclusions.sh is the backstop for
# when that happens anyway. See docs/inflight/deps-cve-backlog.md.
- dependency-name: "com.fasterxml.jackson:jackson-bom"
update-types:
- "version-update:semver-minor"
- "version-update:semver-major"
# Frozen workaround pin, NOT a dep to track upward: byte-buddy is held at
# mockito's version because wiremock-jre8 2.35.2 drags in an ancient byte-buddy
# that breaks mockito (MockitoInitializationException). A bump buys nothing and
# risks re-breaking it. Remove this pin entirely when wiremock moves to 3.x
# (which drops the stale transitive) - do not bump it in the meantime.
#
# Blanket ON PURPOSE, and the only entry here that should be: the desired state is
# frozen, so there is no update size we want. Not an oversight left behind when the
# two Jackson entries were scoped - if a byte-buddy advisory ever lands, the answer
# is the wiremock 3.x move, not a patch.
- dependency-name: "net.bytebuddy:*"
# micrometer 1.13+ renamed the Prometheus registry package -> breaks CoreApp.
# Allow patches within the pinned line; block minor/major until CoreApp migrates.
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Workflows - one line each

What each file is, so you can pick the right one without opening all fifteen. The detail lives in
What each file is, so you can pick the right one without opening every one of them. The detail lives in
[`docs/ci.md`](../../docs/ci.md); each workflow's own header carries the reasoning behind it.

**The three `claude*` files are the confusing ones**, because the names do not separate them and
Expand All @@ -26,14 +26,15 @@ procedure or a steer. Why, and the gate's exact contract: [`docs/ci.md`](../../d
| `claude-code-review.yml` | The review gate. Invokes no Claude and costs nothing. What satisfies it: [`docs/ci.md`](../../docs/ci.md), stated once there. |
| `claude.yml` | Answers `@claude` comments, and reviews when asked to - the only route that can raise inline review threads. |
| `copyright.yml` | Checks source headers against the fork policy on every push and PR. |
| `dependency-audit.yml` | Scans the **whole** resolved dependency tree for CVEs - the only place OSS Index is switched on. Per-PR, on demand, and weekly, because a new advisory needs no push to arrive. |
| `maven.yml` | The main build: unit, integration and performance suites, SpotBugs, duplicate detection, PIT, dependency scanning. |
| `mutation-full-sweep.yml` | The whole-repo PIT mutation sweep, on demand - too slow for a PR. Self-hosted high-CPU lane. |
| `pr-checklist.yml` | Makes the PR template binding: the checklist must be present and every box resolved. |
| `pr-highcpu-fast-feedback.yml` | Fast PR feedback on the self-hosted high-CPU runners, including the per-PR chaos tripwire. |
| `publish.yml` | Publishes to Maven Central on every push to `master`; the pom version decides snapshot or release. |
| `quarantine-lane.yml` | Runs the quarantined tests separately, so known-flaky tests neither block nor disappear. |
| `release.yml` | Cuts a release. `workflow_dispatch`, and deliberately the most dangerous button here. |
| `repo-hygiene.yml` | Small always-on repo checks - shell sigpipe traps, and one pinned version per GitHub Action. |
| `repo-hygiene.yml` | Small always-on repo checks - shell sigpipe traps, one pinned version per GitHub Action, and expiring the pom's temporary CVE exclusions. |

## Two conventions that will bite you

Expand Down
Loading
Loading