01must proveProposed | Commerce permits one merchandise extension for an existing Accounting merchandise product and refuses unknown products, other product types and duplicate extensions. | validation | service, database | test |
02must proveProposed | Merchandise and Accounting product creation or replacement commit together, rolling back both when either validation fails. | invariant | service | test |
03must proveProposed | Accounting refuses a merchandise price grid without a Standard price in the product’s base currency. origin: COMM-M1 D6 (docs/milestones/COMM-M1-set-up-what-you-sell.md) | validation | service | test |
04must proveProposed | Retirement changes the Accounting product’s status while retaining its merchandise extension, and a repeated retirement is refused. | lifecycle | service | test |
05must proveProposed | Stock references to merchandise variants prevent deletion of the merchandise extension. | lifecycle | service | test |
06must proveProposed | Variant SKUs are unique within the workspace, each selection supplies exactly one permitted value per variant option set, and selections cannot repeat within a product. | validation | service, database | test |
07Proposed | Replacement retains variant identities for retained SKUs and removes omitted SKUs, preserving inventory references to the retained variants. | invariant | service | test |
08must proveProposed | Option sets distinguish variant values from modifiers: modifiers must use permitted values, variant sets have no modifier options, and empty sets are refused. | validation | service, database | test |
09must proveProposed | Availability compares requested quantity with tracked stock: sufficient stock above the threshold is available, a smaller remainder is limited, and shortfalls either become permitted backorders or refusals; untracked stock remains available. | calculation | service | test |
10must proveProposed | Merchandise lines reject notes exceeding two hundred counted characters and selections that identify no variant. | validation | service | test |
11must proveProposed | The isolated pricing engine uses supplied variant prices and modifiers, but ordinary product loading supplies empty lists and does not connect those adjustments to quotes. | calculation | service | observed |
12must proveProposed | Merchandise reads require read permission, writes require administrator permissions, and the merchandise contract rejects custom fields. | permission | api, console | test |
13Proposed | Staff manage merchandise and its listing in one item screen, and the former listing address redirects to that item. origin: COMM-M1 walkthrough ruling R1 (docs/milestones/walkthroughs/COMM-M1-handoff.md) | policy | console | test |
14must proveProposed | A full lock prevents replacing a merchandise extension, and either full or deletion-only locking prevents removing it. | policy | service | observed |