evidence · 3.9 KiB

mainline-autonomous-to-ordinary-init-next-2026-10-05.md

Committed at docs/research/mainline-autonomous-to-ordinary-init-next-2026-10-05.md. This is what grounds the requirements that cite it.

Open raw source

Next comparison: ordinary init on the current image

The autonomous physical run completed B/E and the interactive handoff with all optional reporter gates absent. The next bounded step uses the existing ordinary controller and the same p2 bundle, selecting its archived systemd /init instead of Bash. This is within the existing mainline task 5b.5; no new proposal, controller or kernel build is needed. This comparison has now been run: the current-image physical receipt records systemd, completed coldplug, mounted /sysroot and starting closure lookup, but no completion/switch-root/login within 180 seconds. Fresh host qualification and preceding protected recovery passed; subsequent NEW protected recovery also passed. The logging-only successor is planned separately.

The earlier ordinary attempt used the 5y bundle and reached systemd/udev without usable root. The marker-free attempt used brmp and did not show systemd/login. Neither is an ordinary-init result for the current p2 artifacts. Successful Bash execution does not overturn those observations or prove a hardware cause.

Host source analysis of the selected 0l4 tree finds that drivers/soc/canaan/k230-uart-progress.c:224–243 returns before either kthread_run when its enable gate is absent, and init/main.c:1508–1511 returns before optional trace output when its gate is absent. No runtime thread listing or IRQ trace was collected. The selected system /init SHA256 is d3e109a270c0b4463ac5b7b0655ce7667d7c55f6f93341bb461300a5dd5c8c63, matching the archived systemd ELF in the existing host proof.

Pure policy generation was independently checked through ordinary_bootargs(..., wait_initramfs_in_initcall=True, without_boot_markers=True) and volatile_bootargs_command: 299 raw argument bytes and a 317-byte literal U-Boot command, below the existing 512-byte bound. It retains the sole ttyS0 console, exact init/root, fsck skip, two service masks and initramfs_async=0. It contains no rdinit, post--- script, reporter/trace, nohz or nohlt selection. This is pure host policy evidence; fresh actual preparation passed for this physical run; later runs require their own fresh gates.

After a NEW reset and exact protected normal recovery, reserve board/UART and run actual system.prepare with both selectors. Retain the same p2/24h/0l4 config/Image/source/archive/native artifact identities, five manifest/load/CRC guards, systemd identity, diagnostic tools and registration-absence helper. Historical normal reports do not replace that fresh recovery/preflight.

python3 tools/mainline-drm-system-trial.py begin \
  --wait-initramfs-in-initcall --without-boot-markers \
  --bundle /nix/store/p2kdar89q7dhwdajjy0mrhmxxzcgsalw-k230-mainline-drm-trial-boot-files \
  --manifest PRIVATE_MANIFEST --normal-report NEW_PRIVATE_NORMAL \
  --state NEW_PRIVATE_STATE --log NEW_PRIVATE_LOG --result NEW_PRIVATE_RESULT

The existing controller waits passively up to 180 seconds for fresh Linux, autologin and a root prompt. A qualified prompt then allows its exact candidate kernel/system/init/root/profile/boot/cmdline checks. No systemd output, systemd/udev without login, and qualified stage-2 identity distinguish observed boundaries; silence does not identify the stalled instruction or hardware cause. Unknown readiness or boot/write/read completion preserves facts without further input or recovery guesses. A successful begin retains the candidate for separate panel/glass verification and guarded finish. A failed begin requires another NEW operator reset. Task 5b.5 remains open until its named physical proof exists.