fix(linux): give jq its own flags, and prove the live modes in the image #226

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

snapshot -S -c passed those flags to the shell function, which ignored them, so the snapshot came out pretty-printed where the Python emitted json.dumps(sort_keys=True). The flags now belong to jq. The live modes are proved too, which the 38 fact cases could not cover: snapshot, base-packages and the fact-gathering in verify read the real machine. Both implementations were run inside the rebuilt node-bootc image this recipe pins -- base-packages byte-identical, snapshot identical as JSON (23275 bytes against 23860, the difference entirely json.dumps separators). The image also confirms jq, yq v4.53.2, and yq -p toml parsing the kargs file. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76

snapshot -S -c passed those flags to the shell function, which ignored them, so the snapshot came out pretty-printed where the Python emitted json.dumps(sort_keys=True). The flags now belong to jq. The live modes are proved too, which the 38 fact cases could not cover: snapshot, base-packages and the fact-gathering in verify read the real machine. Both implementations were run inside the rebuilt node-bootc image this recipe pins -- base-packages byte-identical, snapshot identical as JSON (23275 bytes against 23860, the difference entirely json.dumps separators). The image also confirms jq, yq v4.53.2, and yq -p toml parsing the kargs file. https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
fix(linux): give jq its own flags, and prove the live modes in the image
All checks were successful
binjovi/ci Binjovi completed the frozen plan
e43332f70c
`snapshot -S -c` passed those flags to the shell function, which ignored
them, so the snapshot came out pretty-printed where the Python emitted
`json.dumps(sort_keys=True)`. The consumer reads it with jq either way,
but the file goes into the bake log and into a second process. The flags
now belong to jq.

THE LIVE MODES ARE NOW PROVED TOO, which the 38 fact cases could not
cover: `snapshot`, `base-packages` and the fact-gathering inside `verify`
read the real machine, so they had never run. Both implementations were
run inside the rebuilt node-bootc image, the one this recipe pins:

  | mode | result |
  |---|---|
  | `base-packages` | byte-identical, both exit 0 |
  | `snapshot` | identical as JSON, both exit 0 |

`snapshot` is 23275 bytes against Python's 23860. The difference is
entirely separators -- `json.dumps` writes `", "` and `": "`, jq -c
writes `,` and `:` -- and `diff` of both through `jq -S .` is empty. For
a JSON document whose only reader is jq, that is the equivalence that
matters.

The image also confirms the point of the whole change: `jq`, `yq
v4.53.2`, and `yq -p toml` parsing `/usr/lib/bootc/kargs.d/01-seanfarm.toml`.

Claude-Session: https://claude.ai/code/session_01KZoQin34jeyt6nDGqvJA76
sean force-pushed sean/shell-kernel-gates-jq-flags from e43332f70c
All checks were successful
binjovi/ci Binjovi completed the frozen plan
to 466378a3ac
All checks were successful
binjovi/ci Binjovi completed the frozen plan
2026-09-10 19:56:11 +00:00
Compare
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!226
No description provided.