4.5 KiB
One bounded bodyless SRT inlet control
Preparation only; review precedes any GPU admission. This test-only opt-in is based on
8e378aa047. Historical first-health evidence and its source
manifest are untouched. The control calls the same pinned D80 config factory and uses
unchanged production Simulation.initialize() / run(1); --without-cylinder changes
only the single cylinder object list to empty. No profile, wall/source plane, domain,
collision, relaxation, speed, representation, step cap, health limit or field observation
is adjusted. SRT tau=.524 and the existing inlet/outlet remain as in the failed run.
Production already supports zero objects through ensure_packed_buffers. The absent
body has no force observable: the control never calls read_force(0), records force:null
and force_observation:not_applicable_no_body, and does not invent a zero force. Physical
population/macro/Mach/density checks remain intact. Existing per-step diagnostics, first
health crossing, immediately preceding/current raw+decoded state capture, 128 MiB budget,
external watchdog and maximum 320 steps remain unchanged. No extra baseline run is needed.
Removing the cylinder necessarily turns its former solid cells into fluid. Those cells
receive the same production parabolic fluid initializer; shared fluid and boundary-ghost
cells retain the original initializer and configuration. This is not a transplant of the
baseline's solid-cell state into new fluid. Removing the body also removes its cut links
and specializes the existing kernel for zero objects, as ordinary Simulation already does.
The spatial body_near category is retained only as the former-cylinder neighborhood
for comparing locations. It does not claim an actual body is present; body-solid flag
counts should be zero in the control.
Explicit identity and source checks
The unchanged manifest still pins numerical source 9805383, as used by the baseline8e
harness. The new test-only HEAD does not pretend to be that historical run. Preflight,
READY and diagnostic/result records include the control label, original baseline harness
commit, new diagnostic checkout revision/dirty status, selected numerical checkout
revision/dirty status, and new diagnostic file hash. Production/helper bytes are verified
against the original manifest before either case. A later development checkout with
changed numerical files is rejected; the old pin is not silently accepted or regenerated.
The default cylinder case remains available for compatibility, but this requested control
uses only --without-cylinder and a distinct new output directory.
Interpretation before seeing outcomes
- Similar early inlet-region failure without a cylinder: cylinder presence is not necessary for this observed short-time instability under these settings. This supports investigating inlet/collision/kinetic-state dynamics; it does not prove a specific boundary defect or exclude other shared boundaries/initialization effects.
- No health violation through 320: removing the body changes the observed onset, consistent with a body-generated transient or altered amplification interacting with the inlet. This does not prove the cylinder is erroneous, establish inlet stability beyond320, or certify SRT generally.
- Different failure location/time: geometry affects the transient; classify the preserved incoming distributions and moments before assigning any mechanism.
The baseline failed at196 on finite Mach>.2, not nonfinite state. A control can likewise stop on a finite threshold crossing. Do not describe either as a NaN blow-up unless the separate diagnostic flags establish that.
CPU-only checks:
python tests/validation/uniform_srt_diagnostic/test_diagnostic.py
python tests/validation/uniform_srt_diagnostic/diagnose_uniform_srt.py --without-cylinder --output /tmp/new-bodyless-preflight
After review and root admission, from the explicitly recorded test checkout:
CUDA_VISIBLE_DEVICES=<admitted-device> timeout --signal=TERM --kill-after=30s 240s python tests/validation/uniform_srt_diagnostic/diagnose_uniform_srt.py --without-cylinder --execute --gpu-admitted --wall-seconds 180 --output output/new-srt-bodyless-control
This patch performs no GPU run or remote push. Original runner gates/results and production files are unchanged. The extra tests verify removal-only selection without mutating inputs, reject unexpected object sets, verify absence of force readback, and retain physical health failures when force is unavailable.