evidence · 6.4 KiB

README.md

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

Open raw source

MemoryPrintk exact objects and full matching artifacts

Evidence class: actual coordinator full build and exact selected-header GCC RISC-V objects, followed by read-only artifact inspection. No hardware, UART, controller preparation or runtime output proof was performed here. Tasks 5l.2–3 are proved; remaining controller/physical/recovery gates and 5b.5 stay open.

The coordinator built the matching bundle/dev from frozen revision 1c59f8565ce6baab1e97ffad23e55556961af308, returning 0 on 2026-10-04 at 07:13:14 UTC. The exact-object check used worktree /home/jadams/tmp/k230-mainline-uart-progress-memory-printk, branch mainline-uart-progress-memory-printk, source revision bd092485f88223da7777379cfdd432ac8a722335 (base e2a02cb0). Only this evidence and task 5l.2–3 proof notes are owned by this increment. The root revision includes reviewed source/controller integration; these are distinct build revisions. The nonblocking shared build lock was acquired only after the coordinator’s successful receipt and released after the narrow object command. No full rebuild or fetch was selected.

Actual artifactImmutable path
bundle/nix/store/p2kdar89q7dhwdajjy0mrhmxxzcgsalw-k230-mainline-drm-trial-boot-files
selected kernel/nix/store/xna7x12lh4lmzwgmwq51cyc9wf86504p-linux-riscv64-unknown-linux-gnu-7.3.0-rc5
matching dev/nix/store/24hbalyljs6gn6fzkkl24znv8a0x6jdl-linux-riscv64-unknown-linux-gnu-7.3.0-rc5-dev
selected system/nix/store/yk44vx3ny4h6a9mx3ya4rczh7akhyjbj-nixos-system-nixos-26.11.20260919.20b1ddd
selected source/nix/store/0l4mgw9hr1j7pj247jsrxjd478fnlfy8-linux-mainline-k230-uart-progress-memory-printk-src
exact objects/nix/store/ndlvakw2vxgkbsdwzw477r44wz8rpyg6-k230-mainline-uart-progress-exact-objects

Actual commands and results

The coordinator command and its timestamps/output paths are preserved in full-build-receipt.json. The object command returned 0 in 9.81 seconds; its receipt and dry run show only the named exact-object derivation.

flock -n /tmp/k230-nix-build.lock nix build \
  .#kernelMainlineUartProgressMemoryPrintkExactObjects --offline --no-link \
  --print-out-paths --max-jobs 1 --cores 2
python3 docs/evidence/mainline-uart-progress-memory-printk/exact-full-host/verify-host.py \
  /nix/store/ndlvakw2vxgkbsdwzw477r44wz8rpyg6-k230-mainline-uart-progress-exact-objects \
  docs/evidence/mainline-uart-progress-memory-printk/exact-full-host/full-build-receipt.json \
  docs/evidence/mainline-uart-progress-memory-printk/exact-full-host

The exact build uses the actual selected kernel.dev installed config/autoconf, with no forced CONFIG overlay, and the actual three patched sources. The installed /source symlink is a build skeleton; the selected full source is independently pinned above and in the object output. The verifier asserts source layering over Memory, source SHA, same kernel/dev derivation, all target objects, format bytes and source dependencies. It returned 0. No failed proof invocation occurred in this exact/full check.

The actual applied worker SHA is 30e8eb1ee365d62665c9d3ffd674e973736f3d04405d53f0f5dc12c3ee23f5f2. Installed config SHA is 52e7470b108ad094dbdf88b94e3e8838564edbda9e7a015b4279012e6765c9f1; autoconf SHA is 99f44d781b246202edab1d5ef8c4836b15ae99c590999ff268541dfd673865d0. Both files equal the actual Memory parent dev byte-for-byte, with no effective CONFIG difference. PRINTK, PRINTK_TIME, PRINTK_EXECUTION_CTX, SERIAL_8250_CONSOLE, SERIAL_8250_DW and K230_UART_PROGRESS are built in; PRINTK_CALLER is explicitly unset. That qualifies the reviewed timestamp-only parser policy, not future output delivery.

All three objects are ELF64 little-endian RISC-V relocatables built with GCC 15.3.0. Readelf excerpts retain complete header/section tables and relevant symbol rows. Observer, worker, getter functions, flags, packed state and completion have ordinary lifetimes. Only setup/init routines are init sections. Inherited four records remain exact, aligned 64, no larger than 64 bytes and page-contained; inherited two summary buffers remain 256-byte BSS objects aligned 256. The KERN_INFO-prefixed leading-newline UMK format occurs once in ordinary rodata. The target observer has one acquire fence, completion wait and ordinary _printk call; worker release fences and completion are present. The selected printk arm jumps to the observer return after its call. The legacy SBI arm remains compiled for unchanged modes. Source/native checks prove the selected arm returns with no DBCN fallback; a global absence of the SBI symbol would be an incorrect claim. See memory-api-disassembly.txt and proof.json.

The preserved compile log contains a pahole-version warning (kernel 131, object environment 0). It contains no C warning. This is an object/API/layout proof, not a claim that all complete-kernel build tooling was duplicated.

Complete artifact inspection and limits

The existing trial inspector passes Image/candidate equality, system/kernel selection, sole executable system init, initrd payload equality, uImage CRC, manifest digests and 629-path closure inventory. Original bundle boot parameters remain exact, serial-only and with the original two trace flags; no runtime MemoryPrintk/progress/async/rdinit/nohlt/earlycon/keep_bootcon selection is baked into this bundle. The typed controller owns the reviewed volatile transformation. All expected inherited Image literals and the unique new format/setup key are linked. Hardware DT equals the actual Memory parent bundle after removing only /chosen/bootargs from temporary copies and comparing complete sorted dtc output. Canonical DTS SHA is c36085249e61fc1ed6f8f586b1ccbf11f22a4e27428a3e7e23b046384268fc02. Full digests/sizes are in proof.json, with original inspector output.

These checks establish compiled source/config/API/artifact coherence. They do not establish kthread execution, timer dispatch, console ownership progress, printk return, UART RX, ordinary root or touch. The one ordinary output call can block or fail; a future received UMK frame would describe the coherent pre-call snapshot, not prove the call returned or identify the cause of earlier silence. Missing output remains inconclusive. Root owns actual controller qualification, protected preflight, physical capture and independent normal recovery. No operator command was run by this host verifier.