Repository navigation
[sergo] Sergo Report: DELTA-43to66-registry-catchup - 2026-08-17 #53288
Closed
Replies: 1 comment
|
This discussion was automatically closed because it expired on 2026-08-18T04:15:37.964Z.
|
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
R61 audit of
pkg/linters/(Go custom analyzer subsystem). Registry grew 43 → 66 analyzers since the last run (R60, 2026-07-08) — a large gap, so this run split effort between catching up on the registry delta and continuing the proven cached-strategy sweeps. Net result: 5 findings, all previously-tracked issues confirmed resolved except one genuinely new gap, 1 issue filed.Tool & registry updates
grep -c Analyzer cmd/linters/main.goregistry-delta heuristic is dead —cmd/linters/main.gowas refactored tomultichecker.Main(linters.All()...), so the grep always returns 0. Replaced with a new detector: compare thepkg/linters/doc.goheader count ("All N active analyzers") againstlen(allAnalyzers)inpkg/linters/registry.go. Confirmed both are in sync at 66 — no doc-drift bug currently.Strategy: 50/50 cached vs. new exploration
Cached (reuse of proven audit classes):
scope_boundary_funclitclass — re-auditedgoroutinemissingrecoverandwalkfuncerrshadowfor FuncLit-boundary correctness onrecover()/defer resolution. Both clean.mapclearloopandmapdeletecheck. Both clean; comment-guards already present.coverage.ShouldApplyacross the coverage-gated linters. All clean.writebytestring) landed:isExactString/buildStringExprnow correctly distinguishes named vs. exact string types before emitting theio.WriteStringautofix.RunWithSuggestedFixesparity gap (Autofix verification-parity gap: 3 of 9 SuggestedFix linters (stringsindexcontains, sprintfint, stringreplaceminusone) have zero [Content truncated due to length] #43313) is fully closed — all 20 SuggestedFix-bearing linters now useRWSFin their tests, not plainanalysistest.Run.New exploration: read the least-audited linter in the registry — the 66th,
packagelevelmutableslicemap(ADR-52920) — against its own founding motivation rather than a generic bug-class sweep. This is the source of the one new finding below.Findings
5 findings (4 confirmed-clean/landed, 1 new gap filed as an issue)
isExactStringnow correctly rejects named string types before theio.WriteStringautofix; testdatabadNamedStringcase now produces compiling output.RunWithSuggestedFixesin their tests.filepath.Walk/WalkDircallback identification viaastutil.IsPkgSelector) without over- or under-attributing across FuncLit boundaries.astutil.HasOverlappingComment) both correct; no regression of previously-fixed mapdeletecheck: autofix silently deletes comments inside the if body — no comment guard, unlike its sibling mapclearloop #46130-class bugs.packagelevelmutableslicemapwholesale-reassignment gap. See task below.Generated task / issue filed
sg61a1 —
packagelevelmutableslicemap(pkg/linters/packagelevelmutableslicemap/packagelevelmutableslicemap.go) only detects mutation viaappend()-reassignment, index-assignment, ordelete(). It never detects wholesale reassignment (globalSlice = nil,= make(...),= x[:0], etc.). This is not a hypothetical: the linter's own founding motivation, issue #52683 (cited in ADR-52920), describes a JS array that is both "reset" and "appended to" — only the "appended to" half is implemented. Confirmed via testdata: zero test coverage for the reassignment shape. Filed with labelsergo(temporary_idaw_sg61a1).Metrics
Historical context
sergo-labeled issues existed pre-run (aside from one stray unrelated probe issue).Recommendations
registry.golen(allAnalyzers)) as the new standard going forward; the oldmain.gogrep heuristic should not be relied on again.Next-run focus (R62)
defer w.Flush()(the most common discard pattern) is never flagged #49902, Enforce-readiness: 4 clean, type-resolved linters have zero production violations — uncheckedflushreturn, bytescomparestring, ni [Content truncated due to length] #50178) before filing new ones.mutation_form_incompletepattern (enumerated match-form dispatch missing a form present in the linter's own founding issue/ADR) as a lens across other state-tracking linters.References:
All reactions