Internal module guide. This module is now part of
@astrology/western; use the public package README for application setup.
progressions module
Implements progressions@1/secondary-day-for-year, the secondary progression that equates one day after birth with one year of life. mapProgressionContext({ reference, targetInstant }, rules) maps each elapsed tropical year (31,556,925,216 milliseconds) to one ephemeris day and rounds the final offset once to milliseconds. Calendar anniversaries are not tropical-year multiples. Backward targets are rejected; an equal target is allowed.
validateProgressionRules requires { method: 'secondary', timeUnit: 'day-for-tropical-year', yearLength: 'tropical-2000', angles: 'naibod-mc', direction: 'forward' }. calculateProgression(request, composer, rules, geometry?) acquires positions once at the mapped instant, retaining the reference’s coordinate conventions and observers. Observed body positions remain separate from the derived MC (Midheaven).
The progressed MC adds 0.9856473590852142 × mappedEphemerisDays to the natal MC. The ascendant has no v1 construction and always reports a missing-angle factor; absent natal MC also remains unavailable. No progressed houses or inherited natal cusps are supplied.
Optional progressed-to-fixed-natal contacts use Composer geometry. Body derivatives are converted from the ephemeris clock to the target clock; MC motion remains unknown. Missing geometry is explicit. The result retains target/reference/mapped instants, context, source hashes, observations, arc and derived MC origin.
createProgressionFeature(admitted) declares Composer access and positions, with optional geometry. Use engine.operation({ profile, technique: 'progressions', request: { reference, targetInstant } }); no probe session is opened. The envelope is incomplete for the deliberately unavailable progressed ascendant.