Skip to content

docs(repo): design — Renovate-manage the Go analysis battery pins (RIG-3306) - #908

Draft
rigel-mintaka wants to merge 4 commits into
mainfrom
dependencies/rig-3306-go-analysis-renovate-design
Draft

docs(repo): design — Renovate-manage the Go analysis battery pins (RIG-3306)#908
rigel-mintaka wants to merge 4 commits into
mainfrom
dependencies/rig-3306-go-analysis-renovate-design

Conversation

@rigel-mintaka

Copy link
Copy Markdown
Contributor

Design record for RIG-3306: bring the two hand-maintained Go analysis pins in tools/toolchain/versions/go-analysis.nix (nilaway git-rev, golangci-lint release tag) under Renovate so they cannot silently rot. Ships as its own PR per the design workflow; the merge freezes the contract and implementation follows as a separate stack.

What it decides

  • Two customManagers in tools/renovate/config.json5 — golangci-lint (github-releases) + nilaway (git-refs digest), with depType: "go-analysis" deliberately dodging the toolchain cooldown exemption so golangci-lint keeps the 5-day soak.
  • A new dedicated tools/renovate/refresh-go-analysis-hashes.ts (option b) — the pins carry BOTH a fetchFromGitHub src hash and a vendorHash, which neither existing refresher handles; the new script reuses the proven fake -> realise -> parse-got: mechanism via helpers imported from refresh-fod-hashes.ts.
  • An analysis output on tools/toolchain/gate-tools.nix as the build vehicle, so the refresher realises the same derivation CI checks.
  • Solo-branching (existing un-group rule), the bot-config allowlist entry, and the nilaway cooldown-null packageRule.

Four right-sized tasks (T1–T4), each with Interfaces: and its own red-green test cycle.

Review posture

Drafted by a design subagent, red-teamed by a design-critic subagent; its findings are folded into the record (F1 authenticate the nilaway version-date API call; F2 the slice -> rewrite -> splice contract that keeps a golangci-lint bump from touching nilaway's hashes; F7 the test-resolver extension + the exit-1 observable surface; F5 phrasing). The core choices — option-b refresher, two-pass got: ordering, the depType dodge, and OQ-2 cooldown-null — survived the red-team, verified against the live files.

Open Questions

One load-bearing question remains for Matt (OQ-2: null the 5-day cooldown for the nilaway git-refs digest — recommendation: yes, since a timestamp-less digest under strict internalChecksFilter is marked permanently pending and cuts zero PRs, the exact silent-rot this issue fixes). Routed to Matt as a Linear issue (compass mobile-data mode, no ask); folded as a Decision before the merge-freeze. OQ-1/OQ-3/OQ-4 are non-load-bearing deferrals recorded in the record.

Ledger-impact: none — Draft design record; DL rows are appended to docs/designs/DECISIONS.md at freeze once Matt ratifies (mirrors the sibling docs/designs/repo/compass-renovate-migration.md Draft record).

Refs RIG-3306

Co-authored-by: Matt Wilkinson matt@rigel.build

@trunk-io

trunk-io Bot commented Sep 5, 2026

Copy link
Copy Markdown

Merging to main in this repository is managed by Trunk.

  • To merge this pull request, check the box to the left or comment /trunk merge below.

After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here

@linear-code

linear-code Bot commented Sep 5, 2026

Copy link
Copy Markdown

RIG-3306

@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown

Compass engineering docs preview: https://dependencies-rig-3306-go-ana.compass-eng-docs.pages.dev

Deployed from dependencies/rig-3306-go-analysis-renovate-design at b8cbd3c.

Changed pages:

rigel-mintaka and others added 2 commits September 5, 2026 20:11
…G-3306)

Design record for RIG-3306: bring the two hand-maintained Go analysis pins in `tools/toolchain/versions/go-analysis.nix` (nilaway git-rev, golangci-lint release tag) under Renovate so they cannot silently rot. Ships as its own PR per the design workflow; the merge freezes the contract and implementation follows as a separate stack.

## What it decides

- **Two customManagers** in `tools/renovate/config.json5` — golangci-lint (github-releases) + nilaway (git-refs digest), with `depType: "go-analysis"` deliberately dodging the toolchain cooldown exemption so golangci-lint keeps the 5-day soak.
- **A new dedicated `tools/renovate/refresh-go-analysis-hashes.ts`** (option b) — the pins carry BOTH a fetchFromGitHub `src` hash and a `vendorHash`, which neither existing refresher handles; the new script reuses the proven fake -> realise -> parse-`got:` mechanism via helpers imported from `refresh-fod-hashes.ts`.
- **An `analysis` output on `tools/toolchain/gate-tools.nix`** as the build vehicle, so the refresher realises the same derivation CI checks.
- Solo-branching (existing un-group rule), the bot-config allowlist entry, and the nilaway cooldown-null packageRule.

Four right-sized tasks (T1–T4), each with `Interfaces:` and its own red-green test cycle.

## Review posture

Drafted by a `design` subagent, red-teamed by a `design-critic` subagent; its findings are folded into the record (F1 authenticate the nilaway version-date API call; F2 the slice -> rewrite -> splice contract that keeps a golangci-lint bump from touching nilaway's hashes; F7 the test-resolver extension + the exit-1 observable surface; F5 phrasing). The core choices — option-b refresher, two-pass got: ordering, the depType dodge, and OQ-2 cooldown-null — survived the red-team, verified against the live files.

## Open Questions

One load-bearing question remains for Matt (**OQ-2**: null the 5-day cooldown for the nilaway git-refs digest — recommendation: yes, since a timestamp-less digest under strict `internalChecksFilter` is marked permanently pending and cuts zero PRs, the exact silent-rot this issue fixes). Routed to Matt as a Linear issue (compass mobile-data mode, no `ask`); folded as a Decision before the merge-freeze. OQ-1/OQ-3/OQ-4 are non-load-bearing deferrals recorded in the record.

Ledger-impact: none — Draft design record; DL rows are appended to docs/designs/DECISIONS.md at freeze once Matt ratifies (mirrors the sibling docs/designs/repo/compass-renovate-migration.md Draft record).

Refs RIG-3306

Co-authored-by: Matt Wilkinson <matt@rigel.build>
…face, fragment/eviction guards (RIG-3306 review R1)
@rigel-mintaka
rigel-mintaka force-pushed the dependencies/rig-3306-go-analysis-renovate-design branch from bd3a633 to 329e2ed Compare September 6, 2026 00:12
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