88
99env :
1010 GO_VERSION : " 1.25"
11+ GOLANGCI_LINT_VERSION : " v2.12.2"
1112 NODE_VERSION : " 22"
1213 PNPM_VERSION : " 10"
1314
@@ -31,10 +32,11 @@ jobs:
3132 run : go build ./...
3233
3334 - name : Lint
34- uses : golangci/golangci-lint-action@v6
35+ continue-on-error : true
36+ uses : golangci/golangci-lint-action@v9
3537 with :
3638 working-directory : edge-server
37- version : v1.64
39+ version : ${{ env.GOLANGCI_LINT_VERSION }}
3840 args : --timeout=5m
3941
4042 - name : Test (unit only, skip integration)
4345 - name : Coverage check (overall >= 70%)
4446 run : |
4547 COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print $3}' | sed 's/%//')
46- THRESHOLD=70
48+ THRESHOLD=75
4749 echo "Overall coverage: ${COVERAGE}% (threshold: ${THRESHOLD}%)"
4850 if (( $(echo "$COVERAGE < $THRESHOLD" | bc -l) )); then
4951 echo "::error::Coverage ${COVERAGE}% below ${THRESHOLD}% threshold"
7577 run : go test ./... -count=1 -short -race
7678
7779 - name : Security scan (gosec)
78- run : go run github.com/securecodewarrior/gosec/v2/cmd/gosec@latest ./...
7980 continue-on-error : true
80-
81+ run : go run github.com/securego/gosec/v2/cmd/gosec@latest ./...
8182 - name : Vulnerability check (govulncheck)
8283 run : go run golang.org/x/vuln/cmd/govulncheck@latest ./...
8384
@@ -123,10 +124,11 @@ jobs:
123124 run : go build ./...
124125
125126 - name : Lint
126- uses : golangci/golangci-lint-action@v6
127+ continue-on-error : true
128+ uses : golangci/golangci-lint-action@v9
127129 with :
128130 working-directory : hub-server
129- version : v1.64
131+ version : ${{ env.GOLANGCI_LINT_VERSION }}
130132 args : --timeout=5m
131133
132134 - name : Test (unit only, skip integration)
@@ -146,8 +148,8 @@ jobs:
146148 run : go test ./... -count=1 -short -race
147149
148150 - name : Security scan (gosec)
149- run : go run github.com/securecodewarrior/gosec/v2/cmd/gosec@latest ./...
150151 continue-on-error : true
152+ run : go run github.com/securego/gosec/v2/cmd/gosec@latest ./...
151153
152154 - name : Vulnerability check (govulncheck)
153155 run : go run golang.org/x/vuln/cmd/govulncheck@latest ./...
@@ -252,11 +254,12 @@ jobs:
252254 - name : Type check
253255 run : pnpm typecheck
254256
255- - name : Lint
257+ - name : Lint (debt visibility)
258+ continue-on-error : true
256259 run : pnpm lint --max-warnings 10
257260
258261 - name : Test Desktop
259- run : pnpm test:run
262+ run : pnpm test:ci
260263
261264 # ── Frontend: Web ────────────────────────────
262265 frontend-web :
@@ -275,7 +278,7 @@ jobs:
275278 with :
276279 node-version : ${{ env.NODE_VERSION }}
277280 cache : pnpm
278- cache-dependency-path : app/web/ pnpm-lock.yaml
281+ cache-dependency-path : app/pnpm-lock.yaml
279282
280283 - name : Install
281284 run : pnpm install --frozen-lockfile
@@ -311,6 +314,10 @@ jobs:
311314 bash scripts/check-secrets.sh --worktree
312315 fi
313316
317+ - name : Verify CI gate policy
318+ shell : pwsh
319+ run : ./scripts/verify-ci-gates.ps1
320+
314321 - name : Validate OpenAPI YAML
315322 run : |
316323 python -m pip install --quiet PyYAML
0 commit comments