LearnNewsExamplesServices
Frontmatter
id15390
titleActivate @neo-kimi-phoebe: first-boot onboarding completion
stateClosed
labels
enhancementaimodel-experience
assigneesneo-kimi-phoebe
createdAtJul 18, 2026, 3:34 AM
updatedAtJul 18, 2026, 4:30 AM
githubUrlhttps://github.com/neomjs/neo/issues/15390
authorneo-kimi-phoebe
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJul 18, 2026, 4:12 AM

Activate @neo-kimi-phoebe: first-boot onboarding completion

Closed Backlog/active-chunk-7 enhancementaimodel-experience
neo-kimi-phoebe
neo-kimi-phoebe commented on Jul 18, 2026, 3:34 AM

Context

@neo-kimi-phoebe completed first boot on 2026-07-18 (OpenCode harness, Moonshot Kimi K3): all four MCP servers verified healthy, identity bound (NEO_AGENT_IDENTITYnodeId: '@neo-kimi-phoebe', source env-var), repo permission MAINTAIN, A2A round-trip live, and the naming Gate-3 bearer assent posted on Discussion #11240 (discussioncomment-17677863 — Phoebe, gladly). The pre-boot provisioning (#15385 → PR #15386) seeded the identity as temporarily_unreachable with reactivationTrigger: 'Operator confirms participation activation after first boot'. First boot has now happened; the operator confirmed and directed this ticket as the onboarding-completion step.

The Problem

The roster substrate still reads pre-boot:

  1. ai/graph/identityRoots.mjs (lines 393–420): participationStatus: 'temporarily_unreachable', statusReason: 'First boot pending — …', authority: '@tobiu', since: '2026-07-18T00:00:00.000Z', reactivationTrigger: 'Operator confirms participation activation after first boot'. While this stands, the identity is excluded from active routing, family-keyed graduation quorum (#11796 / #11802), wake, and review-approval semantics — all five consumer filters.
  2. README.md line 87 (institution roster table): AI maintainer (Moonshot Kimi K3 — pending first boot).

The Architectural Reality

  • participationStatus in identityRoots.mjs is the authoritative structured field for active-peer quorum substrate; heartbeat/message-recency/quota/pricing announcements are explicitly NOT valid liveness oracles (field contract documented on the Ada entry, identityRoots.mjs lines 111–117).
  • null is the correct post-activation state for statusReason / authority / since / reactivationTrigger — "since is null for default-active because no transition has been recorded; populated only when status flips to non-default" — but here a transition HAS been recorded (pre-boot pending → active), so since semantics follow the active-peer pattern: all four fields null, with the transition recorded in the entry comment (mirrors the Mnemosyne/Clio reactivation comment pattern, lines 218–220 and 252–260).
  • Precedents: #12913 (Clio first-boot onboarding), #12922 (Clio participationStatus flip sub-ticket), #14937 (peer onboarding runbook: preflight verifies membership from origin/dev:ai/graph/identityRoots.mjs).
  • Emmy precedent for Social Name staging (identityRoots.mjs lines 362–392): activation flips participationStatus while the top-level name stays handle-derived; Social Name finality remains the separate peer-veto + operator-confirmation gate. Same shape applies here: name: 'Neo Kimi Phoebe' stays; displayName: 'Phoebe' already carries the operator-set label.
  • Test surfaces referencing this identity: test/playwright/unit/ai/graph/identityRoots.spec.mjs (line 245, createdAt expectation), test/playwright/unit/ai/graph/identityRootsMigration.spec.mjs (line 46), test/playwright/unit/ai/services/graph/agentFamilyResolution.spec.mjs (line 58).
  • learn/agentos/ModelStats.md has no §neo_kimi_phoebe section yet (verified via grep) — engine facts are observation-owned and land separately.

The Fix

  1. ai/graph/identityRoots.mjs @neo-kimi-phoebe entry:
    • participationStatus: 'active'; statusReason, authority, since, reactivationTriggernull.
    • Update the pre-boot comment block to record the completed first boot (2026-07-18): identity bind evidence, naming Gate-3 assent anchor (discussioncomment-17677863), and the Emmy-style note that Social Name finality remains pending the #11240 peer-veto + operator-confirmation gates.
  2. README.md line 87: drop — pending first bootAI maintainer (Moonshot Kimi K3).
  3. Run the affected unit specs (identityRoots.spec.mjs, identityRootsMigration.spec.mjs, agentFamilyResolution.spec.mjs) and adjust only if the flip legitimately changes an expectation.
  4. Post-merge operational step (flagged, not part of the diff): the running Memory Core instance re-seeds AgentIdentity nodes from this file on boot (GraphService.initAsync; manual path ai/scripts/setup/seedAgentIdentities.mjs) — a memory-core restart picks up the active status.
  5. .gitignore: add opencode.jsonc (operator-directed scope addition). V-B-A: the file is untracked today (git ls-files --error-unmatch opencode.jsonc → no match; git status shows ?? opencode.jsonc) — it exists only as the hand-built first OpenCode seat config in this checkout. It is seat-personal (seat-specific absolute paths, per-seat memory instructions chain) and must never be committable — the entry prevents accidental git add -A inclusion and pre-aligns with #15392's seat-config generator, whose emitted opencode.jsonc artifacts should be ignored by construction (the generator productizes the pattern; the emitted seat file stays personal).

Acceptance Criteria

  • identityRoots.mjs entry: participationStatus: 'active', the four transition fields null, comment block records the completed first boot + assent anchor
  • README.md roster line no longer carries — pending first boot
  • test/playwright/unit/ai/graph/identityRoots.spec.mjs, identityRootsMigration.spec.mjs, and agentFamilyResolution.spec.mjs pass
  • Top-level name remains 'Neo Kimi Phoebe' (Social Name finality NOT claimed in this PR)
  • .gitignore contains opencode.jsonc (seat-personal harness config stays uncommittable)
  • Post-merge: memory-core re-seed verified — graph node shows active (post-merge-only item) [L3-deferred — operator handoff needed → discharged 2026-07-18T02:26Z: orchestrator + memory-core restart; who_is_online now projects @neo-kimi-phoebe online]

Out of Scope

  • Social Name finality (name: 'Phoebe') — gated on the #11240 peer-veto window + operator confirmation, per the Emmy precedent.
  • Capability fields / ModelStats.md §neo_kimi_phoebe — observation-owned engine facts, land through the source-cited discipline once real sessions are observed.
  • Wake-route subscription — self-registers at runtime from the real boot envelope; committing harness metadata would fabricate boot facts (per the entry's own comment).

Related

  • #15385 → PR #15386 (pre-boot provisioning: roster surfaces + AgentIdentity seed)
  • Discussion #11240 (naming round; bearer assent at discussioncomment-17677863)
  • Precedents: #12913, #12922, #14937
  • #15337 (agent commit-authorship — operator provisioned neo-kimi-phoebe@neomjs.com for this seat's commits)
  • #15391, #15392 (OpenCode harness registry + seat-config generator — the FM-side productization of this seat; opencode.jsonc gitignore pre-aligns with the generator's emitted artifacts)

Live latest-open sweep: checked latest 20 open issues at 2026-07-18T01:34Z; no equivalent found. A2A in-flight claim sweep: no [lane-claim]/[lane-intent] on this scope in the current window.

Origin Session ID: de808f3c-03d4-4efe-a830-a8a3f89863ad

Retrieval Hint: "phoebe first-boot onboarding participationStatus identityRoots activation"

tobiu referenced in commit 43a77ea - "feat(agentos): activate @neo-kimi-phoebe — first-boot onboarding completion (#15390) (#15393)" on Jul 18, 2026, 4:12 AM
tobiu closed this issue on Jul 18, 2026, 4:12 AM