# Calculation specification — Cosmic Blueprint, edition 02

## Separate layers

The measured sky, the house geometry, and symbolic interpretation are separate data layers. An IAU constellation is a region on the celestial sphere, not a 30-degree sign. A house in the Inner Roots Alchemy method is an Ascendant-anchored segment of ecliptic longitude. A house archetype does not determine a planet’s actual constellation.

## Birth data and time

Input is a proleptic Gregorian civil date, exact local clock time, geographic latitude (north positive), longitude (east positive), and IANA timezone. Temporal converts the local time using the host browser’s historical timezone database. Repeated clock times require an explicit earlier/later choice. Nonexistent clock times are rejected. Supported years: 1800–2399 inclusive. Latitude magnitude must be less than 89.9 degrees; exact polar singularities are excluded. Location lookup is a convenience, not a substitute for verifying the birthplace and historical civil-time record.

UTC is passed to the ephemeris as an approximation to UT1. DUT1 is not fetched; the resulting angular uncertainty is small compared with ordinary birth-time rounding but is not zero. Swiss Ephemeris supplies delta-T internally. Birth elevation, atmospheric refraction and topocentric parallax are not applied; planet positions are geocentric.

## Ephemeris and angular coordinates

Swiss Ephemeris 2.10.03 compiled to WASM supplies the Sun, Moon, Mercury through Pluto, Chiron, and true ascending lunar node. `swe_calc_ut` flags are SWIEPH | SPEED (258), giving apparent geocentric tropical ecliptic longitude of date, ecliptic latitude and angular speed. “Tropical” here names the coordinate origin (equinox); it is not used to assign tropical zodiac signs. No ayanamsa is used or needed for IAU constellation lookup.

Negative longitude speed means retrograde. The South Node is the North Node’s antipode, with the same longitude speed and opposite latitude. These nodes are mathematical points, not celestial bodies. Chiron is calculated with `seas_18.se1`. A Chiron error becomes an explicit unavailable record. A silent fallback to Moshier for a requested physical body is rejected.

ASC and MC come from native Swiss house-angle calculation. Only the angles are used from the built-in equal-12 call; none of its twelve cusps is used. Our thirteen cusps are calculated separately. The MC remains an independent astronomical angle and need not be a house cusp.

## IAU constellation assignment

For each body, a second Swiss call uses SWIEPH | J2000 | NONUT | EQUATORIAL. Its apparent direction is expressed against the mean J2000 equatorial axes. Full RA and declination are retained, including ecliptic latitude.

A fixed rotation matrix exported from Astropy 8.0.1 converts mean J2000 to mean B1875 equatorial coordinates. It is generated with PrecessedGeocentric at the same J2000 observation epoch for both frames, avoiding an extra aberration change. It uses IAU 2006 mean-frame precession. The converted direction is classified against the 357 Roman (1987) rows representing the Delporte/IAU constellation regions. Longitude intervals are lower-inclusive and upper-exclusive. Exact boundary points use the first matching table row. Numerical boundary ties are conventions, not physical discontinuities.

We deliberately do not use Astronomy Engine’s built-in constellation classifier: the independent edge checks found a small mean-versus-true B1875 frame discrepancy. Astronomy Engine remains the coordinate-rotation library for converting ecliptic vectors to mean J2000 vectors.

A body may lie in Serpens or another region outside the thirteen constellations intersected by the ecliptic. The app shows that actual region, without forcing it into a zodiacal label. The standard name Scorpius is displayed as Scorpio, and Capricornus as Capricorn; raw names are retained in chart data. An Astropy names-file typo, Ophiucus, is normalized to Ophiuchus.

## Default: constellation-proportional thirteen houses

Epoch: **J2000.0 mean ecliptic and equinox**. Mean obliquity: 84381.406 arcseconds, via Astronomy Engine’s ECL → EQJ matrix. We sample ecliptic latitude beta = 0 and longitude lambda from 0 through 360 degrees at 0.25-degree increments. Every change in constellation label brackets a boundary; 32 bisections refine that bracket. Thirteen unique contiguous regions in the requested order must be found or the calculation fails.

Let b_i be the ecliptic entry longitude of constellation i. Its span is w_i = (b_(i+1) − b_i) mod 360. These measured widths sum to exactly 360 degrees to floating-point tolerance. A numerical root tolerance does not imply the underlying astronomical boundary realization is accurate to that many digits.

The widths are fixed at J2000 for reproducibility. They measure ecliptic arc, not constellation area and not exact time spent by the Sun. Earth’s varying orbital speed means passage durations are not exactly proportional to those angular widths.

Let A be the birth Ascendant longitude. The first cusp is A. Cusp k is `(A + sum(w_i for i < k)) mod 360`. The first width always belongs to Aries, then Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Ophiuchus, Sagittarius, Capricorn, Aquarius, Pisces. The sequence is not rotated to start with the Ascendant’s own constellation.

For a body at longitude L, set d = (L − A) mod 360. Its house is the interval whose cumulative start is <= d and cumulative end is > d. A body exactly on a cusp belongs to the following house; a 1e-10-degree tolerance handles floating-point equality. House 13 wraps back to A. With unequal widths and thirteen sectors, the Descendant is not forced onto House 7’s cusp.

These are **Ascendant-anchored proportional houses, not fixed IAU constellation regions**. The model is the Inner Roots Alchemy Constellation Proportional method. These symbolic houses are not fixed IAU constellation regions.

## Optional equal comparison

The comparison uses 13 widths of 360 / 13 degrees, with the same Ascendant anchor and interval convention. This follows Sachi the Seer’s stated preference for thirteen equal Ascendant-based houses. Her article does not specify ephemeris flags, boundary transformations, node type, epoch, time conversion, or boundary ties; those choices are the engineering adaptations documented above.

House archetypes follow the sequence requested: Houses 1–8 retain their familiar Aries–Scorpio associations; House 9 adds Ophiuchus, integration, alchemy, transcendence and Spirit; Sagittarius–Pisces then correspond to Houses 10–13. The original house descriptions and reflection prompts are symbolic content, not assertions that astronomical coordinates diagnose personality or health.

## Wheel and data presentation

The inner constellation band follows actual IAU intersections of the birth-date true ecliptic (not the fixed J2000 house template). Its labels describe beta = 0 on the sky path. Planet tick marks preserve exact ecliptic longitude; closely spaced symbol labels are separated and connected to their actual ticks. The placement list follows each body’s full sky position, which may differ from the beta = 0 band beneath it. Outer house sectors follow the selected house mode. Switching mode changes computed cusps, assigned houses and interpretation selection, never planetary positions.

## Sources

- Sachi the Seer, “The 13 House System,” published 2023, updated 2024: https://www.sachitheseer.com/post/the-13-house-system-a-necessary-system-for-real-sky-true-sidereal-astrology
- Swiss Ephemeris: https://www.astro.com/swisseph/ and https://github.com/aloistr/swisseph
- Astropy get_constellation documentation and source: https://docs.astropy.org/en/stable/api/astropy.coordinates.get_constellation.html
- Roman 1987 boundary catalogue VI/42: https://cdsarc.cds.unistra.fr/viz-bin/cat/VI/42
- Astronomy Engine: https://github.com/cosinekitty/astronomy
- Open-Meteo geocoding: https://open-meteo.com/en/docs/geocoding-api

## Indian lunar mansion layer

The primary natal constellation remains the full IAU sky assignment. The mansion layer is explicitly a separate conventional sidereal system: Swiss `setSiderealMode(1)` (Lahiri) and SWIEPH | SPEED | SIDEREAL calculate the Moon's sidereal longitude directly. The displayed ayanamsa comes from `getAyanamsaExUt(jd, SWIEPH)`, including the flag conventions required to relate the displayed tropical/apparent and sidereal values.

For normalized sidereal longitude L: index = floor(L / (40/3)); pada = floor((L − index * (40/3)) / (10/3)) + 1. Sectors are lower-inclusive. The conventional navamsha sign index is floor(L / (10/3)) mod 12, in the usual Aries-to-Pisces sequence. These navamsha names do not replace the IAU label and are not thirteen signs. The mansion lord is the repeating Vimshottari sequence Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury, beginning with Ashwini. A timing lord is not the presiding deity or a house ruler.

Symbols and purushartha correspondences follow Komilla Sutton's named published table, with primary historical deity texts and individually cited hymns used for mythological context. Psychological and spiritual reflections are original contemporary interpretations. Variant deity readings are retained explicitly. Indian28/Abhijit, Chinese28 and Arabic28 have educational treatment and historical catalogues; natal assignments for these28-mansion conventions are unavailable. No equal27 calculation is relabeled as another tradition.

## Aspects and configurations

Separation is the shortest ecliptic-longitude difference in [0°,180°]. Aspect types are conjunction0°, sextile60°, square90°, trine120°, quincunx150°, opposition180°. Natal maximum orbs are6° for0/90/120/180,4° for60,2° for150. Sun/Moon contacts extend major0/90/120/180 aspects to8°; contacts involving Chiron, a node or an angle are capped at3° (quincunx remains2°). The node-pair opposition is omitted because it follows from their mathematical definition. Wider-orb aspect strength is normalized by its permitted orb.

For natal planet contacts, applying/separating uses the signed error relative to the nearest oriented exact aspect and the instantaneous relative longitude speed. Error × relative speed <0 is applying, >0 separating. Natal angles have no supplied rotation speed, so their applying/separating status is unavailable. In transit calculations, the natal point is fixed and only the transiting speed enters the derivative. Applying does not promise a future exact crossing.

Grand trines, T-squares and Yods are detected from the actual qualifying pair aspects. The11 physical bodies are considered, excluding nodes and angles. Yod/quincunx symbolism is a modern addition. No thirteenfold aspect geometry is used. SVG aspect endpoints use true ecliptic longitudes, independent of displaced label positions. Aspect identifiers select the matching detailed record.

## Annual focus

Age is completed civil years at the selected instant expressed in the birth IANA timezone. The transition is at local birthday midnight; a February29 birth uses February28 in non-leap years. Before birth, profection is unavailable. Activated13-house number = age mod13 +1; age0 is House1. Unequal widths do not alter annual duration. This is an experimental adaptation of traditional twelve-sign annual profections, named Inner Roots13 in the interface.

In the13-house convention, the actual IAU constellation at the activated ecliptic cusp in the birth-date coordinate frame determines the ruler lookup. The classical same-name zodiac correspondences are transferred explicitly: Aries/Scorpio→Mars, Taurus/Libra→Venus, Gemini/Virgo→Mercury, Cancer→Moon, Leo→Sun, Sagittarius/Pisces→Jupiter, Capricorn/Aquarius→Saturn. This transfer is a modern convention; astronomy does not supply planetary rulers. Ophiuchus has no classical ruler and is left unassigned. The fixed house archetype is not the cusp constellation. Sachi's Chiron proposal is explained but not applied.

The optional12-year comparison uses the conventional Lahiri sidereal Ascendant sign as first whole-sign house, advances age mod12 signs, and uses the same classical rulers. This is a sidereal implementation of the traditional12-cycle geometry, not a claim of one universal historical zodiac. It is explicitly separate from the real-sky13-house reading.

## Transits, phases and event times

The date control is explicitly UTC. Now captures the actual instant when tapped. Transit bodies use the same ephemeris flags and full-sky classification as natal bodies. Transit houses are measured in the fixed natal houses, not a newly erected event chart. Orbs: transiting Moon1°, Sun/Mercury/Venus/Mars2°, other bodies3°;150° contacts capped at2°. Nodes-to-nodes are excluded as a duplicated axis. Ranking adds weight4 for Jupiter/Saturn/Uranus/Neptune/Pluto/Chiron (1 otherwise),2 for natal Sun/Moon/ASC,3 for the time lord, and2×normalized aspect strength. The top4 distinct body/target pairs form the editorial summary; all qualifying contacts remain accessible.

Exact dates for the4 selected contacts are searched ±45days. A1-day scan (0.25day for Moon) brackets signed longitude-error crossings, rejecting the180° wrap discontinuity. Thirty-two bisections refine each crossing. Windows are clipped to the supported ephemeris range. A tangential exact touch with no sign change may not be detected; displayed dates are crossings found in this bounded search, not an exhaustive lifetime forecast. A station does not imply a guaranteed aspect crossing.

Station events are zeros of Swiss longitude speed for Mercury through Pluto and Chiron, scanned daily ±45days and refined by bisection. Node fluctuations are excluded. Missing Chiron data do not yield invented stations. Phase elongation is Moon longitude minus Sun longitude modulo360;8 phase names use nearest45° bins. Illuminated fraction comes from Astronomy Engine's physical illumination calculation, rather than treating longitude elongation as a photometric fraction.

Upcoming new/full moons are initially bracketed with Astronomy Engine and refined using Swiss apparent longitude differences equal to0°/180°. The next global solar/lunar eclipse maximum and type come from the Swiss eclipse search functions. These are global events, not local visibility predictions. Event contacts are only natal conjunctions/oppositions within3°. Results beyond2399 are omitted.

## Reading generation and privacy

The reading is a deterministic composition of measured placements, house occupancy, closest contacts, mansion data, profection convention and ranked transits. It uses curated symbolic prose and explicit evidence labels; it does not call a language-model API or claim to infer biography, subconscious beliefs, health or destiny. Reflection prompts are contemporary Inner Roots interpretation. No protected EAB clearing sequence or original uploaded document is bundled.

The full reading is printable and downloadable as self-contained HTML, including sources and birth details. JSON contains input and structured calculation results; importing recalculates from the input rather than trusting submitted planetary values. Saved charts remain in browser local storage. City search alone calls Open-Meteo. The educational library is available before entering birth data.
