Home / Engine / Chart and Pipeline Engine
Updated Jun 20, 2026 · Affirmology_GrowthEngine_TimingLayer_Plan_v1.md
Jeff's direction: (1) get the corpus crawler to also GROW the interpretation layer, nightly, on a cron, ideally cloud-based (no laptop); (2) build the feedback/corrections model into it; (3) wire aspects in now; (4) the craft-critique gate is Apollo; (5) figure out progressions and transits, including the retrospective "ten years ago something big happened in vocation" capability.
Apollo already runs the critique loop (technique-fit, arc-and-cadence, Hypnos subconscious-efficacy, North Star). Add a CRAFT GATE to his hand: every reading/script is reviewed against the Reading Craft Standard + the distinctions library, and flagged for determinism/fatalism, keyword-dumping without mechanism, missing high-road/low-road, missing synthesis, factual house/sign errors (catches the 8th-house slip), and coldness. Fail -> revise. This is how "care" becomes reliable instead of occasional. Build in affirmology-agent/src/affirmology/agents/council.py as a new gate.
The corpus crawler stops being only a scraper and becomes the engine that grows the MEANING layer.
THE STORE: a structured "meaning + distinctions" layer, DISTINCT from the raw scraped corpus. Distinction-aware, craft-voiced entries per placement (planet, sign, house, gate, and once live, aspect), plus the distinctions library (the contrast pairs). Cleanest home: a new table in the corpus DB (e.g. meaning and distinctions), retrievable by the oracles/reports via a search_meaning tool (sibling of search_corpus).
THE NIGHTLY JOB (three stages, idempotent, cost-capped): 1. MEANING BUILDER: mine the corpus + the codified master method -> generate/refine craft-voiced meaning entries, prioritized by use case (wealth first, then relationships, career, health). Cheapest good model (Gemini Flash) for the bulk, caps, pilot-before-batch. 2. FEEDBACK / CORRECTIONS MODEL: pull the feedback store (every "this reads odd" from Jeff, Sol, or a client) -> distill each into a permanent distinctions entry and flag the placements/readings to fix. This is the self-improvement loop; the system never repeats a flatness twice. 3. MORNING REPORT: what meaning entries were added, what corrections landed, what is pending, the budget ledger.
WHERE IT RUNS: a CLOUD CRON so it needs no laptop. A Render Cron Job (separate scheduled service) that pulls corpus.db from R2, runs the three stages, and pushes the updated DB back to R2; the studio re-pulls on boot (the size-diff re-pull already exists). INTERIM: if the cloud cron is not stood up immediately, the laptop launchd cron works for the ~11 days the laptop is on, but cloud is the target so it is always-on.
CURRENT STATE, honestly: the engine is NATAL ONLY. No transits, no secondary progressions, no timeline. The only timing we have is the numerology Personal Year and (when built) the Vedic dasha. So we do NOT do progressed or timed readings, and the "ten years ago X happened" capability does not exist yet. This is the biggest missed opportunity on the table.
WHAT TO BUILD (chart/timing.py):
- TRANSITS: current and dated planetary positions aspecting the natal chart (the ephemeris already computes positions for any date).
- SECONDARY PROGRESSIONS: progressed Sun (the slowly evolving identity, sign change roughly every 30 years), progressed Moon (the emotional season, about 2.5 years per sign), and key progressed aspects (the inner unfolding).
- RETURNS: solar return (the year ahead), lunar return.
- THE SIGNIFICANT-EVENTS TIMELINE (this is the credibility unlock): scan a window of years, past and future, for the MAJOR timing events, Saturn return, outer-planet transits to the angles and luminaries (Pluto/Uranus/Neptune to Sun/Moon/Asc/MC), the progressed Sun and Moon sign changes, the progressed lunation cycle, and map each to a LIFE AREA by the house and planet involved. Output: a dated timeline like "age 29-30 (Saturn return): a restructuring in [area]" or "ten years ago, transiting Pluto crossed your Midheaven: a vocation transformation." This is what lets any agent say what actually happened and when, and what is coming.
- Ground the interpretation in the transits corpus tradition.
HOW TO INCORPORATE IT (Jeff's question, the recommendation): NOT either/or. Do BOTH, in layers: 1. AMBIENT (the smart default, and where most of the value is): make the timing facts a STANDARD layer in the chart facts, a "what is active now + the significant timeline" block, so EVERY oracle, agent, and audio CAN weave it when the question warrants. This is what makes the system feel alive and gives a reason to return (the chart that updates with your life). Weave only where it sharpens; never force it. 2. ON-DEMAND (the killer credibility moment): when someone asks a timed or life-arc question ("what happened around when I changed careers," "what is coming this year," "why does now feel like this"), the agent reaches into the timeline and answers with the actual transit/progression. The retrospective accuracy is the trust-builder; the forward read is the guidance. 3. DEDICATED surfaces: a "the moment you are in" timing audio (the existing astro_moment structure), a year-ahead / forecast report, and a life-arc reading. Progressions especially shine in a dedicated "inner season" read (the progressed Moon chapter you are in) and as ambient context everywhere else.
SO: timing becomes an ambient layer available to all agents, PLUS the timeline powers the on-demand "what happened / what is coming" moments, PLUS a few dedicated deep surfaces. That captures the opportunity instead of siloing it in one audio.
search_meaning tool, then the NIGHTLY JOB (meaning builder + feedback model) on a Render cloud cron.Apollo gate + meaning store + timing engine live in affirmology-agent (chart/, agents/, corpus/); the search_meaning tool + timing-aware prompts live in the studio api. The nightly cron is Render infra. Sequence with the corpus session; these are mostly new files, low collision.