FROZEN BEFORE GPU — bounded fine-surface/interface validation, 2026-10-14

Scope: exactly three independent trajectories speed=0,+.002,-.002, each24
coarse/48fine steps, same physical time[0,24]. No other GPU tests, extensions,
parameter sweeps or time extensions. Read-only hook instrumentation of normal
production build, no audit macro and no stepping/formula changes.

Geometry: periodic24x24 coarse domain; patch edge bounds[4,20)x[4,20);
fine40x40 including4halo; origin edge(2,2); fine dx=dt=.5; coarse dx=dt=1.
Circle physical center(12.25,12.25),radius2.15 => fine integer center(20,20),R4.3.
Stationary solid; surface angle.7rad,half_width.85rad,C1 amplitude0,+/-.002.
nu_coarse=.05,tau_coarse=.65,tau_fine=.8; unforcedD2Q9SRT,FP32,unshiftedDB.
Initial rho1,u0,Q-major postcollision equilibrium, same FP32 initial populations.
All initial sources and device omega are checked. Actual package path must be
/home/frank14f/CelerisLab/src. The preserved old tests are not changed or run.

Validity at every fine/coarse hop and publication:
All valid fluid leaves finite, density(.9,1.1) and |u|<.05 in local collision
oracle validity regime. Fine solids and outermost2halo after each fine hopNaN;
inner ghost exactly stream-only including legitimate directionalNaNs.
Published fine ghost/solid and coarse coveredNaN. Geometry and flags unchanged.

Propagation definitions (strict >; horizons and masks never adjusted):
- Fine band: fine active fluid nodes with any D2Q9 nonrest neighbor outside
  geometric active patch, excluding solid boundaries.
- Coarse interface: uncovered receiver cells of actual coalescence map.
- Coarse bulk: ALL uncovered coarse fluid except that interface receiver set.
- Transfer neq: actual replaced q component of the full reconstructed coarse
  incoming vector minus FP64feq(rho,u) of that same incoming vector, BEFORE
  coarse collision. Do not form full macros from partly valid ghost children.
- Fine band neq: postcollision g minus FP64 equilibrium from its own macros.
- Velocities: FP64 moments of published postcollision g / rho.
- Physical coordinate coarse(I+.5,J+.5);fine(2+.5*(i+.5),2+.5*(j+.5)).
  Interface transfer and publication sampled at integer physical t=1..24.
  Boundary substeps at t=n-.5,n; no claim of sub-integer arrival resolution.
- At each same point/q,time,phase compare driven and ZERO trajectory:
  velocity norm difference>1e-6 AND >10*zero velocity norm;
  neq absolute difference>1e-7 AND >10*abs(zero neq).
  Fine-band criterion uses maxq at each node for BOTH signal/baseline; this
  conservatively requires excess over the largest zero neq at that node.
- For BOTH signs, all4 metrics (fine-band neq, actual-transfer neq,
  coarse-interface velocity, coarse-bulk velocity) must cross by24 or FAIL.
  Record each first qualified sample and global peak's time,physicallocation,
  baseline,absolutevalue,signal; per-step maxima and qualifying flag retained.
  These are aligned signal witnesses, not necessarily the same node/direction.
  This tests startup distribution/macroscopic propagation, possibly acoustic;
  not established jet advection, physical accuracy or shear-only transmission.

Ledger (M maps9populations to mass,px,py; area weights coarse1,fine1/4):
L_n=M(sum coarse leaves+1/4 sum fine fluid leaves), FP64 accumulation.
Each of48fine hops individually captures pre-BFL and staged BFL populations.
B_h=1/4 M(actual solid-to-fluid arrivals minus fluid-to-solid departures).
F_h=1/4 M(actual ghost-to-fluid arrivals minus fluid-to-ghost departures).
B_n=B_h1+B_h2; F_n=F_h1+F_h2. No using latest buffer as two-hop sum.
C_n=M(actual reconstructed coarse incoming minus previous coarse leaves),
including periodic native streaming, all replacement links and8grazingcorners.
Coarse incoming constructed from independent physical midpoint map; compare
all target/source slots to actual tables. avg32=.25*((a+b)+c+d) inFP32.
RAW_n=L_n-L_(n-1)-B_n-F_n-C_n; cumulative raw uses same initial/final leaves.
Report RAW and driven-minus-zero RAW FIRST, never call them corrected to zero.

Source-based rounding decomposition and separate fixed checks:
1. Each fine/coarse collision: reconstruct actual FP32 input using pure pull
   and avg32 where applicable. Independently evaluate FP64 SRT at the actual
   device FP32omega, verifying omega against tau and force=0.
   Every q,node must obey |GPUout-SRT64(input)| <= 8*eps32*|input_q|.
   This fixed local, near-rest acceptance bound reflects short FP32 rho/macro/
   feq/FMA path and fast-math compilation; it is not a general roundoff theorem.
   Report max absolute error and max normalized ratio, and fail if ratio>1.
   Cround = weighted sum M(GPUout-input) measured LOCALLY, independently of L
   or RAW. Record FP64 ideal moment defect and measured GPUout-ideal separately.
   Arbitrary collision error cannot be excused solely by global closure.
2. Transfer Tround=M(avg32-avg64exact), computed independently from actual4
   children. Require each slot <=gamma3*sum|children|/4, u=eps32/2,
   gamma3=3u/(1-3u); exact power-of-two scaling in this normal positive regime.
   avg32 already in C_n, so DO NOT subtract Tround a second time.
   Also report RAW_exact_average=RAW+Tround to expose this source explicitly.
3. BFL local oracle abs error<=1e-7, actual active cells unchanged.
4. |RAW_n-Cround_n|<=1e-10 componentwise per interval;
   |sum RAW-sum Cround|<=1e-9 cumulative. These are FP64 bookkeeping bounds,
   NOT a physical-conservation/accuracy test. No broad eps*whole-domain
   accumulated budget used to label raw conservation as passing.
5. Both driven cases' cumulative actual-minus-passive-oracle boundary mass
   has same sign as specified normal speed. BFL passive evaluated on same
   actual populations; not another trajectory and not a conservation fix.

Saved data: pertrajectory24ledger rows,72local collision rows,48fine boundary
rows; small compressed diagnostic signals for reproducible zero comparisons;
no full-field populations. Per-step link_exchange_GPU also saved separately:
latest fine Fx,Fy scaled1/4; torque scaled1/8 for physical lever length. These
body momentum diagnostics differ from fluid mass exchange and are NOT thrust
or exchange rate. A fine-hop fluid exchange rate is B_h/.5; the coarse interval
rate is (B_h1+B_h2)/1, numerically equal to interval sum only because dt_c=1.
Do not equate B_h2/latest with two-hop interval sum.

No post-result tolerance/formula/window changes, retries or added steps to
chase PASS. Preserve errors with real stdout/exit. Report precise unmet checks.
Resource guards: fresh physicalGPU0UUID/apps/VRAM/RAM, onlyGPU0ifidle; no
other task interference; 180secondwalltimeout; current available RAM reserve
max(4GiB,10%),VRAM reserve max(512MiB,10%), own temporary+evidence<=2GB.
Sample own process group RSS, no fixed address-space/RSS cap; remove only owned
scratch. Every text artifact<=40000characters. Hash criteria/script/source at
freeze then verify before launch; preserve all previous dirty/evidence.

Reference trace: accepted local tests/test_fine_surface_gpu.py BFL/flux hooks;
refinement.cu actual two fine hops and coalesce order; macro.cuh and
collision_srt.cuh actual FP32 collision path; compiler_v2.py --use_fast_math.
Previously accepted OpenLB defineU2D.hh74-79/offBoundaryPostProcessors2D.hh115-127
remain BFL hit/stencil reference; no new CFD formula or borrowed code.
Production change limited to one coordinate-frame documentation sentence.
