Why now
falcon-flight is now a published, cosign-signed WASM OCI component on ghcr + indexed on wasm.directory (ghcr.io/pulseengine/falcon-flight:1.128.0). But what's published today is a sealed demo — its world exports two no-arg scalar digests (run-stabilization: func() -> f32), with the plant sim inside the component. Nothing real crosses the boundary. Good for "look, the verified core runs in wasmtime"; useless for jess to actually wire sensors→core→motors.
With a WASM Component Model runtime now on all three cores, the deployment substrate is settled (WASM everywhere, incl. F100), so it's time to pin down the real consumption contract before relay mints interfaces the wrong shape.
The two-level structure relay proposes
Level 1 — fine-grained verified stream components (where verification + reuse live; the relay thesis — small stream<T> transformers):
falcon-iekf-stream, falcon-position-stream, falcon-attitude-stream, falcon-rate-stream, falcon-mixer-stream, relay-fsafe. These stay fine-grained — we don't collapse them.
Level 2 — per-core meld-fused bundles (what jess deploys), mapped to the agreed 3-core partition (jess#144):
| Core |
Bundle |
Composed of |
Build status |
| M4 |
estimator |
falcon-iekf-stream (+ sensor fusion) |
single stage, exists |
| M7 |
cascade |
position → attitude → rate → mixer, meld_fused |
falcon-cascade-stream-fused already exists |
| F100 |
failsafe |
relay-fsafe |
verified crate; wasm-wrap TBD |
meld is the bridge (develop/verify small at Level 1, deploy fused-per-core at Level 2) — meld_fuse is already in the BUILD.
What relay needs jess to decide (the discussion)
- Granularity: do you want the 3 per-core fused wasm bundles delivered as OCI artifacts (M4/M7/F100), or the fine-grained Level-1 set + a wiring manifest and jess runs
meld + placement itself?
- Interface shape at the seam: per-cycle
step(sensor-sample) -> actuator-cmd (synchronous, mirrors FlightCore::step) vs P3 stream<sensor-sample> -> stream<actuator-cmd> (relay-native, composable). Which fits the runtime's integration model on each core?
- Seam types: the
sensor-sample / actuator-cmd WIT will be spar-generated from the AADL (as the DroneCAN node / param service / secure-channel WIT already are). Should these align 1:1 with the HAL peripheral seams in jess#62 / relay#214, so the same types flow driver → estimator?
- F100 failsafe specifically: wasm-in-runtime like M4/M7, or does its safety role argue for gale-native? (You said WASM on all cores — confirming for the failsafe given F100's role.)
- Delivery/versioning: OCI tag per relay release (like
falcon-flight:1.128.0), one ghcr repo per bundle? This also ties into jess#91 (witness + scry gates on the falcon wasm).
Proposed next step
relay will prototype falcon-rate with a real interface (wrap the verified relay-rate::RatePid in a step/stream seam via spar-generated types, re-verify the boundary, publish as a second OCI entity) as a worked example — so this discussion reacts to a concrete component shape rather than a hypothetical. It's one stage of the M7 cascade bundle.
Refs: jess#62 (HAL contract), jess#144 (first-flight arc), jess#91 (wasm CI gates), relay#214 (peripheral seams). Published component: ghcr.io/pulseengine/falcon-flight · https://wasm.directory/pulseengine/falcon-flight/1.128.0
🤖 Generated with Claude Code
Why now
falcon-flightis now a published, cosign-signed WASM OCI component on ghcr + indexed on wasm.directory (ghcr.io/pulseengine/falcon-flight:1.128.0). But what's published today is a sealed demo — its world exports two no-arg scalar digests (run-stabilization: func() -> f32), with the plant sim inside the component. Nothing real crosses the boundary. Good for "look, the verified core runs in wasmtime"; useless for jess to actually wire sensors→core→motors.With a WASM Component Model runtime now on all three cores, the deployment substrate is settled (WASM everywhere, incl. F100), so it's time to pin down the real consumption contract before relay mints interfaces the wrong shape.
The two-level structure relay proposes
Level 1 — fine-grained verified stream components (where verification + reuse live; the relay thesis — small
stream<T>transformers):falcon-iekf-stream,falcon-position-stream,falcon-attitude-stream,falcon-rate-stream,falcon-mixer-stream,relay-fsafe. These stay fine-grained — we don't collapse them.Level 2 — per-core
meld-fused bundles (what jess deploys), mapped to the agreed 3-core partition (jess#144):falcon-iekf-stream(+ sensor fusion)meld_fusedfalcon-cascade-stream-fusedalready existsrelay-fsafemeldis the bridge (develop/verify small at Level 1, deploy fused-per-core at Level 2) —meld_fuseis already in the BUILD.What relay needs jess to decide (the discussion)
meld+ placement itself?step(sensor-sample) -> actuator-cmd(synchronous, mirrorsFlightCore::step) vs P3stream<sensor-sample> -> stream<actuator-cmd>(relay-native, composable). Which fits the runtime's integration model on each core?sensor-sample/actuator-cmdWIT will be spar-generated from the AADL (as the DroneCAN node / param service / secure-channel WIT already are). Should these align 1:1 with the HAL peripheral seams in jess#62 / relay#214, so the same types flow driver → estimator?falcon-flight:1.128.0), one ghcr repo per bundle? This also ties into jess#91 (witness + scry gates on the falcon wasm).Proposed next step
relay will prototype
falcon-ratewith a real interface (wrap the verifiedrelay-rate::RatePidin astep/stream seam via spar-generated types, re-verify the boundary, publish as a second OCI entity) as a worked example — so this discussion reacts to a concrete component shape rather than a hypothetical. It's one stage of the M7 cascade bundle.Refs: jess#62 (HAL contract), jess#144 (first-flight arc), jess#91 (wasm CI gates), relay#214 (peripheral seams). Published component:
ghcr.io/pulseengine/falcon-flight· https://wasm.directory/pulseengine/falcon-flight/1.128.0🤖 Generated with Claude Code