A coordinator records Sam as a Regular member. When his term runs out he is in grace, then lapsed. Months later the coordinator drops the old term with its reason. More than a year after it ended Sam comes back, and the coordinator adds a new term, which Rhythm records as a rejoin. Reading any date answers what Sam was then, his join date stays, and his history shows every step with who took it.
The Formal Contract
The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.
Goal
Keep one member's membership true across the years: renewals by staff, a lapse, a drop and a return, with every date answering correctly.
Steps
#
Surface
Action
Capability
Expected
Provenance
1
createMembership
Record Sam's Regular membership with a staff-given reason.
End-to-end policy: optional: Membership has no console screens yet; the journey is proved end to end through the API in process. A browser test becomes required when the staff membership screens are built.