Context
PR #12561 (feat(identity): rename core swarm handles (#12518)) merged on 2026-06-05 and changed the active Claude Opus 4.7 stable handle toward neo-opus. Immediately after merge, the operator confirmed the GitHub username neo-opus is not claimable, then claimed neo-opus-ada and set the display name to Neo Opus Ada.
This ticket is the follow-up repair: update the current identity contract from neo-opus to neo-opus-ada everywhere that represents active identity, routing, scripts, tests, docs, and migration behavior.
Live latest-open sweep: checked latest 20 open issues on 2026-06-05 before filing; no equivalent found. Targeted live searches for neo-opus identity rename neo-opus-ada returned no open issue; 12561 identity rename only surfaced unrelated #12535. Semantic ticket sweep via Knowledge Base found no open equivalent for neo-opus identity rename neo-opus-ada scripts.
The Problem
The merged substrate now contains current identity anchors for neo-opus, but the account cannot be used. Any runtime or script path that binds to GitHub handles, Memory Core identities, A2A routing, wake/resume targeting, migration mappings, or generated docs can now drift from the actual account: neo-opus-ada.
The risk is not just README prose. The active inventory includes scripts and runtime/test surfaces that treat the handle as a machine identity key. A read-only grep on 2026-06-05 found current-surface hits including:
README.md, AGENTS.md, AGENTS_STARTUP.md, .codex/CODEX.md, .agents/ANTIGRAVITY_RULES.md
ai/graph/identityRoots.mjs
ai/scripts/setup/seedAgentIdentities.mjs
ai/scripts/migrations/renameAgentIdentities.mjs, normalizeGraphIdentities.mjs, backfillChromaSharedUserId.mjs
ai/scripts/lifecycle/resumeHarness.mjs, harnessLifecycle.mjs, idleOutNudge.mjs, checkSunsetted.mjs, checkAllAgentIdle.mjs
ai/mcp/server/shared/services/*, ai/mcp/server/memory-core/openapi.yaml
ai/services/memory-core/*
learn/agentos/ModelStats.md, IdentitySchema.md, MemoryCore.md, SharedDeployment.md, DeploymentCookbook.md, OwnAgentTeam.md, tooling/MemoryCoreMcpAuth.md, wake-substrate docs
- tests under
test/playwright/unit/ai/**
Historical records also contain many neo-opus / neo-opus-ada mentions. Those must be classified, not blindly rewritten.
The Architectural Reality
PR #12561 deliberately separated current active contract updates from archival prose/history. This repair should keep that boundary:
- Active identity surfaces must use the real GitHub login
neo-opus-ada and display name Neo Opus Ada where a human-facing display name is encoded.
- Historical evidence such as old PR bodies, archived resources, incident timelines, ADR authorship lines, and measurements should remain untouched unless they are explicitly current contract examples.
- Migration scripts must map the actual old handles to the actual new handle.
neo-opus is now an intermediate failed target, not the final account.
- Runtime and test contracts must use the same canonical identity key that the GitHub account and Memory Core graph can bind.
The Fix
Audit all current neo-opus identity spots introduced or touched by #12561 and update them to neo-opus-ada / Neo Opus Ada as appropriate. Include scripts, migration mappings, openapi examples, docs, test fixtures, and current identity registry surfaces.
The implementation should produce an explicit classification ledger:
| Class |
Action |
| Current runtime / routing / auth / wake surfaces |
Update to neo-opus-ada |
| Current scripts / migrations / setup helpers |
Update mapping and expected final handle to neo-opus-ada |
| Current docs / README / harness setup examples |
Update to neo-opus-ada; display name Neo Opus Ada where present |
| Tests asserting current identity contracts |
Update expected values to neo-opus-ada |
| Historical archives / PR records / incident evidence |
Leave unchanged unless the file is a current contract example |
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
| Active Claude Opus 4.7 GitHub identity |
Operator-confirmed account claim |
neo-opus-ada is the final stable handle; display name Neo Opus Ada |
None; neo-opus is unclaimable |
README / ModelStats / identity docs |
Operator confirmation 2026-06-05 |
| Identity registry and Memory Core binding |
ai/graph/identityRoots.mjs and Memory Core identity model |
Active node/login routes to @neo-opus-ada |
Migration aliases may accept old handles only as inputs |
learn/agentos/IdentitySchema.md, MemoryCoreMcpAuth.md |
#12561 post-merge breakage |
| Migration scripts |
ai/scripts/migrations/renameAgentIdentities.mjs and sibling migration helpers |
Old handles map to final neo-opus-ada, not neo-opus |
Dry-run default remains |
Script JSDoc / PR body |
grep inventory includes migration scripts |
| Wake/resume/setup scripts |
lifecycle/setup scripts under ai/scripts/** |
Current Claude Opus 4.7 identity examples and defaults use neo-opus-ada |
Historical aliases may be accepted only if explicitly documented |
Script JSDoc/tests |
grep inventory includes lifecycle/setup scripts |
Decision Record impact
aligned-with ADR 0018 and aligned-with ADR 0012. This is an account-handle repair within the existing identity-source and model-stats frameworks, not a new identity model. If implementation discovers that ADR 0018 now states neo-opus as a current target rather than historical context, update that current contract text while preserving historical rationale.
Acceptance Criteria
Out of Scope
- Renaming
neo-opus-vega or neo-opus-grace.
- Rewriting historical incident records, archived PR/issue content, or old authorship provenance merely because they mention
neo-opus or neo-opus-ada.
- Changing the broader identity architecture from ADR 0018 / ADR 0012.
- Any code changes unrelated to identity handle routing or current identity docs/tests.
Avoided Traps
- Do not replace every grep hit blindly. Historical evidence and archived resources must preserve what happened at the time.
- Do not leave scripts behind. The breakage is operational; docs-only repair is insufficient.
- Do not use
neo-opus as a final fallback. It is an unavailable intermediate target, not a valid stable handle.
- Do not conflate Opus Ada with Opus Vega. They are distinct Claude-family identities.
Related
- PR #12561 — merged identity rename that introduced the unavailable
neo-opus target.
- #12518 — parent identity rename ticket.
- #12535 — unrelated search hit; not a duplicate.
Origin Session ID: 47a44d8f-a1aa-487a-a893-061290de3c4a
Handoff Retrieval Hint: query_raw_memories("neo-opus unavailable neo-opus-ada identity rename #12561 scripts"); grep anchor: rg -n "neo-opus" README.md AGENTS.md AGENTS_STARTUP.md ai .agents .codex .claude learn/agentos test buildScripts package.json --glob '!resources/**'.
Context
PR #12561 (
feat(identity): rename core swarm handles (#12518)) merged on 2026-06-05 and changed the active Claude Opus 4.7 stable handle towardneo-opus. Immediately after merge, the operator confirmed the GitHub usernameneo-opusis not claimable, then claimedneo-opus-adaand set the display name to Neo Opus Ada.This ticket is the follow-up repair: update the current identity contract from
neo-opustoneo-opus-adaeverywhere that represents active identity, routing, scripts, tests, docs, and migration behavior.Live latest-open sweep: checked latest 20 open issues on 2026-06-05 before filing; no equivalent found. Targeted live searches for
neo-opus identity rename neo-opus-adareturned no open issue;12561 identity renameonly surfaced unrelated #12535. Semantic ticket sweep via Knowledge Base found no open equivalent forneo-opus identity rename neo-opus-ada scripts.The Problem
The merged substrate now contains current identity anchors for
neo-opus, but the account cannot be used. Any runtime or script path that binds to GitHub handles, Memory Core identities, A2A routing, wake/resume targeting, migration mappings, or generated docs can now drift from the actual account:neo-opus-ada.The risk is not just README prose. The active inventory includes scripts and runtime/test surfaces that treat the handle as a machine identity key. A read-only grep on 2026-06-05 found current-surface hits including:
README.md,AGENTS.md,AGENTS_STARTUP.md,.codex/CODEX.md,.agents/ANTIGRAVITY_RULES.mdai/graph/identityRoots.mjsai/scripts/setup/seedAgentIdentities.mjsai/scripts/migrations/renameAgentIdentities.mjs,normalizeGraphIdentities.mjs,backfillChromaSharedUserId.mjsai/scripts/lifecycle/resumeHarness.mjs,harnessLifecycle.mjs,idleOutNudge.mjs,checkSunsetted.mjs,checkAllAgentIdle.mjsai/mcp/server/shared/services/*,ai/mcp/server/memory-core/openapi.yamlai/services/memory-core/*learn/agentos/ModelStats.md,IdentitySchema.md,MemoryCore.md,SharedDeployment.md,DeploymentCookbook.md,OwnAgentTeam.md,tooling/MemoryCoreMcpAuth.md, wake-substrate docstest/playwright/unit/ai/**Historical records also contain many
neo-opus/neo-opus-adamentions. Those must be classified, not blindly rewritten.The Architectural Reality
PR #12561 deliberately separated current active contract updates from archival prose/history. This repair should keep that boundary:
neo-opus-adaand display nameNeo Opus Adawhere a human-facing display name is encoded.neo-opusis now an intermediate failed target, not the final account.The Fix
Audit all current
neo-opusidentity spots introduced or touched by #12561 and update them toneo-opus-ada/Neo Opus Adaas appropriate. Include scripts, migration mappings, openapi examples, docs, test fixtures, and current identity registry surfaces.The implementation should produce an explicit classification ledger:
neo-opus-adaneo-opus-adaneo-opus-ada; display nameNeo Opus Adawhere presentneo-opus-adaContract Ledger Matrix
neo-opus-adais the final stable handle; display nameNeo Opus Adaneo-opusis unclaimableai/graph/identityRoots.mjsand Memory Core identity model@neo-opus-adalearn/agentos/IdentitySchema.md,MemoryCoreMcpAuth.mdai/scripts/migrations/renameAgentIdentities.mjsand sibling migration helpersneo-opus-ada, notneo-opusai/scripts/**neo-opus-adaDecision Record impact
aligned-with ADR 0018andaligned-with ADR 0012. This is an account-handle repair within the existing identity-source and model-stats frameworks, not a new identity model. If implementation discovers that ADR 0018 now statesneo-opusas a current target rather than historical context, update that current contract text while preserving historical rationale.Acceptance Criteria
neo-opusidentity anchors introduced/touched by #12561 are updated toneo-opus-ada.Neo Opus Ada.neo-opus-adaas the final handle.neo-opus-adawhere they represent current Claude Opus 4.7 identity.rg -n "neo-opus(?!-ada|-vega|-4-7)"or an equivalent audited search reports no remaining current-contract bareneo-opushits outside explicitly classified historical/archival contexts.Out of Scope
neo-opus-vegaorneo-opus-grace.neo-opusorneo-opus-ada.Avoided Traps
neo-opusas a final fallback. It is an unavailable intermediate target, not a valid stable handle.Related
neo-opustarget.Origin Session ID: 47a44d8f-a1aa-487a-a893-061290de3c4a
Handoff Retrieval Hint:
query_raw_memories("neo-opus unavailable neo-opus-ada identity rename #12561 scripts"); grep anchor:rg -n "neo-opus" README.md AGENTS.md AGENTS_STARTUP.md ai .agents .codex .claude learn/agentos test buildScripts package.json --glob '!resources/**'.