githubnext / githubnext/gh-aw-cao
[aw-doctor:compiler-security] actionlint strict-mode failures (152 errors, 32 lock files) block full compiler/security scan
- Dominant language
- JavaScript
- Stars
- 3
- Forks
- 1
- Avg merge
- 49m
- Merged PRs (30d)
- 837
Description
Compiling all 43 GitHub Agentic Workflow sources in `githubnext/gh-aw-cao` with strict-mode validation succeeded, but `actionlint` (run as part of the compiler's lint suite) reported **152 errors** across **32 generated `.lock.yml` files**, causing the compile-and-scan pipeline to fail before the container/security-scanner stage (zizmor, poutine, runner-guard, grant, grype, syft) could run. All findings are `error`-severity per actionlint; no severity levels beyond "error" are reported by this tool. Highest-return fix: correct `github.aw.*` and dispatch-envelope (`central_repo`, `correlation_id`, `control_plane_run_url`, `max_repos`, `rollout_percent`) property references and the `steps.*-app-token.outputs.token` conditionals so the strict-mode compile passes, then re-run the full scanner chain.
**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` (actionlint strict-mode failures; container/dependency/security scanners did not run because the pipeline stopped at the lint gate)
| Tool | Workflow(s) | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint (expression) | 32 files incl. `uk-ai-advisory.lock.yml`, `optimization*.lock.yml`, `self-care*.lock.yml`, `eu-cra-compliance*.lock.yml`, `software-development-practices*.lock.yml` (33 occurrences) | error | `github.aw.import-inputs.*` referenced but `aw` is not a defined property on the GitHub context object | Fix the Markdown source's use of `github.aw.*` context access (likely should read from `inputs.*`/`env.*` or a defined `outputs.aw` step output instead of a non-existent `github.aw` context field) |
| actionlint (expression) | orchestrator/dispatch workflows, e.g. `uk-ai-advisory.lock.yml` (24 occurrences) | error | `rollout_percent` referenced on the dispatch-envelope object, which does not declare that property | Add `rollout_percent` to the shared dispatch-envelope input schema (`.github/workflows/shared/control.md` or equivalent), or remove the reference if unused |
| actionlint (expression) | same dispatch workflows (24 occurrences) | error | `max_repos` referenced on the dispatch-envelope object, which does not declare that property | Add `max_repos` to the shared dispatch-envelope input schema, or remove the reference if unused |
| actionlint (expression) | 9 workflows incl. `aw-doctor.lock.yml` | error | `steps.github-mcp-app-token.outputs.token` referenced, but that step ID is not defined in the referenced job/step map | Correct the step ID reference to the actual `github-mcp-app-token` step, or add the missing step, in the Markdown source |
| actionlint (expression) | 7 workflows incl. `uk-ai-advisory.lock.yml` | error | `correlation_id` referenced but not declared on the dispatch-envelope object | Add `correlation_id` to the shared dispatch-envelope schema |
| actionlint (expression) | 7 workflows incl. `uk-ai-advisory.lock.yml` | error | `control_plane_run_url` referenced but not declared on the dispatch-envelope object | Add `control_plane_run_url` to the shared dispatch-envelope schema |
| actionlint (expression) | 7 workflows incl. `uk-ai-advisory.lock.yml` | error | `central_repo` referenced but not declared on the dispatch-envelope object | Add `central_repo` to the shared dispatch-envelope schema |
| actionlint (expression) | 2 workflows (`gh_aw_release_cache` job map) | error | `steps.github-mcp-app-token.outputs.token` referenced, step not defined in that job's step map | Same as above — correct/add the step ID |
| actionlint (expression) | 1 workflow | error | `steps.safe-outputs-app-token.outputs.token` referenced, step not defined in the referenced job's step map | Correct/add the `safe-outputs-app-token` step reference |
| actionlint (shellcheck SC2129) | 34 occurrences across the same lock files | error (style) | "Consider using `{ cmd1; cmd2; } >> file` instead of individual redirects" in generated run scripts | Combine repeated `>>` redirects into a single grouped block in the Markdown source's embedded shell script |
Container image scanning (grype/syft), license scanning (grant), and taint analysis (poutine/runner-guard/zizmor) evidence is **not present** in the captured report — the pipeline halted at the actionlint gate before those stages executed. This is reported as part of the `findings` result, not asserted as separately clean.
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
```
Terminal result:
```
✗ actionlint failed
strict mode: actionlint found 152 errors in workflows - workflows must have no actionlint errors in strict mode
```
Representative excerpt (first offending lines):
```
.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-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...}
if: ${{ always() && github.aw.import-inputs.role == 'orchestrator' }}
.github/workflows/uk-ai-advisory.lock.yml:1401:9: error: [shellcheck] SC2129:style: Consider using { cmd1; cmd2; } >> file instead of individual redirects
.github/workflows/uk-ai-advisory.lock.yml:1544:39: error: [expression] property "central_repo" is not defined in object type {aw_context, max_repos, rollout_percent, safe_output_mode, safe_output_repo, target_repo}
CAO_CENTRAL_REPOSITORY: ${{ github.event.inputs.central_repo || '' }}
```
No token-like or credential-like values were present in the captured output.
Control plane context
- Correlation ID: `33987941794-26`
- Central repository: `githubnext/gh-aw-cao`
- Control plane run URL: https://github.com/githubnext/gh-aw-cao/actions/runs/33987941794
> Generated by [:shield: AW Doctor / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/33988111361) · copilot · auto · 35.7 AIC · ⌖ 10.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 19, 2026, 7:52 PM UTC
Contributor guide
Research direction
Read the affected .github/workflows/*.md sources and the shared dispatch-envelope schema in .github/workflows/shared/control.md or its equivalent; do not edit generated .lock.yml files. Run gh aw compilation with strict validation to reproduce the actionlint and shellcheck findings, then verify the full compiler and security scanner chain completes 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
- 38/100