feat(event): an event keeps at least one person #258
No reviewers
Labels
No labels
adr
android
area/calendar
area/design-system
area/i18n
area/jobs
area/offline
area/server
area/testing
bug
ci
duplicate
enhancement
help wanted
invalid
notifications
question
reliability
security
severity/low
severity/medium
tracking
web
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eagraiclainne/app!258
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/last-attendee-guard"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Implements the server half of #257: the last attendee cannot leave — leaving an event, or one occurrence of it, is a delete when you are the only person on it.
domain.RemoveMemberreturns the newErrLastMember(FailedPrecondition, codeLAST_MEMBER) when a removal would empty the guest list; the message names delete as the way out.RemoveUserandLeaveOccurrenceinherit the guard through that one seam, and on a still-derived slot the refusal lands before the split is minted, so a refused leave costs no permanent detach.Update's guest-list rewrite applies the same verdict inline — it may not be the path that empties a listRemoveUserrefuses to empty.Createis untouched: a Birthday starts with nobody on it by design.Stacked on #209 (the branch sits on the current stack tip). Design: calendar handoff §0.1 + acceptance checklist, ruled in #257.
🤖 Generated with Claude Code
Test report
Coverage: 27.0%
Updated by the check workflow · commit
9eb74cdc74cf942b30cfc6058fe4ecc6058fe4ec52ff758ea4Two base fixes joined this PR's foot after CI caught them overnight: the field-row title-editing goldens now record with a frozen caret (MotionDurationScale zero — the blink phase was a CI coin toss), and the bundled Eagrai Symbols face now covers + U+FF0B by aliasing it onto DejaVu's plus glyph (the calendar's add affordances fell through to host fonts, which diverged between the dev box and the runner). Every branch in the stack re-recorded its calendar page goldens against the bundled glyph.
Android test report
Coverage: 9.6% of lines
Updated by the android workflow · commit
9eb74cdc7452ff758ea4ddacd9938cCorrection to the note above: the U+FF0B alias was abandoned — the identical Chrome-for-Testing build on the runner still fell back to a host font while every local configuration honored the alias, so it could not be trusted. The stack instead writes the three plus strings with ASCII '+' (Atkinson carries it, bundled, pixel-identical on CI), the fonts subset stays its original eight glyphs, and the divergence from the demo's + is recorded in the day-sheet web commit. The frozen-caret fix stands.
ddacd9938c959af841b6959af841b6b6961010e7b6961010e748cd494eafRestructured per review: the four suite-hardening commits (frozen caret for the field-row goldens, the 24px page-comparator allowance, the scroll-to-top pin, the webhook spec draining to its own delivery) fix defects that predate this stack, so they moved onto the base branch (docs/park-handoff-bundles) rather than riding this PR. This PR is now the guard and its ADR alone. Each wave's golden re-records stay inside the PR whose change required them (#260, #262, #265).
48cd494eaf9eb74cdc74