Skip to content

Desktop: Welcome Team is recreated after users remove Fizz, Honey, and Pollen #6914

Description

@nandali

Summary

Buzz Desktop recreates the built-in Welcome Team agents (Fizz, Honey, and Pollen) after a user explicitly removes them from My Agents. There is no persistent opt-out state, so the Welcome Team reconciliation path reactivates the built-in personas and recreates their managed-agent instances.

Environment

  • Buzz Desktop: desktop-v0.5.20
  • Self-hosted relay: v0.5.2
  • Platform: macOS
  • Relay membership required: enabled

Steps to reproduce

  1. Complete Desktop onboarding against a self-hosted relay.
  2. Remove Fizz, Honey, and Pollen from My Agents, or delete their managed-agent instances.
  3. Restart Buzz Desktop or re-enter the Welcome channel/onboarding flow.
  4. Observe the Welcome Team reconciliation run again.

Actual behavior

  • The built-in personas are forced active again.
  • Missing managed-agent instances are recreated.
  • Welcome channel bot membership is restored.
  • The relay receives new revisions for the same kind 30177 managed-agent coordinates.

Expected behavior

An explicit user removal should persist across restarts and Welcome channel reconciliation. Removed Welcome Team agents should not be recreated unless the user explicitly chooses to restore them.

Source-level diagnosis

desktop/src/features/onboarding/welcomeGuide.ts calls ensureWelcomeTeam() / provisionWelcomeTeam(), which:

  1. calls ensureWelcomeTeamPersonasActive(),
  2. looks up the three starter personas and relay-scoped instances,
  3. creates missing managed-agent instances,
  4. updates runtime/access settings, and
  5. restores Welcome channel membership.

The in-process promise map prevents concurrent duplicate provisioning, but it is not a persistent user opt-out.

The supported managed-agent deletion path correctly emits an owner-signed NIP-09 coordinate tombstone for 30177:<owner>:<d-tag> and an identity archive request. The problem is that Welcome reconciliation can subsequently provision the instances again.

Suggested fix

  • Persist a welcome_team_opt_out=true state when the user removes the built-in Welcome Team.
  • Check the opt-out before ensureWelcomeTeam() performs persona activation, agent provisioning, membership reconciliation, or Welcome intro work.
  • Add an explicit Restore Welcome Team action that clears the opt-out.
  • Add a regression test covering: remove agents → restart Desktop → enter Welcome channel → no new kind 30177 create/update events.

Additional note

This is a Desktop lifecycle issue rather than a relay database cleanup issue. Direct deletion of relay event rows is neither necessary nor desirable; the existing signed tombstone/archive flow should remain the removal mechanism.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions