Restrict participation and organizing capabilities with reversible expiry #69

Open
opened 2026-11-01 20:12:35 +00:00 by viacheslavshuka · 0 comments

Moderators need separate controls for participation, organizing, and whole-account access. Restrictions must affect current permissions without falsifying past participation.

Acceptance criteria

  • Moderators can restrict participation, restrict organizing, or block the whole account, with a required reason and optional explicit expiry.
  • A whole-account block applies both capability restrictions and prevents ordinary website and bot access. The user can still see the restriction notice and reason.
  • Participation restrictions remove future confirmed registrations, pending requests, waiting entries, and reserved offers. Release capacity and notify the user and affected organizers.
  • During a running test, a participation restriction ends Quorum participation access immediately and notifies organizers.
  • Preserve recorded attendance and permit authorized corrections of actual groups attended, including partial attendance. A restriction does not create attendance or turn past participation into absence.
  • Organizing restrictions prevent creating material or tests and disable organizer editing of existing records. Other eligible accepted organizers retain their permissions.
  • Expiry restores capability only. It does not restore cancelled registrations, queue positions, expired offers, or removed role assignments.
  • Enforce restrictions through shared application operations, including stale website forms, bot actions, invitation acceptance, and ownership transfer.
  • Record the actor, reason, affected state, and time privately. Preserve historical attendance, familiarity, and earned credit.
  • Explain that Quorum cannot remove someone from an external meeting or revoke a copied URL.

Validation

Race a restriction against seat acceptance, group editing, and role acceptance. Check pre-start versus in-progress effects with independent persisted state. Expire a restriction and assert that permissions return without recreating memberships. Verify an account block cannot be bypassed through the bot or cached API representations.

Dependencies

Moderators need separate controls for participation, organizing, and whole-account access. Restrictions must affect current permissions without falsifying past participation. ## Acceptance criteria - Moderators can restrict participation, restrict organizing, or block the whole account, with a required reason and optional explicit expiry. - A whole-account block applies both capability restrictions and prevents ordinary website and bot access. The user can still see the restriction notice and reason. - Participation restrictions remove future confirmed registrations, pending requests, waiting entries, and reserved offers. Release capacity and notify the user and affected organizers. - During a running test, a participation restriction ends Quorum participation access immediately and notifies organizers. - Preserve recorded attendance and permit authorized corrections of actual groups attended, including partial attendance. A restriction does not create attendance or turn past participation into absence. - Organizing restrictions prevent creating material or tests and disable organizer editing of existing records. Other eligible accepted organizers retain their permissions. - Expiry restores capability only. It does not restore cancelled registrations, queue positions, expired offers, or removed role assignments. - Enforce restrictions through shared application operations, including stale website forms, bot actions, invitation acceptance, and ownership transfer. - Record the actor, reason, affected state, and time privately. Preserve historical attendance, familiarity, and earned credit. - Explain that Quorum cannot remove someone from an external meeting or revoke a copied URL. ## Validation Race a restriction against seat acceptance, group editing, and role acceptance. Check pre-start versus in-progress effects with independent persisted state. Expire a restriction and assert that permissions return without recreating memberships. Verify an account block cannot be bypassed through the bot or cached API representations. ## Dependencies - [#48: Give operator-appointed moderators a private report queue](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/48). Provides moderator authorization and private auditing. - [#58: Offer available places to waiting testers with explicit acceptance](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/58). Provides reservations and waiting entries to remove. - [#65: Correct attendance and group familiarity without erasing history](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/65). Provides actual-attendance correction boundaries. - [#39: Let material owners invite collaborators and control group reuse](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/39). Provides material permissions to restrict. - [#47: Manage test co-organizers through accepted invitations](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/47). Provides organizer-role eligibility. - [#50: Transfer test and material ownership only after recipient acceptance](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/50). Provides ownership-transfer operations whose current eligibility must enforce restrictions. ## Related work - [#72: Cancel upcoming tests and stop running tests through explicit controls](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/72) - [#22: Keep a durable notification inbox with current action status](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/22) - [#29: Deliver Telegram notifications with bounded retries and current permissions](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/29)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
viacheslavshuka/quorum#69
No description provided.