evidence · 5.5 KiB

README.md

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

Open raw source

MemoryPrintk controller preparation

This is host source/fixture evidence for group 5l.4, whose actual matching-bundle qualification remains UNVERIFIED. The typed --uart-progress-memory-printk requires minimal mode and all same-image shell, progress, Memory and no-stimulus selectors. It rejects polling, other diagnostic selectors and non-boolean/missing dependencies before UART/log creation. Older modes and their default transports are retained.

The source qualifier pins independently reviewed, actually realized worker SHA256 30e8eb1ee365d62665c9d3ffd674e973736f3d04405d53f0f5dc12c3ee23f5f2 in /nix/store/0l4mgw9hr1j7pj247jsrxjd478fnlfy8-linux-mainline-k230-uart-progress-memory-printk-src. It requires the selected kernel’s same-derivation realized dev/config, built-in PRINTK/PRINTK_TIME/SERIAL_8250_CONSOLE/SERIAL_8250_DW and disabled PRINTK_CALLER. The selected linked Image must contain the unique new setup and exact KERN_INFO format with leading newline; an old Memory source/Image cannot qualify. The new gate is the sole addition to the base Memory transform for the selected matching system/init. No nohlt, early console or logging-format override is added. Actual linked new artifacts are not yet available; these gates have only been exercised by fixtures in this controller checkpoint.

The source makes one ordinary pr_info("\nK230_UMK1 ...\n") call. Exact printk.c prefix rendering produces a timestamped blank line after any existing Bash prompt, followed by a clean timestamped summary. The parser ignores that blank line and accepts only the complete UMK line, with canonical %5lu.%06lu six-decimal timestamp and one separating space. CALLER is disabled because no caller prefix is accepted. No prompt stripping, arbitrary prefix repair or embedded-CR removal occurs. CRLF pairs alone are normalized.

New-mode parsing starts after the fresh raw 7.3.0-rc5 banner. Exact received arguments precede a trusted summary. It additionally requires unique ordered registration of UART0 at 91400000.serial, ttyS0/MMIO32 address 0x0000000091400000, positive bounded IRQ/base-baud fields, then printk: console [ttyS0] enabled. Partial, malformed, reordered or duplicated backend markers cannot qualify the summary; stale/pre-banner/echoed markers are not trusted. Backend parsing uses complete LF-delimited lines and retains lone CR bytes. Old UMP/UP/UPB/UPP namespaces invalidate the selected channel.

One coherent summary, its validity, worker completion, completion timeout, readiness and backend facts remain separate. A valid record establishes progress through snapshot/formatting to changed Linux output; it does not prove the printk call returned, identify prior DBCN failure or establish ordinary root. Missing output leaves worker/observer/timer/scheduler/printk/UART unknown.

All candidate capture paths remain passive: zero receipt/input attempts, NOT_REQUESTED receipt, RX NOT_TESTED, no retry, command, proc/identity probe, interrupt or candidate reboot, with a 180-second bound. Later helper input is allowed only after the independent ordered fresh SPL→normal6.6.36→login→prompt boundary, followed by protected normal identities/distinct boot/eight hashes/ three services/registration absence. A summary or candidate normal-looking prompt cannot authorize input. Operator recovery remains distinct from natural normal return. Ordinary /init, usable root/touch and 5b.5 remain open.

Proof on 2026-10-04 UTC, Python 3.14, TMPDIR=$HOME/tmp:

No full build, UART, board action or actual new-bundle preparation occurred in this controller task. Root owns source/object/full-build gates and the subsequent actual host qualifier and sole physical operation. The matching positive host receipt must be committed before 5l.4 is ticked and before a physical trial.

After every gate passes and protected normal is verified, the operator may use fresh protected output paths:

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 MATCHING_NEW_BUNDLE --manifest PRIVATE_MANIFEST \
  --normal-report PRIVATE_NORMAL --log PRIVATE_LOG --result PRIVATE_RESULT