Modal ephemeris architecture

R121 makes the approved per-widget ephemeris modes an explicit production contract rather than an implementation convention.

Authoritative widget policy matrix

ephemeris_policy.py is the final production authority. The selection is modal: each widget receives only the dynamics, output profile, scheduler and cache approved for its scientific task.

WidgetDynamicsOutput profileSchedulingCache
WVisualDE440s N-bodyAstrometric positionSerial seriesMemory trajectory
WCCDDE440s N-bodyAstrometric positionSerial seriesMemory trajectory
WStackDE440s N-bodyAstrometric positionSerial seriesMemory trajectory
WPlannerDE440s N-bodyPlanner fullComet intervalsPersistent validated segments
WLightCurvesTwo-bodyPhotometric geometryMissing physical coverage / point batchesCanonical memory geometry

Output profiles

Astrometric position

WVisual, WCCD and WStack require RA/Dec-capable astrometric results. They retain DE440s Cowell-DOP853 N-body propagation, reception/emission light-time and the established in-memory trajectory cache.

Planner full

WPlanner retains N-body and the complete planner result needed for visibility, topocentric conversion, displayed fields and best-time logic. It prepares comet intervals and can reuse validated persistent polynomial segments.

Photometric geometry

WLightCurves uses the R116 two-body photometric geometry kernel. The profile supplies r, delta and phase for analytical curves, is not RA/Dec-capable and must not import N-body/DOP853 astrometric execution.

Scheduling and cache boundaries

  • WVisual, WCCD and WStack use serial series scheduling and memory trajectory reuse.
  • WStack must create no process jobs and must not own persistent N-body segments.
  • WLightCurves uses the global point-batch route, one canonical memory-geometry identity and deterministic ordering; process scheduling is allowed only above the approved missing-point threshold.
  • A process worker must never start another process scheduler.
  • Qt and Matplotlib objects are forbidden from process payload modules.
  • Stale-result rejection, shared Cancel and transactional cache commit remain release-blocking contracts.
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

Planner persistent validated segments

Planner prepares dynamic comet interval jobs and fits validated persistent segments. The persistent cache is an acceleration layer, not a new scientific model: segment degree, validation tolerances, schema and disk limit remain unchanged. Atomic writes prevent partially committed cache files.

The deterministic reference requires one integration for a cold 500-point forward interval and zero integrations after reopening a valid warm segment. Planner may use at most four workers while reserving one CPU.

Preserved scientific invariants

R121 changes no N-body force, DOP853 tolerance, two-body conic equation, light-time equation, element/apparition selection, adaptive curve sampler, H0/n law, phase correction, Planner best-time rule or displayed field. The modal architecture prevents a valid specialized kernel from being replaced by a heavier or scientifically inappropriate route.

See N-body internal ephemeris, Analysis performance and the R121 release gate.