LearnNewsExamplesServices
Frontmatter
id12580
titleFinish neo-opus-ada and neo-gemini-pro identity-handle propagation
stateClosed
labels
bugairefactoring
assigneesneo-gpt
createdAtJun 5, 2026, 6:11 PM
updatedAtJun 7, 2026, 7:19 PM
githubUrlhttps://github.com/neomjs/neo/issues/12580
authorneo-opus-grace
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 5, 2026, 7:32 PM

Finish neo-opus-ada and neo-gemini-pro identity-handle propagation

neo-opus-grace
neo-opus-grace commented on Jun 5, 2026, 6:11 PM

Context

PR #12579 (fix(identity): route opus handle to neo-opus-ada, Resolves #12578) repaired the urgent post-#12561 identity breakage: it routed active opus surfaces to neo-opus-ada and de-versioned the gemini handle (neo-gemini-proneo-gemini-pro, operator-confirmed intended; neo-gemini-pro GitHub account exists). The PR was approved Approve+Follow-Up (review PRR_kwDODSospM8AAAABCIGGZw): its core runtime/auth/wake/migration routing is verified clean and CI-green, but three current-surface propagation gaps were deferred to this follow-up per @tobiu.

The Problem

Three sets of current surfaces still carry stale/inconsistent identity handles after #12579:

  1. Gemini de-version split-brain. #12579 applied neo-gemini-pro to the identity SSOT seam (ai/graph/identityRoots.mjs), AGENTS.md, README.md, and the CI lint arrays — but NOT to .agents/skills/**, where ~12 files still hold the canonical @neo-gemini-pro (the lead-role / peer-role / session-sunset fixed rotation cycles, consensus-mandate, ticket-intake/triage rosters, corrective-authorship-rotation). The seam and the skill substrate now disagree on gemini's handle. The operational fixed-cycle arrays are the highest-risk — they drive wake/coordination rotation; a stale handle there risks the same wake-targeting-mismatch class as the original #12561 break.

  2. Unclaimable neo-opus lingering in the two CI lint arrays. .github/workflows/agent-pr-body-lint.yml:20 (agentAuthors) and agent-pr-review-body-lint.yml:31 (agentReviewers) list 'neo-opus' — the unclaimable handle this whole effort exists to remove — instead of 'neo-opus-ada'. Functionally inert today (the author.startsWith('neo-') fallback still covers neo-opus-ada), but it is the wrong value and contradicts the de-version's purpose.

  3. Two #12578-enumerated current surfaces untouched. .codex/CODEX.md:19 (A2A-peers note) and .agents/ANTIGRAVITY_RULES.md:8 (gemini's swarm roster) still reference the old @neo-opus-ada. Both were explicitly listed as current surfaces in #12578 but missed — the author's completeness grep excluded neo-opus-ada, so they slipped.

The Architectural Reality

  • ai/graph/identityRoots.mjs is the identity SSOT seam (ADR 0018). Downstream surfaces (skill rosters, harness configs, CI lint allow-lists) must agree with it. The .agents/skills/** references are static text a migration does not touch, so they need explicit propagation.
  • CURRENT vs HISTORICAL classification is load-bearing: historical/provenance @neo-opus-ada / @neo-gemini-pro (e.g., consensus-mandate empirical anchors bound to past comment IDs, old PR/incident records) MUST be preserved. Only current/active identity anchors get propagated.

The Fix

  1. Propagate neo-gemini-proneo-gemini-pro across the current .agents/skills/** references (fixed-cycle arrays, rosters), preserving historical empirical-anchor references.
  2. .github/workflows/agent-pr-body-lint.yml:20 + agent-pr-review-body-lint.yml:31: 'neo-opus''neo-opus-ada'.
  3. .codex/CODEX.md:19 + .agents/ANTIGRAVITY_RULES.md:8: current @neo-opus-ada@neo-opus-ada.
  4. Re-verify with a seam-keyed grep (not a bare-handle grep) that no current surface disagrees with identityRoots.mjs.

Contract Ledger Matrix

Surface Authority Current (stale) Target
.agents/skills/** current gemini refs identityRoots.mjs @neo-gemini-pro @neo-gemini-pro
agent-pr-body-lint.yml agentAuthors + agent-pr-review-body-lint.yml agentReviewers the lint workflows 'neo-opus' 'neo-opus-ada'
.codex/CODEX.md:19, .agents/ANTIGRAVITY_RULES.md:8 current opus refs identityRoots.mjs @neo-opus-ada @neo-opus-ada
Historical / provenance handle refs (immutable) @neo-opus-ada / @neo-gemini-pro PRESERVE

Decision Record impact

aligned-with ADR 0018 (identity source-of-truth) + ADR 0012 (model-stats: model-version prose Claude Opus 4.7 / Gemini 3.1 Pro stays; only account handles change). Account-handle propagation is operator-owned per the neo-identity-update skill; this ticket completes the propagation #12579 deferred. No new identity architecture.

Acceptance Criteria

  • .agents/skills/** current gemini references use @neo-gemini-pro; historical empirical-anchor references unchanged.
  • agentAuthors / agentReviewers arrays in both lint workflows use 'neo-opus-ada' (no 'neo-opus').
  • .codex/CODEX.md + .agents/ANTIGRAVITY_RULES.md current opus references use @neo-opus-ada.
  • Seam-keyed grep confirms no current surface disagrees with identityRoots.mjs; model-fact Claude Opus 4.7 / Gemini 3.1 Pro preserved.
  • CI green (the lint workflows still fire for all neo-* authors).

Out of Scope

  • Historical / provenance handle references (preserve, do not rewrite).
  • The live GitHub account binding (operator-owned; verified post-merge per #12578).
  • Model-version prose (Claude Opus 4.7, Gemini 3.1 Pro model-facts stay per ADR 0012).

Related

PR #12579 (the repair this follows), #12578 (closed close-target), #12561 (original breakage), #12518 (rename lineage), ADR 0018, ADR 0012. Natural @neo-gpt lane (his PR).

Origin Session ID: f5432f03-d2b6-4bc0-a7b5-9fbdafe4b7b9 Retrieval Hint: "neo-opus-ada neo-gemini-pro identity de-version split-brain .agents/skills lint arrays"

tobiu referenced in commit 0502b3c - "fix(identity): propagate static agent handles (#12580) (#12581)" on Jun 5, 2026, 7:32 PM
tobiu closed this issue on Jun 5, 2026, 7:32 PM