docs(ci): jq is not a CI requirement and should not be promoted (#4107)
ci-requirements.md is the document that drives promoting a per-job dep into the ci-python image, and it still recorded jq as installed in the plugin job and "load-bearing for the smoke test specifically", on the grounds that every hook opened `command -v jq || exit 0` and the test would otherwise pass while exercising nothing. That was the tail wagging the dog. The hooks ship to users; jq is absent by default on macOS, the Debian/Ubuntu slim images, Alpine and most CI containers, and a machine without it got no context, no rules, no prior art and no process sync in silence. The answer was to remove the dependency, not to install it harder. Recorded as a promotion the entry now argues AGAINST rather than deleted: the next person to read this file should find out why jq is absent, not merely that it is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01821k5B3Ysecp9fNYs92Kuy
This commit is contained in:
+18
-8
@@ -29,15 +29,25 @@ real Postgres), build (docker buildx).
|
||||
Anything CI installs at job time that isn't in the image. Promotion
|
||||
candidates if more than one project needs them.
|
||||
|
||||
- `jq` + `shellcheck` — apt-installed in the **plugin** job, which lints
|
||||
the four Claude Code hook scripts and runs their fail-open smoke test.
|
||||
Per `docs/process.md`'s decision checkpoint, single-consumer deps stay
|
||||
- `shellcheck` — apt-installed in the **plugin** job, which lints the
|
||||
Claude Code hook scripts and runs their fail-open smoke test. Per
|
||||
`docs/process.md`'s decision checkpoint, single-consumer deps stay
|
||||
per-job until a second consumer wants them; Scribe is the only one so
|
||||
far. Both are small (jq ~1 MB, shellcheck ~20 MB) and would be
|
||||
promotion candidates the moment another project lints shell.
|
||||
**jq is load-bearing for the smoke test specifically**: every hook
|
||||
starts with `command -v jq || exit 0`, so without it the test passes
|
||||
while exercising nothing.
|
||||
far. It is small (~20 MB) and would be a promotion candidate the moment
|
||||
another project lints shell.
|
||||
|
||||
- `jq` — **no longer installed anywhere, and should not be promoted.**
|
||||
It was installed in two jobs, and this file used to record it as "load-
|
||||
bearing for the smoke test specifically", because every hook opened
|
||||
`command -v jq || exit 0` and the test would otherwise pass while
|
||||
exercising nothing. That was the tail wagging the dog: the hooks ship to
|
||||
users, jq is absent by default on macOS, the Debian/Ubuntu slim images,
|
||||
Alpine and most CI containers, and a machine without it got no context,
|
||||
no rules, no prior art and no process sync in silence. #4107 removed the
|
||||
dependency rather than documenting it, so the smoke test now runs on a
|
||||
bare image — which is the condition it was always meant to assert. The
|
||||
hooks use only POSIX tools (awk, sed, tr, od, cut, head, tail, grep,
|
||||
sort, date, printf) plus `git` and `curl`.
|
||||
|
||||
## Notes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user