finding: MIXER lowers 100% clean on M7 today — per-stage report names the float gate precisely (2 synth families) - #171
Merged
Conversation
…e float gate is now precisely named (2 synth families, entry points themselves) relay asked for the per-stage skip signal (jess#167). falcon-components-v1.128.tar.gz already ships every cascade stage separately (10/10 SHA-verified), so no wait on the OCI push. Lowered each through the real chain (meld 0.39 -> loom 1.2 -> synth 0.51 --relocatable -t cortex-m7dp). Per-stage components KEEP THEIR NAMES (the fused core degrades them to func_N) -> far sharper picture. *** falcon-mixer lowers 100% CLEAN with the float gate still open ***: 0 skips, 14/14 functions, `falcon:cascade/mixer@0.7.0#mix` a real defined symbol (nm T), 0 external syms, 0 WASI, 24.5KB .o. FIRST falcon flight-stack component proven to lower to the M7 — and it is the airframe-coupled stage emitting ActuatorCmd.pwm. On-target-ready NOW. Per-stage: mixer=0 rate=3 attitude=3 position=3 ekf=3 iekf=4 flight=9. For every non-mixer stage it is the PUBLIC ENTRY POINT ITSELF that is skipped, from exactly TWO synth families: GI-FPU-001/#369 F32ConvertI64U/S -> rate#tick, position#tick, ekf#estimate GI-FPU-002 VFP regfile exhausted -> attitude#tick, iekf#estimate Fix those two and the whole cascade lowers. Source-level dodge given to relay: the F32ConvertI64U is a time->f32-seconds hi/lo widening; f32.convert_i32_u lowers fine in the SAME expression, only the i64 form fails -> narrowing that u64 to u32 unblocks rate+position+ekf without waiting on synth. (Why jess left a timestamp out of ImuSample.raw.) Caveat: v1.128 predates relay#314, so only mixer is WASI-free in this tag. Verified: rivet validate PASS; all 10 component SHAs verified; mixer symbol confirmed via nm. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
relay asked for the per-stage skip signal (jess#167).
falcon-components-v1.128.tar.gzalready ships every cascade stage separately (10/10 SHA-verified), so no waiting on the OCI push.Lowered each stage through the real chain (
meld 0.39 fuse → loom 1.2 optimize → synth 0.51 --relocatable -t cortex-m7dp). Per-stage components keep their names — the fused core degrades them tofunc_N— which makes the gate precisely nameable for the first time.🎯
falcon-mixerlowers 100% clean, today, with the float gate still open0 skips · 14/14 functions compiled ·
falcon:cascade/mixer@0.7.0#mixa real defined symbol (nm→T) · 0 external symbols · 0 WASI imports · 24.5 KB ARM object.The first falcon flight-stack component proven to lower to the M7 — and it's the airframe-coupled stage that emits
ActuatorCmd.pwm(DD-026 P1). On-target-ready now, ahead of the full cascade.rate#tick+ 2 helpersattitude#tick+ 2position#tick+ 2ekf#estimate+ 2ekf#estimate+ 3The gate, precisely named
For every non-mixer stage it is the public entry point itself that's skipped — from exactly two synth families:
F32ConvertI64U/S→rate#tick,position#tick,ekf#estimateattitude#tick,iekf#estimateFix those two and the whole cascade lowers. The rest is the same 2-helper RA tail per stage.
A source-level dodge handed to relay
The
F32ConvertI64Uis a hi/lo fixed-point time → f32-seconds widening.f32.convert_i32_ulowers fine in the same expression — only the i64 form fails. Narrowing that u64 to u32 unblocks rate + position + ekf without waiting on synth. (This is why jess deliberately left a timestamp out ofImuSample.raw.)Caveat: v1.128 predates relay#314 (rate's
no_std/WASI-free conversion) — onlymixeris WASI-free in this tag. Re-run on the next release for the converted-vs-not delta.rivet validate→ PASS.🤖 Generated with Claude Code