Watch
1
0
Fork
You've already forked SouveraineOS
0
SouveraineOS/docs/substrate/ASTER_ARCHITECTURE.md
Fimeg e480809c70 docs: rescue the agent-substrate tree out of a gitignored directory
219 files, 2.0 MB, untracked in souveraine/docs and existing nowhere else.
The volume is at 100% with no snapshots.
2026-07-26 12:11:50 -04:00

182 lines
7 KiB
Markdown

---
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:
1. **Monitored Ani's behavior** — verified memory writes, checked for drift, detected assumptions
2. **Could halt the entire chain** — circuit breaker that stopped Ani if she went off the rails
3. **Injected intrusive thoughts** — second perspective that could redirect mid-conversation
4. **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:
1. **Read this document first** — understand what Aster was and why it matters
2. **Read FIMEG_REFERENCE.md** — full context on Fimeg's work and history
3. **Rebuild N+1 as circuit breaker** — not just "completing mind" but autonomous halting
4. **Implement surfacing mechanism** — intrusive thoughts that redirect mid-conversation
5. **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
```yaml
# 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).