`bot` has the same permissions as `member`; it only labels a key with a
recorded agent owner. Instead of storing that label and converting rows
when an owner is recorded, store `member` for both ordinary roles and
compute the label wherever a role is read: rosters, member lists, role
reads, DM participants and the bot list. An agent owner is recorded once
and never changes, so a key's label changes at most once.
- Writers store `member` for an ordinary role; reads show `bot` exactly
when users.agent_owner_pubkey is set for the key in that community.
- The app-side roster fence treats `member` and `bot` as one role, so an
owner recorded between roster capture and insert does not refuse the
publication.
- After recording an owner, a background task lists the agent's active
ordinary channels and republishes their rosters.
- BUZZ_RECONCILE_BOT_ROSTERS runs a one-shot startup repair of rosters
that show a stale label (for example, ones older relays published).
Nothing scans at every startup.
- Migration 0074 drops the 0032 roster trigger, which compared roster
labels with the stored role exactly. Every relay must run #8611 first.
Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Logan Johnson <loganj@squareup.com>
## Summary
The desktop app no longer imports persona packs the way the docs
described. `PERSONA_PACK_SPEC.md` and the `meadow-core` example still
pointed users at a `.zip` import through "My Teams / My Agents → Import"
and a future "Install Pack" button — none of that exists anymore. The
app only imports agent/team **snapshots** (`.agent.json`/`.agent.png`,
`.team.json`/`.team.png`), and a persona-pack `.zip` is explicitly
rejected.
## Fix
Updated both docs to describe the current import paths (Agents / Agent
teams sections, snapshot files only) and added a note that persona packs
and desktop snapshots are separate, non-interchangeable formats today.
Fixes#4468
---------
Signed-off-by: SomSamantray <92726151+SomSamantray@users.noreply.github.com>
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Carl <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz>