fix(desktop): retire single-member built-in Fizz team - #1718
Merged
Conversation
A built-in team with one member serves no purpose, and built-ins are deletion-protected so users couldn't remove it themselves. On load, stored copies still matching the seed are purged; customized copies demote to user-owned teams via the existing retirement path. The builtin:fizz agent itself is unaffected.
wpfleger96
force-pushed
the
wpfleger96/retire-builtin-fizz-team
branch
from
July 10, 2026 17:22
1311361 to
16cbf9f
Compare
This was referenced Jul 10, 2026
mfethe1
pushed a commit
to mfethe1/buzz
that referenced
this pull request
Aug 16, 2026
…lay pins Joining a second community on an install that predates the Welcome Team fell through to createManagedAgent and minted a duplicate Fizz keypair: records provisioned under the retired single-member built-in team (block#1718) carry teamId "builtin-team:fizz", which the Welcome starter filter never matched. Pin the exact retired identity (team id + persona + stock name) so it is reused without absorbing renamed or user-created lookalikes, and share the team-scope predicate between the starter pick and the Welcome pubkey listing. Also bring canonicalRelayUrl into rejection parity with buzz-core's normalize_relay_url: credentialed or fragmented relay URLs are rejected outright instead of being silently stripped into a false exact match. E2e coverage joins a second community through the switcher and asserts no additional create_managed_agent calls, and seeds a retired-team Fizz to prove onboarding mints only the two missing teammates. The mock bridge now round-trips team_id so the team-scoped reuse path is exercisable in e2e. Co-authored-by: Michael Feth <michael@jira-flow.com> Signed-off-by: Michael Feth <michael@jira-flow.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The built-in Fizz team only ever had one member (the
builtin:fizzagent), so it added nothing over the agent itself — and since built-ins are deletion-protected, there was no way to get rid of it either. This stops seeding it:BUILT_IN_TEAMSis now empty and the Fizz definition moves to aRETIRED_BUILT_IN_TEAMSlist used only for migration.For existing installs,
merge_teamsnow purges a stored copy that still exactly matches the seed (same name, description, members, no pack linkage) — the user never touched it, so nothing is lost. A customized copy is kept and demoted to a regular user-owned team via the existing retirement path, so it becomes editable and deletable. Fresh installs never see the team, and thebuiltin:fizzagent itself is unchanged.The merge logic is parameterized as
merge_teams_implso the seed/re-promote/demote paths stay covered with synthetic built-ins now that the production list is empty, plus migration pins for the pristine-purge, customized-demote, and fresh-install cases.The unit tests move to a sibling
teams_tests.rsvia the crate's usual#[path]include — the new migration pins pushedteams.rspast the repo's 1000-line file ceiling.