refactor(linux): the kernel gates are shell, and the base carries the tools #223

Merged
binjovi-bot merged 1 commit from sean/shell-kernel-gates into trunk 2026-09-10 19:51:38 +00:00 AGit
Owner

verify-artifact.py and verify-bootc.py are shell now. Both run inside the node OS image, which installed python3 on purpose because nothing else there could read JSON; node-base:v2 carries jq and yq and node-bootc was rebuilt on it, verified by running the new image. Not a rewrite on faith: each gate was run against its Python original case by case -- 28 cases for verify-artifact and 38 for verify-bootc, zero disagreements, including the initramfs size boundaries and the INI shapes configparser accepts. Two corrections the rebuild forced, both read out of the image: loglevel=7 becomes loglevel=4 (node-bootc 2ea31b1), and the note claiming huge pages are not a boot argument was describing an older base -- node-bootc 9529ecd removed hugepages=1024 on 2026-09-04 because Mayastor is gone. The last python3 in the bake is gone too: assemble-bootc.sh now reads the RPM name with jq. INERT until a following commit moves build.recipe.revision, which is the two-commit shape this recipe already uses. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76

verify-artifact.py and verify-bootc.py are shell now. Both run inside the node OS image, which installed python3 on purpose because nothing else there could read JSON; node-base:v2 carries jq and yq and node-bootc was rebuilt on it, verified by running the new image. Not a rewrite on faith: each gate was run against its Python original case by case -- 28 cases for verify-artifact and 38 for verify-bootc, zero disagreements, including the initramfs size boundaries and the INI shapes configparser accepts. Two corrections the rebuild forced, both read out of the image: loglevel=7 becomes loglevel=4 (node-bootc 2ea31b1), and the note claiming huge pages are not a boot argument was describing an older base -- node-bootc 9529ecd removed hugepages=1024 on 2026-09-04 because Mayastor is gone. The last python3 in the bake is gone too: assemble-bootc.sh now reads the RPM name with jq. INERT until a following commit moves build.recipe.revision, which is the two-commit shape this recipe already uses. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
refactor(linux): the kernel gates are shell, and the base carries the tools
All checks were successful
binjovi/ci Binjovi completed the frozen plan
c6867111f3
`verify-artifact.py` and `verify-bootc.py` are shell now. Both run INSIDE
the node OS image, which installed `python3` on purpose because nothing
else there could read JSON. node-base:v2 carries `jq` and `yq`, and
node-bootc was rebuilt on it -- verified by running the new image:
`/usr/bin/jq`, `/usr/local/bin/yq v4.53.2`, and `yq -p toml` parses
`/usr/lib/bootc/kargs.d/01-seanfarm.toml` correctly.

NOT A REWRITE ON FAITH. Each gate was run against its Python original
case by case, and they agree everywhere:

  | gate | cases | disagreements |
  |---|---|---|
  | verify-artifact | 28 | 0 |
  | verify-bootc | 38 | 0 |

The 38 include the boundaries -- `initramfs_bytes` at exactly 5000000
and 536870912 -- and the INI shapes `configparser` accepts that a naive
grep would not: `enabled=no` unspaced, a trailing space, a missing
section, an empty string. Both gates also pass the shell tests written
against the Python: 9 and 30 negative controls.

TWO CORRECTIONS THE REBUILD FORCED, both read out of the image rather
than chosen:

  * `loglevel=7` becomes `loglevel=4`. node-bootc 2ea31b1, "take 40
    seconds off every reboot", changed it. `BASE_KARGS` is an exact list
    comparison, so a base bump that moves the command line has to move
    this line in the same commit, and the comment now says so.
  * The note claiming huge pages are "not a boot argument in this base"
    was describing an older base. node-bootc 9529ecd removed
    `hugepages=1024` on 2026-09-04 -- it pre-allocated 2 GiB per node for
    Mayastor's SPDK io-engine, which had held it on the master for 79
    days without ever running one. Mayastor is gone. The note now says
    that, so the next reader does not put it back.

The last `python3` in the bake is gone too: `assemble-bootc.sh` read the
RPM name with `python3 -c 'import json'` and now uses `jq -r .rpm`.

INERT UNTIL ACTIVATED. `build.recipe.revision` still pins `recipes/linux`
at ebda47a1, so the bake does not see any of this yet -- including the
repinned base. That is the two-commit shape this recipe already uses
(ebda47a1, then 9e2c780). The activating commit follows once this one has
a revision to name.

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/binjovi-plans!223
No description provided.