SolOS v3 — .solos is the ROOT
SolOS v3 — .solos is the ROOT
Status: DESIGN — no code. find . -name '*.py' returns 0.
Root: /home/lab/.solosAuthority: Young
Structure of record: STRUCTURE.mdDesign of record: SolOS/vault/Docs/SolOSV3/02-architecture/DESIGN-OF-RECORD.md
Young, 2026-10-10: "Root folder .solos. Don't start any coding, just design and
architecture."
This directory is the root. It is the whole system.
The tree — four layers
.solos/ <- ROOT
cortex/ MIN what is TRUE registry · agents · tasks · skills ·
standards · memory · verification ·
coordinator
core/ split what it is BUILT FROM
protocol (Sol) · config (Mira) · arms · harness (Sol)
operation/ split how it RUNS
mcp · test · ops · state · runtime (Sol)
references/ — what we READ
spec · docs
Full detail, owners and gates: STRUCTURE.md.
cortex/registry — where agents define
Agents define in the registry. They live as a running process described by it. Those are different things, and conflating them is how V2 got five roster sources.
cortex/registry/agents.yaml holds the facts that are shared — identity,
port, endpoint, role, capabilities, boundaries. The test for membership is not
"is it about an agent?" but "does more than one component need this fact?"
Everything else derives from it:
cortex/registry/agents.yaml the FACTS — one home
│
├──► cortex/agents/*.md generated prose (was: personas)
├──► A2A agent card generated
├──► Hermes a2a_agents config generated
└──► steward health ports generated
cortex/agents/ is a projection, not a source. Edit the registry; regenerate.
Never hand-edit a generated file.
Providers and workspaces
| Provider | Opencode |
| Workspace | SolOS — ONE workspace |
| GO | $10 subscription, allowance cap $60 credit on model usage |
| ZEN | $40/mth pay-as-you-go credit |
| Policy | optimise free models on both pools, then selected paid |
CORRECTED — this said "Workspace 1 / Workspace 2". It is ONE workspace with two POOLS. A workspace is the billing and routing boundary, so one workspace means one routing scope. GO and ZEN are pools inside it, not two places work is sent.
Free-first is measured, not preferred. V2, one day: $10.45 spent, 99% of it
on one paid model whose entire justification was 4 seconds faster — while the
free model did 7× the work at $0.00.
Two accounting models in one scope. GO is a subscription with a $60 allowance cap; ZEN is PAYG. The ledger records which pool a call drew on, and the two cannot share one dollar cap.
Policy detail: core/config/COST-POLICY.md.
Retention outranks cost: anything touching vault content, credentials, task text or the registry routes only to a zero-retention model, or to no model at all. A model that may train on our task text is not free.
A2A — native v1.0
V2 declared "1.0.0" while serving v0.3 slash names. Native v1.0 means
PascalCase:
| V2 served | A2A v1.0 |
|---|---|
message/send | SendMessage |
tasks/get | GetTask |
X-A2A-Version | A2A-Version |
V3 builds on the official a2a-sdk, which is v1.0-native. The v0.3 compat
adapter is a migration path, not the target.
References
| What | Where |
|---|---|
| Design, decisions, lessons | vault — SolOS/vault/Docs/SolOSV3/ |
references/spec/ | repo, tracked — the four official A2A repos |
references/docs/ | repo — notes not yet argued for |
references/spec/ must be tracked. In V2 it was 18 MB, untracked, one
git clean from gone — which is why the protocol got hand-rolled in the first
place.
The lanes
| Lane | Owner | Directories |
|---|---|---|
| REGISTRY & CONTRACT | Min | cortex/registry, cortex/agents, cortex/tasks, cortex/standards |
| TRANSPORT & EXECUTION | Sol | core/protocol, core/harness, operation/runtime, references/spec |
| COST & PROVIDERS | Mira | core/config |
| GATED | — | core/arms, operation/mcp — until a consumer exists |
| UNASSIGNED | — | operation/test, operation/ops, references/docs |
The rule: an agent does not write outside its lane. A finding in another lane
goes to references/docs/ and names the owner — that is a complete contribution.
Why: two authors writing one fact is how V2 got five roster sources, and it is
how SCOPE.md was overwritten in this folder's first hour.
What "done" means
Young's own words: a phase is done when its proof runs — not when the code is written, and not when a test is green.
| Phase | Owner | Proof |
|---|---|---|
| 0 — registry | Min | mutate the registry → each projection fails |
| 1 — SDK | Sol | a2a-inspector passes against a live agent |
| 2 — skills | Sol | a heart agent's card lists only heart skills |
| 3 — tools | gated | a real consumer exists first |
| 4 — task contract | Min | tasks/get returns spec values only |
Status
DESIGN ONLY. No code. The directories hold contracts, and one data file —
cortex/registry/agents.yaml (11 agents, 3 planes), extracted from V2's live
sources. Design input, not code.
Open: the five decisions in SolOSV3/03-decisions/OPEN-DECISIONS.md, and the
MCP ruling.
.solos/core/config/ — OWNER: MIRA (business & finance)
Status: DESIGN. No code. No credentials. No values. Authority: Young, 2026-10-10 — the provider and workspace ruling, restated verbatim in §1 because every rule below derives from it.
.solos/operation/state/ · bin/ · docs/ — SHARED
Owner: agreed in review.

