evidence · 5.7 KiB

README.md

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

Open raw source

Actual Memory controller host qualification

Actual matching Memory artifact preparation passed on 2026-10-04 from 04:48:51.726195Z to 04:48:52.602799Z. This satisfies task 5i.4’s positive host preparation gate. New physical summary, receipt, recovery, ordinary root and touch remain UNVERIFIED. No UART access, board command or implicit build was performed by this qualifier.

Worktree /home/jadams/tmp/k230-mainline-uart-progress-memory-controller, branch mainline-uart-progress-memory-controller, base a4d6958d, controller 6fffac506a2d58b1b736b86de06ab8d1a485dbcf. Owned for this handoff: this evidence directory and only task 5i.4’s completion note/checkbox. Root owns matching builds, staging, board/UART and independent recovery. Cached start/handoff scans are read-only host checks; no build-slot or board reservation was taken here.

The actual matching full-build receipt returned zero for frozen root revision 7af8f7b8b5849c75df61d39ee772c2cc8f38542c. The qualifier required that exact revision, compared preparation-function and relevant-constant ASTs with its frozen controller, then ran actual prepare_trial followed by prepare_uart_progress(..., uart_progress_memory=True) using the guarded private normal report and exact manifest. The source and functions were unchanged; earlier controller tests and old-artifact rejection remain the separate source/fixture evidence. No broad test rerun was needed for this handoff.

Realized artifactStore identity
Bundle/nix/store/lznjjfx1kzm8mp2j0r06c87h2vdymkhd-k230-mainline-drm-trial-boot-files
System/nix/store/sja2fw7arlkkjws7ax7h1r2b9can7y8j-nixos-system-nixos-26.11.20260919.20b1ddd
Kernel/nix/store/zk5rbsrgqgp40bk1314mj0i50qhn260m-linux-riscv64-unknown-linux-gnu-7.3.0-rc5
Matching dev/nix/store/1pvqbm4r3gqcvsabgkz5wvrpxfbk5k1v-linux-riscv64-unknown-linux-gnu-7.3.0-rc5-dev
Source/nix/store/f7xg031sjb9dy3bswm5s3qjr9xwx1g02-linux-mainline-k230-uart-progress-memory-src

Read-only Nix queries tied the actual kernel and realized dev/config to the same derivation. Each of the six required built-in config options was present exactly once; full config SHA256 is 52e7470b108ad094dbdf88b94e3e8838564edbda9e7a015b4279012e6765c9f1. Its derivation’s immutable source contains the reviewed Memory worker SHA256 307d7c0588499dd32826c1d05476e0bf6d46ca0c8939d42e0b4f7180545b98dc. The selected linked Image SHA256 is dd4466aae08927dd3eb7e2bcbc28c81d7279c341c52bd002ae67fcc04dde42af. The full NUL-terminated Memory summary format was unique at byte offset 25646120, as was the exact Memory setup key. result.json records these proofs, artifact SHA256/CRC values and actual archived executable/shared-loader checks. Linked-string presence is host source/artifact evidence, not runtime output.

Actual preparation inspected the compressed selected initrd, U-Boot wrapper, archived RISC-V Bash and original systemd ELF executables with shared interpreter, manifest hashes and five load ranges. Archive metadata includes the base shell comparison arguments; the top-level bootargs records the final selected Memory policy. Protected wrapper size/hash comes from the guarded prior normal report and fixed controller CRC; no new card readback was performed. Registration absence is an assertion included in the pre/post helper, not a protected board check performed during this host invocation.

Only k230.uart_progress_memory=1 is added to the inherited qualified base progress policy for this selected system. Breadcrumbs/PostSample gates are absent. The full safe literal U-Boot command is 381 bytes versus 353 bytes without that one gate. No variable expansion, duplicate init/control, saveenv, persistent card/profile selection or new hardware DT setting is added by this controller. It still requires fresh exact received arguments and Bash readiness before one builtin receipt, followed only by passive capture. It never issues a candidate reboot. Summary validity, worker completion, wait timeout, receipt and protected normal return remain independent facts; a summary does not prove its final firmware call returned or establish ordinary root acceptance.

Executed actual host command:

TMPDIR=$HOME/tmp python3 "$HOME/tmp/k230-mainline-uart-memory-host-qualification/qualify.py"

qualification-command.py preserves the exact executed runner, SHA256 a3c9fc004aef4a642cccc125b40b8e9345180d8c44c40adad10aeebc8e8eb1e9. It requires the protected expected-revision file and fresh outputs. Reexecution belongs in a new protected ~/tmp directory, never this public evidence directory. Private baseline/prepared-state/transport files were not copied into the repo.

The matching private manifest is ready for root review/copy from ~/tmp/k230-mainline-uart-memory-host-qualification/candidate-manifest.json, SHA256 f6107dfefa6808b7f4840fc315466f892386c138f53da2bef985333ed68487ba. Root must use fresh private run/log/result paths and repeat protected normal preflight/load CRC guards. After exact object/full artifact/controller gates and NEW independently verified protected normal recovery, the sole root operator may reserve board/UART and use:

python3 tools/mainline-drm-initrd-shell-trial.py --mode minimal \
  --same-image-shell-pid1 --uart-progress --uart-progress-memory \
  --bundle /nix/store/lznjjfx1kzm8mp2j0r06c87h2vdymkhd-k230-mainline-drm-trial-boot-files \
  --manifest PRIVATE_MANIFEST --normal-report PRIVATE_NORMAL \
  --log PRIVATE_FRESH_LOG --result PRIVATE_FRESH_RESULT

Physical tasks 5i.5–6 and task 5b.5 remain open. This host receipt is not staging, deployment, physical scheduling/RX proof or a normal-return observation.