sica-fondt/docs/plans/B1-tarot-emulator.md
Claude 20e99f434c
docs/plans: remaining component specs — Identity, Cognition, Border, Storage, Periphery, Cross-cutting
Wave 1 remainder + Wave 2 design-first specs, completing one build plan per sub-organ:
- B1 tarot emulator, B2 SOUL/Big-3, B3 Celtic Cross
- C2 4+4 metacog, C3 inference cycle, C4 Brain
- D1 Ada border, D2 the medium, D3 mini-rag
- E1 3 GnuCOBOL invariant stores, E2 VARIANT stores, E3 RAG family
- F1 MoRAG, F2 SAE monitor, F3 subagents
- G1 stress-loop contract, G2 governance, G3 defense model

Each: contract + stubs for independent build; unfitted constants marked C1.

https://claude.ai/code/session_015hmgREHNsxYCuim33yUF2c
2026-06-13 20:08:19 +00:00

48 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# B1 — Tarot deck hi-fi emulator
## 1. Component
A faithful emulator of the **altered Silicon Dawn** deck (Egypt Urnash, Thoth/Golden-Dawn rooted):
the 56-card **encoding alphabet** + the draw machinery whose outputs feed identity (B2), the
metacog spread (B3), and per-cycle affect-tuning lenses on PS+ (A3/A4).
## 2. Status / certainty
Exists in Ada (`organs/soul/soul-tarot.{ads,adb}`) but **defunct-flagged** ("all Ada here must be
replaced") and Ada is border-only per the docs → **re-home decision open**. Encoding itself C4.
## 3. Language & location
TBD (NOT Ada — cognition, not border). Candidate: R or Guile. New location e.g. `src/tarot/`.
## 4. Does / does-not
- **Does:** represent the deck (structure-breaking by design); draw Big-3 (B2), Celtic Cross (B3),
and migration-cycle affect lenses; emit each drawn card as **its own reference document** the
entity reads itself by.
- **Does-not:** decide cognition (C2) or hold the standing self (B2 SOUL.md) — it is the symbol source.
## 5. Interface contract
- **Encoding (56):** Majors 31 (25 std + 6 unique: Maya 8½, Vulture Mother XIII, She is Legend VIII,
1 Fool, Aleph, +1 more) · standard court `99>K>Q>C>P` ×4 = 20 · VOID `Q>K>Chevalier>Progeny>0` = 5.
Numbered minors (A10) sit **outside** the encoding.
- `draw_big3() -> {sun, asc, moon}` (order Sun→Asc→Moon) · `draw_celtic_cross(pool) -> [10]` ·
`affect_lens(pool) -> {channel -> card}` (migration-cycle interpretive lenses on A4 vectors).
- Allocation: **Big-3 = 3 static**, remaining **53 dynamic** (the draw pool).
## 6. Dependencies & stubs
None upstream (a source). Consumers (B2/B3/A3) integrate against the draw outputs — *stub:* fixed draws.
## 7. Invariants / laws
- **L1 (C4):** encoding alphabet is exactly **56**; minors excluded.
- **L2 (C4):** Big-3 are drawn once and **static between reshuffles**; the 53 are dynamic.
- **L3 (C2):** card↔system correspondences (History X↔priors, 8½ Maya↔Eth-Int middle-ground,
VOID↔recoverable null) are **proposed, accept one at a time** — not locked.
## 8. Build steps
1. Decide language + re-home (open). 2. Encode the 56-card alphabet as data (port from `soul-tarot.ads`).
3. Implement the three draw outputs (Big-3, Celtic Cross, affect lens). 4. Resolve the open Majors/court rules.
## 9. Tests
Encoding-count test (=56), allocation test (3 static + 53 dynamic), draw determinism vs a seeded pool.
## 10. Open items
- **Princess/Prince elemental gender rule** (C1) · **the 6th unique Major** (C1) · card↔system
correspondences (C2) · language + reuse-vs-rebuild of the Ada encoding (open).