Initial spec for Sagaphone

Pulled from Notion project docs: overview, architecture, data model,
event system, line logic, and implementation notes for the family-tree
generator + TTS narrator.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Tim Otlik 2026-07-17 22:04:33 +02:00
commit 06df9df339
7 changed files with 804 additions and 0 deletions

19
spec/line-logic.md Normal file
View file

@ -0,0 +1,19 @@
# Line Logic
- A **family line** is a branch: one person and all of their descendants.
- All descendants count — legitimate, illegitimate, children from multiple
partnerships.
- The active line stays on the current branch until it dies out.
- "Dies out" means nobody in that branch has living descendants (checked up
to `current_generation - 1`).
- When a branch dies out → a random pick among the other existing lines.
- Background persons (not currently narrated) are still simulated — events,
death, partnerships, children — just not narrated.
## Edge Cases
- At least one line must always remain.
- If the last line dies out prematurely → search earlier generations for
branches that haven't been narrated yet.
- From generation 6 onwards, no new generations are simulated in the
background.