Skip to content

Commit 6c483fe

Browse files
authored
Merge branch 'main' into docs/daily-updates-2026-05-13-22231a2a63284e49
2 parents da26aeb + 4b0ba06 commit 6c483fe

40 files changed

Lines changed: 1895 additions & 368 deletions

.github/aw/imports/githubnext/repo-mind-light-aw/b7f12b67daa31a47c4caa3b5ee3851639edce709/.github_workflows_shared_repo-mind-light.md renamed to .github/aw/imports/githubnext/repo-mind-light-aw/ca993f50371e3fc138e672335bfc5879e60f3e98/.github_workflows_shared_repo-mind-light.md

Lines changed: 16 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.github/skills/go-linters/SKILL.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
name: go-linters
3+
description: Add and validate custom Go analysis linters in gh-aw.
4+
---
5+
6+
# Go Linters
7+
8+
Use this guide when adding a new custom Go analysis linter in this repository.
9+
10+
## Where to add a new linter
11+
12+
1. Create a new package under `pkg/linters/<linter-name>/`.
13+
2. Define an analyzer in that package (exported as `Analyzer`).
14+
3. Add tests in the same package using `analysistest` with fixtures under `testdata/src/...`.
15+
4. Register the analyzer in `cmd/linters/main.go` so it runs via the multichecker binary.
16+
17+
## Build and test linters
18+
19+
- Test only your linter package:
20+
- `go test ./pkg/linters/<linter-name>/...`
21+
- Build the custom linter runner:
22+
- `go build ./cmd/linters`
23+
- Run all custom linters across the repo:
24+
- `make golint-custom`
25+
26+
`make golint-custom` builds `cmd/linters` and runs it against `./cmd/...` and `./pkg/...`.

.github/workflows/cgo.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,50 @@ on:
2222
- 'install-gh-aw.sh'
2323
workflow_dispatch:
2424
jobs:
25+
lint-gate:
26+
name: Lint Gate
27+
runs-on: ubuntu-latest
28+
timeout-minutes: 10
29+
permissions:
30+
contents: read
31+
concurrency:
32+
group: ci-${{ github.ref }}-lint-gate
33+
cancel-in-progress: true
34+
steps:
35+
- name: Checkout code
36+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
37+
38+
- name: Set up Node.js
39+
id: setup-node
40+
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6
41+
with:
42+
node-version: "24"
43+
cache: npm
44+
cache-dependency-path: actions/setup/js/package-lock.json
45+
46+
- name: Set up Go
47+
id: setup-go
48+
uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6
49+
with:
50+
go-version-file: go.mod
51+
cache: true
52+
53+
- name: Install npm dependencies
54+
run: npm ci
55+
working-directory: ./actions/setup/js
56+
57+
- name: Install golangci-lint
58+
run: make install-golangci-lint
59+
60+
- name: Run formatting + lint gate
61+
run: |
62+
make fmt-check
63+
make fmt-check-json
64+
make lint-cjs
65+
2566
test:
67+
needs:
68+
- lint-gate
2669
runs-on: ubuntu-latest
2770
timeout-minutes: 15
2871
permissions:
@@ -227,6 +270,8 @@ jobs:
227270
retention-days: 14
228271

229272
build:
273+
needs:
274+
- lint-gate
230275
runs-on: ubuntu-latest
231276
timeout-minutes: 15
232277
permissions:
@@ -315,6 +360,8 @@ jobs:
315360
GH_TOKEN: ${{ github.token }}
316361

317362
build-wasm:
363+
needs:
364+
- lint-gate
318365
runs-on: ubuntu-latest
319366
timeout-minutes: 15
320367
permissions:
@@ -851,7 +898,15 @@ jobs:
851898
- name: Lint error messages
852899
run: make lint-errors
853900

901+
# Custom Go analysis linters (pkg/linters via cmd/linters multichecker)
902+
# continue-on-error: the existing codebase has large functions; this step is informational
903+
- name: Run custom linters
904+
continue-on-error: true
905+
run: make golint-custom
906+
854907
actions-build:
908+
needs:
909+
- lint-gate
855910
runs-on: ubuntu-latest
856911
timeout-minutes: 10
857912
permissions:
@@ -914,6 +969,8 @@ jobs:
914969
fuzz:
915970
# Only run fuzz tests on main branch (10s is insufficient for PRs)
916971
if: github.ref == 'refs/heads/main'
972+
needs:
973+
- lint-gate
917974
runs-on: ubuntu-latest
918975
timeout-minutes: 20
919976
permissions:
@@ -1072,6 +1129,8 @@ jobs:
10721129
retention-days: 14
10731130

10741131
security:
1132+
needs:
1133+
- lint-gate
10751134
runs-on: ubuntu-latest
10761135
timeout-minutes: 15
10771136
permissions:
@@ -1131,6 +1190,8 @@ jobs:
11311190
security-scan:
11321191
# Only run security scans on main branch to reduce PR overhead
11331192
if: github.ref == 'refs/heads/main'
1193+
needs:
1194+
- lint-gate
11341195
runs-on: ubuntu-latest
11351196
timeout-minutes: 10 # Prevent jobs from hanging indefinitely
11361197
permissions:
@@ -1201,6 +1262,8 @@ jobs:
12011262
run: ./gh-aw compile poem-bot ${{ matrix.tool.flag }} --verbose
12021263

12031264
mcp-server-compile-test:
1265+
needs:
1266+
- lint-gate
12041267
runs-on: ubuntu-latest
12051268
timeout-minutes: 10
12061269
permissions:
@@ -1373,6 +1436,8 @@ jobs:
13731436
13741437
cross-platform-build:
13751438
name: Build & Test on ${{ matrix.os }}
1439+
needs:
1440+
- lint-gate
13761441
runs-on: ${{ matrix.os }}
13771442
timeout-minutes: 20
13781443
permissions:
@@ -1503,6 +1568,8 @@ jobs:
15031568
15041569
alpine-container-test:
15051570
name: Alpine Container Test
1571+
needs:
1572+
- lint-gate
15061573
runs-on: ubuntu-latest
15071574
timeout-minutes: 20
15081575
permissions:
@@ -1639,6 +1706,8 @@ jobs:
16391706
rm -rf test-workspace
16401707
16411708
safe-outputs-conformance:
1709+
needs:
1710+
- lint-gate
16421711
runs-on: ubuntu-latest
16431712
timeout-minutes: 10
16441713
permissions:
@@ -1703,6 +1772,7 @@ jobs:
17031772
- validate-yaml
17041773
- bench
17051774
- check-validator-sizes
1775+
- lint-gate
17061776
- lint-go
17071777
- actions-build
17081778
- fuzz

0 commit comments

Comments
 (0)