OptionalcustomerId?: stringOptionaldescription?: stringOptionaleffectiveFrom?: InstantWhen this version becomes effective. Defaults to now() at the
DB layer when omitted. Pass a future Temporal.Instant to
schedule a change (e.g. Reg E 30-day notice).
Optionallabel?: stringOptionalmatcher?: MatcherOptionaltype?: "ADMIN" | "CUSTOMER"
Admin-tier CRUD over
product_limit_rule. Accepts any rule type (admin-global, admin-for-customer, or customer).Identity / version split: see ProductLimitRuleAdminService (this file). Edits insert a new version row and re-point
currentVersionIdin one transaction.Duplicate-matcher detection is enforced by the partial unique index
product_limit_rule_unique_tuple— seeProductActivationRuleAdminServicefor the rationale.matcherHashis denormalized onto the identity row; service code maintains identity.matcherHash = currentVersion.matcherHash on every version bump and translates the unique-violation back intoDUPLICATE_MATCHER.