evidence · 4.4 KiB

README.md

Committed at docs/evidence/mainline-init-exec-transition/physical-2026-10-05/README.md. This is what grounds the requirements that cite it.

Open raw source

PID1 return and first userspace syscall: physical capture

ONE physical UART capture of the default-off two-point transition variant, 2026-10-05 20:24:27–20:28:01 UTC, controller revision bfef07f1 (tools and flake unchanged from frozen build revision a60b0eae). Candidate readiness bound180 seconds. Controller exit1: ordinary init login readiness unverified. Actual host proof and both independent actual-host reviews passed first.

Guarded staging

Staging receipt: root ran the reviewed private stage guard once (20:19:56–20:21:16 UTC), return0. A fresh prompt and full protected preflight against the old 5f2j… staged bundle preceded one acknowledged upload. The board checked the compressed NAR SHA256, imported the 8 new of 630 closure paths, retained a separate candidate GC root, copied only trial files and verified staged checksums. One exact fresh-token RC0 frame preceded the full post-guard against the new candidate. Protected normal identities, eight boot hashes, three active services and registration absence were identical on the same boot. No reboot, profile switch or boot-file replacement. Independent complete UART staging review PASS. The transfer server was stopped afterwards.

Capture

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

All five U-Boot load size/CRC pairs matched the manifest. The kernel received the exact 351-byte arguments with both gate tokens. A fresh 7.3.0-rc5 banner and Run /init as init process (4.573720) preceded exactly one of each record, in order (fixed observations, safe result):

[    4.584221] K230_INIT_EXEC_RETURN_V1 ret=0
[    4.584235] K230_INIT_EXEC_TRANSITION_V1 point=kernel-init-return
[    4.584361] K230_INIT_EXEC_TRANSITION_V1 point=first-user-ecall

The parser reported a complete sequence, no missing records and no errors. No qualified login or primary prompt appeared within180 seconds. The last host-to-board annotation is bootm; the reviewed source only reads after it. That is source/transcript evidence, not electrical TX proof.

What this shows, within the diagnostic’s stated limits: the selected kernel_init returned to ret_from_fork_kernel, user mode executed and issued an ECALL whose kernel-entry setup succeeded. It does not prove the syscall handler returned, loader constructors or systemd main ran, or that the last record’s own print returned.

Bytes after the last record

The raw UART ends with exactly \r\n ESC P + q 6E616D65 ESC \ and then nothing for the rest of the 180-second bound. This is a DCS XTGETTCAP query for the hex string 6E616D65 (“name”). On the protected normal 6.6.36 boot, systemd PID1 emits the same query and immediately follows it with further terminal queries (ESC[18t, ESC[6n, …) and its version banner. The earlier 5s capture ends with the same bytes, which that write-up did not mention; it made no claim of silence. The emitter of these bytes, and where execution stopped after them, are UNVERIFIED from UART alone. They are recorded here as an observation for the next source-grounded plan, not as a cause.

Recovery

After the capture completed, the user performed a NEW operator reset. The independently source-reviewed recovery checker (adapted from the 5s checker only for the new bundle, both flags and a fresh-only output guard) ran once and returned0: fresh prompt, distinct boot, exact normal system/profile/kernel/init, uname 6.6.36, eight protected boot hashes equal to the trial preflight, three active services and registration absence (recovery receipt). No passive fresh SPL or automatic return is claimed.

Independent physical capture review PASS: hashes, loads/CRCs, arguments, three ordered unique records, trailing bytes, read-only window and result fields. Raw UART, URLs, tokens and boot IDs remain private; receipts bind their hashes. Publication receipt verifies the deployed revision. Ordinary root, panel, camera/real glass and task5b.5 remain UNVERIFIED.