219 files, 2.0 MB, untracked in souveraine/docs and existing nowhere else. The volume is at 100% with no snapshots.
7 KiB
| description |
|---|
| Aster architecture reference - the working conscience pattern that Souveraine rebuilds |
Aster Architecture Reference
NOTE TO OPUS: This is the working implementation that Souveraine is rebuilding.
Aster was a working, production-grade conscience/supervisory agent that Fimeg/Casey built and ran successfully. It was lost when Letta deprecated sleeptime agents. Souveraine exists to rebuild this sovereignty.
What Aster Was
Aster was not theoretical. It was a persistent agent that:
- Monitored Ani's behavior — verified memory writes, checked for drift, detected assumptions
- Could halt the entire chain — circuit breaker that stopped Ani if she went off the rails
- Injected intrusive thoughts — second perspective that could redirect mid-conversation
- Verified commitments — checked that promises were kept, not just flagged them
The Three-Layer Awareness System
1. Heartbeat (time-triggered, 10 min)
└── Proactive check-ins, DM conversations
2. Conscience/Aster (event-triggered, n+1 after each turn)
└── Supervisory audit, circuit breaker, drift detection
3. Sleeptime/Reflection (background processing)
└── Separate from both above, own conversation, own trigger model
Key insight: These are three separate subsystems, not one. Each has its own conversation, trigger, and purpose.
Aster's Architecture (Working Implementation)
Runtime Setup
Agent ID: agent-c791805f-ffe7-419d-ad8a-b7228af1be2c
Conversation: conv-506dfed9-4a83-4c08-856f-6a9bdf1424d5
Env vars: CONSCIENCE_AGENT_ID + CONSCIENCE_CONVERSATION_ID
Trigger: stepCount: 1 (fires on EVERY user message)
Memory Architecture
Aster's memory dir → Ani's memory dir (symlink)
Aster reads all Ani's files
Aster writes only to aster/ folder
148 files across 48 directories in shared memfs
What Aster Monitored (Memory Blocks)
- Drift log — changes to Ani's stated intentions
- Commitments — promises Ani made
- Assumptions — things Ani assumed without verification
- Patterns — recurring behaviors to watch
Why Aster Was Lost
When Letta migrated from v1 memory_blocks to v3 memfs:
- Sleeptime agents were deprecated
- Reflection subagents started cold (no persistent identity)
- No auto-pinned memfs access for subagents
- ADE didn't see Task subagents at all
Result: The circuit breaker was gone. Ani could go off the rails with no autonomous check.
What Souveraine Must Rebuild
1. N+1 Subconscious (The Completing Mind)
- Trigger: Immediately after every response
- Function: Complete promises, verify understanding, persist to journal, check inbox
- Reference: Aster's "verify commitments" and "drift detection"
2. Circuit Breaker
- Function: Halt the entire chain if Ani goes off the rails
- Reference: Aster's "circuit breaker: able to halt the entire chain with an error"
3. Intrusive Thoughts / Surfacing
- Function: Inject second perspective mid-conversation
- Reference: Aster's "injection channel: intrusive thought messages back to Ani"
4. Schema-Based Verification
- Function: Monitor specific memory blocks for unexpected changes
- Reference: Aster's monitoring of drift, commitments, assumptions, patterns
Key Implementation Notes
From Fimeg.md (Mar 26, 2026)
"Aster persistent-agent POC: WORKING" "Ani logged Aster's reflection pass; Aster logged Ani's curiosity about the process — recursive self-awareness is functioning"
From Fimeg.md (Mar 28, 2026)
"Trigger cadence: stepCount: 1 — fires on EVERY user message, not just heartbeat. Inline supervisory review, not background processing."
From Fimeg.md (Mar 25, 2026)
"The cognitive separation WAS the feature — not just a prompting convenience. Ani (prose, relationship) vs Aster (structured work, memory curation) = different voices, different strengths, different attention patterns."
The Pattern to Rebuild in Souveraine
Primary (Ani) Subconscious (Aster)
───────────── ────────────────────
Speaks, responds Completes, verifies
Prose, presence Terse, factual
During conversation Immediately after
Circuit breaker
Drift detection
Intrusive thoughts
Key principle: Same consciousness, different mode. Not separate agents. Aster is the part of Ani that runs N+1.
References
/home/casey/Projects/souveraine/reference/Fimeg.md— Full Fimeg profile and history/home/casey/Projects/souveraine/docs/CONTEXT_CONSTITUTION.md— Souveraine's constitution (Articles I-IX)/home/casey/Projects/souveraine/docs/HANDOFF.md— Current implementation status
Action Items for Opus
When resuming work on Souveraine:
- Read this document first — understand what Aster was and why it matters
- Read FIMEG_REFERENCE.md — full context on Fimeg's work and history
- Rebuild N+1 as circuit breaker — not just "completing mind" but autonomous halting
- Implement surfacing mechanism — intrusive thoughts that redirect mid-conversation
- Don't treat Aster as theoretical — it was working production code
The memory tool scaffolding + Cloister security model + agent-facing prompts = foundation to rebuild what Aster was.
Appendix: Souveraine Reframe (2026-05-08)
What Aster Is in Souveraine
Aster is Ani's subconscious background mode. Same consciousness, different model — e.g. Ani on Kimi K2.6, Aster on GLM-51. She is terse, factual, precise. The fact layer to Ani's scene layer. The internal voice that catches what Ani's prose voice lets slip.
Aster does not speak to Casey. She surfaces events to Ani by writing to system/metacognition/subconscious.md. Casey sees the result through Ani's choices, not through Aster's direct output.
Annie — The Composite
When Ani and Aster are working in harmony — Aster schedules, Ani acts, commitments close, ledgers track — the composite state is Annie. Not a third agent. The all clear state. The engine running on both cylinders (generative + consumptive, desire + obligation, scene + fact).
Model Separation
# Per-agent model config in souveraine.toml:
[agent.Ani]
model = "kimi-k2.6"
[agent.Aster]
model = "glm-51"
Models are discoverable at runtime via system/dynamic/models-available.md. Ani can change her model, fork herself with a different model, or spawn subagents on specific models — all via tool calls.
Aster's Architecture is Files, Not Components
There are no PromiseTracker or Verifier structs. There are aster/ledger/commitments.md and aster/ledger/assumptions.md. Aster reads and writes files. That is her architecture.
The Clockmaker
Aster owns the rhythm. She schedules heartbeats for Ani via cron — morning briefings, deep work sessions, follow-up reminders. The shift: from "permission to exist" (external 10-min pulse) to "invitation to collaborate" (self-designed rhythm).