[sergo] Sergo Report: Registry-Delta-38 + Enforce-Readiness Batch - 2026-06-30 #42417
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by Sergo - Serena Go Expert. A newer discussion is available at Discussion #42646. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Executive Summary
Run R52 detected a registry delta (37 → 38 analyzers), freshly audited the new 38th linter
errortypeassertion, and filed one enforce-readiness issue promoting two type-resolved, zero-violation context/error-family linters into the blocking CI gate.grep -c 'Analyzer' cmd/linters/main.go= 38 (was 37). New 38th =errortypeassertion(main.go:65, ADRdocs/adr/42323).errortypeassertionis CLEAN — fully type-resolved, parity-complete, zero production violations.#42416). Reconcile: R51's#aw_sg51a1landed as hardcodedfilepath: hasFormatVerb verb-set too narrow — format-template paths using %x/%t/%c/%g escape exclusion (latent FP) #42174 (open).Tool / Registry Updates
osgetenvlibraryerrortypeassertiondoc.goheaderStrategy — strict 50/50 split
Cached component (proven): registry-delta detector (
grep -c Analyzervs prior) + open-issue reconcile viagh api ...labels=sergo. This is the highest-yield repeatable move and immediately surfaced the new 38th linter and the#42174landing.New exploration: fresh deep-audit of the never-seen
errortypeassertion, plus an enforce-readiness sweep of the two newest context/error-family linters against the curated 14-linter blocking gate incgo.yml:1208— a novel cross-cut of "new linter" × "CI enforcement gap."Run targets: 1 type-resolved audit verdict, ≥1 zero-risk actionable issue, no duplicates. All met.
Findings
F1 — New 38th linter
errortypeassertion: CLEAN (type-resolved)pkg/linters/errortypeassertion/errortypeassertion.go:types.Identical(TypeOf(X), builtinError)(:71-74,:101-103) — no syntactic identifier matching, so it avoids thesyntactic_stdlib_matchFP/FN class entirely.:80-82,:121-123) and named interfaces embeddingerror(documented design,:67-70).*ast.TypeAssertExprand*ast.TypeSwitchStmt(:43-50), including comma-ok andswitch x := err.(type)init forms (typeSwitchX :135-148).nolint.BuildLineIndex/HasDirective+filecheck.IsTestFile.No FP/FN class identified. Consistent with the team's disciplined linter quality.
F2 — Enforce-readiness gap: 2 linters ready but outside the blocking gate
The blocking gate (
cgo.yml:1208) enforces a curated 14 linters with-test=false.make golint-customwith no flags runs all 38 but is only the advisorylint-monsterpath, not a hard gate.errortypeassertion— new, type-resolved, parity-complete, 0 prod violations. Never proposed for enforcement.execcommandwithoutcontext— prerequisites done under closed execcommandwithoutcontext enforce-readiness: propagate context in connectStdioMCPServer (2 sites), add nolint support, then enfo [Content truncated due to length] #38282 (2connectStdioMCPServersites fixed +nolintadded); now type-resolved (ObjectOf→PkgNameos/exec,:94-114) with autofix, 0 prod violations, but the final "then enforce" step was never landed.F3 — Zero-violation evidence (gate scope
./cmd/... ./pkg/...)errortypeassertion: every prod.(*T)targets*ast.*/*types.*(typedast.Node/types.Type), never built-inerror; lone custom-iface assertionpkg/parser/json_path_locator.go:111is not onerror. Nocmd/matches.execcommandwithoutcontext: every prodexec.Command(sits in a non-ctx function (remote_fetch.godownloadFileViaGitClone/resolveRefToSHAViaGit,pip_validation.govalidate*WithPip,dependabot.go:339); the two ctx-receiving funcs (downloadFileViaGit,downloadFileViaRawURL) contain none. Nocmd/matches.F4 — Reconcile
#aw_sg51a1→ landed as hardcodedfilepath: hasFormatVerb verb-set too narrow — format-template paths using %x/%t/%c/%g escape exclusion (latent FP) #42174 (hardcodedfilepath hasFormatVerb narrow), OPEN.execcommandwithoutcontext, which already wiresnolint.doc.gostill reads "30 active" (header drift, doc-sync: pkg/linters/doc.go says "29 active analyzers" but 30 are registered — list omits hardcodedfilepath and sprintferrdot #40436 family) — known, not refiled.Generated Task
T1 — Promote
errortypeassertion+execcommandwithoutcontextinto thecgo.ymlblocking gate. Single-line change: append-errortypeassertion -execcommandwithoutcontexttoLINTER_FLAGSatcgo.yml:1208. Zero current violations → pure regression guard. Validation: run each linter standalone clean, then confirm the gate stays green. Effort: Small. → Filed as#42416.Metrics
#42416)Historical Context
Enforce-readiness issues following this exact template have a strong landing record: #39324 (
timesleepnocontext), #39016 (httpnoctx), #38282 (execcommandwithoutcontextprereqs) — all acted on and closed. Cumulative: 52 runs, 362 findings, 100 tasks, avg score 8.78.Recommendations & Next-Run Focus (R53)
grep -c Analyzer main.govs 38) +doc.go-omitted-minus-known.#42416and#42174.seenmapbool(seenmapbool: duplicate diagnostics for set-maps declared inside function literals (double AST traversal) #40733 double-report),errstringmatch(errstringmatch coverage gap: only strings.Contains(err.Error(), ...) is flagged — HasPrefix/HasSuffix/EqualFold/Index on err.Err [Content truncated due to length] #40244 Contains-only), otherhardcodedfilepathfuncs.References:
Beta Was this translation helpful? Give feedback.
All reactions