Skip to content

ci: restore green CI after upstream linter and vuln-DB drift#1006

Merged
cpcloud merged 2 commits into
micasa-dev:mainfrom
cpcloud:ci/pin-golangci-lint
May 21, 2026
Merged

ci: restore green CI after upstream linter and vuln-DB drift#1006
cpcloud merged 2 commits into
micasa-dev:mainfrom
cpcloud:ci/pin-golangci-lint

Conversation

@cpcloud
Copy link
Copy Markdown
Collaborator

@cpcloud cpcloud commented May 21, 2026

Both commits address the same shape of problem: an external scanner advanced past main's last CI build (2026-04-27) and started flagging the codebase without any of our code changing.

Commits

  • ci(lint): pin golangci-lint to v2.11.4golangci-lint-action resolves the latest golangci-lint at runtime when no version: is set. 2.12.x slipped in and strengthened goconst defaults, tripping on dozens of pre-existing duplicated strings in test files and seed data. Pinning to v2.11.4 (the version main's last green run used) restores lint. Bumping the linter and fixing the new findings is a follow-up.

  • chore(deps): bump scoped Go override to 1.26.3 — Six new Go stdlib advisories (GO-2026-4918, 4971, 4977, 4980, 4982, 4986) landed in the vuln DB on 2026-05-07, all fixed in Go 1.26.3. Bumps the scoped Go override in nix/overlay.nix so the VHS → Chromium closure does not rebuild from source.

Locally: nix run '.#govulncheck' → exit 0, nix build '.#micasa' → ok.

The `golangci-lint-action` resolves the latest golangci-lint at runtime
when no `version` is set, so 2.12.x slipped in via the action's
release-tracking lookup. 2.12.x strengthens `goconst` defaults and trips
on dozens of pre-existing duplicated strings across test files and seed
data, breaking lint on every open PR (e.g. micasa-dev#998) while main passes only
because it hasn't been re-built since 2026-04-27.

Pin to v2.11.4 — the version main's last green run used — to restore CI.
Bumping the linter and fixing the new findings is a separate change.
@cpcloud cpcloud added the ci CI/CD pipeline changes label May 21, 2026
govulncheck reports six new stdlib advisories that landed in the Go
vulnerability database on 2026-05-07 and are fixed in 1.26.3:

  GO-2026-4918  net/http HTTP/2 SETTINGS frame infinite loop (CVE-2026-33814)
  GO-2026-4971  net Dial/LookupPort NUL panic on Windows (CVE-2026-39836)
  GO-2026-4977  net/mail consumePhrase DoS (CVE-2026-42499)
  GO-2026-4980  html/template empty <script type=> escape bug (CVE-2026-39826)
  GO-2026-4982  html/template <meta> URL escape gap (CVE-2026-39823)
  GO-2026-4986  net/mail parsing CPU/memory exhaustion (CVE-2026-39820)

Same pattern as the prior 1.26.1 → 1.26.2 bump: scoped override only,
so the VHS → Chromium closure does not rebuild from source.

Verified locally with `nix run '.#govulncheck'` (exits 0) and
`nix build '.#micasa'` (succeeds).
@cpcloud cpcloud added the chore Maintenance and housekeeping label May 21, 2026
@cpcloud cpcloud changed the title ci(lint): pin golangci-lint to v2.11.4 ci: restore green CI after upstream linter and vuln-DB drift May 21, 2026
@cpcloud cpcloud merged commit 121612d into micasa-dev:main May 21, 2026
28 checks passed
@cpcloud cpcloud deleted the ci/pin-golangci-lint branch May 21, 2026 12:11
cpcloud added a commit that referenced this pull request May 21, 2026
## Summary

- Pin the strict errorlint settings (`errorf` + `errorf-multi` +
`comparison` + `asserts`) in `.golangci.yml`. The codebase passes
cleanly across 700+ `fmt.Errorf` call sites.
- Reuse the existing `MIMEApplicationPDF` constant for the in-package
`internal/extract/llmextract_test.go` fixtures.
- Refresh `.claude/codebase/*.md` to cover the packages that have landed
since the last verification: `relay`, `sync`, `crypto`, `mcp`, `sqlfmt`,
`address`, `uid`. Document the sync oplog hooks, the `rlsdb.DB.Tx`
scoping rule, and the per-entity `store_*.go` split in `internal/data/`.

The original branch also extracted provider/tool/lock constants and
converted backward loops to `slices.Backward`, but `main` landed
equivalent (often broader) changes in #1006 first, so those commits
dropped out during rebase. What's left is the errorlint pin, the
test-fixture cleanup, and the codebase-map refresh.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Maintenance and housekeeping ci CI/CD pipeline changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant