Skip to content

JNY-MBR-MEM-001Staff carry a member through an early renewal, a lapse and a rejoin

Markdown

JNY-MBR-MEM-001

Staff carry a member through an early renewal, a lapse and a rejoin

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationPartially observed

KindJourneyProduct areaMembershipModuleMemberships, Applications and Membership BillingRevision1End-to-endOptional

Read atservices-membership 5994c270react-console baf6dae3

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

#SurfaceActionCapabilityExpectedProvenance
1createMembershipRecord Sam's Regular membership with a staff-given reason.CAP-MBR-MEM-001The membership is numbered with a committed term and an enrolment.test
services-membership:tests/e2e/s04-lapse-and-rejoin.e2e.spec.ts#records the business events: enrolled, terminated, rejoined
2getMembershipAsOfRead Sam the day after his term ends, and after his 60 days of grace.CAP-MBR-MEM-005Grace, then lapsed.test
services-membership:tests/e2e/s04-lapse-and-rejoin.e2e.spec.ts#answers grace the day after the term ended and lapsed once the 60 days are over
3terminateTermDrop the expired term months later with the reason "Did Not Renew".CAP-MBR-MEM-003The term keeps its dates and the drop is recorded with its reason.test
services-membership:tests/e2e/s04-lapse-and-rejoin.e2e.spec.ts#drops the expired term with its reason and leaves its dates as they were
4createTermAdd a term when Sam returns 437 days after his term ended.CAP-MBR-MEM-002A rejoin starting a fresh anniversary period from its own date.test
services-membership:tests/e2e/s04-lapse-and-rejoin.e2e.spec.ts#starts the rejoin as a fresh anniversary period from its own date
5getMembershipAsOfRead Sam on a date between his two periods.CAP-MBR-MEM-005Lapsed, between two continuity episodes.test
services-membership:tests/e2e/s04-lapse-and-rejoin.e2e.spec.ts#answers lapsed on 2024-01-31, between the episodes
6listMembershipHistoryOpen the membership's history.CAP-MBR-MEM-018Every change appears newest first with who made it.test

Alternate and Failure Paths

PathFrom stepConditionPath takenOutcomeProvenance
alternate4Sam returns within the package's reinstatement window.The new term continues from the old one's end.A reinstatement, with continuity unbroken.test
alternate1A student renews early into the alumni type.A further term of the other type is added after the current one.Student rights until the switch, alumni rights from it.test
services-membership:tests/e2e/s01-early-renewal-type-change.e2e.spec.ts#leaves the Student term untouched and current today, with the renewal recorded as renewed
failure4Another coordinator adds the same term at the same moment.The second dated term is refused as an overlap.One rejoin; the loser re-reads and sees it.test
failure3The coordinator acts on an out-of-date read of the term.The drop is refused as a version mismatch naming the current version.Nothing changes until the coordinator re-reads.test

Assertions

IdStatementProvenance
01Sam keeps his original join date and has two continuity episodes after the rejoin.test
services-membership:tests/e2e/s04-lapse-and-rejoin.e2e.spec.ts#keeps the original join date and restarts continuity at the rejoin (a gap of 437 days is more than 60)
02The membership's business log says enrolled, terminated and rejoined, in that order.test
services-membership:tests/e2e/s04-lapse-and-rejoin.e2e.spec.ts#records the business events: enrolled, terminated, rejoined
03The dropped term's dates are exactly what they were before the drop.test
services-membership:tests/e2e/s04-lapse-and-rejoin.e2e.spec.ts#drops the expired term with its reason and leaves its dates as they were

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.

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.