Challenge: a maximal-wasm "gale-nano" for tiny bare-metal nodes (a few gale primitives + the kiln async scheduler)
The same principle as everywhere in the stack (jess DD-006): compile everything to wasm and run it through the meld → loom → synth toolchain; only the bare-minimum hardware (registers / MMIO) is native. This challenge applies that to the smallest node — where full Zephyr does not fit.
Why
jess Phase-2 (Pixhawk 6X-RT) has a tiny bare-metal node — the STM32F100 I/O MCU — running a px4io-class failsafe. It is too small for the full Zephyr RTOS, but we still want gale's verified guarantees + an async runtime there. Rather than hand-write a bespoke bare-metal failsafe, the challenge is to strip gale to a minimal subset + add the kiln async scheduler, all built maximal-wasm.
The challenge
Define a "gale-nano": the few primitives a tiny node actually needs (candidate set — sem, mutex, msgq/mbox, timeout, maybe event; not the full 39-module surface) + the kiln async scheduler, such that:
- It is itself wasm. gale-nano + the failsafe app are fused (meld), loom-optimized, and synth-compiled to the target — the OS is not native C; it rides the same wasm→ARM toolchain as the app.
- Only a bare-minimum native shim exists: the hardware registers/MMIO the node truly needs (PWM out, RC/SBUS in, the UART carrying the IPC, a tick source) behind a thin host interface — everything above that is wasm.
- Verified primitives carry over — the gale-nano subset keeps its Verus/Kani proofs; the async scheduler gets its own (no lost wakeups, bounded poll).
Outside parameters (the node's constraints)
- MCU: STM32F100, Cortex-M3 (no FPU), 24 MHz, 8 KB SRAM — extreme RAM budget; the subset must fit.
- Role: independent failsafe (px4io-class) — must stay tiny, deterministic, and independent of the FMU for its safety function.
- IPC: receives CCSDS Space Packets wrapped by relay-sec (counter + anti-replay + Ascon-AEAD) over LPUART @ 1.5 Mbaud from the FMU (jess DD-009) — so the native shim includes that UART carrier; relay-sec/relay-ccsds are
no_std and already M0+/M3-capable.
- Integrity bar: the failsafe is on the ASIL/DAL-A path (jess DD-005), so the verified-subset property matters.
Renode information (this de-risks it — unlike the RT1176)
Renode already models the STM32F1 family: platforms/cpus/stm32f103.repl + scripts/single-node/stm32f103.resc. The STM32F100 (Value Line) shares the Cortex-M3 core + much of the F1 peripheral set, so a gale-nano can be HIL-tested in Renode today on an stm32f103-class platform (a small .repl delta to F100 memory/peripherals), and even two-machine with the FMU over a UART hub to exercise the CCSDS+relay-sec link. (Contrast the i.MX RT1176, which Renode does not model — AFD-018.)
Ask
Is a maximal-wasm gale-nano (minimal verified subset + kiln async scheduler, synth-compiled, thin native register shim) feasible / in scope as a gale track? It composes with the gale#63 host-path epic (same WIT/host-interface machinery, just a smaller footprint). jess will co-design the WIT, supply the STM32F100 parameters, and bring the Renode stm32f103-based HIL platform. Tracked jess-side as REQ-PIX-009 / DD-006.
Challenge: a maximal-wasm "gale-nano" for tiny bare-metal nodes (a few gale primitives + the kiln async scheduler)
The same principle as everywhere in the stack (jess DD-006): compile everything to wasm and run it through the meld → loom → synth toolchain; only the bare-minimum hardware (registers / MMIO) is native. This challenge applies that to the smallest node — where full Zephyr does not fit.
Why
jess Phase-2 (Pixhawk 6X-RT) has a tiny bare-metal node — the STM32F100 I/O MCU — running a px4io-class failsafe. It is too small for the full Zephyr RTOS, but we still want gale's verified guarantees + an async runtime there. Rather than hand-write a bespoke bare-metal failsafe, the challenge is to strip gale to a minimal subset + add the kiln async scheduler, all built maximal-wasm.
The challenge
Define a "gale-nano": the few primitives a tiny node actually needs (candidate set —
sem,mutex,msgq/mbox,timeout, maybeevent; not the full 39-module surface) + the kiln async scheduler, such that:Outside parameters (the node's constraints)
no_stdand already M0+/M3-capable.Renode information (this de-risks it — unlike the RT1176)
Renode already models the STM32F1 family:
platforms/cpus/stm32f103.repl+scripts/single-node/stm32f103.resc. The STM32F100 (Value Line) shares the Cortex-M3 core + much of the F1 peripheral set, so a gale-nano can be HIL-tested in Renode today on an stm32f103-class platform (a small.repldelta to F100 memory/peripherals), and even two-machine with the FMU over a UART hub to exercise the CCSDS+relay-sec link. (Contrast the i.MX RT1176, which Renode does not model — AFD-018.)Ask
Is a maximal-wasm gale-nano (minimal verified subset + kiln async scheduler, synth-compiled, thin native register shim) feasible / in scope as a gale track? It composes with the gale#63 host-path epic (same WIT/host-interface machinery, just a smaller footprint). jess will co-design the WIT, supply the STM32F100 parameters, and bring the Renode stm32f103-based HIL platform. Tracked jess-side as REQ-PIX-009 / DD-006.