Skip to content

feat(kit): SeatMap — named-seat reservation for a fixed venue layout (FT315) - #781

Merged
hideyukiMORI merged 1 commit into
mainfrom
feat/ft315-seatmap
May 29, 2026
Merged

feat(kit): SeatMap — named-seat reservation for a fixed venue layout (FT315)#781
hideyukiMORI merged 1 commit into
mainfrom
feat/ft315-seatmap

Conversation

@hideyukiMORI

Copy link
Copy Markdown
Owner

Summary

Field Trial FT315Nene\Kit\SeatMap: assigned seating over a fixed venue layout. Distinct from EventTicket (capacity count), ResourceReservation (time-bounded), TimeSlot (appointments).

Method Description
addSeat / addRow Define seats (idempotent).
reserve(venue, seat, holder): bool Claim a free seat; false if taken.
release(venue, seat): bool Free it.
holderOf / isAvailable / availableSeats / reservedSeats / seatsOf Reads.
  • Race-free claim: single guarded UPDATE … WHERE … AND holder IS NULL.
  • Idempotent seat definition never wipes a holder; reserving a nonexistent seat throws.

F-N findings

  • F-1 — seat names sort lexically ("A10" before "A2"); zero-pad for >9-seat rows. Documented; helper stays storage-order-agnostic.

Test plan

  • 12 tests / 25 assertions (reserve/holder, double-reserve guard, release+re-reserve, available/reserved listings, seatsOf, idempotent addSeat keeps holder, venue separation, nonexistent-seat throw, safe unknown reads, validation)
  • composer precommit green (format → Phan → 5192 tests)

🤖 Generated with Claude Code

…(FT315)

Assigned seating: addSeat/addRow define seats (idempotent, ON CONFLICT DO
NOTHING), reserve() claims a free seat via a single guarded UPDATE ... WHERE
holder IS NULL (race-free; rowCount>0 = won), release() frees it; holderOf,
isAvailable, availableSeats, reservedSeats, seatsOf. Reserving a nonexistent
seat throws; unknown-seat reads are safe. 12 tests / 25 assertions; CS Fixer
+ Phan clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@hideyukiMORI
hideyukiMORI enabled auto-merge (squash) May 29, 2026 13:49
@hideyukiMORI
hideyukiMORI merged commit 25fab9e into main May 29, 2026
2 checks passed
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.

1 participant