githubnext / githubnext/gh-aw-cao
[aw-doctor:compiler-security] Compiler strict-mode validation failing: 152 actionlint errors across 33 lock files
- Dominant language
- JavaScript
- Stars
- 3
- Forks
- 1
- Avg merge
- 49m
- Merged PRs (30d)
- 837
Description
Compiling all 43 gh-aw workflow sources in `githubnext/gh-aw-cao` with strict mode failed (exit code 1). `actionlint` reported **152 errors** across **33** generated `.lock.yml` files: 118 `[expression]` errors (undefined context properties) and 34 `[shellcheck]` style warnings (SC2129). No vulnerable-container, license, or additional security-scanner results are available because compilation aborted before those scanners ran. Highest-severity supported finding: strict-mode compiler errors blocking all downstream security scanning (zizmor, poutine, runner-guard, grype, syft never executed).
**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` (33 with findings)
- **Result**: `findings` (scan incomplete beyond actionlint — later scanners did not run)
| Tool | Workflow(s) | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint [expression] | 33 lock files (e.g. aw-doctor, aw-failures-investigator, aw-maintenance-upgrade, optimization-*, uk-ai-advisory*, eu-cra-compliance*, self-care*, software-development-practices) | unknown | `property "aw" is not defined` on `github.aw.import-inputs.role` (33 occurrences) — orchestrator role check references an undefined `github.aw` context property | Replace `github.aw.import-inputs.role` references with a supported expression/output (e.g. a step output or `env`) instead of a non-existent `github.aw` context field in the `.md` workflow source |
| actionlint [expression] | 26 lock files | unknown | `property "max_repos" is not defined` on `github.event.inputs.max_repos` (workflow_dispatch input not declared) | Declare `max_repos` in the workflow's `on.workflow_dispatch.inputs`, or reference the actual input name, in the `.md` source |
| actionlint [expression] | 26 lock files | unknown | `property "rollout_percent" is not defined` on `github.event.inputs.rollout_percent` | Declare `rollout_percent` in `on.workflow_dispatch.inputs` or fix the reference in the `.md` source |
| actionlint [expression] | 11 lock files (e.g. uk-ai-advisory-operational-resilience, aw-doctor) | unknown | `property "github-mcp-app-token" is not defined` on step-outputs object that lacks that step id | Ensure the referenced step id (`github-mcp-app-token`) actually exists in the job, or correct the step-output reference in the `.md` source |
| actionlint [expression] | 7 lock files | unknown | `property "central_repo" is not defined` on `github.event.inputs.central_repo` | Declare `central_repo` in `on.workflow_dispatch.inputs` |
| actionlint [expression] | 7 lock files | unknown | `property "control_plane_run_url" is not defined` on `github.event.inputs.control_plane_run_url` | Declare `control_plane_run_url` in `on.workflow_dispatch.inputs` |
| actionlint [expression] | 7 lock files | unknown | `property "correlation_id" is not defined` on `github.event.inputs.correlation_id` | Declare `correlation_id` in `on.workflow_dispatch.inputs` |
| actionlint [expression] | 1 lock file | unknown | `property "safe-outputs-app-token"` step-output reference not defined | Correct the step id reference in the `.md` source |
| actionlint [shellcheck] SC2129 | 34 occurrences across 33 lock files | style | "Consider using `{ cmd1; cmd2; } >> file` instead of individual redirects" in generated `run:` scripts | Fix the shell script template(s) in gh-aw's control/shared workflow steps (likely `.github/workflows/shared/control.md` or equivalent shared script) to batch redirects into a single group |
Because compilation failed in strict mode, the compiler did not proceed to run zizmor, poutine, runner-guard, grant, grype, or syft on the generated locks — those tool results are unavailable for this run.
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
Summary from deterministic compiler step:
```
Target: githubnext/gh-aw-cao
Exit code: 1
Workflow sources: 43
Compiled locks: 43
```
Sample errors (representative, full report is 810 lines / 106KB):
```
.github/workflows/aw-doctor.lock.yml:478:29: error: [expression] property "github-mcp-app-token" is not defined in object type {set-runtime-paths: {...}; setup: {...}}
.github/workflows/software-development-practices.lock.yml:1135:29: error: [expression] property "aw" is not defined in object type {action: string; ...}
1135 | if: ${{ always() && github.aw.import-inputs.role == 'orchestrator' }}
.github/workflows/uk-ai-advisory-operational-resilience.lock.yml:1740:47: error: [expression] property "max_repos" is not defined in object type {aw_context: string; batch_label: string; central_repo: string; ...}
1740 | CAO_REQUESTED_MAX_REPOSITORIES: ${{ github.event.inputs.max_repos || '' }}
.github/workflows/software-development-practices.lock.yml:1453:9: error: [shellcheck] shellcheck reported issue in this script: SC2129:style:7:1: Consider using { cmd1; cmd2; } >> file instead of individual redirects
```
Final compiler verdict:
```
✗ actionlint failed
strict mode: actionlint found 152 errors in workflows - workflows must have no actionlint errors in strict mode
```
No token-like or credential-like values were present in the excerpted output.
Control plane context
- Correlation ID: `33990918464-27`
- Central repository: `githubnext/gh-aw-cao`
- Control plane run URL: https://github.com/githubnext/gh-aw-cao/actions/runs/33990918464
> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/33991106075) · copilot · auto · 38.3 AIC · ⌖ 8.28 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 19, 2026, 8:52 PM UTC
Contributor guide
Research direction
Start with the reported strict compilation for the 43 workflow sources and inspect the affected `.github/workflows/*.md` files, especially `.github/workflows/shared/control.md` or its equivalent. Use the gh-aw MCP `fix` and `compile` entry points without editing generated `.lock.yml` files; done means strict compilation and the listed model, actionlint, shellcheck, yamllint, and security scans complete successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, markdown, shell
- Domain
- ci-cd, devops, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100