Evidence
Discovered by the #470 PR-1b campaign's beast x86 gate while trying to get runtime proof (not just code review) that the page-table custody disposition counters (PT_ROOT_ABANDONED_*, PT_ROOT_DROPPED_UNDECIDED, PT_EXEC_WALK_LEASES_UNRETURNED, etc.) actually fire on x86 in production.
mode=kthread builds the kthread_test_only feature kernel, which never spawns or exits userspace processes. It structurally cannot exercise process teardown, so the disposition counters are unobservable in this mode — not a failure, just out of scope for what kthread mode drives.
mode=full is documented in run-x86-gate.sh as hanging on x86. Root cause: kernel/src/task/completion.rs is missing an x86_64 timeout that the aarch64 path has, so a full-mode x86 boot that reaches process exit/teardown never completes and the gate hangs rather than passing or failing cleanly.
Consequence
x86 runtime proof that the PT_ROOT_ABANDONED_* / disposition counters fire correctly in production must currently come from aarch64 parity + code review of the x86 code paths, not from an executed x86 gate. That is weaker evidence than the project wants for kernel-path changes.
Needed
Either:
- Fix
mode=full (add the missing x86_64 timeout to kernel/src/task/completion.rs so process exit/teardown completes deterministically), or
- Add a new x86 gate mode that enables
boot_tests process spawn/exit (i.e., not kthread-only) with counter visibility, without depending on the currently-hanging full mode.
Reference
Surfaced during the #470 PR-1b campaign (process page-table custody record). See PR-1b for the disposition-counter work this harness gap blocks from being runtime-proven on x86.
Evidence
Discovered by the #470 PR-1b campaign's beast x86 gate while trying to get runtime proof (not just code review) that the page-table custody disposition counters (
PT_ROOT_ABANDONED_*,PT_ROOT_DROPPED_UNDECIDED,PT_EXEC_WALK_LEASES_UNRETURNED, etc.) actually fire on x86 in production.mode=kthreadbuilds thekthread_test_onlyfeature kernel, which never spawns or exits userspace processes. It structurally cannot exercise process teardown, so the disposition counters are unobservable in this mode — not a failure, just out of scope for what kthread mode drives.mode=fullis documented inrun-x86-gate.shas hanging on x86. Root cause:kernel/src/task/completion.rsis missing an x86_64 timeout that the aarch64 path has, so a full-mode x86 boot that reaches process exit/teardown never completes and the gate hangs rather than passing or failing cleanly.Consequence
x86 runtime proof that the PT_ROOT_ABANDONED_* / disposition counters fire correctly in production must currently come from aarch64 parity + code review of the x86 code paths, not from an executed x86 gate. That is weaker evidence than the project wants for kernel-path changes.
Needed
Either:
mode=full(add the missing x86_64 timeout tokernel/src/task/completion.rsso process exit/teardown completes deterministically), orboot_testsprocess spawn/exit (i.e., not kthread-only) with counter visibility, without depending on the currently-hanging full mode.Reference
Surfaced during the #470 PR-1b campaign (process page-table custody record). See PR-1b for the disposition-counter work this harness gap blocks from being runtime-proven on x86.