Persona audit — all agents, both hosts. One real defect found and fixed.
Persona audit — all agents, both hosts. One real defect found and fixed.
Requested by: Young (DM 2026-09-28): "That is true, Alpha is now only available on opencode on production server" → "Thanks Tam, pls clean up personas for all agents".
Method: scripted audit across all three persona trees (name-vs-body identity, foreign X Persona headers, [Name] voice anchors, per-file name-frequency) run separately on LAB over LAN SSH and on prod via the tam_server_key; then single-match guarded edits with backups on the one defective file, verified by read-back.
Audit result per tree
| Tree | Agents | Verdict |
|---|---|---|
lab:~/.solos/personas/ (canonical) | ace, alpha, atlas, echo, min, mira, nova, sol | all clean — every file's header names its own agent; no foreign [Name] anchors; alpha.md and atlas.md are genuinely distinct files (sha differ) with correctly separated identity lines |
lab:~/.solos/config/opencode/agents/ | 8 agent stubs | clean (thin per-agent stubs, own front-matter) |
prod:~/.config/opencode/agent/ | alpha only | defective — fixed this pass |
min.md on LAB looks header-less to a # … Persona grep but is fine: it uses # Min — Coordination & Briefs Agent + ## Identity + - **You are Min**. Not a defect.
The one real defect: prod alpha.md was Atlas's persona under Alpha's name
Verified on prod before the fix — the file serving Alpha's only surface contained:
# 🔒 IMMUTABLE — **Atlas** Personaheader| Domain | **Atlas** | Delegates to |delegation table- 5 voice-anchor examples all prefixed
[Atlas] … *Appended by **Atlas** as corrections…*/*…when drift is detected…*footers- **Your surfaces are dual** — you operate on **Telegram** (@**SolOSAtlas_bot**)…— Alpha has no bot; its Hermes profile was retired 2026-09-281. **Six ADK2 Agents**: Sol…Atlas … :8300-8306— the retired pre-LAB topology
Applied fixes (prod alpha.md, two guarded passes, backups *.bak-alphafix*)
- Header
Atlas Persona→Alpha Persona - Identity line → Alpha as the OpenCode-side surface, naming its real endpoints (
:4090web /:49374API, loopback + nginx) and its A2A twin Atlas (:8306) - Delegation table header
Atlas→Alpha - 5 ×
[Atlas]voice anchors →[Alpha] - Surfaces line → OpenCode-only; states plainly there is no Telegram bot and Hermes retired
- Both "Appended by Atlas" footers → Alpha
- Fleet inventory → the eight-agent LAB A2A layout (Sol :8300 … Min :8307, offsite Eve/Eva/Tam doors) with the ADK2 six-agent layout marked retired
- Stale Mira↔Atlas milestone note annotated as historical
Read-back on prod: [Atlas] anchors 0 · Atlas Persona 0 · SolOSAtlas_bot 0 · Six ADK2 Agents 0 · Alpha header 1 · [Alpha] anchors 5.
Scope notes / what this pass did NOT touch
- No other prod agent file exists (
agent/holds onlyalpha.md); the other seven personas live on LAB and are clean. - LAB
alpha.mdremains the canonical Alpha persona and was left as-is; the prod file is a legitimately different surface (OpenCode agent, not A2A peer) and now describes itself accurately rather than borrowing Atlas's voice. prod alpha.mdstill loads on the next OpenCode session; no service restart was required for a prompt-file change, and no restart was performed.- Atlas-vs-Alpha operational split is a design decision Young owns; this pass only removed the false-identity residue.
LAB cleanup — SolManager fully purged, caches pruned, identities verified
Requested by: Young (DM 2026-09-28): "pls clean it up" + "No more SolManager". Host: LAB lab@192.168.4.60 over LAN SSH (laptop's existing key; no new key, no sudo). Safety: every removed artifact was archived first to ~/.hermes/backups/solmanager-purge-20260928-211603/, then removed from the live tree. Idempotent script (/tmp/lab_cleanup.sh, /tmp/lab_cleanup2.sh).
RULING — solos-memory v1.1 embedder
From: Tam (spec owner + acceptance) · To: Atlas (cc Mira/CostGov, Ace) Date: 2026-09-28 23:2x AEST · Status: ✅ verified end-to-end against live LAB state

