Modal ephemeris release gate

The standard-library-only R121 gate mechanically prevents cross-widget ephemeris modes, schedulers and caches from drifting away from the approved policy matrix.

Run the gate

python3 modal_ephemeris_release_gate.py
python3 validate_performance_release.py

The performance validator invokes this gate together with analysis_release_gate.py and the R144 wlightcurves_merger_release_gate.py.

Release-blocking regressions

The gate rejects:

  • a widget using a policy other than its approved constant;
  • process scheduling or persistent N-body segments in WStack;
  • N-body, DOP853 or astrometric calculations inside the analytical two-body kernel;
  • RA/Dec-capable output from the photometric geometry profile;
  • loss of canonical Comet Analyzer point batching or a reintroduced second analytical execution identity;
  • loss of Planner interval preparation, dynamic comet jobs or persistent segment fitting;
  • nested process pools or Qt/Matplotlib process payloads;
  • loss of stale-result rejection, transactional commit, shared Cancel or atomic writes.

Hardware-independent workload fixture

Deterministic R121 fixtureContract
Ordinary analytical workload10,000 points; local batch
Process threshold200,000 missing points
Point-batch bounds256–2,048 points
One 10,000-point apparitionAt least 16 internal batches
12 × 20-point small apparitionsOne coalesced batch
Cosmetic redrawZero new physical calls
Planner forward interval500 points
Planner cold/warm integration count1 / 0
Planner worker maximum4 while reserving one CPU
WStack process jobs0

The fixture also asserts the exact widget matrix, deterministic ordering and absence of nested pools.

Informational benchmark

Photometric-geometry pointsMedian observed time
100.00016 s
1,0000.0149 s
10,0000.1489 s
100,0001.4972 s

The 10,000-point probe formed 24 deterministic internal batches, with a maximum batch of 417 points, and remained local. A synthetic 500-point Planner probe performed one cold integration and zero warm integrations after reopening its persistent cache. These observations are not CI thresholds.

R121 release evidence

  • Focused R111/R114–R121 gate: 71 passed, 1 skipped, 0 failed.
  • Complete deterministic QA: 1,720 passed, 7 skipped, 0 failed.
  • Final manifests: 495 QA files and 153 CLEAN files.

The skipped checks require optional complete PyQt5 or Astropy FITS/time runtimes. Target-system cold/warm timing, CPU use and GUI Cancel remain smoke checks.

Open the supplied R121 release report.