test(rtx-fsi): coupling-level rescue rung A (RTX_FSI{2,3}_CRESCUE, default off) + TRACE_FROM autopsy window
CI / Build CPU-Only (Explicit) (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 / Test (macos-latest) (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (ubuntu-latest) (push) Canceled after 0s
Documentation / Build API Documentation (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
CI / Build CPU-Only (Explicit) (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 / Test (macos-latest) (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (ubuntu-latest) (push) Canceled after 0s
Documentation / Build API Documentation (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
Coupling-rescue campaign (omni-cortex docs/coupling_rescue_campaign.md).
Every recorded FSI2 s=1 coupling death is the END of a multi-step
runaway (74-march burst scan: green marches never exceed 2.4x their own
p95 tip jump; 27/28 deaths burst 5-37 steps first). The traced autopsy
of the (1.27, 2.0) death (replay digit-identical, CSV byte-identical)
shows a growing period-2 instability of the CONVERGED coupled scheme at
the tip's max-velocity crossing: increment x33 and converged load
1e4 -> 1e6 N over 200 steps with the coupling converging on 111 of the
first 112 steps.
- march.rs: RTX_{prefix}_TRACE_FROM (print-only autopsy window: per-pass
residual/load + one line per step with increment, tol_step, retry_at,
acceptable, outcome, committed tip jump); RTX_{prefix}_CRESCUE (default
off): on a fatal stall or a committed tip jump > 3x the running p95
(trailing 2000 non-rescued steps), reject the step and repeat the
interval as 2/4/8/16/32 coupled substeps of dt/n (Mayr-Wall-Gee
reduced-step repetition, five repetitions); per-rescue record printed,
MarchResult.coupling_rescues/_failures/rescue_records, rate cap 20
rescues per second of march (dies loudly).
- rescue.rs (new): the substep ladder — each substep a complete coupled
step at dt/n with its own predictor, fresh coupler, C1 velocity
chaining, tolerances at the substep's increment; the march's own step
path is NOT routed through it (digit identity by construction).
- rtx-fea NonlinearDynamicStepper::step_with_dt (step at an explicit dt;
step() delegates float-for-float); Fsi2Harness::advance_subcycled_with
(explicit fluid dt; advance_subcycled delegates).
Verified: FSI2 + FSI3 committed defaults and the noise probe
digit-identical knob-off vs same-day / 2026-08-31 baselines; knob ON
on the anchor u=1.00 r=1: green, zero rescues, CSV byte-identical to
TWIN-1's u1.00.csv; fmt + clippy clean on the touched files.
Verdict of rung A on the provocation set: REFUTED 3/3 by mechanism —
every rescued interval was carried but reproduced the rejected step's
motion (dt/2..dt/32 give the same jump), so the runaway lives in the
coupled LOAD at the crossing, not in the time integration; the
SUBCYCLE=2 closure marches through the same crossing. The knob stays,
default off, as the instrument that measured this.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01X2GmJXeQ2njUecEKiJZ1G2
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
0f578087ce
commit
e76271ac67
@@ -160,6 +160,8 @@ fn fsi2_flapping_flag() {
|
||||
snap_every: 10,
|
||||
initial_relaxation: 0.5,
|
||||
trace_steps: 0,
|
||||
trace_from: usize::MAX,
|
||||
coupling_rescue: false,
|
||||
c1_interface: false,
|
||||
predictor: "structure".into(),
|
||||
quiescent_release: false,
|
||||
@@ -188,7 +190,8 @@ fn fsi2_flapping_flag() {
|
||||
" FSI2 (fluid ny = {ny}, flag {flag_nx}x2 Quad8, dt = {:.2e}, {}): coupled {} \
|
||||
steps in {:.0} s wall total; {:.1} subit/step (max {}); {} stalled steps, {} \
|
||||
history-reset retries (worst residual {:.2e}); worst conservation {:.2e}; \
|
||||
skipped samples {} (of which {} spike-clamped); Newton rescues {:?}\n \
|
||||
skipped samples {} (of which {} spike-clamped); Newton rescues {:?}; coupling \
|
||||
rescues {} (+{} failed ladders)\n \
|
||||
measured over [{:.1}, {t_end:.1}] s: \
|
||||
uy(A) = {:.4} ± {:.4} mm (ref {:.2} ± {:.1}), ux(A) = {:.4} ± {:.4} mm (ref {:.2} ± \
|
||||
{:.2}), f = {} Hz (ref {REF_UY_FREQ}); onset amp {:.3e} -> {:.3e} m",
|
||||
@@ -205,6 +208,8 @@ fn fsi2_flapping_flag() {
|
||||
result.skipped,
|
||||
result.spiked,
|
||||
result.newton_rescues,
|
||||
result.coupling_rescues,
|
||||
result.coupling_rescue_failures,
|
||||
w.t_start,
|
||||
w.uy_mid * 1e3,
|
||||
w.uy_amp * 1e3,
|
||||
|
||||
Reference in New Issue
Block a user