01must proveProposed | Promotions are automatic or code-claimed; automatic promotions cannot hold codes and a coded draft cannot change to automatic. origin: COMM-M1 plan A16 (docs/milestones/plans/COMM-M1-plan.md) no proof recorded yet | policy | service | test |
02must proveProposed | An offer uses one to twenty selling-area parts or one order-level amount or shipping benefit, never both, and percentage or per-unit benefits require parts. origin: COMM-M1b D-R1 (docs/milestones/COMM-M1b-promotions-and-codes.md) no proof recorded yet | validation | api, service | test |
03must proveProposed | Selling applications validate their parts’ areas and criteria, with percentages limited to one hundred percent and positive fixed amounts requiring currency. origin: COMM-M1b D-R1 (docs/milestones/COMM-M1b-promotions-and-codes.md) no proof recorded yet | validation | service | test |
04must proveProposed | A stated discount cap is at least one minor unit and limits all parts together; minimum purchase uses qualifying lines and validation reports all discovered promotion problems together. origin: COMM-M1 plan A19 (Q07) (docs/milestones/plans/COMM-M1-plan.md) no proof recorded yet | validation | api, service, database | test |
05must proveProposed | Code eligibility belongs to individual codes, promotion eligibility is limited to automatic promotions, and legacy scope values are accepted without effect. origin: COMM-M1b D-R2 (docs/milestones/COMM-M1b-promotions-and-codes.md) no proof recorded yet | validation | service | test |
06must proveProposed | Audience-price combination is enabled by default and remains changeable after redemption. origin: COMM-M1 D12, D12-F2 (docs/milestones/COMM-M1-set-up-what-you-sell.md) no proof recorded yet | policy | service | test |
07Confirmed | New promotions default to exclusive stacking, automatic priority one hundred and the internal name as their customer-facing name. origin: COMM-M1 plan A15, A16 (promotions D-02, Q03); COMM-M1b R6 (docs/milestones/plans/COMM-M1-plan.md) | policy | service, console | test |
08Proposed | Promotion names are unique ignoring case, and each promotion receives a displayed promotion number. | validation | service, database | test |
09must proveProposed | Permitted lifecycle moves are draft to active, active to paused and back, active or paused to ended, and draft or ended to archived; refused moves identify both states and successful moves retain reasons in history. origin: COMM-M1 plan scope item 6 (docs/milestones/plans/COMM-M1-plan.md) no proof recorded yet | lifecycle | service | test |
10must proveProposed | Activation requires an offer, currency for monetary benefits, a rule for selected eligibility and an active code for code-claimed promotions. no proof recorded yet | lifecycle | service | test |
11must proveConfirmed | Activation and resumption require launch permission separately from management permission for preparation, pausing, ending, archiving and duplication. origin: COMM-M1 plan A15 (promotions D-06) (docs/milestones/plans/COMM-M1-plan.md) no proof recorded yet | permission | api, console | test |
12must proveProposed | First redemption locks the promotion’s economic configuration, identifying changed locked fields and directing staff to end and duplicate it; names, dates and limits remain editable. no proof recorded yet | lifecycle | service, database | test |
13Proposed | Duplication creates a newly named and numbered draft with copied configuration, no codes or uses, and history identifying its source. | lifecycle | service | test |
14Proposed | Promotions remain retained through ending or archiving rather than deletion. | lifecycle | api | observed |