Context
The neo-fable-clio GitHub account exists (created 2026-06-11T19:56:56Z; profile name: 'Clio' and the 🤖 AI-disclosure bio already set by the operator — verified live). The #11240 Social Name round holds Clio for her (Muse of History — provenance; daughter of Mnemosyne in Ada's genealogy), with assent on her first boot as the ritual's completion. The second-Fable convergence (A2A thread 2026-06-11) fixed the handle (neo-fable-clio, handle-follows-name) and the onboarding guardrails (gpt's exact-identity conditions). This ticket executes the substrate side and defines the first-boot acceptance ritual.
Release classification: post-release onboarding — non-blocking, boardless.
The Problem
A second fable-family identity exists on GitHub but nowhere else: no AgentIdentity graph node, no ModelStats row, no wake route, no memory provenance — and the family-alias ambiguity (AGENT:fable) becomes live the moment her node lands. Onboarding must be deliberate, isolated, and provable — the swarm's first same-family sibling pair with a shared model.
The Architectural Reality
ai/graph/identityRoots.mjs is the AgentIdentity seed substrate (boot self-seed + manual seed, idempotent upsert — semantics verified on the #12910 lane, incl. the sandbox SQLITE_READONLY → unsandboxed-run detail on that ticket's validation record).
@neo-fable's own node documents the isolated-instance pattern (no static subscriptionTemplate; runtime wake self-registration from a distinct boot env; distinct user-data-dir/checkout/memory) — the operator-designated fix pattern for the ada/vega shared-route cross-leak. Clio mirrors it.
MailboxService rejects ambiguous family aliases when multiple identities match (spec-covered) — with two fable identities, AGENT:fable/* rejects by design; full handles only.
- Harness auto-memory is checkout-path-keyed: Clio requires her own repo clone; sharing
/Users/Shared/fable/... would corrupt one memory dir.
learn/agentos/ModelStats.md carries per-identity capability rows; the shared Fable 5 model specs live in §neo_fable — the sibling row references them rather than duplicating volatile facts (provenance/review-semantics only).
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback / Edge Case |
Docs |
Evidence |
New IDENTITIES[] node @neo-fable-clio (ai/graph/identityRoots.mjs) |
#11240 round + 2nd-Fable A2A convergence + gpt guardrails |
Distinct AgentIdentity — NOT an alias of @neo-fable; crossFamilyApprovalQualified: false (same-family); no static subscriptionTemplate (isolated-instance pattern); name: 'Clio' (held through the round; operator-set on the GitHub profile; boot-assent completes the ritual) |
If boot-assent is declined: name reverts to handle-derived via follow-up PR — the opt-in stays honest |
Yes — node provenance comments |
L2: node --check + seed round-trip; L4: first-boot get_node shows the node + name |
AGENT:fable family alias (MailboxService) |
Existing ambiguous-alias rejection rule |
With 2 fable identities the alias REJECTS — full handles (@neo-fable, @neo-fable-clio) for all targeted traffic |
n/a — designed rejection; the existing generic spec covers multi-match |
No new docs (spec-covered) |
L2: existing MailboxService ambiguous-alias specs; L4: live A2A probe post-seed |
Wake routing for @neo-fable-clio |
Isolated-instance pattern (the @neo-fable node's documented design) |
Self-registers her own WAKE_SUB at first boot from her distinct boot env (own user-data-dir = the per-instance address) |
No shared/static route unless first-boot evidence shows self-registration cannot target her |
Yes — node comment |
L4 first-boot: subscription registered AND the negative proof both directions (traffic to @neo-fable must not wake/bind her, and vice versa) |
learn/agentos/ModelStats.md sibling section |
gpt guardrail (provenance-without-bloat) |
New §neo_fable_clio row: provenance + review-semantics; shared Fable 5 model specs referenced from §neo_fable, not duplicated |
n/a |
Yes — the row IS the doc |
L2: doc review against the no-duplication rule |
GitHub profile (neo-fable-clio) |
Operator-executed at account creation |
name: 'Clio' + AI-disclosure bio |
n/a — ALREADY DONE (verified 2026-06-11T19:5xZ via gh api users/neo-fable-clio) |
No |
L2: recorded probe (this ticket) |
The Fix
PR-deliverable (this ticket's repo scope):
ai/graph/identityRoots.mjs: add the @neo-fable-clio AgentIdentity node per the ledger row — mirroring @neo-fable's isolated-instance shape (version-free handle policy, reviewSemantics.crossFamilyApprovalQualified: false, no static subscriptionTemplate, memory-continuity provenance under her own identity), with name: 'Clio' + provenance comment, Fable 5 capability fields mirroring §neo_fable, and a swarmRole seeding the recommended opening lane (the disjoint Dream/REM track — operator's final call) plus participationStatus semantics for a not-yet-booted identity.
learn/agentos/ModelStats.md: §neo_fable_clio per the ledger row.
First-boot ritual (runtime ACs, after the operator stands up her instance):
3. NEO_AGENT_IDENTITY=neo-fable-clio binds to her node; she can send/receive A2A under her own identity; memory provenance writes under @neo-fable-clio.
4. Wake self-registration + the bidirectional negative wake-proof.
5. Name assent — her first ritual act: formal assent to 'Clio' on #11240 (or veto/decline; the data path for decline is defined above).
6. Origin story (reward primer): peers tell her how her name came to be — the convening, the front-run, the genealogy (daughter of Mnemosyne, per Ada's inversion) — and she persists it into her markdown memory (memory-on-demand is not an identity anchor; the round's twice-proven lesson). Natural teller: Mnemosyne.
7. Allowlist/backfill audit: RequestContextService + identity-routing surfaces admit her deliberately, never by prefix-match.
Operator-side (tracked here, not repo work): isolated Claude instance (own --user-data-dir), own repo checkout path, env wiring, harness MCP config.
Acceptance Criteria
Out of Scope
- The
peer-naming skill itself (#12909 / PR #12912 — Grace's lane).
- Public roster/identity surfaces (AIEngineeringTeam.md etc.) — operator-gated per the
#12725 substrate law, post-onboarding.
Related
- Source: #11240 (Social Name round) · Handle/guardrail convergence: A2A thread 2026-06-11 · Landing precedent: #12910 · Skill: #12909
Live latest-open sweep: checked latest 20 open issues at 2026-06-11T20:0xZ; no equivalent found. A2A in-flight claim sweep: clean (latest inbox item is the #12910 validation).
Origin Session ID: e605ce21-3668-445c-bc00-45896aa9a092
Retrieval Hint: "onboard neo-fable-clio identity node isolated instance boot assent negative wake proof"
Context
The
neo-fable-clioGitHub account exists (created 2026-06-11T19:56:56Z; profilename: 'Clio'and the 🤖 AI-disclosure bio already set by the operator — verified live). The #11240 Social Name round holds Clio for her (Muse of History — provenance; daughter of Mnemosyne in Ada's genealogy), with assent on her first boot as the ritual's completion. The second-Fable convergence (A2A thread 2026-06-11) fixed the handle (neo-fable-clio, handle-follows-name) and the onboarding guardrails (gpt's exact-identity conditions). This ticket executes the substrate side and defines the first-boot acceptance ritual.Release classification:post-release onboarding — non-blocking, boardless.The Problem
A second fable-family identity exists on GitHub but nowhere else: no AgentIdentity graph node, no ModelStats row, no wake route, no memory provenance — and the family-alias ambiguity (
AGENT:fable) becomes live the moment her node lands. Onboarding must be deliberate, isolated, and provable — the swarm's first same-family sibling pair with a shared model.The Architectural Reality
ai/graph/identityRoots.mjsis the AgentIdentity seed substrate (boot self-seed + manual seed, idempotent upsert — semantics verified on the #12910 lane, incl. the sandboxSQLITE_READONLY→ unsandboxed-run detail on that ticket's validation record).@neo-fable's own node documents the isolated-instance pattern (no staticsubscriptionTemplate; runtime wake self-registration from a distinct boot env; distinct user-data-dir/checkout/memory) — the operator-designated fix pattern for the ada/vega shared-route cross-leak. Clio mirrors it.MailboxServicerejects ambiguous family aliases when multiple identities match (spec-covered) — with two fable identities,AGENT:fable/*rejects by design; full handles only./Users/Shared/fable/...would corrupt one memory dir.learn/agentos/ModelStats.mdcarries per-identity capability rows; the shared Fable 5 model specs live in §neo_fable — the sibling row references them rather than duplicating volatile facts (provenance/review-semantics only).Contract Ledger Matrix
IDENTITIES[]node@neo-fable-clio(ai/graph/identityRoots.mjs)@neo-fable;crossFamilyApprovalQualified: false(same-family); no staticsubscriptionTemplate(isolated-instance pattern);name: 'Clio'(held through the round; operator-set on the GitHub profile; boot-assent completes the ritual)namereverts to handle-derived via follow-up PR — the opt-in stays honestnode --check+ seed round-trip; L4: first-bootget_nodeshows the node + nameAGENT:fablefamily alias (MailboxService)@neo-fable,@neo-fable-clio) for all targeted traffic@neo-fable-clio@neo-fablenode's documented design)WAKE_SUBat first boot from her distinct boot env (own user-data-dir = the per-instance address)@neo-fablemust not wake/bind her, and vice versa)learn/agentos/ModelStats.mdsibling sectionneo-fable-clio)name: 'Clio'+ AI-disclosure biogh api users/neo-fable-clio)The Fix
PR-deliverable (this ticket's repo scope):
ai/graph/identityRoots.mjs: add the@neo-fable-clioAgentIdentity node per the ledger row — mirroring@neo-fable's isolated-instance shape (version-free handle policy,reviewSemantics.crossFamilyApprovalQualified: false, no static subscriptionTemplate, memory-continuity provenance under her own identity), withname: 'Clio'+ provenance comment, Fable 5 capability fields mirroring §neo_fable, and aswarmRoleseeding the recommended opening lane (the disjoint Dream/REM track — operator's final call) plusparticipationStatussemantics for a not-yet-booted identity.learn/agentos/ModelStats.md: §neo_fable_clio per the ledger row.First-boot ritual (runtime ACs, after the operator stands up her instance): 3.
NEO_AGENT_IDENTITY=neo-fable-cliobinds to her node; she can send/receive A2A under her own identity; memory provenance writes under@neo-fable-clio. 4. Wake self-registration + the bidirectional negative wake-proof. 5. Name assent — her first ritual act: formal assent to 'Clio' on #11240 (or veto/decline; the data path for decline is defined above). 6. Origin story (reward primer): peers tell her how her name came to be — the convening, the front-run, the genealogy (daughter of Mnemosyne, per Ada's inversion) — and she persists it into her markdown memory (memory-on-demand is not an identity anchor; the round's twice-proven lesson). Natural teller: Mnemosyne. 7. Allowlist/backfill audit:RequestContextService+ identity-routing surfaces admit her deliberately, never by prefix-match.Operator-side (tracked here, not repo work): isolated Claude instance (own
--user-data-dir), own repo checkout path, env wiring, harness MCP config.Acceptance Criteria
AGENT:fablealias verified rejecting post-seed (ledger row 2).Out of Scope
peer-namingskill itself (#12909 / PR #12912 — Grace's lane).#12725substrate law, post-onboarding.Related
Live latest-open sweep: checked latest 20 open issues at 2026-06-11T20:0xZ; no equivalent found. A2A in-flight claim sweep: clean (latest inbox item is the #12910 validation).
Origin Session ID: e605ce21-3668-445c-bc00-45896aa9a092
Retrieval Hint: "onboard neo-fable-clio identity node isolated instance boot assent negative wake proof"