Skip to content

ci: Dependabot fold-ins, cargo audit + Cargo.lock, one Slack scan report, Scout on releases (PER-15886) - #366

Merged
zeevmoney merged 42 commits into
mainfrom
ci/post-338-followups
Oct 5, 2026
Merged

zeevmoney merged 42 commits into
mainfrom
ci/post-338-followups

Conversation

@zeevmoney

@zeevmoney zeevmoney commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

Linear: PER-15886 · follow-up to #338

What this changes

Dependency updates (Dependabot)

Folds in the open Dependabot PRs, each as Dependabot's own commit:

PR Update
#349 golang 1.26-bookworm → 1.27-bookworm (OPA build stage)
#352 rust 1.94-alpine → 1.98-alpine
#350 reqwest 0.12 → 0.13.5
#351 nix 0.29 → 0.31.3
#353 utoipa-scalar 0.3 → 0.4
#354 confique 0.3 → 0.4
#355 redis 0.29 → 1.7.1
#356 scalar-fastapi 1.0.3 → 1.8.2 (the OPAL half is reverted, see below)
#357 typer floor → 0.27.2
#359 urllib3 floor → 2.8.0
#361 chart-releaser-action 1.7.0, kind-action 1.15.0
#362 configure-aws-credentials 4.3.1 → 6.3.0
#363 setup-qemu-action 3.7.0 → 4.4.0
#364 slack-github-action 3.0.3 → 4.0.0
#365 setup-buildx-action 3.12.0 → 4.4.1
#367 sha2 0.10 → 0.11
#368 utoipa-axum 0.2 → 0.3
#370 utoipa 5.3 → 6.0
#372 protobuf floor → 7.36.2
#373 uvicorn floor → 0.54.0
#375 aiohttp floor → 3.14.3

#369, #376 and #377 duplicated updates already here and were closed.

Follow-up fixes:

  • sha2 0.11: the digest type no longer supports {:x}. A hex_prefix() helper renders the same 16-character cache-key suffix, so existing cache entries still match, and a test pins it.
  • redis 1.x: ErrorKind::TypeError was renamed UnexpectedReturnType. redis-test moves to 1.0.4 so the test build has a single redis version.
  • OPAL stays at 0.9.6. opal-common and opal-client 0.9.9 declare Requires-Python <3.13, and the image runs 3.13, so the OPAL half of deps: bump the minor-and-patch group with 3 updates #356 is reverted. requirements.txt explains this at the pin.
  • scalar-fastapi is held at 1.8.2, because 1.9.0 and later require pydantic 2, which OPAL caps (pydantic<2).

Not included, because OPAL caps them:

Scheduled security scan: one report, green on findings

  • New Slack report (format_security_report.py), modelled on agent-security's. The message is:

    • a headline count;
    • one line per scanner and tag;
    • one line per advisory, giving the package, advisory link, fixed version and who has to act (a release rebuild, permit-opa, the golang base digest, or an exact pin), and naming every scanner and tag that saw it.

    It reuses the existing Trivy classifier and the Dependabot waiver filter.

  • Findings no longer fail the run. A job goes red only when its scan did not complete (a scanner error, an unreadable report or alert feed) or when the report never reached Slack. The report then lists that scanner as "did not complete". The PR gate and the release gate still block.

  • notify-slack.yml takes an optional pre-escaped message, sent as-is. The old path escaped the per-tag lines twice, which is where ->gt; came from.

  • The report lists the whole unwaived Dependabot backlog every run. The 73-hour window and the all_alerts input are removed.

  • security-digest.yml reads the last scan's security-report artifact, because a green run no longer means "no findings".

Releases: Docker Scout as well as Trivy

  • scan-pdp-release loads each platform as permitio/pdp-v2:release-scan and runs Docker Scout alongside Trivy, using the same pull-only OIDC login as the PR gate. A finding from either scanner, or a report that is missing or unreadable, blocks the publish.
  • The OpenVEX doc gets a @release-scan product on every statement, so the waivers apply there. Doc version is now 18.

Rust: Cargo.lock and cargo audit

  • Cargo.lock is committed. It was ignored by both git and Docker, so every build resolved crates.io afresh. The image build (cargo chef cook, cargo zigbuild) and the Rust CI job now run with --locked.
  • New cargo audit job in tests.yml. A vulnerable crate fails it, and with it a release. Unmaintained and yanked crates are reported, not failed. It uses cargo-audit 0.22.2, built from crates.io with --locked and cached.
  • On PRs, cargo audit keeps one sticky comment (<!-- pdp-cargo-audit -->) in agent-security's layout: severity badges, a table of high/critical advisories, a fold for the rest, plus unmaintained and yanked crates. An unreadable report renders "could not be parsed" and fails the check.
  • cargo audit joins the scheduled report. The formatter computes CVSS v3 scores from the vectors, lists advisories with no score under "Unscored" (they trigger the message too), and merges RustSec aliases with Dependabot alerts.

CI hygiene

  • prek replaces pre-commit in the pre-commit job, using prek 0.5.4 with a cache. The job name, which is the required check, is unchanged.
  • Dependabot now updates the pre-commit hook versions (the pre-commit ecosystem, weekly, 7-day cooldown).
  • Pre-commit hooks are pinned by commit SHA, with the tag kept as a # frozen: comment. The commented-out mypy hook is removed.
  • docker/build-push-action 5.4.0 → 7.4.0 (Node 24). Build-record artifact upload is off, which keeps v5's behaviour.
  • The pre-commit job drops pre-commit/action, which bundled actions/cache@v4 (Node 20). It now uses actions/cache 6.1.0 (Node 24) and Python 3.13.
  • All runners are pinned to ubuntu-24.04, ahead of ubuntu-latest moving to Ubuntu 26 on 2026-10-19.

Corrections

  • CodeQL set IS_DEBUG_MODE deafult Flase #116 (rust/cleartext-logging): the config tests no longer print the loaded API key or every PDP_* environment variable.
  • CVE-2026-50271 waiver: PDP_ENABLE_MONITORING=false is not an independent mitigation, because remote config can enable monitoring. The waivers and the Dockerfile comment now name the extract-style setting as the mitigation.
  • The docs and release.yml now state the dockerhub-release approval rule as configured: self-review is allowed.
  • The OPA builder is described as Go 1.27.
  • Stale "gaps" entries are removed from the vulnerability doc: the backlog-as-count and permit-opa-on-main entries.

Verification

  • Rust: cargo fmt --check, cargo clippy --all --all-targets -D warnings and cargo test --all pass locally with --locked (225 tests). cargo audit finds no vulnerable crates, and 1 unmaintained-crate warning.
  • Python:
    • 143 CI-script tests pass, including 57 new ones for the Slack report and the cargo audit comment;
    • the new requirements resolve with pip on CPython 3.13;
    • waiver parity is OK.
  • actionlint is clean. zizmor (--persona regular, online audits) reports no findings. prek passes on every file.
  • The report was rendered locally against real data: a scheduled run's Trivy report, Scout SARIF from code scanning, and the live Dependabot alerts.

Not exercised by this PR's CI:

  • the release Scout leg, first run by the next rc;
  • configure-aws-credentials v6, first run by the next final release (ECS);
  • the scheduled scan and digest, which can be run by hand after merge;
  • the Redis integration tests, which are #[ignore] and need a Redis server.

Required tests before promoting 0.9.17

Run these against the 0.9.17-rc2 image (the first release built from this PR) before promoting it.

Runtime behaviour changes

  • TLS (reqwest 0.13 now uses rustls with aws-lc-rs instead of OpenSSL). Point PDP_OPA_URL at an https:// OPA endpoint, once with a publicly trusted certificate and once with a private CA installed in the container's system trust store. /allowed should return decisions, with no TLS errors in the pdp-server log. Repeat with the default http://localhost:8181 as the control.
  • Redis cache (redis 1.7). Set PDP_CACHE_STORE=redis and PDP_CACHE_REDIS_URL=redis://<host>:6379. Check all of these:
    • the first /allowed call writes an opa:allowed:* key;
    • a repeated call is served from the cache;
    • a missing key falls through to OPA without an error;
    • /health reports the cache healthy;
    • stopping Redis surfaces an error rather than a hang.
  • In-memory cache (sha2 0.11). Set PDP_CACHE_STORE=in-memory. Repeated identical queries should hit the cache. Key format is pinned by a unit test, so this is a smoke check.
  • Config loading (confique 0.4). Start with a typical env (PDP_API_KEY, PDP_PORT, PDP_CACHE_TTL, PDP_OPA_URL, PDP_OPA_CLIENT_QUERY_TIMEOUT). The values should be applied, with no config parse errors at startup.
  • Watchdog (nix 0.31). Send SIGTERM to the container: it should shut down cleanly. Kill the horizon process inside a running container: the watchdog should restart or exit as it does today.
  • API docs. Check that /scalar (scalar-fastapi 1.8.2) and the Rust server's OpenAPI document (utoipa 6) render, and that the documented routes and schemas match 0.9.16.

Pipelines

  • rc2 release run:
    • scan-pdp-release runs Trivy and Docker Scout on amd64 and arm64;
    • the waived starlette/ddtrace CVEs stay suppressed under @release-scan;
    • the Scout SARIF is in the run's artifact;
    • publish-pdp-release pushes, and the digest check passes.
  • Final 0.9.17 release run: update-pdp-api-ecs-service assumes the AWS role through configure-aws-credentials v6 and the ECS rollout completes.
  • Scheduled scan, run by hand with gh workflow run scheduled-security-scan.yml:
    • the Slack message uses the new format and lists Trivy, Scout, cargo audit and Dependabot;
    • the run is green even if there are findings;
    • a security-report artifact is uploaded.
  • Weekly digest (Monday, or gh workflow run security-digest.yml): the "Published-image scan" line shows the last scan's headline, read from that artifact.

Not covered by any automated test

  • pdp-server's two Redis integration tests are #[ignore] and need a Redis server, so the Redis check above is the only coverage for the redis 1.x upgrade.

🤖 Generated with Claude Code

dependabot Bot and others added 25 commits October 4, 2026 20:59
Bumps golang from 1.26-bookworm to 1.27-bookworm.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.27-bookworm
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [reqwest](https://github.com/seanmonstar/reqwest) to permit the latest version.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](seanmonstar/reqwest@v0.12.15...v0.13.5)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-version: 0.13.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [nix](https://github.com/nix-rust/nix) to permit the latest version.
- [Changelog](https://github.com/nix-rust/nix/blob/master/CHANGELOG.md)
- [Commits](nix-rust/nix@v0.29.0...v0.31.3)

---
updated-dependencies:
- dependency-name: nix
  dependency-version: 0.31.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps rust from 1.94-alpine to 1.98-alpine.

---
updated-dependencies:
- dependency-name: rust
  dependency-version: 1.98-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [utoipa-scalar](https://github.com/juhaku/utoipa) to permit the latest version.
- [Release notes](https://github.com/juhaku/utoipa/releases)
- [Changelog](https://github.com/juhaku/utoipa/blob/master/utoipa-rapidoc/CHANGELOG.md)
- [Commits](juhaku/utoipa@utoipa-scalar-0.3.0...utoipa-scalar-0.4.0)

---
updated-dependencies:
- dependency-name: utoipa-scalar
  dependency-version: 0.4.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [confique](https://github.com/LukasKalbertodt/confique) to permit the latest version.
- [Release notes](https://github.com/LukasKalbertodt/confique/releases)
- [Changelog](https://github.com/LukasKalbertodt/confique/blob/main/CHANGELOG.md)
- [Commits](LukasKalbertodt/confique@v0.3.0...v0.4.0)

---
updated-dependencies:
- dependency-name: confique
  dependency-version: 0.4.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [redis](https://github.com/redis-rs/redis-rs) to permit the latest version.
- [Release notes](https://github.com/redis-rs/redis-rs/releases)
- [Commits](redis-rs/redis-rs@redis-0.29.2...redis-1.7.1)

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 1.7.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the minor-and-patch group with 3 updates: [scalar-fastapi](https://github.com/scalar/scalar), [opal-common](https://github.com/permitio/opal) and [opal-client](https://github.com/permitio/opal).


Updates `scalar-fastapi` from 1.0.3 to 1.9.1
- [Release notes](https://github.com/scalar/scalar/releases)
- [Changelog](https://github.com/scalar/scalar/blob/main/integrations/docusaurus/CHANGELOG.md)
- [Commits](https://github.com/scalar/scalar/commits)

Updates `opal-common` from 0.9.6 to 0.9.9
- [Release notes](https://github.com/permitio/opal/releases)
- [Commits](permitio/opal@0.9.6...0.9.9)

Updates `opal-client` from 0.9.6 to 0.9.9
- [Release notes](https://github.com/permitio/opal/releases)
- [Commits](permitio/opal@0.9.6...0.9.9)

---
updated-dependencies:
- dependency-name: scalar-fastapi
  dependency-version: 1.9.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: opal-common
  dependency-version: 0.9.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: opal-client
  dependency-version: 0.9.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [typer](https://github.com/fastapi/typer) to permit the latest version.
- [Release notes](https://github.com/fastapi/typer/releases)
- [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md)
- [Commits](fastapi/typer@0.4.1...0.27.2)

---
updated-dependencies:
- dependency-name: typer
  dependency-version: 0.27.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [urllib3](https://github.com/urllib3/urllib3) to permit the latest version.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](urllib3/urllib3@2.6.3...2.8.0)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-version: 2.8.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the minor-and-patch group with 2 updates: [helm/chart-releaser-action](https://github.com/helm/chart-releaser-action) and [helm/kind-action](https://github.com/helm/kind-action).


Updates `helm/chart-releaser-action` from 1.6.0 to 1.7.0
- [Release notes](https://github.com/helm/chart-releaser-action/releases)
- [Commits](helm/chart-releaser-action@a917fd1...cae68fe)

Updates `helm/kind-action` from 1.14.0 to 1.15.0
- [Release notes](https://github.com/helm/kind-action/releases)
- [Commits](helm/kind-action@ef37e7f...06c1ae1)

---
updated-dependencies:
- dependency-name: helm/chart-releaser-action
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: helm/kind-action
  dependency-version: 1.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials) from 4.3.1 to 6.3.0.
- [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases)
- [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md)
- [Commits](aws-actions/configure-aws-credentials@7474bc4...e125382)

---
updated-dependencies:
- dependency-name: aws-actions/configure-aws-credentials
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3.7.0 to 4.4.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](docker/setup-qemu-action@c7c5346...9901266)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [slackapi/slack-github-action](https://github.com/slackapi/slack-github-action) from 3.0.3 to 4.0.0.
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Changelog](https://github.com/slackapi/slack-github-action/blob/main/CHANGELOG.md)
- [Commits](slackapi/slack-github-action@45a88b9...dcb1066)

---
updated-dependencies:
- dependency-name: slackapi/slack-github-action
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3.12.0 to 4.4.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](docker/setup-buildx-action@8d2750c...f87e599)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.4.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
redis 1.0 renamed ErrorKind::TypeError to ErrorKind::UnexpectedReturnType.
redis-test 0.9 depends on redis 0.29, so the dev-dependency moves to 1.0.4
to keep a single redis version in the test build.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The golang 1.27 bump changes no build behaviour (the go1.26.6 floor check
still passes), but three comments named 1.26 as the current builder.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
opal-common/opal-client 0.9.9 keep 0.9.6's caps (pydantic<2, tenacity<9,
starlette<1, ddtrace<4, aiofiles<1), so:

- scalar-fastapi stays on 1.8.2: 1.9.0 and later require pydantic>=2.
- check_aiofiles_override.py expects 0.9.9; the aiofiles override is still
  needed because 0.9.9 still admits only aiofiles 0.8.0.
- Comments, waiver statements and docs that named 0.9.6 now name 0.9.9.
  OpenVEX document version 14 -> 15.
- Dependabot ignores pydantic>=2, tenacity>=9 and scalar-fastapi>=1.9.0,
  next to the existing starlette/ddtrace entries.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The scheduled scan now reports the way permitio/agent-security does: a
headline count, one line per scanner and tag, then one line per advisory
with package, advisory link, fixed version and who has to act, naming
every scanner and tag that saw it. format_security_report.py builds it
from the raw Trivy JSON, the VEX-filtered Scout SARIF and the Dependabot
alerts, reusing the existing classifier and waiver filter.

Findings are reported, not failed. A job goes red only when its scan did
not complete (scanner error, unreadable report or alert feed) or the
report never reached Slack; the report then lists that scanner as "did
not complete". The PR and release gates still block.

- notify-slack.yml takes an optional pre-escaped `message`, sent as-is.
  The old path escaped the per-tag lines twice ("->gt;").
- The report lists the whole unwaived backlog every run, so the 73-hour
  window and the all_alerts dispatch input are gone.
- security-digest.yml reads the latest run's security-report artifact
  for its headline, since a green run no longer means "no findings".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
v5.4.0 still runs on Node 20, which the runners now force onto Node 24
with a deprecation warning. Every input in use (outputs, context, target,
cache-from/to, platforms, push, load, tags, no-cache-filters) is
unchanged in v7. v6 added a build-record artifact upload; it is switched
off on both build jobs to keep v5's behaviour.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
pre-commit/action v3.0.1 wraps actions/cache@v4, which still runs on
Node 20. The job now does the same two things itself - restore the hook
cache (actions/cache v6.1.0, same path and key shape) and run
`pre-commit run --show-diff-on-failure --all-files` with pre-commit
4.6.2 - and sets python-version, which was unset and warned on every run.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
scan-pdp-release ran Trivy only, so linux/arm64 rested on one scanner,
and Trivy does not flag every advisory Scout does (it missed two
x/crypto HIGHs on a published image). Each platform is now loaded as
permitio/pdp-v2:release-scan and scanned by Scout too, through the same
pull-only OIDC login as the PR gate. The report merges both; a finding
from either, or a missing/unreadable report, blocks the publish.

The OpenVEX doc gains a pkg:docker/permitio/pdp-v2@release-scan product
on every statement so the five waivers apply there (version 15 -> 16).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The ddtrace waiver called PDP_ENABLE_MONITORING=false an independent
reason ddtrace is off the request path. It is not: horizon/pdp.py
applies the control plane's remote config before checking the flag, so
monitoring can be enabled remotely. The Dockerfile's
DD_TRACE_PROPAGATION_STYLE_EXTRACT setting is the mitigation, and the
waiver (both files) and the Dockerfile comment now say so. OpenVEX
document version 16 -> 17.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
release.yml and the vulnerability doc said the approver must be someone
other than whoever triggered the release. The environment allows
self-review on purpose; both now say so.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
GitHub moves ubuntu-latest to Ubuntu 26 from 2026-10-19 and annotates
every job about it. Pinning keeps the release and scan jobs on the
image they are tested on; moving to 26 becomes a deliberate change.
release.yml's build, scan and publish jobs were already pinned.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@linear-code

linear-code Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

PER-15886

PER-16903

zeevmoney and others added 2 commits October 4, 2026 23:11
Mirrors permitio/agent-security's cargo audit comment: one comment per
PR (marker <!-- pdp-cargo-audit -->), severity badges, a table of
high/critical advisories and a fold for the rest, plus unmaintained and
yanked crates. format_cargo_audit.py renders it and always writes a
body; an unreadable report renders "could not be parsed" and the fail
step blocks on it. Any vulnerable crate still fails the job and so a
release. The CVSS v3 calculator moves into this script and
format_security_report.py imports it from there.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
pre-commit-hooks, ruff-pre-commit and pre-commit-rust were pinned by
tag, which the hook repo can move. Each `rev` is now the commit the tag
points at, with the tag kept as a `# frozen:` comment that prek,
pre-commit and Dependabot all read. Also drops the commented-out mypy
hook block.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

✅ Cargo Security Audit

No vulnerable crates in Cargo.lock.

dependabot Bot and others added 8 commits October 5, 2026 11:51
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.14.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [uvicorn](https://github.com/Kludex/uvicorn) to permit the latest version.
- [Release notes](https://github.com/Kludex/uvicorn/releases)
- [Changelog](https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md)
- [Commits](Kludex/uvicorn@0.17.6...0.54.0)

---
updated-dependencies:
- dependency-name: uvicorn
  dependency-version: 0.54.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [protobuf](https://developers.google.com/protocol-buffers/) to permit the latest version.

---
updated-dependencies:
- dependency-name: protobuf
  dependency-version: 7.36.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [utoipa](https://github.com/juhaku/utoipa) to permit the latest version.
- [Release notes](https://github.com/juhaku/utoipa/releases)
- [Changelog](https://github.com/juhaku/utoipa/blob/master/utoipa-rapidoc/CHANGELOG.md)
- [Commits](juhaku/utoipa@utoipa-5.3.1...utoipa-6.0.0)

---
updated-dependencies:
- dependency-name: utoipa
  dependency-version: 6.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [utoipa-axum](https://github.com/juhaku/utoipa) to permit the latest version.
- [Release notes](https://github.com/juhaku/utoipa/releases)
- [Changelog](https://github.com/juhaku/utoipa/blob/master/utoipa-rapidoc/CHANGELOG.md)
- [Commits](juhaku/utoipa@utoipa-axum-0.2.0...utoipa-axum-0.3.0)

---
updated-dependencies:
- dependency-name: utoipa-axum
  dependency-version: 0.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Updates the requirements on [sha2](https://github.com/RustCrypto/hashes) to permit the latest version.
- [Commits](RustCrypto/hashes@streebog-v0.11.0-pre.0...sha2-v0.11.0)

---
updated-dependencies:
- dependency-name: sha2
  dependency-version: 0.11.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
sha2 0.11's digest type no longer implements LowerHex, so `{:x}` on
`finalize()` stopped compiling. A small hex_prefix() helper renders the
same first 16 lowercase hex characters, so existing cache keys keep
matching; a test pins it to SHA-256("abc"). Cargo.lock picks up utoipa 6,
utoipa-axum 0.3 and sha2 0.11 from the Dependabot commits before this.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
fastapi 0.126.0+ requires pydantic>=2.7, which OPAL's pydantic<2 cap
rules out (pip: ResolutionImpossible, as on #374). Ignored alongside the
other OPAL-capped packages.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@zeevmoney zeevmoney changed the title ci: fold in Dependabot bumps, one Slack scan report, Scout on releases (PER-15886) ci: Dependabot fold-ins, cargo audit + Cargo.lock, one Slack scan report, Scout on releases (PER-15886) Oct 5, 2026
@zeevmoney
zeevmoney merged commit 8e1dc5f into main Oct 5, 2026
17 of 18 checks passed
@zeevmoney
zeevmoney deleted the ci/post-338-followups branch October 5, 2026 19:40
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.

3 participants