Skip to content

finding: MIXER lowers 100% clean on M7 today — per-stage report names the float gate precisely (2 synth families) - #171

Merged
avrabe merged 1 commit into
mainfrom
finding/per-stage-lowering-mixer-clean
Jul 28, 2026
Merged

finding: MIXER lowers 100% clean on M7 today — per-stage report names the float gate precisely (2 synth families)#171
avrabe merged 1 commit into
mainfrom
finding/per-stage-lowering-mixer-clean

Conversation

@avrabe

@avrabe avrabe commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

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 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 to func_N — which makes the gate precisely nameable for the first time.

🎯 falcon-mixer lowers 100% clean, today, with the float gate still open

0 skips · 14/14 functions compiled · falcon:cascade/mixer@0.7.0#mix a real defined symbol (nmT) · 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.

stage skips .o skipped
mixer 0 24.5 KB
rate 3 60.7 KB rate#tick + 2 helpers
attitude 3 60.1 KB attitude#tick + 2
position 3 62.7 KB position#tick + 2
ekf 3 60.9 KB ekf#estimate + 2
iekf 4 63.2 KB ekf#estimate + 3
flight (fused) 9 119 KB names lost

The gate, precisely named

For every non-mixer stage it is the public entry point itself that's skipped — from exactly two synth families:

  • GI-FPU-001 / synth#369 — F32ConvertI64U/Srate#tick, position#tick, ekf#estimate
  • GI-FPU-002 — VFP register file exhausted ("no VFP spilling yet") → attitude#tick, iekf#estimate

Fix 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 F32ConvertI64U is a hi/lo fixed-point time → f32-seconds 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. (This is why jess deliberately left a timestamp out of ImuSample.raw.)

Caveat: v1.128 predates relay#314 (rate's no_std/WASI-free conversion) — only mixer is WASI-free in this tag. Re-run on the next release for the converted-vs-not delta.

rivet validate → PASS.

🤖 Generated with Claude Code

…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>
@avrabe
avrabe merged commit 9d2baf4 into main Jul 28, 2026
5 checks passed
@avrabe
avrabe deleted the finding/per-stage-lowering-mixer-clean branch July 28, 2026 19:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant