Problem
Every case in kernel::task::kthread_tests::* ends with arch_disable_interrupts(). Nothing re-enables interrupts before control returns to kernel_main_continue(), so that function is entered with IF clear (interrupts masked). This is not theoretical: it permanently hung the first x86 staged-registry dispatch after [STAGE:serial:ADVANCE].
Current workaround (call-site only, not a source fix)
Branch feat/green-tracing @ d9266b71 worked around this at the call site — saving, enabling, and restoring the interrupt flag around the dispatch — rather than fixing the actual test cases. That branch's impl-notes.md records this explicitly as a by-catch discovery: "noted, not rewritten."
What's needed
Fix the source defect: kthread_tests::* cases should not leave the CPU with interrupts disabled on return. Either each case should restore interrupts before returning, or the harness/runner around them should own that guarantee structurally (not via an ad hoc save/enable/restore wrapped around one particular dispatch call site).
Reference
Problem
Every case in
kernel::task::kthread_tests::*ends witharch_disable_interrupts(). Nothing re-enables interrupts before control returns tokernel_main_continue(), so that function is entered with IF clear (interrupts masked). This is not theoretical: it permanently hung the first x86 staged-registry dispatch after[STAGE:serial:ADVANCE].Current workaround (call-site only, not a source fix)
Branch
feat/green-tracing@d9266b71worked around this at the call site — saving, enabling, and restoring the interrupt flag around the dispatch — rather than fixing the actual test cases. That branch'simpl-notes.mdrecords this explicitly as a by-catch discovery: "noted, not rewritten."What's needed
Fix the source defect:
kthread_tests::*cases should not leave the CPU with interrupts disabled on return. Either each case should restore interrupts before returning, or the harness/runner around them should own that guarantee structurally (not via an ad hoc save/enable/restore wrapped around one particular dispatch call site).Reference
impl-notes.md(branchfeat/green-tracing@d9266b71), by-catch entry Update CLAUDE.md: Add critical rule about not pushing to main #6.feat/green-tracing@d9266b71.