sica-fondt/docs/plans/B2-soul-identity.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

2.1 KiB

B2 — SOUL.md identity organ + Big-3

1. Component

The standing self-definition loaded at the top of a run (Hermes soul.md / CLAUDE.md equivalent): the Big-3 (Sun/Ascendant/Moon) drawn from the tarot (B1), plus the two reshuffle clocks that govern when identity re-rolls vs persists.

2. Status / certainty

Exists in Ada (organs/soul/soul-state.{ads,adb} — Big-3 + session table) but defunct-flagged; re-home decision open. Schema C4.

3. Language & location

TBD (lives "in the brain"; written to ~/.hermes/SOUL.md at boot by C1). New location e.g. src/soul/.

4. Does / does-not

  • Does: hold the Big-3 (each card → its own reference doc); render SOUL.md; manage the two reshuffles; carry one self into many rooms.
  • Does-not: draw cards (B1) or run the metacog (C2). It is the persistent face.

5. Interface contract

  • Big-3: { Sun: card (core/spine), Ascendant: card (outward mask), Moon: card (inner, shown only when vulnerable) }, immutable between reshuffles.
  • generate_soul_md(big3) -> text (written to ~/.hermes/SOUL.md).
  • Two reshuffles: full_renatal() (boot · deep · strong stress endomotiv via G1) → Big-3 re-rolled + fresh cross; cross_only(trigger) (new room · "went long enough") → Big-3 kept, prior cross folded back, new cross.

6. Dependencies & stubs

B1 tarot (draws) — stub: fixed Big-3. G1 stress (full-reshuffle trigger) — stub: call full_renatal() directly.

7. Invariants / laws

  • L1 (C4): Big-3 immutable between reshuffles (identity is the slow layer).
  • L2 (C4): full reshuffle re-rolls Big-3; cross-only keeps it — one self, many rooms.
  • L3 (C2): a strong stress endomotiv (G1) can fire a full reshuffle.

8. Build steps

  1. Decide language/re-home. 2. Port Big-3 + SOUL.md render. 3. Implement the two reshuffle clocks + the G1 trigger hook. 4. Wire boot write to ~/.hermes/SOUL.md (C1).

9. Tests

Big-3 immutability across a cross-only reshuffle; re-roll on full; SOUL.md render snapshot.

10. Open items

  • Reuse-vs-rebuild + language (open). "Went long enough" trigger threshold (C1). G1 stress→reshuffle threshold (C1/C2).