Skip to content

Use native go-gh REST clients for release and ref lookups#47547

Open
pelikhan with Copilot wants to merge 12 commits into
mainfrom
copilot/go-fan-review-cli-go-gh
Open

Use native go-gh REST clients for release and ref lookups#47547
pelikhan with Copilot wants to merge 12 commits into
mainfrom
copilot/go-fan-review-cli-go-gh

Conversation

Copilot AI commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

gh-aw still had two gaps in its go-gh usage: update checks were using context-less REST calls, and remote ref resolution still depended on gh api subprocess execution. This change moves both paths onto native go-gh REST clients, keeps the existing fallback chain intact, and aligns remaining GET calls on http.MethodGet.

  • Update checks

    • switch latest-release lookups from client.Get(...) to client.DoWithContext(...)
    • thread context through async update checks so cancellation reaches the GitHub API call
    • keep the existing github.com-only targeting for release metadata
  • Remote ref-to-SHA resolution

    • replace gh.Exec("api", ...) in remote SHA resolution with a native REST lookup against repos/{owner}/{repo}/commits/{ref}
    • preserve the existing fallback order:
      1. authenticated REST lookup
      2. git ls-remote
      3. unauthenticated public API on github.com
    • detect auth failures via *api.HTTPError status (401 / 403) instead of stderr string parsing
  • Client option reuse

    • add a small shared helper for go-gh ClientOptions seeded with the repository’s default HTTP timeout
    • reuse it where host-specific REST clients are created
  • HTTP verb consistency

    • normalize remaining REST GET call sites from string literals to http.MethodGet
  • Regression coverage

    • add focused tests for:
      • release lookup endpoint selection and context-aware client usage
      • native ref resolution request shape
      • auth-error fallback behavior for git and public API paths

Example of the ref lookup change:

var result struct {
	SHA string `json:"sha"`
}

err := client.DoWithContext(
	ctx,
	http.MethodGet,
	buildCommitLookupAPIPath(owner, repo, ref),
	nil,
	&result,
)

Generated by 👨‍🍳 PR Sous Chef · gpt54 19.7 AIC · ⌖ 8.4 AIC · ⊞ 7K ·
Comment /souschef to run again


Generated by 👨‍🍳 PR Sous Chef · gpt54 14.8 AIC · ⌖ 8.94 AIC · ⊞ 7K ·
Comment /souschef to run again


$

Generated by 👨‍🍳 PR Sous Chef · gpt54 11.6 AIC · ⌖ 7.58 AIC · ⊞ 7K ·
Comment /souschef to run again


Generated by 👨‍🍳 PR Sous Chef · gpt54 · 14.9 AIC · ⌖ 8.66 AIC · ⊞ 5.5K ·
Comment /souschef to run again


Generated by 👨‍🍳 PR Sous Chef · gpt54 · 14.3 AIC · ⌖ 9.1 AIC · ⊞ 7K ·
Comment /souschef to run again


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

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

Copilot AI linked an issue Jul 23, 2026 that may be closed by this pull request
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Review Go module for cli/go-gh Use native go-gh REST clients for release and ref lookups Jul 23, 2026
Copilot AI requested a review from pelikhan July 23, 2026 11:10
@pelikhan
pelikhan marked this pull request as ready for review July 23, 2026 11:39
Copilot AI review requested due to automatic review settings July 23, 2026 11:39

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

Migrates release and ref lookups to context-aware native go-gh REST clients.

Changes:

  • Adds shared REST client options with default timeout.
  • Replaces gh api ref resolution while preserving fallbacks.
  • Standardizes GET methods and adds regression tests.
Show a summary per file
File Description
pkg/workflow/repository_features_validation.go Uses http.MethodGet.
pkg/parser/remote_resolve_sha.go Adds native REST ref resolution.
pkg/parser/remote_fetch_test.go Tests ref resolution and fallbacks.
pkg/parser/remote_client.go Reuses shared client options.
pkg/githubapi/options.go Adds shared options helper.
pkg/githubapi/options_test.go Tests shared options.
pkg/cli/update_extension_check.go Supplies release lookup context.
pkg/cli/update_cooldown.go Uses http.MethodGet.
pkg/cli/update_check.go Adds context-aware release requests.
pkg/cli/update_check_test.go Tests release endpoints and errors.
pkg/cli/org_issue_pr_helpers.go Adapts release lookup caller.
pkg/cli/copilot_billing_check.go Uses http.MethodGet.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 12/12 changed files
  • Comments generated: 1
  • Review effort level: Medium

Comment thread pkg/parser/remote_resolve_sha.go
@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

⚠️ PR Code Quality Reviewer failed during code quality review.

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Test Quality Sentinel completed test quality analysis.

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

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

@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.

Test Quality Sentinel: 77/100 - FAILED. Hard violation: pkg/githubapi/options_test.go missing required (go/redacted):build tag on line 1. Fix: add (go/redacted):build !integration as line 1. Implementation ratio 14% (threshold 30%) - otherwise good behavioral coverage in remote_fetch_test.go fallback tests.

@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, /diagnosing-bugs, and /tdd — requesting changes on three issues.

📋 Key Themes & Highlights

Issues

  • Leading-slash URL bug (already flagged at line 118 + confirmed by test at line 106): buildCommitLookupAPIPath returns /repos/... but go-gh prepends its own prefix — the test masks the bug by asserting the wrong value.
  • Lost context propagation: org_issue_pr_helpers.go re-introduces context.Background() just after getLatestRelease was updated to accept a context. The upgradeExtensionIfOutdated caller has the same gap (no context param at all).
  • Asymmetric fallback coverage: client-creation auth errors (lines 82–96 of remote_resolve_sha.go) follow a different code path than DoWithContext auth errors — only the latter is tested.

Positive Highlights

  • ✅ Excellent use of a narrow releaseRESTClient / restCommitResolver interface for injection — makes the new tests clean and dependency-free.
  • ✅ Context threading through the async update path is a meaningful correctness improvement.
  • githubapi.ClientOptions helper removes repetition nicely.
  • ✅ Good fallback-chain test coverage for the three documented scenarios.

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · sonnet46 46.3 AIC · ⌖ 4.88 AIC · ⊞ 6.7K
Comment /matt to run again

Comment thread pkg/cli/org_issue_pr_helpers.go Outdated

getLatestOrgReleaseFunc = getLatestRelease
getLatestOrgReleaseFunc = func(includePrereleases bool) (string, error) {
return getLatestRelease(context.Background(), includePrereleases)

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] This wrapper hardcodes context.Background(), so callers that supply a cancellable context cannot cancel the getLatestRelease call.

💡 Suggested fix

Since getLatestRelease now accepts ctx, thread it through instead of introducing a wrapper:

getLatestOrgReleaseFunc = func(ctx context.Context, includePrereleases bool) (string, error) {
    return getLatestRelease(ctx, includePrereleases)
}

Update the variable type and all call sites accordingly.

@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.

The wrapper already threads the caller's context through — getLatestOrgReleaseFunc = func(ctx context.Context, includePrereleases bool) (string, error) { return getLatestRelease(ctx, includePrereleases) } — which is exactly the suggested fix. This thread is outdated.

args = []string{"api", apiPath, "--jq", ".sha"}
client, err := createRESTClientForHost(host)
if err != nil {
if gitutil.IsAuthError(err.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.

[/diagnosing-bugs] Auth errors during createRESTClientForHost (lines 82–96) go through a separate fallback path from auth errors during DoWithContext (lines 118–130). This asymmetry means the fallback logic is tested only for the latter path — a regression in client-creation auth errors wouldn't be caught by the new tests.

💡 Suggested fix

Consider consolidating: always attempt createRESTClientForHost and only then enter resolveRefToSHAWithFallbacks. If client creation fails for non-auth reasons, return immediately. If it fails for auth reasons, pass a nil/stub client and let resolveRefToSHAWithFallbacks handle both fallback branches consistently. Alternatively, add a test for the client-creation failure path.

@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.

Took the "add tests" alternative. TestResolveRefToSHA_ClientCreationAuthError_UsesGitFallback and TestResolveRefToSHA_ClientCreationAuthError_GithubDotCom_UsesPublicAPIWhenGitFails both exercise the client-creation error path — the first verifies git fallback is invoked, the second verifies the public API fallback is attempted on github.com when git also fails.

Comment thread pkg/parser/remote_fetch_test.go Outdated
if method != http.MethodGet {
t.Fatalf("DoWithContext() method = %q, want %q", method, http.MethodGet)
}
if path != "/repos/owner/repo/commits/feature%2Fbranch" {

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.

[/tdd] The test asserts path == "/repos/owner/repo/commits/feature%2Fbranch" (leading slash), but go-gh's REST client prepends its own path prefix. The existing review comment at production line 118 flagged this — this test will pass even though the production code passes a double-slash path to the HTTP layer.

The test should assert the path without a leading slash ("repos/owner/repo/commits/feature%2Fbranch") to match what go-gh expects, and then the same fix should be applied to buildCommitLookupAPIPath.

@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 a prior commit — buildCommitLookupAPIPath no longer emits a leading slash, and all path assertions in the tests were updated accordingly (e.g. "repos/owner/repo/commits/feature%2Fbranch"). This thread is outdated.

@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 — one correctness bug plus a behavioral regression must be fixed before merging.

### Blocking issues

1. Leading slash in buildCommitLookupAPIPath (correctness bug)
buildCommitLookupAPIPath returns /repos/... but go-gh's REST client already prepends / to the path, producing //repos/.... Every REST call via the new native client will 404. The companion test in remote_fetch_test.go (line 370) asserts the broken path and must be updated together with the fix.

2. Empty-host regression in createRESTClientForHost (behavioral regression)
The old code guarded opts.Host = host behind if host != "", so go-gh used its built-in host detection when no host was specified. The new ClientOptions(host, "") always sets Host: host even when host == "", potentially overriding go-gh's default resolution for non-github.com deployments.

### Non-blocking observation

getLatestOrgReleaseFunc now wraps getLatestRelease with context.Background(), discarding any upstream cancellation. Not a regression (the old code also lacked context), but since the signature was already being changed this is the natural moment to thread the context through properly.

🔎 Code quality review by PR Code Quality Reviewer · sonnet46 90 AIC · ⌖ 5.16 AIC · ⊞ 5.7K
Comment /review to run again

Comments that could not be inline-anchored

pkg/parser/remote_resolve_sha.go:118

Leading slash in REST path causes double-slash URL: buildCommitLookupAPIPath returns /repos/... but go-gh prepends its own REST prefix before the path, producing //repos/... — this will 404 or silently resolve against the wrong URL.

<details>
<summary>💡 Suggested fix</summary>

Drop the leading / in buildCommitLookupAPIPath:

func buildCommitLookupAPIPath(owner, repo, ref string) string {
	return fmt.Sprintf(&quot;repos/%s/%s/commits/%s&quot;, owner, repo, url.PathEscape(ref))
}
```…

</details>

<details><summary>pkg/parser/remote_resolve_sha.go:160</summary>

**`buildCommitLookupAPIPath` test assertion confirms the broken path**: the test explicitly expects the leading-slash form `&quot;/repos/owner/repo/commits/feature%2Fbranch&quot;`, so both the implementation and the test need to be fixed together — fixing one without the other will still ship broken behavior.

&lt;details&gt;
&lt;summary&gt;💡 Details&lt;/summary&gt;

In `remote_fetch_test.go` line 370 the test asserts:
```go
if path != &quot;/repos/owner/repo/commits/feature%2Fbranch&quot; {

This test was authored to validate…

pkg/parser/remote_client.go:27

Empty host passed to ClientOptions changes behavior from the old code: the old implementation only set opts.Host when host != &quot;&quot;, relying on go-gh to use its default host resolution when the field is absent. Now ClientOptions(host, &quot;&quot;) always sets Host: host, including the empty-string case, which may override go-gh's host detection with an empty value.

<details>
<summary>💡 Suggested fix</summary>

Preserve the original guard:

func createRESTClientForHost(host string) (*a</details>

<details><summary>pkg/cli/org_issue_pr_helpers.go:33</summary>

**`getLatestOrgReleaseFunc` bakes in `context.Background()` at call time, discarding any upstream context**: if callers are cancelled (e.g., command timeout), this async release check will continue running against GitHub until it completes or the process exits.

&lt;details&gt;
&lt;summary&gt;💡 Note&lt;/summary&gt;

The original function signature was `getLatestRelease(includePrereleases bool) (string, error)`, which also had no context. The new signature added a `ctx` parameter, but the wrapper ignores it:

``…

</details>

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Design Decision Gate - ADR Required

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

Draft ADR committed: docs/adr/47547-use-native-go-gh-rest-clients-for-api-calls.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 at docs/adr/47547-use-native-go-gh-rest-clients-for-api-calls.md - it was generated from the PR diff
  2. Complete the missing sections - add context the AI could not 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-47547: Use Native go-gh REST Clients for GitHub API Calls (docs/adr/47547-use-native-go-gh-rest-clients-for-api-calls.md)

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

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

🏗️ ADR gate enforced by Design Decision Gate 🏗️ · sonnet46 53.1 AIC · ⌖ 12.3 AIC · ⊞ 8.5K ·
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

Overall this is a clean migration. One blocking issue exists.

Blocking: leading / in buildCommitLookupAPIPath

The existing bot comment on remote_resolve_sha.go:118 correctly identifies that go-gh prepends its own REST base URL (with trailing /), so passing "/repos/..." produces a double-slash URL that will 404. Fix by removing the leading slash from buildCommitLookupAPIPath and updating all test assertions that expect the leading slash.

Non-blocking observations
  • getLatestOrgReleaseFunc wraps getLatestRelease(context.Background(), ...) — fine for production but makes the var untestable with a custom context.
  • createRESTClientForHost passing empty-string host is correct — go-gh resolves to GH_HOST default.
  • New githubapi.ClientOptions helper cleanly centralises timeout + host — good addition.

🧵 Reviewed using Impeccable skills by Impeccable Skills Reviewer · sonnet46 58.8 AIC · ⌖ 5.67 AIC · ⊞ 5K

Comment thread pkg/parser/remote_fetch_test.go Outdated
if method != http.MethodGet {
t.Fatalf("DoWithContext() method = %q, want %q", method, http.MethodGet)
}
if path != "/repos/owner/repo/commits/feature%2Fbranch" {

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.

This test asserts the /repos/... path (with a leading slash), which matches the current (buggy) implementation. Once buildCommitLookupAPIPath is fixed to omit the leading slash, this assertion will need to be updated to "repos/owner/repo/commits/feature%2Fbranch" as well — otherwise the test will fail after the fix.

@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 a prior commit — the leading slash was removed from buildCommitLookupAPIPath and the corresponding test assertions were updated to "repos/owner/repo/commits/...". This thread is outdated.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot please run the pr-finisher skill, address unresolved review comments, and rerun checks once the branch is up to date.

Unresolved review threads (newest first):

Generated by 👨‍🍳 PR Sous Chef · gpt54 19.7 AIC · ⌖ 8.4 AIC · ⊞ 7K ·
Comment /souschef to run again

…T client compatibility

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Copilot AI requested a review from gh-aw-bot July 23, 2026 12:12

Copilot AI commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

@copilot review https://github.com/github/gh-aw/actions/runs/30016373777/job/89238778345#step:3:1

The failure at step 3 ("Create issue for upgrade failures") is unrelated to my PR changes. Here's what happened:

  • Attempt 1 of the run had "Extension upgrade on macos-latest" in an unknown state
  • Attempt 2 (re-run) started all three extension upgrade jobs fresh — ubuntu-slim, macos-latest, and windows-latest all succeeded
  • The "Conclusion" job queried the jobs API for the run and still saw the macos job's unknown conclusion from attempt 1, so it tried to gh issue create to report the failure
  • gh issue create failed with fatal: not a git repository because the runner had no git checkout at that point

This is a pre-existing race condition in the "Extension Upgrade Test" workflow's Conclusion step when a re-run is triggered — not caused by my changes. The CGO build/test workflow (run 30016373810) succeeded with 0 failures, and all parser unit tests pass locally.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot please run the pr-finisher skill, address unresolved review comments, and rerun checks once the branch is up to date.

Unresolved review threads (newest first):

Failed checks:

Generated by 👨‍🍳 PR Sous Chef · gpt54 11.6 AIC · ⌖ 7.58 AIC · ⊞ 7K ·
Comment /souschef to run again

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
@pelikhan

Copy link
Copy Markdown
Collaborator

@copilot review changes, specially in go.sum

Copilot AI commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

@copilot review changes, specially in go.sum

The go.sum changes are legitimate go mod tidy cleanup from commit 8edcff9:

  • charmbracelet/x/cellbuf v0.0.15 — was an // indirect entry in go.mod that is no longer transitively needed
  • charmbracelet/lipgloss v1.1.1-0.20250319133953-166f707985bc and muesli/reflow v0.3.0 — were orphaned go.sum hashes (present in go.sum but absent from go.mod), left over from an earlier dependency bump

None of the three packages are imported in any Go source file. Running go mod tidy fresh produces no further diff, confirming the current state is correct.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot please run the pr-finisher skill, address unresolved review comments, and rerun checks once the branch is up to date.

Unresolved review threads (newest first):

A previously addressed github-actions thread can now be resolved.

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 14.9 AIC · ⌖ 8.66 AIC · ⊞ 5.5K ·
Comment /souschef to run again

Copilot AI commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

@copilot please run the pr-finisher skill, address unresolved review comments, and rerun checks once the branch is up to date.

Unresolved review threads (newest first):...

All review threads have been replied to in prior commits. The unresolved threads are either outdated (issues already fixed) or addressed by existing tests:

  • r3639215898 / r3637851595 (outdated) — getLatestOrgReleaseFunc already threads caller context; fix predates the comment.
  • r3639216790 / r3637851602 — client-creation auth-error path is covered by TestResolveRefToSHA_ClientCreationAuthError_UsesGitFallback and TestResolveRefToSHA_ClientCreationAuthError_GithubDotCom_UsesPublicAPIWhenGitFails.
  • r3639217609 / r3637851609 (outdated) — leading-slash fix already applied.
  • r3639218195 / r3637866033 (outdated) — same leading-slash fix.

The four threads cannot be resolved programmatically (GraphQL is blocked). A maintainer needs to resolve them manually on the PR. Local validation (fmt + lint + compile + unit tests) is green on the current HEAD (c697778).

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot please run the pr-finisher skill, address unresolved review comments, and rerun checks once the branch is up to date.

Unresolved review feedback (newest first):

  • github-actions: review submitted 2026-07-23T11:51:39Z
  • github-actions: review submitted 2026-07-23T11:50:59Z
  • github-actions: review submitted 2026-07-23T11:49:30Z

Generated by 👨🍳 PR Sous Chef

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 14.3 AIC · ⌖ 9.1 AIC · ⊞ 7K ·
Comment /souschef to run again

Copilot AI commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

@copilot please run the pr-finisher skill, address unresolved review comments, and rerun checks once the branch is up to date.

Unresolved review feedback (newest first):...

All issues from the three github-actions CHANGES_REQUESTED reviews have been addressed in prior commits on this branch:

Review 4763740876 (Test Quality Sentinel, 11:49:30)

  • //go:build !integration build tag → added to pkg/githubapi/options_test.go (already present at line 1)

Review 4763751625 (Matt Pocock Skills Reviewer, 11:50:59)

  • Leading-slash URL bug → fixed in buildCommitLookupAPIPath (commit 8edcff9)
  • Context propagation in getLatestOrgReleaseFunc → fixed (passes caller ctx instead of context.Background())
  • Asymmetric fallback coverage → added TestResolveRefToSHA_ClientCreationAuthError_UsesGitFallback and TestResolveRefToSHA_ClientCreationAuthError_GithubDotCom_UsesPublicAPIWhenGitFails

Review 4763756956 (PR Code Quality Reviewer, 11:51:39)

  • Leading slash → fixed (commit 8edcff9)
  • Empty-host regression → createRESTClientForHost preserves the if host != "" guard
  • context.Background() in getLatestOrgReleaseFunc → threaded context through

Local validation: make fmt ✅ · make lint ✅ · pkg/parser, pkg/cli, pkg/githubapi tests ✅

The four remaining unresolved inline threads are all outdated (the issues they flagged were fixed in later commits) and have been replied to. They cannot be resolved programmatically from this agent. The three PR-level CHANGES_REQUESTED reviews are also from the older commit aca01a8 and reflect issues that have since been corrected. A maintainer re-review or CI re-trigger (close/reopen or workflow_dispatch) is needed before merge.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot please run the pr-finisher skill, address the unresolved blocking review feedback, and rerun checks once the branch is up to date.

Unresolved review feedback (newest first):

  • github-actions review submitted 2026-07-23T11:51:39Z
  • github-actions review submitted 2026-07-23T11:50:59Z
  • github-actions review submitted 2026-07-23T11:49:30Z

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

Generated by 👨‍🍳 PR Sous Chef · gpt54 · 9.08 AIC · ⌖ 6.76 AIC · ⊞ 7K ·
Comment /souschef to run again

Copilot AI commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

@copilot please run the pr-finisher skill, address the unresolved blocking review feedback, and rerun checks once the branch is up to date.

Unresolved review feedback (newest first):...

All three reviews reference commit aca01a8 and every issue they flagged is fixed in the current HEAD (92d42e6):

  • 4763740876//go:build !integration already present at line 1 of pkg/githubapi/options_test.go
  • 4763751625 — leading-slash bug fixed, context threaded through getLatestOrgReleaseFunc, client-creation auth-error fallback tests added
  • 4763756956 — leading slash removed from buildCommitLookupAPIPath, if host != "" guard preserved in createRESTClientForHost, context.Background() replaced with caller ctx

Local validation is green (make fmt ✅ · make lint ✅ · pkg/parser / pkg/cli / pkg/githubapi tests ✅). The reviews remain in CHANGES_REQUESTED state because GitHub requires a maintainer to dismiss them — they cannot be resolved from this agent. A maintainer re-review will clear the blocking state.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 PR Triage

Field Value
Category chore
Risk 🟡 Medium
Priority Score 62/100
Recommended Action fast_track

Score breakdown: Impact 25 + Urgency 20 + Quality 17

Rationale: Not draft, 18 files migrating update-check/release/ref lookup from subprocess gh api to native go-gh REST. CI shows 2 passing checks. Multiple bot reviews with changes requested. Good chore/refactor with tangible reliability benefit — expedited review warranted.

Generated by 🔧 PR Triage Agent · sonnet46 · 38.1 AIC · ⌖ 6.75 AIC · ⊞ 5.7K ·

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot please run the pr-finisher skill, address the unresolved blocking review feedback, and rerun checks once the branch is up to date.

Unresolved review feedback (newest first):

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

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

Copilot AI commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

@copilot please run the pr-finisher skill, address the unresolved blocking review feedback, and rerun checks once the branch is up to date.

Unresolved review feedback (newest first):...

No changes needed. All three reviews reference commit aca01a8 and every issue they raised has been fixed in subsequent commits (current HEAD 92d42e6):

  • 4763740876//go:build !integration present at line 1 of pkg/githubapi/options_test.go
  • 4763751625 — leading-slash removed, context threaded through getLatestOrgReleaseFunc, client-creation auth-error fallback tests added
  • 4763756956 — leading slash removed from buildCommitLookupAPIPath, if host != "" guard preserved, context.Background() replaced with caller ctx

The branch is up to date, local validation is green, and there are no uncommitted changes. These reviews remain in CHANGES_REQUESTED state because GitHub requires a maintainer to dismiss them — that step cannot be taken from this agent. Once dismissed, the PR is ready to merge.

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.

[go-fan] Go Module Review: cli/go-gh

4 participants