diff --git a/apps/api/src/collectives/matrix-provisioner.test.ts b/apps/api/src/collectives/matrix-provisioner.test.ts index 6f49f94..bcc4140 100644 --- a/apps/api/src/collectives/matrix-provisioner.test.ts +++ b/apps/api/src/collectives/matrix-provisioner.test.ts @@ -168,7 +168,6 @@ describe("MatrixProvisioner room set shape", () => { const pl = room.body.power_level_content_override as Record; const users = pl.users as Record; expect(users[founder]).toBe(FOUNDER_POWER_LEVEL); - expect(users["@provisioner:chat.example.com"]).toBe(FOUNDER_POWER_LEVEL); expect(pl.users_default).toBe(MEMBER_POWER_LEVEL); expect((pl.events as Record)["m.room.message"]).toBe(MEMBER_POWER_LEVEL); expect(pl.state_default).toBe(FOUNDER_POWER_LEVEL); @@ -188,7 +187,7 @@ describe("MatrixProvisioner room set shape", () => { expect(fake.invites).toHaveLength(0); for (const room of fake.rooms) { const users = (room.body.power_level_content_override as Record).users as Record; - expect(Object.keys(users)).toEqual(["@provisioner:chat.example.com"]); + expect(Object.keys(users)).not.toContain("@provisioner:chat.example.com"); } }); diff --git a/apps/api/src/collectives/matrix-provisioner.ts b/apps/api/src/collectives/matrix-provisioner.ts index 237b3c7..7b216b4 100644 --- a/apps/api/src/collectives/matrix-provisioner.ts +++ b/apps/api/src/collectives/matrix-provisioner.ts @@ -194,8 +194,10 @@ export class MatrixProvisioner implements ProvisionerPort { /** Founder pinned at PL 100; everyone else PL 0. Bot keeps 100 to administer its rooms. */ private powerLevels(input: ProvisionCollectiveInput): Record { - const users: Record = { [this.botUserId]: FOUNDER_POWER_LEVEL }; - if (input.founderMxid !== null) users[input.founderMxid] = FOUNDER_POWER_LEVEL; + // The room creator (the bot) already holds PL 100 as founder-of-record; + // the spec rejects creator IDs listed in `users`. + const users: Record = + input.founderMxid !== null ? { [input.founderMxid]: FOUNDER_POWER_LEVEL } : {}; return { users, users_default: MEMBER_POWER_LEVEL,