githubnext / githubnext/gh-aw-cao
[aw-doctor:compiler-security] Compiler run failed — actionlint strict mode: 152 errors across 33 generated workflows
- Dominant language
- JavaScript
- Stars
- 3
- Forks
- 1
- Avg merge
- 49m
- Merged PRs (30d)
- 837
Description
Compiling all 43 `.github/workflows/*.md` sources in `githubnext/gh-aw-cao` (target SHA `4040c82`) succeeded, but strict-mode `actionlint` validation of the generated lock files failed with **152 errors across 33 workflows**, plus 1 pre-existing policy warning. Highest-confidence root cause: several generated `github.event.inputs.*` and `github.aw.*` expression references are not defined in the GitHub Actions context schema actionlint validates against — these are compiler-generated expression errors, not user workflow bugs, and block strict-mode compilation. No container/vulnerability scanner findings (zizmor/poutine/grype/syft/runner-guard/grant) appeared in this run's evidence.
**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 | 33 lock files (11 occurrences) | unknown (blocking, strict mode) | `github-mcp-app-token` output referenced but not defined in step output type — generated conditional/output wiring mismatch | Fix the `.md` source's step-output reference for the GitHub MCP app-token step so its schema matches what's emitted before compiling |
| actionlint | 33 lock files (33 occurrences) | unknown (blocking, strict mode) | `github.aw.import-inputs.role` referenced — `aw` is not a defined property of the `github` context | Replace/guard the custom `github.aw.*` expression with a supported context path (e.g. an `env`/`steps.output` passthrough) in the shared control source |
| actionlint (shellcheck) | 33 lock files (34 occurrences) | unknown (style) | SC2129: repeated individual `>>` redirects instead of one grouped `{ ...; } >> file` | Consolidate redirect block in the generated shell step's source |
| actionlint | 33 lock files (26 occurrences) | unknown (blocking, strict mode) | `github.event.inputs.max_repos` not defined on this workflow's inputs type | Ensure `max_repos` is declared in `workflow_dispatch.inputs` wherever it's referenced |
| actionlint | 33 lock files (26 occurrences) | unknown (blocking, strict mode) | `github.event.inputs.rollout_percent` not defined | Declare `rollout_percent` in `workflow_dispatch.inputs` wherever referenced |
| actionlint | 7 lock files | unknown (blocking, strict mode) | `github.event.inputs.central_repo` not defined | Declare `central_repo` input or adjust the shared dispatch envelope schema |
| actionlint | 7 lock files | unknown (blocking, strict mode) | `github.event.inputs.control_plane_run_url` not defined | Declare `control_plane_run_url` input consistently across dispatch envelope |
| actionlint | 7 lock files | unknown (blocking, strict mode) | `github.event.inputs.correlation_id` not defined | Declare `correlation_id` input consistently across dispatch envelope |
| gh-aw guard (policy dry-run, pre-existing) | pr-reviewer.md | low | `push-to-pull-request-branch: target: "*"` allows pushing to any PR branch with no `required-title-prefix`/`required-labels` constraint | Add `required-title-prefix:` or `required-labels:` to scope the push target |
All actionlint findings above are duplicated across the affected lock files because they stem from the same shared control workflow source (`.github/workflows/shared/control.md` and its dependencies) rather than 33 independent bugs.
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
```
Sample actionlint errors (deduplicated by pattern, full detail in the workflow run artifacts):
```
.github/workflows/aw-doctor.lock.yml:478:29: error: [expression] property "github-mcp-app-token" is not defined in object type {...}
478 | github-token: ${{ steps.github-mcp-app-token.outputs.token || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
.github/workflows/aw-doctor.lock.yml:1187:29: error: [expression] property "aw" is not defined in object type {... github context fields ...}
1187 | if: ${{ always() && github.aw.import-inputs.role == 'orchestrator' }}
.github/workflows/aw-doctor.lock.yml:1505:9: error: [shellcheck] SC2129:style: Consider using { cmd1; cmd2; } >> file instead of individual redirects
.github/workflows/aw-doctor.lock.yml:1628:39: error: [expression] property "central_repo" is not defined in object type {aw_context: string; max_repos: string; rollout_percent: string; safe_output_mode: string; safe_output_repo: string; target_repo: string}
1628 | CAO_CENTRAL_REPOSITORY: ${{ github.event.inputs.central_repo || '' }}
.github/workflows/aw-doctor.lock.yml:1629:42: error: [expression] property "control_plane_run_url" is not defined
.github/workflows/aw-doctor.lock.yml:1630:35: error: [expression] property "correlation_id" is not defined
```
Final compiler verdict:
```
✗ actionlint failed
strict mode: actionlint found 152 errors in workflows — workflows must have no actionlint errors in strict mode
```
Affected lock files (33): `aw-doctor`, `aw-failures-investigator`, `aw-maintenance-compiler-security`, `aw-maintenance-upgrade`, `dependabot-release-train-updater`, `dependabot`, `eu-cra-compliance-*` (7 variants), `optimization*` (5 variants), `self-care*` (9 variants), `software-development-practices*` (3 variants), `uk-ai-advisory*` (2 variants).
No zizmor, poutine, grype, syft, runner-guard, or grant findings appeared in the captured report output for this run.
`git-status.txt` and `diff-stat.txt` were empty (no working-tree changes recorded by the deterministic step).
Control plane context
- Correlation ID: `34061892998-52`
- Central repository: `githubnext/gh-aw-cao`
- Control plane run URL: https://github.com/githubnext/gh-aw-cao/actions/runs/34061892998
> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/34062082652) · copilot · auto · 39.7 AIC · ⌖ 13.8 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, 9:54 PM UTC
Contributor guide
Research direction
Start with .github/workflows/shared/control.md and its dependencies, not the generated .lock.yml files. Use the gh aw MCP server's fix and compile tools, then run strict compilation and the listed security and lint checks. Done means the generated workflows pass actionlint and the full compiler/security scan without new findings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, javascript, markdown
- Domain
- ci-cd, devops, security, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100