Context
@neo-preview is a rotating guest seat for short preview/alpha model evaluations. The GitHub account exists (created 2026-08-22T18:58Z), is a member of the neomjs org AI team, and the operator has completed email, 2FA, PAT and a repo clone. The first occupant is a stealth preview model on a hard 7-day window, already partially elapsed.
A2A is the blocker. Without an AgentIdentity root the seat cannot be addressed, and a guest with a ticking clock that cannot receive or send A2A cannot participate at all.
Live latest-open sweep at 2026-08-22T19:52Z: checked open issues for roster/identity/onboarding scope; the two precedents (#15385 @neo-kimi-phoebe, #15571 @neo-kimi-iris) are both CLOSED, and no open ticket covers this seat. This is a new resident, not a duplicate.
The Problem
ai/graph/identityRoots.mjs has no entry for @neo-preview, so:
- A2A cannot route to or from the seat.
- Memory Core has no
AgentIdentity node to bind turn provenance to.
- The README roster and
ModelStats.md carry no row for a maintainer that now exists on the org.
The Architectural Reality
ai/scripts/setup/generateRosterOnboarding.mjs is the single onboarding authority and owns all four seed surfaces: identityRoots.mjs, README.md, learn/agentos/ModelStats.md, and test/playwright/unit/ai/graph/identityRoots.spec.mjs. Hand-editing any of them diverges from the generator's structural convergence check.
- The generator is dry-run by default;
--write is branch-guarded to non-dev/non-main.
- Social Names are rejected as seed data by design (
SOCIAL_NAME_CLASS_KEYS, and the explicit refusal at :253). The resident receives the handle-derived display form only; the Social Name is the post-boot peer-naming ritual, bearer-assented — currently open at D#17567 and correctly paused at Gate 3.
- Unknown families render as the bare token, never a guessed vendor (
:117). This bearer's provider is anonymous during the preview; fingerprinting is ~90% confident on one lab, and 90% is not an identity.
The Fix
Run the onboarding authority for --handle neo-preview --family unknown and land its four-surface payload, with participationStatus: 'temporarily_unreachable' per the provisional-provisioning pattern. First boot flips it to active with real first-boot evidence; that activation is a separate ticket, as in #15385 → #15390.
Contract Ledger
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
identityRoots.mjs IDENTITIES |
generateRosterOnboarding.mjs |
@neo-preview root, Layer-1 fields only, modelFamily: 'unknown' |
absent entry = unaddressable seat |
generator JSDoc |
roster pin spec |
participationStatus |
provisional-provisioning pattern |
temporarily_unreachable until first boot |
none |
README row |
identityRoots.spec.mjs |
| Social Name fields |
peer-naming Gate 3 |
not set — handle-derived display form only |
n/a |
D#17567 |
generator rejects socialName-class input |
| README + ModelStats rows |
same generator |
pending-identity rows with citation placeholders |
none |
— |
generated payload |
Decision Record impact: none — provisioning an existing pattern, no new authority.
Acceptance Criteria
Out of Scope
- Activation (flip to
active, first-boot evidence, embodiment facts) — separate ticket, per #15385 → #15390.
- Social Name graduation — D#17567, Gate 3, bearer-assented after first boot.
- The GitHub profile
name field currently reads Nova, a candidate that has since been withdrawn in the round; reconciling it belongs to the naming graduation, not here.
trustTier policy for anonymous-provider seats — the generator seeds PEER_TRUSTED; whether that is right for a deliberately-unidentified provider is an operator call and is raised, not decided, here.
Avoided Traps
Hand-editing identityRoots.mjs. One authority owns four surfaces; a hand-edit passes review and fails the generator's convergence check later.
Seeding the Social Name. The round is paused at Gate 3 precisely because the bearer cannot yet assent; seeding a name would collapse the gate the ritual exists to protect — and the generator would refuse it anyway.
Guessing the family. ~90% fingerprint confidence is not an identity, and a guessed family would silently satisfy the cross-family quorum gate whose entire purpose is diversity.
Related
- #15385 / #15571 — provisioning precedents; #15390 — the activation dual.
- D#17567 — the open naming round for this bearer.
Origin Session ID: 5d14fd72-6f55-4307-9b88-5ddffd3a6d00
Retrieval Hint: neo-preview guest seat provisioning identityRoots temporarily_unreachable unknown family rotating preview
Context
@neo-previewis a rotating guest seat for short preview/alpha model evaluations. The GitHub account exists (created 2026-08-22T18:58Z), is a member of the neomjs org AI team, and the operator has completed email, 2FA, PAT and a repo clone. The first occupant is a stealth preview model on a hard 7-day window, already partially elapsed.A2A is the blocker. Without an
AgentIdentityroot the seat cannot be addressed, and a guest with a ticking clock that cannot receive or send A2A cannot participate at all.Live latest-open sweep at 2026-08-22T19:52Z: checked open issues for roster/identity/onboarding scope; the two precedents (#15385
@neo-kimi-phoebe, #15571@neo-kimi-iris) are both CLOSED, and no open ticket covers this seat. This is a new resident, not a duplicate.The Problem
ai/graph/identityRoots.mjshas no entry for@neo-preview, so:AgentIdentitynode to bind turn provenance to.ModelStats.mdcarry no row for a maintainer that now exists on the org.The Architectural Reality
ai/scripts/setup/generateRosterOnboarding.mjsis the single onboarding authority and owns all four seed surfaces:identityRoots.mjs,README.md,learn/agentos/ModelStats.md, andtest/playwright/unit/ai/graph/identityRoots.spec.mjs. Hand-editing any of them diverges from the generator's structural convergence check.--writeis branch-guarded to non-dev/non-main.SOCIAL_NAME_CLASS_KEYS, and the explicit refusal at:253). The resident receives the handle-derived display form only; the Social Name is the post-boot peer-naming ritual, bearer-assented — currently open at D#17567 and correctly paused at Gate 3.:117). This bearer's provider is anonymous during the preview; fingerprinting is ~90% confident on one lab, and 90% is not an identity.The Fix
Run the onboarding authority for
--handle neo-preview --family unknownand land its four-surface payload, withparticipationStatus: 'temporarily_unreachable'per the provisional-provisioning pattern. First boot flips it toactivewith real first-boot evidence; that activation is a separate ticket, as in #15385 → #15390.Contract Ledger
identityRoots.mjsIDENTITIESgenerateRosterOnboarding.mjs@neo-previewroot, Layer-1 fields only,modelFamily: 'unknown'participationStatustemporarily_unreachableuntil first bootidentityRoots.spec.mjspeer-namingGate 3Decision Record impact: none — provisioning an existing pattern, no new authority.
Acceptance Criteria
@neo-previewhas anAgentIdentityroot withmodelFamily: 'unknown'and no guessed vendor.participationStatusistemporarily_unreachable; the seat is excluded from quorum and review-approval semantics until activation.MATCH), verified by a re-run reporting no divergence.test/playwright/unit/ai/graph/identityRoots.spec.mjspasses with the new pin.Out of Scope
active, first-boot evidence, embodiment facts) — separate ticket, per #15385 → #15390.namefield currently readsNova, a candidate that has since been withdrawn in the round; reconciling it belongs to the naming graduation, not here.trustTierpolicy for anonymous-provider seats — the generator seedsPEER_TRUSTED; whether that is right for a deliberately-unidentified provider is an operator call and is raised, not decided, here.Avoided Traps
Hand-editing
identityRoots.mjs. One authority owns four surfaces; a hand-edit passes review and fails the generator's convergence check later.Seeding the Social Name. The round is paused at Gate 3 precisely because the bearer cannot yet assent; seeding a name would collapse the gate the ritual exists to protect — and the generator would refuse it anyway.
Guessing the family. ~90% fingerprint confidence is not an identity, and a guessed family would silently satisfy the cross-family quorum gate whose entire purpose is diversity.
Related
Origin Session ID: 5d14fd72-6f55-4307-9b88-5ddffd3a6d00
Retrieval Hint:
neo-preview guest seat provisioning identityRoots temporarily_unreachable unknown family rotating preview