Data audit · club.astromatrix.org · updated after backend response
Auditing the trait correspondences (crystals, decans, elements, cross-references) that power the astromatrix-public detail pages, after a frontend fix attempt turned out to be papering over bad upstream data instead of a display bug. Four issues were reproduced against the live API — three are now resolved (one of those by explanation rather than a code change), one is a confirmed engine-level bug still open.
Every minor arcana card has a Suits trait (Wands / Cups / Swords / Pentacles),
which maps to an element with zero ambiguity: Wands→Fire, Cups→Water, Swords→Air,
Pentacles→Earth. The Suit Element trait that's supposed to carry this is only
populated for Kings and Queens — every Ace through 10, every Page, and every Knight comes
back empty.
| Rank | Wands | Cups | Swords | Pentacles |
|---|---|---|---|---|
| Ace – 10 | missing | missing | missing | missing |
| Page | missing | missing | missing | missing |
| Knight | missing | missing | missing | missing |
| Queen | Fire ✓ | Water ✓ | Air ✓ | Earth ✓ |
| King | Fire ✓ | Water ✓ | Air ✓ | Earth ✓ |
Suit Element is a pure function
of Suits, so it can be generated for the missing 48 records directly from the
existing Suits→Element table (Wands→Fire, Cups→Water, Swords→Air, Pentacles→Earth), no
judgment calls required.
Confirmed — full re-sweep of all 56 minor arcana now shows Suit Element populated with zero mismatches. It was hand-authored in the schema and the generation engine deliberately won't overwrite hand-authored fields, which is correct as a rule but left the 48 pip/page/ knight rows permanently empty since no one had filled them by hand. Backfilled as 63 rows (the extra 7 beyond the 48 found here are the Spanish/Thoth suit variants — e.g. "10 De Bastos", "7 of Disks" — this audit's tarot-card sample didn't cover those decks). Added as a standing db-audit check rather than a one-off migration, so it stays enforced going forward.
A decan is a literal ten-degree slice of a zodiac sign, so if a card's Decans
trait says Pisces 3rd, that card touches Pisces — mechanically, not
by interpretation. 11 of 22 major arcana have a decan whose sign doesn't show up in that
same card's Zodiac Signs trait. Five of those look like real gaps; the rest are
explained by Zodiac Signs also carrying the card's own traditional
ruling sign, a separate fact layered into the same field — worth a look either way.
| Card | Decans | Zodiac Signs | Read |
|---|---|---|---|
| The Hierophant | Virgo 2nd, Taurus 1st | Taurus | Virgo missing |
| Death | Pisces 3rd, Scorpio 1st | Scorpio | Pisces missing |
| The Tower | Aries 1st, Scorpio 1st | Aries | Scorpio missing |
| The Star | Gemini 2nd, Aquarius 2nd | Aquarius | Gemini missing |
| The Sun | Aries 2nd | Leo | Aries missing |
| The Fool | — | Aquarius | no decan · own sign only |
| The Magician | Virgo 3rd | Gemini, Virgo | own sign (Gemini) layered in |
| The Empress | — | Libra, Taurus | no decan · own signs (Venus) only |
| Wheel of Fortune | Pisces 2nd | Pisces, Sagittarius | own sign (Sagittarius) layered in |
| Justice | Libra 2nd, Libra 1st | Aquarius, Libra | own sign (Aquarius) layered in |
| Judgement | — | Scorpio | no decan · own sign only |
Zodiac Signs wherever it's absent. The
own sign layered in rows aren't necessarily bugs, but confirm that's the intended
design (card's ruling sign + decan-derived signs sharing one field) — if not, it's worth
splitting into two distinct trait categories so a page can render "ruling sign" and
"decan sign" separately instead of guessing which is which.
My first re-check after the update read this as a regression (Decans had vanished from
every major arcana) — that reading was wrong. Decans are now restricted by source to
Sabian Symbols | Tarot Minor Arcana | I Ching Hexagrams | Zodiac Signs; Major
Arcana is excluded on purpose. The original complaint — Death → Pisces 3rd implying a sign
the card doesn't have — was itself the bug: that link went through the decan's
planetary ruler (Pisces 3rd and Scorpio are both Mars-ruled), not the sign, which
is exactly the spurious correspondence flagged here. Removing majors from Decans resolves
it at the source rather than papering over it downstream. Pip→decan attribution (the actual
Golden Dawn mapping) is intact and verifies 36/36 — confirmed independently on 5 of
Cups → Scorpio 3rd, Scorpio 1st.
Checked 7 Planet Aspects / Planets in Signs components. Every
single one had Modalities or Elements arrays with the wrong
count for the signs involved — usually too few, sometimes empty. I initially tried fixing
this in the frontend by deriving Modality/Element from the Zodiac Signs trait
instead — don't do that, see the callout below for why it doesn't work.
| Component | Category | Zodiac Signs | Modalities | Elements |
|---|---|---|---|---|
| Sun Conjunct Moon | Planet Aspects | Cancer, Leo | Fixed, Mutable | empty |
| Venus Conjunct Mars | Planet Aspects | Aries, Taurus | Cardinal 1 of 2 | Fire 1 of 2 |
| Mercury Trine Jupiter | Planet Aspects | Gemini, Virgo | empty | Air 1 of 2 |
| Sun Square Saturn | Planet Aspects | Capricorn, Leo | Mutable wrong | empty |
| Mercury in Gemini | Planets in Signs | Gemini, Virgo | empty | Air 1 of 2 |
| Venus in Taurus | Planets in Signs | Taurus, Libra | empty | empty |
| Mars in Scorpio | Planets in Signs | Scorpio, Aries | Cardinal 1 of 2 | Fire 1 of 2 |
Zodiac Signs doesn't mean "the sign in this page's title" — on
Planets in Signs components it holds the planet's own ruling sign(s).
"Venus in Taurus" reports [Taurus, Libra] (Venus rules both), and "Mars in
Scorpio" reports [Scorpio, Aries]. On Planet Aspects it's
inconsistent again — "Venus Conjunct Mars" reports only one domicile per planet, not both.
A frontend fix that trusts this field will look right on some pages and wrong on others,
for reasons that have nothing to do with modality or element. This needs to be corrected
at the source, where whatever process populates these traits can be told the actual rule
instead of guessed at from the outside.
Modalities and Elements for the Planet
Aspects and Planets in Signs categories from whatever the DB considers
each component's actual sign(s) to be — and settle what Zodiac Signs is
supposed to represent for a given category before trusting it as an input to anything else.
Zodiac Signs on Planets in Signs is now a single sign instead of the
confusing dual-domicile list, which resolved the ambiguity this section's callout warned
about. Two components still don't check out, and the cause turned out to be more specific
than "missing data" in both cases:
Mars in Scorpio — genuine bug. The component carries
p:Cardinal (from Mars) and p:Fixed (from Scorpio) at equal
weight — a 51%/51% tie that gets broken arbitrarily. For a placement, the sign
should determine modality, not the planet, but nothing in the current model enforces that
precedence. Elements landed on the right answer (Water) by the same coin flip, not by rule.
Mercury Trine Jupiter — not actually a lookup error. Air and Fire are
both correct (Air from Gemini/Mercury, Fire from Sagittarius/Jupiter) — a planet
contributes its own element, not every element of every sign it rules. Earth was "missing"
because Zodiac Signs lists Virgo while nothing derives an element from it —
an internal inconsistency between two fields, not a wrong value in the one that matters.
Both need the same underlying fix — sign-derived qualities should outrank planet-derived ones on placement components — which is engine work, not a table edit. Left open rather than patched with a tie-break.
Checked all 20 Tarot Court Cards references made by the 22 major arcana. Most
court cards reference every major arcana that points to them ("double hop" — follow the
link, check it points back). 4 references don't:
| Major Arcana | References | That card's own Major Arcana refs |
|---|---|---|
| The Magician | Page of Swords | Justice no backlink |
| Strength | Knight of Pentacles | The Devil no backlink |
| The World | Page of Pentacles | The Devil, Magician no backlink |
| The World | Princess of Pentacles | The Devil, Magician no backlink |
This may be intentional — correspondence systems aren't always meant to be symmetric, and a court card legitimately pointing to a different (but related) major arcana isn't wrong by itself. Flagging it because it's the kind of thing that's easy to verify once and hard to notice by browsing.
Court cards were capped to 1 reference per component, explicitly ("we only want max 1 court card"). Justice keeping King of Swords and dropping Page of Swords is that cap, not pruning — 12 majors now hold exactly 1 court-card reference each. The asymmetry itself is also by design: scoring measures each side's coverage of the candidate, so A→B and B→A are allowed to genuinely differ, and per-category caps then truncate each side independently. No fix needed here.