- shear_wave.fit_rate: finite late R=0 returns rate_fit_valid=false with
null fit quantities (no clipping, no invented rate); own screens and
budgets treat it as a failure (CONTROL_SCREEN_FAIL / refined FAIL),
other finite metrics retained, JSON-safe.
- test_projected_pairs: dry-run/execution mocks expect the explicit
'taylor_green' flow argument now passed to verify_source.
- run_case: SHEAR_WAVE_SHA256 repinned; extinction test added.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- shear_wave: validate_rows before screens (exact scheduled steps/t*, no
duplicates, all numeric/list fields finite, nonnegative error fields,
rho_min>0; signed amplitude/phase/interval errors keep their sign);
INVALID_RUN for invalid refined rows; own_screens_pass vs controlled_pass
so a CONTROL_SCREEN_FAIL set never reports a controlled pass; empty or
duplicate refined schemes rejected; pressure-budget redundancy stated.
- run_case: SHEAR_WAVE_SHA256 repinned to the updated module.
- tests: divergence/advection bounds use a(t) and the derived h^2 term;
invalid-row mutations; signed errors allowed; controlled_pass checks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Modal magnitude R=hypot(a,b) with amplitude error and separate phase;
free-intercept ln R rate fit with per-interval rates, log-fit residual,
t* units and finite-positive check; spurious-pressure naming with raw rms;
INVALID_CONTROL vs CONTROL_SCREEN_FAIL (refined results kept), mixed-source
check, raw ratios to both controls; docs narrow the cubic-term scope,
startup and placement limitations. oracle.py still byte-identical.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>