Skip to content

I3945 — The site generator's input list reaches jq through a file, not as one command-line argument

scripts/generate-site-data writes source.json's input list to a stage file and hands it to jq with --rawfile, so the list can grow with the repository without approaching Linux's 131072-byte cap on one argument.

READY wave 0 · p1 · implementation profile · parallel safe

Part of ci-critical-path — The critical path from a change to its verdict, and from a merge to its verified deploy, runs under a minute warm.

Ready. Every dependency is done, so majordomus plan start I3945 will be accepted.

Objective

scripts/generate-site-data writes source.json's input list to a stage file and hands it to jq with --rawfile, so the list can grow with the repository without approaching Linux's 131072-byte cap on one argument.

Why

Case 10's measurement of every jq argument (I3942) named it NEAR on train 4: `--arg inputs \"$INPUTS\"` carried 101495 bytes, 77% of the cap, and grows with every input the generator reads. It is a plain variable, a spelling scripts/ci/argv-limit-check cannot see; the plan graph crossed the same cap the same way on train 4 (run 39860903679).

Current state

Line 2006 of scripts/generate-site-data passes the whole newline-separated input list as one --arg.

Desired state

The list is written once to the stage directory and read with --rawfile; source.json is byte-identical to what --arg produced.

Scope

  • scripts/generate-site-data
  • .ai/repo/project/issues/I3945.yaml

Out of scope

  • The plan graph argument, which p1's repair (r-c873f68b9658) moves
  • scripts/ci/argv-limit-check, whose blind spot for a plain variable case 10's measurement covers

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • Case 10 with the argument measurement names no input-list argument as NEAR
  • generate-site-data --check passes on the unchanged tree: source.json is byte-identical

Validation

  • bash test/run.sh 10_site_data 51_derived_artifacts_committed

Evidence required

  • suite

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Risk

None beyond the stage file: --rawfile reads exactly the bytes --arg passed, shown on a list with newlines, an empty line, spaces and non-ASCII text.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I3945.yaml. Read it back with majordomus plan show I3945.

Searches the titles and descriptions of every page this site publishes.