evidence · 5.6 KiB

README.md

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

Open raw source

PID1 transition controller host preparation

This is host source/fixture evidence for group 5t, based on ea54f9e0f367e04c8a8baba8d11a2f6c5ebb37b9 in the isolated mainline-init-exec-transition-control branch. No UART, board, full kernel build or recovery command was used. Matching full-artifact positive qualification and physical results remain UNVERIFIED; task 5b.5 stays open.

The begin-only --init-exec-transition selector requires --init-exec-return, --wait-initramfs-in-initcall and --without-boot-markers. It appends exactly k230.init_exec_transition=1 after the parent gate. The fixed fixture produces 351 argument bytes and a 369-byte literal setenv command, below the existing 512-byte limit. Its system pathname is a test vector; the real matching new system and manifest must be qualified before any UART opening. Saved selection is strictly boolean and an old missing field means false. Existing unselected transport, load/CRC, normal checks, identity and recovery function bodies remain unchanged; the parent read-only qualifier is byte-identical.

Pre-UART qualification verifies the same derivation’s immutable source/dev, config and Image through the existing common inspector. It requires built-in PRINTK, PRINTK_TIME and SERIAL_8250_CONSOLE, disabled PRINTK_CALLER, the unique parent format/setup and both unique new literal formats/setup. It rejects a contradictory enabled/disabled PRINTK_CALLER fixture. The independently read realized source is /nix/store/79yd40jv8h4x866bm1vyw94cm948grax-linux-mainline-k230-init-exec-transition-src:

FileSHA-256
init/main.c0363265487f8fdbd2ba2fcbbda64e3003bc970ed708c73bb6b31ba4e609ea5b5
arch/riscv/kernel/process.c2ddbcc113d4a943704edaf576d02638c12c605a6e4468ee82c7f731fdbe3d693
arch/riscv/kernel/traps.c0c8aa2616ae1a1a2da6962b12e121ea3b220a940e46a37f82d62b0064c70d433
include/linux/k230-init-exec-transition.h071b94a44889f3a61ec17a3af8f276c3a82e081f85c8c89779f0b8ee0d6e6848

The complete timestamp-only LF/CRLF records have fixed V1 namespaces and known points. Fresh Linux, exact received arguments and the /init announcement must precede them. Duplicate, malformed, reversed, interleaved, echoed, truncated or contradictory records cannot qualify readiness. Missing earlier records remain explicitly incomplete while a valid later ECALL can independently show its entry point. A complete sequence alone permits no input: ordinary login and primary prompt must also qualify before the unchanged candidate identity checks. Unknown completion stops further input and retains private observations.

The result separates original exec-result output return (supported by either valid later point), first new point output return (supported by a later ECALL when both new points were observed), and the last record’s own output return (UNVERIFIED). The ECALL point proves successful entry setup, not syscall handler completion, loader or systemd main, usable root, touch or a fault cause.

tools/mainline-init-exec-transition-qualify.py is a read-only actual-artifact command. It calls the reviewed parent’s archive_delta, archived and hardware_dt helpers rather than introducing another dependency/DT policy. Only the already reviewed byte/mode-identical module-tree relocation is allowed. It also checks exact config and system/init bytes, checksums, chosen bootargs, manifest/CRCs and the sole two-gate transformation. Its normal report is a protected historical host anchor, never fresh board recovery. No actual new full-bundle positive result is claimed here.

Commands run with TMPDIR=$HOME/tmp and python3 -B:

Initial new fixtures exposed a command-CR expectation and two callback-signature/ mock-recursion mistakes; they failed without board access and were corrected. The conflicting PRINTK_CALLER fixture prompted the explicit enabled-assignment rejection. Final passing tests exercise those corrected paths.

After matching full build and independent host review, the coordinator’s bounded operator command is:

python3 tools/mainline-init-exec-transition-qualify.py \
  --bundle BUNDLE --dev DEV --normal-report PRIVATE_NORMAL
python3 tools/mainline-drm-system-trial.py begin \
  --wait-initramfs-in-initcall --without-boot-markers \
  --init-exec-return --init-exec-transition \
  --bundle BUNDLE --manifest PRIVATE_MANIFEST --normal-report PRIVATE_NORMAL \
  --state NEW_PRIVATE_STATE --log PRIVATE_LOG --result PRIVATE_RESULT

This is a passive 180-second readiness bound after guarded staging/normal preflight. A new protected recovery gate, matching full build/artifact proof, coordinator review/integration/CI and the physical trial remain separate.