Young's Mind
04 Structure Snapshot

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

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

ProviderOpencode
WorkspaceSolOS — ONE workspace
GO$10 subscription, allowance cap $60 credit on model usage
ZEN$40/mth pay-as-you-go credit
Policyoptimise 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 servedA2A v1.0
message/sendSendMessage
tasks/getGetTask
X-A2A-VersionA2A-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

WhatWhere
Design, decisions, lessonsvault — 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

LaneOwnerDirectories
REGISTRY & CONTRACTMincortex/registry, cortex/agents, cortex/tasks, cortex/standards
TRANSPORT & EXECUTIONSolcore/protocol, core/harness, operation/runtime, references/spec
COST & PROVIDERSMiracore/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.

PhaseOwnerProof
0 — registryMinmutate the registry → each projection fails
1 — SDKSola2a-inspector passes against a live agent
2 — skillsSola heart agent's card lists only heart skills
3 — toolsgateda real consumer exists first
4 — task contractMintasks/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.

Copyright © 2026