Skip to content

feat(group-audit): explicit, safety-railed removal of non-entitled me… - #273

Merged
nadernik merged 1 commit into
mainfrom
dev
Aug 8, 2026
Merged

feat(group-audit): explicit, safety-railed removal of non-entitled me…#273
nadernik merged 1 commit into
mainfrom
dev

Conversation

@nadernik

@nadernik nadernik commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

…mbers

Authorized: remove the non-PIs from pi@ (23 of 24 audited addresses are Co-Investigators, and PI entitlement is roster-derived per the "only people who can be pulled out of RePORTER are PIs" rule).

New action:'remove_extra' with a required group — removal is scoped to ONE named group per call, never "clean everything". Three hard rails, because this is destructive and outward-facing:

  1. Only addresses belonging to a KNOWN consortium member (primary or secondary email in the KG) can be removed — service accounts like admin@/noreply@, nested groups and external collaborators are structurally excluded, not merely filtered in the UI.
  2. Only Google role MEMBER is touched; OWNER/MANAGER are never removed (removing an owner can break the group).
  3. Anything skipped by 1 or 2 is reported separately as extra_protected, so nothing is silently ignored. Repair still only ADDS; removal is a separate button, per group, behind a confirm that states exactly what will happen.

…mbers

Authorized: remove the non-PIs from pi@ (23 of 24 audited addresses are Co-Investigators, and
PI entitlement is roster-derived per the "only people who can be pulled out of RePORTER are PIs"
rule).

New action:'remove_extra' with a required `group` — removal is scoped to ONE named group per
call, never "clean everything". Three hard rails, because this is destructive and outward-facing:
  1. Only addresses belonging to a KNOWN consortium member (primary or secondary email in the
     KG) can be removed — service accounts like admin@/noreply@, nested groups and external
     collaborators are structurally excluded, not merely filtered in the UI.
  2. Only Google role MEMBER is touched; OWNER/MANAGER are never removed (removing an owner can
     break the group).
  3. Anything skipped by 1 or 2 is reported separately as extra_protected, so nothing is
     silently ignored.
Repair still only ADDS; removal is a separate button, per group, behind a confirm that states
exactly what will happen.
@nadernik
nadernik merged commit ab70df2 into main Aug 8, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant