Create and reuse author blocks, rounds, and packages #35

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

Authors need recognizable groups that retain previous testing history through ordinary revisions. Provide website creation and composition forms with corresponding application operations and API contracts. This outcome includes reusable composition and stable test selections because those invariants determine whether reuse is safe.

Acceptance criteria

  • An eligible user can create a block or unpartitioned package without constructing a complete tournament hierarchy.
  • Blocks can belong to several rounds or packages. Rounds can recur in several larger groups, including tournament mirrors.
  • Each group has an editable title and format. Material language defaults to Russian and supports other languages and multilingual material.
  • Support team question sets, Svoya Igra, brain-ring, Erudit Quartet, and Troika through the same coordination workflow. Do not require a separate workflow per format.
  • Renaming, reordering, and ordinary revisions retain group identity and testing history. Genuinely new groups receive new identities.
  • Editing group composition does not change the selected blocks of an existing test or rewrite completed-test records.
  • A shared group's publication does not expose unrelated private groups, tournaments, or drafts that reference it.
  • The model stores only coordination metadata. It has no individual-question rows, identifiers, ordinals, attendance, texts, answers, imports, fingerprints, encrypted documents, or editor synchronization.
  • The interface describes group history without claiming exact individual-question familiarity or treating untracked question movements as zero familiarity.

Validation

Use independent domain examples for a block reused in two rounds and two mirrors. Rename, reorder, and change composition after selecting a test's blocks. Assert that previous selections and history remain unchanged. Check PostgreSQL persistence and API serialization of these relationships. Check that a private parent cannot leak through a public child. Inspect generated OpenAPI and type-check the generated client.

Dependencies

Authors need recognizable groups that retain previous testing history through ordinary revisions. Provide website creation and composition forms with corresponding application operations and API contracts. This outcome includes reusable composition and stable test selections because those invariants determine whether reuse is safe. ## Acceptance criteria - An eligible user can create a block or unpartitioned package without constructing a complete tournament hierarchy. - Blocks can belong to several rounds or packages. Rounds can recur in several larger groups, including tournament mirrors. - Each group has an editable title and format. Material language defaults to Russian and supports other languages and multilingual material. - Support team question sets, Svoya Igra, brain-ring, Erudit Quartet, and Troika through the same coordination workflow. Do not require a separate workflow per format. - Renaming, reordering, and ordinary revisions retain group identity and testing history. Genuinely new groups receive new identities. - Editing group composition does not change the selected blocks of an existing test or rewrite completed-test records. - A shared group's publication does not expose unrelated private groups, tournaments, or drafts that reference it. - The model stores only coordination metadata. It has no individual-question rows, identifiers, ordinals, attendance, texts, answers, imports, fingerprints, encrypted documents, or editor synchronization. - The interface describes group history without claiming exact individual-question familiarity or treating untracked question movements as zero familiarity. ## Validation Use independent domain examples for a block reused in two rounds and two mirrors. Rename, reorder, and change composition after selecting a test's blocks. Assert that previous selections and history remain unchanged. Check PostgreSQL persistence and API serialization of these relationships. Check that a private parent cannot leak through a public child. Inspect generated OpenAPI and type-check the generated client. ## Dependencies - [#27: Complete registration through verified rating-profile control](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/27). Provides verified account access for protected material workflows. - [#8: Apply PostgreSQL migrations with release compatibility checks](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/8). Provides the PostgreSQL migration and persistence contract. - [#7: Create the React application with locked frontend tooling](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/7). Provides the website forms and routing foundation. - [#10: Generate and verify OpenAPI and the TypeScript client](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/10). Provides generated API contracts and the typed client. ## Related work - [#39: Let material owners invite collaborators and control group reuse](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/39) - [#44: Create private test drafts and publish complete announcements](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/44) - [#67: Show group familiarity and apply the previous-tester admission setting](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/67)
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#35
No description provided.