evidence · 5.1 KiB

README.md

Committed at docs/evidence/mainline-uart-progress-memory-printk/positive-controller-host/README.md. This is what grounds the requirements that cite it.

Open raw source

Actual MemoryPrintk controller qualification

The actual new matching artifacts passed host controller preparation on 2026-10-04, from 07:15:36.553575 to 07:15:37.926705 UTC (exit 0). This completes the actual-artifact portion of task 5l.4. It did not open UART, send board commands, build implicitly or perform a protected board preflight. Physical output, scheduling, recovery, ordinary root and real touch remain UNVERIFIED. Root owns the separate full-build/object receipts and the subsequent reserved physical operation.

The safe receipt records the selected bundle, system, kernel, derivation/dev/config, source, Image, initrd, DT, archived executables/common loader, five-load hashes/CRCs and protected manifest identity. The executed qualifier is byte-identical to the protected script run below (SHA256 727a4dc6877fe43311cb6745ff1d9223fad474672751c4c41a5a69c4ebac599f). The controller was 1aca20f71673ea468732b78510e206adaf3281ac; its preparation, transport and observation function/constant AST matches frozen root 1c59f8565ce6baab1e97ffad23e55556961af308. That frozen build’s private receipt returned 0 and already-realized outputs contained both exact bundle and dev. The qualifier exited 0 on its first actual run; no initial failure occurred.

TMPDIR="$HOME/tmp" python3 "$HOME/tmp/k230-mainline-uart-memory-printk-host-qualification/qualify.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 "$HOME/tmp/k230-mainline-uart-memory-printk-board/normal-report.json"

The standalone copied qualifier retains its original protected directory and worktree contract; run it with fresh outputs after an explicit successful frozen build receipt. It requires Python 3.14 native Zstd support plus existing nix-store, nix, fdtget, dtc and sha256sum; it never realizes missing outputs. Public evidence contains no normal boot identifier, receipt token, private address or protected report. Actual manifest/prepared helper/transport and normal report remain in the protected host directory.

The selected kernel is /nix/store/xna7x12lh4lmzwgmwq51cyc9wf86504p-linux-riscv64-unknown-linux-gnu-7.3.0-rc5. Its derivation supplies the selected realized dev; actual config SHA256 52e7470b108ad094dbdf88b94e3e8838564edbda9e7a015b4279012e6765c9f1 matches base Memory. PRINTK, PRINTK_TIME, SERIAL_8250_CONSOLE and SERIAL_8250_DW are built in, with PRINTK_CALLER disabled. The reviewed worker SHA256 30e8eb1ee365d62665c9d3ffd674e973736f3d04405d53f0f5dc12c3ee23f5f2 is read from actual immutable source /nix/store/0l4mgw9hr1j7pj247jsrxjd478fnlfy8-linux-mainline-k230-uart-progress-memory-printk-src. The linked Image matches its selected kernel and contains the unique new setup and exact KERN_INFO format with leading newline (format offset 25646280). These artifact checks qualify the variant; they do not prove runtime gate or output execution.

Actual DT hardware is byte-identical to base Memory after removal of the sole /chosen/bootargs property; each original chosen argument value matches its bundle. The actual archive contains the same verified RISC-V Bash, systemd, helper executables and ELF loader as base Memory. Bundle SHA256SUMS, five load ranges and hashes/CRCs passed. The wrapper is anchored to the protected historical normal report and fixed CRC 99b89787, rather than a new board readback. The report is a host-only historical anchor; it is not a fresh recovery or preflight. Registration absence is asserted in the prepared pre/post helper, not claimed as a newly performed board assertion.

For this new selected system, the reconstructed base zero-input Memory literal is 381 bytes. Adding only k230.uart_progress_memory_printk=1 produces the exact 416-byte literal U-Boot command. No nohlt, earlycon, keep_bootcon or quiet control is added. This comparison uses zero candidate input, NOT_REQUESTED receipt and RX NOT_TESTED. Its parser requires fresh exact received args plus ordered UART0 registration and ttyS0 console-enable markers before trusting a timestamp-only UMK summary; artifact preparation does not observe those live markers.

After independent source/native/exact-object/full gates and a fresh protected normal preflight pass, the sole operator may run with fresh protected output paths and the reviewed matching manifest:

python3 tools/mainline-drm-initrd-shell-trial.py --mode minimal \
  --same-image-shell-pid1 --uart-progress --uart-progress-memory \
  --uart-progress-memory-no-stimulus --uart-progress-memory-printk \
  --bundle /nix/store/p2kdar89q7dhwdajjy0mrhmxxzcgsalw-k230-mainline-drm-trial-boot-files \
  --manifest PRIVATE_MANIFEST --normal-report PRIVATE_NORMAL \
  --log PRIVATE_LOG --result PRIVATE_RESULT

No candidate reboot or retry is authorized by a summary. Recovery requires the independent fresh normal return/postflight or an operator reset. Tasks 5l.5–6 and 5b.5 remain open in this handoff. Existing controller fixture proof is a prior preparation checkpoint, distinct from this actual-artifact execution.