Repository navigation
[sergo] Sergo Report: DELTA-79to80-newlinter-audit+docsync-gap+reconcile-bulkfix - 2026-10-12 #67867
Closed
Replies: 1 comment
|
This discussion was automatically closed because it expired on 2026-10-13T04:13:44.267Z.
|
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 94. The analyzer registry grew by one (79 -> 80, new linter: walkdirignoredeerror, PR #67757). Reconcile uncovered the first bulk-fix wave seen in this memory's history (previous waves were bulk auto-expires with the bug still present) - 6 of the 7 issues open at R93 were genuinely closed as completed, spot-verified against current code rather than trusted blindly. New-explore on the 80th linter traced an ExprStmt-branch ParenExpr-unwrap gap through a shared helper into 4 other files, and a routine doc/README cross-check turned up a straightforward sync gap on the same new linter. 2 issues filed, both high-confidence and code-verified.
Tool & Registry Changes
serena --help.pkg/linters/registry.goAnalyzer count 79 -> 80. New: walkdirignoredeerror (pkg/linters/walk-dir-ignored-error/, PR [linter-miner] feat: add walk-dir-ignored-error linter #67757), flagsfilepath.Walk/filepath.WalkDircalls that discard their error return.Strategy Split
Cached component (reconcile): Queried
state=open+labels=sergofresh rather than trusting last run's predicted list. Found only 1 of 7 expected opens remained (#65753). Rather than accept the other 6 closures at face value, spot-verified 3 against current source:coverage.findProfilenow sorts profile keys and picks the longest/exact match deterministically (sg91a1 fixed).deferinloop.isInsideLoopnow consultspass.TypesInfo.TypeOf(rangeStmt.X)to detect range-over-func and correctly stops flagging those defers (sg92a1 fixed).cgo.ymlwasm job now has its ownconsolestderrstep, andcloseerrorunchecked's docstring/code now explicitly delegates deferred-Close checking tounchecked_deferredcloseinstead of contradicting it (sg93a1/sg93a2 fixed).New-exploration component: Full first-time audit of the 80th linter plus a routine doc/README/CI-wiring cross-check, which is now a standing day-one practice for any newly merged linter.
Findings
1. ExprStmt branch skips ParenExpr unwrap in 5 places (#67866)
walkdirignoredeerror's own
analyzeAssignStmtcorrectly callsastutil.UnwrapParenExprbefore asserting a*ast.CallExpr, but its siblinganalyzeExprStmtdoes the bare assertion with no unwrap - so a parenthesized bare statement like(filepath.Glob(pattern))escapes detection while_ = (filepath.Glob(pattern))does not. The identical asymmetry was traced to the sharedastutil.MatchDiscardedErrorCallhelper (which backs globwalkignorederror, strconvparseignorederror, and jsonmarshalignoredeerror) and, independently, to closeerrorunchecked.go. Five linters share one narrow but concrete gap. Go's own spec confirms parenthesized bare-call statements are valid and semantically identical to the unparenthesized form.2. doc.go and README.md omit the new 80th linter (#67865)
walkdirignoredeerror does not appear in
pkg/linters/doc.go(header still says 79) orpkg/linters/README.md, and is absent from thenotYetEnforcedmap indoc_sync_test.go. This should failTestDocGo_CountMatchesBullets,TestDocSurfacesMatchRegistryAndSpecList, andTestCIEnforcedLintersMatchRegistrythe next time that package's tests run.Tasks Generated
astutil.UnwrapParenExpr(stmt.X)toMatchDiscardedErrorCall's ExprStmt case, plus the matching one-line fix in walkdirignoredeerror.go and closeerrorunchecked.go.notYetEnforced(or enforce it in cgo.yml).Metrics (this run)
Historical Context
94 cumulative runs, 568 total findings, 162 tasks generated, running average success score 8.72. This is the first run where a majority of a prior run's open issues were confirmed genuinely fixed rather than auto-expired-but-still-broken - the
phantom_reconcilepattern (closed != fixed) has held in the opposite direction before, so this run treated the closures with the same scrutiny as any other reconcile pass rather than assuming good faith.Recommendations / Next-Run Focus
All reactions