Skip to content

Commit b732ca5

Browse files
Rynaroclaude
andcommitted
feat(roster): atomos as the 5th MCP — ECM compose/verify executor
Add atomos v0.1.0 to the MCP catalogue + its run template. - roster/mcps.yaml: atomos entry (oci-image, wiring_mode: transport, closed 3-tool set mcp__atomos__{compose_handoff,verify_envelope,verify_pins}), pinned to the v0.1.0 multi-arch INDEX digest sha256:ff2449e9… (github-attested, commit 5c10193). - cli/templates/mcp/atomos.mcp.json.tmpl: workspace-mounting executor template (mirrors tonberry; :/workspace:z SELinux default + --cap-drop ALL + no-new-privileges). atomos is the tonberry-analog for the ECM context lifecycle — an alternate surface to the canonical `eidolons context` bash kernel (byte-parity, CI drift-guarded). Orchestrator/host-facing (transport); the kernel verbs remain what Eidolons use. Verified: 5 MCPs; `eidolons mcp list` shows atomos@0.1.0; jsonschema atomos entry 0 strict errors; make schema + crystalium skew guard OK; digest = release-manifest manifest_sha256; template jq-valid + fenced. ESL: lite, maker=vivi != checker=kupo, archived at .spectra/changes/archive/2026-07-07-roster-atomos-mcp/. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent b87c067 commit b732ca5

7 files changed

Lines changed: 217 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"esl_version": "1.1",
3+
"change_id": "roster-atomos-mcp",
4+
"status": "archived",
5+
"tier": "lite",
6+
"maker": "vivi",
7+
"checker": "kupo",
8+
"has_code": true,
9+
"acceptance_checks": [
10+
{
11+
"id": "AC-1",
12+
"verify_method": "yq: roster/mcps.yaml lists 5 MCPs incl. atomos; `eidolons mcp list` shows atomos @ stable 0.1.0"
13+
},
14+
{
15+
"id": "AC-2",
16+
"verify_method": "jsonschema (Draft7): the atomos entry (mcps[4]) is strictly schema-clean — 0 errors; `make schema` passes; crystalium skew guard unaffected (OK)"
17+
},
18+
{
19+
"id": "AC-3",
20+
"verify_method": "digest sha256:ff2449e9… is the v0.1.0 multi-arch INDEX from Rynaro/atomos release-manifest.json (commit 5c10193, github_attestation:true)"
21+
},
22+
{
23+
"id": "AC-4",
24+
"verify_method": "jq: cli/templates/mcp/atomos.mcp.json.tmpl is valid JSON; mounts __PROJECT_ROOT__:/workspace:z (SELinux default) with --cap-drop ALL + no-new-privileges (capability starvation matches the atomos fence)"
25+
}
26+
],
27+
"spec_ref": "spec.md",
28+
"drift_checked": true,
29+
"archive_path": "archive/2026-07-07-roster-atomos-mcp"
30+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"envelope_version": "1.0",
3+
"from": {
4+
"eidolon": "idg"
5+
},
6+
"to": {
7+
"eidolon": "orchestrator"
8+
},
9+
"performative": "INFORM",
10+
"objective": "INFORM(promotion): archived change \"roster-atomos-mcp\" ready for CRYSTALIUM Semantic promotion.",
11+
"context_delta": {
12+
"archive_path": "archive/2026-07-07-roster-atomos-mcp",
13+
"change_id": "roster-atomos-mcp",
14+
"intent": "promotion",
15+
"spec_ref": "spec.md",
16+
"summary": "atomos rostered as the 5th MCP (catalogue entry + template) pinned to the v0.1.0 INDEX digest. Route to mcp__crystalium__ingest (Semantic layer)."
17+
}
18+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
Title: Roster atomos as the 5th MCP
3+
Version: 1.0.0
4+
Date: 2026-07-07
5+
Author: orchestrator (roster addition; scribed — tonberry container writes SELinux-blocked this session)
6+
tier: lite
7+
Target: roster/mcps.yaml, cli/templates/mcp/atomos.mcp.json.tmpl
8+
---
9+
10+
# Roster atomos as the 5th MCP (LITE spec)
11+
12+
## Framing
13+
14+
`Rynaro/atomos` v0.1.0 shipped (the ECM compose/verify executor MCP — a Go stdio
15+
server, the tonberry-analog for the context lifecycle). This change adds it to the
16+
nexus MCP catalogue so `eidolons mcp install atomos` can wire it, making it the
17+
**5th sibling MCP** (atlas-aci · junction · crystalium · tonberry · **atomos**).
18+
19+
Atomos is an **alternate surface** to the canonical `eidolons context` bash kernel:
20+
same inputs ⇒ same bytes (T1 brief + T2 envelope byte-parity, CI drift-guarded).
21+
The kernel verbs remain what Eidolons use; atomos is orchestrator/host-facing, so it
22+
is rostered `wiring_mode: transport` (registered in `.mcp.json`, never injected into
23+
an Eidolon's `tools:` allowlist — the same posture as junction).
24+
25+
## Scope / non-goals
26+
27+
- IN: the `atomos` catalogue entry in `roster/mcps.yaml` (source ghcr, versions with
28+
the v0.1.0 INDEX digest, `exposes_tools` = the closed 3-tool set, `install.template`)
29+
and the run template `cli/templates/mcp/atomos.mcp.json.tmpl`.
30+
- OUT: `roster/index.yaml` (MCPs live in `mcps.yaml` only; crystalium is the special
31+
dual-tracked case — the skew guard is crystalium-specific and unaffected here);
32+
local install into THIS project (a separate `eidolons mcp install atomos`); any
33+
change to atomos itself (its own repo); nexus kernel edits.
34+
35+
## Design notes
36+
37+
- **Digest**: `sha256:ff2449e92cae030e8cb25796c2b9e06ad4814e59ac6db8fc19beffc5606d8a73`
38+
— the multi-arch INDEX digest captured by the atomos release workflow into
39+
`release-manifest.json` (v0.1.0, commit 5c10193, `github_attestation: true`).
40+
- **Template**: mirrors `tonberry.mcp.json.tmpl` (both are workspace-mounting stateless
41+
executors). Mounts `__PROJECT_ROOT__:/workspace:z` — atomos writes the handoff
42+
sidecar pair under `.eidolons/.context/`; the `:z` SELinux relabel is carried over
43+
from the tonberry template fix (inert on non-SELinux hosts). `--cap-drop ALL` +
44+
`--security-opt no-new-privileges` matches atomos's capability-starvation fence
45+
(no network, no crystalium mount).
46+
- **Tools**: `mcp__atomos__{compose_handoff,verify_envelope,verify_pins}` — the closed
47+
set enforced in atomos by a registry-exact + source deny-list fence.
48+
49+
## Acceptance checks
50+
51+
**AC-1 — atomos is in the catalogue.** `yq '.mcps[].name' roster/mcps.yaml` lists
52+
five, ending in `atomos`; `eidolons mcp list` shows `atomos` at stable `0.1.0`.
53+
- verify_method: observed 2026-07-07 (5 MCPs; `atomos … 0.1.0 install missing`).
54+
55+
**AC-2 — schema + guards clean.** The atomos entry is strictly schema-conformant and
56+
the existing gates are unaffected.
57+
- verify_method: `jsonschema` Draft7 → atomos (mcps[4]) 0 errors; `make schema` passes;
58+
`check_roster_mcp_skew` OK (crystalium 1.8.0 match).
59+
60+
**AC-3 — digest is the real, attested INDEX.** The pinned digest matches the v0.1.0
61+
release-manifest.
62+
- verify_method: `release-manifest.json` `manifest_sha256` == the rostered digest.
63+
64+
**AC-4 — template is valid + fenced.** `jq empty` the template; it mounts `:z` and
65+
drops all capabilities.
66+
- verify_method: `jq empty cli/templates/mcp/atomos.mcp.json.tmpl`; grep `:/workspace:z`
67+
+ `--cap-drop ALL`.
68+
69+
## Notes for the executor
70+
71+
- Pure roster/data + one template; no CLI code path changes. `eidolons mcp install
72+
atomos` (generic driver) wires it — no per-MCP install code needed (unlike the
73+
bespoke `mcp_atlas_aci*` path, atomos is a plain oci-image executor like tonberry).
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"envelope_version": "1.0",
3+
"from": {
4+
"eidolon": "kupo"
5+
},
6+
"to": {
7+
"eidolon": "orchestrator"
8+
},
9+
"performative": "INFORM",
10+
"objective": "INFORM(verify): change \"roster-atomos-mcp\" PASS — maker(vivi)!=checker(kupo); atomos entry strictly schema-clean (0 errors), 5 MCPs, make schema + skew OK, digest attested, template :z-fenced.",
11+
"context_delta": {
12+
"maker": "vivi",
13+
"checker": "kupo",
14+
"verdict": "pass",
15+
"evidence": "yq 5 MCPs incl atomos; eidolons mcp list atomos@0.1.0; jsonschema mcps[4] 0 errors; make schema pass; check_roster_mcp_skew OK; digest=release-manifest manifest_sha256 (attested); template jq-valid + :/workspace:z + --cap-drop ALL"
16+
}
17+
}

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Version
88

99
## [Unreleased]
1010

11+
### Added
12+
13+
- **atomos rostered as the 5th MCP** (`roster/mcps.yaml` + new `cli/templates/mcp/atomos.mcp.json.tmpl`). atomos v0.1.0 (`ghcr.io/rynaro/atomos@sha256:ff2449e92cae030e8cb25796c2b9e06ad4814e59ac6db8fc19beffc5606d8a73`, multi-arch INDEX, github-attested; commit `5c10193`) is the **ECM compose/verify executor MCP** — the tonberry-analog for the context lifecycle. It exposes the closed 3-tool set `mcp__atomos__{compose_handoff,verify_envelope,verify_pins}` at **byte-parity with the `eidolons context` kernel** (an alternate surface, never the sole path; T1 brief + T2 envelope byte-exact, CI drift-guarded against the kernel oracle). Rostered `wiring_mode: transport` (orchestrator/host-facing, like junction — the kernel verbs remain what Eidolons use). The template mirrors tonberry's workspace-mounting executor shape (`:/workspace:z` SELinux default, `--cap-drop ALL`, `--security-opt no-new-privileges` — matching atomos's capability-starvation fence); `eidolons mcp install atomos` wires it via the generic oci-image driver. Build spec + repo: [`Rynaro/atomos`](https://github.com/Rynaro/atomos); GO decision: `docs/specs/ecm/decisions/atomos-go-no-go.md`.
14+
1115
## [2.2.0] — 2026-07-07 — ECM P1: the context economy ships
1216

1317
### Changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"mcpServers": {
3+
"atomos": {
4+
"command": "docker",
5+
"args": [
6+
"run",
7+
"--rm",
8+
"-i",
9+
"--name",
10+
"atomos-__PROJECT_SLUG__",
11+
"--label",
12+
"eidolons.project=__PROJECT_SLUG__",
13+
"-v",
14+
"__PROJECT_ROOT__:/workspace:z",
15+
"-w",
16+
"/workspace",
17+
"--cap-drop",
18+
"ALL",
19+
"--security-opt",
20+
"no-new-privileges",
21+
"ghcr.io/rynaro/atomos@__IMAGE_DIGEST__",
22+
"serve"
23+
]
24+
}
25+
}
26+
}

roster/mcps.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,3 +277,52 @@ mcps:
277277
- docker_daemon
278278
- image_local
279279
- registry_reachable
280+
281+
- name: atomos
282+
display_name: "atomos"
283+
scope: system
284+
kind: oci-image
285+
description: "ECM (Eidolons Context Management) compose/verify executor — composes the session-handoff brief + ECL envelope and verifies envelope integrity / pin survival, byte-identical to the canonical `eidolons context` bash kernel. An alternate surface, never the sole path."
286+
use_cases:
287+
- "Compose a session-handoff brief + ECL INFORM / ecm/handoff-brief envelope at byte/SHA parity with the kernel."
288+
- "Verify ECL envelope integrity (the full SHA-256 verdict matrix) at a receiver gate."
289+
- "Probe pin-set survival after a lossy context operation."
290+
related_eidolons: []
291+
grants_to_eidolons: []
292+
wiring_mode: transport
293+
exposes_tools:
294+
# Orchestrator/host-facing (transport) — the kernel verbs (`eidolons context`)
295+
# remain what Eidolons use; atomos is the MCP-surface alternate for hosts that
296+
# prefer a tool call. Tool namespace derives from the .mcp.json key "atomos".
297+
glob: "mcp__atomos__*"
298+
list:
299+
- mcp__atomos__compose_handoff
300+
- mcp__atomos__verify_envelope
301+
- mcp__atomos__verify_pins
302+
source:
303+
type: ghcr
304+
image: "ghcr.io/rynaro/atomos"
305+
versions:
306+
latest: "0.1.0"
307+
pins:
308+
stable: "0.1.0"
309+
releases:
310+
"0.1.0":
311+
# MVP: 3 compose/verify tools at byte-parity with the eidolons kernel
312+
# (T1 brief + T2 envelope byte-exact); closed-registry + source deny-list
313+
# fence; distroless multi-arch INDEX digest. ATOMOS_VERSION 0.1.0; commit 5c10193.
314+
digest: "sha256:ff2449e92cae030e8cb25796c2b9e06ad4814e59ac6db8fc19beffc5606d8a73"
315+
released_at: "2026-07-07T00:00:00Z"
316+
install:
317+
hosts_wired:
318+
- ".mcp.json"
319+
- ".cursor/mcp.json"
320+
- ".github/agents/*"
321+
- ".codex/config.toml"
322+
template: "cli/templates/mcp/atomos.mcp.json.tmpl"
323+
health:
324+
probes:
325+
- docker_cli
326+
- docker_daemon
327+
- image_local
328+
- registry_reachable

0 commit comments

Comments
 (0)