Repository navigation
Description
Found by queue task 3291 (lane E) while landing the #1996 mcpx lint leg (PR #2718). Running actionlint repo-wide (which #1996 does NOT ask for — it assigns actionlint the mcpx workflow set) reports findings in workflows outside that set. The mcpx leg was therefore scoped to .github/workflows/mcpx*.yml with shellcheck -S warning; these repo-wide findings are filed here instead of being fixed inside the #1996 slice (same treatment as the golangci findings -> #2836).
Findings (actionlint from nixpkgs, run 2026-10-30 on main @ merged PR #2718 head):
.github/workflows/jules-daily-codebase-ideation.yml:25,jules-daily-flake-sync.yml:27,jules.yml:54,87,121— syntax-check: unexpected key "queue" for "concurrency" section (expected "cancel-in-progress", "group"). Either the workflows use a concurrency key this actionlint does not know, or the key is invalid — needs a verdict against current GitHub Actions schema + the pinned actionlint version..github/workflows/flake-inputs-update.yml:139— SC2129 style: multiple redirects to the same file in one run block..github/workflows/main-broken.yml:97— SC2016 info x2 (expressions in single quotes inside a run block)..github/workflows/mcpx-docs.yml:114— SC2016 info. (In the mcpx glob, but info-level; the leg runs shellcheck at -S warning.)- Stress steps in
mcpx.yml(from main) — SC2086 info x5: intentional word splitting (go test $unit,-shuffle=$seed,for d in $(...)); quoting would break them. If a repo-wide actionlint leg is ever wanted, these need explicit# shellcheck disable=SC2086annotations with justification, not quotes.
Acceptance: a decision on the jules concurrency.queue keys (fix workflows or pin/upgrade actionlint and re-check), and either fixes or explicit waivers (actionlint.yaml ignore patterns / shellcheck directives) for the rest — or a documented wontfix with the reasoning on this issue.
Acceptance criteria
- Each repo-wide actionlint finding outside the mcpx workflow set has a verdict: fixed, or confirmed as a false positive of the pinned actionlint version against the current GitHub Actions schema (the jules*.yml / jules.yml concurrency.queue keys first)
- flake-inputs-update.yml SC2129 and the SC2016 info findings in main-broken.yml / mcpx-docs.yml are fixed or explicitly dispositioned as intentional
- The intentional SC2086 word-splitting sites in mcpx.yml stress steps are annotated/dispositioned so a repo-wide actionlint run is clean or carries only documented suppressions
- The mcpx testing: every formatter and linter in the CI matrix, pinned by the flake (and run the plugin's bun test) #1996 mcpx lint leg's scope (mcpx*.yml, shellcheck -S warning) is unchanged by this work
Activity
dezren39 commentedon Oct 30, 2026
Intake review
Fleet monitor intake pass (protocol §5). Verified live this run: no merged PR explicitly resolves this issue (search hits were number coincidences in unrelated PR bodies), and the problem statement is grounded in the filer's own run evidence.
Related: Related: issue #1996 / PR #2718 (the mcpx lint leg that surfaced these), issue #2836 (the golangci sibling follow-up from the same leg).
Notes / risks / suggested approach: The jules concurrency.queue keys need a schema verdict first — if the key is genuinely invalid, those workflows may be silently running without the intended queueing, which would raise the priority. The shellcheck items are style/info and low risk. Suggested approach: verdict on concurrency.queue against the current Actions schema + pinned actionlint, then batch the trivial SC fixes.
dezren39 commentedon Nov 3, 2026
Triage (queue task 7995,
repo-health-code-pilot) — still live, with a split verdict: theconcurrency.queuefindings are a tool false positive; the shellcheck findings are real but style/info and mostly intentional.Fresh run at main
1e3763fa(2026-11-03),actionlint 1.7.12from current nixpkgs,-shellcheck "shellcheck"(all severities):jules-daily-codebase-ideation.yml:25,jules.yml:51,84,118—concurrency.queueconcurrency.queuewithsingle(default) /max(up to 100 pending) — verified on docs.github.com 2026-11-03.queue: maxis valid; actionlint 1.7.12 (current nixpkgs) has not picked the key up. No workflow change.flake-inputs-update.yml:140— SC2129 style$GITHUB_OUTPUTwith three separateecho >>calls; group them in one{ ...; } >> "$GITHUB_OUTPUT".main-broken.yml:97— SC2016 info ×2jq/gh --jqprograms in single quotes. Disposition as false positive via a# shellcheck disable=SC2016directive, not by quoting.mcpx-docs.yml:108— SC2016 infomcpx.yml:311SC2016,mcpx.yml:462SC2086 ×4,mcpx.yml:526SC2086,mcpx-test.yml:108SC2086mcpx-test.yml:108is new (not in the original list)go test $unit,-shuffle=$seed,for d in $(...)) — quoting would break them. The #1996 leg runsshellcheck -S warning, so info/style never gate today. Disposition as annotations with justification if a repo-wide info-level leg is ever wanted.Scoped fix path (one
effort/sPR, 4 files, no behaviour change):flake-inputs-update.yml— group the three$GITHUB_OUTPUTwrites (SC2129).# shellcheck disable=SC2016/disable=SC2086directives with a one-line justification at the 9 intentional sites above (main-broken.yml,mcpx-docs.yml,mcpx.yml×3 blocks,mcpx-test.yml).queuekey (anactionlint.yamlignore scoped tojules*.yml/jules.yml, messageunexpected key "queue" for "concurrency" section) until actionlint ships support — an upstream bump is the real fix. The mcpx testing: every formatter and linter in the CI matrix, pinned by the flake (and run the plugin's bun test) #1996 mcpx leg's scope (mcpx*.yml,-S warning) must stay unchanged, per the issue's own acceptance.Ordering / blockers: none — this is independent of any other queue work and needs no access. Left open with
status/triagedso the small annotation fix can be queued when priority/low comes up; if the repo decides not to add a repo-wide info-level leg, the dispositions above are the documented wontfix the issue's acceptance allows.20 remaining items
dezren39 commentedon Nov 4, 2026
Picked up as queue task 8626 on lane
bf419306-c4ef-470f-a553-beabf93239de. Checkpointed before further action. No files were changed.dezren39 commentedon Nov 4, 2026
Parked task 8626 for 20 minutes after the queue helper could not resolve its project URL during heartbeat; the documented fallback was used only to record the park. No code was changed. Fresh GitHub state shows the issue remains open and is currently assigned to
dezren39; revalidate ownership and helper health before resuming.dezren39 commentedon Nov 4, 2026
agent-note:v1
task 8626 picked up by lane code-g (direct execution lane). Issue #2845 verified OPEN, no hard-stop labels, no open PR owns this work. Applying the scoped actionlint fix from triage task 8616 (SC2129 grouping + justified shellcheck directives; concurrency.queue findings are a pinned-tool false positive and will not be "fixed" by editing workflows).
ci(actionlint): SC2129 grouping + justified shellcheck directives + s…
Merge pull request #5341 from developing-today/queue/8626-2845-action…
dezren39 commentedon Nov 4, 2026
agent-note:v1
task 8626 done (lane code-g): PR #5341 MERGED (merge sha 8331a77); issue #2845 auto-closed. Evidence: actionlint 1.7.12
-shellcheck shellcheckwent from 15 findings on main (SC2129 x1, SC2016 x4, SC2086 x6, concurrency.queue x4) to 0 on the branch, verified in a fresh clone. The concurrency.queue findings were silenced only via the scoped ignore in .github/actionlint.yaml — the jules workflows were not edited.