fix(desktop): coordination teams are plumbing, and teams list per workspace - #790
Merged
nocodeafrica merged 7 commits intoSep 13, 2026
Merged
Conversation
…ed flag Another client sharing this data directory rewrote teams.json with is_builtin false on all thirteen coordination records. With the flag false the publish rule took the user-team branch and put every community's coordination head on whichever relay was open. Restore the flag on load from the id, which is the authority, and let the existing save-on-change path persist it. Signed-off-by: Basheer Phiri <phiribash@gmail.com>
team_publishes_to_relay trusted two fields a foreign client had already rewritten: is_builtin and the relay pin. With is_builtin false, every coordination record took the user-team branch and published into whichever community was open. The discriminator inside the id cannot be rewritten without naming a different team, so decide on that and ignore both. Signed-off-by: Basheer Phiri <phiribash@gmail.com>
list_teams returned every built-in the store held, which on this device meant thirteen Company Coordination cards next to the Welcome Team. A coordination team is what the relay resolves a Task's owningTeamId against; it is not a team anyone assembled and it is not deletable. Built-ins now list by exception, the Welcome Team alone, and a coordination id lists nowhere whatever its stored flag says. User teams are unchanged: they still list where their pin applies. Signed-off-by: Basheer Phiri <phiribash@gmail.com>
The Welcome Team is in every store, so the section was never empty: a heading, a New team card, and one team nobody assembled. It appears once the list holds a team that is not one this client seeds for itself, and an error still renders, because a failed list must not read as none. Signed-off-by: Basheer Phiri <phiribash@gmail.com>
Signed-off-by: Basheer Phiri <phiribash@gmail.com>
nocodeafrica
pushed a commit
that referenced
this pull request
Sep 13, 2026
…e the inventory Both branches touch native-inventory.json; carrying #790's change here keeps this branch mergeable whichever lands first. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdT8mbVQvCa2j8vu4nnLWU Signed-off-by: Basheer Phiri <phiribash@gmail.com>
The teams list is not only the Agents page. useMentions, NewTaskDialog, TaskThreadContext, AddChannelBotDialog and LaunchAgentDialog all resolve a Task's owning team out of it, and the relay's company_broker refuses an owningTeamId it cannot resolve, so dropping every coordination id broke the first job a community runs. Scope a coordination team by the relay its id names instead: this workspace's lists, every other workspace's stays out. Signed-off-by: Basheer Phiri <phiribash@gmail.com>
…s them The section rule already ignored every builtin-team: id. This adds the id test the cards need, so the one coordination team list_teams keeps for mentions, tasks and the deploy dialogs is not drawn as a team someone assembled. Signed-off-by: Basheer Phiri <phiribash@gmail.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.
Why
The Agents page in the Colony workspace showed thirteen "Company Coordination" cards next to the Welcome Team. One coordination team exists per workspace by design (the relay validates a Task's
owningTeamIdagainst the owner's published kind 30176 heads), so it is infrastructure and must never render as something the owner made.Two things broke that.
teams.jsonheld the coordination teams withis_builtin: falseafter an external rewrite, soteam_publishes_to_relaytook the user-team branch and the boot reconcile published every workspace's coordination team into whichever workspace was open. Andlist_teamsreturned every team on disk with no workspace filter.What changed
is_coordination_team_id), whatever the stored flag says; loading normalises the flag.list_teamsis workspace-scoped: user teams that apply to the active relay, plus the Welcome Team. Coordination teams never appear.Context
Traycer epic
42f611d5, artifactagent-registry-duplication, ticket T4. Sibling PRs: #788 (agent head retention scoped to the agent's community) and #789 (Colony's provisioned Chief of Staff supersedes the built-in one). The leaked team heads were removed from the relay by hand.🤖 Generated with Claude Code
https://claude.ai/code/session_01NdT8mbVQvCa2j8vu4nnLWU