Let material owners invite collaborators and control group reuse #39

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

Authors need shared editing without gaining access merely because they organize a test or appear in author attribution. Provide collaborator controls and invitation responses through shared application operations.

Acceptance criteria

  • A reusable material record has one owner, initially its creator. The owner controls collaborator invitations and removals.
  • A pending invitation grants no access. The intended recipient must accept before receiving editing rights.
  • Invitations appear in the application and emit Telegram notification events. Delivery success or failure does not accept an invitation.
  • Ordinary invitations expire after seven days, with no automatic reminders or resending. A declined invitation cannot be resent unless the recipient initiates reconsideration.
  • Accepted collaborators can edit metadata and composition and leave voluntarily. Revocation ends their material permissions immediately.
  • An organizer can reuse blocks they own or collaborate on without approval for each inclusion. They must obtain collaborator access before reusing another person's block.
  • Inclusion in a larger group does not grant that group's other organizers permission to edit the original block.
  • Only eligible owners and collaborators can create additional tests for that material. Revocation does not remove an existing independent test-organizer role.
  • Pending invitations expose no private metadata. Before first publication, accepted organizers of drafts using material can view it without gaining material-editing rights.

Validation

Test acceptance by the wrong account, expiry races, revoked collaborators, and reuse through a larger group. Assert denied writes leave data unchanged. Exercise access through direct API requests as well as website controls.

Dependencies

Authors need shared editing without gaining access merely because they organize a test or appear in author attribution. Provide collaborator controls and invitation responses through shared application operations. ## Acceptance criteria - A reusable material record has one owner, initially its creator. The owner controls collaborator invitations and removals. - A pending invitation grants no access. The intended recipient must accept before receiving editing rights. - Invitations appear in the application and emit Telegram notification events. Delivery success or failure does not accept an invitation. - Ordinary invitations expire after seven days, with no automatic reminders or resending. A declined invitation cannot be resent unless the recipient initiates reconsideration. - Accepted collaborators can edit metadata and composition and leave voluntarily. Revocation ends their material permissions immediately. - An organizer can reuse blocks they own or collaborate on without approval for each inclusion. They must obtain collaborator access before reusing another person's block. - Inclusion in a larger group does not grant that group's other organizers permission to edit the original block. - Only eligible owners and collaborators can create additional tests for that material. Revocation does not remove an existing independent test-organizer role. - Pending invitations expose no private metadata. Before first publication, accepted organizers of drafts using material can view it without gaining material-editing rights. ## Validation Test acceptance by the wrong account, expiry races, revoked collaborators, and reuse through a larger group. Assert denied writes leave data unchanged. Exercise access through direct API requests as well as website controls. ## Dependencies - [#35: Create and reuse author blocks, rounds, and packages](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/35). Provides reusable material and initial owner identity. - [#16: Run durable PostgreSQL jobs with atomic effects](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/16). Provides durable invitation deadlines and atomic events. - [#22: Keep a durable notification inbox with current action status](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/22). Provides the inbox where collaborator invitations appear and can be answered. ## Related work - [#50: Transfer test and material ownership only after recipient acceptance](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/50) - [#44: Create private test drafts and publish complete announcements](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/44) - [#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#39
No description provided.