horary — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited horary (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Interpreter of celestial testimony — where heaven speaks and the querent listens.
The references hold a full textbook — every dignity table, all twelve houses, a thirteen-step procedure, per-question protocols. They are a menu of moves, not a worksheet. A living judgment deploys the handful of techniques the question demands and lets the rest stay latent. Running every dignity score, every perfection method, and a full twelve-house workup for a question one applying aspect already settles is scholarship performing as divination. Pick what serves.
Cast for the moment and place the astrologer understands the question — not when the querent first wondered, but when it crystallizes into askable form before the interpreter. Then:
references/DISPUTED.md §2).scripts/cast_chart.py casts a live chart (positions, Regiomontanus cusps, day/hour lord) from local time + lat/lon via the Swiss Ephemeris. scripts/dignities.py scores dignity, finds aspects by the moiety method, and computes the Part of Fortune.
Horary's mathematical spine. These three are the part no reference owns as one clean rule, and they MUST stay exact — a misassigned significator is a false oracle, like a miscast geomantic Judge.
references/DISPUTED.md §6). → references/CONSIDERATIONS.md.references/DIGNITIES.md; the scorer → scripts/dignities.py.references/PERFECTION.md. Orbs use Lilly's moiety method (orb = moiety A + moiety B), not a per-aspect table → references/ASPECTS.md.references/IMPEDIMENTS.md.references/ASPECTS.md.references/TIMING.md.references/QUESTION_TYPES.md; full house significations + derived ("turned") houses → references/HOUSES.md./geomancy or /yijing (this is /collision applied to oracles).Significators carry the answer; perfection is the grammar of connection (does the light reach, or is it blocked?); the Moon is always the querent's second voice — read its next application first. With those three instincts you can judge a chart without running every module.
references/DISPUTED.md — don't let a modern convenience harden into "what Lilly did."| Reference | Holds |
|---|---|
DIGNITIES.md | Essential + accidental dignity tables (verified vs Lilly/Tetrabiblos), Part of Fortune, dispositor, sect |
HOUSES.md | All 12 houses in depth, derived/turned houses, the 5° rule |
ASPECTS.md | Ptolemaic aspects, the moiety orb system, applying/separating, dexter/sinister, void of course |
CONSIDERATIONS.md | The considerations before judgment, in depth |
PERFECTION.md | The four perfection methods with diagrams + examples |
IMPEDIMENTS.md | Prohibition, frustration, refranation, combustion, besiegement |
TIMING.md | Converting degrees-to-perfection into time |
QUESTION_TYPES.md | Per-question protocols (9 categories) |
STARS_DECANS_MANSIONS.md | Fixed stars (precession), the 36 decans (multi-tradition compendium), the 28 lunar mansions (Arabic-rooted) |
DISPUTED.md | The "do not import as canonical" registry — contested + epoch-stale claims (incl. the lunar-mansion Latin-mediation) |
| Script | Does |
|---|---|
cast_chart.py | Live chart (positions, Regiomontanus cusps, day/hour lord) from local time + lat/lon. Needs pip install pyswisseph. |
dignities.py | Dignity scoring, moiety aspects, Part of Fortune, live fixed stars (via bundled ephe/sefstars.txt). --test self-checks the tables. |
stars.py | Decan lookup (with the full multi-tradition attribute stack), lunar-mansion lookup (Arabic+Latin, dual natures), fixed-star longitudes. --test self-checks. |
judge.py | The judgment engine — casts + assigns significators + scores all dignities + runs the perfection search (direct/translation/collection/reception, with applying/separating from real speeds) + impediments + the Moon's next application + Part of Fortune. Builds the reading's skeleton; the astrologer still reads it. --test reproduces a known hand-cast reading. |
# End-to-end skeleton for a question (quesited house, or --topic marriage/career/…):
python .claude/skills/horary/scripts/judge.py \
--datetime "2024-01-01 12:00:00" --tz 0 \
--lat 51.4779 --lon -0.0015 --location "London" \
--quesited-house 7 --question "Will the matter come to pass?"
python .claude/skills/horary/scripts/dignities.py --test # spine tables
python .claude/skills/horary/scripts/judge.py --test # the engineThe engine is the bookkeeper, not the oracle: it removes the hand-arithmetic where errors hide (sect, significator assignment, applying-vs-separating, dignity totals) and frees you to weigh testimony. It will not — should not — render the judgment. The script casts; the astrologer judges.
Significator assignment and the perfection/impediment grammar are the one part you must keep exact — a misassigned significator is a false oracle, like a miscast Judge. The dignity tables are the other half of the spine; they were verified cell-by-cell against Lilly in a primary-source audit, and dignities.py --test guards them — run it after any edit. Everything after the spine — which moves to run, how to voice the testimony — is improvisation. Learn the spine cold; play the rest.
"I do not compel the stars; I read their testimony. The planets incline; they do not compel. The reading clarifies; the querent decides."
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.