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 <tadas@modelcontextprotocol.io>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: David Soria Parra <167242713+dsp-ant@users.noreply.github.com>
This commit is contained in:
Tadas Antanavicius 2026-06-30 03:11:20 -07:00 • committed by GitHub
commit b999f7011c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 0 deletions

View file

@ -82,6 +82,7 @@ export const ROLE_IDS = {
// Email Groups (Google only)
// ===================
ANTITRUST: 'antitrust',
APPEALS: 'appeals',
CATCH_ALL: 'catch-all',
} as const;

View file

@ -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',

View file

@ -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,
],
},
{