Handle organizer decisions and simple session updates through Telegram #66

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

Outcome

Organizers need routine decisions in the bot while complex authoring remains on the website. Add approval, rejection, invitation decisions, and simple time/link updates through shared application commands.

Acceptance criteria

  • Authorized organizers can approve or reject participation requests. Rejection requires the private reason used by the website workflow.
  • Approval respects current capacity and registration cutoff. It cannot confirm a pending request after the scheduled start or bypass another organizer's newer decision.
  • Intended recipients can accept or decline organizer and collaborator invitations and ownership-transfer requests. Pending invitations grant no permissions.
  • Invalid, withdrawn, replaced, declined, or expired invitation actions cannot grant roles. The recipient's identity and eligibility are checked on every acceptance.
  • Simple start-time and manually supplied meeting-link updates use the same validation, saved-version check, permissions, and side effects as website edits.
  • A start-time update triggers the required reconfirmation and replacement of old offers through the core. The bot cannot silently retain old actionable terms.
  • Meeting links remain restricted to confirmed testers and accepted organizers. No provider integration or generated meeting URL is introduced.
  • Session and material creation, group editing, profile editing, availability, ignores, calendar editing, and moderation open their website forms.
  • Stale buttons show a current-state explanation and refresh path. They cannot overwrite newer session details or repeat a completed domain action.
  • Successful acceptance or decline marks the corresponding notification read. Telegram delivery status alone never grants a role.

Validation design

Exercise an unauthorized organizer, a forwarded invitation, a removed role, a stale session version, and a request processed at the start cutoff. Verify private rejection reasons stay private. Compare website and bot side effects for start-time changes, including reconfirmation and stale-offer rejection. Duplicate update tests must assert one role assignment and one history entry.

Dependencies

## Outcome Organizers need routine decisions in the bot while complex authoring remains on the website. Add approval, rejection, invitation decisions, and simple time/link updates through shared application commands. ## Acceptance criteria - Authorized organizers can approve or reject participation requests. Rejection requires the private reason used by the website workflow. - Approval respects current capacity and registration cutoff. It cannot confirm a pending request after the scheduled start or bypass another organizer's newer decision. - Intended recipients can accept or decline organizer and collaborator invitations and ownership-transfer requests. Pending invitations grant no permissions. - Invalid, withdrawn, replaced, declined, or expired invitation actions cannot grant roles. The recipient's identity and eligibility are checked on every acceptance. - Simple start-time and manually supplied meeting-link updates use the same validation, saved-version check, permissions, and side effects as website edits. - A start-time update triggers the required reconfirmation and replacement of old offers through the core. The bot cannot silently retain old actionable terms. - Meeting links remain restricted to confirmed testers and accepted organizers. No provider integration or generated meeting URL is introduced. - Session and material creation, group editing, profile editing, availability, ignores, calendar editing, and moderation open their website forms. - Stale buttons show a current-state explanation and refresh path. They cannot overwrite newer session details or repeat a completed domain action. - Successful acceptance or decline marks the corresponding notification read. Telegram delivery status alone never grants a role. ## Validation design Exercise an unauthorized organizer, a forwarded invitation, a removed role, a stale session version, and a request processed at the start cutoff. Verify private rejection reasons stay private. Compare website and bot side effects for start-time changes, including reconfirmation and stale-offer rejection. Duplicate update tests must assert one role assignment and one history entry. ## Dependencies - [#45: Browse tests and open website forms through the Telegram bot](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/45). Supplies verified and replay-safe bot updates. - [#61: Change registration mode and close registration before start](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/61). Supplies organizer decisions and registration cutoffs. - [#39: Let material owners invite collaborators and control group reuse](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/39). Supplies collaborator invitation commands. - [#47: Manage test co-organizers through accepted invitations](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/47). Supplies organizer invitations. - [#50: Transfer test and material ownership only after recipient acceptance](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/50). Supplies explicit ownership-transfer decisions. - [#57: Preserve bookings and prevent stale overwrites when test details change](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/57). Supplies protected version-checked session edits. - [#64: Reconfirm protected places when test commitments change](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/64). Supplies rescheduling side effects. - [#22: Keep a durable notification inbox with current action status](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/22). Supplies action-related read state. - [#56: Manage organizer-supplied access links for tests](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/56). Provides protected meeting-link editing commands, permissions, and update events. ## Related work - [#70: Let testers manage their participation through Telegram buttons](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/70) - [#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#66
No description provided.