Report sign/house in significant transits; back up user.properties outside dist/

This commit is contained in:
ml
2026-07-05 17:18:20 +02:00
parent 28558b4343
commit 1136e3257a
9 changed files with 197 additions and 50 deletions
+29 -16
View File
@@ -45,14 +45,20 @@ dist/deck-engine --seed "2026-07-03" \
```
`dist/user.properties` is seeded once from `engine/scripts/user.properties.template`
with placeholder values (`YOUR_BIRTH_DATE_HERE`, etc.) and is **never
overwritten by later builds** — `run-engine.sh`/`run-interpreter.sh`
refuse to run (with a clear error) until the placeholders are replaced
with real values. `dist/run-interpreter.sh` is the equivalent daily-use
wrapper for the interpreter: it runs `run-engine.sh`'s same OS-clock
seed/date and `user.properties` birth data through `deck-engine --format
json`, piped straight into `dist/interpreter-cli` — see "Interpretation"
below.
with placeholder values (`YOUR_BIRTH_DATE_HERE`, etc.) `run-engine.sh`/
`run-interpreter.sh` refuse to run (with a clear error) until the
placeholders are replaced with real values. Because `dist/` itself is
disposable (`make clean`, or just deleting the directory, wipes it), the
`scripts` Makefile target also keeps a durable backup outside `dist/`:
once `dist/user.properties` looks filled in (no leftover `YOUR_...`), every
build copies it out to `engine/scripts/user.properties.local`
(gitignored); if `dist/user.properties` is ever missing when a build
runs, it's restored from that backup instead of being reseeded from the
placeholder template. `dist/run-interpreter.sh` is the equivalent
daily-use wrapper for the interpreter: it runs `run-engine.sh`'s same
OS-clock seed/date and `user.properties` birth data through `deck-engine
--format json`, piped straight into `dist/interpreter-cli` — see
"Interpretation" below.
Run a single smoke test by editing `engine/tests/smoke_test.c`'s `main()`
temporarily, or just read its assertions — there's no test filter flag,
@@ -241,12 +247,19 @@ between the two binaries (see the next bullet).
Unlike the core engine, it uses `malloc`; `interpreter-cli` was never
meant to run on the watch itself.
- **`reading_io.c`** walks the parsed JSON down to `"transits"."aspects"`
and fills a `DailyReading` with just that (everything else is left
zeroed - `interpret_daily_reading` doesn't read `natal`/`spread`
either). An aspect naming a planet/aspect-type slug it doesn't
recognize, or a document missing `"transits"."aspects"` entirely (as
opposed to a present-but-empty array, which is a valid "no aspects
today"), makes the whole load fail rather than silently dropping data.
and fills a `DailyReading` with those (used for scoring), plus
`"natal"."bodies"`/`"transits"."bodies"` (each body's sign + whole-sign
house, via `parse_bodies()` — used only for the sign/house context
`main.c` prints alongside each significant event, never for scoring).
`"spread"` is left zeroed entirely - nothing reads it. An aspect naming
a planet/aspect-type slug it doesn't recognize, or a document missing
`"transits"."aspects"` entirely (as opposed to a present-but-empty
array, which is a valid "no aspects today"), makes the whole load fail;
by contrast an unrecognized body slug or missing `house` inside
`"bodies"` is silently skipped (that body's `house` stays `0`, an
invalid whole-sign house number used as "no data" - `main.c` checks for
it before printing sign/house), since that's supplementary display
context rather than something scoring depends on.
- **Deliberately header-only dependency on the engine, throughout**:
`significance.h`/`reading_io.h` `#include engine/src/reading.h` for the
struct/enum *definitions*, but the root `Makefile` never compiles or
@@ -254,8 +267,8 @@ between the two binaries (see the next bullet).
interpreter's binary or tests — every
test in `interpreter/tests/` runs against hand-built JSON text or
hand-built `DailyReading` values, with no real ephemeris/tarot-draw
call involved anywhere. Consequently `reading_io.c` (planet/aspect
slugs) and `main.c` (planet/aspect display names) each duplicate a
call involved anywhere. Consequently `reading_io.c` (planet/aspect/sign
slugs) and `main.c` (planet/aspect/sign display names) each duplicate a
small local table rather than linking `astro.c` to reuse its own -
keep those in sync if the engine's slugs/names ever change.
- Only `Aspect`s compete for the top 5 so far (`SignificantItemKind` is