Files
..

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.