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
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.