rtx-fsi: pin FSI3's release response and settled cycle
Performance Benchmarks / Run Benchmarks (push) Canceled after 0s
CI / Format Check (push) Canceled after 0s
CI / Clippy Check (push) Canceled after 0s
CI / Build (macos-latest) (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (macos-latest) (push) Canceled after 0s
CI / Test (ubuntu-latest) (push) Canceled after 0s
CI / Build CPU-Only (Explicit) (push) Canceled after 0s
CI / Python Bindings (maturin) (macos-latest) (push) Canceled after 0s
CI / Python Bindings (maturin) (ubuntu-latest) (push) Canceled after 0s
CI / WASM Build + Size Check (push) Canceled after 0s
CI / Distributed Training Tests (push) Canceled after 0s
CI / CI Success (push) Canceled after 0s
Documentation / Build API Documentation (push) Canceled after 0s
Documentation / Build User Guide (push) Canceled after 0s
Performance Benchmarks / Run Benchmarks (push) Canceled after 0s
CI / Format Check (push) Canceled after 0s
CI / Clippy Check (push) Canceled after 0s
CI / Build (macos-latest) (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (macos-latest) (push) Canceled after 0s
CI / Test (ubuntu-latest) (push) Canceled after 0s
CI / Build CPU-Only (Explicit) (push) Canceled after 0s
CI / Python Bindings (maturin) (macos-latest) (push) Canceled after 0s
CI / Python Bindings (maturin) (ubuntu-latest) (push) Canceled after 0s
CI / WASM Build + Size Check (push) Canceled after 0s
CI / Distributed Training Tests (push) Canceled after 0s
CI / CI Success (push) Canceled after 0s
Documentation / Build API Documentation (push) Canceled after 0s
Documentation / Build User Guide (push) Canceled after 0s
Two tiers in the FSI2 pattern. The committed default (t_end 4.2) pins the deterministic release response at the digit-stable measurement (uy 10.7684 +- 23.5726 mm, ux -2.8982; +-35% bands, 2x onset-growth floor against a measured 4.6x). The sticky-mask study configuration (HYST>0, subcycle 2, t_end >= 8.4, ny 62 or 82) pins the settled flapping cycle measured across two grids at t_end 8.5 / window(2.0): uy amp in [38, 72] mm (measured 50.2 / 57.6; the un-flapped release and every pre-hysteresis dead march sit far below, and the reference +-34.9 sits OUTSIDE — landing inside the reference band is a loud finding, not a regression), mids, crossing-frequency in [4.4, 6.8] (covers the estimator's measured beat-scatter — the DFT puts both grids at 5.4-5.6 vs ref 5.46), and drag MEDIAN in [380, 530] (measured 454.0 vs ref 460.2). WindowStats gains drag/lift medians — the honest central loads (the extreme-based mids are noise-dominated at large deformation). Band anchors computed exactly as the test computes them, replayed offline against the run 7/8/10 CSVs (deterministic trajectories). Verified: both committed defaults green with the release pins live, trajectories digit-identical (FSI3's loads line gains the medians, FSI2's output byte-identical). The t_end 8.5 study pin runs at both grids are in flight. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01X2GmJXeQ2njUecEKiJZ1G2
This commit is contained in:
co-authored by
Claude Fable 5
parent
137a62c4ea
commit
a49602cf16
@@ -147,6 +147,13 @@ pub struct WindowStats {
|
||||
pub drag_amp: f64,
|
||||
pub lift_mid: f64,
|
||||
pub lift_amp: f64,
|
||||
/// Window MEDIANS of the recorded loads — the honest central values
|
||||
/// (the mid ± amp above are extreme-based and noise-dominated at
|
||||
/// large deformation; the medians measured within 0.8% / 2.7% of
|
||||
/// the FSI3 / FSI2 reference drags where the mids read 14% off or
|
||||
/// worse).
|
||||
pub drag_median: f64,
|
||||
pub lift_median: f64,
|
||||
/// uy amplitude over the first / last quarter of the coupled march.
|
||||
pub amp_early: f64,
|
||||
pub amp_late: f64,
|
||||
@@ -203,6 +210,8 @@ impl MarchResult {
|
||||
.unwrap_or(self.force_times.len() / 2);
|
||||
let (drag_mid, drag_amp) = mid_amp(&self.drag[force_start..]);
|
||||
let (lift_mid, lift_amp) = mid_amp(&self.lift[force_start..]);
|
||||
let drag_median = median(&mut self.drag[force_start..].to_vec());
|
||||
let lift_median = median(&mut self.lift[force_start..].to_vec());
|
||||
let quarter = self.uy.len() / 4;
|
||||
let (_, amp_early) = mid_amp(&self.uy[..quarter.max(1)]);
|
||||
let (_, amp_late) = mid_amp(&self.uy[self.uy.len() - quarter.max(1)..]);
|
||||
@@ -217,6 +226,8 @@ impl MarchResult {
|
||||
drag_amp,
|
||||
lift_mid,
|
||||
lift_amp,
|
||||
drag_median,
|
||||
lift_median,
|
||||
amp_early,
|
||||
amp_late,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user