Staff create recognizable classifications such as Student or Regular within a program. Packages identify the classification they grant. The benefit setting and optional grace override affect how a holding is interpreted. Organization flow-down settings identify the classification people receive through an organization’s membership. Enabling that behavior requires a valid target in the same program. Selected CRM roles and organization categories narrow the intended recipients. Saving one selection list replaces that list while keeping an omitted list. CRM references are stored without remote validation. A package-dependent type cannot simply move to another program. Deactivation differs between staff term creation and Commerce selling today. The product should settle that difference before administrators treat type retirement as a complete sales stop.
6 rules, 5 to be proved before approval. A rule's product intent is derived from its origin: 0 confirmed by a product decision, the rest inheriting this capability's proposed.
Id
Rule
Kind
Enforced at
Provenance
01must prove
Proposed
A type belongs to one program, and packages and terms must use a type from their own program; package references prevent moving that type elsewhere.
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses moving a type a package names to another program 400 naming program_id, and leaves it where it was
02must prove
Proposed
A type records benefit eligibility and can override program grace with a value including zero.
services-membership:tests/e2e/database-refusals.e2e.spec.ts#mistakes only the database catches, through the API › DEF-MBR-0086: a configuration write a check, a foreign key or an integer column refuses › refuses flow-down enabled without a target type 400 naming flowdown_type_id, and writes no type
04must prove
Proposed
Flow-down role and organization-type selections accept at most 100 entries each, deduplicate them and replace only submitted lists without validating CRM existence.