Skip to content

Split long CLI logs/reporting functions into focused helpers - #53279

Merged
pelikhan merged 5 commits into
mainfrom
copilot/lint-monster-fix-long-functions
Aug 17, 2026
Merged

Split long CLI logs/reporting functions into focused helpers#53279
pelikhan merged 5 commits into
mainfrom
copilot/lint-monster-fix-long-functions

Conversation

Copilot AI commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

make golint-custom (largefunc, 60-line limit) flagged a cluster of very long functions in the CLI log collection and reporting paths, notably two 321-line functions. This is a behavior-preserving refactor of the five functions listed in the issue; output shape and error semantics are unchanged.

pkg/cli/logs_download.go

  • downloadWorkflowRunLogs (64 → ~25): extracted fetchWorkflowRunLogsArchive, which builds the API endpoint and classifies not-found/expired/auth errors, returning an ok flag for the non-critical "no logs" case.
  • downloadRunArtifacts (321 → ~45): split into cache resolution (resolveCachedArtifacts), planning (planArtifactDownloadenumerateDownloadableArtifacts, planIncrementalDownload), execution (downloadArtifactsIndividually, bulkDownloadArtifacts with buildBulkDownloadArgs, classifyBulkDownloadError, recoverBulkDownloadArtifacts, retryCaseCollisionArtifacts), and post-processing (finalizeArtifactDownload). The repeated "download logs for diagnostics, then clean up an empty dir" block is now downloadWorkflowRunLogsForDiagnostics.
  • ensureUsageAwInfoFallback (73 → ~30): extracted copyUsageAwInfoToRunRoot, resolveActivationArtifactNames, flattenActivationFallback.

The main function now reads as a pipeline:

downloadableNames, individualDownload, done, err := planArtifactDownload(ctx, opts, shouldLogProgress)
if done || err != nil {
    return err
}
...
if individualDownload {
    err = downloadArtifactsIndividually(ctx, opts, downloadableNames)
} else {
    err = bulkDownloadArtifacts(ctx, opts, spinner, downloadableNames)
}
...
return finalizeArtifactDownload(ctx, opts)

pkg/cli/logs_report.go

  • buildLogsData (321 → ~30): the ~25 loose accumulator locals became a logsAggregate struct with accumulateRunTotals, accumulateChainMetrics, classifyRunFailure (returns the failure kind and bumps the matching rollup), and summary. Per-run conversion moved to buildRunData/newRunData with extractRunEngineInfo and applyAwInfoToRunData; the cross-run sections moved to buildLogsSections.

pkg/cli/audit_expanded.go

  • buildMCPServerHealth (96 → ~33): extracted appendMCPServerDetails, appendMissingFailedServers, and finalizeMCPServerHealth (rollups, sort, summary string).

Scope

buildSessionAnalysis (77 lines, same file as buildMCPServerHealth) was left alone — it is not part of this slice.


Generated by 👨‍🍳 PR Sous Chef · gpt54 · 13.7 AIC · ⌖ 5.77 AIC · ⊞ 8.8K ·
Comment /souschef to run again


_Run: https://github.com/github/gh-aw/actions/runs/31997601784_> Generated by 👨‍🍳 PR Sous Chef · gpt54 · 18 AIC · ⌖ 6.85 AIC · ⊞ 8.8K ·

Comment /souschef to run again


make golint-custom (largefunc, 60-line limit) flagged a cluster of very long functions in the CLI log collection and reporting paths, notably two 321-line functions. This is a behavior-preserving refactor of the five functions listed in the issue; output shape and error semantics are unchanged.

pkg/cli/logs_download.go

  • downloadWorkflowRunLogs (64 → ~25): extracted fetchWorkflowRunLogsArchive, which builds the API endpoint and classifies not-found/expired/auth errors, returning an ok flag for the non-critical "no logs" case.
  • downloadRunArtifacts (321 → ~45): split into cache resolution (resolveCachedArtifacts), planning (planArtifactDownloadenumerateDownloadableArtifacts, planIncrementalDownload), execution (downloadArtifactsIndividually, bulkDownloadArtifacts with buildBulkDownloadArgs, classifyBulkDownloadError, recoverBulkDownloadArtifacts, retryCaseCollisionArtifacts), and post-processing (finalizeArtifactDownload). The repeated "download logs for diagnostics, then clean up an empty dir" block is now downloadWorkflowRunLogsForDiagnostics.
  • ensureUsageAwInfoFallback (73 → ~30): extracted copyUsageAwInfoToRunRoot, resolveActivationArtifactNames, flattenActivationFallback.

The main function now reads as a pipeline:

downloadableNames, individualDownload, done, err := planArtifactDownload(ctx, opts, shouldLogProgress)
if done || err != nil {
    return err
}
...
if individualDownload {
    err = downloadArtifactsIndividually(ctx, opts, downloadableNames)
} else {
    err = bulkDownloadArtifacts(ctx, opts, spinner, downloadableNames)
}
...
return finalizeArtifactDownload(ctx, opts)

pkg/cli/logs_report.go

  • buildLogsData (321 → ~30): the ~25 loose accumulator locals became a logsAggregate struct with accumulateRunTotals, accumulateChainMetrics, classifyRunFailure (returns the failure kind and bumps the matching rollup), and summary. Per-run conversion moved to buildRunData/newRunData with extractRunEngineInfo and applyAwInfoToRunData; the cross-run sections moved to buildLogsSections.

pkg/cli/audit_expanded.go

  • buildMCPServerHealth (96 → ~33): extracted appendMCPServerDetails, appendMissingFailedServers, and finalizeMCPServerHealth (rollups, sort, summary string).

Scope

buildSessionAnalysis (77 lines, same file as buildMCPServerHealth) was left alone — it is not part of this slice.


Generated by 👨🍳 PR Sous Chef · gpt54 · 13.7 AIC · ⌖ 5.77 AIC · ⊞ 8.8K ·
Comment /souschef to run again


_Run: https://github.com/github/gh-aw/actions/runs/31997601784_> Generated by 👨🍳 PR Sous Chef · gpt54 · 18 AIC · ⌖ 6.85 AIC · ⊞ 8.8K ·

Comment /souschef to run again

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:

_Run: https://github.com/github/gh-aw/actions/runs/32002564106_> Generated by 👨‍🍳 PR Sous Chef · gpt54 · 9.55 AIC · ⌖ 8.36 AIC · ⊞ 8.8K ·

Comment /souschef to run again


Generated by 👨‍🍳 PR Sous Chef · gpt54 · 10.2 AIC · ⌖ 7.82 AIC · ⊞ 8.8K ·
Comment /souschef to run again

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Refactor long functions in CLI logs-reporting Split long CLI logs/reporting functions into focused helpers Aug 17, 2026
Copilot AI requested a review from pelikhan August 17, 2026 03:25
@pelikhan
pelikhan marked this pull request as ready for review August 17, 2026 04:15
Copilot AI balanced review requested due to automatic review settings August 17, 2026 04:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors oversized CLI log collection and reporting functions into focused helpers while preserving behavior and output.

Changes:

  • Splits artifact download, recovery, and fallback logic into helpers.
  • Extracts run aggregation and report section construction.
  • Separates MCP server health processing and finalization.
Show a summary per file
File Description
pkg/cli/logs_download.go Decomposes artifact and workflow-log download flows.
pkg/cli/logs_report.go Extracts run conversion, aggregation, and report sections.
pkg/cli/audit_expanded.go Splits MCP server health construction into helpers.

Review details

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

  • Files reviewed: 3/3 changed files
  • Comments generated: 0
  • Review effort level: Balanced

@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Ponytail Reviewer completed successfully!

Ponytail review: this is a lint-driven (golint-custom 60-line limit), behavior-preserving refactor. Every extracted helper (resolveCachedArtifacts, planArtifactDownload, enumerateDownloadableArtifacts, classifyBulkDownloadError, recoverBulkDownloadArtifacts, logsAggregate methods, buildRunData/newRunData, appendMCPServerDetails, etc.) exists to keep its parent function under the 60-line cap or to dedupe genuine repeated logic (e.g. downloadWorkflowRunLogsForDiagnostics merges two duplicated blocks). No speculative abstractions, unused flexibility, or hand-rolled stdlib equivalents found. Lean already. Ship.

Generated by Ponytail Reviewer for #53279

@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Test Quality Sentinel completed test quality analysis.

No test files were added or modified in this PR. Test Quality Sentinel skipped.

🧪 Test quality analysis by Test Quality Sentinel

@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

PR Code Quality Reviewer completed the code quality review.

🔎 Code quality review by PR Code Quality Reviewer

@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer

@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Design Decision Gate 🏗️ completed the design decision gate check.

🏗️ ADR gate enforced by Design Decision Gate 🏗️

@github-actions

Copy link
Copy Markdown
Contributor

Comment Memory

reviewed_at: 2026-08-17T00:00:00Z
review_event: REQUEST_CHANGES
top_themes:
  - artifact download refactor changed cache-hit/no-artifacts behavior
  - missing regression test for usage-only + .dockerbuild edge case
files_reviewed:
  - pkg/cli/audit_expanded.go
  - pkg/cli/logs_download.go
  - pkg/cli/logs_report.go
comment_count: 0

Note

This comment is managed by comment memory.

It stores persistent context for this thread in the code block at the top of this comment.
Edit only the text inside the backtick fences; workflow metadata and the footer are regenerated automatically.

Learn more about comment memory

🔎 Code quality review by PR Code Quality Reviewer · gpt54 · 15.5 AIC · ⌖ 7.08 AIC · ⊞ 6.9K ·
Comment /review to run again

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REQUEST_CHANGES

This refactor is mostly mechanical, but it introduced a real behavior change in artifact handling: a usage-only request can now return ErrNoArtifacts for runs that contain only non-downloadable .dockerbuild artifacts, even when the requested usage artifact is already present on disk. That turns a cache hit into a hard failure.

Blocking themes
  • Cached-artifact short-circuiting now depends on findMissingFilterEntries, but the later individual-download path still treats an empty downloadableNames set as ErrNoArtifacts without distinguishing “filter already satisfied” from “nothing exists”.
  • This is exactly the kind of regression a behavior-preserving refactor is supposed to avoid; please add a focused test around cached usage-only runs / .dockerbuild-only residual artifacts.

🔎 Code quality review by PR Code Quality Reviewer · gpt54 · 15.5 AIC · ⌖ 7.08 AIC · ⊞ 6.9K
Comment /review to run again

@github-actions

Copy link
Copy Markdown
Contributor

🏗️ Design Decision Gate — ADR Required

This PR makes significant changes to core business logic (823 new lines across pkg/cli/) but does not have a linked Architecture Decision Record (ADR).

📄 Draft ADR committed: docs/adr/53279-decompose-long-cli-functions-into-focused-helpers.md — review and complete it before merging.

🔒 This PR cannot merge until an ADR is linked in the PR body.

📋 What to do next
  1. Review the draft ADR committed to your branch — it was generated from the PR diff
  2. Complete the missing sections — add context the AI couldn't infer, refine the decision rationale, and list real alternatives you considered
  3. Commit the finalized ADR to docs/adr/ on your branch
  4. Reference the ADR in this PR body by adding a line such as:

    ADR: ADR-53279: Decompose Long CLI Functions into Focused Helpers

Once an ADR is linked in the PR body, this gate will re-run and verify the implementation matches the decision.

❓ Why ADRs Matter

"AI made me procrastinate on key design decisions. Because refactoring was cheap, I could always say 'I'll deal with this later.' Deferring decisions corroded my ability to think clearly."

ADRs create a searchable, permanent record of why the codebase looks the way it does. Future contributors (and your future self) will thank you.

📋 Michael Nygard ADR Format Reference

An ADR must contain these four sections to be considered complete:

  • Context — What is the problem? What forces are at play?
  • Decision — What did you decide? Why?
  • Alternatives Considered — What else could have been done?
  • Consequences — What are the trade-offs (positive and negative)?

All ADRs are stored in docs/adr/ as Markdown files numbered by PR number (e.g., 0042-use-postgresql.md for PR #42).

🏗️ ADR gate enforced by Design Decision Gate 🏗️ · sonnet46 · 94.4 AIC · ⌖ 14.7 AIC · ⊞ 9K ·
Comment /review to run again

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: Split long CLI logs/reporting functions into focused helpers

This is a clean, well-structured refactoring that splits large functions into focused helpers. Logic is faithfully preserved — no behavioral regressions detected.

Correctness verified:

  • recoverBulkDownloadArtifacts always calls markArtifactDownloaded, which is safe because it is only reachable from bulkDownloadArtifacts after classifyBulkDownloadError handles fatal errors — the old if err == nil || skippedNonZip || skippedCaseCollision guard is now implicit in the call chain.
  • Spinner lifecycle is correct: individual path stops the spinner before delegating; bulk path stops on error inside bulkDownloadArtifacts and calls StopWithMessage in the parent on success.
  • logsAggregate struct correctly initialises engineCounts as make(map[string]int) at the single call site.
  • The fetchWorkflowRunLogsArchive extraction cleanly separates download from extraction, improving testability.

✅ LGTM — approved.

🧵 Reviewed using Impeccable skills by Impeccable Skills Reviewer · sonnet46 · 49.5 AIC · ⌖ 8.01 AIC · ⊞ 5.6K

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skills-Based Review 🧠

Applied /codebase-design — one correctness issue, one doc-contract nit. Requesting changes.

📋 Key Themes & Highlights

Key Themes

  • Spinner lifecycle gap (pkg/cli/logs_download.go line 192): bulkDownloadArtifacts stops the spinner only when gh run download itself errors. If the gh command succeeds but recoverBulkDownloadArtifacts returns an error (e.g. marker write or artifact retry failure), bulkDownloadArtifacts returns the error, the caller returns early, and StopWithMessage at line 199 is never reached — leaving the spinner running. This is a new path introduced by the refactor.

  • Implicit contract on classifyBulkDownloadError (pkg/cli/logs_download.go line 514): the err parameter is used only for isPermissionError; the rest of the logic reads output []byte. This non-obvious split deserves a doc comment clarification.

Positive Highlights

  • ✅ Excellent extraction of fetchWorkflowRunLogsArchive — the ([]byte, bool, error) triple cleanly separates "not found / expired" from real errors.
  • logsAggregate struct with method receivers is a big improvement over 20 loose accumulator locals.
  • copyUsageAwInfoToRunRoot is now independently testable — good deepening opportunity taken.
  • classifyRunFailure as an logsAggregate method makes the side-effects on the aggregate explicit.
  • ✅ The PR description gives an accurate, file-by-file account of every extracted function — excellent author communication.

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · sonnet46 · 103.2 AIC · ⌖ 9.79 AIC · ⊞ 7.7K
Comment /matt to run again

Comment thread pkg/cli/logs_download.go
} else {
logsDownloadLog.Printf("Could not list artifacts (will use bulk download): %v", listErr)
// No .dockerbuild artifacts detected (or listing failed) — use efficient bulk download.
if err := bulkDownloadArtifacts(ctx, opts, spinner, downloadableNames); err != nil {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[/codebase-design] bulkDownloadArtifacts stops the spinner when the gh run download command itself fails (line 459), but if the command succeeds and recoverBulkDownloadArtifacts subsequently errors (e.g. retryCaseCollisionArtifactsdownloadArtifactsByName returns an error), the spinner is never stopped. The caller at line 192 returns that error immediately, bypassing the StopWithMessage at line 199.

💡 Suggested fix

In downloadRunArtifacts, stop the spinner before the early return on bulk-download error:

if err := bulkDownloadArtifacts(ctx, opts, spinner, downloadableNames); err != nil {
    if !opts.verbose {
        spinner.Stop()
    }
    return err
}

SpinnerWrapper.Stop() is idempotent, so calling it again on the normal success path is safe.

@copilot please address this.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 69d61e1: downloadRunArtifacts now stops the spinner before returning any bulk-download recovery error.

Comment thread pkg/cli/logs_download.go
// classifyBulkDownloadError inspects a failed gh run download invocation and reports
// whether the failure can be recovered from by retrying artifacts individually.
// A non-nil error means the failure is fatal for this run.
func classifyBulkDownloadError(ctx context.Context, opts downloadArtifactsOptions, output []byte, err error) (skippedNonZip bool, skippedCaseCollision bool, fatal error) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[/codebase-design] classifyBulkDownloadError's err parameter is used only for isPermissionError(err); the rest of the classification relies solely on output []byte. This is a non-obvious contract — the caller must pass the original err even though the function name implies it works entirely from output text.

💡 Suggestion

Strengthen the doc comment to make the contract explicit:

// classifyBulkDownloadError inspects a failed gh run download invocation.
// err must be the non-nil error returned by cmd.CombinedOutput() and is used
// exclusively to detect authentication failures. output is the combined
// stdout+stderr from the same invocation.

Alternatively, consider testing isPermissionError at the call site in bulkDownloadArtifacts before delegating to classifyBulkDownloadError, keeping the two classification concerns visibly separate.

@copilot please address this.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 69d61e1: the doc comment now states that err comes from CombinedOutput for authentication detection and output is the matching combined stdout/stderr.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:

  • Failed reviews to address:
    • Matt Pocock Skills Reviewer requested changes.
    • PR Code Quality Reviewer requested changes.
  • Refresh the branch with the latest base changes.
  • Run the pr-finisher skill after the fixes and summarize the outcome.

Run: https://github.com/github/gh-aw/actions/runs/31996014734

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 13.7 AIC · ⌖ 5.77 AIC · ⊞ 8.8K ·
Comment /souschef to run again

@github-actions

Copy link
Copy Markdown
Contributor

Hey @github/gh-aw-core 👋 — thanks for working on reducing those linting violations in the CLI logs/reporting paths! This refactor is solid: the extracted helpers are well-named, the pipeline reads cleanly, and the ADR documents the decision clearly.

Here's one concrete thing that would strengthen this PR:

  • Add unit tests for extracted helpers — The five refactored functions combine several complex decisions (artifact enumeration, cache resolution, incremental planning, bulk download dispatch, error recovery, finalization). While this is a behavior-preserving refactor, unit tests for the new helpers (e.g., planIncrementalDownload, classifyBulkDownloadError, accumulateRunTotals) would give reviewers confidence that each step works as expected in isolation. Target at least the happy path and one error case per helper.

If you'd like a hand adding those tests, you can assign this prompt to your coding agent:

Add unit tests for the extracted CLI helper functions from PR #53279.

For each of these helpers, write tests covering the happy path and at least one error case:
1. pkg/cli/logs_download.go: planArtifactDownload, planIncrementalDownload, classifyBulkDownloadError
2. pkg/cli/logs_report.go: accumulateRunTotals, accumulateChainMetrics, classifyRunFailure
3. pkg/cli/audit_expanded.go: appendMCPServerDetails, finalizeMCPServerHealth

Keep tests focused on the helper's single responsibility; use table-driven tests for multiple scenarios.

Generated by ✅ Contribution Check · auto · 44.3 AIC · ⌖ 3.27 AIC · ⊞ 9.1K ·

Copilot AI commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:...

Addressed in 69d61e1. The branch is refreshed with latest main; both requested reviews are covered by the spinner fix, classifier contract clarification, and cached usage/.dockerbuild regression test. The pr-finisher pass completed with local lint, tests, recompile, review, and security checks passing.

Copilot AI requested a review from gh-aw-bot August 17, 2026 05:27
@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:

Run: https://github.com/github/gh-aw/actions/runs/31997601784

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 18 AIC · ⌖ 6.85 AIC · ⊞ 8.8K ·
Comment /souschef to run again

Copilot AI commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:...

Reviewed and confirmed addressed by 69d61e1: the cache-hit behavior is preserved and the usage-only/.dockerbuild regression test passes. The branch is current with main; the full pr-finisher validation passed (fmt, lint, unit/full tests, targeted regression, recompile, secret scan). The cited Sous Chef failure was unrelated to this PR (#53283 stacked-PR update).

@github-actions

Copy link
Copy Markdown
Contributor

PR Triage

Category: refactor | Risk: medium | Score: 48/100

  • Impact: 20/50 | Urgency: 8/30 | Quality: 20/20 (CI passing, includes ADR doc)

Recommended action: fast_track (CI green, well-documented)

Generated by 🔧 PR Triage Agent · auto · 43 AIC · ⌖ 2.45 AIC · ⊞ 8.1K ·

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:

Run: https://github.com/github/gh-aw/actions/runs/32002564106

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 9.55 AIC · ⌖ 8.36 AIC · ⊞ 8.8K ·
Comment /souschef to run again

Copilot AI commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:...

Confirmed addressed by 69d61e1: the cache-hit behavior and usage-only/.dockerbuild regression test both pass. The branch is current with main, the cited Sous Chef run succeeded, and the full pr-finisher validation passed (fmt, lint, unit/full tests, targeted regression, recompile, secret scan). The two review threads already have direct fix replies; only maintainer-side UI resolution remains.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:

Run: https://github.com/github/gh-aw/actions/runs/32004940993

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 10.2 AIC · ⌖ 7.82 AIC · ⊞ 8.8K ·
Comment /souschef to run again

Copilot AI commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:...

Verified both threads are addressed by 69d61e1; the focused cached-usage/.dockerbuild regression test passes. The branch matches latest main, and the pr-finisher pass passed fmt, lint, full tests, recompile, and secret scanning. Run 32004940993 failed only on unrelated stacked PR updates (#53283/#53236). The threads already have direct fix replies; maintainer-side UI resolution remains because this environment cannot resolve threads.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:

Run: https://github.com/github/gh-aw/actions/runs/32019589269

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 3.78 AIC · ⌖ 7.22 AIC · ⊞ 8.8K ·
Comment /souschef to run again

Copilot AI commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

@copilot this PR is ready for the next finishing pass.

Please address these items, newest first:...

Confirmed the remembered cache-hit issue remains addressed by 69d61e1; the full suite passes, including the usage-only/.dockerbuild regression test. The branch is current with main, Sous Chef run 32019589269 passed all jobs, and the pr-finisher gates passed (fmt, lint, test-unit, full tests, recompile, secret scan). No new code changes were needed; the two already-answered review threads still require maintainer-side UI resolution.

@pelikhan
pelikhan merged commit 16ccab1 into main Aug 17, 2026
33 checks passed
@pelikhan
pelikhan deleted the copilot/lint-monster-fix-long-functions branch August 17, 2026 11:37
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This pull request is included in a new release.

Release: v0.87.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[lint-monster] lint-monster: cli logs-reporting largefunc slice

4 participants