Skip to content

CAP-COM-FUL-005Understand and intervene in an order's delivery

Markdown

CAP-COM-FUL-005

Understand and intervene in an order's delivery

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaCommerceModuleFulfillment, Shipping and InventoryRevision1

Read atservices-commerce c8b66a98react-console baf6dae3

The Formal Contract

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

Outcomes
Staff can explain the outstanding delivery on an order.Manual decisions retain attribution for later review.
Surfaces
consoleapi

Controls

24 controls apply, from the corpus control catalogue.

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

Permissions

KeyChecked atScope
commerce.obligations.readapitenant
commerce.obligations.approveapitenant
commerce.obligations.overrideapitenant
commerce.obligations.reauthorizeapitenant
commerce.obligations.resolveapitenant
commerce.obligations.holdapitenant
commerce.obligations.complete-manuallyapitenant
orders.obligations.viewconsoletenant

Business Rules

10 rules, 9 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.

IdRuleKindEnforced atProvenance
01must prove
Proposed
Staff can list an order's obligations by line and unit and inspect gates, states, authorizations, attempts and interventions; portal callers cannot read the register.
permissionapitest
services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#lists each order’s one pending obligation with the built-in default gate frozen on it, and refuses a portal member the register
02must prove
Proposed
Staff interventions require a reason, first append the acting person and reason to the intervention log, and add an order-history entry.
validationapi, service, databasetest
services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#refuses an approval to a reader, 403 permission_missing, and without a reason, 400
03must prove
Proposed
One approval can release and immediately evaluate an obligation awaiting approval, while competing approvals are rejected with the successful approval identified.
origin: DEF-COM-0869 (acceptance defect)
lifecycleservice, databasetest
services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#releases the blocked obligation on one of five simultaneous approvals, which opens its gate at once since the line is paid, with the one intervention recorded; the other four are refused 409 naming it (DEF-COM-0869)
04must prove
Proposed
A separately authorized sensitive override opens a waiting obligation regardless of its gate facts and retains the overriding person and time.
permissionapi, servicetest
services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#overrides the gate of the unpaid obligation, authorizing it regardless of the facts, with the override on the obligation
05must prove
Proposed
Only failed obligations accept re-authorization with a new sequence or staff resolution, and resolution also closes their open exceptions.
lifecycleservice, databasetest
services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#re-authorizes the failed obligation at sequence two, which the participant fails again, then resolves it with its exceptions
06must prove
Proposed
A hold keeps a waiting obligation blocked despite payment, release immediately evaluates it, and holds cannot be placed on authorized obligations or released from unheld ones.
lifecycleservicetest
services-commerce:modules/fulfillment/tests/e2e/obligation-holds.e2e.spec.js#keeps the gate shut while the hold stands, though the line is paid and Accounting’s event arrives
07must prove
Proposed
Manual completion requires both reason and evidence, applies only to delivery in flight, closes the authorization and rejects a later application callback.
validationapi, servicetest
services-commerce:modules/fulfillment/tests/e2e/obligation-holds.e2e.spec.js#refuses the manual completion without the evidence (400) and to a reader (403), then completes it with the records and the note
08must prove
Proposed
Each intervention requires its specific administrator permission; register read authority permits no intervention.
permissionapiobserved
09
Proposed
An intervention calls the selected audit provider without rolling back if publication fails; the Platform provider currently writes an error log instead of storing a Platform audit event.
policyserviceobserved
10must prove
Proposed
The Fulfilment card exposes re-authorization, resolution, hold release and gate override under their individual permissions, with no controls for approval, placing holds or manual completion.
permissionconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01A paid obligation is waiting for approval.Submit five staff approvals concurrently.One attributed approval opens the gate and the competing requests conflict with it.test
services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#releases the blocked obligation on one of five simultaneous approvals, which opens its gate at once since the line is paid, with the one intervention recorded; the other four are refused 409 naming it (DEF-COM-0869)
02An application has not answered an in-progress instruction.Record manual completion with delivery evidence.The obligation completes and a subsequent callback cannot change that result.test
services-commerce:modules/fulfillment/tests/e2e/obligation-holds.e2e.spec.js#refuses the participant’s late callback as not in flight, leaving the manual completion

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.