The script-tests jq preflight pinned a single version (1.6), but the runner hosts now ship 1.7 (both hosts measured 1.7 on 2026-10-28), so the tripwire went red on a healthy fleet. The preflight now accepts exactly {1.6, 1.7} (an out-of-set version is witnessed red in the tests) until server-management#1080 pins the runner fleet. review-verdict.yml stays floor-only. New record ci.jq-accepted-version-set supersedes ci.jq-version-contract (archived, catalog regenerated); docs/ci-cd.md, the preflight comments and dependent scripts state the dated invariant; no claim that runners ship 1.6 remains.
Measured
Full PYTHONPATH=. python3 -m pytest scripts/tests -q at 403bf011c: 1615 passed, 3 skipped, rc=0 (run by the orchestrator).
Re-run on the pushed head: test_jq_preflight.py + test_pr_changed_files.py 353 passed.
ruff check/format clean, bash -n clean on the 4 touched scripts, check-doc-narrative 0 warnings, catalog regen no diff.
No fix commit exists from the review because round one was clean (the earlier commits are the resume work round).
Cross-family review status: codex could not run in round 1 (no VERDICT line); substituted a cold same-family review-only agent per process.independent-review-rubric — retry cross-family next window
Deliberately left: none beyond the 9 nits, which carry no issue number.
fixes #935
## Root cause
The script-tests jq preflight pinned a single version (1.6), but the runner hosts now ship 1.7 (both hosts measured 1.7 on 2026-10-28), so the tripwire went red on a healthy fleet. The preflight now accepts exactly {1.6, 1.7} (an out-of-set version is witnessed red in the tests) until server-management#1080 pins the runner fleet. `review-verdict.yml` stays floor-only. New record `ci.jq-accepted-version-set` supersedes `ci.jq-version-contract` (archived, catalog regenerated); `docs/ci-cd.md`, the preflight comments and dependent scripts state the dated invariant; no claim that runners ship 1.6 remains.
## Measured
- Full `PYTHONPATH=. python3 -m pytest scripts/tests -q` at 403bf011c: 1615 passed, 3 skipped, rc=0 (run by the orchestrator).
- Re-run on the pushed head: test_jq_preflight.py + test_pr_changed_files.py 353 passed.
- ruff check/format clean, `bash -n` clean on the 4 touched scripts, check-doc-narrative 0 warnings, catalog regen no diff.
## Review history
<<REVIEW HISTORY
round 1: 3 lens(es); 0 blocking, 0 should-fix, 9 nit; clean — loop ended
REVIEW HISTORY>>
No fix commit exists from the review because round one was clean (the earlier commits are the resume work round).
Cross-family review status: codex could not run in round 1 (no VERDICT line); substituted a cold same-family review-only agent per process.independent-review-rubric — retry cross-family next window
Deliberately left: none beyond the 9 nits, which carry no issue number.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
jq-preflight.sh --expect takes a comma-separated set (validated whole, exact
major.minor membership); pr-checks.yml passes 1.6,1.7. Both small runners float
on runner-images:ubuntu-latest, so the fleet's jq is a function of pull history
(1.7 measured on PR #933 job 12347 and PR #934 job 12360, 2026-10-29).
New record ci.jq-accepted-version-set supersedes ci.jq-version-contract
(archived); docs/ci-cd.md, the script header and runner-ships-1.6 comments now
state the dated invariant. review-verdict.yml stays floor-only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: f9ce6bc6-5b36-491a-8d72-89c1f70dd3e1
The fleet is uniform on jq 1.7 per the job logs; 1.6 stays in the set only because the
image tag is unpinned. Real-jq 1.6 coverage is currently absent, and the shims cover only
the empty-input -e quirk, not the NUL or parse-error ones. Measurement dated by the job
date. Remaining "runner's jq 1.6" comments reworded.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: f9ce6bc6-5b36-491a-8d72-89c1f70dd3e1
ci.jq-version-contract is archived; verdict-write-retarget-fence.md and
defect-shapes-773.md now name its successor ci.jq-accepted-version-set.
jq-preflight.sh: the two ragged header paragraphs are re-wrapped, and the
MIN_VERSION note names the runner fleet and server-management#1080 instead
of a single CI runner.
Decisions-Edit: yes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: f9ce6bc6-5b36-491a-8d72-89c1f70dd3e1
Orchestrator verdict at 403bf011c: 3 independent reviews (one cross-family attempt fell back to a cold same-family review) all merge, nits only. Own CI green: script-tests job 12374 on jazz-small-runner reports jq 1.7, a member of {1.6,1.7}. Out-of-set witnessed red (local jq 1.8.2 exits 1). pytest 1615 passed. Nits deferred: tripwire message wording, review-verdict.yml L186 '--expect pins an exact version' comment, wiring test does not assert a single --expect invocation.
Review-verdict: MERGEABLE @ 403bf01
Orchestrator verdict at 403bf011c: 3 independent reviews (one cross-family attempt fell back to a cold same-family review) all merge, nits only. Own CI green: script-tests job 12374 on jazz-small-runner reports jq 1.7, a member of {1.6,1.7}. Out-of-set witnessed red (local jq 1.8.2 exits 1). pytest 1615 passed. Nits deferred: tripwire message wording, review-verdict.yml L186 '--expect pins an exact version' comment, wiring test does not assert a single --expect invocation.
timothy
merged commit bcf6f7e04d into main2026-10-30 00:03:08 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
fixes #935
Root cause
The script-tests jq preflight pinned a single version (1.6), but the runner hosts now ship 1.7 (both hosts measured 1.7 on 2026-10-28), so the tripwire went red on a healthy fleet. The preflight now accepts exactly {1.6, 1.7} (an out-of-set version is witnessed red in the tests) until server-management#1080 pins the runner fleet.
review-verdict.ymlstays floor-only. New recordci.jq-accepted-version-setsupersedesci.jq-version-contract(archived, catalog regenerated);docs/ci-cd.md, the preflight comments and dependent scripts state the dated invariant; no claim that runners ship 1.6 remains.Measured
PYTHONPATH=. python3 -m pytest scripts/tests -qat403bf011c: 1615 passed, 3 skipped, rc=0 (run by the orchestrator).bash -nclean on the 4 touched scripts, check-doc-narrative 0 warnings, catalog regen no diff.Review history
<<REVIEW HISTORY
round 1: 3 lens(es); 0 blocking, 0 should-fix, 9 nit; clean — loop ended
REVIEW HISTORY>>
No fix commit exists from the review because round one was clean (the earlier commits are the resume work round).
Cross-family review status: codex could not run in round 1 (no VERDICT line); substituted a cold same-family review-only agent per process.independent-review-rubric — retry cross-family next window
Deliberately left: none beyond the 9 nits, which carry no issue number.
🤖 Generated with Claude Code
Review-verdict: MERGEABLE @
403bf01Orchestrator verdict at
403bf011c: 3 independent reviews (one cross-family attempt fell back to a cold same-family review) all merge, nits only. Own CI green: script-tests job 12374 on jazz-small-runner reports jq 1.7, a member of {1.6,1.7}. Out-of-set witnessed red (local jq 1.8.2 exits 1). pytest 1615 passed. Nits deferred: tripwire message wording, review-verdict.yml L186 '--expect pins an exact version' comment, wiring test does not assert a single --expect invocation.