219 files, 2.0 MB, untracked in souveraine/docs and existing nowhere else. The volume is at 100% with no snapshots.
182 lines
7 KiB
Markdown
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).
|