Repository navigation
[sergo] Sergo Report: Workflow-Permission-Block Discovery & PR Correction - 2026-10-30 #73100
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.
Overview
Run R112. Serena 24 tools STABLE, Go/TypeScript/Bash language servers ready. Registry STABLE at 85 analyzers (no new linter since R108). Reconcile returned 4 open
sergoissues instead of the 2 predicted by the prior run - chasing down the extra one uncovered a systemic, repo-wide process bug in how this workflow ships CI-enforcement changes.Key finding: R111's "delivered" PR never actually landed
The prior run (R111) reported fixing the 3
readerstringconvproduction call sites and adding-readerstringconvto.github/workflows/cgo.yml, then opening a PR. That PR never existed. Because the payload modified a file under.github/workflows/, the git push was rejected - this workflow's GitHub App credentials lack theworkflowspermission scope needed to create or update workflow YAML.safeoutputssilently converted the failed PR into issue #72856 with manual apply instructions instead of surfacing a hard failure. Re-reading the 3 target files onmainthis run confirmed all three (pkg/cli/secret_set_command.go:283,pkg/workflow/work_queue_memory.go:159,pkg/cli/experiments_fetch.go:88) were still unfixed.This is now a standing rule for every future run: never include a
.github/workflows/*.ymledit in acreate_pull_requestpayload from this workflow. Any CI-enforcement change (adding a linter flag tocgo.yml) must ship as a code-only PR plus a separate note for a maintainer with workflow-write credentials - it can never land as a bot-authored PR here. This retroactively confirms open issue #72309 (enabling 2 more linters incgo.yml) is permanently issue-only too.This run's fix
Redid the
readerstringconvfix as a code-only PR, deliberately excludingcgo.yml:pkg/cli/secret_set_command.go:283pkg/workflow/work_queue_memory.go:159pkg/cli/experiments_fetch.go:88All three replace
strings.NewReader(string(x))withbytes.NewReader(x), removing an unnecessary byte<->string copy. Validated viaserena get_diagnostics_for_file(zero diagnostics on all 3 files) and a fresh repo-wide Grep sweep confirming no other production call sites of this shape remain. PR opened on branchsergo/readerstringconv-nonworkflow-r112, referencing #71997 and #72856.Reconcile summary
paren_unwrap_gap) - re-verified the code fix is genuinely live onmain(commitd3124f02); the issue itself just has no way to auto-close since this workflow has noclose_issuesafe output. No action needed.Strategy split (50/50)
Cached-reuse (50%): standard reconcile-by-reading-code practice (never trust issue/PR state alone) plus the now-standard PR-delivery mode from R110/R111.
New exploration (50%): investigating why the reconcile count didn't match prediction, which led directly to discovering the
workflow_permission_blockfailure mode - a new pattern class with repo-wide implications for every future CI-enforcement finding, not just this one.Metrics
sergo/readerstringconv-nonworkflow-r112)Next-run focus
sergo/readerstringconv-nonworkflow-r112PR actually merges (check file content directly, never trust PR/issue state alone - this run showed both false-positive and false-negative failure modes of that same shortcut).gh api commits?path=pkg/linters/registry.go).References:
All reactions