Joint-review followup — 2026-10-13
Completed only the requested gaps. No transport kernel, pinned reference,
geometric module, algorithm, tau pair or tolerance changes. No audit rerun,
32-step/Jet/dynamic-AMR run, dependency/environment change or Git push/commit.
Code: download device-read exceptions mark the backend failed; close activation
failure preserves references in failed state and permits a second close attempt.
Explicit checks (also effective under python -O) enforce HALO=4, each validated
omega=1/tau, and d_params size=struct.calcsize('=ffffI') before upload.
The existing GPU test's RSS assertion is now 256MiB, not 512MiB.
Executed checks (real stdout retained):
cpu_stdout.txt: three new CPU fault/contract tests plus the original mock
cleanup test pass. Both coarse and fine read failure are injected; close
context-manager entry failure is followed by a successful cleanup retry.
CPU parent/children use 256MiB RLIMIT_AS, 2MiB RLIMIT_FSIZE, core=0.
Peak child RSS 46,380KiB. First CPU attempt exposed an incorrectly configured
test Mock, corrected before rerunning; that failed stdout is also retained.
gpu_seed1_stdout.txt: ordinary non-instrumented build, identical seed1 initial
state, eight coarse steps, FP32 G versus pinned FP64 C(F_ref):
maximum population error 1.67235548e-7 (limit 3e-6)
maximum leaf mass/momentum drift 2.23806128e-5 (limit 2e-4)
maximum leaf reference discrepancy 2.20813948e-5 (limit 2e-4).
These match the preceding audit-build observations. No audit was rerun.
gpu_rectangle_stdout.txt: ordinary build, ONE coarse step on 17x13 coarse,
bounds=(2,2,6,5), fine=16x14 including halo. Offcenter/non-square, x/y margin2,
distinct layer dimensions. Asymmetric nonequilibrium G0, compared with a
small independent scalar G-to-G oracle using closed-midpoint geometry and
no production exchange tables. Maximum population error 1.14050047e-7;
full raw fine halo NaN/valid mask and public leaf mask match. Device arrays
35,288 bytes. This adds bounded rectangle coverage, not a general accuracy
or arbitrary-grid certification.
Resource handling, including unsuccessful starts:
Every actual job has its own immediately preceding gpu_*_before.json with
physical UUID, utilization, memory and compute-apps. Only physical GPU0 used:
GPU-e8853ae7-a302-6a17-bcfa-aa767e9ed20c. Successful starts: 0%, 5MiB, no apps.
Initial launcher stopped before starting on a units-parsing mistake; snapshot
retained. After correction, original compile-inside-context test was killed by
our monitor at 268,984,320 bytes summed process-group RSS (256.52MiB), while
compiling the second module: no flow steps had run. gpu_results.json records
the -9 exit and contributing Python/nvcc/cicc processes. Its residual build
was identified by exact source/config metadata plus in-job timestamp and
removed; cleanup.json records that check.
No budget increase: test-only normal_backend now compiles normal refinement.cu
before creating a context, then matches exact generated source digest and
architecture when loading. Each case runs in a fresh process. Ordinary compiler
flags, kernel and production loading/transport behavior remain unchanged.
Successful seed1/rectangle sampled process-group peaks: 194,113,536 and
194,244,608 bytes (~185MiB), including any live compiler children. Device arrays
remain below 128KiB. One rectangle launch was refused at utilization 6% despite
no listed apps; a new idle snapshot preceded the later successful launch.
RSS polling at 20ms is a monitoring threshold, NOT an OS hard memory limit;
summing RSS conservatively double-counts shared pages. CUDA virtual address
mappings are not limited with RLIMIT_AS. Output/core use OS limits, combined
raw stdout is also watched against 2MiB, and elapsed time against 120s.
Only the test's own new process group is terminated on a threshold violation.
The runner itself is outside that group. All new per-job temporary directories
were cleaned. run_gpu.py records the exact reproducible harness and skips
already successful cases when resuming these evidence files.
Existing pycuda_3_10 Python and explicit /home/frank14f/CelerisLab/src used;
package/kernel/source paths asserted. Full commands, process-only settings,
snapshots, times and RSS are in the JSON records; no DynamisLab access.
incremental.patch is relative to THIS round's frozen start: two small existing
file changes and one new followup test. Baseline verification is limited to the
15 relevant source/reference/prior-evidence files, preserving unrelated dirty
work; the 13 outside the intended two edits remain byte-identical. Prior-round
validation files are untouched. Independent read-only agent review found no
remaining blocker. No long-time interface/stress accuracy claim is added.