Skip to content

CAP-COM-FUL-003Protect a member-priced purchase until its membership arrives

Markdown

CAP-COM-FUL-003

Protect a member-priced purchase until its membership arrives

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

Planning

Feature
FEAT-COM-FUL-01
Exercised by
FAS-COM-FUL-01-02
Key concepts
CON-COM-FUL-001
Actors
ACT-COM-011, ACT-COM-008
Depends on
CAP-COM-FUL-002
Related
CAP-COM-FUL-005, CAP-COM-FUL-008
Proved by
ATS-COM-FUL-003

Implementation

Executable suites
TST-COM-FUL-023, TST-COM-FUL-046

KindCapabilityProduct areaCommerceModuleFulfillment, Shipping and InventoryRevision1

Read atservices-commerce c8b66a98

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Join-and-buy purchases retain the intended member-price benefit.Membership failure leaves price follow-up to an explicit staff decision.
Surfaces
jobapi
Intent sources
services-commerce:docs/milestones/plans/COMM-M2-plan.md#D7 (decision (a), Andrew 2026-10-21)

Controls

25 controls apply, from the corpus control catalogue.

TC-IAM-006 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-006 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-CRY-001 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-LOG-004 TC-LOG-005 TC-AVL-004 TC-MON-001 TC-MON-002 TC-MON-004 TC-PI-001 TC-PI-002 TC-PI-004 TC-PI-005 TC-PRV-001 TC-PRV-002

Permissions

KeyChecked atScope
commerce.obligations.readapitenant

Business Rules

8 rules, 7 to be proved before approval. A rule's product intent is derived from its origin: 8 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Placement records the same-order membership line as the prerequisite of a line receiving its member price, without adding that dependency to the membership line itself.
origin: COMM-M2 D7 (a), Andrew 2026-10-21: services-commerce:docs/milestones/plans/COMM-M2-plan.md#D7
policyservicetest
services-commerce:modules/fulfillment/tests/e2e/same-cart-grants.e2e.spec.js#writes the T-shirt’s obligation with the prerequisite on the membership line and domain_prerequisite on its gate; the membership’s without
02must prove
Confirmed
Payment does not release a dependent line while the membership it relies on remains undelivered.
origin: COMM-M2 D7 (a), Andrew 2026-10-21: services-commerce:docs/milestones/plans/COMM-M2-plan.md#D7
policyservicetest
services-commerce:modules/fulfillment/tests/e2e/same-cart-grants.e2e.spec.js#opens the membership’s gate and keeps the T-shirt’s closed prerequisite_not_met while the membership is not delivered
03must prove
Confirmed
Successful membership delivery records each waiting dependent's prerequisite as satisfied, adds one corresponding history event and immediately re-evaluates its gate.
origin: COMM-M2 D7 (a), Andrew 2026-10-21: services-commerce:docs/milestones/plans/COMM-M2-plan.md#D7
lifecycleservicetest
services-commerce:modules/fulfillment/tests/integration/services/register/prerequisite-settlement.integration.spec.js#records the registration’s prerequisite met, writes it on the history once, and opens its gate (authorized, queued); a repeat finds nothing waiting
04must prove
Confirmed
Permanent membership failure, resolution without delivery or cancellation blocks waiting dependents for staff attention and records the block and exception without duplication.
origin: COMM-M2 D7 (a), Andrew 2026-10-21: services-commerce:docs/milestones/plans/COMM-M2-plan.md#D7
lifecycleservicetest
services-commerce:modules/fulfillment/tests/integration/services/register/prerequisite-settlement.integration.spec.js#blocks the registration prerequisite_failed with the membership named in its facts, writes the block on the history once, and raises the exception once
05must prove
Confirmed
Retryable failure and delivery still in progress do not settle dependents, and settlement excludes other orders.
policyservicetest
services-commerce:modules/fulfillment/tests/integration/services/register/prerequisite-settlement.integration.spec.js#a retryable failure, an obligation in flight, a line nothing depends on, and the dependents of another order
06must prove
Confirmed
A placed dependent retains its price, leaving staff to cancel it or change the price through an amendment rather than silently charging a difference.
origin: COMM-M2 D7 (a), Andrew 2026-10-21: services-commerce:docs/milestones/plans/COMM-M2-plan.md#D7
invariantservicetest
services-commerce:modules/fulfillment/tests/e2e/same-cart-grants.e2e.spec.js#leaves the T-shirt line priced as it was: nothing reprices a placed line (R-04)
07must prove
Confirmed
Re-evaluation retains a failed-prerequisite block until the membership is later re-authorized and successfully delivered.
origin: COMM-M2 D7 (a), Andrew 2026-10-21: services-commerce:docs/milestones/plans/COMM-M2-plan.md#D7
lifecycleservicetest
services-commerce:modules/fulfillment/tests/integration/services/register/prerequisite-settlement.integration.spec.js#keeps the registration blocked when the sweep evaluates it again, and opens it once the membership is re-authorized and completes (05 §4)
08
Confirmed
Settlement follows the prerequisite outcome's commit; an error is logged without undoing that outcome, and a later outcome can invoke settlement again.
policyserviceobserved

Scenarios

IdGivenWhenThenProvenance
01One cart contains membership and a T-shirt at a provisional member price.Complete membership delivery.Commerce settles the T-shirt prerequisite and delivers the dependent purchase afterward.test

Edge Cases

IdGivenWhenThenProvenance
02Membership is cancelled before enrollment.Finish the cancellation.The dependent member-priced purchase requires staff attention.test
services-commerce:modules/fulfillment/tests/integration/services/register/prerequisite-settlement.integration.spec.js#a cancelled membership (the order cancelled a line before it enrolled) blocks its dependents too

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.