githubnext / githubnext/gh-aw-cao
[aw-doctor:compiler-security] gh-aw compiler strict-mode validation failing across 33 workflows (152 actionlint errors)
- Dominant language
- JavaScript
- Stars
- 3
- Forks
- 1
- Avg merge
- 49m
- Merged PRs (30d)
- 837
Description
Compiling all 43 workflow sources in `githubnext/gh-aw-cao` with `gh aw compile --strict --actionlint` exits non-zero: actionlint reports **152 errors** across **33 generated `.lock.yml` files**, plus 34 shellcheck style findings. No container/image or dependency-vulnerability scan output was reached because the compiler step itself failed. Highest-confidence root cause: several `github.aw.*` / `github-mcp-app-token` expression references and control-plane envelope fields (`central_repo`, `control_plane_run_url`, `correlation_id`, `max_repos`, `rollout_percent`) are referenced in generated workflows without being declared in the corresponding step's `outputs`/context type, which actionlint's strict expression checker rejects as undefined properties.
**Action:** Assign this issue to Copilot using **Agent prompt** below; review its pull request and merge only after the full compiler and security scan passes.
Failure details
- **Target repository**: `githubnext/gh-aw-cao`
- **Compiler exit code**: `1`
- **Workflow sources checked**: `43`
- **Generated lock files checked**: `43`
- **Result**: `findings`
| Tool | Workflow(s) | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint (expression) | 33 lock files (e.g. `aw-doctor`, `aw-failures-investigator`, `aw-maintenance-compiler-security`, `aw-maintenance-upgrade`, `dependabot`, `dependabot-release-train-updater`, `eu-cra-compliance-*`, `software-development-practices*`, `uk-ai-advisory*`) | unknown (actionlint error, strict mode = build-breaking) | `property "aw" is not defined` — `if: ${{ always() && github.aw.import-inputs.role == 'orchestrator' }}` references `github.aw.*` which isn't in the typed `github` context | Fix in the shared control `.md` source (`.github/workflows/shared/control.md`) that emits this expression; either declare `github.aw` via an `env:`/`needs.*.outputs` indirection or use a supported context path instead of `github.aw.*` |
| actionlint (expression) | Same 33 files | unknown | `property "central_repo"/"control_plane_run_url"/"correlation_id"` not defined on the `github.event.inputs` object type used for `CAO_CENTRAL_REPOSITORY`/`CAO_CONTROL_PLANE_RUN_URL`/`CAO_CORRELATION_ID` env assignments | Add these fields to the `workflow_dispatch.inputs` schema (or the correct inputs object) in the shared dispatch source so the generated type includes them |
| actionlint (expression) | Same 33 files | unknown | `property "max_repos"/"rollout_percent"` not defined on inputs object type used for `CAO_REQUESTED_MAX_REPOSITORIES`/`CAO_REQUESTED_ROLLOUT_PERCENT` | Same as above — extend the shared inputs declaration |
| actionlint (expression) | `aw-doctor`, `aw-failures-investigator`, `aw-maintenance-upgrade`, `uk-ai-advisory-operational-resilience` (11 occurrences) | unknown | `property "github-mcp-app-token" is not defined` on a step-outputs object that doesn't include that step | The referencing step's `needs`/prior-step id doesn't match; verify the step id `github-mcp-app-token` exists and is wired into the same job before the reference, or correct the referenced step id |
| actionlint (expression) | 1 occurrence | unknown | `property "safe-outputs-app-token" is not defined` | Same category — verify step id/context reference |
| actionlint (shellcheck SC2129) | 34 lock files, one `run:` block each | style | Multiple individual `>> file` redirects instead of `{ cmd1; cmd2; } >> file` | Consolidate redirect style in the shared shell-script template used to generate these `run:` blocks |
Note: because the compile step failed before container/dependency scanning, no grype/syft/grant/poutine/runner-guard/zizmor findings were captured in this run's evidence; only actionlint (with shellcheck) output is present in `report.txt`.
Agent prompt
1. Assign this issue to Copilot.
2. Configure its MCP client to launch `gh aw mcp-server` over stdio from the target repository, then give it the prompt below. Require the server's `fix` and `compile` tools; never allow direct edits to generated `.lock.yml` files.
3. Review the resulting pull request and require the same full compiler and security scan to pass before merge. If a finding needs human action, require the agent to stop and explain it.
**Agent prompt**
Fix the reported gh-aw compiler and security findings in this repository. Change only `.github/workflows/*.md` sources and directly related files; never edit generated `.lock.yml` files. Use the gh-aw MCP server's `fix` and `compile` tools, rerunning compilation with strict validation, model checks, actionlint, shellcheck, yamllint, zizmor, poutine, runner-guard, grant, grype, and syft until clean. Review generated lock-file diffs, preserve existing behavior, and stop with a concise explanation if a finding cannot be fixed safely.
Raw evidence
Compiler summary:
```
Target: githubnext/gh-aw-cao
Exit code: 1
Workflow sources: 43
Compiled locks: 43
```
Error-type frequency (from `actionlint` strict-mode output, 152 total errors across 33 lock files):
```
33 property "aw" is not defined
26 property "rollout_percent" is not defined
26 property "max_repos" is not defined
11 property "github-mcp-app-token" is not defined
7 property "correlation_id" is not defined
7 property "control_plane_run_url" is not defined
7 property "central_repo" is not defined
1 property "safe-outputs-app-token" is not defined
34 shellcheck SC2129 (style, redirect consolidation)
```
Final actionlint line: `✗ actionlint failed — strict mode: actionlint found 152 errors in workflows - workflows must have no actionlint errors in strict mode`
No secret-like or token-like values were present in the captured evidence.
Control plane context
- Correlation ID: `34046507853-378`
- Central repository: `githubnext/gh-aw-cao`
- Control plane run URL: `https://github.com/githubnext/gh-aw-cao/actions/runs/34046507853`
> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/34046507853) · copilot · auto · 41.2 AIC · ⌖ 12.2 AIC · ⊞ 14.2K · [◷](https://github.com/search?q=repo%3Agithubnext%2Fgh-aw-cao+is%3Aissue+%22gh-aw-workflow-call-id%3A+githubnext%2Fgh-aw-cao%2Faw-maintenance-compiler-security%22&type=issues)
> - [x] expires on Sep 20, 2026, 4:52 PM UTC
Contributor guide
Research direction
Start with .github/workflows/shared/control.md and the shared shell-script template identified in the findings, then run `gh aw compile --strict --actionlint` to reproduce the errors. Trace the undefined contexts and step references in the generated lock-file diffs without editing those files; done means strict compilation and the listed security scans complete successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, shell
- Domain
- ci-cd, devtools, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100