Grant maxisbey the security-manager org role (#147)

* Add security-managers org role and assign maxisbey

Model GitHub's pre-defined security_manager organization role in the
IaC: new GitHub-only security-managers team wired to the org role via
ORG_ROLE_ASSIGNMENTS, following the existing all_repo_admin pattern.
Add Max Isbey (maxisbey) as its first member so he can view draft
security advisories for coordinated disclosure work.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0147Pp292yN9cQKCQBphVyMy

* Add jenn-newton to security-managers team

Paul Carleton asked for Jenn to join the new security-managers team
alongside Max Isbey. Resolved to Jenn Newton (jenn-newton), already a
member of the security working group in this config.

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
claude[bot] 2026-07-09 14:09:15 +01:00 • committed by GitHub
commit 0276b47bd8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 19 additions and 3 deletions

View file

@ -8,7 +8,8 @@ export type OrgRoleName =
| 'all_repo_triage' | 'all_repo_triage'
| 'all_repo_write' | 'all_repo_write'
| 'all_repo_maintain' | 'all_repo_maintain'
| 'all_repo_admin'; | 'all_repo_admin'
| 'security_manager';
export interface OrgRoleAssignment { export interface OrgRoleAssignment {
/** GitHub team slug */ /** GitHub team slug */
@ -20,4 +21,7 @@ export interface OrgRoleAssignment {
export const ORG_ROLE_ASSIGNMENTS: OrgRoleAssignment[] = [ export const ORG_ROLE_ASSIGNMENTS: OrgRoleAssignment[] = [
{ team: 'lead-maintainers', role: 'all_repo_admin' }, { team: 'lead-maintainers', role: 'all_repo_admin' },
{ team: 'core-maintainers', role: 'all_repo_admin' }, { team: 'core-maintainers', role: 'all_repo_admin' },
// Security managers can view and manage security alerts and draft security
// advisories (GHSAs) across all repositories in the org.
{ team: 'security-managers', role: 'security_manager' },
]; ];

View file

@ -10,6 +10,7 @@ export const ROLE_IDS = {
CORE_MAINTAINERS: 'core-maintainers', CORE_MAINTAINERS: 'core-maintainers',
LEAD_MAINTAINERS: 'lead-maintainers', LEAD_MAINTAINERS: 'lead-maintainers',
MODERATORS: 'moderators', MODERATORS: 'moderators',
SECURITY_MANAGERS: 'security-managers', // GitHub only (org security_manager role)
ADMINISTRATORS: 'administrators', // Discord only ADMINISTRATORS: 'administrators', // Discord only
COMMUNITY_MANAGERS: 'community-managers', // Discord only COMMUNITY_MANAGERS: 'community-managers', // Discord only

View file

@ -102,6 +102,12 @@ export const ROLES: readonly Role[] = [
discord: { role: 'community moderators (synced)' }, discord: { role: 'community moderators (synced)' },
google: { group: 'moderators', provisionUser: true }, google: { group: 'moderators', provisionUser: true },
}, },
{
id: ROLE_IDS.SECURITY_MANAGERS,
description: 'Organization security managers (security_manager org role via orgRoles.ts)',
github: { team: 'security-managers' },
// GitHub only - grants org-wide visibility into security alerts and draft advisories
},
// =================== // ===================
// Maintainer Groups // Maintainer Groups

View file

@ -367,7 +367,7 @@ export const MEMBERS: readonly Member[] = [
}, },
{ {
github: 'jenn-newton', github: 'jenn-newton',
memberOf: [ROLE_IDS.SECURITY_WG], memberOf: [ROLE_IDS.SECURITY_MANAGERS, ROLE_IDS.SECURITY_WG],
}, },
{ {
github: 'jeongukjae', github: 'jeongukjae',
@ -532,7 +532,12 @@ export const MEMBERS: readonly Member[] = [
firstName: 'Max', firstName: 'Max',
lastName: 'Isbey', lastName: 'Isbey',
googleEmailPrefix: 'max', googleEmailPrefix: 'max',
memberOf: [ROLE_IDS.MAINTAINERS, ROLE_IDS.PYTHON_SDK, ROLE_IDS.TYPESCRIPT_SDK_COLLABORATORS], memberOf: [
ROLE_IDS.MAINTAINERS,
ROLE_IDS.PYTHON_SDK,
ROLE_IDS.SECURITY_MANAGERS,
ROLE_IDS.TYPESCRIPT_SDK_COLLABORATORS,
],
}, },
{ {
github: 'michaelneale', github: 'michaelneale',