{"contract": "orrery.v1", "frameworks": {"ephemeris": {"framework": "Ephemeris", "category": "primitive", "consumes": [], "mapping": "Swiss Ephemeris positions for a moment and place. The floor everything else stands on.", "exposes": ["longitude", "latitude", "declination", "speed", "distance"], "note": "", "derivation": ["ephemeris"]}, "i_ching": {"framework": "I Ching (hexagram wheel)", "category": "derived", "consumes": ["ephemeris.longitude"], "mapping": "The 64 hexagrams tile the ecliptic in King Wen sequence, 5.625 degrees each. A body's longitude falls in exactly one hexagram, and its position within that arc gives the line, six lines to a hexagram at 0.9375 degrees apiece.", "exposes": ["hexagram", "line"], "note": "", "derivation": ["i_ching", "ephemeris"]}, "human_design": {"framework": "Human Design", "category": "derived", "consumes": ["ephemeris.longitude", "i_ching.hexagram", "i_ching.line"], "mapping": "Two position sets, one at birth and one at 88 degrees of solar arc before it, each read through the hexagram wheel where hexagrams are renamed gates. Gate pairs that both activate define channels, channels define which of nine centers are defined, and the pattern of defined centers yields the type and authority.", "exposes": ["gates", "channels", "centers", "type", "authority", "profile"], "note": "Adds no astronomy. Every output is recoverable from the gate activations, which are returned alongside it.", "derivation": ["human_design", "ephemeris", "i_ching"]}, "gene_keys": {"framework": "Gene Keys", "category": "derived", "consumes": ["i_ching.hexagram", "i_ching.line", "human_design.gates"], "mapping": "The same 64 gate positions as Human Design, relabelled and given a three level interpretive vocabulary of shadow, gift and siddhi.", "exposes": ["keys", "lines", "sequences"], "note": "Shares its entire computational basis with Human Design. Presenting the two as independent agreement would be double counting.", "derivation": ["gene_keys", "i_ching", "ephemeris", "human_design"]}, "bazi": {"framework": "Bazi (four pillars)", "category": "derived", "consumes": ["moment", "solar_terms"], "mapping": "The instant is expressed in the Chinese sexagenary calendar as four pillars of year, month, day and hour, each a stem and branch pair. A calendar transform of the same moment, not a second observation of it.", "exposes": ["pillars", "stems", "branches", "elements"], "note": "", "derivation": ["bazi"]}, "numerology": {"framework": "Numerology", "category": "derived", "consumes": ["calendar_date"], "mapping": "Digit reduction over the calendar date, and over name letters when a name is supplied. Depends on the calendar notation rather than on the sky, so it changes under a different calendar and the ephemeris does not.", "exposes": ["life_path", "birth_day"], "note": "Worth stating plainly: this one reads a notation, not a position.", "derivation": ["numerology"]}, "tzolkin": {"framework": "Mayan tzolkin", "category": "derived", "consumes": ["calendar_date"], "mapping": "A 260 day count of 20 day signs against 13 numbers, indexed from a correlation constant. The constant is contested, so the correlation in use is returned with the result.", "exposes": ["day_sign", "tone", "correlation"], "note": "", "derivation": ["tzolkin"]}, "enneagram": {"framework": "Enneagram", "category": "not_computable", "consumes": [], "mapping": "", "exposes": [], "note": "Takes no birth moment as input. It is a typology arrived at by self report or assessment, and there is no derivation from a chart. It can enter a synthesis only as user supplied input, clearly marked as such. Any service computing it from a birth time is inventing it.", "derivation": ["enneagram"]}}, "note": "Frameworks marked derived add no astronomy. Their results are recoverable from the primitives they consume, which are returned alongside them. Frameworks marked not_computable take no birth moment as input and can only enter a reading as user supplied data.", "meta": {"engine": {"orrery": "0.1.0", "commit": "52989309ce1cb4f2f04e0f0ca84ac1ee1e399fd4", "stellium": "0.22.0", "swiss_ephemeris": "2.10.03", "ephemeris_files": ["seas_12.se1", "seas_18.se1", "seas_24.se1", "semo_18.se1", "semo_24.se1", "sepl_18.se1", "sepl_24.se1"], "license": "AGPL-3.0, source available to every caller"}, "route": "/v1/frameworks", "model_in_path": false, "request_sha256": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", "result_sha256": "sha256:8a8c2b71a3d360613e56ee058ffad1bad3cb9c7bb963e0659cc312ae763546ad", "serialization": "json.dumps(obj, sort_keys=True, separators=(\",\", \":\"), ensure_ascii=False), UTF-8"}}