Skip to content

[aw] PR Code Quality Reviewer failed #49616

Description

@github-actions

Workflow Failure

Workflow: PR Code Quality Reviewer
Branch: copilot/refactor-migrate-rungh-withhost-call-sites
Run: https://github.com/github/gh-aw/actions/runs/30715022302
Pull Request: #49554

Warning

Engine Failure: The copilot engine terminated unexpectedly.

Last agent output:

{"type":"tool.execution_start","timestamp":"2026-08-01T19:40:14.128Z","data":{"toolName":"bash","mcpServerName":"","command":"cat /tmp/gh-aw/agent/pr-meta.json 2>/dev/null; echo ---; wc -l /tmp/gh-aw/agent/pr-diff.patch 2>/dev/null; echo ---; cat /tmp/gh-aw/agent/pr-review-comments.json 2>/dev/null"}}
{"type":"tool.execution_complete","timestamp":"2026-08-01T19:40:14.202Z","data":{"toolName":"bash","mcpServerName":"","success":true,"result":{"content":"{\"additions\":25,\"body\":\"89% of cross-host `gh` call sites in `pkg/cli` were using the legacy `workflow.RunGHWithHost`, making GHES/data-residency operations non-cancellable and unboundable by caller timeouts.\\n\\n## Changes\\n\\n- **`pkg/workflow/github_cli.go`** — marks `RunGHWithHost` as `// Deprecated: Use RunGHContextWithHost`\\n\\n- **`pkg/cli/pr_command.go`** — adds `ctx context.Context` to `createPR`; both `RunGHWithHost` calls replaced with `RunGHContextWithHost(ctx, ...)`\\n\\n- **`pkg/cli/pr_helpers.go`** — adds `ctx` to `CreatePRWithChanges`, threaded through to `createPR`\\n\\n- **`pkg/cli/add_workflow_pr.go`**, **`update_command.go`**, **`upgrade_command.go`**, **`upgrade_org.go`**, **`deploy_command.go`**, **`init.go`** — callers of `CreatePRWithChanges` updated to pass `cmd.Context()` or existing `ctx`\\n\\n- **`pkg/cli/outcome_eval.go`** — 3 `RunGHWithHost` calls replaced with `RunGHContextWithHost(context.Background(), ...)`; real ctx threading deferred since the `eval*` call chain has no ctx without a larger refactor\\n\\n- **`pkg/cli/add_package_manifest.go`** — lambda at line 990 already had `ctx` and now passes it through; line 938 uses `context.Background()` to preserve the test-mocked var signature\\n\\n```go\\n// Before\\nrepoOutput, err := workflow.RunGHWithHost(\\\"Fetching repository info...\\\", remoteHost, \\\"repo\\\", \\\"view\\\", \\\"--json\\\", \\\"owner,name\\\")\\n\\n// After — ctx from cmd.Context() propagated through createPR\\nfunc createPR(ctx context.Context, branchName, title, body string, verbose bool) (int, string, error) {\\n    ...\\n    repoOutput, err := workflow.RunGHContextWithHost(ctx, \\\"Fetching repository info...\\\", remoteHost, \\\"repo\\\", \\\"view\\\", \\\"--json\\\", \\\"owner,name\\\")\\n```\\n\\nAfter this change `grep -rn \\\"workflow\\\\.RunGHWithHost(\\\" pkg/cli --include='*.go' | grep -v _test.go` returns zero results.\\n\\n<!-- START COPILOT CODING AGENT SUFFIX -->\\n\\n- Fixes #49536\",\"changedFiles\":12,\"deletions\":20,\"files\":[{\"path\":\"pkg/cli/README.md\",\"additions\":1,\"deletions\":1,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/add_package_manifest.go\",\"additions\":2,\"deletions\":2,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/add_workflow_pr.go\",\"additions\":1,\"deletions\":1,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/deploy_command.go\",\"additions\":3,\"deletions\":3,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/init.go\",\"additions\":1,\"deletions\":1,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/outcome_eval.go\",\"additions\":4,\"deletions\":3,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/pr_command.go\",\"additions\":4,\"deletions\":3,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/pr_helpers.go\",\"additions\":3,\"deletions\":2,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/update_command.go\",\"additions\":2,\"deletions\":2,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/upgrade_command.go\",\"additions\":1,\"deletions\":1,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/upgrade_org.go\",\"additions\":1,\"deletions\":1,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/workflow/github_cli.go\",\"additions\":2,\"deletions\":0,\"changeType\":\"MODIFIED\"}],\"headRefName\":\"copilot/refactor-migrate-rungh-withhost-call-sites\",\"headRefOid\":\"fc1d7d65ae33f6cf94958e22f2f39049d7dc4ac0\",\"number\":49554,\"title\":\"refactor: migrate remaining RunGHWithHost call sites to RunGHContextWithHost\"}\n---\n245 /tmp/gh-aw/agent/pr-diff.patch\n---\n[]\n<shellId: 9 completed with exit code 0>","detailedContent":"{\"additions\":25,\"body\":\"89% of cross-host `gh` call sites in `pkg/cli` were using the legacy `workflow.RunGHWithHost`, making GHES/data-residency operations non-cancellable and unboundable by caller timeouts.\\n\\n## Changes\\n\\n- **`pkg/workflow/github_cli.go`** — marks `RunGHWithHost` as `// Deprecated: Use RunGHContextWithHost`\\n\\n- **`pkg/cli/pr_command.go`** — adds `ctx context.Context` to `createPR`; both `RunGHWithHost` calls replaced with `RunGHContextWithHost(ctx, ...)`\\n\\n- **`pkg/cli/pr_helpers.go`** — adds `ctx` to `CreatePRWithChanges`, threaded through to `createPR`\\n\\n- **`pkg/cli/add_workflow_pr.go`**, **`update_command.go`**, **`upgrade_command.go`**, **`upgrade_org.go`**, **`deploy_command.go`**, **`init.go`** — callers of `CreatePRWithChanges` updated to pass `cmd.Context()` or existing `ctx`\\n\\n- **`pkg/cli/outcome_eval.go`** — 3 `RunGHWithHost` calls replaced with `RunGHContextWithHost(context.Background(), ...)`; real ctx threading deferred since the `eval*` call chain has no ctx without a larger refactor\\n\\n- **`pkg/cli/add_package_manifest.go`** — lambda at line 990 already had `ctx` and now passes it through; line 938 uses `context.Background()` to preserve the test-mocked var signature\\n\\n```go\\n// Before\\nrepoOutput, err := workflow.RunGHWithHost(\\\"Fetching repository info...\\\", remoteHost, \\\"repo\\\", \\\"view\\\", \\\"--json\\\", \\\"owner,name\\\")\\n\\n// After — ctx from cmd.Context() propagated through createPR\\nfunc createPR(ctx context.Context, branchName, title, body string, verbose bool) (int, string, error) {\\n    ...\\n    repoOutput, err := workflow.RunGHContextWithHost(ctx, \\\"Fetching repository info...\\\", remoteHost, \\\"repo\\\", \\\"view\\\", \\\"--json\\\", \\\"owner,name\\\")\\n```\\n\\nAfter this change `grep -rn \\\"workflow\\\\.RunGHWithHost(\\\" pkg/cli --include='*.go' | grep -v _test.go` returns zero results.\\n\\n<!-- START COPILOT CODING AGENT SUFFIX -->\\n\\n- Fixes #49536\",\"changedFiles\":12,\"deletions\":20,\"files\":[{\"path\":\"pkg/cli/README.md\",\"additions\":1,\"deletions\":1,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/add_package_manifest.go\",\"additions\":2,\"deletions\":2,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/add_workflow_pr.go\",\"additions\":1,\"deletions\":1,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/deploy_command.go\",\"additions\":3,\"deletions\":3,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/init.go\",\"additions\":1,\"deletions\":1,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/outcome_eval.go\",\"additions\":4,\"deletions\":3,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/pr_command.go\",\"additions\":4,\"deletions\":3,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/pr_helpers.go\",\"additions\":3,\"deletions\":2,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/update_command.go\",\"additions\":2,\"deletions\":2,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/upgrade_command.go\",\"additions\":1,\"deletions\":1,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/cli/upgrade_org.go\",\"additions\":1,\"deletions\":1,\"changeType\":\"MODIFIED\"},{\"path\":\"pkg/workflow/github_cli.go\",\"additions\":2,\"deletions\":0,\"changeType\":\"MODIFIED\"}],\"headRefName\":\"copilot/refactor-migrate-rungh-withhost-call-sites\",\"headRefOid\":\"fc1d7d65ae33f6cf94958e22f2f39049d7dc4ac0\",\"number\":49554,\"title\":\"refactor: migrate remaining RunGHWithHost call sites to RunGHContextWithHost\"}\n---\n245 /tmp/gh-aw/agent/pr-diff.patch\n---\n[]\n<shellId: 9 completed with exit code 0>"}}}
{"type":"assistant.message","timestamp":"2026-08-01T19:40:25.038Z","data":{"content":""}}
{"type":"tool.execution_start","timestamp":"2026-08-01T19:40:25.040Z","data":{"toolName":"view","mcpServerName":""}}
{"type":"tool.execution_start","timestamp":"2026-08-01T19:40:25.041Z","data":{"toolName":"task","mcpServerName":""}}
{"type":"subagent.started","timestamp":"2026-08-01T19:40:25.052Z","data":{"agentName":"general-purpose","agentDisplayName":"General Purpose Agent","toolCallId":"toolu_01P52eExx2VNZ9W2SdtLRNKi"}}
[copilot-sdk-driver] [sdk-driver] error: Execution failed: Error: No model available. Check policy enablement under GitHub Settings > Copilot
{"type":"subagent.completed","timestamp":"2026-08-01T19:40:25.099Z","data":{"agentName":"general-purpose","toolCallId":"toolu_01P52eExx2VNZ9W2SdtLRNKi"}}
{"type":"tool.execution_complete","timestamp":"2026-08-01T19:40:25.120Z","data":{"toolName":"task","mcpServerName":"","success":true,"result":{"content":"Agent started in background with agent_id: grumpy-coder-3. You'll be notified when it completes. Tell the user you're waiting and end your response, or continue unrelated work until notified. The agent supports multi-turn conversations — use write_agent to send follow-up messages.","detailedContent":"Prompt to general-purpose agent (grumpy-coder-3):\nYou are a extremely grumpy, hyper-critical senior Go code reviewer. Review this PR diff for github/gh-aw (PR #49554, \"refactor: migrate remaining RunGHWithHost call sites to RunGHContextWithHost\"). The diff threads context.Context through several `pkg/cli` functions to replace calls to `workflow.RunGHWithHost` with `workflow.RunGHContextWithHost(ctx, ...)`.\n\nRead the full diff at /tmp/gh-aw/agent/pr-diff.patch (245 lines).\n\nFind only issues within the changed lines: logic errors, incorrect context propagation (e.g. using context.Background() where a real ctx was available), nil context risks, inconsistent signatures, missed call sites, broken deprecation comments, test coverage gaps, or any other correctness/maintainability defect.\n\nOutput STRICT JSONL only, one finding per line, each object with fields: file, line (best-guess line number in the new file), severity (critical/high/medium/low), issue (one sentence), rationale (short). Do not include markdown, headers, or prose outside the JSONL lines. If no issues found, output nothing."}}}
{"type":"tool.execution_complete","timestamp":"2026-08-01T19:40:25.123Z","data":{"toolName":"view","mcpServerName":"","success":true,"result":{"content":"1. diff --git a/pkg/cli/README.md b/pkg/cli/README.md\n2. index 558b44b1c80..f91018a0cf3 100644\n3. --- a/pkg/cli/README.md\n4. +++ b/pkg/cli/README.md\n5. @@ -219,7 +219,7 @@ All diagnostic output MUST go to `stderr` using `console` formatting helpers. St\n6.  | `StartDockerImageDownload` | `func(ctx context.Context, image string) (bool, func() error)` | Begins a background image pull; returns false if already pulling. The join function blocks until the goroutine exits and returns any download error. |\n7.  | `CheckAndPrepareDockerImages` | `func(ctx context.Context, opts DockerImagesOptions) error` | Pre-pulls security-scanner Docker images |\n8.  | `UpdateContainerPins` | `func(ctx, workflowDir string, verbose bool) error` | Updates container image SHA pins in workflow files |\n9. -| `CreatePRWithChanges` | `func(branchPrefix, commitMessage, prTitle, prBody string, verbose bool) (string, error)` | Creates a GitHub PR from uncommitted changes |\n10. +| `CreatePRWithChanges` | `func(ctx context.Context, branchPrefix, commitMessage, prTitle, prBody string, verbose bool) (string, error)` | Creates a GitHub PR from uncommitted changes |\n11.  | `AutoMergePullRequestsCreatedAfter` | `func(repoSlug string, createdAfter time.Time, verbose bool) error` | Auto-merges eligible PRs created after a given time |\n12.  | `PreflightCheckForCreatePR` | `func(bool) error` | Validates prerequisites before creating a PR |\n13.  | `DisableAllWorkflowsExcept` | `func(repoSlug string, exceptWorkflows []string, verbose bool) error` | Disables all workflows in a repo except the named ones |\n14. diff --git a/pkg/cli/add_package_manifest.go b/pkg/cli/add_package_manifest.go\n15. index cde8cc6b42c..523768d875b 100644\n16. --- a/pkg/cli/add_package_manifest.go\n17. +++ b/pkg/cli/add_package_manifest.go\n18. @@ -935,7 +935,7 @@ func resolveRepositoryPackageDefaultBranch(repoSlug, host string) (string, error\n19.  \tvar output []byte\n20.  \tvar err error\n21.  \tif host != \"\" {\n22. -\t\toutput, err = workflow.RunGHWithHost(\"Fetching repo info...\", host, args...)\n23. +\t\toutput, err = workflow.RunGHContextWithHost(context.Background(), \"Fetching repo info...\", host, args...)\n24.  \t\tif err != nil {\n25.  \t\t\treturn \"\", err\n26.  \t\t}\n27. @@ -987,7 +987,7 @@ func resolveRepositoryPackageLatestRelease(repoSlug, host string) (string, error\n28.  \t\trunReleasesAPI: func(ctx context.Context, repo string) ([]byte, error) {\n29.  \t\t\targs := []string{\"api\", fmt.Sprintf(\"/repos/%s/releases\", repo), \"--jq\", \".[].tag_name\"}\n30.  \t\t\tif host != \"\" {\n31. -\t\t\t\treturn workflow.RunGHWithHost(\"Fetching releases...\", host, args...)\n32. +\t\t\t\treturn workflow.RunGHContextWithHost(ctx, \"Fetching releases...\", host, args...)\n33.  \t\t\t}\n34.  \t\t\treturn workflow.RunGHContext(ctx, \"Fetching releases...\", args...)\n35.  \t\t},diff --git a/pkg/cli/add_workflow_pr.go b/pkg/cli/add_workflow_pr.go\n36. index 7d80ed32dab..1bd62c28be0 100644\n37. --- a/pkg/cli/add_workflow_pr.go\n38. +++ b/pkg/cli/add_workflow_pr.go\n39. @@ -161,7 +161,7 @@ func addWorkflowsWithPR(ctx context.Context, workflows []*ResolvedWorkflow, opts\n40.  \n41.  \t// Create PR\n42.  \taddWorkflowPRLog.Printf(\"Creating pull request: %s\", prTitle)\n43. -\tprNumber, prURL, err := createPR(branchName, prTitle, prBody, opts.Verbose)\n44. +\tprNumber, prURL, err := createPR(ctx, branchName, prTitle, prBody, opts.Verbose)\n45.  \tif err != nil {\n46.  \t\taddWorkflowPRLog.Printf(\"Failed to create PR: %v\", err)\n47.  \t\tif rollbackErr := tracker.RollbackAllFiles(opts.Verbose); rollbackErr != nil && opts.Verbose {diff --git a/pkg/cli/deploy_command.go b/pkg/cli/deploy_command.go\n48. index 66ff023fd91..bf8c62f877a 100644\n49. --- a/pkg/cli/deploy_command.go\n50. +++ b/pkg/cli/deploy_command.go\n51. @@ -74,7 +74,7 @@ func runDeploy(ctx context.Context, targetRepo string, workflows []string, addOp\n52.  \t\treturn err\n53.  \t}\n54.  \n55. -\tif err := createDeployPR(resolvedWorkflows, targetRepo, addOpts.Verbose); err != nil {\n56. +\tif err := createDeployPR(ctx, resolvedWorkflows, targetRepo, addOpts.Verbose); err != nil {\n57.  \t\treturn err\n58.  \t}\n59.  \n60. @@ -252,9 +252,9 @@ func runDeployCompilePass(ctx context.Context, addOpts AddOptions) error {\n61.  \treturn nil\n62.  }\n63.  \n64. -func createDeployPR(resolvedWorkflows []string, targetRepo string, verbose bool) error {\n65. +func createDeployPR(ctx context.Context, resolvedWorkflows []string, targetRepo string, verbose bool) error {\n66.  \tprTitle, prBody := buildDeployPRMetadata(resolvedWorkflows, targetRepo)\n67. -\t_, err := CreatePRWithChanges(\"deploy-workflows\", deployCommitMessage, prTitle, prBody, verbose)\n68. +\t_, err := CreatePRWithChanges(ctx, \"deploy-workflows\", deployCommitMessage, prTitle, prBody, verbose)\n69.  \tif err != nil {\n70.  \t\treturn fmt.Errorf(\"failed to create deploy pull request: %w\", err)\n71.  \t}diff --git a/pkg/cli/init.go b/pkg/cli/init.go\n72. index 62ad34b32dc..6a29037c85a 100644\n73. --- a/pkg/cli/init.go\n74. +++ b/pkg/cli/init.go\n75. @@ -216,7 +216,7 @@ func InitRepository(opts InitOptions) error {\n76.  \t\t\t\"- Configuring .gitattributes\\n\" +\n77.  \t\t\t\"- Creating GitHub Copilot custom instructions\\n\" +\n78.  \t\t\t\"- Setting up workflow prompts and skills\"\n79. -\t\tif _, err := CreatePRWithChanges(\"init-agentic-workflows\", \"chore: initialize agentic workflows\", \"Initialize agentic workflows\", prBody, opts.Verbose); err != nil {\n80. +\t\tif _, err := CreatePRWithChanges(ctx, \"init-agentic-workflows\", \"chore: initialize agentic workflows\", \"Initialize agentic workflows\", prBody, opts.Verbose); err != nil {\n81.  \t\t\treturn err\n82.  \t\t}\n83.  \t}diff --git a/pkg/cli/outcome_eval.go b/pkg/cli/outcome_eval.go\n84. index 70fbc981966..44b37e9c205 100644\n85. --- a/pkg/cli/outcome_eval.go\n86. +++ b/pkg/cli/outcome_eval.go\n87. @@ -1,6 +1,7 @@\n88.  package cli\n89.  \n90.  import (\n91. +\t\"context\"\n92.  \t\"encoding/json\"\n93.  \t\"errors\"\n94.  \t\"fmt\"\n95. @@ -258,7 +259,7 @@ func ghAPIGet(endpoint string, repo string) (map[string]any, error) {\n96.  \tvar output []byte\n97.  \tvar err error\n98.  \tif host != \"\" {\n99. -\t\toutput, err = workflow.RunGHWithHost(\"Checking outcome...\", host, args...)\n100. +\t\toutput, err = workflow.RunGHContextWithHost(context.Background(), \"Checking outcome...\", host, args...)\n101.  \t} else {\n102.  \t\toutput, err = workflow.RunGH(\"Checking outcome...\", args...)\n103.  \t}\n104. @@ -283,7 +284,7 @@ func ghAPIGetArray(endpoint string, repo string) ([]map[string]any, error) {\n105.  \tvar output []byte\n106.  \tvar err error\n107.  \tif host != \"\" {\n108. -\t\toutput, err = workflow.RunGHWithHost(\"Checking outcome...\", host, args...)\n109. +\t\toutput, err = workflow.RunGHContextWithHost(context.Background(), \"Checking outcome...\", host, args...)\n110.  \t} else {\n111.  \t\toutput, err = workflow.RunGH(\"Checking outcome...\", args...)\n112.  \t}\n113. @@ -304,7 +305,7 @@ func ghAPIGraphQL(query string, repo string) (map[string]any, error) {\n114.  \tvar output []byte\n115.  \tvar err error\n116.  \tif host != \"\" {\n117. -\t\toutput, err = workflow.RunGHWithHost(\"Checking outcome...\", host, args...)\n118. +\t\toutput, err = workflow.RunGHContextWithHost(context.Background(), \"Checking outcome...\", host, args...)\n119.  \t} else {\n120.  \t\toutput, err = workflow.RunGH(\"Checking outcome...\", args...)\n121.  \t}diff --git a/pkg/cli/pr_command.go b/pkg/cli/pr_command.go\n122. index 98cae012438..4ae04d4b3c1 100644\n123. --- a/pkg/cli/pr_command.go\n124. +++ b/pkg/cli/pr_command.go\n125. @@ -1,6 +1,7 @@\n126.  package cli\n127.  \n128.  import (\n129. +\t\"context\"\n130.  \t\"encoding/json\"\n131.  \t\"errors\"\n132.  \t\"fmt\"\n133. @@ -757,7 +758,7 @@ func transferPR(prURL, targetRepo string, verbose bool) error {\n134.  }\n135.  \n136.  // createPR creates a pull request using GitHub CLI and returns the PR number\n137. -func createPR(branchName, title, body string, verbose bool) (int, string, error) {\n138. +func createPR(ctx context.Context, branchName, title, body string, verbose bool) (int, string, error) {\n139.  \tif verbose {\n140.  \t\tfmt.Fprintln(os.Stderr, console.FormatProgressMessage(\"Creating PR: \"+title))\n141.  \t}\n142. @@ -768,7 +769,7 @@ func createPR(branchName, title, body string, verbose bool) (int, string, error)\n143.  \n144.  \t// Get the current repository info to ensure PR is created in the correct repo.\n145.  \t// Use GH_HOST env var instead of --hostname (which is only valid for gh api, not gh repo view).\n146. -\trepoOutput, err := workflow.RunGHWithHost(\"Fetching repository info...\", remoteHost, \"repo\", \"view\", \"--json\", \"owner,name\")\n147. +\trepoOutput, err := workflow.RunGHContextWithHost(ctx, \"Fetching repository info...\", remoteHost, \"repo\", \"view\", \"--json\", \"owner,name\")\n148.  \tif err != nil {\n149.  \t\treturn 0, \"\", fmt.Errorf(\"failed to get current repository info: %w\", err)\n150.  \t}\n151. @@ -790,7 +791,7 @@ func createPR(branchName, title, body string, verbose bool) (int, string, error)\n152.  \t// current repo (not an upstream fork). Use GH_HOST env var instead of --hostname\n153.  \t// (which is only valid for gh api, not gh pr create).\n154.  \tprCreateArgs := []string{\"pr\", \"create\", \"--repo\", repoSpec, \"--title\", title, \"--body\", body, \"--head\", branchName}\n155. -\toutput, err := workflow.RunGHWithHost(\"Creating pull request...\", remoteHost, prCreateArgs...)\n156. +\toutput, err := workflow.RunGHContextWithHost(ctx, \"Creating pull request...\", remoteHost, prCreateArgs...)\n157.  \tif err != nil {\n158.  \t\t// Try to get stderr for better error reporting\n159.  \t\tvar exitError *exec.ExitErrordiff --git a/pkg/cli/pr_helpers.go b/pkg/cli/pr_helpers.go\n160. index 93f80386a92..94a8236fd20 100644\n161. --- a/pkg/cli/pr_helpers.go\n162. +++ b/pkg/cli/pr_helpers.go\n163. @@ -1,6 +1,7 @@\n164.  package cli\n165.  \n166.  import (\n167. +\t\"context\"\n168.  \t\"errors\"\n169.  \t\"fmt\"\n170.  \t\"math/rand\"\n171. @@ -28,7 +29,7 @@ func PreflightCheckForCreatePR(verbose bool) error {\n172.  // pushes the branch, creates a pull request, and returns to the original branch.\n173.  // branchPrefix is used as the prefix for the auto-generated branch name.\n174.  // Returns the PR URL on success.\n175. -func CreatePRWithChanges(branchPrefix, commitMessage, prTitle, prBody string, verbose bool) (string, error) {\n176. +func CreatePRWithChanges(ctx context.Context, branchPrefix, commitMessage, prTitle, prBody string, verbose bool) (string, error) {\n177.  \tprHelpersLog.Printf(\"Creating PR with branch prefix: %s\", branchPrefix)\n178.  \n179.  \tcurrentBranch, err := getCurrentBranch()\n180. @@ -58,7 +59,7 @@ func CreatePRWithChanges(branchPrefix, commitMessage, prTitle, prBody string, ve\n181.  \t\treturn \"\", err\n182.  \t}\n183.  \n184. -\t_, prURL, err := createPR(branchName, prTitle, prBody, verbose)\n185. +\t_, prURL, err := createPR(ctx, branchName, prTitle, prBody, verbose)\n186.  \tif err != nil {\n187.  \t\t_ = switchBranch(currentBranch, verbose)\n188.  \t\treturn \"\", fmt.Errorf(\"failed to create PR: %w\", err)diff --git a/pkg/cli/update_command.go b/pkg/cli/update_command.go\n189. index bd3fe444612..3b2b9735535 100644\n190. --- a/pkg/cli/update_command.go\n191. +++ b/pkg/cli/update_command.go\n192. @@ -153,7 +153,7 @@ Note: In GitHub Enterprise repos, shorthand source specs resolve on your enterpr\n193.  \n194.  \t\t\tif createPR {\n195.  \t\t\t\tprBody := \"This PR updates agentic workflows from their source repositories.\"\n196. -\t\t\t\t_, err := CreatePRWithChanges(\"update-workflows\", \"chore: update workflows\",\n197. +\t\t\t\t_, err := CreatePRWithChanges(cmd.Context(), \"update-workflows\", \"chore: update workflows\",\n198.  \t\t\t\t\t\"Update workflows from source\", prBody, verbose)\n199.  \t\t\t\treturn err\n200.  \t\t\t}\n201. @@ -347,7 +347,7 @@ func runUpdateForTargetRepo(ctx context.Context, targetRepo string, opts UpdateW\n202.  \t\tprBody := \"This PR updates agentic workflows from their source repositories.\" +\n203.  \t\t\treleaseLine + \"\\n\" + xmlMarker\n204.  \n205. -\t\tprURL, err := CreatePRWithChanges(\"update-workflows\", \"chore: update workflows\",\n206. +\t\tprURL, err := CreatePRWithChanges(ctx, \"update-workflows\", \"chore: update workflows\",\n207.  \t\t\t\"Update workflows from source\", prBody, verbose)\n208.  \t\tif err != nil {\n209.  \t\t\treturn errdiff --git a/pkg/cli/upgrade_command.go b/pkg/cli/upgrade_command.go\n210. index 20ffe0801a2..b4ebd932613 100644\n211. --- a/pkg/cli/upgrade_command.go\n212. +++ b/pkg/cli/upgrade_command.go\n213. @@ -160,7 +160,7 @@ This command always upgrades all Markdown files in .github/workflows.`,\n214.  \t\t\tif createPR {\n215.  \t\t\t\tprBody := \"This PR upgrades agentic workflows by applying the latest codemods, \" +\n216.  \t\t\t\t\t\"updating GitHub Actions versions, and recompiling all workflows.\"\n217. -\t\t\t\t_, err := CreatePRWithChanges(\"upgrade-agentic-workflows\", \"chore: upgrade agentic workflows\",\n218. +\t\t\t\t_, err := CreatePRWithChanges(cmd.Context(), \"upgrade-agentic-workflows\", \"chore: upgrade agentic workflows\",\n219.  \t\t\t\t\t\"Upgrade agentic workflows\", prBody, verbose)\n220.  \t\t\t\treturn err\n221.  \t\t\t}diff --git a/pkg/cli/upgrade_org.go b/pkg/cli/upgrade_org.go\n222. index cc3ecff5695..251ad9461d9 100644\n223. --- a/pkg/cli/upgrade_org.go\n224. +++ b/pkg/cli/upgrade_org.go\n225. @@ -301,7 +301,7 @@ func runUpgradeForTargetRepo(ctx context.Context, repo string, opts upgradeOptio\n226.  \t\t\"updating GitHub Actions versions, and recompiling all workflows.\" +\n227.  \t\treleaseLine + \"\\n\" + xmlMarker\n228.  \n229. -\tprURL, err := CreatePRWithChanges(\"upgrade-agentic-workflows\", \"chore: upgrade agentic workflows\",\n230. +\tprURL, err := CreatePRWithChanges(ctx, \"upgrade-agentic-workflows\", \"chore: upgrade agentic workflows\",\n231.  \t\t\"Upgrade agentic workflows\", prBody, verbose)\n232.  \tif err != nil {\n233.  \t\treturn errdiff --git a/pkg/workflow/github_cli.go b/pkg/workflow/github_cli.go\n234. index d3b08563a08..0ce85418a88 100644\n235. --- a/pkg/workflow/github_cli.go\n236. +++ b/pkg/workflow/github_cli.go\n237. @@ -229,6 +229,8 @@ func RunGHCombinedContext(ctx context.Context, spinnerMessage string, args ...st\n238.  // is set on the command. This is necessary because most gh subcommands (repo, pr, run, etc.)\n239.  // do not accept a --hostname flag — only `gh api` does.\n240.  //\n241. +// Deprecated: Use RunGHContextWithHost to support context cancellation and timeouts.\n242. +//\n243.  // Usage:\n244.  //\n245.  //\toutput, err := RunGHWithHost(\"Fetching repo info...\", \"myorg.ghe.com\", \"repo\", \"view\", \"--json\", \"owner,name\")\n246. ","detailedContent":"\ndiff --git a/tmp/gh-aw/agent/pr-diff.patch b/tmp/gh-aw/agent/pr-diff.patch\nindex 0000000..0000000 100644\n--- a/tmp/gh-aw/agent/pr-diff.patch\n+++ b/tmp/gh-aw/agent/pr-diff.patch\n@@ -1,246 +1,246 @@\n diff --git a/pkg/cli/README.md b/pkg/cli/README.md\n index 558b44b1c80..f91018a0cf3 100644\n --- a/pkg/cli/README.md\n +++ b/pkg/cli/README.md\n @@ -219,7 +219,7 @@ All diagnostic output MUST go to `stderr` using `console` formatting helpers. St\n  | `StartDockerImageDownload` | `func(ctx context.Context, image string) (bool, func() error)` | Begins a background image pull; returns false if already pulling. The join function blocks until the goroutine exits and returns any download error. |\n  | `CheckAndPrepareDockerImages` | `func(ctx context.Context, opts DockerImagesOptions) error` | Pre-pulls security-scanner Docker images |\n  | `UpdateContainerPins` | `func(ctx, workflowDir string, verbose bool) error` | Updates container image SHA pins in workflow files |\n -| `CreatePRWithChanges` | `func(branchPrefix, commitMessage, prTitle, prBody string, verbose bool) (string, error)` | Creates a GitHub PR from uncommitted changes |\n +| `CreatePRWithChanges` | `func(ctx context.Context, branchPrefix, commitMessage, prTitle, prBody string, verbose bool) (string, error)` | Creates a GitHub PR from uncommitted changes |\n  | `AutoMergePullRequestsCreatedAfter` | `func(repoSlug string, createdAfter time.Time, verbose bool) error` | Auto-merges eligible PRs created after a given time |\n  | `PreflightCheckForCreatePR` | `func(bool) error` | Validates prerequisites before creating a PR |\n  | `DisableAllWorkflowsExcept` | `func(repoSlug string, exceptWorkflows []string, verbose bool) error` | Disables all workflows in a repo except the named ones |\n diff --git a/pkg/cli/add_package_manifest.go b/pkg/cli/add_package_manifest.go\n index cde8cc6b42c..523768d875b 100644\n --- a/pkg/cli/add_package_manifest.go\n +++ b/pkg/cli/add_package_manifest.go\n @@ -935,7 +935,7 @@ func resolveRepositoryPackageDefaultBranch(repoSlug, host string) (string, error\n  \tvar output []byte\n  \tvar err error\n  \tif host != \"\" {\n -\t\toutput, err = workflow.RunGHWithHost(\"Fetching repo info...\", host, args...)\n +\t\toutput, err = workflow.RunGHContextWithHost(context.Background(), \"Fetching repo info...\", host, args...)\n  \t\tif err != nil {\n  \t\t\treturn \"\", err\n  \t\t}\n @@ -987,7 +987,7 @@ func resolveRepositoryPackageLatestRelease(repoSlug, host string) (string, error\n  \t\trunReleasesAPI: func(ctx context.Context, repo string) ([]byte, error) {\n  \t\t\targs := []string{\"api\", fmt.Sprintf(\"/repos/%s/releases\", repo), \"--jq\", \".[].tag_name\"}\n  \t\t\tif host != \"\" {\n -\t\t\t\treturn workflow.RunGHWithHost(\"Fetching releases...\", host, args...)\n +\t\t\t\treturn workflow.RunGHContextWithHost(ctx, \"Fetching releases...\", host, args...)\n  \t\t\t}\n  \t\t\treturn workflow.RunGHContext(ctx, \"Fetching releases...\", args...)\n  \t\t},diff --git a/pkg/cli/add_workflow_pr.go b/pkg/cli/add_workflow_pr.go\n index 7d80ed32dab..1bd62c28be0 100644\n --- a/pkg/cli/add_workflow_pr.go\n +++ b/pkg/cli/add_workflow_pr.go\n @@ -161,7 +161,7 @@ func addWorkflowsWithPR(ctx context.Context, workflows []*ResolvedWorkflow, opts\n  \n  \t// Create PR\n  \taddWorkflowPRLog.Printf(\"Creating pull request: %s\", prTitle)\n -\tprNumber, prURL, err := createPR(branchName, prTitle, prBody, opts.Verbose)\n +\tprNumber, prURL, err := createPR(ctx, branchName, prTitle, prBody, opts.Verbose)\n  \tif err != nil {\n  \t\taddWorkflowPRLog.Printf(\"Failed to create PR: %v\", err)\n  \t\tif rollbackErr := tracker.RollbackAllFiles(opts.Verbose); rollbackErr != nil && opts.Verbose {diff --git a/pkg/cli/deploy_command.go b/pkg/cli/deploy_command.go\n index 66ff023fd91..bf8c62f877a 100644\n --- a/pkg/cli/deploy_command.go\n +++ b/pkg/cli/deploy_command.go\n @@ -74,7 +74,7 @@ func runDeploy(ctx context.Context, targetRepo string, workflows []string, addOp\n  \t\treturn err\n  \t}\n  \n -\tif err := createDeployPR(resolvedWorkflows, targetRepo, addOpts.Verbose); err != nil {\n +\tif err := createDeployPR(ctx, resolvedWorkflows, targetRepo, addOpts.Verbose); err != nil {\n  \t\treturn err\n  \t}\n  \n @@ -252,9 +252,9 @@ func runDeployCompilePass(ctx context.Context, addOpts AddOptions) error {\n  \treturn nil\n  }\n  \n -func createDeployPR(resolvedWorkflows []string, targetRepo string, verbose bool) error {\n +func createDeployPR(ctx context.Context, resolvedWorkflows []string, targetRepo string, verbose bool) error {\n  \tprTitle, prBody := buildDeployPRMetadata(resolvedWorkflows, targetRepo)\n -\t_, err := CreatePRWithChanges(\"deploy-workflows\", deployCommitMessage, prTitle, prBody, verbose)\n +\t_, err := CreatePRWithChanges(ctx, \"deploy-workflows\", deployCommitMessage, prTitle, prBody, verbose)\n  \tif err != nil {\n  \t\treturn fmt.Errorf(\"failed to create deploy pull request: %w\", err)\n  \t}diff --git a/pkg/cli/init.go b/pkg/cli/init.go\n index 62ad34b32dc..6a29037c85a 100644\n --- a/pkg/cli/init.go\n +++ b/pkg/cli/init.go\n @@ -216,7 +216,7 @@ func InitRepository(opts InitOptions) error {\n  \t\t\t\"- Configuring .gitattributes\\n\" +\n  \t\t\t\"- Creating GitHub Copilot custom instructions\\n\" +\n  \t\t\t\"- Setting up workflow prompts and skills\"\n -\t\tif _, err := CreatePRWithChanges(\"init-agentic-workflows\", \"chore: initialize agentic workflows\", \"Initialize agentic workflows\", prBody, opts.Verbose); err != nil {\n +\t\tif _, err := CreatePRWithChanges(ctx, \"init-agentic-workflows\", \"chore: initialize agentic workflows\", \"Initialize agentic workflows\", prBody, opts.Verbose); err != nil {\n  \t\t\treturn err\n  \t\t}\n  \t}diff --git a/pkg/cli/outcome_eval.go b/pkg/cli/outcome_eval.go\n index 70fbc981966..44b37e9c205 100644\n --- a/pkg/cli/outcome_eval.go\n +++ b/pkg/cli/outcome_eval.go\n @@ -1,6 +1,7 @@\n  package cli\n  \n  import (\n +\t\"context\"\n  \t\"encoding/json\"\n  \t\"errors\"\n  \t\"fmt\"\n @@ -258,7 +259,7 @@ func ghAPIGet(endpoint string, repo string) (map[string]any, error) {\n  \tvar output []byte\n  \tvar err error\n  \tif host != \"\" {\n -\t\toutput, err = workflow.RunGHWithHost(\"Checking outcome...\", host, args...)\n +\t\toutput, err = workflow.RunGHContextWithHost(context.Background(), \"Checking outcome...\", host, args...)\n  \t} else {\n  \t\toutput, err = workflow.RunGH(\"Checking outcome...\", args...)\n  \t}\n @@ -283,7 +284,7 @@ func ghAPIGetArray(endpoint string, repo string) ([]map[string]any, error) {\n  \tvar output []byte\n  \tvar err error\n  \tif host != \"\" {\n -\t\toutput, err = workflow.RunGHWithHost(\"Checking outcome...\", host, args...)\n +\t\toutput, err = workflow.RunGHContextWithHost(context.Background(), \"Checking outcome...\", host, args...)\n  \t} else {\n  \t\toutput, err = workflow.RunGH(\"Checking outcome...\", args...)\n  \t}\n @@ -304,7 +305,7 @@ func ghAPIGraphQL(query string, repo string) (map[string]any, error) {\n  \tvar output []byte\n  \tvar err error\n  \tif host != \"\" {\n -\t\toutput, err = workflow.RunGHWithHost(\"Checking outcome...\", host, args...)\n +\t\toutput, err = workflow.RunGHContextWithHost(context.Background(), \"Checking outcome...\", host, args...)\n  \t} else {\n  \t\toutput, err = workflow.RunGH(\"Checking outcome...\", args...)\n  \t}diff --git a/pkg/cli/pr_command.go b/pkg/cli/pr_command.go\n index 98cae012438..4ae04d4b3c1 100644\n --- a/pkg/cli/pr_command.go\n +++ b/pkg/cli/pr_command.go\n @@ -1,6 +1,7 @@\n  package cli\n  \n  import (\n +\t\"context\"\n  \t\"encoding/json\"\n  \t\"errors\"\n  \t\"fmt\"\n @@ -757,7 +758,7 @@ func transferPR(prURL, targetRepo string, verbose bool) error {\n  }\n  \n  // createPR creates a pull request using GitHub CLI and returns the PR number\n -func createPR(branchName, title, body string, verbose bool) (int, string, error) {\n +func createPR(ctx context.Context, branchName, title, body string, verbose bool) (int, string, error) {\n  \tif verbose {\n  \t\tfmt.Fprintln(os.Stderr, console.FormatProgressMessage(\"Creating PR: \"+title))\n  \t}\n @@ -768,7 +769,7 @@ func createPR(branchName, title, body string, verbose bool) (int, string, error)\n  \n  \t// Get the current repository info to ensure PR is created in the correct repo.\n  \t// Use GH_HOST env var instead of --hostname (which is only valid for gh api, not gh repo view).\n -\trepoOutput, err := workflow.RunGHWithHost(\"Fetching repository info...\", remoteHost, \"repo\", \"view\", \"--json\", \"owner,name\")\n +\trepoOutput, err := workflow.RunGHContextWithHost(ctx, \"Fetching repository info...\", remoteHost, \"repo\", \"view\", \"--json\", \"owner,name\")\n  \tif err != nil {\n  \t\treturn 0, \"\", fmt.Errorf(\"failed to get current repository info: %w\", err)\n  \t}\n @@ -790,7 +791,7 @@ func createPR(branchName, title, body string, verbose bool) (int, string, error)\n  \t// current repo (not an upstream fork). Use GH_HOST env var instead of --hostname\n  \t// (which is only valid for gh api, not gh pr create).\n  \tprCreateArgs := []string{\"pr\", \"create\", \"--repo\", repoSpec, \"--title\", title, \"--body\", body, \"--head\", branchName}\n -\toutput, err := workflow.RunGHWithHost(\"Creating pull request...\", remoteHost, prCreateArgs...)\n +\toutput, err := workflow.RunGHContextWithHost(ctx, \"Creating pull request...\", remoteHost, prCreateArgs...)\n  \tif err != nil {\n  \t\t// Try to get stderr for better error reporting\n  \t\tvar exitError *exec.ExitErrordiff --git a/pkg/cli/pr_helpers.go b/pkg/cli/pr_helpers.go\n index 93f80386a92..94a8236fd20 100644\n --- a/pkg/cli/pr_helpers.go\n +++ b/pkg/cli/pr_helpers.go\n @@ -1,6 +1,7 @@\n  package cli\n  \n  import (\n +\t\"context\"\n  \t\"errors\"\n  \t\"fmt\"\n  \t\"math/rand\"\n @@ -28,7 +29,7 @@ func PreflightCheckForCreatePR(verbose bool) error {\n  // pushes the branch, creates a pull request, and returns to the original branch.\n  // branchPrefix is used as the prefix for the auto-generated branch name.\n  // Returns the PR URL on success.\n -func CreatePRWithChanges(branchPrefix, commitMessage, prTitle, prBody string, verbose bool) (string, error) {\n +func CreatePRWithChanges(ctx context.Context, branchPrefix, commitMessage, prTitle, prBody string, verbose bool) (string, error) {\n  \tprHelpersLog.Printf(\"Creating PR with branch prefix: %s\", branchPrefix)\n  \n  \tcurrentBranch, err := getCurrentBranch()\n @@ -58,7 +59,7 @@ func CreatePRWithChanges(branchPrefix, commitMessage, prTitle, prBody string, ve\n  \t\treturn \"\", err\n  \t}\n  \n -\t_, prURL, err := createPR(branchName, prTitle, prBody, verbose)\n +\t_, prURL, err := createPR(ctx, branchName, prTitle, prBody, verbose)\n  \tif err != nil {\n  \t\t_ = switchBranch(currentBranch, verbose)\n  \t\treturn \"\", fmt.Errorf(\"failed to create PR: %w\", err)diff --git a/pkg/cli/update_command.go b/pkg/cli/update_command.go\n index bd3fe444612..3b2b9735535 100644\n --- a/pkg/cli/update_command.go\n +++ b/pkg/cli/update_command.go\n @@ -153,7 +153,7 @@ Note: In GitHub Enterprise repos, shorthand source specs resolve on your enterpr\n  \n  \t\t\tif createPR {\n  \t\t\t\tprBody := \"This PR updates agentic workflows from their source repositories.\"\n -\t\t\t\t_, err := CreatePRWithChanges(\"update-workflows\", \"chore: update workflows\",\n +\t\t\t\t_, err := CreatePRWithChanges(cmd.Context(), \"update-workflows\", \"chore: update workflows\",\n  \t\t\t\t\t\"Update workflows from source\", prBody, verbose)\n  \t\t\t\treturn err\n  \t\t\t}\n @@ -347,7 +347,7 @@ func runUpdateForTargetRepo(ctx context.Context, targetRepo string, opts UpdateW\n  \t\tprBody := \"This PR updates agentic workflows from their source repositories.\" +\n  \t\t\treleaseLine + \"\\n\" + xmlMarker\n  \n -\t\tprURL, err := CreatePRWithChanges(\"update-workflows\", \"chore: update workflows\",\n +\t\tprURL, err := CreatePRWithChanges(ctx, \"update-workflows\", \"chore: update workflows\",\n  \t\t\t\"Update workflows from source\", prBody, verbose)\n  \t\tif err != nil {\n  \t\t\treturn errdiff --git a/pkg/cli/upgrade_command.go b/pkg/cli/upgrade_command.go\n index 20ffe0801a2..b4ebd932613 100644\n --- a/pkg/cli/upgrade_command.go\n +++ b/pkg/cli/upgrade_command.go\n @@ -160,7 +160,7 @@ This command always upgrades all Markdown files in .github/workflows.`,\n  \t\t\tif createPR {\n  \t\t\t\tprBody := \"This PR upgrades agentic workflows by applying the latest codemods, \" +\n  \t\t\t\t\t\"updating GitHub Actions versions, and recompiling all workflows.\"\n -\t\t\t\t_, err := CreatePRWithChanges(\"upgrade-agentic-workflows\", \"chore: upgrade agentic workflows\",\n +\t\t\t\t_, err := CreatePRWithChanges(cmd.Context(), \"upgrade-agentic-workflows\", \"chore: upgrade agentic workflows\",\n  \t\t\t\t\t\"Upgrade agentic workflows\", prBody, verbose)\n  \t\t\t\treturn err\n  \t\t\t}diff --git a/pkg/cli/upgrade_org.go b/pkg/cli/upgrade_org.go\n index cc3ecff5695..251ad9461d9 100644\n --- a/pkg/cli/upgrade_org.go\n +++ b/pkg/cli/upgrade_org.go\n @@ -301,7 +301,7 @@ func runUpgradeForTargetRepo(ctx context.Context, repo string, opts upgradeOptio\n  \t\t\"updating GitHub Actions versions, and recompiling all workflows.\" +\n  \t\treleaseLine + \"\\n\" + xmlMarker\n  \n -\tprURL, err := CreatePRWithChanges(\"upgrade-agentic-workflows\", \"chore: upgrade agentic workflows\",\n +\tprURL, err := CreatePRWithChanges(ctx, \"upgrade-agentic-workflows\", \"chore: upgrade agentic workflows\",\n  \t\t\"Upgrade agentic workflows\", prBody, verbose)\n  \tif err != nil {\n  \t\treturn errdiff --git a/pkg/workflow/github_cli.go b/pkg/workflow/github_cli.go\n index d3b08563a08..0ce85418a88 100644\n --- a/pkg/workflow/github_cli.go\n +++ b/pkg/workflow/github_cli.go\n @@ -229,6 +229,8 @@ func RunGHCombinedContext(ctx context.Context, spinnerMessage string, args ...st\n  // is set on the command. This is necessary because most gh subcommands (repo, pr, run, etc.)\n  // do not accept a --hostname flag — only `gh api` does.\n  //\n +// Deprecated: Use RunGHContextWithHost to support context cancellation and timeouts.\n +//\n  // Usage:\n  //\n  //\toutput, err := RunGHWithHost(\"Fetching repo info...\", \"myorg.ghe.com\", \"repo\", \"view\", \"--json\", \"owner,name\")\n \n"}}}

Action Required

Assign this issue to an agent to debug and fix the issue.

Debug with any coding agent

Use this prompt with any coding agent (GitHub Copilot, Claude, Gemini, etc.):

Debug the agentic workflow failure using https://raw.githubusercontent.com/github/gh-aw/main/debug.md

The failed workflow run is at https://github.com/github/gh-aw/actions/runs/30715022302
Manually invoke the agent

Debug this workflow failure using your favorite Agent CLI and the agentic-workflows prompt.

Tip

Stop reporting this workflow as a failure

To stop a workflow from creating failure issues, set report-failure-as-issue: false in its frontmatter:

safe-outputs:
  report-failure-as-issue: false

Generated from PR Code Quality Reviewer · 54.8 AIC ·

  • expires on Aug 2, 2026, 7:43 AM UTC

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions