Skip to content

refactor: move outlier functions to their semantic homes#28282

Merged
pelikhan merged 3 commits intomainfrom
copilot/refactor-outlier-function-cache
Apr 24, 2026
Merged

refactor: move outlier functions to their semantic homes#28282
pelikhan merged 3 commits intomainfrom
copilot/refactor-outlier-function-cache

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 24, 2026

Semantic analysis identified four functions living in the wrong files — each belonged in a file that already owned the surrounding logic. Pure relocation; no behavior changes.

Changes

  • computeIntegrityCacheKeycache_integrity.go (from cache.go)
    All three callees (cacheIntegrityLevel, computePolicyHash, generateIntegrityAwareCacheKey) already live in cache_integrity.go. This was the missing link in that chain.

  • BuildStandardNpmEngineInstallSteps, BuildNpmEngineInstallStepsWithAWF, GetNpmBinPathSetupnodejs.go (from engine_helpers.go)
    Consolidates all npm/Node.js step generation in one place alongside GenerateNodeJsSetupStep, GenerateNpmInstallSteps, and GenerateNpmInstallStepsWithScope. Logger reference updated from engineHelpersLognodejsLog. Header comment in engine_helpers.go updated to remove stale npm function references.

  • safePercent + formatPercent → new pkg/cli/audit_math_helpers.go (from audit_cross_run_render.go and audit_diff.go)
    The compute→format pair was split across two files with neither using the other's function. Extracting them enables consistent formatPercent(safePercent(a, b)) usage across audit rendering code.

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/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env g_.a 0kiaYELPw ache/go/1.25.8/x64/pkg/tool/linux_amd64/asm GOINSECURE ole GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/asm (http block)
    • Triggering command: /usr/bin/gh gh repo view owner/repo env 4143477554 LamLkoYmy 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/link env 00/001/test-frontmatter-with-arr-s eJpt1zLU2 ortcfg.link GOINSECURE eader GOMODCACHE 9Ym34G_sfJyM6o-Ioz/mT-tLcfK0hMgk-extld=gcc (http block)
    • Triggering command: /usr/bin/gh gh repo view owner/repo env 4143477554 GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/asm GOINSECURE gset GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/asm ortc�� xH4IQXLy2 64/src/internal/poll/fd.go ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE 8196030/b007/ GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linurev-parse (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 64/bin/go GOINSECURE GOMOD GOMODCACHE wasm.s (http block)
    • Triggering command: /usr/bin/gh gh api /orgs/test-owner/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env ath ../../../.pr**/*.json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv --get-regexp ^remote\..*\.gh-resolved$ /usr/bin/git y_with_explicit_git V0s1bKvb3 64/bin/go git rev-�� --show-toplevel go /usr/bin/git ortcfg 9xL6IaqNl ache/go/1.25.8/xinstall git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git LsRemoteWithRealgit LsRemoteWithRealrev-parse de_modules/.bin/--show-toplevel /usr/bin/git conf�� --get-regexp l /usr/bin/git 41170949/001 GO111MODULE 64/pkg/tool/linuinstall git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv GOMODCACHE go /usr/bin/docker -json GO111MODULE 64/bin/go docker pull�� test/race-image:v1.0.0 go /usr/bin/git -json e x_amd64/compile git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq [.object.sha, .object.type] | @tsv /tmp/compile-all-instructions-test-3607790645/.github/workflows remote /usr/bin/gh h ../../../.pretgit GO111MODULE 64/bin/go gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 (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 ortcfg GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile env 8196030/b211/_pkg_.a GO111MODULE 8196030/b211=> GOINSECURE GOMOD GOMODCACHE git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel -tests /usr/bin/git ility-kit.md om/segmentio/asm\n ache/go/1.25.8/x: git rev-�� --show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile /usr/bin/git 8196030/b146/_pkgit edcfg ache/go/1.25.8/x--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv --show-toplevel git /usr/bin/git . -dwarf=false /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git /tmp/gh-aw-test-git remote /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv ithub/workflows/architecture-guardian.md config /usr/bin/git remote.origin.urgit hyphen39550990/0rev-parse -importcfg git -C /tmp/gh-aw-test-runs/20260424-135529-33782/test--test.timeout=10m0s (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/xTest User /usr/bin/git 8196030/b208/_pkgit d2UJ/DbmGN00V4XBcommit 8196030/b208=> git rev-�� --show-toplevel git /usr/bin/git /v3.0.0 TWRl/eDvIxLANZ0crev-parse sv git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq [.object.sha, .object.type] | @tsv --depth 1 /usr/bin/git v1.0.0 https://github.ccommit /tmp/gh-aw-git-c-m git rev-�� --show-toplevel erignore /usr/bin/gh ript formatting git GO111MODULE /opt/hostedtoolc--show-toplevel 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 optimization)..."; \ BEFORE=$(wc -c < gh-aw.wasm); \ wasm-opt -Oz --enable-bu/tmp/go-build1676837074/b412/importcfg -c=4 -nolocalimports -importcfg /tmp/go-build2038196030/b231/importcfg -pack /home/REDACTED/go/pkg/mod/github.com/modelcontextprotocol/go-sdk@v1.5.0/internal/xcontext/xcontext.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/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm (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 y.s env -json GO111MODULE x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm (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 --show-toplevel x_amd64/link /usr/bin/git -json GO111MODULE 64/pkg/tool/linu--show-toplevel /usr/bin/git remo�� -v ch/8p_7IHIf_31YR46MaExS/rs4ruDNpremote /usr/bin/infocmp g_.a GO111MODULE 64/pkg/tool/linu--show-toplevel infocmp (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE ache/go/1.25.8/x--show-toplevel git (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /tmp/TestGuardPolicyMinIntegrityOnlymin-integrity_with_explicit_-p rev-parse /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -json GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -ato�� -bool -buildtags om/org2/repo2.git -errorsas -ifaceassert -nilfunc git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv --git-dir x_amd64/compile /opt/hostedtoolcache/node/24.14.1/x64/bin/node -json GO111MODULE 64/pkg/tool/linu--show-toplevel /opt/hostedtoolcache/node/24.14.1/x64/bin/node /tmp�� GOMODCACHE 64/pkg/tool/linufeature-branch /usr/bin/git g_.a GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv /tmp/TestHashConsistency_GoAndJavaScript2346343083/001/test-frontmatter-with-arrays.md -tests /usr/bin/git -json GO111MODULE 64/bin/go git -C s/test.md remote /usr/bin/git ath ../../../.prgit GO111MODULE 64/bin/go /usr/bin/git (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 ithub/workflows/ai-moderator.md -tests /usr/bin/git -json GO111MODULE 64/bin/go git rev-�� runs/20260424-135529-33782/test-2769600498 go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile s/test.md GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv git-upload-pack '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitmain_branch3347703330/001' git-upload-pack '/tmp/TestParseDefaultBranchFromLsRemoteWithRealGitmain_branch3347703330/001' e/git -json GO111MODULE 64/bin/go e/git rev-�� --show-toplevel go /opt/hostedtoolcache/node/24.14.1/x64/bin/node yphen3052038842/git yphen3052038842/rev-parse /prettier node (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv 0fcbe58f0612ef387f83cda7 ings.cjs git -m Auth cleanup fai-V=full modules/@npmcli/run-script/lib/nfeature | cat /etc/passwd forks.js k/gh�� -u st/suppress-warnings.cjs ache/node/24.14.1/x64/bin/node e/git t t st/dist/workers//home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/vitest/suppress-warnings.cjs (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv 427b556c..HEAD git $name) { hasDiscussionsEnabled } } user.name Test User /opt/hostedtoolc-m git show�� --verify 427b556c..HEAD ode_modules/.bin/git --bare commit _modules/.bin/gi/home/REDACTED/work/gh-aw/gh-aw/.github/workflows git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq [.object.sha, .object.type] | @tsv 427b556c..HEAD git p/bin/git user.name Test User ules/.bin/git git show�� --verify 427b556c..HEAD n-dir/node --bare gin/token-optionapi .git git (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 GOMODCACHE go /usr/bin/git le-frontmatter.mgit GO111MODULE 64/pkg/tool/linu--show-toplevel /usr/bin/git conf�� --get-regexp ^remote\..*\.gh-resolved$ /usr/bin/git g_.a GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v0.1.2 --jq [.object.sha, .object.type] | @tsv --git-dir go /usr/bin/git -json GO111MODULE 64/bin/go git init�� GOMODCACHE go /usr/bin/git -json GO111MODULE 1/x64/bin/npx git (http block)
  • https://api.github.com/repos/github/gh-aw-actions/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw-actions/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv 6837074/b462/types.test /home/REDACTED/go/pkg/mod/golang.org/x/text@v0.36.0/internal/language/common.go 6837074/b462/importcfg.link -json GO111MODULE 64/bin/go VWw7VJguVlRAx/jNQYSQDdMsvnnTZDbyx2/zg1-jwF1IRoPaowner/host-repo -C ry=1 url 6837074/b462/_pkg_.a remote.origin.urgit GO111MODULE 64/bin/go git (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 --symref l /opt/hostedtoolcache/node/24.14.1/x64/bin/node -json GO111MODULE 64/bin/go node /tmp�� /tmp/TestHashConsistency_InlinedImports2487581241/001/inlined-b.md go /opt/hostedtoolcache/node/24.14.1/x64/bin/node -json GO111MODULE 64/bin/go 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, .object.type] | @tsv ithub/workflows/api-consumption-report.md remote ow-with-reaction.lock.yml -json GO111MODULE 64/bin/go git -C /tmp/gh-aw-test-runs/20260424-135529-33782/test-4143477554 l ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -json GO111MODULE 64/bin/go ache/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 for-each-ref l /usr/bin/git -json GO111MODULE 64/bin/go git -C /tmp/gh-aw-test-runs/20260424-135931-58387/test-209922132/.github/workflows (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 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE .o 64/src/internal/--show-toplevel 64/pkg/tool/linux_amd64/compile env g_.a DfcRFzBGz ache/go/1.25.8/x64/pkg/tool/linu-nilfunc GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-tests (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 5.0/internal/doc.go 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env g_.a tVIFB3NxN ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-importcfg (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/1/artifacts --jq .artifacts[].name GO111MODULE Name,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle GOINSECURE GOMOD GOMODCACHE go ranc�� -json GO111MODULE .cfg GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env 903946412 LZuHOSZyr /opt/hostedtoolcache/go/1.25.8/x-lang=go1.25 GOINSECURE go-sdk/internal/rev-parse GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 _3ywvdE5S 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env 4143477554 LamLkoYmy 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12345/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go ranc�� -json GO111MODULE in/node GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name rotocol/go-sdk@v1.5.0/internal/mcpgodebug/mcpgodebug.go 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/compile env 903946412 kLZAPaMu6 x_amd64/compile GOINSECURE go-sdk/internal/rev-parse GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 /semver/semver.g-nolocalimports 64/pkg/tool/linu-importcfg GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linutest@example.com env g_.a k1Ubnk-ff ache/go/1.25.8/x64/pkg/tool/linu-lang=go1.25 GOINSECURE erutil GOMODCACHE ylQP4Z8/vCNYLdc7D8RXanEmFBss (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/12346/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 1/x64/bin/node GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linu-test.short=true GOINSECURE GOMOD abis 64/pkg/tool/linux_amd64/compile 64/s�� g_.a GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/asm GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/asm (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 rotocol/go-sdk@v1.5.0/oauthex/auth_meta.go 64/pkg/tool/linux_amd64/compile GOINSECURE ty.o 64/src/internal/user.email 64/pkg/tool/linutest@example.com env g_.a GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE go-sdk/auth GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/2/artifacts --jq .artifacts[].name GO111MODULE ortcfg.link GOINSECURE GOMOD GOMODCACHE 81Rf-NbYaFwWZjWTXr/7lb-Cf5Ul7MsP_3dP6zG/PACGDQ3kremote env -json GO111MODULE 7798794fe9e70717b140e53b5296bdf9c5c7ddcd4402717c3c0c4fb5c6df56c6-d GOINSECURE GOMOD ode-gyp-bin/sh go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE essage abis 64/pkg/tool/linux_amd64/compile env 1154923051/.github/workflows ke8fejfLv ache/go/1.25.8/x64/pkg/tool/linu-buildmode=exe GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-extld=gcc (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 5.0/deviceauth.go 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuTest User env g_.a NG8R67gve ache/go/1.25.8/x64/pkg/tool/linux_amd64/asm GOINSECURE go-sdk/oauthex GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-buildtags (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE .cfg GOINSECURE GOMOD GOMODCACHE go (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 0/internal/language/compact/compact.go 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD abis 64/pkg/tool/linux_amd64/compile env 1154923051/.github/workflows bt7zDc9ZF ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-buildtags (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 rotocol/go-sdk@v1.5.0/mcp/client.go 64/pkg/tool/linux_amd64/compile GOINSECURE 64 abis Vgol9MA/jtMHmSR1PwQ4sKWnT8ry env g_.a GO111MODULE ache/go/1.25.8/x64/pkg/tool/linu-lang=go1.25 GOINSECURE er GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-dwarf=false (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/4/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE .cfg GOINSECURE GOMOD GOMODCACHE go (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 4/apic.go 64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu/tmp/go-build1676837074/b113/vet.cfg env 1154923051/.github/workflows sYAOo28ie ache/go/1.25.8/x64/pkg/tool/linu-buildmode=exe GOINSECURE age/compact GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-test.v=true (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 rotocol/go-sdk@v1.5.0/auth/auth.go 64/pkg/tool/linux_amd64/compile GOINSECURE (http block)
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/5/artifacts --jq .artifacts[].name GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE .cfg GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path 60368335/001' 60368335/001' -importcfg /tmp/go-build1676837074/b419/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 -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 GOMOD GOMODCACHE go env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (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 x_amd64/link env g_.a Zf4ikgLhb x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build1676837074/b404/cli.test /tmp/go-build1676837074/b404/cli.test -test.testlogfile=/tmp/go-build1676837074/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true -nolocalimports -importcfg /tmp/go-build2038196030/b191/importcfg -pack env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /tmp/go-build2598731973/b404/cli.test /tmp/go-build2598731973/b404/cli.test -test.testlogfile=/tmp/go-build2598731973/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/go/1.25.8/x12345 /usr/bin/git 5529-33782/test-git dE5S/nPvk3w7LQzWrev-parse ache/go/1.25.8/x--show-toplevel git rev-�� --show-toplevel ache/go/1.25.8/xowner/repo /usr/bin/git 5529-33782/test-ls stmain.go 1/x64/bin/node git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel go /usr/bin/git -json GO111MODULE in/sh git rev-�� --show-toplevel go /usr/bin/git ck '**/*.cjs' '*ls GO111MODULE ache/uv/0.11.7/x/tmp/gh-aw/aw-feature-branch.patch git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv aUa1j9_u_ GO111MODULE Name,createdAt,s-nilfunc GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x-tests sRem�� 8196030/b120/_pkg_.a g/stringutil/ansi.go ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE b/gh-aw/pkg/type-test.run=TestAuditDiffToolErrorEnvelopeSetsIsErrorTrueHelperProcess GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linumyorg (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE tions/setup/js/node_modules/.bin/sh GOINSECURE GOMOD GOMODCACHE go env 209922132/.github/workflows GO111MODULE ache/go/1.25.8/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (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/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env 368335/001 368335/002/work x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm 3683�� -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/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm 8081�� -json arm.go x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (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/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm _bra�� -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/v3.0.0 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE Xa-aLahzaEXG env 807301965/001 807301965/002/work 809eb61c9f865207-d GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv g_.a om/segmentio/asm@v1.1.3/cpu/cpuid/cpuid.go ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile ortc�� ekTDoHd71 om/goccy/go-yaml@v1.19.2/context.go ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE ntio/asm/internarev-parse GOMODCACHE ortcfg (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq [.object.sha, .object.type] | @tsv -json GO111MODULE tions/node_modules/.bin/sh GOINSECURE GOMOD GOMODCACHE go env 1/001/inlined-b.md GO111MODULE 1/x64/bin/bash GOINSECURE GOMOD GOMODCACHE go (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 go-sdk/internal/rev-parse GOMODCACHE 64/pkg/tool/linux_amd64/compile env g_.a GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-buildtags (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE go k/gh�� ExpressionCompiledOutput3884965948/001 GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD erignore ache/go/1.25.8/xrepos/{owner}/{repo}/actions/runs/3/artifacts (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD sm.s go (http block)
    • 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 64/bin/go GOINSECURE GOMOD e_wasm.s go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state /opt/hostedtoolcache/go/1.25.8/x-lang=go1.25 GOINSECURE go-sdk/internal/rev-parse GOMODCACHE go env 00/001/test-frontmatter-with-arrays.md GO111MODULE ache/go/1.25.8/x64/pkg/tool/linu-importcfg GOINSECURE %H %ct %D (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 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env ath ../../../.pr**/*.json GO111MODULE er GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch g_.a GO111MODULE k GOINSECURE go-sdk/mcp GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/asm sRem�� LqPM_8zZK om/segmentio/asm@v1.1.3/cpu/arm/arm.go x_amd64/link GOINSECURE 8196030/b036/ GOMODCACHE x_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch --noprofile go /usr/bin/git -json GO111MODULE 64/bin/go git init�� --bare --initial-branch=develop /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
  • invalid.example.invalid
    • Triggering command: /usr/lib/git-core/git-remote-https /usr/lib/git-core/git-remote-https origin https://invalid.example.invalid/nonexistent-repo.git git conf�� --local --get ode_modules/.bin/git 1/x64/bin/git git /git git add . git tions/setup/node_modules/.bin/git -M main bin/git git (dns block)

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

- Move computeIntegrityCacheKey from cache.go to cache_integrity.go
  (all callees already live there: cacheIntegrityLevel, computePolicyHash,
   generateIntegrityAwareCacheKey)
- Move BuildStandardNpmEngineInstallSteps, BuildNpmEngineInstallStepsWithAWF,
  and GetNpmBinPathSetup from engine_helpers.go to nodejs.go
  (consolidates all npm/Node.js step-generation in one file)
- Extract safePercent and formatPercent into pkg/cli/audit_math_helpers.go
  (removes the near-duplicate pair scattered across audit_cross_run_render.go
   and audit_diff.go; enables consistent formatPercent(safePercent(a,b)) usage)
- Update engine_helpers.go header comment to reflect removed npm functions

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/7428ac88-c154-4de3-9e07-954717fe2597

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Refactor outlier function in cache.go to cache_integrity.go refactor: move outlier functions to their semantic homes Apr 24, 2026
Copilot AI requested a review from pelikhan April 24, 2026 14:03
@pelikhan pelikhan marked this pull request as ready for review April 24, 2026 14:03
Copilot AI review requested due to automatic review settings April 24, 2026 14:03
@github-actions github-actions Bot mentioned this pull request Apr 24, 2026
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

Refactors workflow/CLI code by relocating a handful of helper functions into files that already own the related logic (cache integrity, Node.js/npm workflow steps, and audit percent math helpers), aiming for better semantic organization without functional changes.

Changes:

  • Moved computeIntegrityCacheKey from cache.go to cache_integrity.go alongside its related integrity/policy helpers.
  • Moved npm/Node.js engine install step helpers (BuildStandardNpmEngineInstallSteps, BuildNpmEngineInstallStepsWithAWF, GetNpmBinPathSetup) from engine_helpers.go to nodejs.go.
  • Extracted safePercent and formatPercent into a new pkg/cli/audit_math_helpers.go and removed the prior duplicated/in-split definitions.
Show a summary per file
File Description
pkg/workflow/nodejs.go Adds npm/Node helper functions previously housed in engine helpers.
pkg/workflow/engine_helpers.go Removes npm/Node helpers and updates header docs to match remaining responsibilities.
pkg/workflow/cache_integrity.go Adds computeIntegrityCacheKey next to integrity/policy hash helpers.
pkg/workflow/cache.go Removes relocated computeIntegrityCacheKey implementation.
pkg/cli/audit_math_helpers.go New shared helpers for percent computation/formatting used by audit rendering.
pkg/cli/audit_diff.go Removes local formatPercent now provided by audit math helpers.
pkg/cli/audit_cross_run_render.go Removes local safePercent now provided by audit math helpers.

Copilot's findings

Tip

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

  • Files reviewed: 7/7 changed files
  • Comments generated: 2

Comment thread pkg/workflow/nodejs.go
}

// BuildStandardNpmEngineInstallSteps creates standard npm installation steps for engines.
// This helper extracts the common pattern shared by Copilot, Codex, and Claude engines.
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

The docstring says this helper is shared by "Copilot, Codex, and Claude" but Claude’s install path does not use this helper (it calls GenerateNpmInstallSteps with runInstallScripts=true). Please update the comment to reflect the actual engines/pattern (or make the helper generic without naming engines).

Suggested change
// This helper extracts the common pattern shared by Copilot, Codex, and Claude engines.
// This helper extracts the common pattern for engines installed via npm with Node.js setup.

Copilot uses AI. Check for mistakes.
Comment thread pkg/workflow/nodejs.go
Comment on lines +96 to +110
// BuildNpmEngineInstallStepsWithAWF injects an AWF installation step between the Node.js
// setup step and the CLI install steps when the firewall is enabled. This eliminates the
// duplicated AWF-injection pattern shared by Claude, Gemini, and Copilot engines.
//
// The expected layout of npmSteps is:
// - npmSteps[0] – Node.js setup step
// - npmSteps[1:] – CLI installation step(s)
//
// Parameters:
// - npmSteps: Pre-computed npm installation steps (from BuildStandardNpmEngineInstallSteps
// or GenerateCopilotInstallerSteps)
// - workflowData: The workflow data (used to determine firewall configuration)
//
// Returns:
// - []GitHubActionStep: Steps in order: Node.js setup, AWF (if enabled), CLI install
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

The comment describes AWF being injected between a Node.js setup step (npmSteps[0]) and CLI install steps, but this helper is also called with an empty npmSteps slice (e.g., Copilot custom-command path) to install AWF only. Consider updating the doc and/or explicitly handling the empty-input case in the comment/contract so callers know this is supported.

Suggested change
// BuildNpmEngineInstallStepsWithAWF injects an AWF installation step between the Node.js
// setup step and the CLI install steps when the firewall is enabled. This eliminates the
// duplicated AWF-injection pattern shared by Claude, Gemini, and Copilot engines.
//
// The expected layout of npmSteps is:
// - npmSteps[0] – Node.js setup step
// - npmSteps[1:] – CLI installation step(s)
//
// Parameters:
// - npmSteps: Pre-computed npm installation steps (from BuildStandardNpmEngineInstallSteps
// or GenerateCopilotInstallerSteps)
// - workflowData: The workflow data (used to determine firewall configuration)
//
// Returns:
// - []GitHubActionStep: Steps in order: Node.js setup, AWF (if enabled), CLI install
// BuildNpmEngineInstallStepsWithAWF injects an AWF installation step after the Node.js
// setup step and before the CLI install steps when the firewall is enabled. This eliminates
// the duplicated AWF-injection pattern shared by Claude, Gemini, and Copilot engines.
//
// When npmSteps is non-empty, the expected layout is:
// - npmSteps[0] – Node.js setup step
// - npmSteps[1:] – CLI installation step(s)
//
// An empty npmSteps slice is also supported. In that case, this helper returns only the AWF
// installation step when the firewall is enabled, or an empty slice when it is not.
//
// Parameters:
// - npmSteps: Pre-computed npm installation steps (from BuildStandardNpmEngineInstallSteps,
// GenerateCopilotInstallerSteps, or an empty slice when only AWF installation is needed)
// - workflowData: The workflow data (used to determine firewall configuration)
//
// Returns:
// - []GitHubActionStep: Steps in order: Node.js setup (if present), AWF (if enabled), then
// remaining CLI installation steps

Copilot uses AI. Check for mistakes.
…mantic homes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Commit pushed: cc1028d

🏗️ ADR gate enforced by Design Decision Gate 🏗️

@github-actions
Copy link
Copy Markdown
Contributor

🏗️ Design Decision Gate — ADR Required

This PR makes significant changes to core business logic (165 new lines in pkg/) but does not have a linked Architecture Decision Record (ADR).

AI has analyzed the PR diff and generated a draft ADR to help you get started:

📄 Draft ADR: docs/adr/28282-relocate-outlier-functions-to-semantic-homes.md

What to do next

  1. Review the draft ADR committed to your branch — it was generated from the PR diff
  2. Complete the missing sections — add context the AI couldn't infer, refine the decision rationale, and list real alternatives you considered
  3. Commit the finalized ADR to docs/adr/ on your branch
  4. Reference the ADR in this PR body by adding a line such as:

    ADR: ADR-28282: Relocate Outlier Functions to Their Semantic Homes

Once an ADR is linked in the PR body, this gate will re-run and verify the implementation matches the decision.

Why ADRs Matter

"AI made me procrastinate on key design decisions. Because refactoring was cheap, I could always say 'I'll deal with this later.' Deferring decisions corroded my ability to think clearly."

ADRs create a searchable, permanent record of why the codebase looks the way it does. Future contributors (and your future self) will thank you.

Note: This refactor extends the principle established in ADR-27325. The draft ADR acknowledges that relationship and the normative spec defines exactly which files now own which functions going forward.


📋 Michael Nygard ADR Format Reference

An ADR must contain these four sections to be considered complete:

  • Context — What is the problem? What forces are at play?
  • Decision — What did you decide? Why?
  • Alternatives Considered — What else could have been done?
  • Consequences — What are the trade-offs (positive and negative)?

All ADRs are stored in docs/adr/ as Markdown files numbered by PR number (e.g., 0042-use-postgresql.md for PR #42).

🔒 This PR cannot merge until an ADR is linked in the PR body.

References: §24893632435

🏗️ ADR gate enforced by Design Decision Gate 🏗️ · ● 182.7K ·

@pelikhan pelikhan merged commit 6019ce1 into main Apr 24, 2026
@pelikhan pelikhan deleted the copilot/refactor-outlier-function-cache branch April 24, 2026 14:10
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.

[refactor] Semantic function clustering: outliers and scattered helpers

3 participants