From 81c5f6f832d63a68354d6bf435a30d6860546a5a Mon Sep 17 00:00:00 2001 From: Boden Fuller Date: Sat, 6 Jun 2026 03:41:26 -0400 Subject: [PATCH] chore(lint): clear 13 golangci-lint findings (errcheck/staticcheck/copyloopvar) (ag-tcf0.1 #golangci-lint-clear) --- cli/cmd/ao/cron_self_adjust.go | 2 +- cli/cmd/ao/loop_blocked.go | 8 ++++---- cli/cmd/ao/loop_next_work.go | 2 +- cli/cmd/ao/provenance_trace_test.go | 1 - cli/cmd/ao/reconcile.go | 19 ++----------------- cli/internal/canon/ledger.go | 4 ++-- cli/internal/scenarios/validate.go | 2 +- cli/internal/skills/catalog.go | 4 ++-- 8 files changed, 13 insertions(+), 29 deletions(-) diff --git a/cli/cmd/ao/cron_self_adjust.go b/cli/cmd/ao/cron_self_adjust.go index 5308eecfb..20a59c41b 100644 --- a/cli/cmd/ao/cron_self_adjust.go +++ b/cli/cmd/ao/cron_self_adjust.go @@ -283,7 +283,7 @@ func countCronHistoryRows(path string) int { if err != nil { return 0 } - defer f.Close() + defer func() { _ = f.Close() }() scanner := bufio.NewScanner(f) scanner.Buffer(make([]byte, 0, 64*1024), 1024*1024) n := 0 diff --git a/cli/cmd/ao/loop_blocked.go b/cli/cmd/ao/loop_blocked.go index 4ae8e3b9b..1c3f2ad65 100644 --- a/cli/cmd/ao/loop_blocked.go +++ b/cli/cmd/ao/loop_blocked.go @@ -234,7 +234,7 @@ func appendBlockedEvent(path string, event BlockedEvent) error { if err != nil { return fmt.Errorf("open blocked log %s: %w", path, err) } - defer f.Close() + defer func() { _ = f.Close() }() data, err := json.Marshal(event) if err != nil { return fmt.Errorf("marshal blocked event: %w", err) @@ -256,7 +256,7 @@ func readBlockedEvents(path string) ([]BlockedEvent, error) { } return nil, fmt.Errorf("open blocked log %s: %w", path, err) } - defer f.Close() + defer func() { _ = f.Close() }() scanner := bufio.NewScanner(f) scanner.Buffer(make([]byte, 0, 64*1024), 1024*1024) var events []BlockedEvent @@ -292,12 +292,12 @@ func rewriteBlockedEvents(path string, events []BlockedEvent) error { for _, ev := range events { data, err := json.Marshal(ev) if err != nil { - f.Close() + _ = f.Close() _ = os.Remove(tmp) return fmt.Errorf("marshal blocked event: %w", err) } if _, err := f.Write(append(data, '\n')); err != nil { - f.Close() + _ = f.Close() _ = os.Remove(tmp) return fmt.Errorf("write tmp: %w", err) } diff --git a/cli/cmd/ao/loop_next_work.go b/cli/cmd/ao/loop_next_work.go index 44beadcee..5833e7520 100644 --- a/cli/cmd/ao/loop_next_work.go +++ b/cli/cmd/ao/loop_next_work.go @@ -128,7 +128,7 @@ func appendNextWorkDecision(cwd string, rec ladder.Recommendation, now time.Time if err != nil { return fmt.Errorf("open %s: %w", path, err) } - defer f.Close() + defer func() { _ = f.Close() }() data, err := json.Marshal(row) if err != nil { return fmt.Errorf("marshal log row: %w", err) diff --git a/cli/cmd/ao/provenance_trace_test.go b/cli/cmd/ao/provenance_trace_test.go index dc901fc86..2a91e9daf 100644 --- a/cli/cmd/ao/provenance_trace_test.go +++ b/cli/cmd/ao/provenance_trace_test.go @@ -76,7 +76,6 @@ func loadExpected(t *testing.T) expectedOrphanFixtures { func TestProvenanceTrace_StrictCatchesEachSeededOrphan(t *testing.T) { exp := loadExpected(t) for _, fx := range exp.Fixtures { - fx := fx t.Run(fx.File, func(t *testing.T) { resetProvTraceFlags() provTraceStrict = true diff --git a/cli/cmd/ao/reconcile.go b/cli/cmd/ao/reconcile.go index 8b14501d8..539ded4bf 100644 --- a/cli/cmd/ao/reconcile.go +++ b/cli/cmd/ao/reconcile.go @@ -632,16 +632,7 @@ func parseReconcileGHRuns(raw []byte) ([]reconcileCIRun, error) { } runs := make([]reconcileCIRun, 0, len(ghRuns)) for _, run := range ghRuns { - runs = append(runs, reconcileCIRun{ - DatabaseID: run.DatabaseID, - WorkflowName: run.WorkflowName, - Status: run.Status, - Conclusion: run.Conclusion, - HeadSHA: run.HeadSHA, - DisplayTitle: run.DisplayTitle, - URL: run.URL, - CreatedAt: run.CreatedAt, - }) + runs = append(runs, reconcileCIRun(run)) } return runs, nil } @@ -769,13 +760,7 @@ func isReleaseLike(title, releaseTag string) bool { } func summarizeBead(issue bdIssueForReconcile) reconcileBeadSummary { - return reconcileBeadSummary{ - ID: issue.ID, - Title: issue.Title, - Status: issue.Status, - Priority: issue.Priority, - Parent: issue.Parent, - } + return reconcileBeadSummary(issue) } func firstBeadEvidence(beads []reconcileBeadSummary) string { diff --git a/cli/internal/canon/ledger.go b/cli/internal/canon/ledger.go index 2ebb51b4d..ee6fa1d54 100644 --- a/cli/internal/canon/ledger.go +++ b/cli/internal/canon/ledger.go @@ -36,7 +36,7 @@ func (l *ledger[T]) append(record T) error { if err != nil { return fmt.Errorf("open ledger: %w", err) } - defer f.Close() + defer func() { _ = f.Close() }() if _, err := f.Write(append(data, '\n')); err != nil { return fmt.Errorf("write record: %w", err) } @@ -67,7 +67,7 @@ func (l *ledger[T]) load() ([]T, error) { if err != nil { return nil, fmt.Errorf("open ledger: %w", err) } - defer f.Close() + defer func() { _ = f.Close() }() var out []T scanner := bufio.NewScanner(f) diff --git a/cli/internal/scenarios/validate.go b/cli/internal/scenarios/validate.go index 9639fbea3..747d55944 100644 --- a/cli/internal/scenarios/validate.go +++ b/cli/internal/scenarios/validate.go @@ -138,7 +138,7 @@ func checkStepOrder(name string, given, when, then int) error { if then < 0 { return fmt.Errorf("scenario %q: missing Then step", name) } - if !(given < when && when < then) { + if given >= when || when >= then { return fmt.Errorf("scenario %q: steps out of order (expected Given before When before Then)", name) } return nil diff --git a/cli/internal/skills/catalog.go b/cli/internal/skills/catalog.go index 702e72dad..a6e566472 100644 --- a/cli/internal/skills/catalog.go +++ b/cli/internal/skills/catalog.go @@ -141,7 +141,7 @@ func Mermaid(entries []CatalogEntry) string { var b strings.Builder b.WriteString("graph LR\n") for _, e := range sorted { - b.WriteString(fmt.Sprintf(" %s[%s]\n", mermaidID(e.Name), e.Name)) + fmt.Fprintf(&b, " %s[%s]\n", mermaidID(e.Name), e.Name) } for _, e := range sorted { deps := append([]string(nil), e.Consumes...) @@ -150,7 +150,7 @@ func Mermaid(entries []CatalogEntry) string { if !known[dep] { continue } - b.WriteString(fmt.Sprintf(" %s --> %s\n", mermaidID(e.Name), mermaidID(dep))) + fmt.Fprintf(&b, " %s --> %s\n", mermaidID(e.Name), mermaidID(dep)) } } return b.String()