Files
firmware/bin
Oleksandr ShyshatskyiandClaude Opus 5 6dc89469ac patch.sh asserts nothing about the payload it just installed
Two gates go, both of the same shape: a pkg_die run against $PAYLOAD_DIR a few
lines after bin/build-payload.py filled it, asking whether opkg had installed
the packages it was handed.

  * section 1: a klippy tree at $MODDIR/klipper/klippy, and a c_helper.so
    inside it
  * section 5b-2: etc/s6-rc/compiled/current resolving

Neither was ever this script's question. patch.sh no longer builds either
subject -- anvil-klipper installs the klippy tree, and case-build-payload.sh
compiles the database in the replica with the s6-rc-compile anvil-s6-rc ships
-- so a gate here can only report that a package manager did what it said it
did, on a staging directory, on the build host.

Both are already asked on the two vehicles that actually reach a printer:

  * bin/verify.sh reads the PACKED artefact -- the klippy tree, c_helper.so,
    and compiled/current resolving, plus the one thing about the database a
    host can genuinely tell that patch.sh never asked: the execline named by
    the oneshot runner's #!.
  * qa/replica asks an INSTALLED filesystem. test_install.py's
    test_klippy_is_present is the klippy question by name, test_abi.py sweeps
    c_helper.so for the ABI, and test_s6rc.py boots the thing -- s6-rc-init
    reads the database, the boot set comes up, and a database moved aside is
    reported as a negative control.

The two `say` lines went with them. Both existed to narrate a gate; the
Klipper one printed a pin that pkgs/klipper/pkg.conf already stamps into
PKG_VERSION, and the s6-rc one readlink'd the path the gate had just tested.

KEPT, and it is the same call 4ce928f made for the toolchain wrapper: the
anvil-core check in section 0. It judges the INPUT feed rather than the
produced payload, which is a question no downstream gate can ask, and it
guards a silent failure -- the MOD_INSTALL loop drops a root with no .ipk
without a word, because that is how PKG_WHEN reaches this script, so a missing
anvil-core would otherwise build a payload without it rather than stop.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GAQKdBfZxbnPagQyidFk6Y
2026-08-30 01:18:09 +03:00
..