Two fixture attempts preceded the controlled run:
1. Native getCGinfo failed on zero SNP rows. No outputs used.
2. Added a length-matched SNP-type assignment for zero-row compatibility.
The second script also reads actual NBeads from IDATs (extended=TRUE).
The initial discarded attempt had placeholder bead counts; no QC or scoring
used them. All retained outputs use actual measured bead counts.
Scientific function bodies and settings are unchanged apart from the
getCGinfo zero-row compatibility fix and previously validated parallel dispatch.
Before any whole-cohort outputs were retained, the full run was restarted to
cache annotation-only getCGinfo results. Cache reuse requires exact equality
of rowData and control metadata; intensity-dependent computations are not
cached. Two startup processes were interrupted; no completed batches existed.
After 24 arrays, processing was interrupted before batch 25 completed to
change intermediate storage only. The first three caches retain full native
objects. Later caches store lossless uncompressed Meth/Unmeth matrices plus
one shared rowData file. normalize.R supports both formats. Numeric settings,
probe sets and scoring were not changed. run_initial_storage.R.txt preserves the
previous runner. The serialization round-trip is checked separately.
After 48 arrays, remaining correction batches were increased from 8 to 16
arrays to reduce annotation overhead; correction is per-array and the fixture
already compared a 2-array run with the prior 16-array cache. All 256 arrays
remain jointly normalized. The six completed 8-array caches are preserved.
No score or normalized beta outcome was inspected to make this runtime change.

Historical runner snapshots have .R.txt suffixes and are provenance only.
