Problem
The exact merged Graph500 ladder (6d93bc7a194d9a591b8d3a065a52b697095a4b26) was executed on Fly.io in dfw with 2 performance vCPUs, 4 GiB RAM, a 25 GB NVMe volume, and GF_G500_LADDER_MAX_SCALE=22. The host OOM-killed the process during S20 ingest, before S20 completed.
Authoritative host evidence:
- Fly Machine event:
exit_code=137, oom_killed=true, requested_stop=false
- kernel OOM record:
anon-rss:3823708kB, file-rss:60kB for scale_g500_ladd
- last atomic journal: S20
ingest, generator completed, generator process high-water 80,023,552 bytes
- volume at recovery: 15,433,204 KiB used of 25,610,468 KiB (64%)
- no S20 pass and no S22/S24/S25/S26 attempt
This disproves the earlier interpretation that the multi-GiB signal was merely cgroup page cache. The failure is anonymous process memory during ingest. The current ladder source already notes that ingest includes the upstream bulk-publication identity set; that set or an adjacent ingest structure is not bounded independently of total edge count. This violates the disk-bound scale objective.
Required outcome
Ingest, including node identity publication and edge merge/publish, must stream or shard all scale-dependent state so process RSS plateaus with measured headroom as scale rises. Buying a larger machine is not the repair.
Acceptance criteria
- Identify the exact anonymous-memory owner during S20 ingest with phase/subphase measurements.
- Replace the scale-linear in-memory identity/publication structure with a disk-backed, streamed, or bounded-shard design owned by Rust.
- Add deterministic regression coverage proving resident state is bounded independently of total node/edge count.
- Journal process RSS within long ingest subphases often enough that a host OOM still leaves a useful recent sample.
- Re-run S20 on the same 4 GiB Fly machine class and demonstrate completion with bounded/plateauing anonymous RSS.
- Only then attempt S22, still with the explicit max-scale cap and independent storage headroom.
- Do not weaken envelope checks, raise RAM as the fix, or claim a completed rung from the interrupted run.
Blocks #745.
Problem
The exact merged Graph500 ladder (
6d93bc7a194d9a591b8d3a065a52b697095a4b26) was executed on Fly.io indfwwith 2 performance vCPUs, 4 GiB RAM, a 25 GB NVMe volume, andGF_G500_LADDER_MAX_SCALE=22. The host OOM-killed the process during S20 ingest, before S20 completed.Authoritative host evidence:
exit_code=137, oom_killed=true, requested_stop=falseanon-rss:3823708kB,file-rss:60kBforscale_g500_laddingest, generator completed, generator process high-water 80,023,552 bytesThis disproves the earlier interpretation that the multi-GiB signal was merely cgroup page cache. The failure is anonymous process memory during ingest. The current ladder source already notes that ingest includes the upstream bulk-publication identity set; that set or an adjacent ingest structure is not bounded independently of total edge count. This violates the disk-bound scale objective.
Required outcome
Ingest, including node identity publication and edge merge/publish, must stream or shard all scale-dependent state so process RSS plateaus with measured headroom as scale rises. Buying a larger machine is not the repair.
Acceptance criteria
Blocks #745.