Conversation
| # gh-aw-metadata: {"schema_version":"v3","frontmatter_hash":"1a8e40315f50e24c07aef31a3d60d54ab44cde8dc15775221018179080ed4c23","compiler_version":"v0.71.5","strict":true,"agent_id":"copilot"} | ||
| # gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_CI_TRIGGER_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"de0fac2e4500dabe0009e67214ff5f5447ce83dd","version":"v6.0.2"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/github-script","sha":"d746ffe35508b1917358783b479e04febd2b8f71","version":"v9"},{"repo":"actions/setup-node","sha":"48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e","version":"v6.4.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"b8068426813005612b960b5ab0b8bd2c27142323","version":"v0.71.5"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.25.40","digest":"sha256:14ff567e8d9d4c2fbc5e55c973488381c71d7e0fdbe72d30ee7b8a738fd86504","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.25.40@sha256:14ff567e8d9d4c2fbc5e55c973488381c71d7e0fdbe72d30ee7b8a738fd86504"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.25.40","digest":"sha256:2883ca3e5ae9f330cafdd9345bfd4ae17fc8da36c96d4c9a1f76e922b4c45280","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.25.40@sha256:2883ca3e5ae9f330cafdd9345bfd4ae17fc8da36c96d4c9a1f76e922b4c45280"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.25.40","digest":"sha256:b084f4a2c771f584ee68084ced52fa6b3245197a1889645d817462d307d3ac51","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.25.40@sha256:b084f4a2c771f584ee68084ced52fa6b3245197a1889645d817462d307d3ac51"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.3.6","digest":"sha256:2bb8eef86006a4c5963c55616a9c51c32f27bfdecb023b8aa6f91f6718d9171c","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.3.6@sha256:2bb8eef86006a4c5963c55616a9c51c32f27bfdecb023b8aa6f91f6718d9171c"},{"image":"ghcr.io/github/github-mcp-server:v1.0.3","digest":"sha256:2ac27ef03461ef2b877031b838a7d1fd7f12b12d4ace7796d8cad91446d55959","pinned_image":"ghcr.io/github/github-mcp-server:v1.0.3@sha256:2ac27ef03461ef2b877031b838a7d1fd7f12b12d4ace7796d8cad91446d55959"},{"image":"node:lts-alpine","digest":"sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f","pinned_image":"node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f"}]} | ||
| # gh-aw-metadata: {"schema_version":"v3","frontmatter_hash":"1a8e40315f50e24c07aef31a3d60d54ab44cde8dc15775221018179080ed4c23","compiler_version":"v0.74.4","strict":true,"agent_id":"copilot"} | ||
| # gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_CI_TRIGGER_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"de0fac2e4500dabe0009e67214ff5f5447ce83dd","version":"v6.0.2"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/github-script","sha":"d746ffe35508b1917358783b479e04febd2b8f71","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e","version":"v6.4.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"d3abfe96a194bce3a523ed2093ddedd5704cdf62","version":"v0.74.4"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.25.46"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.25.46"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.25.46"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.3.9","digest":"sha256:64828b42a4482f58fab16509d7f8f495a6d97c972a98a68aff20543531ac0388","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.3.9@sha256:64828b42a4482f58fab16509d7f8f495a6d97c972a98a68aff20543531ac0388"},{"image":"ghcr.io/github/github-mcp-server:v1.0.4"},{"image":"node:lts-alpine","digest":"sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f","pinned_image":"node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f"}]} |
There was a problem hiding this comment.
Container images missing SHA digest pins
Several container images introduced in this upgrade no longer include @sha256: digest pins, unlike the previous version. In the old manifest, ghcr.io/github/gh-aw-firewall/agent:0.25.40, api-proxy:0.25.40, squid:0.25.40, and ghcr.io/github/github-mcp-server:v1.0.3 all carried explicit digests; their replacements (0.25.46 and v1.0.4) do not. This means the tag could be silently reassigned to a different image layer without triggering any lockfile change, undermining the supply-chain guarantees the rest of this infrastructure is designed to provide. The same pattern appears in the other regenerated .lock.yml files.
Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/workflows/code-simplifier.lock.yml
Line: 2
Comment:
**Container images missing SHA digest pins**
Several container images introduced in this upgrade no longer include `@sha256:` digest pins, unlike the previous version. In the old manifest, `ghcr.io/github/gh-aw-firewall/agent:0.25.40`, `api-proxy:0.25.40`, `squid:0.25.40`, and `ghcr.io/github/github-mcp-server:v1.0.3` all carried explicit digests; their replacements (`0.25.46` and `v1.0.4`) do not. This means the tag could be silently reassigned to a different image layer without triggering any lockfile change, undermining the supply-chain guarantees the rest of this infrastructure is designed to provide. The same pattern appears in the other regenerated `.lock.yml` files.
How can I resolve this? If you propose a fix, please make it concise.There was a problem hiding this comment.
Pull request overview
Upgrades the repository’s agentic workflow infrastructure (gh-aw compiler/runtime versions, container images, and workflow templates), and introduces new shared imports and scheduled workflows to expand automation (file-size hygiene, caveman optimization, maintenance forecasting).
Changes:
- Bumps generated
.lock.ymlworkflows to gh-awv0.74.4/ AWFv0.25.46/ MCPGv0.3.9and updates related runtime wiring. - Adds new shared workflow imports for skipping duplicates, OTLP observability, and safe-outputs GitHub App configuration.
- Adds new scheduled workflows (
daily-file-diet,daily-caveman-optimizer) and extendsagentics-maintenance.ymlwith a newforecastoperation.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/update-docs.lock.yml | Regenerated locked workflow with upgraded gh-aw/AWF/MCP components and updated runtime behavior. |
| .github/workflows/shared/skip-if-issue-open.md | New shared skip guard to prevent duplicate scheduled issues/PRs by title-prefix search. |
| .github/workflows/shared/safe-output-app.md | New shared import intended to centralize safe-outputs GitHub App credentials. |
| .github/workflows/shared/otlp.md | New OTLP observability config (network allowlist + endpoints/headers). |
| .github/workflows/shared/otel.md | New wrapper import intended to enable OTLP observability via a shared include. |
| .github/workflows/go-fan.md | Updates source pin and adds explicit emoji metadata in frontmatter. |
| .github/workflows/daily-security-red-team.lock.yml | Regenerated locked workflow with upgraded gh-aw/AWF/MCP components and updated runtime behavior. |
| .github/workflows/daily-malicious-code-scan.lock.yml | Regenerated locked workflow with upgraded gh-aw/AWF/MCP components and updated runtime behavior. |
| .github/workflows/daily-grumpy-reviewer.lock.yml | Regenerated locked workflow with upgraded gh-aw/AWF/MCP components and updated runtime behavior. |
| .github/workflows/daily-file-diet.md | New daily agentic workflow definition to report oversized Go files (refactoring hygiene). |
| .github/workflows/daily-caveman-optimizer.md | New daily workflow to compress/optimize instruction files in .github/aw and .github/agents. |
| .github/workflows/agentics-maintenance.yml | Regenerated maintenance workflow and adds new forecast operation/job. |
| .github/aw/actions-lock.json | Updates action pins for gh-aw actions and actions/github-script major reference. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comments suppressed due to low confidence (3)
.github/workflows/shared/otel.md:18
shared/otel.mdcurrently importsshared/observability-otlp.md, but that file is empty in this repo, so importingshared/otel.mdwon’t actually enable any OTLP/network config. Pointotel.mdat the real OTLP config file (e.g.,shared/otlp.md) or populateshared/observability-otlp.mdso the import has an effect.
imports:
- shared/observability-otlp.md
---
.github/workflows/daily-file-diet.md:226
- The instructions reference
make test-unit, but the repo Makefile exposesmake test(and notest-unittarget). Update the workflow’s suggested commands to match the repo’s actual Make targets so the agent’s guidance is actionable.
3. **Add Tests First**: Write tests for each new file before refactoring
4. **Incremental Changes**: Split one module at a time
5. **Run Tests Frequently**: Verify `make test-unit` passes after each split
.github/workflows/daily-file-diet.md:238
- The acceptance criteria mention
make build, but this repo’s Makefile doesn’t define abuildtarget (it hasmake all,make test,make lint, etc.). Please update the referenced command(s) to ones that actually exist in this repository.
- [ ] No breaking changes to public API
- [ ] Code passes linting (`make lint`)
- [ ] Build succeeds (`make build`)
- Files reviewed: 23/23 changed files
- Comments generated: 7
| # GH_AW_OTEL_SENTRY_ENDPOINT — Sentry OTLP endpoint URL | ||
| # GH_AW_OTEL_SENTRY_HEADERS — Sentry OTLP authentication headers | ||
| # GH_AW_OTEL_GRAFANA_ENDPOINT — Grafana OTLP endpoint URL | ||
| # GH_AW_OTEL_GRAFANA_HEADERS — Grafana OTLP authentication headers |
| # safe-outputs: | ||
| # github-app: | ||
| # app-id: ${{ vars.APP_ID }} | ||
| # private-key: ${{ secrets.APP_PRIVATE_KEY }} |
| toolsets: [default] | ||
| edit: | ||
| bash: | ||
| - "find pkg -name '*.go' ! -name '*_test.go' -type f -exec wc -l {} \\; | sort -rn" |
| run: bash "${RUNNER_TEMP}/gh-aw/actions/restore_inline_sub_agents.sh" | ||
| - name: Download container images | ||
| run: bash "${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh" ghcr.io/github/gh-aw-firewall/agent:0.25.40@sha256:14ff567e8d9d4c2fbc5e55c973488381c71d7e0fdbe72d30ee7b8a738fd86504 ghcr.io/github/gh-aw-firewall/api-proxy:0.25.40@sha256:2883ca3e5ae9f330cafdd9345bfd4ae17fc8da36c96d4c9a1f76e922b4c45280 ghcr.io/github/gh-aw-firewall/squid:0.25.40@sha256:b084f4a2c771f584ee68084ced52fa6b3245197a1889645d817462d307d3ac51 ghcr.io/github/gh-aw-mcpg:v0.3.6@sha256:2bb8eef86006a4c5963c55616a9c51c32f27bfdecb023b8aa6f91f6718d9171c ghcr.io/github/github-mcp-server:v1.0.3@sha256:2ac27ef03461ef2b877031b838a7d1fd7f12b12d4ace7796d8cad91446d55959 node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f | ||
| run: bash "${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh" ghcr.io/github/gh-aw-firewall/agent:0.25.46 ghcr.io/github/gh-aw-firewall/api-proxy:0.25.46 ghcr.io/github/gh-aw-firewall/squid:0.25.46 ghcr.io/github/gh-aw-mcpg:v0.3.9@sha256:64828b42a4482f58fab16509d7f8f495a6d97c972a98a68aff20543531ac0388 ghcr.io/github/github-mcp-server:v1.0.4 node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f |
| GH_AW_SUB_AGENT_EXT: ".agent.md" | ||
| run: bash "${RUNNER_TEMP}/gh-aw/actions/restore_inline_sub_agents.sh" | ||
| - name: Download container images | ||
| run: bash "${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh" ghcr.io/github/gh-aw-firewall/agent:0.25.40@sha256:14ff567e8d9d4c2fbc5e55c973488381c71d7e0fdbe72d30ee7b8a738fd86504 ghcr.io/github/gh-aw-firewall/api-proxy:0.25.40@sha256:2883ca3e5ae9f330cafdd9345bfd4ae17fc8da36c96d4c9a1f76e922b4c45280 ghcr.io/github/gh-aw-firewall/cli-proxy:0.25.40@sha256:3e7152911d4b4b7b97beef9d3d7d924ff7902227e86001ef3838fb728d5d514c ghcr.io/github/gh-aw-firewall/squid:0.25.40@sha256:b084f4a2c771f584ee68084ced52fa6b3245197a1889645d817462d307d3ac51 ghcr.io/github/gh-aw-mcpg:v0.3.6@sha256:2bb8eef86006a4c5963c55616a9c51c32f27bfdecb023b8aa6f91f6718d9171c ghcr.io/github/github-mcp-server:v1.0.3@sha256:2ac27ef03461ef2b877031b838a7d1fd7f12b12d4ace7796d8cad91446d55959 node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f | ||
| run: bash "${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh" ghcr.io/github/gh-aw-firewall/agent:0.25.46 ghcr.io/github/gh-aw-firewall/api-proxy:0.25.46 ghcr.io/github/gh-aw-firewall/cli-proxy:0.25.46 ghcr.io/github/gh-aw-firewall/squid:0.25.46 ghcr.io/github/gh-aw-mcpg:v0.3.9@sha256:64828b42a4482f58fab16509d7f8f495a6d97c972a98a68aff20543531ac0388 ghcr.io/github/github-mcp-server:v1.0.4 node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f |
| const { main } = require('${{ runner.temp }}/gh-aw/actions/checkout_pr_branch.cjs'); | ||
| await main(); |
| run: bash "${RUNNER_TEMP}/gh-aw/actions/restore_inline_sub_agents.sh" | ||
| - name: Download container images | ||
| run: bash "${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh" ghcr.io/github/gh-aw-firewall/agent:0.25.40@sha256:14ff567e8d9d4c2fbc5e55c973488381c71d7e0fdbe72d30ee7b8a738fd86504 ghcr.io/github/gh-aw-firewall/api-proxy:0.25.40@sha256:2883ca3e5ae9f330cafdd9345bfd4ae17fc8da36c96d4c9a1f76e922b4c45280 ghcr.io/github/gh-aw-firewall/squid:0.25.40@sha256:b084f4a2c771f584ee68084ced52fa6b3245197a1889645d817462d307d3ac51 ghcr.io/github/gh-aw-mcpg:v0.3.6@sha256:2bb8eef86006a4c5963c55616a9c51c32f27bfdecb023b8aa6f91f6718d9171c ghcr.io/github/github-mcp-server:v1.0.3@sha256:2ac27ef03461ef2b877031b838a7d1fd7f12b12d4ace7796d8cad91446d55959 node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f | ||
| run: bash "${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh" ghcr.io/github/gh-aw-firewall/agent:0.25.46 ghcr.io/github/gh-aw-firewall/api-proxy:0.25.46 ghcr.io/github/gh-aw-firewall/squid:0.25.46 ghcr.io/github/gh-aw-mcpg:v0.3.9@sha256:64828b42a4482f58fab16509d7f8f495a6d97c972a98a68aff20543531ac0388 ghcr.io/github/github-mcp-server:v1.0.4 node:lts-alpine@sha256:d1b3b4da11eefd5941e7f0b9cf17783fc99d9c6fc34884a665f40a06dbdfc94f |
Greptile Summary
This PR upgrades the
gh-aw(GitHub Agentic Workflows) tooling from v0.71.5 to v0.74.4 across 23 auto-generated workflow and lock files, and adds a newforecastmaintenance operation.gh-aw-actions/setupandgh-aw-actions/setup-cliaction pins are updated to the new SHA for v0.74.4, andagentics-maintenance.ymlgains aforecast_reportjob and theforecastenum value across its dispatch inputs.DOCKER_HOST, OpenTelemetry parent/span-id propagation,enableTokenSteeringin the API proxy config, and a newGH_AW_MAX_EFFECTIVE_TOKENScap.gh-aw-firewall/agent,api-proxy,squid, andgithub-mcp-server— are now referenced by tag only, dropping the@sha256:digest pins that were present in the v0.71.5 manifests.Confidence Score: 4/5
Safe to merge for functional changes; the dropped container digest pins are worth resolving before this pattern spreads further.
The workflow upgrade is straightforward and the auto-generated files match the new tooling version. The one concrete concern is that four container images — the gh-aw-firewall trio and github-mcp-server — are now referenced by mutable tag rather than the immutable digest pins that existed in the previous version. Everything else (action SHA pins, CLI versions, new forecast job logic) looks consistent and correct.
All regenerated
.lock.ymlfiles that referenceghcr.io/github/gh-aw-firewall/orghcr.io/github/github-mcp-serverimages without@sha256:digests.Security Review
code-simplifier.lock.ymland all other regenerated.lock.ymlfiles):ghcr.io/github/gh-aw-firewall/agent:0.25.46,api-proxy:0.25.46,squid:0.25.46, andghcr.io/github/github-mcp-server:v1.0.4are now pulled by mutable tag rather than immutable SHA digest. If any of these tags are reassigned (accidentally or maliciously), the change would not be caught by the lock file. Previous versions of these same images carried@sha256:pins.Important Files Changed
forecastoperation enum value andforecast_reportjob, and updatesrun_operationconditional to excludeforecast.Sequence Diagram
sequenceDiagram participant User as User / Scheduler participant Dispatch as workflow_dispatch / workflow_call participant PreAct as pre_activation job participant RunOp as run_operation job participant Forecast as forecast_report job (NEW) participant GH as GitHub API User->>Dispatch: "operation = "forecast"" Dispatch->>PreAct: "validate permissions & setup trace" PreAct->>RunOp: "operation check → excluded by new inputs.operation != 'forecast' guard" Note over RunOp: Skipped — forecast is excluded PreAct->>Forecast: "operation == 'forecast' → runs" Forecast->>Forecast: checkout repo Forecast->>Forecast: setup gh-aw-actions v0.74.4 Forecast->>Forecast: check admin/maintainer permissions Forecast->>Forecast: install gh-aw CLI v0.74.4 Forecast->>Forecast: restore forecast logs cache Forecast->>Forecast: gh aw logs (last 30d, 1500 runs) Forecast->>Forecast: gh aw forecast --json → .cache/gh-aw/forecast/report.json Forecast->>Forecast: save forecast logs cache Forecast->>GH: create_forecast_issue.cjs → open GitHub Issue with reportPrompt To Fix All With AI
Reviews (1): Last reviewed commit: "chore: recompile" | Re-trigger Greptile