You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
aw.sh safe-output apply reads allowed-labels as a flat top-level frontmatter key, but issue-triage.md stores the allowed labels under safe-outputs.add-labels.allowed (a nested gh-aw format). Because the flat key is missing, allowed-labels defaults to [], making every label Claude returns "not in allowed set" β causing 100% rejection in the apply job.
Scope
Add allowed-labels and max-labels as flat top-level keys to the issue-triage.md frontmatter so aw.sh can read them correctly; keep the existing safe-outputs structure for gh aw compile compatibility. Add a test that verifies valid labels pass (not just that invalid labels are rejected).
aw.sh safe-output apply reads allowed-labels as a flat top-level key from the workflow frontmatter. issue-triage.md only had the label list under safe-outputs.add-labels.allowed (a nested gh-aw format), so fm.get("allowed-labels", []) returned []. With an empty allowed set, every label Claude returned was flagged as "not in allowed set" β sys.exit(1) β 100% failure of the apply job.
Added Test 6 (red): safe-output apply with valid labels β must see "validation passed" β confirmed failing before fix
Fixed .github/workflows/issue-triage.md: added allowed-labels list and max-labels: 3 as flat top-level frontmatter keys alongside the existing safe-outputs block (kept for gh aw compile compatibility)
All 6 tests green; shellcheck and agent-profile lint clean
The existing Test 2 ("4 labels exceeds max-labels:3 β rejected") was already passing before this fix, but for the wrong reason β all 4 labels were rejected as "not in allowed set" rather than for exceeding the count limit. After the fix it rejects correctly with "more than 3 labels". The safe-outputs nested block is kept in place because gh aw compile (used in lint.yml) may rely on that format; the two representations are consistent.
Activity
don-petry commentedon Jun 8, 2026
Dev-Lead Implementation Plan
Issue: #401 β [Fleet Monitor] petry-projects/.github-private β issue-triage-runner.yml
Root Cause
aw.sh safe-output applyreadsallowed-labelsas a flat top-level frontmatter key, butissue-triage.mdstores the allowed labels undersafe-outputs.add-labels.allowed(a nestedgh-awformat). Because the flat key is missing,allowed-labelsdefaults to[], making every label Claude returns "not in allowed set" β causing 100% rejection in theapplyjob.Scope
Add
allowed-labelsandmax-labelsas flat top-level keys to theissue-triage.mdfrontmatter soaw.shcan read them correctly; keep the existingsafe-outputsstructure forgh aw compilecompatibility. Add a test that verifies valid labels pass (not just that invalid labels are rejected).Implementation Checklist
tests/aw/issue-triage/test_aw_run.shβ add Test 6: valid labels + comment β"validation passed"(red phase).github/workflows/issue-triage.mdβ addallowed-labelslist andmax-labels: 3as flat top-level frontmatter keys (green phase)Tests to Write
safe-output applywith{"labels":["bug","needs-triage"],"comment":"..."}β output contains"validation passed"Test Command
bash tests/aw/issue-triage/test_aw_run.shdon-petry commentedon Jun 8, 2026
Dev-Lead: Implementation Complete
Root Cause
aw.sh safe-output applyreadsallowed-labelsas a flat top-level key from the workflow frontmatter.issue-triage.mdonly had the label list undersafe-outputs.add-labels.allowed(a nestedgh-awformat), sofm.get("allowed-labels", [])returned[]. With an empty allowed set, every label Claude returned was flagged as "not in allowed set" βsys.exit(1)β 100% failure of theapplyjob.Plan Execution
safe-output applywith valid labels β must see"validation passed"β confirmed failing before fix.github/workflows/issue-triage.md: addedallowed-labelslist andmax-labels: 3as flat top-level frontmatter keys alongside the existingsafe-outputsblock (kept forgh aw compilecompatibility)Test Results
Files Changed
.github/workflows/issue-triage.md: addedallowed-labels(7-item list) andmax-labels: 3as flat top-level frontmatter keys; existingsafe-outputsblock retained unchangedtests/aw/issue-triage/test_aw_run.sh: added Test 6 β verifies valid labels passsafe-outputvalidation (regression guard)Notes
The existing Test 2 ("4 labels exceeds max-labels:3 β rejected") was already passing before this fix, but for the wrong reason β all 4 labels were rejected as "not in allowed set" rather than for exceeding the count limit. After the fix it rejects correctly with "more than 3 labels". The
safe-outputsnested block is kept in place becausegh aw compile(used inlint.yml) may rely on that format; the two representations are consistent.feat: implement issue #401 β [Fleet Monitor] petry-projects/.github-pβ¦
feat: implement issue #401 β [Fleet Monitor] petry-projects/.github-pβ¦
feat: implement issue #401 β [Fleet Monitor] petry-projects/.github-pβ¦
feat: implement issue #401 β [Fleet Monitor] petry-projects/.github-pβ¦
feat: implement issue #401 β [Fleet Monitor] petry-projects/.github-pβ¦
feat: implement issue #401 β [Fleet Monitor] petry-projects/.github-pβ¦