Actual same-artifact info/kmsg qualification
Executed host proof at controller revision0ba47bc06e0932842daa7461b8aefc7fba2058f8.
The exact qualifier was copied into a NEW0700
~/tmp directory and executed with Python3.14/native zstd and fdtget:
python3.14 qualification-command.py \
--bundle /nix/store/p2kdar89q7dhwdajjy0mrhmxxzcgsalw-k230-mainline-drm-trial-boot-files \
--dev /nix/store/24hbalyljs6gn6fzkkl24znv8a0x6jdl-linux-riscv64-unknown-linux-gnu-7.3.0-rc5-dev \
--normal-report PRIVATE_NORMAL_FROM_NEW_ARMED_INFO_RECOVERY
Exit0: safe actual result. Same source/config/Image/DT/archive, manifest and five load/CRC expectations, matching systemd init ELF, original DT bootargs and bundle SHA256SUMS passed. Historical full build1c59f856 still supplies the existing artifacts; no new build, transfer, flash or UART occurred. Exactly one info/console value changes: destination console→kmsg. Argument bytes 355→352; literal command373→370, below the unchanged512-byte transport bound. Default marker-free command remains317 bytes; root/init/masks/join/sole console, helpers and all immutable identities remain equal. This is source/artifact proof, not execution or delivery on the board.
The normal anchor matches NEW armed recovery with distinct boot, exact identities/eight hashes/three services and registration absence. The host qualifier rechecks that receipt/report; it is not a new live board preflight. That occurs only under the later reserved begin invocation.
Controller source proof and independent reviews passed: 9 new+10info+13debug+36ordinary fixtures. Unaffected function bodies match the reviewed base, including readiness, loads, identity/recovery, full-log pumping and unknown-no-input paths. Independent actual-artifact review PASS: executed/public bytes, actual identities/hashes/CRCs/archive/DT, source and fresh recovery binding rechecked. Physical kmsg delivery, ordinary root/panel/glass and task5b.5 remain UNVERIFIED. Next board command is task5q.3, only after reviewed source/actual host gates and NEW protected recovery. Backend fallback/filter/drop limits stay explicit in the source plan.