Skip to content

Consolidate diff --git header parsing across safe-output PR handlers#32578

Merged
pelikhan merged 8 commits into
mainfrom
copilot/refactor-git-patch-header-parsing
May 16, 2026
Merged

Consolidate diff --git header parsing across safe-output PR handlers#32578
pelikhan merged 8 commits into
mainfrom
copilot/refactor-git-patch-header-parsing

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 16, 2026

create_pull_request.cjs and manifest_file_helpers.cjs had separate implementations for parsing diff --git headers, which could diverge on quoted, escaped, rename, and malformed patch headers. This centralizes parsing so file-limit checks and protection checks operate on one shared interpretation model.

  • Shared patch header parser

    • Added actions/setup/js/patch_path_helpers.cjs with:
      • parseDiffGitHeader(headerLine){ oldPath, newPath, parseable }
      • extractDiffGitHeaderEntries(patchContent) for patch-wide header extraction
    • Handles unquoted and quoted git paths consistently, including malformed quoted tokens (parseable: false).
  • create_pull_request now consumes shared parsing

    • countUniquePatchFiles now iterates shared parsed entries instead of local regex/token parsing.
    • Preserves conservative file-limit behavior by counting each unparseable header as a unique synthetic entry.
    • Keeps the local parseDiffGitHeader export contract intact by adapting shared output to the prior single-path return shape.
  • manifest_file_helpers now consumes shared parsing

    • extractFilenamesFromPatch and extractPathsFromPatch rebuilt on shared parsed entries.
    • Continues to include both sides (a/ + b/) for rename/copy detection and ignores dev/null.
    • Skips malformed headers (no false-positive path extraction from unparsable lines).
  • Regression coverage for parser alignment

    • Added tests for:
      • quoted paths with spaces,
      • escaped backslashes,
      • malformed diff --git headers,
      • malformed quoted headers in file-count logic.
// shared parser output shape
const { oldPath, newPath, parseable } = parseDiffGitHeader(
  'diff --git "a/dir/with space/file.txt" "b/dir/with space/file.txt"'
);

// consumers choose policy explicitly:
// - PR file limit: prefer newPath, fallback oldPath, conservative unparseable counting
// - manifest/protected checks: consider both oldPath and newPath

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 x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login + "/" + .name 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuorigin (http block)
    • Triggering command: /usr/bin/gh gh pr list --repo github/gh-aw --state all --author app/github-actions --search created:2026-05-11T23:58:00Z..2026-05-12T00:05:00Z --limit 1 --json number --jq .[0].number GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-tests (http block)
  • https://api.github.com/orgs/owner/actions/secrets
    • Triggering command: /usr/bin/gh gh api /orgs/owner/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/owner/actions/secrets --jq .secrets[].name js/**/*.json' --**/*.ts /opt/hostedtoolc**/*.json /node 82/001 /tmp/go-build221-c ache/go/1.25.8/xlog.showsignature=false x_amd64/cgo /pre�� '**/*.ts' '**/*.--format=%H:%ct ache/go/1.25.8/x--jq (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/owner/actions/secrets --jq .secrets[].name ed-with-env-template-expressions-in-body.md sh sv runs/20260516-06git gh ache/node/24.14.--end-of-options sed /pre�� /usr/bin/gh 8911130/b461/imp--jq ndor/bin/git /var/run/docker.git gh ache/node/24.14./tmp/gh-aw-test-runs/20260516-062553-48396/test-source-field-variant-948267721/.github/workflows infocmp (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 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name submodules | head -n 10 main bject.type] | @tsv licyBlockedUsers/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/asm -buildtags /opt/hostedtoolcache/go/1.25.8/x"prettier" --write '**/*.cjs' '**/*.ts' '**/*.json' --ignore-path ../../../.prettierignore gh /pre�� '**/*.ts' '**/*.json' --ignore-path ../../../.pr--ignore-path --jq 1/x64/bin/node -bool l /usr/bin/infocmpxterm-color (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name /ref/tags/v9 --package-lock-only /node 2332-38603/test-/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/link gh es.lock.yml /usr/lib/git-core/git /pre�� json' --ignore-path ../../../.pr**/*.json --auto x86_64/git --detach e/git (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 13396849/001 -buildtags /usr/bin/git -errorsas -ifaceassert -nilfunc git -C /tmp/gh-aw-test-runs/20260516-062016-27966/test-source-field-variant-3572470756/.github/workflowgh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv mplied infocmp ache/node/24.14.1/x64/bin/node js/**/*.json' --gh set sv sh t-12�� k/gh-aw/gh-aw/.github/workflows/agent-performanc.github/workflows/test.md infocmp /usr/bin/git T:-}" =~ ^tcp://infocmp /opt/hostedtoolc-1 sv git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitcustom_branchremote.upstream.url '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitcustom_branch1341406502/001' /opt/pipx_bin/sh path_helpers.cjsgh sh sv sh -c runs/20260516-062553-48396/test-1125005513/.gith.github/workflows/test.md gh /usr/bin/git l --jq (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 2016-27966/test-3586789723/.github/workflows 0802593/b113/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOSUMDB GOWORK 64/bin/go ache/go/1.25.8/x64/pkg/tool/linutest@example.com -ato�� -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/linuorigin (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv heck '**/*.cjs' '**/*.ts' '**/*.json' --ignore-premote.upstream.url manifest_file_helpers.test.cjs es/.bin/node ./../.prettieriggh owner/test-repo (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv efaultBranchFromLsRemoteWithRealGitcustom_branch1341406502/001' efaultBranchFromLsRemoteWithRealGitcustom_branch1341406502/001' 1/x64/bin/node ./../.prettieriginfocmp test@example.com-1 sv sh t-ha�� ithub/workflows/approach-validator.md infocmp /home/REDACTED/go/bin/sh xterm-color gcc (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 se 0802593/b235/vet.cfg .cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xconfig (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv 0802593/b536/_pkg_.a test@example.com 0802593/b536=> -json GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.8/x--jq -V=f�� iEKB/UQP2ARhfQO4T-rPmiEKB go ache/node/24.14.1/x64/bin/node -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, .object.type] | @tsv /repos/actions/github-script/git/ref/tags/v9 --jq /usr/bin/git -json GO111MODULE x_amd64/vet git conf�� --get remote.origin.url /usr/bin/git -json GO111MODULE x_amd64/vet 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 ab-testing-advisor.md GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x--all -ato�� -bool -buildtags 64/pkg/tool/linuowner/repo -errorsas -ifaceassert -nilfunc 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv ace-editor.md 0802593/b070/_testmain.go verutil.test GOINSECURE GOMOD GOMODCACHE verutil.test 2108�� -unreachable=false /tmp/go-build2210802593/b095/vet.cfg 64/pkg/tool/linux_amd64/link GOSUMDB GOWORK 64/bin/go 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xtest-owner/test-repo-27966 -ato�� Onlymin-integrity_with_explicit_repo1448947640/001 -buildtags ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -errorsas -ifaceassert -nilfunc ache/go/1.25.8/x64/pkg/tool/linutest@example.com (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 ithub-script/git/ref/tags/v9 go bject.type] | @tsv -json GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.8/x--jq -o /tmp/go-build2210802593/b523/_pkg_.a l /usr/bin/git -p github.com/githuconfig -lang=go1.25 git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv k/gh-aw/gh-aw/.github/workflows/agent-persona-explorer.md -goversion /usr/bin/git -c=4 -nolocalimports -importcfg git -C runs/20260516-062016-27966/test-2442393053 config /usr/bin/infocmp remote.origin.urgh GO111MODULE x_amd64/vet infocmp (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv -instructions-test-209792975/.github/workflows -buildtags /usr/bin/git -errorsas -ifaceassert -nilfunc fi echo "$GH_AW_DOCKER_HOST_PAT--jq ls-r�� ithub-script/git/ref/tags/v9 origin bject.type] | @tsv w/js/**/*.json' git /opt/hostedtoolcconfig sv 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 -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/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv 2090104614/001' 2090104614/001' x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v9.0.0
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9.0.0 --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/actions/github-script/git/ref/tags/v9.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 hLXh/0ELBy97bxPkfrkiwhLXh /tmp/go-build2210802593/b276/vet.cfg /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet =receive GO111MODULE 64/bin/go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /ref/tags/v9 infocmp sv re --log-level=einfocmp 64/pkg/tool/linu-1 bject.type] | @txterm-color sh -c /v1.2.3 faultBranchFromLsRemoteWithRealGitbranch_with_hyphen685585558/002/work sv ignore-path ../.infocmp W7oqrfvZP7ItTMNT-1 sv node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv npx prettier --write '../../../**/*.json' '!../../../pkg/workflow/js/**/*.json' --ignore-path gh ache/node/24.14.1/x64/bin/node /ref/tags/v9 --jq sv sh t-22�� bility_SameInputSameOutput369028--workflow gh /home/REDACTED/work/gh-aw/node_mod--limit ignore-path ../.infocmp --jq sv node (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 -json GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x-test.v=true -uns�� -unreachable=fal-test.timeout=10m0s /tmp/go-build221-test.run=^Test 0802593/b357/vet-test.short=true GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuTest User (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /ref/tags/v9 /tmp/go-build2210802593/b273/vet.cfg sv -json set 64/bin/go 0802593/b492/importcfg -uns�� 13 k/gh-aw/gh-aw/pkg/jsonutil/json_test.go /usr/bin/gh l GO111MODULE 64/bin/go gh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv runs/20260516-062016-27966/test-3384479144 test@example.com ache/node/24.14.1/x64/bin/node -json GO111MODULE 64/bin/go /usr/lib/git-core/git t-42�� k/gh-aw/gh-aw/.github/workflows/ab-testing-advisor.md --auto ache/node/24.14.1/x64/bin/node --detach GO111MODULE 64/bin/go ache/node/24.14.1/x64/bin/node (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 ab-testing-advisor.md DefaultBranchFromLsRemoteWithRealGitcustom_branch1854564648/001' ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xowner/repo -uns�� Onlymin-integrity_only_defaults_repo2544665741/001 /tmp/go-build2210802593/b166/vet.cfg 0802593/b305/vet.cfg GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.8/xremote.origin.url (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv agent-performance-analyzer.md eutil_test.go 1/x64/bin/node GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xowner/test-repo t-ha�� vaScript2244603915/001/test-empty-frontmatter.md stmain.go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv sRemoteWithRealGitbranch_with_hyphen2543272059/001 sRemoteWithRealGitbranch_with_hyphen2543272059/002/work 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuowner/test-repo -ato�� g_.a -buildtags 0802593/b496/excessivefuncparams.test -errorsas -ifaceassert -nilfunc 0802593/b496/excessivefuncparams.test (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 -json GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xowner/test-repo (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv 2332-38603/test-source-field-variant-99790044 sh 1/x64/bin/node rkflow/js/**/*.jgh sh erignore bash t-ha�� SameOutput3960134979/001/stability-test.md -docker-host-patsecurity ache/go/1.25.8/x64/bin/go ./../.prettieriginfocmp config (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv vaScript582319889/001/test-empty-frontmatter.md git es/.bin/node rkflow/js/**/*.j/usr/bin/git remote.origin.urconfig erignore bash ache�� --noprofile git ache/go/1.25.8/x64/bin/go ./../.prettieriginfocmp hanges) /usr/bin/infocmpxterm-color erignore (http block)
  • https://api.github.com/repos/aws-actions/configure-aws-credentials/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/aws-actions/configure-aws-credentials/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv 0802593/b541/_pkg_.a show (http block)
    • Triggering command: /usr/bin/gh gh api /repos/aws-actions/configure-aws-credentials/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /tmp/go-build4201379135/b001/exe/a.out -importcfg /usr/lib/git-core/git-receive-pack -buildmode=exe -buildid=YRDp9rL/opt/hostedtoolcache/node/24.14.1/x64/bin/npm -extld=gcc git-receive-pack--package-lock-only /tmp�� GOMODCACHE RWaUg3ONXCNd /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/aws-actions/configure-aws-credentials/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv licyBlockedUsersExpressionCompiledOutput3449601685/001 -trimpath (http block)
  • https://api.github.com/repos/azure/login/git/ref/tags/v2
    • Triggering command: /usr/bin/gh gh api /repos/azure/login/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv xterm-color l /usr/bin/git sions.md GO111MODULE 64/bin/go git clon�� /tmp/TestParseDefaultBranchFromLsRemoteWithRealGitbranch_with_hyphen2543272059/001 l /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -json GO111MODULE 64/bin/go /opt/hostedtoolc--auto (http block)
    • Triggering command: /usr/bin/gh gh api /repos/azure/login/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv licyTrustedUsersCompiledOutput586238550/001 -trimpath /usr/bin/gh -p main -lang=go1.25 gh api runs/20260516-062332-38603/test-547928519 --jq flows/test-expires.lock.yml -c=4 -nolocalimports -importcfg node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/azure/login/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv licyBlockedUsersExpressionCompil-f -trimpath ache/node/24.14.1/x64/bin/node T:-}" =~ ^tcp://node main -lang=go1.25 ache/node/24.14.--package-lock-only 0514�� uts.enforce_all == 'true' && 'full-sweep (enforce_all)' remote /opt/hostedtoolcache/node/24.14.1/x64/bin/node -c=4 -nolocalimports -importcfg node (http block)
  • https://api.github.com/repos/docker/login-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv /repos/actions/github-script/git/ref/tags/v9 --jq /usr/lib/git-core/git-upload-pack -json GO111MODULE 64/bin/go git-upload-pack /tmp�� GOMODCACHE go /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv licyTrustedUsersCompiledOutput58-f -trimpath /opt/hostedtoolcache/node/24.14.-f url main -lang=go1.25 node /tmp�� runs/20260516-062332-38603/test-547928519/custom/workflows -goversion t l -nolocalimports -importcfg node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv licyBlockedUsersExpressionCompiledOutput2016730709/001 -trimpath /usr/bin/git :-}" =~ ^tcp:// node main -lang=go1.25 git -C /tmp/gh-aw-test-runs/20260516-062553-48396/test-add-source-path-2466637657/.github/workflows l repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } remote.upstream.git -nolocalimports -importcfg node (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 P0_F/FdLhWRsuUC8q6r9JP0_F /tmp/go-build2210802593/b252/vetnonexistent-workflow-test-12345 r: $owner, name: $name) { hasDiscussionsEnabled } } /tmp/go-build226infocmp -trimpath 64/bin/go /opt/hostedtoolcache/go/1.25.8/xremote.origin.url -has�� ithub/workflows/archie.md 0802593/b486/_testmain.go ache/go/1.25.8/x64/pkg/tool/linux_amd64/link l -ifaceassert -nilfunc ache/go/1.25.8/x--jq (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 2332-38603/test-id,name,path,state format:pkg-json /home/REDACTED/work/gh-aw/gh-aw/actions/setup/node_modules/.bin/sh tierignore ache/go/1.25.8/x-1 run-script/lib/nxterm-color sh -c npx prettier --check '**/*.cjs' '**/*.ts' '**/*.json' --ignore-premote.origin.url infocmp 696227/b515/vet.cfg js/**/*.json' --gh 2995989c0ef4d16eapi sv sh (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 format:pkg-json --silent /opt/hostedtoolcache/node/24.14.1/x64/bin/node tierignore --jq sv node /opt�� '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitmaster_branchremote.origin.url '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitmaster_branch2519569718/001' clusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle (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 0802593/b463/embedcfg GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linuremote.upstream.url (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 vaScript517986111/001/test-frontmatter-with-arrays.md git k/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/node --ignore-path ../usr/bin/git config bject.type] | @t--get-regexp gcc k/gh�� -x c ache/go/1.25.8/x64/pkg/tool/linux_amd64/cgo - x_amd64/compile erignore ache/go/1.25.8/x64/pkg/tool/linuupstream (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 te '../../../**/*.json' '!../../../pkg/workflow/js/**/*.json' --**/*.ts _config.go k/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/prettier s upstream sv /opt/hostedtoolc4 -l -w pkg/workflow/safe_outputs_import_test.go ache/go/1.25.8/x64/pkg/tool/linux_amd64/cgo pkg/workflow/safinfocmp erignore pkg/workflow/safxterm-color ache/go/1.25.8/x64/pkg/tool/linuorigin (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 agent-persona-explorer.md GO111MODULE tartedAt,updatedAt,event,headBranch,headSha,displayTitle H_PREFIX_ARGS="--docker-host-path-prefix /tmp/gh-aw" fi echo "$GH_AW_DOCKER_HOST_PATH_PREFIX_AR GOMOD GOMODCACHE ache/go/1.25.8/xconfig t-ha�� vaScript22446039remote.upstream.url -trimpath 1/x64/bin/node -p main -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (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 (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 737776085/custom/workflows git ache/uv/0.11.14/x86_64/sh /ref/tags/v9 origin ode-gyp-bin/nodexterm-color rtcfg conf�� 658a6d80f3786d8f82957335cbaa4429e2fcff8e52300fa5effcfbcbb59500dd-d iginal ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile --get remote.origin.ur-C (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-05-09 GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuInitial 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-04-16 GOMOD GOMODCACHE x_amd64/vet env -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (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-02-15 GOMOD GOMODCACHE 64/pkg/tool/linuTest User env -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu--auto (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 .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name git 64/pkg/tool/linux_amd64/compile /ref/tags/v9 remote.origin.urinit sv 64/pkg/tool/linux_amd64/compile k/gh�� edOutput2808232927/001 git 1/x64/bin/node tierignore remote.origin.urconfig erignore node (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 .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linutest@example.com env -json GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linutest@example.com (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linurev-parse (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name security cal/bin/sh nore -d 168.63.129.16 node /opt�� ithout_min-integrity1484496170/001 --write 7040339e:go.mod --ignore-path .prettierignore --log-level=error sh (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1234567890
    • Triggering command: /usr/bin/gh gh api repos/{owner}/{repo}/actions/runs/1234567890 --jq {databaseId: .id, number: .run_number, url: .html_url, status: .status, conclusion: .conclusion, workflowName: .name, workflowPath: .path, createdAt: .created_at, startedAt: .run_started_at, updatedAt: .updated_at, event: .event, headBranch: .head_branch, -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api repos/{owner}/{repo}/actions/runs/1234567890 --jq {databaseId: .id, number: .run_number, url: .html_url, status: .status, conclusion: .conclusion, workflowName: .name, workflowPath: .path, createdAt: .created_at, startedAt: .run_started_at, updatedAt: .updated_at, event: .event, headBranch: .head_branch, _pull_request.test.cjs --no-file-parallelism /opt/hostedtoolc--jq modules/@npmcli/run-script/lib/node-gyp-bin/sh -bool -buildtags t gh api re --jq bject.type] | @t-short :2375" GH_AW_DOCgh config 0802593/b552/imp/repos/actions/github-script/git/ref/tags/v9 infocmp (http block)
    • Triggering command: /usr/bin/gh gh api repos/{owner}/{repo}/actions/runs/1234567890 --jq {databaseId: .id, number: .run_number, url: .html_url, status: .status, conclusion: .conclusion, workflowName: .name, workflowPath: .path, createdAt: .created_at, startedAt: .run_started_at, updatedAt: .updated_at, event: .event, headBranch: .head_branch, _pull_request.test.cjs --no-file-parallelism node modules/@npmcli/run-script/lib/node-gyp-bin/sh 2332-38603/aw-mago '/tmp/TestParsetest 696227/b459/vet.-v ls -lh re node (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 .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linustatus (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linustatus (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name security 64/pkg/tool/linux_amd64/compile -nxv remote.upstream.remote sv 64/pkg/tool/linux_amd64/compile /opt�� ut1279416171/001 --write 64/pkg/tool/linux_amd64/vet --ignore-path .prettierignore --log-level=errouser.name 64/pkg/tool/linuTest User (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 .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linurev-parse (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 LsRemoteWithRealGitcustom_branch1854564648/001' 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linumyorg (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name 0802593/b555/workflow.test 64/pkg/tool/linux_amd64/compile /ref/tags/v9 origin r: $owner, name:--get 64/pkg/tool/linuremote.origin.url k/gh�� 6238550/001 git k/gh-aw/node_modules/.bin/sh ithub-script/gitgit x_amd64/link erignore node (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 LsRemoteWithRealGitmaster_branch-ifaceassert 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linustatus (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuremote.origin.url (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name git 64/pkg/tool/linux_amd64/compile /ref/tags/v9 myorg ode-gyp-bin/sh 64/pkg/tool/linuorigin k/gh�� architecture-guardian.md git e_modules/.bin/sh tierignore origin erignore node (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 .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuother (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name 0802593/b558/scr--jq 64/pkg/tool/linux_amd64/compile t0 x_amd64/vet (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/vet GOINSECURE GOMOD GOMODCACHE ylQP4Z8/vCNYLdc7.github/workflows/test.md (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json GO111MODULE .cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linuremote.upstream.url (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name git 64/pkg/tool/linux_amd64/compile /ref/tags/v9 x_amd64/vet sv 64/pkg/tool/linuorigin k/gh�� edOutput2808232927/001 git 1/x64/bin/node tierignore 64/pkg/tool/linuconfig erignore node (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-build2210802593/b512/importcfg -pack /home/REDACTED/work/gh-aw/gh-aw/pkg/logger/doc.go /home/REDACTED/work/gh-aw/gh-aw/pkg/logger/logger.go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 64/pkg/tool/linuInitial commit env 2537108932/.github/workflows GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build2210802593/b469/cli.test /tmp/go-build2210802593/b469/cli.test -test.testlogfile=/tmp/go-build2210802593/b469/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)
    • Triggering command: /tmp/go-build875696227/b469/cli.test /tmp/go-build875696227/b469/cli.test -test.testlogfile=/tmp/go-build875696227/b469/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true -bool -buildtags 1/x64/bin/node git diff�� ../pkg/workflow/js/**/*.json' --ignore-path ../../../.prettierignore 406406-7z7knb.txt (http block)
    • Triggering command: /tmp/go-build3948219790/b469/cli.test /tmp/go-build3948219790/b469/cli.test -test.testlogfile=/tmp/go-build3948219790/b469/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true 2332-38603/test-sh --write (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 xterm-color url ache/node/24.14.1/x64/bin/node -json GO111MODULE 64/bin/go gh t-11�� k/gh-aw/gh-aw/.github/workflows/approach-validat-f --jq /usr/bin/infocmp 2090104614/001' 2090104614/001' x_amd64/vet infocmp (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 runs/20260516-062332-38603/test-1893674334 -buildtags ache/node/24.14.1/x64/bin/node l -ifaceassert -nilfunc ache/node/24.14.1/x64/bin/node 4522�� secrets.TOKEN -tests /usr/bin/git ../pkg/workflow/infocmp 1/x64/bin/node (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 -bool -buildtags ache/node/24.14.1/x64/bin/node -errorsas -ifaceassert -nilfunc ache/node/24.14.1/x64/bin/node s-33�� ets.TOKEN }} --format=%(objectname) /usr/bin/gh /setup/js/patch_infocmp --jq /usr/bin/gh gh (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 g_.a 0802593/b066/vet.cfg 64/pkg/tool/linux_amd64/compile GOINSECURE til GOMODCACHE 64/pkg/tool/linuorigin (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 nt >/dev/null 2>-p 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 /usr/bin/gh 8911130/b461/imp--jq ndor/bin/git /var/run/docker.git gh ache/node/24.14./tmp/gh-aw-test-runs/20260516-062553-48396/test-source-field-variant-948267721/.github/workflows infocmp -1 th .prettierignore --log-level=e!../../../pkg/workflow/js/**/*.json /opt/hostedtoolcache/go/1.25.8/x--ignore-path c4f40031 /ref/tags/v9 -trimpath sv infocmp (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 x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 3172733430/.github/workflows --jq son ignore git /opt/hostedtoolc/tmp/gh-aw-test-runs/20260516-062332-38603/test-3984573851/.github/workflows gh ache�� c24189d81f726aec882f41247b7df59a-d --jq x_amd64/compile /tmp/go-build221git never ache/node/24.14.--get 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 2466637657/.github/workflows /opt/hostedtoolc--jq /usr/bin/gh -bool -buildtags ache/node/24.14./home/REDACTED/work/gh-aw/gh-aw/.github/workflows/approach-validator.md gh api e717fe3c21f21eead2afdaa4082fe26f-d --jq x_amd64/compile .actor }}, Unsafgit git-upload-pack init /usr/bin/git x_amd64/compile (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 -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet 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/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE 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, .object.type] | @tsv -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 ../pkg/workflow/js/**/*.json' --**/*.ts git son ignore config /usr/bin/git infocmp -1 d git x_amd64/compile $unformatted"; \/opt/hostedtoolcache/node/24.14.1/x64/bin/node config sv 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 ../pkg/workflow/js/**/*.json' --**/*.ts --jq 64/pkg/tool/linux_amd64/asm runs/20260516-06git -buildtags ache/node/24.14.--get 64/pkg/tool/linuremote.upstream.url -1 b0590b788f16d30094bd537a09dfb501-d l-output-1778912610372-b4i2nr.txt x_amd64/compile /repos/test-ownegh --jq /usr/bin/git x_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/issues/17
    • Triggering command: /usr/bin/gh gh api repos/github/gh-aw/issues/17 go env -json rk x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api repos/github/gh-aw/issues/17 gh auth�� _pull_request.test.cjs --no-file-n1 assword=$GITHUB_TOKEN"; }; f get--format=format:%H %ct %D tions/setup/js/node_modules/.bin--end-of-options ithub-script/git/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -buildtags ache/go/1.25.8/x/tmp/go-build1288911130/b519/_pkg_.a gh api re --jq bject.type] | @t-lang=go1.25 0802593/b551/_pkgh -tests 0802593/b551=> infocmp (http block)
    • Triggering command: /usr/bin/gh gh api repos/github/gh-aw/issues/17 infocmp -1 h2519569718/001' h2519569718/001' sv --write ../../../**/*.js-o 696227/b307/vet./tmp/go-build200465171/b519/_pkg_.a git merg�� re feature-branch (http block)
  • https://api.github.com/repos/google-github-actions/auth/git/ref/tags/v2
    • Triggering command: /usr/bin/gh gh api /repos/google-github-actions/auth/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv bility_SameInputSameOutput3168543697/001/stability-test.md -trimpath .git -p main -lang=go1.25 0802593/b526/imp--package-lock-only t-61�� k/gh-aw/gh-aw/.github/workflows/agent-performance-analyzer.md k/gh-aw/gh-aw/pkg/sliceutil/sliceutil_test.go /opt/hostedtoolcache/node/24.14.1/x64/bin/node go1.25.8 -c=4 -nolocalimports node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/google-github-actions/auth/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv licyBlockedUsersCommaSeparatedCompiledOutput3811511487/001 -trimpath /usr/bin/git url main -lang=go1.25 git -C /tmp/gh-aw-test-runs/20260516-06remote.origin.url url /opt/hostedtoolcache/node/24.14.1/x64/bin/node -c=4 -nolocalimports -importcfg node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/google-github-actions/auth/git/ref/tags/v2 --jq [.object.sha, .object.type] | @tsv /ref/tags/v9 -trimpath sv url main -lang=go1.25 ache/node/24.14.--package-lock-only 7891�� 1497661/001 -goversion t -c=4 -nolocalimports -importcfg node (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 se 0802593/b110/vet.cfg $name) { hasDiscussionsEnabled } } GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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' --ignore-p-p 0802593/b523/impmain ules/.bin/sh sistency_Inlinedinfocmp k/gh-aw/gh-aw/pk-1 ache/node/24.14.xterm-color gh api th .prettierigno-c=4 --jq ache/node/24.14.-importcfg k/gh-aw/gh-aw/.ginfocmp -goversion /usr/bin/git PRBolH6/hew-8hjf_2UH-V24CqcW (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' --ignore-p-p 8911130/b504/impmain bject.type] | @t-lang=go1.25 che/go-build/f2/git gh /opt/hostedtoolcuser.email gh api th .prettierigno-c=4 --jq es/.bin/node licyTrustedUsers/usr/bin/git h-aw/sessions/98config c4f40031 gh (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/linuorigin (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion **/*.json --ignore-path ode-gyp-bin/node sh -c 4269166823 /usr/bin/git ow.lock.yml rror ^remote\..*\.gh--1 run-script/lib/nxterm-color node (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion /ref/tags/v9 --jq sv git show�� 20306705 e/git (http block)
  • https://api.github.com/repos/org/repo/pulls/1
    • Triggering command: /usr/bin/gh gh api repos/org/repo/pulls/1 -extld=gcc /tmp/go-build2210802593/b513/_pkg_.a -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api repos/org/repo/pulls/1 gh api _pull_request.test.cjs --no-file--format=%H:%ct --jq bject.type] | @tsv tructions-test-1/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -trimpath 1/x64/bin/node gh api re --jq bject.type] | @t-lang=go1.25 runs/20260516-06git -json=Name,Impor-C flows/test-expir/tmp/gh-aw-add-gitattributes-test4285653319/.github/workflows infocmp (http block)
    • Triggering command: /usr/bin/gh gh api repos/org/repo/pulls/1 infocmp -1 /ref/tags/v9 .go sv '/tmp/TestParseD/opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile '/tmp/TestParseD-o 696227/b001/vet./tmp/go-build200465171/b515/_pkg_.a /bin/sh -c re git-upload-pack main odules/npm/node_-lang=go1.25 runs/20260516-06git **/*.cjs /opt/hostedtoolcuser.name infocmp (http block)
  • https://api.github.com/repos/owner/repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/owner/repo/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/owner/repo/actions/secrets --jq .secrets[].name ed-objects.md ache/go/1.25.8/x**/*.json 64/bin/sh 0802593/b527/sligo /tmp/go-build221list repository(owne-e infocmp -1 f021a505c7bf85cb-d Su1kV1lCD-6s2/w9unsafe ules/.bin/node bility_SameInputgit test@example.com-C 64/pkg/tool/linu/tmp/gh-aw-test-runs/20260516-062332-38603/test-source-field-variant-99790044 infocmp (http block)
    • Triggering command: /usr/bin/gh gh api /repos/owner/repo/actions/secrets --jq .secrets[].name js/**/*.json' --**/*.ts sh /prettier sistency_GoAndJagit gh ache/node/24.14.extensions.objectformat cut -f1 sv 8911130/b367/imp--jq (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 GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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-remote-workflow --limit 30 --repo owner/repo 64/pkg/tool/linu/tmp/go-build2210802593/b545/_testmain.go env report.md GO111MODULE util.test GOINSECURE GOMOD GOMODCACHE util.test (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 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name js/**/*.json' --ignore-path ../../../.prettierignore (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name /ref/tags/v9 (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch edOutput207479855/001 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env ry=1 GO111MODULE .cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/xsh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch 547928519 ../../../**/*.json 1/x64/bin/node --ignore-path ../../../.prettiapi (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch ll-sweep (enforce_all)' git 1/x64/bin/node /ref/tags/v9 url n-dir/node rtcfg -has�� Imports115220700.artifacts[].name git ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile /usr/bin/git git (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 2 commits May 16, 2026 06:24
Copilot AI changed the title [WIP] Refactor duplicate git patch header parsing in PR handlers Consolidate diff --git header parsing across safe-output PR handlers May 16, 2026
Copilot AI requested a review from gh-aw-bot May 16, 2026 06:29
@github-actions github-actions Bot mentioned this pull request May 16, 2026
@pelikhan pelikhan marked this pull request as ready for review May 16, 2026 13:37
Copilot AI review requested due to automatic review settings May 16, 2026 13:37
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

This PR centralizes parsing of diff --git headers across safe-output pull request handlers to avoid divergent behavior for quoted/escaped paths and malformed headers.

Changes:

  • Added a shared diff --git header parser (patch_path_helpers.cjs) plus patch-wide header extraction.
  • Refactored create_pull_request.cjs and manifest_file_helpers.cjs to consume the shared parsing results with handler-specific policies.
  • Added/updated regression tests for quoted headers, escapes, and malformed header behavior.
Show a summary per file
File Description
actions/setup/js/patch_path_helpers.cjs New shared parser + patch-wide extraction for diff --git headers.
actions/setup/js/create_pull_request.cjs Switches unique-file counting to shared header extraction while keeping conservative unparseable counting.
actions/setup/js/manifest_file_helpers.cjs Rebuilds filename/path extraction on shared parsed header entries.
actions/setup/js/manifest_file_helpers.test.cjs Adds coverage for quoted headers with spaces/escapes and malformed headers.
actions/setup/js/create_pull_request.test.cjs Updates malformed-header coverage to align with shared parser behavior.

Copilot's findings

Tip

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

  • Files reviewed: 5/5 changed files
  • Comments generated: 1

Comment on lines +19 to +22
while (i < rest.length && tokens.length < 2) {
while (i < rest.length && rest[i] === " ") {
i++;
}
@github-actions
Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

Test Quality Score: 80/100

Excellent test quality

Metric Value
New/modified tests analyzed 4
✅ Design tests (behavioral contracts) 4 (100%)
⚠️ Implementation tests (low value) 0 (0%)
Tests with error/edge cases 4 (100%)
Duplicate test clusters 0
Test inflation detected ⚠️ Marginal (manifest_file_helpers.test.cjs: 27 added vs 13 in production = 2.07:1)
🚨 Coding-guideline violations None

Test Classification Details

View all 4 analyzed tests
Test File Classification Issues Detected
countUniquePatchFiles — mixed case (modified) create_pull_request.test.cjs:1089 ✅ Design None — tightens test input to a realistic malformed header
should parse quoted headers with spaces and escapes manifest_file_helpers.test.cjs ✅ Design None — covers spaces and backslash escapes in paths
should parse quoted headers and ignore malformed headers manifest_file_helpers.test.cjs ✅ Design None — covers both happy path and malformed-header edge case
should preserve full escaped paths from quoted headers manifest_file_helpers.test.cjs ✅ Design None — covers escape-sequence preservation end-to-end

⚠️ Coverage Gap — patch_path_helpers.cjs Has No Tests

The PR adds a new 100-line production file (actions/setup/js/patch_path_helpers.cjs) that consolidates diff --git header parsing logic extracted from create_pull_request.cjs. No corresponding patch_path_helpers.test.cjs file was added.

The three new tests in manifest_file_helpers.test.cjs exercise path-parsing logic that presumably delegates to this new helper, so coverage is partially indirect. However, the helper module itself is untested in isolation. Consider adding patch_path_helpers.test.cjs to directly test the new module's parsing functions (e.g., parseGitDiffHeader, any exported regex utilities).


Language Support

Tests analyzed:

  • 🐹 Go (*_test.go): 0 tests
  • 🟨 JavaScript (*.test.cjs): 4 tests (vitest)

Verdict

Check passed. 0% of new tests are implementation tests (threshold: 30%). All 4 new/modified tests verify observable behavioral contracts (correct filename/path extraction). The inflation flag is marginal (2.07:1) and does not affect the pass verdict. The missing test file for patch_path_helpers.cjs is the main follow-up item.


📖 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: §25963344677

🧪 Test quality analysis by Test Quality Sentinel · ● 4.2M ·

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.

Skills-Based Review 🧠

Applied /zoom-out and /improve-codebase-architecture — this is a refactoring PR that centralises shared logic and changes module boundaries.

Key Themes

  • No dedicated unit tests for the new shared modulepatch_path_helpers.cjs is the only module without its own test file. Coverage exists indirectly via consumers, but failures will surface in the wrong test.
  • Raw C-style escape sequences in returned paths — quoted pathspecs containing \t, \n, \xNN, or octal escapes are returned un-unescaped. For set-uniqueness this is fine (and was intentional in the original); but checkForProtectedPaths now uses the same paths for string comparison, creating a latent mismatch for files with exotic names.
  • stripPrefix raw-token fallback — if a token doesn't begin with a/ or b/, the raw token is returned (quotes and all). Was present in the original; now it's worth hardening since this is the shared foundation.

Positive Highlights

  • ✅ Clean extraction: the new file has a minimal, focused API (parseDiffGitHeader + extractDiffGitHeaderEntries).
  • parseable flag is a nice addition — consumers can now distinguish "couldn't parse" from "parsed to null paths" without pattern-matching on synthetic keys.
  • closedQuote guard (line 37–39) is a real correctness improvement over the original, which would silently accept unclosed quoted tokens.
  • ✅ The headerIndex field is preserved so the fallback unparseable key in countUniquePatchFiles still uses the byte-offset uniqueness strategy.
  • ✅ Good new test coverage in manifest_file_helpers.test.cjs for quoted paths with spaces and escapes.

Verdict

No blocking issues — this is a solid, well-motivated refactor. The main follow-up worth addressing before the module gains more consumers is either unescaping C-style sequences or explicitly documenting the raw-output contract.

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · ● 5.6M

return entries;
}

module.exports = { parseDiffGitHeader, extractDiffGitHeaderEntries };
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[/zoom-out] patch_path_helpers.cjs is now the single shared parser for all diff --git header handling across the codebase, but it has no dedicated test file. All coverage goes through the consumer integration tests in create_pull_request.test.cjs and manifest_file_helpers.test.cjs, which means a bug in the core parser surfaces as a failure in a consumer test rather than in the parser test.

A dedicated patch_path_helpers.test.cjs would give faster, isolated feedback on edge cases like unclosed-quote short-circuit, octal/hex escape sequences, rename headers (a/old b/new), or paths that don't start with a//b/.

return tok.slice(2);
}
return tok;
};
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[/improve-codebase-architecture] stripPrefix preserves the raw token without unescaping C-style sequences (e.g. \\n, \\t, \\xNN, octal \\NNN). The original code documented this as intentional for set-uniqueness purposes. However, this module is now also used by checkForProtectedPaths, where the path is compared against protection rules. A file at a/foo\tbar/config.json would be stored as the raw string foo\tbar/config.json, which would fail to match a rule written as foo bar/config.json (with the actual tab).

Consider adding a unescape pass for the quoted form, or at minimum documenting on extractDiffGitHeaderEntries that returned paths may contain raw C-style escape sequences so consumers know they need to unescape before matching against filesystem paths.

return { oldPath: null, newPath: null, parseable: false };
}

const stripPrefix = tok => {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[/zoom-out] stripPrefix has an implicit fallback: if a token doesn't start with a/, b/, "a/, or "b/, the raw token (including any surrounding quotes) is returned as-is. For parseable: true entries this could produce a path containing a leading " character, which would then be stored in the protection check's path set or file-limit set.

The original implementation had the same gap. Now that this is the shared module, it would be worth adding a guard — e.g. returning null when neither prefix is found — along with a test case.

`;
const result = extractPathsFromPatch(patch);
expect(result).toContain("foo\\\\bar/config.json");
});
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

[/zoom-out] The test name "should preserve full escaped paths from quoted headers" and its assertion expect(result).toContain("foo\\\\bar/config.json") (which resolves to the 4-char sequence foo\\bar) documents that paths with backslashes are returned in their raw (un-unescaped) form. This is good for regression protection, but it also serves as implicit confirmation that the paths returned are not filesystem-ready for consumers that do string comparison (see the related comment on stripPrefix). Consider extracting this fact into a // NOTE: paths are returned raw comment in extractDiffGitHeaderEntries so consumers don't have to infer it from a test.

@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot review all comments and review comments

@github-actions
Copy link
Copy Markdown
Contributor

@copilot please post a brief progress update with any remaining blockers and next steps.

Generated by 👨‍🍳 PR Sous Chef ·

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented May 16, 2026

@copilot review all comments and review comments

Addressed the outstanding review feedback in commit f5db498.

Changes made:

  • Shared diff-header parser now strips trailing CR on CRLF headers.
  • Tokenization now treats ASCII whitespace as delimiters to avoid \r leaking into parsed paths.
  • Added regression tests for CRLF parsing in both create_pull_request.test.cjs and manifest_file_helpers.test.cjs.

I also ran targeted JS tests and final automated validation (Code Review + CodeQL), both clean.

Copilot AI requested a review from pelikhan May 16, 2026 14:06
@pelikhan
Copy link
Copy Markdown
Collaborator

@copilot add integration test with actual git outputs for various scenarios

Copilot AI and others added 4 commits May 16, 2026 14:20
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented May 16, 2026

@copilot add integration test with actual git outputs for various scenarios

Implemented in 1838f5a.

Added integration coverage using real git show --patch output across scenarios:

  • unquoted paths with spaces,
  • quoted escaped filenames,
  • rename headers.

The integration suite is in actions/setup/js/patch_path_helpers.integration.test.cjs, and parser logic was updated so unquoted spaced diff --git headers parse correctly from real git output.

@pelikhan pelikhan merged commit fbede8f into main May 16, 2026
11 of 12 checks passed
@pelikhan pelikhan deleted the copilot/refactor-git-patch-header-parsing branch May 16, 2026 14:33
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.

Duplicate Code: Git patch header parsing in safe-output PR handlers

4 participants