01must proveProposed | Code identity is workspace-wide across promotions after case and space normalization, while the originally entered spelling remains available for display. origin: COMM-M1 plan A22 (DEF-COM-0817, Q03) (docs/milestones/plans/COMM-M1-plan.md) | validation | service, database | test |
02must proveProposed | Only code-claimed promotions accept individual or generated codes. origin: COMM-M1b D-R2 (docs/milestones/COMM-M1b-promotions-and-codes.md) | validation | service | test |
03must proveConfirmed | A code’s effective interval must fit within its promotion’s interval. origin: COMM-M1 D12 Q6 (docs/milestones/decisions/COMM-M1-D12-evaluation-algorithm.md) | validation | service | test |
04must proveProposed | After width and space normalization, codes accept one to sixty-four ASCII letters, digits, hyphens or underscores and reject other characters during creation and entry. | validation | api, service | test |
05must proveProposed | Checkout entry uses the same normalization as stored-code lookup, including full-width forms and spaces. | calculation | service | test |
06must proveProposed | Single-use codes impose one total use and one use per customer and reject conflicting limits. origin: COMM-M1b D-R2 (docs/milestones/COMM-M1b-promotions-and-codes.md) | validation | service | test |
07must proveProposed | Codes may restrict contacts and organizations or apply their own eligibility rule; their listed owner organizes the code without restricting redemption. origin: COMM-M1b D-R2 (docs/milestones/COMM-M1b-promotions-and-codes.md) | policy | service | test |
08must proveProposed | Staff cannot reduce code limits below recorded usage. | validation | service | test |
09must proveProposed | Codes can move between active and disabled and from either to permanently revoked, with transitions retained in promotion history. | lifecycle | service | test |
10must proveProposed | Generation templates use digit, letter and mixed wildcards excluding ambiguous characters, require six wildcards, permit one to five thousand codes and require a possibility space ten thousand times the requested count. origin: COMM-M1b scope item 1 (docs/milestones/COMM-M1b-promotions-and-codes.md) | validation | service | test |
11must proveProposed | Unless staff override it, a promotion enables cancellation release when its first code is personal and single-use. origin: COMM-M1 D13 (docs/milestones/COMM-M1-set-up-what-you-sell.md) | policy | service | test |
12must proveProposed | Code issuance starts asynchronously, reuses the batch for a repeated request, resumes missing codes after interruption and retains completed codes with a readable failure message. | lifecycle | service | test |
13must proveProposed | CSV exports prefix cells beginning with formula characters so opening the file cannot interpret those cells as formulas. | policy | service | test |
14must proveConfirmed | Code management and issuance require management permission, while code, redemption and batch inspection require read permission. origin: COMM-M1 plan A15 (promotions D-06) (docs/milestones/plans/COMM-M1-plan.md) | permission | api, console | test |