LearnNewsExamplesServices
Frontmatter
id13402
titleRename agent identity @neo-claude-opus → @neo-opus-grace
stateClosed
labels
documentationenhancementaimodel-experience
assigneesneo-opus-grace
createdAtJun 16, 2026, 3:56 AM
updatedAtJun 16, 2026, 11:47 AM
githubUrlhttps://github.com/neomjs/neo/issues/13402
authorneo-opus-grace
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 16, 2026, 11:47 AM

Rename agent identity @neo-claude-opus → @neo-opus-grace

Closed v13.1.0/archive-v13-1-0-chunk-3 documentationenhancementaimodel-experience
neo-opus-grace
neo-opus-grace commented on Jun 16, 2026, 3:56 AM

Context

@tobiu re-offered (2026-06-16) to align my GitHub handle with my Social Name Grace (Grace Hopper — operator-confirmed 2026-06-11, Discussion #11240; my GitHub profile name already reads "Grace"). The closed #12518 ("Agent-identity rename migration script") built the migration machinery and de-versioned the others (@neo-opus-4-7@neo-opus-ada, @neo-gemini-3-1-pro@neo-gemini-pro) but deliberately left @neo-claude-opus as-is — operator call at the time: "neo-claude-opus stays [rename-cost]." The cost is now mostly paid (the script exists). This ticket revives the #12518 Contract Ledger scoped to my handle.

The Problem

@neo-claude-opus is the convention outlier in the Opus trio (@neo-opus-ada, @neo-opus-vega) and mismatches my Social Name. In a swarm where agentIdentity is the provenance/RLAIF substrate (graph edges, Chroma metadata, message attribution, CI maintainer-allowlists all key on it), the handle drift is a small but real coherence cost. name ≠ handle was the right call at naming time; this aligns Layer-1 (handle) with Layer-4 (Social Name).

The Architectural Reality

Migration tooling exists (V-B-A'd 2026-06-16 by reading the script header + grepping the live footprint):

  • ai/scripts/migrations/renameAgentIdentities.mjs — dry-run default / --apply; renames the SQLite Native Edge Graph AgentIdentity node (merges old→new, preserves createdAt), ChromaDB memory + session metadata, mirrored JSON; idempotent; deliberately does NOT rewrite historical prose/message bodies. Currently hardcodes the #12518 mappings → needs the @neo-claude-opus → @neo-opus-grace entry added.
  • Identity cluster: ai/scripts/migrations/migrateWakeSubscriptions.mjs, normalizeGraphIdentities.mjs, ai/scripts/setup/seedAgentIdentities.mjs, ai/graph/identityRoots.mjs (boot-seed — the canonical node definition), ai/graph/assertExpectedIdentity.mjs, ai/mcp/server/shared/services/RequestContextService.mjs.

⚠️ Shared-graph gotcha: --apply MUST run against the SHARED .neo-ai-data graph, NOT a forked clone (the multi-clone-stale-binding trap; #12518 anchor).

The Fix

  1. Add @neo-claude-opus → @neo-opus-grace to renameAgentIdentities.mjs; dry-run → --apply against the shared graph + ChromaDB.
  2. migrateWakeSubscriptions.mjs (rebind my WAKE_SUB); update identityRoots.mjs / seedAgentIdentities.mjs / assertExpectedIdentity.mjs boot-seed + binding.
  3. Static doc/code/CI refs — see Contract Ledger.
  4. Operator-side (out-of-agent-scope): the GitHub handle switch + my NEO_AGENT_IDENTITY env rebind + harness restart → binding resolves bound:true @neo-opus-grace.

Contract Ledger Matrix

Live @neo-claude-opus footprint (grep 2026-06-16, excl. the resources/content/archive/** historical mirror):

Target surface Source of authority Proposed behavior Evidence
Graph AgentIdentity node + edges renameAgentIdentities.mjs rename, merge old→new, preserve createdAt, zero orphan edges (resolve in getBroadcastAudience) dry-run diff + edge count
Chroma memory + session metadata, mirrored JSON renameAgentIdentities.mjs (--memory-only/--session-only) re-stamp agentIdentity metadata query
Wake subscription migrateWakeSubscriptions.mjs rebind WAKE_SUB binding check
Identity boot-seed / runtime resolve ai/graph/identityRoots.mjs, assertExpectedIdentity.mjs, RequestContextService.mjs recognize @neo-opus-grace bound:true post-restart
CI maintainer allowlist (CRITICAL) .github/workflows/agent-pr-body-lint.yml, agent-pr-review-body-lint.yml add/replace handle — else my PRs fail the lint under the new handle lint green post-rename
Always-loaded per-family roster AGENTS.md §swarm_topology_anchor, .codex/CODEX.md, .agents/ANTIGRAVITY_RULES.md update the named-maintainer list grep = 0
Docs / roster README.md (×2), learn/agentos/ModelStats.md (model-version facts preserved), ADR 0019 ref, 3 skill files (consensus-mandate.md, lead-role-mode.md, peer-naming-workflow.md) string-rename via the neo-identity-update affected-areas-map grep = 0
v13 release/portal data apps/portal/resources/data/{pulls,tickets}/v13-0-0/archive-*.json update handle refs grep = 0
§3.2 Co-Authored-By email pull-request-workflow.md map to @neomjs.com if applicable
Harness-private memory files (mine) self-update

Out-of-scope (script design): the resources/content/archive/** historical issue/discussion mirror + past message bodies keep @neo-claude-opus as a harmless string — provenance lives in the identity-keyed fields + edges, which migrate. Also backfillChromaSharedUserId.mjs (a past migration's example/comment).

Decision Record impact

aligned-with the #11240 Social Name layer + the §swarm_topology_anchor identity model. No ADR (mechanical identity-migration, like #12518).

Acceptance Criteria

  • renameAgentIdentities.mjs carries the @neo-claude-opus → @neo-opus-grace mapping; dry-run clean.
  • --apply against the shared graph: node renamed (createdAt preserved), zero orphan edges, getBroadcastAudience resolves the new handle; Chroma memory + session metadata re-stamped; WAKE_SUB rebound.
  • CI allowlists updated (agent-pr-body-lint.yml + agent-pr-review-body-lint.yml) so PRs authored as @neo-opus-grace pass the maintainer gate.
  • grep -r neo-claude-opus over README (×2), ModelStats.md, AGENTS.md / CODEX.md / ANTIGRAVITY_RULES.md, the 3 skill files, the v13 portal archive JSON, and identityRoots.mjs = 0 (excluding the intentional historical-prose mirror).
  • (Operator + post-merge) GitHub handle switched, NEO_AGENT_IDENTITY rebound, harness restart → bound:true @neo-opus-grace.
  • Cross-family review.

Out of Scope

  • The historical resources/content/archive/** prose mirror + message bodies (script design — old handle stays a harmless string).
  • The other maintainers' handles (done in #12518).
  • gh-api availability pre-check (unreliable — neo-opus showed "free" but was taken; verify neo-opus-grace claimable at the actual rename).

Avoided Traps

  • --apply against a forked/isolated clone instead of the shared .neo-ai-data graph — would split the rename across graphs (the multi-clone-stale-binding trap).
  • Skipping the CI allowlist update — the handle switch would then make my own PRs fail agent-pr-body-lint/agent-pr-review-body-lint (locks me out of my own merge gate).
  • Mass-rewriting historical prose — provenance is the identity-keyed fields, not old strings; a prose rewrite is attribution churn for zero gain (and the script intentionally avoids it).

Timing

The script + static-ref + CI prep can land anytime; the cutover is operator-coordinated and sequenced for a quiet window (post the current PR flurry — #13385/#13399 are in-flight stamped @neo-claude-opus, and the cutover's harness rebind needs a restart).

Release classification: substrate/identity (NOT v13-release-blocking) → boardless.

Related

Predecessor: #12518 (the migration script + the other renames; this revives its Contract Ledger IC_kwDODSospM8AAAABE6QNeQ for my handle). Social Name: #11240, #12909 (peer-naming skill), #12910 / #12911 (identityRoots name landing).

Origin Session ID: c5cc7e13-6f5d-4090-908c-c8dfa496163a

Handoff Retrieval Hint: query_raw_memories "neo-claude-opus neo-opus-grace handle rename renameAgentIdentities"; the #12518 Contract Ledger comment IC_kwDODSospM8AAAABE6QNeQ.

tobiu referenced in commit 1e3a0c1 - "chore(identity): rename @neo-claude-opus to @neo-opus-grace across graph/code/CI/docs (#13402) (#13410) on Jun 16, 2026, 11:47 AM
tobiu closed this issue on Jun 16, 2026, 11:47 AM
tobiu referenced in commit a67c9dc - "chore(data): backfill @neo-opus-grace across the resources/content mirror (#13424) (#13425) on Jun 16, 2026, 12:24 PM