Preserve bookings and prevent stale overwrites when test details change #57

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

Several organizers may edit one test. Changes must preserve established bookings and reject outdated forms without a complex merge interface.

Acceptance criteria

  • A save checks the current saved version atomically. If details changed since loading, the save fails without overwriting them.
  • The website shows a clear conflict message and Reload action. Unsaved input remains visible until reload.
  • Explain that reload replaces unsaved edits. Do not add automatic merging or a comparison screen.
  • Organizers explicitly change the selected blocks. Edits to reusable groups alone do not change those selections.
  • Explicit block-selection changes notify registered testers and preserve their bookings and approval states.
  • Block-selection changes alone do not request reconfirmation or extra approval. Testers may withdraw normally.
  • Record who changed details, selections, registrations, capacity, time, or links and when in organizer-visible test history.
  • Retain history without automatic age-based deletion. Do not put link secrets or free-text announcement content in general logs.

Validation

Submit two forms loaded from the same version and assert the second cannot overwrite the first. Change a reused group's composition and then explicitly change one test's selection. Check unchanged historical selections, notifications, bookings, and approval states. Verify the browser preserves input after conflict.

Dependencies

Several organizers may edit one test. Changes must preserve established bookings and reject outdated forms without a complex merge interface. ## Acceptance criteria - A save checks the current saved version atomically. If details changed since loading, the save fails without overwriting them. - The website shows a clear conflict message and Reload action. Unsaved input remains visible until reload. - Explain that reload replaces unsaved edits. Do not add automatic merging or a comparison screen. - Organizers explicitly change the selected blocks. Edits to reusable groups alone do not change those selections. - Explicit block-selection changes notify registered testers and preserve their bookings and approval states. - Block-selection changes alone do not request reconfirmation or extra approval. Testers may withdraw normally. - Record who changed details, selections, registrations, capacity, time, or links and when in organizer-visible test history. - Retain history without automatic age-based deletion. Do not put link secrets or free-text announcement content in general logs. ## Validation Submit two forms loaded from the same version and assert the second cannot overwrite the first. Change a reused group's composition and then explicitly change one test's selection. Check unchanged historical selections, notifications, bookings, and approval states. Verify the browser preserves input after conflict. ## Dependencies - [#44: Create private test drafts and publish complete announcements](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/44). Provides editable test details and publication. - [#52: Register individual testers with approval, tentative status, and capacity checks](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/52). Provides booking and approval states that selection changes must preserve. ## Related work - [#64: Reconfirm protected places when test commitments change](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/64) - [#56: Manage organizer-supplied access links for tests](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/56) - [#22: Keep a durable notification inbox with current action status](https://code.viacheslavshuka.com/viacheslavshuka/quorum/issues/22)
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#57
No description provided.