Seat lifecycle: 90-day window, Seats tab, audited manual release (#428) #429
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "seat-lifecycle-428"
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 #428 (issue stays open for live verification and the parked check-in payload question).
Admitrefreshes last-seen (throttled to one write per day); windowed counting feedsStatus.SeatsUsed, the admission cap, and both check-in paths. Legacy first-seen timestamps count as last-seen (self-healing migration).Seats()lists current holders newest-first;ReleaseSeat()forgets a holder immediately. New admin endpointsGET /api/v1/license/seatsandPOST /api/v1/license/seats/release; a release lands in the audit log asseat-release(actor = admin, path = freed holder).#admin/users/seatsworks.licSeatsFootrestates the 90-day definition ×4 locales, plus a "manage seats in Users & access" link to the Seats tab.TDD evidence in the tdd-428 run log: RED A (window assertions), RED B (api compile-red), RED C (Seats/ReleaseSeat compile-red) all watched failing before their implementations landed in the same run; full suite green after.