deps: triage the post-v0.3.0 Dependabot group PRs (#144, #145, #146) - #147
Merged
Conversation
Applies the runtime bumps proposed by the post-v0.3.0 Dependabot group PR (#144) and regenerates the hash-pinned lockfile, which Dependabot does not do — its branch edits pyproject.toml only and so fails CI's drift gate. FastAPI 0.141.x adds an app.frontend() dev-server convenience that Scrye does not use; no routing, dependency-injection or response-model behaviour changes. uvicorn 0.52.0 adds an opt-in experimental --http zttp parser that upstream marks not-for-production; docker/entrypoint.sh passes no --http flag, so the default parser selection is unchanged. starlette holds at 1.3.1 — the pin carried for CVE-2025-62727 / CVE-2026-48818 / CVE-2026-54283 — confirming FastAPI 0.141.1 still accepts it. ruff moves 0.16.0 -> 0.16.1 in the dev extra. Lock regenerated with the pinned uv 0.8.17 command from CONTRIBUTING.md § Backend dependency lock; the diff is those two packages and their hashes.
Dependabot (#146) proposed moving github/codeql-action/init and .../analyze from ea14db8 to f205ea1 while leaving the trailing comment at v4.37.4. That is not a mislabelled bump — resolving the tag upstream shows both SHAs are the same release: ea14db8afdef5d462e69d78c4ca45002d4522418 refs/tags/v4.37.4 f205ea1c3313d32999d8d6a48b4f6530d4437b38 refs/tags/v4.37.4^{} codeql-action publishes annotated tags, so the old pin named the tag OBJECT and the new one names the commit it dereferences to. The advanced-setup migration pinned the tag object; a SHA-pin is meant to name an immutable commit, which is what every other action pinned here already does — the rest publish lightweight tags, where refs/tags/vX is the commit, which is why this is the only ref affected. No functional change: same release, same CodeQL bundle (2.26.2), same security-extended suite. The old pin worked — Actions dereferences a tag object — so this is pin correctness, not a fix for a broken workflow.
Takes 8 of the 20 updates Dependabot proposed in #145 and narrows a 9th. The Mantine/React ignores held — the PR proposed no locked major, and @mantine/* moved 7.15.2 -> 7.17.8, a minor inside v7. Applied: @mantine/core/form/hooks 7.17.8, @tabler/icons-react 3.46.0, @testing-library/react 16.3.2, @testing-library/jest-dom 7.0.0, postcss-preset-mantine 1.18.0, globals 17.8.0, prettier 3.9.6. The two majors were checked rather than waved through. jest-dom 7 requires @testing-library/dom as a peer (already a direct devDependency at 10.4.1) and Node >= 22 (CI is on 24); it removes no matchers. globals 17 feeds eslint.config.js's globals.browser, where a shrunken set would leave lint passing while losing coverage — the set was inspected: 1191 entries, with window/document/fetch present. @types/node is narrowed from the proposed 26.1.2 to 24.13.3. Its major tracks Node's, and the SPA builds on Node 24; tsconfig.node.json sets types: [node], so types ahead of the pinned runtime describe APIs the build does not have and feed them into the type-aware ESLint gate — the same failure mode that put @types/react* in the ignore list. Prettier 3.9 collapses short union types onto one line instead of the leading-| form, which is the whitespace-only change to three source files. Held back: typescript 7, eslint 10, @eslint/js 10, typescript-eslint 8.65, vite 8, @vitejs/plugin-react 6, vitest 4, jsdom 30, eslint-plugin-react-hooks 7 and eslint-plugin-react-refresh 0.5 — the deferred #86 toolchain sweep, which lands on the type-aware ESLint gate and is its own scoped work.
@types/node's major tracks Node's, and this repo builds and runs on Node 24 (the Dockerfile builder stage and ci.yml's node-version), with Node majors already declined for the docker ecosystem on a support-lifecycle argument. tsconfig.node.json sets types: [node], so a @types/node ahead of the pinned runtime feeds APIs the build does not have into the type-aware ESLint gate — the same reason @types/react* are majors-locked. Without this, #145's @types/node 26 returns inside the grouped PR every week. The comment also records what is deliberately NOT ignored: the frontend toolchain majors are wanted work tracked in docs/ROADMAP.md and should keep being surfaced.
Adds the dated ARCHIVE.md §14 entry covering all three grouped PRs (#144, #145, #146) — the base-branch check, the changelog findings, the annotated- tag SHA-pin discovery, the applied/narrowed/held split on the frontend, and the verification evidence. Refreshes the ROADMAP #86 sweep list to the versions #145 surfaced and adds the four members that were not on the original list. Records the bumps under CHANGELOG's Unreleased § Changed.
This was referenced Aug 3, 2026
tyler-rich
added a commit
that referenced
this pull request
Aug 8, 2026
…A + Track B) Replaces docs/ROADMAP.md wholesale with an externally-drafted revision. The previous document becomes Track A — Engineering & hardening, carried across verbatim; Track B — Features is new, covering six phases plus a Deferred list, an out-of-scope policy list, a licensing & bundling policy table, and the guiding principles. Known limitations & accepted trade-offs is unchanged. Track A's only substantive edits are three † prerequisite markers, on the items that gate a Track B feature: content-addressed SBOM identity (Phase 2 fix-watch), cancel a running scan (endpoint-scanning target class), and the generated API client (Phase 4 MCP server). Track A and Known limitations were diffed line by line against the outgoing file before replacing, and every §14 pointer was re-checked against the entry it names rather than against its presence in the old file. One regression was caught: the draft's "Frontend tooling majors from Dependabot #86" paragraph predated 004d2b5 (#147), so taking it as written would have reverted the #145 shopping-list refresh, dropped four toolchain members, reverted jsdom 26 -> 30 to 26 -> 29, and removed the sentence that mirrors dependabot.yml's "Deliberately NOT ignored" comment. The current paragraph is spliced in verbatim. See docs/ARCHIVE.md § Deviations for the full verification record.
tyler-rich
added a commit
that referenced
this pull request
Aug 8, 2026
…A + Track B) (#155) * docs(roadmap): replace ROADMAP.md with the two-track revision (Track A + Track B) Replaces docs/ROADMAP.md wholesale with an externally-drafted revision. The previous document becomes Track A — Engineering & hardening, carried across verbatim; Track B — Features is new, covering six phases plus a Deferred list, an out-of-scope policy list, a licensing & bundling policy table, and the guiding principles. Known limitations & accepted trade-offs is unchanged. Track A's only substantive edits are three † prerequisite markers, on the items that gate a Track B feature: content-addressed SBOM identity (Phase 2 fix-watch), cancel a running scan (endpoint-scanning target class), and the generated API client (Phase 4 MCP server). Track A and Known limitations were diffed line by line against the outgoing file before replacing, and every §14 pointer was re-checked against the entry it names rather than against its presence in the old file. One regression was caught: the draft's "Frontend tooling majors from Dependabot #86" paragraph predated 004d2b5 (#147), so taking it as written would have reverted the #145 shopping-list refresh, dropped four toolchain members, reverted jsdom 26 -> 30 to 26 -> 29, and removed the sentence that mirrors dependabot.yml's "Deliberately NOT ignored" comment. The current paragraph is spliced in verbatim. See docs/ARCHIVE.md § Deviations for the full verification record. * docs(archive): link the ROADMAP replacement deviation entry to its PR
This was referenced Aug 9, 2026
Merged
tyler-rich
added a commit
that referenced
this pull request
Aug 9, 2026
…192) @types/node 26.2.0 landed on dev in #190 (5948b73), so the ignore's premise is spent. The comment it carried argued that tsconfig.node.json's `"types": ["node"]` feeds a runtime-ahead @types/node straight into the type-aware ESLint gate — true of the tree it was written against, and no longer true of this one. Step 4 (#179) wrote an explicit empty `types` array into tsconfig.app.json, which narrows the package's reach to a single file: `tsc --listFiles` loads 1,063 files for the app project and zero of them are @types/node, against 82 for the node project. The rule and its comment are removed together rather than the comment being rewritten, since a comment whose premise has been retired reads as a live argument. Deliberately NOT done: no ignore rule was added for typescript. TypeScript 7 is wanted; what blocks it is upstream — typescript-eslint's typescript peer range, whose upper bound has never exceeded <6.1.0 across all 1,510 published versions (re-verified today from the full packument, not from `latest` alone). The regenerating Dependabot PR proposing typescript 7.x is the notification that tells us when upstream ships support, so an ignore rule would suppress the signal while changing nothing about the blocker. Dependabot's own automated reply on the PR closed today recommended exactly that ignore; it is correct on mechanics and wrong as advice here. Like every prior change to this file, it is inert on main until the next dev->main promotion — Dependabot reads its configuration, ignore list included, from the default branch. main's copy has never carried the @types/node stanza (added on dev by #147, never promoted), so this removal deletes a rule that was never live and brings the file closer to the effective configuration rather than further from it. No other key in dependabot.yml changed: the six ecosystems, every target-branch, schedule, groups and commit-message block, and the five remaining npm ignores enforcing locked decision §2 are untouched.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Triages the three grouped Dependabot PRs opened against
devafter the v0.3.0 release and reapplies their content by hand rather than merging them as-built. None of #144, #145 or #146 should be merged — close them once this lands.All three were correctly based on
dev: every head branch carries the/dev/target-branchsegment and no timeline carriesautomatic_base_change_succeeded, so neither the security-update-on-maincase (#120) nor the auto-retarget case (#126/#127/#128) applies.#144 — backend (pip): applied in full
fastapi0.140.13 → 0.141.1 — adds anapp.frontend()dev-server convenience Scrye does not use, plus its 0.141.1 fix. No routing, dependency-injection or response-model change.uvicorn[standard]0.51.0 → 0.52.0 — adds an opt-in experimental--http zttpparser that upstream marks not-for-production, and a websockets header fix.docker/entrypoint.shpasses no--httpflag, so the default parser is unchanged.ruff0.16.0 → 0.16.1 (dev extra).backend/requirements.lockregenerated with the pinneduv 0.8.17command fromCONTRIBUTING.md§ Backend dependency lock — the step Dependabot does not do, so its branch would have failed CI's drift gate. The lock diff is exactly those two packages and their hashes;starletteholds at 1.3.1, confirming FastAPI 0.141.1 still accepts the pin carried for CVE-2025-62727 / CVE-2026-48818 / CVE-2026-54283. The stale# … 0.51.0 is the current releasecomment Dependabot left behind is fixed too.#146 — github-actions: not a version bump
The PR moves
codeql-action/initand.../analyzeto a new SHA while leaving the comment at# v4.37.4. Resolving the tag upstream rather than trusting the description shows both SHAs are the same release:codeql-actionpublishes annotated tags, so the old pin named the tag object and the new one names the commit it dereferences to. Applied, because a SHA-pin is meant to name an immutable commit.security-extendedsuite.codeql.ymlruns on PRs todev, so this PR's own CI exercises the corrected pin.#145 — frontend (npm): 8 applied, 1 narrowed, 11 held
The Mantine/React ignores held — no locked major was proposed;
@mantine/*moved 7.15.2 → 7.17.8, a minor inside v7.Applied:
@mantine/core/form/hooks7.17.8,@tabler/icons-react3.46.0,@testing-library/react16.3.2,@testing-library/jest-dom7.0.0,postcss-preset-mantine1.18.0,globals17.8.0,prettier3.9.6.The two majors were checked, not waved through: jest-dom 7 needs
@testing-library/domas a peer (already direct at 10.4.1) and Node ≥22 (CI is on 24), and removes no matchers;globals17 was inspected for a shrunken set rather than trusted to a green lint run (1191 browser globals,window/document/fetchpresent).Narrowed:
@types/node22.20.0 → 24.13.3, not the proposed 26.1.2. Its major tracks Node's and the SPA builds on Node 24;tsconfig.node.jsonsets"types": ["node"], so types ahead of the pinned runtime feed APIs the build lacks into the type-aware ESLint gate — the same failure mode that put@types/react*in the ignore list.Held back (the deferred #86 sweep):
typescript7,eslint10,@eslint/js10,typescript-eslint8.65,vite8,@vitejs/plugin-react6,vitest4,jsdom30,eslint-plugin-react-hooks7,eslint-plugin-react-refresh0.5. Not blocked by any ignore rule and not unwanted — they all land on the type-aware ESLint gate and several cannot move alone.typescript-eslint8.19 → 8.65 is a minor and looks routine in isolation; it is held anyway because its support matrix pairs with the TypeScript version the sweep will move.Heads-up on the diff: Prettier 3.9 collapses short union types onto one line instead of the leading-
|form, so three source files (src/api/scans.ts,src/api/targets.ts,src/pages/Dashboard.tsx) show whitespace-only edits — 17 lines, no semantic change.Alongside
.github/dependabot.ymlgains an@types/nodemajor ignore beside the@types/react*ones, for the identical reason. The comment records what is deliberately not ignored: the toolchain majors are wanted work and should keep being surfaced.docs/ROADMAP.md's frontend: bump the frontend-dependencies group across 1 directory with 25 updates #86 sweep list refreshed to the versions frontend: bump the frontend-dependencies group in /frontend with 20 updates #145 surfaced, plus the four members missing from the original list.Verification
ruff+black --checkclean,.env.examplein sync, lock stable under recompile (drift gate passes), 731 passed / 8 skipped on CPython 3.14.6.npm run buildall pass.npm audit's only finding is the pre-existingreact-routerHIGH (GHSA-qwww-vcr4-c8h2 (react-router RSC-mode CSRF bypass) — fixed by the 7.18.2 backport, not the 8.3.0 major #123), unchanged here.One note for whoever runs the suite locally next: it cannot run on CPython 3.14.0rc2 (what
uv python install 3.14resolves to in a sandbox).typing._eval_type()gainedprefer_fwd_modulebetween rc2 and final and pydantic 2.13.4 passes it unconditionally, so every model construction raises at import. That was confirmed interpreter-caused, not bump-caused, by reproducing it with the pre-bump pins before concluding anything.See
docs/ARCHIVE.md§ Deviations for the full record of this triage.