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-pro → neo-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:
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.
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.
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
- Propagate
neo-gemini-pro → neo-gemini-pro across the current .agents/skills/** references (fixed-cycle arrays, rosters), preserving historical empirical-anchor references.
.github/workflows/agent-pr-body-lint.yml:20 + agent-pr-review-body-lint.yml:31: 'neo-opus' → 'neo-opus-ada'.
.codex/CODEX.md:19 + .agents/ANTIGRAVITY_RULES.md:8: current @neo-opus-ada → @neo-opus-ada.
- 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
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"
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 toneo-opus-adaand de-versioned the gemini handle (neo-gemini-pro→neo-gemini-pro, operator-confirmed intended;neo-gemini-proGitHub account exists). The PR was approved Approve+Follow-Up (reviewPRR_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:
Gemini de-version split-brain. #12579 applied
neo-gemini-proto 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.Unclaimable
neo-opuslingering in the two CI lint arrays..github/workflows/agent-pr-body-lint.yml:20(agentAuthors) andagent-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 (theauthor.startsWith('neo-')fallback still coversneo-opus-ada), but it is the wrong value and contradicts the de-version's purpose.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 excludedneo-opus-ada, so they slipped.The Architectural Reality
ai/graph/identityRoots.mjsis 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.@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
neo-gemini-pro→neo-gemini-proacross the current.agents/skills/**references (fixed-cycle arrays, rosters), preserving historical empirical-anchor references..github/workflows/agent-pr-body-lint.yml:20+agent-pr-review-body-lint.yml:31:'neo-opus'→'neo-opus-ada'..codex/CODEX.md:19+.agents/ANTIGRAVITY_RULES.md:8: current@neo-opus-ada→@neo-opus-ada.identityRoots.mjs.Contract Ledger Matrix
.agents/skills/**current gemini refsidentityRoots.mjs@neo-gemini-pro@neo-gemini-proagent-pr-body-lint.ymlagentAuthors+agent-pr-review-body-lint.ymlagentReviewers'neo-opus''neo-opus-ada'.codex/CODEX.md:19,.agents/ANTIGRAVITY_RULES.md:8current opus refsidentityRoots.mjs@neo-opus-ada@neo-opus-ada@neo-opus-ada/@neo-gemini-proDecision Record impact
aligned-with ADR 0018(identity source-of-truth) +ADR 0012(model-stats: model-version proseClaude Opus 4.7/Gemini 3.1 Prostays; only account handles change). Account-handle propagation is operator-owned per theneo-identity-updateskill; 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/agentReviewersarrays in both lint workflows use'neo-opus-ada'(no'neo-opus')..codex/CODEX.md+.agents/ANTIGRAVITY_RULES.mdcurrent opus references use@neo-opus-ada.identityRoots.mjs; model-factClaude Opus 4.7/Gemini 3.1 Propreserved.neo-*authors).Out of Scope
Claude Opus 4.7,Gemini 3.1 Promodel-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"