perf: fix 17.1% regression in BenchmarkParseWorkflow#28787
perf: fix 17.1% regression in BenchmarkParseWorkflow#28787
Conversation
…ngines When a workflow uses a string-form engine (e.g. `engine: claude`) without user-specified imports, skip the builtin engine .md import injection entirely. All builtin engine .md files contain only an engine definition—no tools, steps, or runtimes—so their content is already available in the engine catalog (populated at startup by loadBuiltinEngineDefinitions). The full ProcessImportsFromFrontmatterWithSource round-trip is therefore redundant in this common case. When user imports ARE present, the builtin is still injected so it participates correctly in duplicate-engine detection. The engine setting and config are recovered from the pre-known `builtinInjectedEngineID` via a fast path that also avoids the JSON re-parsing overhead of both `validateSingleEngineSpecification` and `extractEngineConfigFromJSON`. `builtinSkippedInjection` is used to pass the engine ID to `validateSingleEngineSpecification` as the `mainEngineSetting` in the conflict detection path, so a workflow with `engine: claude` AND an `@include` that specifies another engine still raises the expected "multiple engine fields found" error. Benchmark improvement (BenchmarkParseWorkflow): Before: 184,226 ns/op 1,370 allocs/op After: ~155,000 ns/op 1,175 allocs/op (~16% faster, 195 fewer allocs/op) Fixes the 17.1% regression reported in the Daily CLI Performance workflow. Agent-Logs-Url: https://github.com/github/gh-aw/sessions/daa722df-c5fe-41ff-9396-31a84efed073 Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/daa722df-c5fe-41ff-9396-31a84efed073 Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR improves ParseWorkflowFile performance by avoiding redundant builtin-engine import processing and JSON parsing in the common case where engine: <builtin> is used without user imports.
Changes:
- Skip injecting the builtin engine
.mdimport whenimports:is absent from frontmatter. - Add a fast-path to restore the builtin engine setting/config without re-validating/parsing engine JSON when there are no included engines and no conflicting imported engines.
- Preserve duplicate-engine conflict detection by accounting for the skipped builtin engine during validation.
Show a summary per file
| File | Description |
|---|---|
| pkg/workflow/compiler_orchestrator_engine.go | Adds conditional builtin import injection + engine-resolution fast path to remove unnecessary import processing and JSON parsing overhead. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 1/1 changed files
- Comments generated: 2
| _, hadUserImports := result.Frontmatter["imports"] | ||
| if hadUserImports { | ||
| // User already specified imports: inject normally so the engine |
There was a problem hiding this comment.
hadUserImports is currently based on whether the imports key exists, not whether the user actually specified any import entries. This means the optimization won’t fire for cases like imports: [] or imports: {aw: []}, even though they are effectively “no user imports”, and you’ll still inject the builtin engine and pay the import-processing overhead. Consider treating an empty imports list/object as no user imports (e.g., parse/inspect the imports value and only inject when it contains at least one import spec).
| var builtinInjectedEngineID string | ||
| var builtinSkippedInjection bool |
There was a problem hiding this comment.
builtinInjectedEngineID is also set when the builtin injection is skipped (builtinSkippedInjection=true), so the name is misleading. Renaming it to something like builtinEngineID/builtinResolvedEngineID would better reflect its role (the pre-known builtin engine ID) and make the fast-path conditions easier to reason about.
|
@copilot merge main and recompile |
…ce-regression-parse-workflow Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
- Rename builtinInjectedEngineID -> builtinEngineID (clearer: tracks the
pre-known engine ID regardless of whether injection was skipped)
- Replace hadUserImports key-existence check with frontmatterHasUserImports()
helper that correctly treats empty imports (imports: [], imports: {aw: []},
imports: '') as having no user imports, so the optimisation fires in those
cases too
- Merge origin/main and recompile all 204 workflow lock files
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/9b66f8d4-2619-42f5-bfec-d588d963e7ca
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Done in 32f9b2e — merged main and recompiled all 204 workflow lock files. Also addressed the two code review comments in the same commit:
Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
A prior refactoring converted string-form engines (
engine: claude) into builtin import injections, adding ~26µs of unnecessary overhead perParseWorkflowFilecall in the common case of a workflow with no user-specified imports.Root cause
The new code path unconditionally ran three expensive operations even when nothing was gained:
ProcessImportsFromFrontmatterWithSource(claude.md)validateSingleEngineSpecificationJSON parseextractEngineConfigFromJSONJSON unmarshalAll builtin engine
.mdfiles contain only an engine definition — no tools, steps, runtimes, or network config. That definition is already in the engine catalog (loaded at startup byloadBuiltinEngineDefinitions), so the import round-trip was purely redundant.Changes
Skip import injection when no user imports exist. When
imports:is absent from the frontmatter, don't inject the builtin.mdat all.ProcessImportsFromFrontmatterWithSourcereturns immediately on an empty import list.Fast-path engine resolution. Record the engine ID in
builtinInjectedEngineIDbefore clearingengineSetting. After import processing, when there are no@includeengine specs and no conflicting user imports (len(includedEngines) == 0 && len(importsResult.MergedEngines) <= 1), restore the engine directly without JSON re-parsing.Preserve conflict detection.
builtinSkippedInjectionflag passes the pre-known engine ID tovalidateSingleEngineSpecificationasmainEngineSettingwhen the injection was skipped, so a workflow with bothengine: claudeand an@includethat specifies another engine still raises the expected "multiple engine fields found" error.Benchmark
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
https://api.github.com/graphql/usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw(http block)/usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --verify --quiet /usr/bin/git git(http block)/usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel node /usr/bin/git git(http block)https://api.github.com/orgs/test-owner/actions/secrets/usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu-d /usr/bin/git /usr/bin/git git /usr/bin/git git rev-�� --show-toplevel fd2213487f4bf7ed-ifaceassert /usr/bin/git --show-toplevel git /usr/bin/git git(http block)https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1/usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv -bool -buildtags /usr/bin/git -errorsas -ifaceassert -nilfunc git rev-�� --show-toplevel -tests /usr/bin/git(http block)/usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv cfg git /usr/bin/git --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel ache/go/1.25.8/x/opt/hostedtoolcache/node/24.14.1/x64/bin/npm /usr/bin/git git(http block)/usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git(http block)https://api.github.com/repos/actions/checkout/git/ref/tags/v3/usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv --local credential.helper ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet(http block)/usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv --show-toplevel git ache/node/24.14.1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git _har�� --show-toplevel git .cfg --show-toplevel(http block)/usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git(http block)https://api.github.com/repos/actions/checkout/git/ref/tags/v5/usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv(http block)/usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel(http block)/usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel 64/pkg/tool/linux_amd64/vet /usr/bin/git get cfg 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/vet /usr/bin/git it} cfg 64/pkg/tool/linu--show-toplevel git(http block)https://api.github.com/repos/actions/checkout/git/ref/tags/v6/usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv(http block)/usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --get-regexp --global 64/pkg/tool/linux_amd64/vet(http block)/usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv get cfg 64/pkg/tool/linux_amd64/vet user.email(http block)https://api.github.com/repos/actions/github-script/git/ref/tags/v8/usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel(http block)/usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel /opt/hostedtoolcrev-parse /usr/bin/git git rev-�� --show-toplevel git(http block)/usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git(http block)https://api.github.com/repos/actions/github-script/git/ref/tags/v9/usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -unreachable=false /tmp/go-build558397531/b070/vet.cfg 397531/b342/vet.cfg(http block)/usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -bool -buildtags /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -errorsas -ifaceassert -nilfunc /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -uns�� -unreachable=false /tmp/go-build558397531/b231/vet.cfg /usr/bin/git(http block)/usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -unreachable=false /tmp/go-build558397531/b131/vet.cfg /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -main/dist/indexgit(http block)https://api.github.com/repos/actions/setup-go/git/ref/tags/v4/usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv -bool -buildtags /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -errorsas -ifaceassert -nilfunc /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -ato�� -bool -buildtags /usr/bin/git -errorsas -ifaceassert -nilfunc git(http block)/usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv ache/go/1.25.8/x--show-toplevel git /opt/hostedtoolcache/node/24.14.1/x64/bin/node --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git node js/f�� cfg git /usr/bin/git --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git git(http block)/usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git(http block)https://api.github.com/repos/actions/setup-node/git/ref/tags/v4/usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv get cfg 64/pkg/tool/linux_amd64/vet user.email(http block)/usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv f/tags/v6 /tmp/go-build558397531/b127/vet.cfg sv(http block)/usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel x_amd64/vet /usr/bin/git git rev-�� --show-toplevel git ache/node/24.14.1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git(http block)https://api.github.com/repos/actions/setup-node/git/ref/tags/v6/usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv(http block)/usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --get-regexp --global 64/pkg/tool/linux_amd64/vet(http block)/usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/sed --show-toplevel(http block)https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4/usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv get cfg 64/pkg/tool/linux_amd64/vet credential.helpegit(http block)/usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel x_amd64/vet(http block)/usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --oneline -10 /usr/bin/git f/tags/v6 git sv git rev-�� --show-toplevel git(http block)https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0.1.2/usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv -unreachable=false /tmp/go-build558397531/b104/vet.cfg 397531/b339/vet.cfg(http block)/usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv ache/go/1.25.8/x--show-toplevel git 6373644/b369/vet.cfg --show-toplevel git /usr/bin/git node js/f�� ache/go/1.25.8/x--show-toplevel git /tmp/go-build3756373644/b001/workflow.test --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git /tmp/go-build3756373644/b001/workflow.test(http block)/usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git(http block)https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0/usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv get cfg 64/pkg/tool/linux_amd64/vet credential.userngit(http block)/usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git cjs --show-toplevel git /usr/bin/git --show-toplevel x_amd64/vet /usr/bin/git git(http block)/usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv /repos/actions/checkout/git/ref/tags/v5 --jq /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel node /usr/bin/git git(http block)https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.2.3/usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv get --local 64/pkg/tool/linux_amd64/vet credential.userngit(http block)/usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv --show-toplevel git 1/x64/bin/node --show-toplevel x_amd64/vet /usr/bin/git git cjs --show-toplevel git /usr/bin/git --show-toplevel x_amd64/vet /usr/bin/git git(http block)/usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git(http block)https://api.github.com/repos/github/gh-aw/actions/runs/usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-04-20 node x_amd64/link git rev-�� matter-with-env--p x_amd64/link 64/pkg/tool/linu-lang=go1.25 --show-toplevel node /usr/bin/git 64/pkg/tool/linutest-branch(http block)/usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-03-28 node /usr/bin/git git rev-�� --show-toplevel git n-dir/bash --show-toplevel rtcfg /usr/bin/git bash(http block)/usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-01-27 node /usr/bin/git git rev-�� --show-toplevel git /usr/sbin/bash --show-toplevel ache/go/1.25.8/xconfig /usr/bin/git bash(http block)https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts/usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name git test --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git test 6256�� --show-toplevel git /usr/bin/git --show-toplevel node /usr/bin/git git(http block)/usr/bin/gh gh run download 1 --dir test-logs/run-1 bash 64/pkg/tool/linux_amd64/link --noprofile node /usr/bin/git 64/pkg/tool/linutest@example.com rev-�� til.test git rtcfg.link --show-toplevel bash /usr/bin/git iUEqf5PFeb3NCkL0nF/2rw-RdHCw_apH02zfbN4/KAMAEFRbrlJARCgx999D(http block)https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts/usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name log tdrain.test -n1 --format=format:rev-parse --end-of-options--show-toplevel tdrain.test 6256�� -4077058525/.github/workflows git /usr/bin/infocmp --show-toplevel node /usr/bin/git ylQP4Z8/vCNYLdc7D8RXanEmFBss(http block)/usr/bin/gh gh run download 12345 --dir test-logs/run-12345 -trimpath 64/pkg/tool/linux_amd64/compile -p main -lang=go1.25 64/pkg/tool/linux_amd64/compile rev-�� _.a -goversion /usr/bin/git -c=4 -nolocalimports -importcfg git(http block)https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts/usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name gh 64/pkg/tool/linux_amd64/vet /repos/actions/ggit --jq /usr/bin/git 64/pkg/tool/linux_amd64/vet rev-�� --show-toplevel git /usr/bin/gh --show-toplevel node /usr/bin/git gh(http block)/usr/bin/gh gh run download 12346 --dir test-logs/run-12346 -trimpath 64/pkg/tool/linu-importcfg -p github.com/githurev-parse -lang=go1.25 pBvTgXO/G1KutSxXHjoE8hqd2SJr rev-�� til.test -goversion rtcfg.link -c=4 -nolocalimports -importcfg -4GmfpWzsnidAKUU7I/p67f43WHEJUTs4-oiIa1/9KqfPfOC-tests(http block)https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts/usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name git 64/pkg/tool/linux_amd64/compile --show-toplevel ache/go/1.25.8/xconfig /usr/bin/git 64/pkg/tool/linutest@example.com rev-�� _.a git /usr/bin/git --show-toplevel node /usr/bin/git git(http block)/usr/bin/gh gh run download 2 --dir test-logs/run-2 -buildtags 64/pkg/tool/linux_amd64/link -errorsas -ifaceassert -nilfunc 64/pkg/tool/linux_amd64/link rev-�� e-analyzer.md -tests rtcfg.link --show-toplevel bash /usr/bin/git 1tjYVSqOEP82kiP9ch/8p_7IHIf_31YR46MaExS/rs4ruDNpremote(http block)https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts/usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name git 64/pkg/tool/linux_amd64/link --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git 64/pkg/tool/linux_amd64/link rev-�� test git rtcfg.link --show-toplevel node /usr/bin/git Q3e4TIjT1QvQ50tgDn/O2DxvT5gK_cfT--jq(http block)/usr/bin/gh gh run download 3 --dir test-logs/run-3 bash 64/pkg/tool/linux_amd64/compile --noprofile node /usr/bin/git 64/pkg/tool/linux_amd64/compile rev-�� _.a git /usr/bin/git --show-toplevel bash /usr/bin/git git(http block)https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts/usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name git 64/pkg/tool/linux_amd64/vet --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git 64/pkg/tool/linux_amd64/vet rev-�� --show-toplevel git ck --show-toplevel node /usr/bin/git git(http block)/usr/bin/gh gh run download 4 --dir test-logs/run-4 -trimpath 64/pkg/tool/linux_amd64/vet -p github.com/githurev-parse -lang=go1.25 64/pkg/tool/linux_amd64/vet rev-�� --show-toplevel -goversion /usr/bin/git -c=4 -nolocalimports -importcfg git(http block)https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts/usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name git ole.test --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git ole.test 6256�� --show-toplevel git /usr/bin/git --show-toplevel yhZMbx0o-G8n_/fFrev-parse /usr/bin/git git(http block)/usr/bin/gh gh run download 5 --dir test-logs/run-5 c 64/pkg/tool/linux_amd64/vet - node /usr/bin/git 64/pkg/tool/linux_amd64/vet rev-�� --show-toplevel git ck --show-toplevel bash /usr/bin/git git(http block)https://api.github.com/repos/github/gh-aw/actions/workflows/usr/bin/gh gh workflow list --json name,state,path --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu-d /usr/bin/git -bool -buildtags /usr/bin/git git rev-�� --show-toplevel git f4bf7ede:go.mod --show-toplevel -tests /usr/bin/git 4ZZKnaW/q7mS0m_A-buildtags(http block)/usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 node /usr/bin/git git rev-�� --show-toplevel git x_amd64/cgo --show-toplevel node /usr/bin/git x_amd64/cgo(http block)/usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 node /usr/bin/git 64/pkg/tool/linu--json rev-�� _.a git /usr/bin/git /ref/tags/v9 node sv git(http block)https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md/tmp/go-build762565513/b404/cli.test /tmp/go-build762565513/b404/cli.test -test.testlogfile=/tmp/go-build762565513/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git 64/bin/bash --show-toplevel git /usr/bin/git git(http block)https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel(http block)/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel /opt/hostedtoolcrev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel /opt/hostedtoolc-k /usr/bin/git git(http block)/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel nly(http block)https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv(http block)/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /usr/bin/git --oneline -20 /opt/hostedtoolcache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile /usr/bin/git /tmp/go-build558node -trimpath 397531/b280/vet.cfg git(http block)/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git ache/node/24.14.--show-toplevel git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git ache/node/24.14.--show-toplevel git(http block)https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.2.3/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel node /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel kflow.test /usr/bin/git git(http block)https://api.github.com/repos/github/gh-aw/git/ref/tags/v2.0.0/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel node /usr/bin/git git rev-�� --show-toplevel git x_amd64/asm --show-toplevel node /usr/bin/git x_amd64/asm(http block)/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv _I0oH2Mu2 git /usr/bin/git --show-toplevel node /usr/bin/git rtcfg rev-�� dcfg git ache/go/1.25.8/x-importcfg --show-toplevel node /usr/bin/git ache/go/1.25.8/x-pack(http block)/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel git _.a --show-toplevel node /usr/bin/git git rev-�� Gitmain_branch1482716376/001' Gitmain_branch1482716376/001' k/_temp/uv-python-dir/bash --show-toplevel node /usr/bin/git git(http block)https://api.github.com/repos/github/gh-aw/git/ref/tags/v3.0.0/usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel node /usr/bin/git git rev-�� ithub-script/git/ref/tags/v9 git ache/go/1.25.8/x64/pkg/tool/linux_amd64/asm --show-toplevel node /usr/bin/git 9B8vwjI/_jU1qxM0Test User(http block)https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999/usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv(http block)/usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet /usr/bin/git --noprofile(http block)/usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git --show-toplevel git ache/node/24.14.--show-toplevel git rev-�� --show-toplevel git ache/node/24.14.1/x64/bin/npm --show-toplevel git ache/node/24.14.--show-toplevel ache/node/24.14.1/x64/bin/npm(http block)https://api.github.com/repos/nonexistent/repo/actions/runs/12345/usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion --show-toplevel node /usr/bin/git xA/UKkkKTGelwdLOjJ7Y5s9/JFUWe_Nrtest@example.com rev-�� --show-toplevel git x_amd64/vet --show-toplevel bash /usr/bin/git x_amd64/vet(http block)https://api.github.com/repos/owner/repo/actions/workflows/usr/bin/gh gh workflow list --json name,state,path --repo owner/repo /usr/bin/git -bool -buildtags /usr/bin/git git rev-�� etup-node/git/re-errorsas git bject.type] | @t-nilfunc --show-toplevel -tests /usr/bin/git git(http block)/usr/bin/gh gh workflow list --json name,state,path --repo owner/repo -importcfg /tmp/go-build762565513/b430/importcfg -embedcfg /tmp/go-build762565513/b430/embedcfg -pack rev-�� _.a git /usr/bin/git --show-toplevel git /usr/bin/git git(http block)/usr/bin/gh gh workflow list --repo owner/repo --json name,path,state /usr/bin/gh --show-toplevel node /usr/bin/git gh api t3316627562/.github/workflows --jq cfg --show-toplevel bash /usr/bin/git ache/go/1.25.8/xrepos/{owner}/{repo}/actions/runs/12345/artifacts(http block)https://api.github.com/repos/test-owner/test-repo/actions/secrets/usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name --show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu-d /usr/bin/git /usr/bin/git git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git /ref/tags/v9 git sv git(http block)https://api.github.com/repos/test/repo/usr/bin/gh gh api /repos/test/repo --jq .default_branch til.test git rtcfg.link --show-toplevel bash /usr/bin/git iUEqf5PFeb3NCkL0nF/2rw-RdHCw_apH02zfbN4/KAMAEFRbrlJARCgx999D rev-�� --show-toplevel git _.a --show-toplevel head /usr/bin/git ache/go/1.25.8/x3(http block)If you need me to access, download, or install something from one of these locations, you can either: