fix: eliminate resource-collision race in ship-notes-wedged-pr jq() mock

Unrelated defect surfaced by a real gsd-test failure while verifying
#3339 (test/3339-fold-state-model-profile diffs zero files this fix
touches -- confirmed via `git diff <this-branch> origin/next -- ...`
returning empty for this file, ship.md, and gsd-core/bin/lib/*.cjs).
Fixed inline per this repo's no-defer policy for defects found while
building, rather than deferred.

The test's jq() mock shelled out to a full new Node.js process for
every mocked `jq -r .field` call inside the extracted track_shipping
bash script. The "exhausts the polling bound" test hits up to 24 cold
Node spawns in one spawnSync call (6 polling iterations x 4 jq calls),
racing a hardcoded 10s timeout -- under CI contention this tipped over
on the linux-node22 lane specifically while linux-node24 had headroom,
producing spawnSync's signal-killed `status: null` instead of the
process's real exit code, asserted against the expected 0.

Replaced the Node-subprocess jq() mock with a pure-shell sed -nE field
extractor that never forks a process, eliminating the variable-cost
operation rather than just widening the timeout. Verified extraction
correctness against sample JSON (head/status/checks/review, including
empty-string and non-matching-field cases). Locally verified (scoped
per session policy): all 9 tests in the file pass; the previously-
marginal test dropped from ~617ms to ~198ms.

The underlying track_shipping polling logic in ship.md was confirmed
correct and untouched -- this was a test-fixture race, not a product
bug.
This commit is contained in:
sim
2026-08-12 08:16:57 -04:00
parent 4036470ca0
commit c70e736c85

View File

@@ -62,7 +62,11 @@ function runTrackShipping(responses) {
' sed -n "${_call}p" "$GH_RESPONSES"',
'}',
'jq() {',
' "$NODE_BIN" -e "let d=\'\';process.stdin.on(\'data\',c=>d+=c);process.stdin.on(\'end\',()=>{const o=JSON.parse(d);process.stdout.write(String(o[process.argv[1].slice(1)] ?? \'\'));});" "$2"',
' _field="${2#.}"',
' _raw=$(sed -nE \'s/.*"\'"$_field"\'":("[^"]*"|[^,}]*).*/\\1/p\')',
' _raw="${_raw%\\"}"',
' _raw="${_raw#\\"}"',
' printf \'%s\' "$_raw"',
'}',
].join('\n');
@@ -77,7 +81,6 @@ function runTrackShipping(responses) {
GH_CALLS: ghCallsPath,
GH_RESPONSES: responsesPath,
GIT_CALLS: gitCallsPath,
NODE_BIN: process.execPath,
PHASE_NUMBER: '1',
PR_NUMBER: '123',
padded_phase: '01',