Skip to content

fix(serena-codemod): fix broken scaffolded serena.md and handle tools list form#28735

Merged
pelikhan merged 2 commits intomainfrom
copilot/fix-serena-migration-broken-workflows
Apr 27, 2026
Merged

fix(serena-codemod): fix broken scaffolded serena.md and handle tools list form#28735
pelikhan merged 2 commits intomainfrom
copilot/fix-serena-migration-broken-workflows

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 27, 2026

After gh aw fix --write migrates a workflow from tools.serena to imports:, the auto-scaffolded shared/mcp/serena.md was missing its import-schema declaration and didn't forward languages to the upstream import — causing immediate compile failure on every migrated repo. Additionally, the tools: [serena] list form (no languages) was silently skipped with no migration applied.

Changes

Bug 1 — Scaffolded shared/mcp/serena.md missing languages pass-through

scaffoldedSerenaSharedWorkflow previously generated:

imports:
  - uses: github/gh-aw/.github/workflows/shared/mcp/serena.md@main

The upstream serena.md declares languages as a required import-schema input, so this always failed with:

required 'with' input "languages" is missing (declared in import-schema)

Fixed scaffolded content now declares its own schema and forwards the input:

import-schema:
  languages:
    type: array
    items:
      type: string
    required: true
    description: >
      List of programming language identifiers to enable for Serena LSP analysis. ...

imports:
  - uses: github/gh-aw/.github/workflows/shared/mcp/serena.md@main
    with:
      languages: ${{ github.aw.import-inputs.languages }}

Bug 2 — tools: [serena] list form not migrated

When tools is a YAML list (tools: [serena] or tools:\n - serena) rather than a map, the codemod found no languages and returned with no change applied.

  • Added isSerenaInToolsList() to detect list-form serena entries
  • Added removeSerenaFromToolsList() / removeSerenaFromInlineList() to remove them from block and inline YAML list forms
  • addSerenaImport() now emits a languages: [] placeholder with a TODO comment when no languages were specified, rather than skipping the migration entirely:
imports:
  - uses: shared/mcp/serena.md
    with:
      languages: []  # TODO: specify languages, e.g. ["TypeScript", "JavaScript"]

Tests

  • Enhanced TestFixCommand_ScaffoldsSerenaSharedWorkflow to assert import-schema and github.aw.import-inputs.languages are present in the scaffolded file
  • Added four new subtests under TestSerenaToSharedImportCodemod covering block form, inline form, mixed-tools list, and no-serena-in-list cases

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
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login + "/" + .name ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 0527-34082/test-source-field-variant-780778472 GO111MODULE ow.lock.yml GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh repo view owner/repo 3889�� -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 7672/001/stability-test.md GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh repo view owner/repo env 426792998 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env t1484639698 GO111MODULE .yml GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/orgs/test-owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name k/gh-aw/gh-aw/pkGOINSECURE k/gh-aw/gh-aw/pkGOMOD 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcGOPROXY -o /tmp/go-build422GOSUMDB -trimpath 64/bin/go -p main -lang=go1.25 go (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE node GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env h ../../../.pret.prettierignore GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git ithub/workflows GO111MODULE ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel go /usr/bin/git 0527-34082/test-git GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv --git-dir 64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv user.name Test User /usr/bin/git 2248727643/.githgit GO111MODULE ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel go /usr/bin/git agentic-observabgit GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv 0527-34082/test-1404782433 -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 /opt/hostedtoolcache/node/24.14.1/x64/bin/node -errorsas -ifaceassert -nilfunc node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv /tmp/gh-aw-test-runs/20260427-140750-54302/test-1343726490 rev-parse /usr/bin/git 1 GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git y-frontmatter.mdgit GO111MODULE x_amd64/compile git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv --show-toplevel go Name,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle -json GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/infocmp y-frontmatter.mdgit GO111MODULE 64/bin/go infocmp (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv 0527-34082/test-3947469824/.gith--detach GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env g_.a GO111MODULE 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git -json GO111MODULE rgo/bin/bash git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git GOMODCACHE l /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git /tmp/compile-allgit s/2/artifacts /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv L0nF/R3iUEqf5PFeb3NCkL0nF GO111MODULE 1/x64/bin/node GOINSECURE GOMOD GOMODCACHE go -has�� ithub/workflows/agent-persona-explorer.md 8982935/b424/_testmain.go 8982935/b441/sliceutil.test GOINSECURE GOMOD GOMODCACHE 8982935/b441/sliceutil.test (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv /tmp/go-build3388982935/b395/actionpins.test l ache/node/24.14.1/x64/bin/node -s -w -buildmode=exe git t-28�� bility_SameInputSameOutput3753177672/001/stability-test.md -extld=gcc /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv t0 -goversion (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git 0527-34082/test-bash GO111MODULE /opt/hostedtoolcache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel go /usr/bin/git -json =master 1/x64/bin/node git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts /usr/bin/git .artifacts[].nambash t2Bi/LbyKJAzlPTf/tmp/gh-aw-test-runs/20260427-140755-55624/test-patch-priority-11639�� (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git -json GO111MODULE 1/x64/bin/node git rev-�� --show-toplevel go /usr/bin/gh ithub/workflows/git GO111MODULE e/git gh (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v9
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE 3714336/b402/impGO111MODULE /opt�� k/gh-aw/gh-aw/pkGOINSECURE k/gh-aw/gh-aw/pkGOMOD 64/bin/go **/*.ts **/*.json --ignore-path /opt/hostedtoolcGO111MODULE (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv UIRb/yT9Q5yMMkMcGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 3714336/b401/impGO111MODULE -c che/go-build/67/GOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcGOPROXY (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE node /hom�� --check **/*.cjs 64/bin/go **/*.json --ignore-path ../../../.pretti/tmp/go-build3388982935/b475/_pkg_.a /opt/hostedtoolc-trimpath (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv Actor: ${{ github.actor }}, Repo: ${{ github.repository }} go /usr/bin/gh -json GO111MODULE 64/bin/go gh run download 2 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile test-logs/run-2 GO111MODULE x_amd64/vet /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv 40001754/001 64/pkg/tool/linux_amd64/compile /usr/bin/git 62/001/test-frongit GO111MODULE 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linutest@example.com /usr/bin/git _.a _3ywvdE5S 64/pkg/tool/linu--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /tmp/TestGuardPolicyTrustedUsersRequiresMinIntegrity2636767681/001 config 8982935/b464/vet.cfg remote.origin.urgit -trimpath 64/bin/go git -C /tmp/TestCompileUpdateDiscussionFieldEnforcement605038314/001 rev-parse /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/gh -json GO111MODULE 64/bin/go gh run download 3 /usr/bin/gh test-logs/run-3 GO111MODULE ache/go/1.25.8/x--show-toplevel gh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv ErrorFormatting1229982383/001 git-upload-pack '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitbranch_with_hyphen2161718749/rev-parse /usr/bin/git l o 64/bin/go git -C /tmp/TestGuardPolicyTrustedUsersExpressionCompiledOutput249452364/001 config /usr/bin/git remote.origin.urgit GO111MODULE 64/bin/go git (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 1/x64/bin/node GOINSECURE GOMOD GOMODCACHE go t-ha�� ithub/workflows/agentic-observability-kit.md GO111MODULE 8982935/b444/stats.test 01' 01' GOMODCACHE 8982935/b444/stats.test (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv runs/20260427-140527-34082/test-2987830144 -buildtags ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile l -ifaceassert -nilfunc ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile conf�� 8982935/b455/_pkg_.a test@example.com 1/x64/bin/node -json b/gh-aw/pkg/timerev-parse 64/bin/go 1/x64/bin/node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv run --auto /usr/bin/git --detach k/gh-aw/gh-aw/pkrev-parse 64/bin/go git -C /tmp/TestGuardPolicyTrustedUsersRequiresMinIntegrity2636767681/001 rev-parse (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv ry=1 rev-parse 8982935/b462/_pkg_.a --check scripts/**/*.js 64/bin/go gh api /repos/actions/github-script/git/ref/tags/v9 url 0"}} -json GO111MODULE 64/bin/go node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv . l /usr/bin/git d GO111MODULE 64/bin/go git -C /tmp/gh-aw-test-runs/20260427-140750-54302/test-3405999818/.github/workflows rev-parse /usr/bin/git -json GO111MODULE _modules/.bin/sh--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /tmp/gh-aw-add-gitattributes-test1441540698 show /usr/bin/git -json GO111MODULE 64/bin/go git -C ithub-script/git/ref/tags/v9 rev-parse bject.type] | @tsv -json GO111MODULE 64/bin/go git (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv --show-toplevel /tmp/go-build3388982935/b456/timeutil.test /usr/bin/git -test.paniconexigit -test.v=true /usr/bin/unpigz git rev-�� --show-toplevel /usr/bin/unpigz /usr/bin/git -c go /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv --show-toplevel nly $name) { hasDiscussionsEnabled } } --show-toplevel go /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git WorkflowFiles_Wigit remote.origin.ur-C /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv --show-toplevel nly /usr/bin/git /home/REDACTED/worbash rev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git WorkflowFiles_Tr/usr/bin/gh x_amd64/compile /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch --show-toplevel git /usr/bin/git --show-toplevel go /usr/bin/git git rev-�� --show-toplevel git r: $owner, name: $name) { hasDiscussionsEnabled } } --show-toplevel go /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch HEAD tions/setup/js/nowner=github 64/pkg/tool/linu-f --verify e1d0c8806df6f2a8-C /home/REDACTED/wor/home/REDACTED/work/gh-aw/gh-aw 64/pkg/tool/linushow add /test-cwd tions/setup/js/n-m r: $owner, name: $name) { hasDiscussionsEnabled } } b93f97b9776bf1cegit --stdout k/gh-aw/gh-aw/no/home/REDACTED/work/gh-aw/gh-aw bx28FCiW591sCjZCshow (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw --jq .default_branch commit.gpgsign false ed.lock.yml (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v0.1.2
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv -1298035064/base.md -1298035064/new.md /usr/bin/git -json GO111MODULE 64/bin/go /usr/bin/git remo�� -v go /usr/bin/git 1072117518/.githgit GO111MODULE .test git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git 62/001/test-frongit at.go 64/pkg/tool/linu--show-toplevel git rev-�� tags/v6 64/pkg/tool/linux_amd64/compile sv _.a GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE 8d519d9/node_mod--show-toplevel git (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv /tmp/TestGuardPolicyMinIntegrityOnlymin-integrittest-logs/run-2 rev-parse /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -mod=readonly -f 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu-trimpath -ato�� -bool (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv --pack_header=2,3 (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv for-each-ref (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv e: ${{ secrets.TOKEN }} remote /opt/hostedtoolcache/node/24.14.1/x64/bin/node -json GOCACHE 64/bin/go node /tmp�� /tmp/TestHashConsistency_GoAndJavaScript925850407/001/test-frontmatter-with-env-template-expressgit l /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -m initial commit /usr/bin/git ted-objects.md GO111MODULE 64/bin/go git -C /tmp/gh-aw-test-runs/20260427-140750-54302/test-2094059719/.github/workflows remote /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv --pack_header=2,3 -q git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git 3715532645/001' 3715532645/001' 64/bin/go git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs
    • Triggering command: /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 GOMOD GOMODCACHE x_amd64/link env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 7z/4P7r8Nx30lqcgInitial commit (http block)
    • Triggering command: /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 GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /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 GOMOD GOMODCACHE go env ty-test.md GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name l_test.go 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env g_.a GO111MODULE x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 135012618 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name 4ACQ/f02Eva1ttQPQuPWq4ACQ 064814/b161=> **/*.json th2 ../../../.pretti--show-toplevel /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuTest User -p /v1.2.3 -trimpath Name,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle l /tmp/go-build279rev-parse -I /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuTest commit (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu^remote\..*\.gh-resolved$ env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env 426792998 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name hxms/bWOB0OjYPOs06SIChxms ache/node/24.14.1/x64/bin/node GOSUMDB nal/fips140tls 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuremote.origin.url t-30�� 0750-54302/test-462611885 bdZx/dTcSRunIDvppKmvAbdZx es.lock.yml --write ../../../**/*.jsrev-parse 64/bin/go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name GO111MODULE x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link env -json GO111MODULE x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuTest User env 426792998 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name t2Bi/LbyKJAzlPTfrrG8ct2Bi (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/link env stants.test GO111MODULE ortcfg.link GOINSECURE GOMOD GOMODCACHE GWkazqzAVAIxY_VLremote.origin.url (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name Kv-X/SrddFjc3EqPBzwz7Kv-X 1/x64/bin/node .prettierignore contextprotocol/rev-parse 64/bin/go 1/x64/bin/node -o runs/20260427-140750-54302/test-add-source-path-289548164/.githu--detach -trimpath ache/node/24.14.1/x64/bin/node -p internal/trace/trev-parse -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env 3877922160/.github/workflows GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env 7/001/test-frontmatter-with-env-template-expressions.md GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name 3NxN/fOrMapTM_SttVIFB3NxN 1/x64/bin/node --ignore-path contextprotocol/rev-parse 64/bin/go 1/x64/bin/node t-95�� sistency_GoAndJavaScript2077933762/001/test-inlined-imports-enabled-with-body-content.md -trimpath /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -I /tmp/go-build279rev-parse -I /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linu-1 (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuTest User env 3877922160/.github/workflows GO111MODULE k GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env g_.a GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name --check 064814/b002=> --ignore-path b/gh-aw/pkg/parsrev-parse 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuremote.origin.url 0648�� /v2.0.0 pkg/mod/golang.org/x/sys@v0.43.0/cpu/byteorder.go sv -p sync/atomic -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linutest@example.com env 3877922160/.github/workflows GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name GOPROXY 1/x64/bin/node ettierignore GOWORK 64/bin/go 1/x64/bin/node t-80�� sistency_GoAndJavaScript2077933762/001/test-inlined-imports-enabled-with-env-template-expressiongit pkg/mod/github.com/segmentio/encoding@v0.5.4/iso8601/parse.go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -p unicode -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/xtest@example.com (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path k/gh-aw/gh-aw/pkGOINSECURE k/gh-aw/gh-aw/pkGOMOD 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcGOPROXY -o /tmp/go-build422GOSUMDB -trimpath 64/bin/go -p main -lang=go1.25 go (http block)
    • Triggering command: /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 GOMOD GOMODCACHE BFU4hJRv0Iid env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /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 GOMOD GOMODCACHE go estl�� -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build3388982935/b404/cli.test /tmp/go-build3388982935/b404/cli.test -test.testlogfile=/tmp/go-build3388982935/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE sh -c npx prettier --cGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go node (http block)
    • Triggering command: /tmp/go-build2114347856/b404/cli.test /tmp/go-build2114347856/b404/cli.test -test.testlogfile=/tmp/go-build2114347856/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true -nolocalimports -importcfg /tmp/go-build279064814/b183/importcfg -pack env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /tmp/go-build2209138474/b404/cli.test /tmp/go-build2209138474/b404/cli.test -test.testlogfile=/tmp/go-build2209138474/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git ApprovalLabelsCogit GO111MODULE ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile /usr/bin/git 0527-34082/test-ls GO111MODULE es.lock.yml git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv tags/v6 ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile sv 064814/b088/_pkggit g/gitutil/gitutirev-parse ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel ache/go/1.25.8/x64/pkg/tool/linuorigin /usr/bin/git 3616549678 r73k/ZR15bOYtzO_-lh 064814/b214=> git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git -json GO111MODULE tnet/tools/sh git rev-�� --show-toplevel go /usr/bin/git ExpressionCompills GO111MODULE /opt/hostedtoolc/tmp/gh-aw/aw-feature-branch.patch git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE not-exist-xyzzy.txt GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env ay_c3954061324/001 GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv ty-test.md GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env on' --ignore-pat-errorsas GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE odules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin/sh GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv template-expressions.md GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv iant-3101039198/.github/workflows GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env Gitmaster_branch3510150187/001' Gitmaster_branch3510150187/001' 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE SLlQ1ZG/V_z3kiodconfig env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 46MaExS/rs4ruDNpeWLgO0QAw_ap env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env ty-test.md GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE jJ7Y5s9/ln9ZRXF3IfJtDcZqMmrF 7206�� -json GO111MODULE a948583eaaa45d2e249cd8aed55c9787-d GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE k GOINSECURE GOMOD GOMODCACHE go sRem�� -json GO111MODULE .cfg GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv ty-test.md GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env rity2021213452/0remote.origin.url GO111MODULE 64/pkg/tool/linux_amd64/cgo GOINSECURE GOMOD (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go ode_�� repo1119499163/001 GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env g_.a GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE er GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion -p github.com/githurev-parse -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linustatus -o /v1.0.0 -trimpath sv -p github.com/segmeconfig -lang=go1.23 /opt/hostedtoolc^remote\..*\.gh-resolved$ (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD run-script/lib/n--show-toplevel node /hom�� licyMinIntegrityOnlyrepos_only_without_min-integrity1904683306/001 **/*.cjs ache/node/24.14.1/x64/bin/node **/*.json --ignore-path ../../../.pretti--paginate /opt/hostedtoolcrepos/{owner}/{repo}/actions/runs/2/artifacts (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go --ignore-path ../../../.pretti--norc 64/bin/go /opt/hostedtoolcGOPROXY -o /tmp/go-build422GOSUMDB -trimpath 64/bin/go -p github.com/githurev-parse -lang=go1.25 go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go **/*.json --ignore-path ../../../.pretti--noprofile /opt/hostedtoolcGOPROXY -o /tmp/go-build422GOSUMDB -trimpath 64/bin/go -p github.com/githu-C -lang=go1.25 go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE .cfg GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name che/go-build/98/GOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcGOPROXY -o /tmp/go-build422GOSUMDB -trimpath 64/bin/go -p github.com/githu-test.testlogfile=/tmp/go-build3388982935/b427/testlog.txt -lang=go1.25 go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name led-with-env-template-expressions-in-body.md GO111MODULE /sh GOINSECURE GOMOD GOMODCACHE go env h ../../../.prettierignore GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch 7/001/test-frontmatter-with-env-template-expressions.md GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch /tmp/gh-aw-test-runs/20260427-140750-54302/test-3630788344/.github/workflows config /usr/bin/git remote.origin.urgit GO111MODULE x_amd64/compile git conf�� user.name Test User /usr/bin/git -json GO111MODULE x_amd64/compile git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
  • invalid.example.invalid
    • Triggering command: /usr/lib/git-core/git-remote-https /usr/lib/git-core/git-remote-https origin https://invalid.example.invalid/nonexistent-repo.git git comm�� ental-WDbSjm Auth cleanup new commit es/.bin/git -m Initial commit tions/setup/node-u git rev-�� --count origin/auth-cleanup-success..auth-cleanup-success es/.bin/git -u origin it git (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

…orm migration

- Fix scaffoldedSerenaSharedWorkflow to declare import-schema and pass
  languages through to the upstream import via
  ${{ github.aw.import-inputs.languages }}, resolving the compile error
  "required 'with' input 'languages' is missing" that affected
  storybookjs/storybook and microsoft/FluidFramework

- Handle tools: [serena] list form (without languages) by migrating to
  imports: with a languages: [] placeholder and TODO comment

- Add isSerenaInToolsList, removeSerenaFromToolsList, and
  removeSerenaFromInlineList helpers

- Update addSerenaImport to emit a placeholder when no languages found

- Add tests for list form (block, inline, mixed) and scaffolded file
  import-schema/languages pass-through validation

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/747ca51d-f6e7-40f8-9bb8-504e0558767a

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix missing languages param in serena migration codemod fix(serena-codemod): fix broken scaffolded serena.md and handle tools list form Apr 27, 2026
Copilot AI requested a review from pelikhan April 27, 2026 14:14
@pelikhan pelikhan marked this pull request as ready for review April 27, 2026 14:25
Copilot AI review requested due to automatic review settings April 27, 2026 14:25
@pelikhan pelikhan merged commit af539f4 into main Apr 27, 2026
17 checks passed
@pelikhan pelikhan deleted the copilot/fix-serena-migration-broken-workflows branch April 27, 2026 14:25
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Fixes Serena scaffold/migration regressions in gh aw fix --write by ensuring scaffolded shared/mcp/serena.md compiles (required languages schema + pass-through) and by migrating tools: [serena] list-form configurations into imports.

Changes:

  • Update the scaffolded shared/mcp/serena.md template to declare import-schema.languages and forward github.aw.import-inputs.languages to the upstream import.
  • Extend the Serena codemod to detect tools list-form entries containing serena, remove them, and emit an imports entry with an empty languages: [] placeholder + TODO.
  • Add/expand tests covering the new scaffolded schema/pass-through and list-form migration scenarios.
Show a summary per file
File Description
pkg/cli/fix_command.go Fixes scaffolded Serena shared workflow content to include import-schema and forward languages.
pkg/cli/fix_command_test.go Strengthens scaffolding test coverage for import-schema and languages forwarding.
pkg/cli/codemod_serena_import.go Adds list-form tools detection/removal and emits placeholder languages when unspecified.
pkg/cli/codemod_serena_import_test.go Adds subtests for block/inline list-form tools migration and no-op cases.

Copilot's findings

Tip

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

  • Files reviewed: 4/4 changed files
  • Comments generated: 3

Comment on lines +164 to +207
// Detect the "tools:" top-level key.
if isTopLevelKey(line) && strings.HasPrefix(trimmed, "tools:") {
valuePart := strings.TrimSpace(trimmed[len("tools:"):])

// Inline list form: tools: [serena] or tools: [serena, other]
if strings.HasPrefix(valuePart, "[") {
newValue, changed := removeSerenaFromInlineList(valuePart)
if changed {
modified = true
if newValue == "[]" {
// Empty inline list — skip the line; removeBlockIfEmpty will
// drop the tools: block because no child lines follow.
continue
}
result = append(result, "tools: "+newValue)
} else {
result = append(result, line)
}
continue
}

// Block form: tools:\n - serena
inToolsBlock = true
toolsIndent = getIndentation(line)
result = append(result, line)
continue
}

// Track block exit.
if inToolsBlock && len(trimmed) > 0 && !strings.HasPrefix(trimmed, "#") {
if hasExitedBlock(line, toolsIndent) {
inToolsBlock = false
}
}

// Remove "- serena" list items (with or without quotes).
if inToolsBlock {
bare := strings.TrimPrefix(trimmed, "- ")
bare = strings.Trim(bare, "\"'")
if strings.EqualFold(bare, "serena") {
modified = true
continue
}
}
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

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

removeSerenaFromToolsList / removeSerenaFromInlineList won’t migrate valid YAML when list items or the inline list have trailing comments. Examples that currently won’t be modified: tools: [serena] # comment (fails the HasSuffix(value, "]") check) and - serena # comment (the item compare includes the comment text). This can cause tools: [serena] repos to still be silently skipped.

Consider stripping a trailing YAML comment (e.g., split on # when it’s not inside quotes) before parsing the inline list, and when matching block list items, compare only the scalar value before any comment.

Copilot uses AI. Check for mistakes.
// No languages were specified in the original workflow. Emit a placeholder so
// the user knows what to fill in. The empty array is valid per the import-schema
// (the field is present); Serena simply won't analyse any language until updated.
langLine = ` languages: [] # TODO: specify languages, e.g. ["TypeScript", "JavaScript"]`
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

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

The generated placeholder comment suggests languages values like "TypeScript"/"JavaScript", but existing docs/examples in this repo use lowercase identifiers (e.g. .github/workflows/shared/mcp/serena.md shows languages: ["go", "typescript"]). If the values are case-sensitive (or users copy/paste), this could lead to confusion.

Recommend updating the TODO example to use the same lowercase identifiers used elsewhere (e.g. "typescript", "javascript").

Suggested change
langLine = ` languages: [] # TODO: specify languages, e.g. ["TypeScript", "JavaScript"]`
langLine = ` languages: [] # TODO: specify languages, e.g. ["typescript", "javascript"]`

Copilot uses AI. Check for mistakes.
Comment on lines +963 to +968
if !strings.Contains(scaffolded, "import-schema:") {
t.Errorf("Expected scaffolded Serena workflow to declare import-schema, got:\n%s", scaffolded)
}
if !strings.Contains(scaffolded, "languages:") {
t.Errorf("Expected scaffolded Serena workflow to declare 'languages' in import-schema, got:\n%s", scaffolded)
}
Copy link

Copilot AI Apr 27, 2026

Choose a reason for hiding this comment

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

These assertions don’t strictly verify that languages is declared under import-schema; strings.Contains(scaffolded, "languages:") could be satisfied solely by the with: languages: pass-through. To make the test resilient against regressions (e.g., import-schema: present but missing languages), consider matching a more specific substring like "import-schema:\n languages:" (or parse the frontmatter and assert the schema structure).

Suggested change
if !strings.Contains(scaffolded, "import-schema:") {
t.Errorf("Expected scaffolded Serena workflow to declare import-schema, got:\n%s", scaffolded)
}
if !strings.Contains(scaffolded, "languages:") {
t.Errorf("Expected scaffolded Serena workflow to declare 'languages' in import-schema, got:\n%s", scaffolded)
}
if !strings.Contains(scaffolded, "import-schema:\n languages:") {
t.Errorf("Expected scaffolded Serena workflow to declare 'languages' under import-schema, got:\n%s", scaffolded)
}

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

Test Quality Score: 100/100

Excellent test quality

Metric Value
New/modified tests analyzed 5
✅ Design tests (behavioral contracts) 5 (100%)
⚠️ Implementation tests (low value) 0 (0%)
Tests with error/edge cases 5 (100%)
Duplicate test clusters 0
Test inflation detected No
🚨 Coding-guideline violations None

Test Classification Details

View All Test Classifications
Test File Classification Issues Detected
TestSerenaToSharedImportCodemod / migrates tools list form (tools: [serena]) with empty languages placeholder pkg/cli/codemod_serena_import_test.go ✅ Design None
TestSerenaToSharedImportCodemod / migrates tools inline list form (tools: [serena]) with empty languages placeholder pkg/cli/codemod_serena_import_test.go ✅ Design None
TestSerenaToSharedImportCodemod / migrates tools list form with other tools preserved pkg/cli/codemod_serena_import_test.go ✅ Design None
TestSerenaToSharedImportCodemod / does not modify workflows with tools list that does not contain serena pkg/cli/codemod_serena_import_test.go ✅ Design None
TestFixCommand_ScaffoldsSerenaSharedWorkflow pkg/cli/fix_command_test.go ✅ Design None

Language Support

Tests analyzed:

  • 🐹 Go (*_test.go): 5 tests — all unit (//go:build !integration) ✅
  • 🟨 JavaScript (*.test.cjs, *.test.js): 0 tests

Verdict

Check passed. 0% of new tests are implementation tests (threshold: 30%).

All new tests verify observable behavioral contracts:

  • The four new subtests in TestSerenaToSharedImportCodemod cover the newly introduced tools: [serena] list-form migration path — including both block and inline YAML formats, with and without other tools present, and the negative (no-op) case. Each test asserts on the final output content and the parsed frontmatter state, providing genuine regression coverage.
  • TestFixCommand_ScaffoldsSerenaSharedWorkflow is an end-to-end test that verifies the scaffolded serena.md file is created at the correct path and contains the required structural elements (import-schema, languages, github.aw.import-inputs.languages). This directly guards against the regression the PR fixes.

Both build tags are present and correct. No mocks used. Assertion messages are descriptive throughout.

📖 Understanding Test Classifications

Design Tests (High Value) verify what the system does:

  • Assert on observable outputs, return values, or state changes
  • Cover error paths and boundary conditions
  • Would catch a behavioral regression if deleted
  • Remain valid even after internal refactoring

Implementation Tests (Low Value) verify how the system does it:

  • Assert on internal function calls (mocking internals)
  • Only test the happy path with typical inputs
  • Break during legitimate refactoring even when behavior is correct
  • Give false assurance: they pass even when the system is wrong

Goal: Shift toward tests that describe the system's behavioral contract — the promises it makes to its users and collaborators.

References: §25000786271

🧪 Test quality analysis by Test Quality Sentinel · ● 733.8K ·

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

✅ Test Quality Sentinel: 100/100. Test quality is excellent — 0% of new tests are implementation tests (threshold: 30%). All 5 new tests verify behavioral contracts with proper error/edge case coverage, correct build tags, and descriptive assertion messages.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[aw-compat] Missing codemod: serena migration leaves workflows broken (missing required languages param)

3 participants