Give the interpreter real Celtic Cross meanings and --format/--lang support
- guidance.c now prints last, after the full spread; both it and main.c's new Celtic Cross readout pull real Waite card meanings via tarot_data.c instead of just naming cards. - interpreter-cli gains --format text|html|json and --lang en|de, matching deck-engine - required linking engine/src/tarot_data.c and i18n.c into the interpreter binary (a narrow, documented exception to its earlier "no engine .c files" policy) and writing German translations for narrative.c's/guidance.c's own text.
This commit is contained in:
@@ -16,9 +16,8 @@ know before changing the engine. This document is the visual overview.
|
||||
(MIT), pinned to a specific commit — see its `VENDORED.md`.
|
||||
- **`engine/src/`** is the core engine. Everything except `main.c`,
|
||||
`reading.c`'s `reading_print_text`/`reading_print_html` functions, and
|
||||
`i18n.c`'s file-loading half is free of `stdio`/CLI assumptions,
|
||||
specifically so it can be linked into the Pebble watchapp later without
|
||||
rework.
|
||||
`i18n.c`'s file-loading half is free of `stdio`/CLI assumptions, so it
|
||||
links straight into a Pebble watchapp without rework.
|
||||
- `rng.c` — deterministic string-seeded PRNG (FNV-1a + splitmix64).
|
||||
- `tarot.c` / `tarot_data.c` — the Celtic Cross draw and its content.
|
||||
- `astro.c` — natal chart + daily transits, built on the vendored
|
||||
@@ -41,9 +40,6 @@ know before changing the engine. This document is the visual overview.
|
||||
`engine/scripts/user.properties.local` (gitignored) once it's filled
|
||||
in, and restored from there if `dist/` is ever wiped — see
|
||||
`CLAUDE.md`'s "Build & run".
|
||||
- **The Pebble watchapp does not exist yet.** When it's built, it will
|
||||
call `reading_generate()` directly and walk the returned struct to lay
|
||||
out its own screens — it has no reason to touch `reading_print_*`.
|
||||
|
||||
## Dataflow
|
||||
|
||||
@@ -64,9 +60,10 @@ computations and combines their results:
|
||||
with position and upright/reversed orientation, fully determined by
|
||||
the seed string alone.
|
||||
|
||||
These three results are combined into one `DailyReading` struct, which is
|
||||
either rendered by `reading_print_text`/`reading_print_html` (used by the
|
||||
CLI) or, in the future, walked directly by watchapp UI code. See
|
||||
These three results are combined into one `DailyReading` struct — the
|
||||
real API surface. `reading_print_text`/`reading_print_html` (used by the
|
||||
CLI) are just one way of consuming it; any caller, including watch UI
|
||||
code, can walk the struct's fields directly. See
|
||||
[`input-output-format.md`](input-output-format.md) for the exact fields
|
||||
and output formats.
|
||||
|
||||
|
||||
@@ -55,12 +55,6 @@ digraph architecture {
|
||||
{ rank=same; binary; distimg; disti18n; runsh; props; }
|
||||
}
|
||||
|
||||
subgraph cluster_watch {
|
||||
label="Pebble watchapp — not built yet";
|
||||
style="dashed"; color=firebrick; fontsize=11; fontcolor=firebrick;
|
||||
watch [label="watchapp C / UI\n(future)", fillcolor=white, color=firebrick, fontcolor=firebrick, style="rounded,dashed"];
|
||||
}
|
||||
|
||||
pdf -> tarot_data [label="sourced from", style=dotted, color=gray40];
|
||||
|
||||
tarot -> rng;
|
||||
@@ -78,6 +72,4 @@ digraph architecture {
|
||||
images -> distimg [label="`make images`\ncopies", style=dotted, color=gray40];
|
||||
langfiles -> disti18n [label="`make i18n`\ncopies", style=dotted, color=gray40];
|
||||
runsh -> props [label="reads at\nrun time", style=dotted, color=gray40];
|
||||
|
||||
watch -> reading [label="will call\nreading_generate()\ndirectly", style=dashed, color=firebrick, fontcolor=firebrick];
|
||||
}
|
||||
|
||||
@@ -33,11 +33,9 @@ digraph dataflow {
|
||||
|
||||
print_text [label="reading_print_text()", fillcolor="#cfe8fb"];
|
||||
print_html [label="reading_print_html()", fillcolor="#cfe8fb"];
|
||||
watch_fn [label="watchapp UI code\n(future — walks the struct\ndirectly, no print_* call)", fillcolor=white, color=firebrick, fontcolor=firebrick, style="rounded,dashed"];
|
||||
|
||||
out_text [label="stdout: plain-text report", shape=parallelogram, fillcolor="#c8f0c8"];
|
||||
out_html [label="stdout: reading.html\n(<img src=\"img/...\"> per card)", shape=parallelogram, fillcolor="#c8f0c8"];
|
||||
out_watch [label="watch screens\n(future)", shape=parallelogram, fillcolor=white, color=firebrick, fontcolor=firebrick, style="dashed"];
|
||||
|
||||
cli -> main;
|
||||
runsh -> main;
|
||||
@@ -59,9 +57,7 @@ digraph dataflow {
|
||||
|
||||
daily_reading -> print_text;
|
||||
daily_reading -> print_html;
|
||||
daily_reading -> watch_fn [style=dashed, color=firebrick];
|
||||
|
||||
print_text -> out_text;
|
||||
print_html -> out_html;
|
||||
watch_fn -> out_watch [style=dashed, color=firebrick];
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 292 KiB After Width: | Height: | Size: 238 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 270 KiB After Width: | Height: | Size: 236 KiB |
+225
-36
@@ -4,9 +4,10 @@ See [`architecture.md`](architecture.md) for how these fit together.
|
||||
There are two ways to provide input (direct CLI flags, or `run-engine.sh`
|
||||
+ `user.properties`) and three output formats (`text`, `html`, `json`); the
|
||||
`DailyReading` struct is the programmatic form all three are rendered
|
||||
from, and the one the future watchapp will consume directly. `json` is
|
||||
also `interpreter-cli`'s input format — see "The interpreter" at the
|
||||
bottom of this file.
|
||||
from, and the one watch UI code consumes directly. `json` is also
|
||||
`interpreter-cli`'s input format — see "The interpreter" at the bottom
|
||||
of this file, which supports the same three output formats (and the
|
||||
same `--lang`) for its own report, independently of `deck-engine`.
|
||||
|
||||
## Input
|
||||
|
||||
@@ -90,8 +91,8 @@ build, like `dist/img/`). Adding a language is just dropping another
|
||||
### `DailyReading` (the real output — `reading.h`)
|
||||
|
||||
`reading_generate()` is the actual API; `text`/`html` below are just two
|
||||
ways of rendering the struct it fills in. This is what the watchapp will
|
||||
read directly once it exists.
|
||||
ways of rendering the struct it fills in. This is what watch UI code
|
||||
reads directly.
|
||||
|
||||
```c
|
||||
typedef struct {
|
||||
@@ -227,16 +228,39 @@ read.
|
||||
`dist/interpreter-cli` is a separate binary — see `CLAUDE.md`'s
|
||||
"Interpretation" section for the full architecture — that reads a
|
||||
`--format json` document and scores how significant today's transits
|
||||
are. It never links the engine; it only depends on the JSON shape
|
||||
above.
|
||||
are. It never links `astro.c`/`tarot.c`/`reading.c` (or the vendored
|
||||
Astronomy Engine) — only `engine/src/tarot_data.c`/`i18n.c` are linked
|
||||
in, for real card/position names and Waite meaning text (see
|
||||
`CLAUDE.md`'s `INTERP_TAROT_TEXT_OBJS` note). Otherwise it depends only
|
||||
on the JSON shape above.
|
||||
|
||||
Like `deck-engine`, its own output supports `--format text|html|json`
|
||||
and `--lang <code>`/`--i18n-dir <path>`:
|
||||
|
||||
| Flag | Required | Format | Meaning |
|
||||
|---|---|---|---|
|
||||
| `[reading.json]` | no | file path or `-` | Input file; stdin (or `-`) if omitted. |
|
||||
| `--format` | no | `text` \| `html` \| `json` | This binary's **own output** format, defaults to `text`. Entirely independent of the `--format json` that produced its *input* - see below. |
|
||||
| `--lang` | no | language code, e.g. `en`, `de` | This binary's **own output** language, defaults to `en`. Same `<code>.lang`/`--i18n-dir` convention as `deck-engine` (see "Translations" above) - `main.c` calls `i18n_load()` itself, so `narrative.c`'s/`guidance.c`'s own text (in `engine/i18n/*.lang` under `narrative.*`/`guidance.*` keys) is translated too, not just the card/position/body/sign/aspect vocabulary it shares with `deck-engine`. |
|
||||
| `--i18n-dir` | no | path | Same convention as `deck-engine`'s: defaults to an `i18n/` directory next to this binary. |
|
||||
|
||||
**This `--lang` is unrelated to whatever `--lang` `deck-engine` was run
|
||||
with to produce the `--format json` input** - that JSON is always
|
||||
language-independent (slugs only, see above), so it doesn't matter what
|
||||
language `deck-engine` printed anything in, or whether it was even asked
|
||||
to print anything at all (`--format json` never touches `--lang`
|
||||
either). The two `--lang` flags, on the two sides of the pipe, are
|
||||
independent settings.
|
||||
|
||||
```bash
|
||||
dist/deck-engine ... --format json | dist/interpreter-cli
|
||||
dist/deck-engine ... --format json | dist/interpreter-cli --format html --lang de
|
||||
# or:
|
||||
dist/deck-engine ... --format json > reading.json
|
||||
dist/interpreter-cli reading.json
|
||||
# or, for daily use (OS clock + user.properties, same inputs as run-engine.sh):
|
||||
dist/run-interpreter.sh
|
||||
dist/interpreter-cli --format json reading.json
|
||||
# or, for daily use (OS clock + user.properties, same inputs as run-engine.sh,
|
||||
# including user.properties' lang=):
|
||||
dist/run-interpreter.sh # text output, language from user.properties
|
||||
dist/run-interpreter.sh html de # override format/language for this run
|
||||
```
|
||||
|
||||
- **Input**: a file path argument, or stdin if no argument (or `-`) is
|
||||
@@ -244,30 +268,195 @@ dist/run-interpreter.sh
|
||||
means "no notable transits today"; a missing key is treated as invalid
|
||||
input) and drives scoring. `"natal"."bodies"`/`"transits"."bodies"` are
|
||||
read too, for the sign/house context printed alongside each event below
|
||||
(not for scoring) — an entry naming an unrecognized body, or a missing
|
||||
`house`, is silently skipped rather than failing the load (see
|
||||
`parse_bodies()` in `reading_io.c`); `spread` is always ignored.
|
||||
- **Output**: a plain-text report — the day's overall significance level
|
||||
(`Quiet`/`Notable`/`Significant`/`Major`, plus its rank out of the 4
|
||||
defined levels, e.g. `Notable (2/4)`), a "worth a deeper Celtic Cross
|
||||
look" line on `Major` days only, and up to 5 of today's aspects ranked
|
||||
by score, each naming the sign and natal house the transiting planet
|
||||
currently occupies and the sign and house of the natal planet it's
|
||||
aspecting, followed by a short narrative sentence about what that
|
||||
transiting planet classically signifies *and which area of life its
|
||||
current house governs* (see `CLAUDE.md`'s `narrative.c` bullet) —
|
||||
omitted only if the source material has nothing to say for that
|
||||
planet/aspect combination:
|
||||
(not for scoring), and `"spread"."positions"` is read for the full
|
||||
Celtic Cross readout and the guidance paragraph below — an entry naming
|
||||
an unrecognized body/card/position, a missing `house`, or a missing
|
||||
`"spread"` key entirely is silently skipped/zeroed rather than failing
|
||||
the load (see `parse_bodies()`/`parse_spread()` in `reading_io.c`).
|
||||
- **Input**: same for all three output formats above - only how the
|
||||
parsed data gets rendered differs.
|
||||
|
||||
```
|
||||
Day significance: Significant (3/4)
|
||||
(a major transit today - worth a deeper Celtic Cross look)
|
||||
### `--format text`
|
||||
|
||||
Top 3 significant transits:
|
||||
1. Transiting Saturn in Aries (house 2) Square natal Sun in Taurus (house 3) (orb 0.5°, score 8.10)
|
||||
In matters of money, possessions, and personal values (house 2). Brings depression, stagnation, hindrances and obstacles, and some deprivation of the usual benefits.
|
||||
2. Transiting Pluto in Aquarius (house 12) Opposition natal Moon in Capricorn (house 11) (orb 0.2°, score 7.92)
|
||||
In matters of solitude, the subconscious, and hidden matters (house 12). Brings deep, often hidden transformation - the surfacing or dismantling of something that has outgrown its old form.
|
||||
3. Transiting Jupiter in Leo (house 5) Trine natal Venus in Aries (house 2) (orb 2.1°, score 3.40)
|
||||
In matters of romance, creativity, and children (house 5). Brings increase and expansion - fullness of fortune and health, and a generally fortunate time.
|
||||
```
|
||||
A plain-text report, printed in a fixed order —
|
||||
1. the day's overall significance level (`Quiet`/`Notable`/
|
||||
`Significant`/`Major`, plus its rank out of the 4 defined levels,
|
||||
e.g. `Notable (2/4)`), with a "worth a deeper Celtic Cross look"
|
||||
line on `Major` days only;
|
||||
2. up to 5 of today's aspects ranked by score, each naming the sign
|
||||
and natal house the transiting planet currently occupies and the
|
||||
sign and house of the natal planet it's aspecting, followed by a
|
||||
short narrative sentence about what that transiting planet
|
||||
classically signifies *and which area of life its current house
|
||||
governs* (see `CLAUDE.md`'s `narrative.c` bullet) — omitted only if
|
||||
the source material has nothing to say for that planet/aspect
|
||||
combination;
|
||||
3. the full 10-position Celtic Cross spread, in Waite's own drawing
|
||||
order, each with its card (and orientation), the position's own
|
||||
description, and that card's actual meaning;
|
||||
4. finally, a guidance paragraph tying the day's top transit to the
|
||||
spread's Attitude/Outcome cards, with its opening sentence tailored
|
||||
to `day_level` (stronger wording on `Major`, softer on
|
||||
`Quiet`/`Notable`, falling back to a transit-free reading of the
|
||||
Attitude card alone on a day with no aspects at all) and, for the
|
||||
Attitude/Outcome cards it names, their actual Waite meaning for the
|
||||
orientation they landed in — see `CLAUDE.md`'s `guidance.c` bullet.
|
||||
This is printed last, as the closing takeaway after the reader has
|
||||
seen the full spread it references.
|
||||
|
||||
```
|
||||
Day significance: Major (4/4)
|
||||
(a major transit today - worth a deeper Celtic Cross look)
|
||||
|
||||
Top 5 significant transits:
|
||||
1. Transiting Pluto in Aquarius (house 3) Conjunction natal Moon in Aquarius (house 3) (orb 2.9°, score 9.60)
|
||||
In matters of communication, siblings, and everyday learning (house 3). Brings deep, often hidden transformation - the surfacing or dismantling of something that has outgrown its old form.
|
||||
2. Transiting Neptune in Aries (house 5) Sextile natal Moon in Aquarius (house 3) (orb 2.5°, score 9.25)
|
||||
In matters of romance, creativity, and children (house 5). Brings a state of chaos and confusion - an involved, uncertain condition of affairs, with plots, subtlety, or unseen influences at work.
|
||||
3. Transiting Uranus in Gemini (house 7) Trine natal Moon in Aquarius (house 3) (orb 2.0°, score 8.96)
|
||||
In matters of partnerships and close relationships (house 7). Brings separations, estrangements, sudden dislocations and violent upsets. Success through official or civic channels, and beneficial changes or appointments, are possible.
|
||||
|
||||
Celtic Cross:
|
||||
1. The Present: The Emperor (Reversed)
|
||||
This covers him: the general influence affecting the matter.
|
||||
Benevolence, compassion, credit; also confusion to enemies, obstruction, immaturity.
|
||||
2. The Challenge: The Devil
|
||||
This crosses him: the nature of the obstacle in the matter.
|
||||
Ravage, violence, vehemence, extraordinary efforts, force, fatality.
|
||||
...
|
||||
7. Himself: The Magician
|
||||
His position or attitude in the circumstances.
|
||||
Skill, diplomacy, address, subtlety; self-confidence, will.
|
||||
...
|
||||
10. The Outcome: Strength
|
||||
What will come: the final result of the matter.
|
||||
Power, energy, action, courage, magnanimity; complete success and honours.
|
||||
|
||||
With Pluto as today's dominant influence: Today concentrates whatever you already
|
||||
bring to it - your current approach will be amplified, so make sure it's the one
|
||||
you want.
|
||||
Your Attitude card is The Magician: Skill, diplomacy, address, subtlety; self-confidence, will.
|
||||
The spread's likely Outcome is Strength: Power, energy, action, courage, magnanimity; complete success and honours.
|
||||
```
|
||||
|
||||
On a quieter day, only the opening of the guidance paragraph changes:
|
||||
|
||||
```
|
||||
Day significance: Notable (2/4)
|
||||
...
|
||||
With a mild touch from Jupiter today: Your instincts are sound, but the day is
|
||||
testing them - hold your position without forcing the issue.
|
||||
Your Attitude card is The Sun: Material happiness, fortunate marriage, contentment.
|
||||
The spread's likely Outcome is Justice: Equity, rightness, probity, executive; triumph of the deserving side in law.
|
||||
```
|
||||
|
||||
The same report with `--lang de` (same input as the Major example
|
||||
above):
|
||||
|
||||
```
|
||||
Bedeutung des Tages: Einschneidend (4/4)
|
||||
(ein einschneidender Transit heute - ein genauerer Blick auf das Keltische Kreuz lohnt sich)
|
||||
|
||||
Top 5 wichtige Transits:
|
||||
1. Transit Pluto in Wassermann (Haus 3) Konjunktion natal Mond in Wassermann (Haus 3) (Orbis 2.9°, Punktzahl 9.60)
|
||||
In Fragen von Kommunikation, Geschwistern und alltäglichem Lernen (Haus 3). Bringt tiefgreifenden, oft verborgenen Wandel - das Auftauchen oder die Auflösung von etwas, das seine alte Form überwachsen hat.
|
||||
...
|
||||
|
||||
Keltisches Kreuz:
|
||||
1. Die Gegenwart: Der Herrscher (Umgekehrt)
|
||||
Dies bedeckt ihn: der allgemeine Einfluss, der die Angelegenheit betrifft.
|
||||
Wohlwollen, Mitgefühl, Ansehen; auch Verwirrung der Feinde, Behinderung, Unreife.
|
||||
...
|
||||
|
||||
Pluto ist heute der bestimmende Einfluss: Der heutige Tag verstärkt, was du bereits
|
||||
mitbringst - deine derzeitige Herangehensweise wird verstärkt, also stelle sicher,
|
||||
dass es die richtige ist.
|
||||
Deine Haltungskarte ist Der Magier: Geschick, Diplomatie, Gewandtheit, Feinsinn; Selbstvertrauen, Wille.
|
||||
Das wahrscheinliche Ergebnis des Blatts ist Kraft: Macht, Energie, Tatkraft, Mut, Großmut; voller Erfolg und Ehren.
|
||||
```
|
||||
|
||||
### `--format html`
|
||||
|
||||
A single self-contained HTML page, same inline-CSS/no-JS approach as
|
||||
`deck-engine`'s own `--format html`, and the same three sections as text
|
||||
(significant transits as a table, the full Celtic Cross as an image
|
||||
grid, guidance as a closing callout) - reusing the exact same
|
||||
`img/<file>` card-art convention (`tarot_card_image_file()`), so it
|
||||
expects to sit next to an `img/` directory just like `deck-engine`'s
|
||||
HTML output:
|
||||
|
||||
```html
|
||||
<div class="card">
|
||||
<div class="position">The Present</div>
|
||||
<img class="reversed" src="img/RWS_Tarot_04_Emperor.jpeg" alt="The Emperor">
|
||||
<div class="name">The Emperor (Reversed)</div>
|
||||
<div class="desc">This covers him: the general influence affecting the matter.</div>
|
||||
<div class="meaning">Benevolence, compassion, credit; also confusion to enemies, obstruction, immaturity.</div>
|
||||
</div>
|
||||
```
|
||||
|
||||
The guidance section renders as one `<p>` per line of the same text
|
||||
`--format text` prints last (intro sentence, Attitude line, Outcome
|
||||
line), inside a `<div class="guidance">`.
|
||||
|
||||
### `--format json`
|
||||
|
||||
Unlike `deck-engine`'s own `--format json` - which is deliberately
|
||||
**language-independent** (slugs only, no `--lang`-dependent prose, since
|
||||
it's a machine interchange format between the two binaries) -
|
||||
`interpreter-cli`'s `--format json` embeds the *same localized
|
||||
narrative/guidance prose* `--format text` prints, in whatever `--lang`
|
||||
was loaded, **alongside** stable, language-independent slug fields. This
|
||||
is a deliberate difference: rendering that prose is this module's whole
|
||||
job, so a JSON consumer that wants it doesn't have to reimplement
|
||||
`narrative.c`/`guidance.c`'s logic itself - but a consumer that only
|
||||
wants structured data (e.g. watch UI code with its own rendering) still
|
||||
has the slugs to work with directly.
|
||||
|
||||
```json
|
||||
{
|
||||
"day_significance": {
|
||||
"level": "major",
|
||||
"rank": 4,
|
||||
"count": 4,
|
||||
"deserves_framing": true
|
||||
},
|
||||
"significant_transits": [
|
||||
{
|
||||
"transiting_planet": "pluto",
|
||||
"transiting_sign": "aquarius",
|
||||
"transiting_house": 3,
|
||||
"natal_planet": "moon",
|
||||
"natal_sign": "aquarius",
|
||||
"natal_house": 3,
|
||||
"aspect": "conjunction",
|
||||
"orb": 2.8821,
|
||||
"score": 9.5961,
|
||||
"narrative": "In matters of communication, siblings, and everyday learning (house 3). Brings deep, often hidden transformation - the surfacing or dismantling of something that has outgrown its old form."
|
||||
}
|
||||
],
|
||||
"celtic_cross": [
|
||||
{
|
||||
"position": "present",
|
||||
"card": "emperor",
|
||||
"reversed": true,
|
||||
"card_name": "The Emperor",
|
||||
"meaning": "Benevolence, compassion, credit; also confusion to enemies, obstruction, immaturity."
|
||||
}
|
||||
],
|
||||
"guidance": "With Pluto as today's dominant influence: Today concentrates whatever you already bring to it - your current approach will be amplified, so make sure it's the one you want.\nYour Attitude card is The Magician: Skill, diplomacy, address, subtlety; self-confidence, will.\nThe spread's likely Outcome is Strength: Power, energy, action, courage, magnanimity; complete success and honours."
|
||||
}
|
||||
```
|
||||
|
||||
- `significant_transits` has `interp.top_item_count` entries (0-5, same
|
||||
ranking as `--format text`); `celtic_cross` always has exactly 10, in
|
||||
`CelticCrossPosition` enum order (same order as `deck-engine`'s own
|
||||
`spread.positions`).
|
||||
- `orb`/`score` are `%.4f`, matching `deck-engine`'s own JSON precision
|
||||
for angles.
|
||||
- `guidance` is always present and non-empty (unlike
|
||||
`significant_transits`, which can be `[]` on a genuinely quiet day) -
|
||||
see `guidance.c`'s no-aspects-at-all fallback in `CLAUDE.md`.
|
||||
- With `--lang de`, every string value above except the slugs
|
||||
(`"level"`, `"transiting_planet"`, `"aspect"`, `"card"`, `"position"`,
|
||||
etc.) changes language; the slugs never do.
|
||||
|
||||
+132
-21
@@ -18,6 +18,12 @@ exactly where the planets were, and which zodiac sign was rising, at the
|
||||
moment you were born — your **natal chart**. Everything else the app
|
||||
does is compared against that one fixed reference point.
|
||||
|
||||
You can also choose a **language** for your reading - English or German.
|
||||
Every part of the reading described below, including the guidance
|
||||
paragraph at the end, is available in either; switching languages
|
||||
doesn't change any of the astrology or the tarot draw itself, only how
|
||||
it's worded.
|
||||
|
||||
## What happens every day
|
||||
|
||||
Each day, the app does two independent things and then combines them:
|
||||
@@ -95,21 +101,51 @@ That wording is condensed from a public-domain 1920 astrology book
|
||||
(Sepharial's *Transits and Planetary Periods*), the same way the tarot
|
||||
card meanings are condensed from Waite's 1911 book.
|
||||
|
||||
Every day — Quiet or Major — the app also reads out your full 10-card
|
||||
Celtic Cross spread, position by position, each with that card's actual
|
||||
meaning (drawn from the same Waite text as the rest of the reading), so
|
||||
you get one complete, readable account of the spread rather than just
|
||||
a list of card names.
|
||||
|
||||
After that spread, you get a short paragraph of actual guidance: how to
|
||||
meet the day, given both the single biggest transit happening and your
|
||||
own tarot spread. It looks at that transit's character (is it an easy
|
||||
angle or a tense one?) together with your *Attitude* card — the
|
||||
position Waite describes as "his position or attitude in the
|
||||
circumstances", i.e. how you're currently approaching things — upright
|
||||
or reversed, and gives a concrete stance to take today. It then names
|
||||
your *Attitude* and *Outcome* cards again, this time spelling out what
|
||||
each one actually means for the orientation it landed in — so instead
|
||||
of just "your Outcome card is the Wheel of Fortune, reversed" you get
|
||||
that card's real meaning alongside it. This is the one place the app
|
||||
actually combines the astrology and the tarot into a single piece of
|
||||
advice, rather than leaving you to read them side by side yourself, and
|
||||
it's printed last, as the closing takeaway once you've seen the full
|
||||
spread it's referring to.
|
||||
|
||||
The wording flexes with how big the day is: on a Major day it opens
|
||||
with something like "With Pluto as today's dominant influence"; on a
|
||||
quieter day with only a mild aspect in play it's softer, e.g. "With a
|
||||
mild touch from Jupiter today" or, fainter still, "Mercury is only
|
||||
faintly active today, but for what it's worth"; and on a genuinely
|
||||
uneventful day with no aspects at all, there's no planet to name, so it
|
||||
falls back to a plain read of your Attitude card's orientation alone
|
||||
("There's no standout transit today - it's an astrologically quiet
|
||||
day..."). The underlying stance advice itself doesn't change with
|
||||
intensity — only how insistently it's introduced.
|
||||
|
||||
## What a day's reading actually gives you
|
||||
|
||||
Put together, one day's reading contains: your natal chart (for
|
||||
reference), today's sky and how it's speaking to your chart, how
|
||||
significant today is overall (with a plain-language note on each of the
|
||||
main events driving that), and your 10-card Celtic Cross spread for the
|
||||
day. Right now these sit side by side — the astrology tells you *how
|
||||
eventful* today is and *where* to pay attention, and the tarot spread
|
||||
gives you the actual guidance to sit with. They don't yet get woven
|
||||
into a single narrative (e.g. a spread explained *in light of* today's
|
||||
significant transit) — that combined storytelling is the next piece to
|
||||
build, not something you get today.
|
||||
|
||||
*(This page, like that piece, is still a work in progress — expect it
|
||||
to grow as the reading itself does.)*
|
||||
main events driving that), your full 10-card Celtic Cross spread read
|
||||
out card by card with each card's meaning, and — every day, not just
|
||||
Major ones — a closing paragraph of guidance tying the day's biggest
|
||||
transit to your Attitude and Outcome cards specifically. Attitude and
|
||||
Outcome get that treatment in the closing guidance; the other eight
|
||||
positions are read in light of your natal chart and today's sky, the
|
||||
way the worked example below does by hand.
|
||||
|
||||
## A worked example
|
||||
|
||||
@@ -123,7 +159,7 @@ Sagittarius.
|
||||
are forming aspects back to the natal chart above — see below for which
|
||||
ones actually matter.
|
||||
|
||||
**How big is today.**
|
||||
**How big is today, and the significant transits.**
|
||||
|
||||
```
|
||||
Day significance: Major (4/4)
|
||||
@@ -149,18 +185,93 @@ from the 5th house, and a disruptive-but-possibly-lucky Uranus trine
|
||||
from the 7th. Communication, romance, and relationships are all
|
||||
quietly under pressure at once.
|
||||
|
||||
**Tarot spread (excerpt).** Drawn independently, using today's date:
|
||||
**The Celtic Cross, read out in full** (drawn independently, using
|
||||
today's date):
|
||||
|
||||
- *The Present* — The Emperor, reversed: immaturity or a loss of
|
||||
authority, rather than confident structure.
|
||||
- *The Challenge* — The Devil: force, ravage, an obstacle that isn't
|
||||
easily reasoned with.
|
||||
- *The Near Future* — The World, reversed: stagnation, things staying
|
||||
fixed in place rather than resolving.
|
||||
```
|
||||
Celtic Cross:
|
||||
1. The Present: The Emperor (Reversed)
|
||||
This covers him: the general influence affecting the matter.
|
||||
Benevolence, compassion, credit; also confusion to enemies, obstruction, immaturity.
|
||||
2. The Challenge: The Devil
|
||||
This crosses him: the nature of the obstacle in the matter.
|
||||
Ravage, violence, vehemence, extraordinary efforts, force, fatality.
|
||||
3. The Crown: The Empress
|
||||
This crowns him: the aim or ideal, the best that can be achieved.
|
||||
Fruitfulness, action, initiative, length of days; also difficulty, doubt, ignorance.
|
||||
4. The Foundation: Justice
|
||||
This is beneath him: the basis of the matter, already actual.
|
||||
Equity, rightness, probity, executive; triumph of the deserving side in law.
|
||||
5. The Recent Past: Temperance
|
||||
This is behind him: the influence that is just passing away.
|
||||
Economy, moderation, frugality, management, accommodation.
|
||||
6. The Near Future: The World (Reversed)
|
||||
This is before him: the influence now coming into action.
|
||||
Inertia, fixity, stagnation, permanence.
|
||||
7. Himself: The Magician
|
||||
His position or attitude in the circumstances.
|
||||
Skill, diplomacy, address, subtlety; self-confidence, will.
|
||||
8. His House: The Hermit (Reversed)
|
||||
His environment and the tendencies at work therein.
|
||||
Concealment, disguise, policy, fear, unreasoned caution.
|
||||
9. Hopes and Fears: The Moon (Reversed)
|
||||
His hopes or fears in the matter.
|
||||
Instability, inconstancy, silence, lesser degrees of deception and error.
|
||||
10. The Outcome: Strength
|
||||
What will come: the final result of the matter.
|
||||
Power, energy, action, courage, magnanimity; complete success and honours.
|
||||
```
|
||||
|
||||
**The closing guidance**, tying the day's biggest transit (Pluto,
|
||||
above) to the Attitude and Outcome cards from the spread just shown:
|
||||
|
||||
```
|
||||
With Pluto as today's dominant influence: Today concentrates whatever you already
|
||||
bring to it - your current approach will be amplified, so make sure it's the one
|
||||
you want.
|
||||
Your Attitude card is The Magician: Skill, diplomacy, address, subtlety; self-confidence, will.
|
||||
The spread's likely Outcome is Strength: Power, energy, action, courage, magnanimity; complete success and honours.
|
||||
```
|
||||
|
||||
Read side by side, the astrology and the tarot happen to rhyme here —
|
||||
both point toward something that wants to shift (Pluto's "hidden
|
||||
transformation," The Devil's "force") running into something that
|
||||
feels stuck (a reversed World, an afflicted Moon) — but that's the
|
||||
reader's own synthesis for now, not something the app does for you (see
|
||||
above).
|
||||
feels stuck (a reversed World, an afflicted Moon). The closing guidance
|
||||
picks up part of that thread automatically — an upright Attitude card
|
||||
(The Magician) paired with this neutral, concentrating Pluto transit
|
||||
becomes "make sure your current approach is the one you want" — reading
|
||||
every other position (Challenge, Near Future, and the rest) into that
|
||||
same story the way this paragraph just did by hand is the reader's own
|
||||
synthesis (see above).
|
||||
|
||||
**A quieter day, for contrast.** Someone else — born 10 October 1990 in
|
||||
Sydney, checking their reading on 15 January 2026 — gets a much lower-key
|
||||
version of the same guidance, because the biggest thing happening that
|
||||
day is a loose, single Jupiter aspect rather than an exact Pluto hit:
|
||||
|
||||
```
|
||||
Day significance: Notable (2/4)
|
||||
...
|
||||
With a mild touch from Jupiter today: Your instincts are sound, but the day is
|
||||
testing them - hold your position without forcing the issue.
|
||||
Your Attitude card is The Sun: Material happiness, fortunate marriage, contentment.
|
||||
The spread's likely Outcome is Justice: Equity, rightness, probity, executive; triumph of the deserving side in law.
|
||||
```
|
||||
|
||||
Same stance logic (a tense aspect, an upright Attitude card), but the
|
||||
opening line matches how much the day actually asks of you.
|
||||
|
||||
**The same Major day, in German.** Switching languages doesn't change
|
||||
anything about the reading itself - same cards, same transits, same
|
||||
guidance logic - only the words:
|
||||
|
||||
```
|
||||
Bedeutung des Tages: Einschneidend (4/4)
|
||||
(ein einschneidender Transit heute - ein genauerer Blick auf das Keltische Kreuz lohnt sich)
|
||||
|
||||
Pluto ist heute der bestimmende Einfluss: Der heutige Tag verstärkt, was du bereits
|
||||
mitbringst - deine derzeitige Herangehensweise wird verstärkt, also stelle sicher,
|
||||
dass es die richtige ist.
|
||||
Deine Haltungskarte ist Der Magier: Geschick, Diplomatie, Gewandtheit, Feinsinn; Selbstvertrauen, Wille.
|
||||
Das wahrscheinliche Ergebnis des Blatts ist Kraft: Macht, Energie, Tatkraft, Mut, Großmut; voller Erfolg und Ehren.
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user