From b999f7011c1fc96ec37c2946ed7393dd81d8a27b Mon Sep 17 00:00:00 2001 From: Tadas Antanavicius Date: Tue, 30 Jun 2026 03:11:20 -0700 Subject: [PATCH] Add appeals@ Google Group for Code of Conduct ban appeals (#123) Adds appeals@modelcontextprotocol.io as an email Google Group so banned or external users have an out-of-band channel to appeal Code of Conduct actions even after an org-level GitHub block. Mirrors the existing antitrust@/catch-all@ email-group setup (isEmailGroup, no new GoogleConfig fields). Membership is curated explicitly (like the antitrust@ members) to the current moderators and active lead maintainers, rather than derived from the MODERATORS/LEAD_MAINTAINERS roles, since those roles include emeritus and former members who should not receive appeals. Co-authored-by: Tadas Antanavicius Co-authored-by: Claude Opus 4.8 Co-authored-by: David Soria Parra <167242713+dsp-ant@users.noreply.github.com> --- src/config/roleIds.ts | 1 + src/config/roles.ts | 6 ++++++ src/config/users.ts | 8 ++++++++ 3 files changed, 15 insertions(+) diff --git a/src/config/roleIds.ts b/src/config/roleIds.ts index 464ab21..d47968d 100644 --- a/src/config/roleIds.ts +++ b/src/config/roleIds.ts @@ -82,6 +82,7 @@ export const ROLE_IDS = { // Email Groups (Google only) // =================== ANTITRUST: 'antitrust', + APPEALS: 'appeals', CATCH_ALL: 'catch-all', } as const; diff --git a/src/config/roles.ts b/src/config/roles.ts index dc0637d..df8ce6c 100644 --- a/src/config/roles.ts +++ b/src/config/roles.ts @@ -397,6 +397,12 @@ export const ROLES: readonly Role[] = [ google: { group: 'antitrust', isEmailGroup: true }, // Google only }, + { + id: ROLE_IDS.APPEALS, + description: 'Code of Conduct ban appeals inbox', + google: { group: 'appeals', isEmailGroup: true }, + // Google only + }, { id: ROLE_IDS.CATCH_ALL, description: 'Catch-all email group', diff --git a/src/config/users.ts b/src/config/users.ts index 1c36aee..7d7970e 100644 --- a/src/config/users.ts +++ b/src/config/users.ts @@ -138,6 +138,7 @@ export const MEMBERS: readonly Member[] = [ ROLE_IDS.MODERATORS, ROLE_IDS.SKILLS_OVER_MCP_IG, ROLE_IDS.WORKING_GROUPS, + ROLE_IDS.APPEALS, ], }, { @@ -242,6 +243,7 @@ export const MEMBERS: readonly Member[] = [ ROLE_IDS.MODERATORS, ROLE_IDS.SERVER_CARD_WG, ROLE_IDS.AGENTS_WG, + ROLE_IDS.APPEALS, ], }, { @@ -278,6 +280,7 @@ export const MEMBERS: readonly Member[] = [ ROLE_IDS.MAINTAINERS, ROLE_IDS.MODERATORS, ROLE_IDS.TRANSPORT_WG, + ROLE_IDS.APPEALS, ], }, { @@ -381,6 +384,7 @@ export const MEMBERS: readonly Member[] = [ ROLE_IDS.RUBY_SDK, ROLE_IDS.MCP_APPS_SDK, ROLE_IDS.TRANSPORT_WG, + ROLE_IDS.APPEALS, ], }, { @@ -465,6 +469,7 @@ export const MEMBERS: readonly Member[] = [ ROLE_IDS.SECURITY_WG, ROLE_IDS.TRANSPORT_WG, ROLE_IDS.TYPESCRIPT_SDK, + ROLE_IDS.APPEALS, ], }, { @@ -590,6 +595,7 @@ export const MEMBERS: readonly Member[] = [ ROLE_IDS.REFERENCE_SERVERS_MAINTAINERS, ROLE_IDS.SKILLS_OVER_MCP_IG, ROLE_IDS.WORKING_GROUPS, + ROLE_IDS.APPEALS, ], }, { @@ -625,6 +631,7 @@ export const MEMBERS: readonly Member[] = [ ROLE_IDS.MODERATORS, ROLE_IDS.SKILLS_OVER_MCP_IG, ROLE_IDS.INTERCEPTORS_WG, + ROLE_IDS.APPEALS, ], }, { @@ -760,6 +767,7 @@ export const MEMBERS: readonly Member[] = [ ROLE_IDS.REGISTRY_MAINTAINERS, ROLE_IDS.ADMINISTRATORS, ROLE_IDS.SERVER_CARD_WG, + ROLE_IDS.APPEALS, ], }, {