Fix the jq invocation in the Build deterministic logger manifest step — it passes the whole candidate-call-sites JSON as an inline $(...) command-line argument, which now exceeds ARG_MAX and aborts the run before the agent ever starts.
This is a NEW, untracked P1 gap. It is distinct from #41636 (Copilot CLI false-red, which lists Go Logger only as "same engine, root cause unconfirmed"): that family is the agent step exiting 1 after work completes. Here the failure is a deterministic pre-agent shell step (turns=0, agent never runs).
Problem statement
The Build deterministic logger manifest step fails with exit code 126. The manifest-build script builds manifest.json with:
jq -n \
--argjson files_needing_logger "$(jq -R -s ... "$files_needing_logger")" \
--argjson missing_logger_import "$(jq -R -s ... "$files_missing_logger_import")" \
--argjson candidate_call_sites "$(jq -R -s ... "$call_sites")" \
'{...}' > "$out_dir/manifest.json"
The expanded --argjson candidate_call_sites "$(...)" value — every func call site across the whole Go tree — is large enough that the final jq -n exec exceeds the kernel argument-length limit:
/home/runner/work/_temp/<hash>.sh: line 41: /usr/bin/jq: Argument list too long
##[error]Process completed with exit code 126.
Because this step gates the agent, the agent job is marked failure and the workflow does zero useful work.
Affected workflow and run IDs
- Workflow: Go Logger Enhancement (
.github/workflows/go-logger.lock.yml), engine claude.
- Representative: §28311620826 — 2026-06-28, step
Build deterministic logger manifest, exit 126, turns=0.
- Recurrence (same step, same signature suspected): §28278649992 (2026-06-27), §28217478494 (2026-06-26).
- History: failing 3 consecutive scheduled days (6-26 / 6-27 / 6-28);
skipped on prior days — i.e. 100% red on every day the step actually executed.
Probable root cause
jq -n --argjson candidate_call_sites "$(jq ... "$call_sites")" materializes the entire call-sites JSON array as a single command-line argument. As the Go codebase (and thus the func call-site count) grows, that argument crosses ARG_MAX and execve returns E2BIG, surfacing as jq: Argument list too long / exit 126. The failure is data-size-driven, so it is now permanent rather than intermittent.
Proposed remediation
- Stop passing large JSON as inline
--argjson "$(...)" arguments. Feed each list to jq via stdin or a file instead — e.g. write the per-list JSON to temp files and use --slurpfile candidate_call_sites call-sites.json (or jq -R -s -f reading the raw TSV directly and constructing the object in one pass). This keeps the payload off argv.
- Construct
manifest.json in a single jq pass that reads the TSV/line files directly (jq -Rn '[inputs|...]' with < file) so no intermediate shell-substituted argument is needed.
- Add a fail-fast guard that emits a clear error if a manifest input grows unexpectedly large, instead of an opaque exit 126.
Success criteria / verification
- The
Build deterministic logger manifest step completes (exit 0) and produces a valid manifest.json regardless of call-site count.
- The agent job runs (
turns>0) on a subsequent scheduled Go Logger run.
- A future audit of the run shows no
Argument list too long / exit 126 in the manifest step.
Generated by 🔍 [aw] Failure Investigator (6h) · 280.5 AIC · ⌖ 35.7 AIC · ⊞ 5.2K · ◷
Fix the
jqinvocation in theBuild deterministic logger manifeststep — it passes the whole candidate-call-sites JSON as an inline$(...)command-line argument, which now exceedsARG_MAXand aborts the run before the agent ever starts.This is a NEW, untracked P1 gap. It is distinct from #41636 (Copilot CLI false-red, which lists Go Logger only as "same engine, root cause unconfirmed"): that family is the agent step exiting 1 after work completes. Here the failure is a deterministic pre-agent shell step (
turns=0, agent never runs).Problem statement
The
Build deterministic logger manifeststep fails with exit code 126. The manifest-build script buildsmanifest.jsonwith:The expanded
--argjson candidate_call_sites "$(...)"value — everyfunccall site across the whole Go tree — is large enough that the finaljq -nexec exceeds the kernel argument-length limit:Because this step gates the agent, the agent job is marked
failureand the workflow does zero useful work.Affected workflow and run IDs
.github/workflows/go-logger.lock.yml), engineclaude.Build deterministic logger manifest, exit 126,turns=0.skippedon prior days — i.e. 100% red on every day the step actually executed.Probable root cause
jq -n --argjson candidate_call_sites "$(jq ... "$call_sites")"materializes the entire call-sites JSON array as a single command-line argument. As the Go codebase (and thus thefunccall-site count) grows, that argument crossesARG_MAXandexecvereturnsE2BIG, surfacing asjq: Argument list too long/ exit 126. The failure is data-size-driven, so it is now permanent rather than intermittent.Proposed remediation
--argjson "$(...)"arguments. Feed each list tojqvia stdin or a file instead — e.g. write the per-list JSON to temp files and use--slurpfile candidate_call_sites call-sites.json(orjq -R -s -freading the raw TSV directly and constructing the object in one pass). This keeps the payload offargv.manifest.jsonin a singlejqpass that reads the TSV/line files directly (jq -Rn '[inputs|...]'with< file) so no intermediate shell-substituted argument is needed.Success criteria / verification
Build deterministic logger manifeststep completes (exit 0) and produces a validmanifest.jsonregardless of call-site count.turns>0) on a subsequent scheduled Go Logger run.Argument list too long/ exit 126 in the manifest step.