Skip to content

feat(review): say when somebody else is reviewing a case - #247

Merged
haribo merged 2 commits into
developfrom
feat/95-say-when-somebody-is-reviewing
Sep 11, 2026
Merged

feat(review): say when somebody else is reviewing a case#247
haribo merged 2 commits into
developfrom
feat/95-say-when-somebody-is-reviewing

Conversation

@haribo

@haribo haribo commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Summary

  • ADR 0005, at last (say when somebody else is already reviewing a case #95): a case is held exclusively by its reviewer — opening claims it, a 30-second heartbeat keeps it, leaving lets go (SPA navigation and pagehide keepalive both), and a silent lock expires on its own after two minutes (OZALID_LOCK_WINDOW, lazy — expiry is read, never written)
  • Occupancy is its own axis: the case state never moves on a claim; GET case exposes held {by, name, since}, the page wears a neutral eye pill, the reader's carousel goes inert with "X is reviewing this case — read-only until they let go"
  • A held case takes no verdict but its holder's: SaveReview, comment and recording judgments answer 423 naming the holder; the dev's moves — track, deliver, discard — pass untouched (§7 already protects the bytes)
  • Claiming is one atomic upsert: takes a free or expired lock, renews the caller's own, and somebody else's live hold answers who — safe under the parallel race
  • Migration 00021 (case_locks), exercised Up→Down→Up; the expiry window answered in product.md §11 (validated)

Test plan

  • Design tests named in §3.2: TestAHeldCaseRefusesAnotherReviewersVerdict, TestASilentLockExpiresOnItsOwn, TestTwoReviewersRaceForTheLock — the race truly parallel
  • Carousel spec: inert pair, the holder named, no emit under a hold
  • e2e named in the design: "a held case reads the same and refuses the verdict (say when somebody else is already reviewing a case #95)" — two real signed-in reviewers, 423 asserted on the API, release on leaving verified
  • Full gates: gen-check, be-check, be-test (12), db-test, fe-check, fe-test (110), fe-test-e2e (64)
  • Screenshots from the second reviewer's seat, both themes, validated

Existing test modified (flagged): the #70 expired-session e2e resumes the verdict as another account — it now releases the lock first, since a held case rightly answers 423 to anyone but the holder.

Closes #95

@haribo
haribo merged commit 480d946 into develop Sep 11, 2026
5 checks passed
@haribo
haribo deleted the feat/95-say-when-somebody-is-reviewing branch September 11, 2026 13:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

say when somebody else is already reviewing a case

1 participant