feat(node-base): bake jq and yq into the node package layer #281

Merged
binjovi-bot merged 2 commits from sean/node-base-jq-yq into trunk 2026-09-10 19:16:32 +00:00 AGit
Owner

The node OS image installs python3 on purpose and carries no other way to read structured text, which is why the kernel artifact check and the boot image check are Python. jq comes from AppStream in the existing dnf install. yq is the Go implementation, for the one TOML file on the node (/usr/lib/bootc/kargs.d/01-seanfarm.toml, which the boot image check reads) -- EL10's yq is python3-yq, a jq wrapper that would put an interpreter back on this path, so the Go build is pinned by version and digest and sha-checked, the shape pipeline-tools uses. Both land in the PACKAGE layer, so a kernel roll still reaches no package repo. Both architectures; both completeness assertions name the new binaries. node-bootc moves to node-base:v2 and node-base-arm64 to VERSION 2. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76

The node OS image installs python3 on purpose and carries no other way to read structured text, which is why the kernel artifact check and the boot image check are Python. jq comes from AppStream in the existing dnf install. yq is the Go implementation, for the one TOML file on the node (/usr/lib/bootc/kargs.d/01-seanfarm.toml, which the boot image check reads) -- EL10's yq is python3-yq, a jq wrapper that would put an interpreter back on this path, so the Go build is pinned by version and digest and sha-checked, the shape pipeline-tools uses. Both land in the PACKAGE layer, so a kernel roll still reaches no package repo. Both architectures; both completeness assertions name the new binaries. node-bootc moves to node-base:v2 and node-base-arm64 to VERSION 2. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
feat(node-base): bake jq and yq into the node package layer
Some checks failed
binjovi/ci Binjovi failed the frozen plan
35f1c25ba0
The node OS image installs `python3` on purpose and carries no other
way to read structured text. That is why the two gates that run inside
it -- the kernel artifact check and the boot image check -- are Python.

`jq` comes from AppStream, in the same `dnf install` that already
delivers the other twenty-four packages. `yq` is the Go implementation,
for the one file on this node that is TOML:
`/usr/lib/bootc/kargs.d/01-seanfarm.toml`, which the boot image check
reads. EL10 has no such package -- its `yq` is `python3-yq`, a wrapper
around jq, which would put an interpreter back on the path this layer
exists to keep short. So it is pinned by version AND by digest, fetched
cache-first on amd64, and checked before it is made executable: the
shape `pipeline-tools` already uses.

Both land in the PACKAGE layer, which is the whole point of the split
made on 2026-07-29. A kernel roll rebuilds node-bootc, which installs
nothing, so the roll path still reaches no package repo.

Both architectures, and both completeness assertions name the new
binaries so a missing one fails the build rather than a node at boot.

`node-bootc` moves to `node-base:v2` and `node-base-arm64` to VERSION 2,
under the immutable-tag rule.

Claude-Session: https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
chore: rebuild on the enlarged ARM buildkit cache
All checks were successful
binjovi/ci Binjovi completed the frozen plan
f25344df37
The previous build died on the ARM buildkit worker with `disk quota
exceeded` at 10Gi. seanfarm 2f57e3a25f21 raised that claim to 100Gi and
it expanded in place. Nothing in the tree changed.

Claude-Session: https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
sean/builder-images!281
No description provided.