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 artifact | Immutable 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.