Skip to content

feat: auto-generate side-repo maintenance workflow for SideRepoOps pattern#26382

Draft
Copilot wants to merge 5 commits intomainfrom
copilot/support-auto-generate-agentics-yml
Draft

feat: auto-generate side-repo maintenance workflow for SideRepoOps pattern#26382
Copilot wants to merge 5 commits intomainfrom
copilot/support-auto-generate-agentics-yml

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 15, 2026

In a SideRepoOps setup, agentics-maintenance.yml is only generated for the hosting repo. The target repo's maintenance workflow (safe-outputs replay, label creation, expired-entity cleanup) had to be hand-rolled and manually synced on every gh aw upgrade cycle.

Changes

Go — workflow generation (pkg/workflow/maintenance_workflow.go)

  • collectSideRepoTargets() — scans compiled WorkflowData for checkout configs with current: true and a static (non-expression) repository field; deduplicates by slug
  • sanitizeRepoForFilename() — converts owner/repoowner-repo for use in file names
  • generateSideRepoMaintenanceWorkflow() — emits agentics-maintenance-<slug>.yml with:
    • workflow_call + workflow_dispatch triggers
    • apply_safe_outputs job: uses custom token from the checkout config + GH_AW_TARGET_REPO_SLUG
    • create_labels job: creates labels in the target repo
    • validate_workflows job: same as hosting-repo variant
    • close-expired-entities job: included only when any workflow uses expires
  • GenerateMaintenanceWorkflow() modified to invoke side-repo generation even when no expires is set (so create_labels/apply_safe_outputs are always available)

When no custom token is in the checkout config, the generated workflow falls back to ${{ secrets.GH_AW_GITHUB_TOKEN }}.

Example: a workflow with

checkout:
  repository: my-org/target-repo
  current: true
  github-token: ${{ secrets.GH_AW_TARGET_TOKEN }}

will produce .github/workflows/agentics-maintenance-my-org-target-repo.yml pre-wired with the custom token and GH_AW_TARGET_REPO_SLUG: "my-org/target-repo" on every cross-repo job. Expression-based repositories (e.g. ${{ inputs.target_repo }}) are skipped since no static filename can be derived.

JavaScript — cross-repo support (actions/setup/js/)

close_expired_discussions.cjs, close_expired_issues.cjs, close_expired_pull_requests.cjs, and create_labels.cjs now resolve owner/repo from GH_AW_TARGET_REPO_SLUG (validated with /^[^/]+\/[^/]+$/) instead of always using context.repo, enabling the generated workflow to operate against the target repository.

Tests

TestCollectSideRepoTargets, TestSanitizeRepoForFilename, TestGenerateSideRepoMaintenanceWorkflow added to maintenance_workflow_test.go.

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 /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 b/gh-aw/pkg/gituenv GOMODCACHE go env R58b/stUDlUeRH56GOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 896201/b402/impoGO111MODULE (http block)
    • Triggering command: /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 GOMOD GOMODCACHE go env Eiqy/hCSsneVk4gyGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 896201/b403/impoGO111MODULE (http block)
    • Triggering command: /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 b/gh-aw/pkg/repoenv GOMODCACHE go env vxy_/_JYY_vYdU1VGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 896201/b410/impoGO111MODULE (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 -json GO111MODULE stency-checker.lock.yml GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } GOINSECURE GOMOD GOMODCACHE cFX4v-N/xOQcbF1b-test.v=true (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 --show-toplevel x_amd64/vet /opt/hostedtoolcache/node/24.14.1/x64/bin/node ithub/workflows config 86_64/bash /opt/hostedtoolcache/node/24.14.1/x64/bin/node /tmp�� 64/bin/go SqAYBLY/t9jI7Mg6xLHowPgLv8_t /usr/bin/git k/gh-aw/gh-aw/.ggit show /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel 64/pkg/tool/linurev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha run lint:cjs /home/REDACTED/work/_temp/uv-python-dir/sh --show-toplevel git /usr/bin/git sh -c &#34;prettier&#34; --check &#39;scripts/**/*.js&#39; --ignore-path .prettierignore git /usr/bin/git expired_discussigit git /usr/bin/git 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 /tmp/TestGuardPolicyMinIntegrityOnlymin-integrity_with_repos=public_2923251746/001 remote /usr/bin/git -json GO111MODULE me: String!) { --show-toplevel git -C /home/REDACTED/work/gh-aw/gh-aw/.github/workflows rev-parse /usr/bin/git ithub/workflows GO111MODULE /opt/hostedtoolc--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel 64/pkg/tool/linurev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel x_amd64/compile /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha caec65919fa1a8ac57948e50:actions/setup/js/create_labels.cjs git h --show-toplevel gh (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 k/gh-aw/gh-aw/.github/workflows rev-parse nfig/composer/vendor/bin/bash -json GO111MODULE 64/bin/go infocmp -1 4641/001/stability-test.md go k/_temp/uv-python-dir/bash -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel 64/pkg/tool/linux_amd64/link /usr/bin/git kflow.test rev-parse 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/link /usr/bin/git 39/001/test-emptgit config ortcfg.link git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel bash /usr/bin/git --noprofile go (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 --show-toplevel git /usr/bin/git k/gh-aw/gh-aw/.ggrep rev-parse ache/node/24.14./tmp/gh-aw/aw-master.patch git rev-�� --show-toplevel git /usr/bin/git 4126-33865/test-git config nfig/composer/ve--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha --show-toplevel git /usr/bin/git etup-node/git/regrep git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha --show-toplevel git /usr/bin/git re --log-level=egrep git 1/x64/bin/node git rev-�� --show-toplevel git /usr/bin/git h ../../../.pretgit git 1/x64/bin/node git (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 ithub/workflows GO111MODULE r: $owner, name: $name) { hasDiscussionsEnabled } } GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE t-solving-potd.lock.yml GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq .object.sha ithub/workflows GO111MODULE ateSideRepoMaint-nilfunc GOINSECURE GOMOD GOMODCACHE go env (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq .object.sha ithub/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.8/x64/bin/go GOINSECURE GOMOD ed } } go env -json GO111MODULE m-evolution-insights.lock.yml GOINSECURE GOMOD GOMODCACHE go (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 --get remote.origin.url /usr/bin/git ithub/workflows GO111MODULE x_amd64/vet git rev-�� --git-dir x_amd64/vet /opt/hostedtoolcache/node/24.14.1/x64/bin/node k/gh-aw/gh-aw/.ggit GOPROXY t-tools.lock.yml--show-toplevel /opt/hostedtoolcache/node/24.14.1/x64/bin/node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel bash /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha npx prettier --write &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.pr**/*.json git /home/REDACTED/work/_temp/ghcca-node/node/bin/sh --show-toplevel git /usr/bin/git sh -c &#34;prettier&#34; --write &#39;scripts/**/*.js&#39; --ignore-path .prettierignore --log-level=e**/*.ts git /snap/bin/sh tierignore git /usr/bin/git sh (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 add origin /usr/bin/git 985133/001 GO111MODULE x_amd64/vet git conf�� user.name Test User /opt/hostedtoolcache/node/24.14.1/x64/bin/node ithub/workflows show x_amd64/compile node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha --show-toplevel git /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel bash /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha npx prettier --write &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.pr**/*.json git /opt/hostedtoolcache/go/1.25.8/x64/bin/sh --show-toplevel git /usr/bin/git sh -c &#34;prettier&#34; --write &#39;scripts/**/*.js&#39; --ignore-path .prettierignore --log-level=e**/*.json git /opt/hostedtoolcache/node/24.14.1/x64/bin/sh --show-toplevel git /usr/bin/git sh (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 sistency_GoAndJavaScript3773659439/001/test-simple-frontmatter.md -buildtags /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/link -errorsas -ifaceassert -nilfunc /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linurepos/{owner}/{repo}/actions/runs/12346/artifacts -o /tmp/go-build3075018198/b429/semverutil.test -importcfg /usr/bin/git -s -w -buildmode=exe git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha /usr/bin/gh /usr/bin/git /usr/bin/git -v gh /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git )&#34; git /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha */*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.prettierignore git ache/CodeQL/2.25.1/x64/codeql/codeql --show-toplevel git /usr/bin/git ache/CodeQL/2.25.1/x64/codeql/codeql js/f�� &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.pr**/*.json git ules/.bin/node --show-toplevel s patterns from rev-parse /usr/bin/git node (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v7 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE sh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v7 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE b/gh-aw/pkg/typeenv GOMODCACHE /systemd-executoGO111MODULE env H8pU/eNnoa-rIndzGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 896201/b424/impoGO111MODULE (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v7 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE go env 6u6k/q6cTrFEFnfiGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 896201/b409/impoGO111MODULE (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 sions/ race 64/bin/go GOSUMDB GOWORK 64/bin/go sh -c &#34;prettier&#34; --cheGOINSECURE sh 64/bin/go &#34;prettier&#34; --wriinfocmp git 64/bin/go go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha run lint:cjs 64/bin/go GOSUMDB GOWORK 64/bin/go sh -c &#34;prettier&#34; --cheGOSUMDB node 64/bin/go --write scripts/**/*.js 64/bin/go go (http block)
  • https://api.github.com/repos/docker/build-push-action/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v7 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (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 --get remote.origin.url /usr/bin/git git/ref/tags/v7 GO111MODULE x_amd64/link git rev-�� --git-dir x_amd64/link 5018198/b451/vet.cfg k/gh-aw/gh-aw/.ggit GOPROXY me: String!) { --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 0863314/b001/workflow.test git 0863314/b001/importcfg.link --show-toplevel git /usr/bin/git -2pyEL-JnrTv-/RQ9osJ_48C76CnrlHb0I/JaHr3MAXFSG0XcFX4v-N/z7Cc21t-2pyEL-JnrTv- rev-�� ry=1 git 0863314/b001/_pkg_.a --show-toplevel gcc /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq .object.sha 3010018/b001/workflow.test git 3010018/b001/importcfg.link ster.patch git /usr/bin/git b_A_ST-sut4C5/PCGHL5E_9z9D97VsZki4/JaHr3MAXFSG0XcFX4v-N/xOQcbF1b_A_ST-sut4C5 -c ry=1 git che/go-build/8b/8b09678a8be98108c4bd5a8e02545068aa1003e32beb476a80ca071b6677d988-d --show-toplevel git /usr/bin/git sh (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 --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 ithub/workflows GO111MODULE yml git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha 74cdd8dc0594575f54a757b5aa80e08d971e084b..HEAD --stdout /usr/bin/git xterm-color git /usr/bin/git git rev-�� --show-toplevel git 1/x64/bin/bash --show-toplevel git /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq .object.sha --show-toplevel git nfig/composer/vendor/bin/git --show-toplevel git /usr/bin/git node 1/x6�� caec65919fa1a8ac57948e50:actions/setup/js/close_expired_discussions.cjs git 64/bin/bash --show-toplevel git /usr/bin/git node (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 sistency_GoAndJavaScript3773659439/001/test-complex-frontmatter--p go /usr/bin/git -json GO111MODULE repository(owne--show-toplevel git rev-�� --show-toplevel go /usr/bin/git sions.md GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha low.test infocmp /usr/bin/git xterm-color low.test /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel /usr/bin/gh /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.2.3 --jq .object.sha --show-toplevel git ode --show-toplevel git /usr/bin/git node 1/x6�� caec65919fa1a8ac57948e50:actions/setup/js/close_expired_discussions.cjs git ptables --show-toplevel git /usr/bin/git node (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 show /usr/bin/infocmp l GOPROXY DiscussionsEnabl--show-toplevel infocmp -1 k/gh-aw/gh-aw node kflows/smoke-agent-public-approv-nilfunc --check scripts/**/*.js 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 node 64/pkg/tool/linux_amd64/vet prettier --check 64/bin/go 64/pkg/tool/linuTest User -C k/gh-aw/gh-aw/.github/workflows show eutil.test -mod=readonly -e DiscussionsEnabl--show-toplevel eutil.test (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 --jq 64/pkg/tool/linux_amd64/compile run lint:cjs 64/bin/go 64/pkg/tool/linux_amd64/compile -1 k/gh-aw/gh-aw/.github/workflows sh x_amd64/link &#34;prettier&#34; --chegit node 64/bin/go x_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 rev-parse /usr/bin/git npx prettier --cgit GOPROXY 64/bin/go git -C /home/REDACTED/work/gh-aw/gh-aw/.github/workflows config er: String!, $name: String!) { repository(owne-nilfunc remote.origin.urgit node 64/bin/go git (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 node 64/bin/go run lint:cjs DiscussionsEnabl--show-toplevel sp/45mdmEzBnpu2SUpQRbjo/-LfbKy3Tremote.origin.url api k/gh-aw/gh-aw --jq .test &#34;prettier&#34; --chegit node 64/bin/go .test (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 sh 86_64/bash npx prettier --cgit GOPROXY DiscussionsEnabl--show-toplevel git -C /home/REDACTED/work/gh-aw/gh-aw/.github/workflows erena-mcp-server:latest x_amd64/compile &#34;prettier&#34; --chenode node 64/bin/go x_amd64/compile (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 -f ndor/bin/bash -f owner=github -f git -C 800529853 rev-parse 64/pkg/tool/linux_amd64/link l scripts/**/*.js $name) { has--git-dir 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 rev-parse x_amd64/link l --check 64/bin/go x_amd64/link 1617�� k/gh-aw/gh-aw/.github/workflows semgrep/semgrep:latest util.test l sh 64/bin/go 1J/3Zdjkxnpf5KPhoVO7lNp/EQjAeMABXflGaA3b5RhS (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 sh er: String!, $name: String!) { repository(owner: $owner, name:-f npx prettier --cgit GOPROXY ed } } git -C 800529853 config 64/pkg/tool/linux_amd64/vet remote.origin.urgit scripts/**/*.js 64/bin/go 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 -f 64/pkg/tool/linux_amd64/link -f owner=github -f 64/pkg/tool/linux_amd64/link -C 1749057697 config k remote.origin.urnode -f 64/bin/go GHL5E_9z9D97VsZki4/JaHr3MAXFSG0X-dwarf=false (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 rev-parse /usr/bin/git npx prettier --cgit GOPROXY 64/bin/go git -C k/gh-aw/gh-aw/.github/workflows show /usr/bin/git --check scripts/**/*.js 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 ghcr.io/github/serena-mcp-server:latest 64/pkg/tool/linux_amd64/vet prettier --check DiscussionsEnabl--git-dir 64/pkg/tool/linux_amd64/vet -C 1749057697/.github/workflows rev-parse /usr/bin/git -e -f 64/bin/go git (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 config /usr/bin/gh remote.origin.urgit GOPROXY 64/bin/go /usr/bin/gh api k/gh-aw/gh-aw/.github/workflows -f /usr/bin/git l owner=github -f git (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 config n-dir/bash remote.origin.urgit --check 64/bin/go ylQP4Z8/vCNYLdc7D8RXanEmFBss -C k/gh-aw/gh-aw rev-parse fg log.showsignaturgit log 64/bin/go git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path -c=4 -nolocalimports -importcfg /tmp/go-build3075018198/b411/importcfg -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/fileutil/fileutil.go /home/REDACTED/work/gh-aw/gh-aw/pkg/fileutil/tar.go env ithub/workflows GO111MODULE /opt/hostedtoolc-lang=go1.25 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 100 GOMOD GOMODCACHE go env ithub/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.8/x-f 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 GO111MODULE 64/bin/go git -C 62244308/001 show 64/pkg/tool/linux_amd64/compile --check **/*.cjs 64/bin/go 64/pkg/tool/linux_amd64/compile (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 --local --get it (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq .object.sha -json GO111MODULE 64/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/github/gh-aw/git/ref/tags/v0.47.4 --jq .object.sha --show-toplevel 64/pkg/tool/linux_amd64/vet /usr/bin/git k/gh-aw/gh-aw/.ggit -f /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git k/gh-aw/gh-aw/.g/bin/sh config .cfg 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 edOutput1453742519/001 node 64/pkg/tool/linux_amd64/vet --check **/*.cjs $name) { has--show-toplevel 64/pkg/tool/linux_amd64/vet -C k/gh-aw/gh-aw show k -json GO111MODULE 64/bin/go docker (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha --show-toplevel 5018198/b435/stringutil.test /usr/bin/git t0 -tests (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha e_workflow_test.go /tmp/go-build1630863314/b001/workflow.test (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 ithub/workflows GO111MODULE (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 scripts synced -errorsas GO111MODULE ock.yml GOINSECURE GOMOD GOMODCACHE go env ithub/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.8/x64/bin/go l 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 e=false GO111MODULE rets-analysis.lo-lang=go1.25 GOINSECURE GOMOD GOMODCACHE go env it/ref/tags/v7 GO111MODULE (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha -json GO111MODULE /opt/hostedtoolc-test.short=true GOINSECURE GOMOD GOMODCACHE XflGaA3b5RhS env k/gh-aw/gh-aw/.github/workflows GO111MODULE x_amd64/vet l GOMOD GOMODCACHE x_amd64/vet (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 s &#34;-s -w -X main-s GO111MODULE /opt/hostedtoolc-buildmode=exe GOINSECURE GOMOD GOMODCACHE go env k/gh-aw/gh-aw/.github/workflows GO111MODULE ling.lock.yml GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/-
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/- --jq .object.sha ache/uv/0.11.6/xGOSUMDB node 64/bin/go prettier --write 64/bin/go go env -json GO111MODULE 64/bin/go 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 edOutput1453742519/001 config 64/pkg/tool/linux_amd64/vet remote.origin.urgit **/*.cjs 64/bin/go 64/pkg/tool/linux_amd64/vet -1 k/gh-aw/gh-aw/.github/workflows go x_amd64/compile l GO111MODULE 64/bin/go x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha --show-toplevel /usr/lib/git-cor--jq /usr/bin/git sistency_GoAndJagit -q ache/node/24.14.--show-toplevel git rev-�� --show-toplevel git /usr/bin/git sistency_Inlinedgit remote /usr/bin/git git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha e_workflow_test.go --quiet /usr/bin/git --show-toplevel git /usr/bin/git git rev-�� h ../../../.pret.prettierignore git 1/x64/bin/node --show-toplevel git /usr/bin/git git (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 che/go-build/51/git GOPROXY 64/bin/go 64/pkg/tool/linu/tmp/go-build3075018198/b449/_testmain.go -C g_.a rev-parse k /tmp/go-build134git -trimpath 64/bin/go infocmp (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 ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env ithub/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env ithub/workflows GO111MODULE (http block)
  • https://api.github.com/repos/owner/repo/contents/file.md
    • Triggering command: /tmp/go-build3075018198/b397/cli.test /tmp/go-build3075018198/b397/cli.test -test.testlogfile=/tmp/go-build3075018198/b397/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE go env ithub/workflows GO111MODULE ache/go/1.25.8/x64/bin/go 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 -json GO111MODULE 80ca071b6677d988-d GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x-buildtags (http block)

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

Copilot AI and others added 3 commits April 15, 2026 06:45
…attern

- Detect SideRepoOps patterns from checkout configs with current: true
- Generate agentics-maintenance-<slug>.yml for each static target repo
- Add GH_AW_TARGET_REPO_SLUG support to close_expired_* and create_labels scripts
- Include close-expired-entities, apply_safe_outputs, create_labels, validate jobs
- Use custom token from checkout config for target repo authentication
- Add unit tests for collectSideRepoTargets, sanitizeRepoForFilename, and workflow generation

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/dc073fff-9a15-4d12-93e4-a16cdc65fdc9

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
…n JS scripts

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/dc073fff-9a15-4d12-93e4-a16cdc65fdc9

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
… in JS scripts

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/dc073fff-9a15-4d12-93e4-a16cdc65fdc9

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
@github-actions github-actions bot mentioned this pull request Apr 15, 2026
…-independent test comparison

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/dc073fff-9a15-4d12-93e4-a16cdc65fdc9

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Add auto-generation of agentics-maintenance.yml for target repository feat: auto-generate side-repo maintenance workflow for SideRepoOps pattern Apr 15, 2026
Copilot AI requested a review from pelikhan April 15, 2026 07:03
@github-actions
Copy link
Copy Markdown
Contributor

🎉 Great work on this PR! The implementation of auto-generating side-repo maintenance workflows for the SideRepoOps pattern is well-structured and cohesive — covering the Go generation logic (collectSideRepoTargets, sanitizeRepoForFilename, generateSideRepoMaintenanceWorkflow), cross-repo JS support via GH_AW_TARGET_REPO_SLUG, and solid test coverage (284 lines). No new dependencies were introduced, and the PR description clearly explains the problem and all changes. This looks ready for maintainer review! 🚀

Generated by Contribution Check · ● 1.9M ·

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.

Support auto-generation of agentics-maintenance.yml for target repository in SideRepoOps pattern

2 participants