# ───────────────────────────────────────────────────────────────────────────── # GROUPS — teams that OWN things. # # Path: content/orgs//groups/.yaml # # IMPORTANT — two kinds of Group coexist in this catalog: # # 1. IdP-SYNCED groups (backstage-users, backstage-admins, agentmemory-users…) # come from Pocket ID via the org-sync entity provider # (packages/backend/src/modules/pocketIdOrgProvider.ts). They are NOT # defined in files — they appear automatically and disappear when the # Pocket ID group is deleted. RBAC binds permissions to THESE. # # 2. STRUCTURAL groups (this file) describe the org chart: teams, their parent # org, their remit. They are declared here because they are architecture, # not identity. # # Own entities with a group that grants the right access. If a team both owns # services AND needs portal permissions, point `spec.members` at the same people # who are in the corresponding Pocket ID group — or simply own things with the # IdP-synced group directly and skip the structural group. # ───────────────────────────────────────────────────────────────────────────── --- apiVersion: backstage.io/v1alpha1 kind: Group metadata: annotations: backstage.io/managed-by-location: url:https://static-ai-stack.dc7.io/catalog/example-org/groups/platform-team.yaml name: platform-team title: Platform Team description: Owns the developer platform, golden paths, and shared infrastructure. spec: type: team profile: displayName: Platform Team # Must match a `children` entry in ../org.yaml — Backstage does not infer this. parent: example-org children: [] # Members are optional here: real membership comes from Pocket ID. Listing # people in a file means maintaining it in two places, so prefer leaving this # empty and letting the IdP-synced groups carry membership. members: []