Skip to content

[aw-failures] Go Logger Enhancement 100% red — "Build deterministic logger manifest" step dies with jq: Argument list too long [Content truncated due to length] #42032

Description

@github-actions

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

  1. 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.
  2. 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.
  3. 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

  1. The Build deterministic logger manifest step completes (exit 0) and produces a valid manifest.json regardless of call-site count.
  2. The agent job runs (turns>0) on a subsequent scheduled Go Logger run.
  3. 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 ·

  • expires on Jul 5, 2026, 12:14 AM UTC-08:00

Metadata

Metadata

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions