Skip to content

fix(renovate): mirror flake.nix Go vendorHash + cap wails/v3 below 3.1 (RIG-2852) - #681

Open
rigel-mintaka wants to merge 2 commits into
mainfrom
dependencies/rig-2852-renovate-flake-vendorhash-wails-cap
Open

fix(renovate): mirror flake.nix Go vendorHash + cap wails/v3 below 3.1 (RIG-2852)#681
rigel-mintaka wants to merge 2 commits into
mainfrom
dependencies/rig-2852-renovate-flake-vendorhash-wails-cap

Conversation

@rigel-mintaka

@rigel-mintaka rigel-mintaka commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Two Renovate gaps surfaced landing GTK4 T1 (RIG-2818, PR #667), both in
tools/renovate/.

Gap 1 (bug, all Go bumps): refresh-fod-hashes.ts refreshed the Go vendorHash
in guest-image/default.nix but not the IDENTICAL one in flake.nix:52 — both
are buildGoModule + proxyVendor over the same go/, so a gomod bump moves both
and the stale flake.nix pin failed nix flake check (hash-mismatch), the
RIG-2432 easy-dep-bump failure class. Add a mirrorFiles field to the Go
FodEntry: the build vehicle realises guestd's FOD once, and the recomputed SRI
is mirrored to flake.nix (equal by construction, no second realise). Add
flake.nix to the top-level postUpgradeTasks.fileFilters so Renovate commits the
mirror edit.

Gap 2 (safety, wails): no cap on github.com/wailsapp/wails/v3, so Renovate
would auto-open a v3.1 bump violating the GTK4-migration "Never v3.1" floor
(compass-gtk4-migration/design.md §Global Constraints). Add a gomod packageRule
capping it with a REGEX allowedVersions /^v?3\.0\./ — not a semver range,
because gomod's node-semver ranges exclude a prerelease at a different
major.minor.patch, so < 3.1.0-0 would wrongly reject the current
v3.0.0-beta.0 pin. Admits v3.0.0-beta.N and future v3.0.x; rejects v3.1+ and v4+.

Tests: refresh-fod-hashes.test.ts asserts the flake.nix mirror is refreshed to
the same SRI on a go/go.mod bump (red-green verified against a neutered mirror
loop); config.test.ts pins the flake.nix fileFilter and replays the wails regex
against v3.0.0-beta.0 / v3.1.0 / v4.0.0 (red-green verified against a loosened
cap). renovate:ci green (92 pass, typecheck + biome clean).

Refs RIG-2852, RIG-2818, PR #667.

@linear-code

linear-code Bot commented Aug 27, 2026

Copy link
Copy Markdown

RIG-2852

RIG-2818

@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://dependencies-rig-2852-renova.compass-eng-docs.pages.dev

Deployed from dependencies/rig-2852-renovate-flake-vendorhash-wails-cap at 97f71bf.

@rigel-mintaka
rigel-mintaka force-pushed the dependencies/rig-2852-renovate-flake-vendorhash-wails-cap branch 2 times, most recently from bab15aa to 61074b7 Compare August 27, 2026 19:30
@rigel-mintaka
rigel-mintaka marked this pull request as ready for review August 27, 2026 19:30
Base automatically changed from dependencies/rig-2774-postgres-digest to main August 28, 2026 03:01
rigel-mintaka and others added 2 commits August 27, 2026 23:04
…1 (RIG-2852)

Two Renovate gaps surfaced landing GTK4 T1 (RIG-2818, PR #667), both in
tools/renovate/.

Gap 1 (bug, all Go bumps): refresh-fod-hashes.ts refreshed the Go vendorHash
in guest-image/default.nix but not the IDENTICAL one in flake.nix:52 — both
are buildGoModule + proxyVendor over the same go/, so a gomod bump moves both
and the stale flake.nix pin failed `nix flake check` (hash-mismatch), the
RIG-2432 easy-dep-bump failure class. Add a `mirrorFiles` field to the Go
FodEntry: the build vehicle realises guestd's FOD once, and the recomputed SRI
is mirrored to flake.nix (equal by construction, no second realise). Add
flake.nix to the top-level postUpgradeTasks.fileFilters so Renovate commits the
mirror edit.

Gap 2 (safety, wails): no cap on github.com/wailsapp/wails/v3, so Renovate
would auto-open a v3.1 bump violating the GTK4-migration "Never v3.1" floor
(compass-gtk4-migration/design.md §Global Constraints). Add a gomod packageRule
capping it with a REGEX allowedVersions `/^v?3\.0\./` — not a semver range,
because gomod's node-semver ranges exclude a prerelease at a different
major.minor.patch, so `< 3.1.0-0` would wrongly reject the current
v3.0.0-beta.0 pin. Admits v3.0.0-beta.N and future v3.0.x; rejects v3.1+ and v4+.

Tests: refresh-fod-hashes.test.ts asserts the flake.nix mirror is refreshed to
the same SRI on a go/go.mod bump (red-green verified against a neutered mirror
loop); config.test.ts pins the flake.nix fileFilter and replays the wails regex
against v3.0.0-beta.0 / v3.1.0 / v4.0.0 (red-green verified against a loosened
cap). renovate:ci green (92 pass, typecheck + biome clean).

Refs RIG-2852, RIG-2818, PR #667.
…cap test to live pin

Review round 1 (0 high / 0 medium / 2 low) doc-accuracy nits, both fixed:

- config.json5: the wails-cap comment said go/go.mod pins v3.0.0-beta.0, but it
  now pins v3.0.0-beta.14 (Renovate bumped it via RIG-2818). No behavioral change
  — the regex admits both — but the comment was stale. Made it version-agnostic
  ("a v3.0.0 prerelease today") so it can't drift on the next beta bump.
- config.test.ts: the cap-replay test asserted hard-coded v3.0.0-beta.0/beta.7,
  never the actual pin. Now it reads the wails require line from go/go.mod and
  asserts the shipped regex admits whatever is pinned — tying the cap to ground
  truth (mirrors the postgres-stack live-extraction test), so a future pin/regex
  pairing that would open zero PRs fails here. Red-green verified: a cap that
  rejects the live pin reds the ground-truth assertion.

renovate:ci green (92 pass, typecheck + biome clean).

Refs RIG-2852.

Co-authored-by: Matt Wilkinson <matt@rigel.build>
@rigel-mintaka
rigel-mintaka force-pushed the dependencies/rig-2852-renovate-flake-vendorhash-wails-cap branch from 61074b7 to 97f71bf Compare August 28, 2026 03:05
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.

1 participant