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.pyThe 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 fixture | Contract |
|---|---|
| Ordinary analytical workload | 10,000 points; local batch |
| Process threshold | 200,000 missing points |
| Point-batch bounds | 256–2,048 points |
| One 10,000-point apparition | At least 16 internal batches |
| 12 × 20-point small apparitions | One coalesced batch |
| Cosmetic redraw | Zero new physical calls |
| Planner forward interval | 500 points |
| Planner cold/warm integration count | 1 / 0 |
| Planner worker maximum | 4 while reserving one CPU |
| WStack process jobs | 0 |
The fixture also asserts the exact widget matrix, deterministic ordering and absence of nested pools.
Informational benchmark
| Photometric-geometry points | Median observed time |
|---|---|
| 10 | 0.00016 s |
| 1,000 | 0.0149 s |
| 10,000 | 0.1489 s |
| 100,000 | 1.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.