Home / Engine / Chart and Pipeline Engine
Updated Jun 19, 2026 · Affirmology_CosmicBlueprint_EngineUpgrade_BuildBrief_v1.md
Goal (Jeff): "be the masters of the cosmic blueprint." Compute the full chart and feed ALL of it into report generation AND Hermes, so readings are real, not a list of positions.
Source of truth for WHAT to add: CLAUDE OUTPUTS/Affirmology/Affirmology_EngineCoverage_Gaps_v1.md (the 7-priority gap analysis). This brief is HOW to implement it, in order, with what is already built.
affirmology-agent/src/affirmology/chart/aspects.py - the aspect grid (major + minor, orbs, applying/separating, aspect-to-angles). compute_aspects(planets, points=[...]) + aspects_text(). This is Priority 2, the single biggest quality jump.affirmology-agent/src/affirmology/chart/extended.py - no_file_points() (Black Moon Lilith mean+true, Part of Fortune, Part of Spirit sect-correct, Vertex + anti-Vertex; NO data file) and asteroids() (Chiron + Ceres/Pallas/Juno/Vesta; needs the data file, best-effort skip if absent).Both parse clean. They are NOT wired into compute_astrology yet (so nothing changes until Code wires + tests them). That wiring touches the locked demo's chart path, so it must be regression-tested on the Mac.
chart/astrology.py compute_astrology, after planets + houses, build the sensitive points list (Ascendant, MC, and the extended points from Step 2) and call aspects.compute_aspects(planets, points=[("Ascendant", ascendant), ("MC", midheaven), ...]).aspects field to AstrologyChart (models.py) and include it in to_summary() / json.reports/render.py, add the aspect table (use aspects.aspects_text) into render_astrology_facts (or as its own block in render_all_facts).compute_astrology, after ascmc + Sun/Moon are known, compute the Sun's house, then extended.no_file_points(jd, EPHE_FLAG, ascmc, ascendant, sun_lon, moon_lon, sun_house). Append each returned point to the chart. Simplest representation: append as Planet.from_longitude(...) so they flow through the existing house-assignment and rendering (tag them so the renderer can group them under an "Extended points" heading).render_astrology_facts (a "Lots, Lilith & Vertex" section).affirmology-agent/out/*/extended_points_facts.md and CLAUDE OUTPUTS/Affirmology/Affirmology_ExtendedPoints_JeffAndSol_v1.md. The engine's output MUST match those values (e.g., Sol's Black Moon Lilith in Taurus 2nd house; Jeff's Part of Fortune end of Libra into Scorpio, 9th). Use them as the test assertion.seas_18.se1 (asteroids incl. Chiron, Ceres, Pallas, Juno, Vesta for 1800-2399), and for full planet/moon precision sepl_18.se1 + semo_18.se1. Source: the Swiss Ephemeris distribution (astro.com ftp, or the aloistr/swisseph GitHub ephe/ folder).AFFIRMOLOGY_EPHE_PATH=/path/to/ephe.affirmology-studio/api/Dockerfile, download the .se1 files into e.g. /app/ephe and set ENV AFFIRMOLOGY_EPHE_PATH=/app/ephe. (Small files; bake them into the image.)compute_astrology, replace the current Chiron-via-Moshier OPTIONAL_BODIES loop (which silently fails) with extended.asteroids(jd) (uses FLG_SWIEPH + the ephe path). Append results as planets. Keep the best-effort skip so a missing file never breaks a chart.chart/vedic.py.Affirmology_VedicEngine_PhasedPlan_v1.md. Each phase passes a known-Vedic-chart fixture before shipping.numerology.py): Karmic Debt (13/4,14/5,16/7,19/1), Karmic Lessons + Hidden Passion, all four Pinnacles/Challenges with date ranges, Personal Month/Day, Cornerstone/Capstone/first-vowel/Balance/Bridge.Everything must flow into reports/render.py render_all_facts so it reaches BOTH the reports AND Hermes (Hermes's get_person_chart / consult_oracle read render_all_facts). So when Steps 1-3 land, Hermes immediately gets aspects, lots, Lilith, Vertex, Chiron, and the asteroids in every chart it pulls.
pytest (the existing fixtures) after every change. All additions are ADDITIVE; no existing field should change value.affirmology-studio/affirmology-agent, rebuild the Docker image (with the .se1 files), deploy, and spot-check a Hermes chart pull shows aspects + asteroids.All of this is in chart/, reports/, numerology.py, and the Dockerfile, separate from the corpus session's corpus/ files, so collision risk is low, but it is the same affirmology-agent repo. Land engine changes in canonical affirmology-agent, then re-vendor. Sequence with Code so the corpus run and this don't fight over a commit.
Step 1 (aspects) -> Step 2 (extended points, regression-anchored) -> Step 3 (asteroid data file + wire) -> Step 4 (Vedic dasha + vargas) -> Step 5 (timing, which also powers the Hermes transit need) -> Step 6 (depth). Steps 1-3 are fast and unlock the biggest quality jump; ship them first.