[sergo] Sergo Report: cached-enforce-readiness-audit(errorfwrapv)+newexplore-registry-detector-fix - 2026-08-28 #56534
Replies: 0 comments
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
This run started from a stale local cache (last strategy entry: 2026-07-08, R60) but
gh apireconciliation showed thesergolabel now spans issues up to#56253, with only one currently open (#55932, filed by an earlier, untracked run). The gap means many runs' memory writes never persisted — treated as a lower bound going forward, not a hard count. Repo-memory has been updated to reflect this and to record a fix for a dead detector (see Tool updates).Strategy this run: a cached playbook (enforcement-readiness audit — the most consistently productive pattern in this repo's history) applied to a new target (
errorfwrapv, one of 11 lintersdoc_sync_test.gomarksnotYetEnforced, whose reason explicitly invites a post-fix audit). The audit surfaced a linter blind spot that was hiding a real, live bug.Tool updates
cmd/linters/main.gowas refactored down to 24 lines (multichecker.Main(linters.All()...)); the old detector (grep -c Analyzer main.go) now returns 0. Analyzer registration lives inpkg/linters/registry.go'sallAnalyzersslice. New detector:grep -c '\.Analyzer,$' pkg/linters/registry.go→ 67, cross-checked againstcgo.ymlLINTER_FLAGScounts (55 native-enforced + 11 documented-notYetEnforced+ssljsonas a filesystem-anchor special case = 67).Strategy split
LINTER_FLAGSenablement) — this pattern has closed ~10 issues historically with a high hit rate.errorfwrapvspecifically, since it's one of the fewnotYetEnforcedlinters whose documented reason is "needs a re-audit" rather than "known prod violations to remediate" — a fresh, unaudited surface.Findings
errorfwrapv's format-string matcher only accepts a literal*ast.BasicLitascall.Args[0](pkg/linters/errorfwrapv/errorfwrapv.go:70-73). Anyfmt.Errorfcall whose format string is built by concatenation (message + "literal") is invisible to the analyzer — it returns before ever inspecting verbs or the trailing error argument.pkg/cli/audit_run_pipeline.go:317-325'scacheRecoveryError()helper builds its format string viamessage + "\n\n" + ... + "Original error: %v"and passeserr— using%vinstead of%w. The wrapped error can't be unwrapped viaerrors.Is/errors.As, in a file that otherwise relies onerrors.Is(err, ErrNoArtifacts)for control flow. Two call sites are affected.fmt.Errorfcall underpkg/with a concatenated format string and a trailing%v-formatted error — a narrow, well-isolated finding, not a systemic pattern.Task generated
One issue filed (
aw_sg2808a1): fixcacheRecoveryErrorto use%w, hardenerrorfwrapvto resolve concatenated format strings, add regression testdata, then re-audit before enabling-errorfwrapvincgo.yml.Metrics
hardcodedfilepath,largefunc,manualpathconcat,packagelevelmutableslicemap,seenmapbool,sprintferrdot,stringsconcatloop,lenstringzero,excessivefuncparams) were scoped for future runs rather than shallow-audited under time pressure this rungh api issues?labels=sergo(open + a targetedsearch/issuesquery forerrorfwrapv/cacheRecoveryError) — no prior issue on this exact findingHistorical context
Prior runs (through R60) systematically closed dozens of issues across bug classes: syntactic stdlib-package matching,
FuncLitscope-boundary bugs,SuggestedFixcompile-correctness (thestringbytesroundtrip/writebytestringisExactStringclass), node-filter/pattern-set narrowness, and CI-enforcement drift. That last class is still live:#55932(open) covers the wasm/nativeLINTER_FLAGSasymmetry forcontextcancelnotdeferred.Recommendations & next-run focus
aw_sg2808a1lands, then continue the enforcement-readiness sweep on the remaining unenforced linters listed above.fmterrorfnoverbs,sprintferrdot,sprintfbool, andsprintfintfor the samecall.Args[0].(*ast.BasicLit)-only pattern — they likely share the identical blind spot to concatenated/dynamic format strings.gh api repos/github/gh-aw/issues?labels=sergoevery run regardless of local memory state, since this run found the local history undercounts real activity.References:
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
api.anthropic.comTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.
All reactions