Skip to content

Add GitHub Copilot billing multipliers collection to daily-model-inventory workflow#30060

Merged
pelikhan merged 3 commits intomainfrom
copilot/add-github-copilot-billing-multipliers
May 4, 2026
Merged

Add GitHub Copilot billing multipliers collection to daily-model-inventory workflow#30060
pelikhan merged 3 commits intomainfrom
copilot/add-github-copilot-billing-multipliers

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 4, 2026

The daily model inventory agent relied solely on heuristics to infer ET multipliers, with no access to GitHub's authoritative billing docs. This adds a parallel pre-job that scrapes the official multipliers table and makes it available to the agent.

Changes

  • New job collect_copilot_billing_multipliers — runs in parallel with existing collection jobs; fetches and parses the HTML table from docs.github.com/en/copilot/reference/copilot-billing/model-multipliers-for-annual-plans using Python's urllib (no API key required), uploads result as copilot-billing-multipliers artifact (7-day retention)

    {
      "source": "https://docs.github.com/en/copilot/reference/copilot-billing/model-multipliers-for-annual-plans",
      "headers": ["Model", "Current multiplier", "New multiplier"],
      "models": [
        { "Model": "Claude Sonnet 4.6", "Current multiplier": "1", "New multiplier": "9" }
      ]
    }
  • Agent prompt Step 3 updated — docs table is now the primary source for ET multipliers; New multiplier column takes precedence for upcoming billing comparisons; existing heuristics remain as fallback if fetch fails

  • New bash toolscat and jq access patterns for the copilot-billing-multipliers artifact

  • playwright: mode: cli added to tools for future interactive scraping if the docs page requires JS rendering

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 cfg GOINSECURE GOMOD GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw util 64/bin/go x_amd64/link -o t_NmpAeXU -trimpath tartedAt,updatedAt,event,headBranch,headSha,displayTitle -p errors -lang=go1.25 J_/CWrYu2czG7Ca7ylQP4Z8/vCNYLdc7D8RXanEmFBss (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw GOWORK 64/bin/go ache/go/1.25.8/x64/pkg/tool/linuTest User sRem�� ZKq5R-8Dk 559961/b086/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -p path -lang=go1.25 ache/go/1.25.8/x--json (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 x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD ys_wasm.s x_amd64/vet (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 /ref/tags/v9 /opt/hostedtoolc--jq sv runs/20260504-04git -buildtags epo.git git rev-�� ithub-script/git/ref/tags/v9 /opt/hostedtoolc--jq bject.type] | @tsv -instructions-tegh -trimpath /usr/lib/git-cor/repos/actions/github-script/git/ref/tags/v9 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 ithub-script/git/ref/tags/v9 remote2 bject.type] | @tsv ned-imports-enabinfocmp cfg 64/pkg/tool/linuxterm-color git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/vet /usr/bin/git itmain_branch379git itmain_branch379rev-parse 64/pkg/tool/linu--show-toplevel git (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 SameOutput656279111/001/stability-test.md /tmp/go-build460559961/b059/vet.cfg 559961/b348/vet.cfg -goversion go1.25.8 -c=4 /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linuremote.origin.url -uns�� /v1.2.3 =my-default sv -json GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq [.object.sha, .object.type] | @tsv ithub-script/git/ref/tags/v9 ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet bject.type] | @tsv se 559961/b111/vet.rev-parse /usr/bin/git git rev-�� ithub-script/git/ref/tags/v9 git bject.type] | @tsv ons-test26475017git -pack test 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/gh --show-toplevel rtcfg /usr/bin/git gh api /repos/actions/github-script/git/ref/tags/v9 --jq /opt/hostedtoolcache/go/1.25.8/x64/bin/node --show-toplevel ache/go/1.25.8/xrev-parse /usr/bin/git node (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 4527-36130/test-1300775850 l /usr/lib/git-core/git -json GO111MODULE x_amd64/compile /usr/lib/git-core/git unpa�� --pack_header=2,3 -q /usr/bin/git -json /color.go x_amd64/compile git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv --show-toplevel x_amd64/compile /usr/bin/git -json GO111MODULE x_amd64/compile git conf�� user.name s/5/artifacts /usr/bin/git 01 GO111MODULE x_amd64/vet git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv thImports1697639853/001 x_amd64/vet om/myorg/myrepo.git .version=1bef1f2git fer.go x_amd64/vet git rev-�� --show-toplevel x_amd64/vet /usr/bin/git g_.a GO111MODULE x_amd64/vet git (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 /ref/tags/v9 git sv --get remote.origin.urrev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git /ref/tags/v9 epo}/actions/runrev-parse sv git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v9
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v9 --jq [.object.sha, .object.type] | @tsv (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 x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json ii/equal_fold.go-ifaceassert x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (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 x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (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 x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json go x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (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 d/cpuid.go x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json .go x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (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/compile GOINSECURE GOMOD GOMODCACHE UlQ8mMSNMIk9 env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (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 /repos/actions/github-script/git/ref/tags/v9 --jq /usr/bin/git ll-sweep (enforcgh /tmp/go-build460api e/git git rev-�� --show-toplevel e/git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv xterm-color git 86_64/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 GOMODCACHE x_amd64/vet /usr/bin/git g_.a l.go x_amd64/vet git conf�� user.email resolved$ /opt/hostedtoolcache/node/24.14.1/x64/bin/node lex-frontmatter-git k1Ubnk-ff 64/pkg/tool/linu--show-toplevel /opt/hostedtoolcache/node/24.14.1/x64/bin/node (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv xterm-color /opt/hostedtoolcache/go/1.25.8/xremote.origin.url /usr/bin/git -unreachable=falinfocmp /tmp/go-build460-1 e/git-receive-paxterm-color git rev-�� --show-toplevel (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq [.object.sha, .object.type] | @tsv ithub-script/git/ref/tags/v9 git bject.type] | @tsv --show-toplevel x_amd64/compile /usr/bin/git git rev-�� /ref/tags/v9 git sv runs/20260504-04infocmp config /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv runs/20260504-044527-36130/test-4247497422 -buildtags /usr/lib/git-core/git l -ifaceassert -nilfunc /usr/lib/git-core/git --gi�� 3841858905 --format=%(objectname) /usr/bin/git -json l/format/format.rev-parse x_amd64/compile git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv /tmp/gh-aw-test-runs/20260504-044527-36130/test-1563760818/.github/workflows config ache/node/24.14.1/x64/bin/node remote.origin.urgit GO111MODULE x_amd64/compile ache/node/24.14.1/x64/bin/node 6725�� uts.enforce_all == 'true' && 'full-sweep (enforce_all)' remote.origin.url /usr/bin/git -json GO111MODULE x_amd64/vet git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq [.object.sha, .object.type] | @tsv /ref/tags/v9 remote.origin.url sv -json GO111MODULE x_amd64/vet git remo�� GOMODCACHE x_amd64/vet /usr/bin/git g_.a GO111MODULE x_amd64/vet 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 GOMODCACHE x_amd64/vet /usr/bin/git g_.a @v1.19.2/scannerrev-parse x_amd64/vet git ent.�� .md md (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 --show-toplevel node /usr/bin/git r-test4091726095git x_amd64/compile /opt/hostedtoolc--show-toplevel git rev-�� --show-toplevel node /usr/bin/git /tmp/TestHashStagh go /usr/bin/git 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 --show-toplevel _E/_cAUBmJ4q2Q3dbcmCCy0/Nlx92tGhBg57fZVRGOwo /usr/bin/git ons-test26475017gh -trimpath /tmp/go-build460/repos/actions/github-script/git/ref/tags/v9 git rev-�� /ref/tags/v9 /tmp/go-build460559961/b456/timeutil.test sv -test.paniconexigit -test.v=true 64/pkg/tool/linu--show-toplevel git (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 --show-toplevel git /usr/bin/git /tmp/TestGuardPogit config /usr/bin/git git rev-�� --show-toplevel git /usr/bin/gh /tmp/gh-aw-test-infocmp l _id":222}] gh (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 ithub-script/git/ref/tags/v9 git bject.type] | @tsv ons-test26475017git -pack test git rev-�� --show-toplevel test /usr/bin/infocmp /tmp/TestHashStainfocmp x_amd64/vet /usr/bin/gh infocmp (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 --show-toplevel ache/go/1.25.8/x64/pkg/tool/linuother /usr/bin/git -unreachable=falgh /tmp/go-build460api 64/pkg/tool/linu/repos/actions/github-script/git/ref/tags/v9 git rev-�� --show-toplevel 64/pkg/tool/linux_amd64/compile /usr/bin/git -unreachable=falinfocmp /tmp/go-build460-1 r: $owner, name:xterm-color 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 --show-toplevel -dwarf=false /usr/bin/git go1.25.8 -c=4 -nolocalimports git rev-�� --show-toplevel /tmp/go-build460559961/b462/_testmain.go /usr/bin/git g_.a nLaxVxxol x_amd64/link git (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 xterm-color x_amd64/vet /usr/bin/gh -json GO111MODULE x_amd64/vet gh api ithub-script/git/ref/tags/v9.0.0 --jq bject.type] | @tsv g_.a GO111MODULE x_amd64/link git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --limit 100 --created >=2026-04-27 GOMOD GOMODCACHE 64/pkg/tool/linuorigin env o5B0oEz7Z GO111MODULE x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link (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-04 GOMOD GOMODCACHE 64/pkg/tool/linuTest User env ortcfg GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD 4167128/b013/sym--show-current 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-03 iment GOMODCACHE 64/pkg/tool/linuremote.origin.url env ortcfg cfg 64/pkg/tool/linux_amd64/vet GOINSECURE 4167128/b092/ GOMODCACHE 64/pkg/tool/linuTest commit (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 fWCy/na03iXLzDBM34i--fWCy cfg GOINSECURE g/x/net/http/httrun GOMODCACHE ache/go/1.25.8/x--json (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE 64/pkg/tool/linux_amd64/compile GOINSECURE ce GOMODCACHE 64/pkg/tool/linux_amd64/compile (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 SZyr/UNQkpBpW_IvLZuHOSZyr cfg GOINSECURE l GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/compile -c 111/001/stability-test.md FnMM/DTE1YZYN5-LgmGb0FnMM sv -n1 --format=format:rev-parse --end-of-options--show-toplevel ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 V7o_/18xeupG6XnJInX8DV7o_ ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE contextprotocol//tmp/test-process-3847402986.js GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu--jq (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/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link for-�� 559961/b392/_pkg_.a EgAi/JW5fl0E13YyEocudEgAi ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOSUMDB GOWORK 64/bin/go j0/8-8vmLiYCmHH9yLNKNaz/um86pbnuaZfPHtRi8CIm (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 taK6/ikh7gQ1RReQdq87ptaK6 cfg GOINSECURE g/x/net/idna GOMODCACHE ache/go/1.25.8/x^remote\..*\.gh-resolved$ (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 jA_S/QIf0Y67oe1TPcfUGjA_S ache/go/1.25.8/x64/pkg/tool/linu-test.short=true GOINSECURE b/gh-aw/pkg/actiremote GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linurev-parse (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE contextprotocol//tmp/test-import-1823317167.js GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet 4167�� 5yik/KWage2gGGpERUoqI5yik pkg/mod/github.com/segmentio/asm@v1.1.3/ascii/ascii.go cfg -p sync/atomic -lang=go1.25 ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh api --paginate repos/{owner}/{repo}/actions/runs/3/artifacts --jq .artifacts[].name GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE g/x/net/http/htt-1 ache/go/1.25.8/xxterm-color 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 rTOi/gKjgtBqA_nQbbyq8rTOi cfg GOINSECURE b/gh-aw/pkg/semv/tmp/test-process-1863312788.js GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 verutil_test.go ache/go/1.25.8/x64/pkg/tool/linu-nilfunc GOINSECURE l/httpcommon GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu--json (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 BHdz/-6z_QJDvZKLbBouUBHdz ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet GOINSECURE t/internal/languconfig GOMODCACHE ache/go/1.25.8/x^remote\..*\.gh-resolved$ (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE ache/go/1.25.8/x64/pkg/tool/linu-lang=go1.25 GOINSECURE contextprotocol/rev-parse GOMODCACHE ache/go/1.25.8/x64/pkg/tool/linu-dwarf=false (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile 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 g_.a GO111MODULE x_amd64/vet GOINSECURE (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 fips140/mlkem GOMODCACHE ache/go/1.25.8/xremote.origin.url (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build460559961/b404/cli.test /tmp/go-build460559961/b404/cli.test -test.testlogfile=/tmp/go-build460559961/b404/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v0.47.4
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v0.47.4 --jq [.object.sha, .object.type] | @tsv --show-toplevel ache/node/24.14.1/x64/bin/node (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 pC4FS5t0C 559961/b102/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -p log/slog/internarev-parse -lang=go1.25 rtcfg -o g/gitutil/gitutil.go g/gitutil/gitutil_test.go /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -p crypto/elliptic -lang=go1.25 /opt/hostedtoolc--jq (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 477797148/.github/workflows GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env l && debian-sa1 1 1 tOLMlgimq x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (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 g_.a @v1.19.2/context.go x_amd64/vet GOINSECURE l/unsafebytes GOMODCACHE x_amd64/vet env g_.a 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 b/workflows GO111MODULE x_amd64/compile GOINSECURE jsonschema 64/src/runtime/a/tmp/gh-aw-test-runs/20260504-044527-36130/test-3026370847 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 b/workflows GO111MODULE x_amd64/compile GOINSECURE move_wasm.o 64/src/runtime/m--show-toplevel 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/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env g_.a GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE iat abis 64/pkg/tool/linux_amd64/vet (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 --show-toplevel git /usr/bin/git --show-toplevel x_amd64/compile /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git /tmp/gh-aw-test-git s/test.md /usr/bin/git git (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 DefaultBranchFromLsRemoteWithRealGitmain_branch37952122/001' DefaultBranchFromLsRemoteWithRealGitmain_branch37952122/001' ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -p strconv -lang=go1.25 ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -o /tmp/go-build2214167128/b180/_pkg_.a -trimpath /opt/hostedtoolcache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -p crypto/internal/rev-parse -lang=go1.25 /opt/hostedtoolcache/go/1.25.8/xremote.origin.url (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 ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (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 x_amd64/compile GOINSECURE GOMOD GOMODCACHE h-aw.wasm; \ AF-buildtags 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/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/vet GOINSECURE json GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state sv -p internal/runtimerev-parse -lang=go1.25 ache/go/1.25.8/x64/pkg/tool/linuremote.origin.url (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 x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD reempt_wasm.s x_amd64/vet (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch 2997003082/.github/workflows 559961/b158/vet.cfg ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet -p vendor/golang.orrev-parse -lang=go1.25 ache/go/1.25.8/x64/pkg/tool/linux_amd64/vet (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 4, 2026 04:41
…ntory workflow

Agent-Logs-Url: https://github.com/github/gh-aw/sessions/5d448e96-d4d8-42fd-bf37-addb06bb931f

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Add GitHub Copilot billing multipliers to daily-model-inventory workflow Add GitHub Copilot billing multipliers collection to daily-model-inventory workflow May 4, 2026
Copilot AI requested a review from pelikhan May 4, 2026 04:50
@github-actions github-actions Bot mentioned this pull request May 4, 2026
@pelikhan pelikhan marked this pull request as ready for review May 4, 2026 08:15
Copilot AI review requested due to automatic review settings May 4, 2026 08:15
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 enhances the daily model inventory workflow by adding a parallel pre-job that fetches GitHub’s official Copilot billing model multiplier table from docs and makes it available to the agent as an artifact, then updates the agent instructions/tools to prefer that authoritative source.

Changes:

  • Added a new collect_copilot_billing_multipliers job that scrapes the Copilot billing multipliers table and uploads it as an artifact.
  • Updated the agent prompt/tools to treat the docs-derived multipliers as the primary source (with heuristics as fallback).
  • Enabled Playwright CLI mode support in the workflow tooling for potential future JS-rendered scraping.
Show a summary per file
File Description
pkg/workflow/data/action_pins.json Adds additional action pin entries (major-tag aliases) used by the workflow/tooling ecosystem.
pkg/actionpins/data/action_pins.json Mirrors the added action pin entries in the second action pins data location.
.github/workflows/daily-model-inventory.md Adds the multipliers collection job and updates prompt/tools to consume the new artifact; enables Playwright CLI tool mode.
.github/workflows/daily-model-inventory.lock.yml Compiled/locked workflow updates reflecting the new collection job, new tool installation, and updated allowlists.

Copilot's findings

Tip

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

Comments suppressed due to low confidence (2)

.github/workflows/daily-model-inventory.md:321

  • The step always writes status=ok to $GITHUB_OUTPUT even if the Python fetch fails (the Python code exits 0 on exceptions). This makes downstream status/telemetry misleading; consider setting status=error (or skipped) when an error is recorded or when the extracted model list is empty, and only writing status=ok on a successful parse.
          req = urllib.request.Request(URL, headers={"User-Agent": "Mozilla/5.0"})
          try:
              with urllib.request.urlopen(req, timeout=30) as resp:
                  html_content = resp.read().decode("utf-8", errors="replace")
          except Exception as e:
              result = {"source": URL, "error": str(e), "headers": [], "models": []}
              with open("/tmp/gh-aw/model-inventory/copilot-billing/multipliers.json", "w") as f:
                  json.dump(result, f, indent=2)
              print(f"Error fetching page: {e}", file=sys.stderr)
              sys.exit(0)

          parser = TableParser()
          parser.feed(html_content)

          models = []
          if parser.headers and parser.rows:
              for row in parser.rows:
                  if len(row) == len(parser.headers):
                      entry = {parser.headers[i]: row[i] for i in range(len(parser.headers))}
                      models.append(entry)

          result = {"source": URL, "headers": parser.headers, "models": models}
          out_path = "/tmp/gh-aw/model-inventory/copilot-billing/multipliers.json"
          with open(out_path, "w") as f:
              json.dump(result, f, indent=2)
          print(f"Extracted {len(models)} model multiplier entries", file=sys.stderr)
          PYEOF
          echo "status=ok" >> "$GITHUB_OUTPUT"

.github/workflows/daily-model-inventory.lock.yml:1134

  • The step always writes status=ok to $GITHUB_OUTPUT even if the Python fetch fails (the Python code exits 0 on exceptions). This makes downstream status/telemetry misleading; consider setting status=error (or skipped) when an error is recorded or when the extracted model list is empty, and only writing status=ok on a successful parse.
          req = urllib.request.Request(URL, headers={"User-Agent": "Mozilla/5.0"})
          try:
              with urllib.request.urlopen(req, timeout=30) as resp:
                  html_content = resp.read().decode("utf-8", errors="replace")
          except Exception as e:
              result = {"source": URL, "error": str(e), "headers": [], "models": []}
              with open("/tmp/gh-aw/model-inventory/copilot-billing/multipliers.json", "w") as f:
                  json.dump(result, f, indent=2)
              print(f"Error fetching page: {e}", file=sys.stderr)
              sys.exit(0)

          parser = TableParser()
          parser.feed(html_content)

          models = []
          if parser.headers and parser.rows:
              for row in parser.rows:
                  if len(row) == len(parser.headers):
                      entry = {parser.headers[i]: row[i] for i in range(len(parser.headers))}
                      models.append(entry)

          result = {"source": URL, "headers": parser.headers, "models": models}
          out_path = "/tmp/gh-aw/model-inventory/copilot-billing/multipliers.json"
          with open(out_path, "w") as f:
              json.dump(result, f, indent=2)
          print(f"Extracted {len(models)} model multiplier entries", file=sys.stderr)
          PYEOF
          echo "status=ok" >> "$GITHUB_OUTPUT"
        shell: bash
  • Files reviewed: 4/4 changed files
  • Comments generated: 2

Comment on lines +265 to +287

def handle_starttag(self, tag, attrs):
if tag == "table":
self.in_table = True
elif self.in_table and tag in ("th", "td"):
self.current_cell = tag
self.cell_text = []
elif self.in_table and tag == "tr":
self.current_row = []

def handle_endtag(self, tag):
if tag == "table":
self.in_table = False
elif self.in_table and tag in ("th", "td"):
text = "".join(self.cell_text).strip()
if self.current_cell == "th":
self.headers.append(text)
else:
self.current_row.append(text)
self.current_cell = None
elif self.in_table and tag == "tr":
if self.current_row:
self.rows.append(self.current_row)
Comment on lines +1069 to +1101
class TableParser(html.parser.HTMLParser):
def __init__(self):
super().__init__()
self.in_table = False
self.headers = []
self.rows = []
self.current_row = []
self.current_cell = None
self.cell_text = []

def handle_starttag(self, tag, attrs):
if tag == "table":
self.in_table = True
elif self.in_table and tag in ("th", "td"):
self.current_cell = tag
self.cell_text = []
elif self.in_table and tag == "tr":
self.current_row = []

def handle_endtag(self, tag):
if tag == "table":
self.in_table = False
elif self.in_table and tag in ("th", "td"):
text = "".join(self.cell_text).strip()
if self.current_cell == "th":
self.headers.append(text)
else:
self.current_row.append(text)
self.current_cell = None
elif self.in_table and tag == "tr":
if self.current_row:
self.rows.append(self.current_row)

@pelikhan pelikhan merged commit c82fb26 into main May 4, 2026
41 checks passed
@pelikhan pelikhan deleted the copilot/add-github-copilot-billing-multipliers branch May 4, 2026 13:54
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.

[q] Add GitHub Copilot billing multipliers to daily-model-inventory workflow

3 participants