githubnext / githubnext/gh-aw-cao

[aw-maintenance:compiler-security] actionlint strict-mode failures block compile (144 errors, 6 categories) — githubnext/gh-aw-cao

Closed
#1,163 0 comments 0 reactions 0 assignees View on GitHub
aw-maintenance aw-maintenance:compiler-security security
Dominant language
JavaScript
Stars
3
Forks
1
Avg merge
49m
Merged PRs (30d)
837

Description

**Target:** `githubnext/gh-aw-cao` · **Compiler exit code:** `1` · **Workflow sources checked:** 38 · **Generated lock files checked:** 38 · **Result:** findings

Compilation stopped at the actionlint stage in strict mode (144 errors across 31 generated `.lock.yml` files, spanning 6 distinct property/expression patterns plus 1 shellcheck style rule). Because actionlint failed before the security-scanner stage, zizmor, poutine, runner-guard, grant, grype, and syft did not run in this pass — their results are unknown, not clean. Highest-priority root cause: the shared control-plane import (`shared/control.md`) references context properties (`github.aw.*`, `steps.github-mcp-app-token.outputs.token`, and dispatch-input fields `max_repos`, `rollout_percent`, `central_repo`, `control_plane_run_url`, `correlation_id`) that aren't declared in the generated workflow's typed context, likely a schema/typing drift between the shared import template and the compiler's actionlint context model. Recommended next action: fix the shared control template (or its generated `github.event.inputs`/context typing) so these properties are declared, then re-run the full compile+scan suite.

### Findings

| Tool | Workflow / Image | Severity | Finding | Remediation |
|---|---|---|---|---|
| actionlint (expression) | 31 lock files (e.g. `ambient-context-agents-md-curator.lock.yml:1191`, `uk-ai-advisory.lock.yml:1134`) | unknown | `property "aw" is not defined` on `github.aw.import-inputs.role` checks | Ensure `github.aw` context is declared/typed for workflows using the shared control import, or replace with a supported context expression |
| actionlint (expression) | 23 lock files | unknown | `property "max_repos" is not defined` on `github.event.inputs.max_repos` | Declare `max_repos` in the `workflow_dispatch.inputs` schema for affected workflows |
| actionlint (expression) | 23 lock files | unknown | `property "rollout_percent" is not defined` on `github.event.inputs.rollout_percent` | Declare `rollout_percent` in the `workflow_dispatch.inputs` schema |
| actionlint (expression) | 8 lock files | unknown | `property "central_repo" is not defined` on `github.event.inputs.central_repo` | Declare `central_repo` in the `workflow_dispatch.inputs` schema |
| actionlint (expression) | 8 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 the `workflow_dispatch.inputs` schema |
| actionlint (expression) | 8 lock files | unknown | `property "correlation_id" is not defined` on `github.event.inputs.correlation_id` | Declare `correlation_id` in the `workflow_dispatch.inputs` schema |
| actionlint (expression) | 11 lock files | unknown | `property "github-mcp-app-token" is not defined` on `steps.github-mcp-app-token.outputs.token` | Ensure the `github-mcp-app-token` step ID exists in the same job before this reference, or gate the reference behind a conditional matching the step's actual outputs type |
| actionlint (shellcheck SC2129) | 32 occurrences (31 files at line ~7, 1 file at line ~95) | style | "Consider using `{ cmd1; cmd2; } >> file` instead of individual redirects" in generated run scripts | Update the source `.md` workflow's embedded shell script (or the compiler's script-generation template) to batch appends into a single grouped redirect |

Because the run stopped at actionlint, no container/license scan (grype/syft/grant) or SAST (zizmor/poutine/runner-guard) results are available for this pass.

### Local fixing loop

1. Install or update the gh-aw extension, then configure the coding agent's MCP client to launch `gh aw mcp-server` over stdio from the target repository.
2. Give the agent the prompt below and require it to use the `fix` and `compile` MCP tools rather than editing generated `.lock.yml` files.
3. Require the agent to repeat the same full compiler validation and security scan until it passes, or stop and explain any finding that needs human action.

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 compiler summary

```
Target: githubnext/gh-aw-cao
Exit code: 1
Workflow sources: 38
Compiled locks: 38
```

No git diff/status changes were produced (dry-run compile only; no repo mutations).

Bounded raw actionlint output (first errors, truncated)

```
.github/workflows/ambient-context-agents-md-curator.lock.yml:531: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/ambient-context-agents-md-curator.lock.yml:1191:29: error: [expression] property "aw" is not defined in object type {...}
if: ${{ always() && github.aw.import-inputs.role == 'orchestrator' }}

.github/workflows/ambient-context-agents-md-curator.lock.yml:1821:9: error: [shellcheck] SC2129:style:7:1: Consider using { cmd1; cmd2; } >> file instead of individual redirects

.github/workflows/ambient-context-agents-md-curator.lock.yml:1853:47: error: [expression] property "max_repos" is not defined in object type {...}
CAO_REQUESTED_MAX_REPOSITORIES: ${{ github.event.inputs.max_repos || '' }}
```

Final line: `✗ actionlint failed — strict mode: actionlint found 144 errors in workflows - workflows must have no actionlint errors in strict mode`

### Control Plane
- Correlation ID: `33834075588-34`
- Central repository: `githubnext/gh-aw-cao`
- Control plane run URL: https://github.com/githubnext/gh-aw-cao/actions/runs/33834075588

> Generated by [:shield: AW Maintenance / Compiler Security](https://github.com/githubnext/gh-aw-cao/actions/runs/33834338759) · copilot · auto · 24.3 AIC · ⌖ 6.85 AIC · ⊞ 13.9K · [◷](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 18, 2026, 3:52 AM UTC

Contributor guide

Open the contributing guide

Research direction

Start with shared/control.md and the .github/workflows/*.md source files; do not edit generated .lock.yml files. Run the gh-aw compile flow in strict mode and inspect the generated actionlint errors, then rerun the full validation and security scan suite. Done means the 38 workflows compile without actionlint or shellcheck findings and the listed scanners complete successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, javascript, shell
Domain
build-system, ci-cd, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.