A promotion not stacking is not automatically a defect. Before commissioning custom checkout logic, identify whether the intended combination is supported and enabled. Otherwise a website team may build customer promises around a feature the merchant does not have.
Source-bound fact
Combinations require reciprocal settings; same-line product stacking is plan-limited, and Buy X Get Y has additional constraints. Official reference · Checked 17 October 2026.
Filled synthetic acceptance example
Synthetic teaching example, not a client case or a real-store assessment. On narrow screens, scroll to read the complete table.
| Input | Check basis | Expected |
|---|---|---|
| Product+order; both allow combination | eligible store confirmed | candidate for checkout test |
| Same-line product+product; plan unknown | Plus evidence missing | not approved |
| Automatic20 vs code15; incompatible | best valid option, not sum | 20 proposed; verify actual selection |
Supplier acceptance procedure
- Capture plan, checkout architecture, app/version and the two discount classes using redacted evidence.
- Test reciprocal settings, an excluded product and an insufficient-quantity Buy X Get Y basket.
- Ask the supplier to explain replacement messages and preserve actual line allocations, not only a final percentage.
Interpret the output
The20-versus15 row is a finite comparison exercise. It is not a promise that every discount engine chooses the same route for mixed-class carts. A supplier should mark an unsupported combination as unsupported rather than silently dropping a promotion and calling the result fixed.
Explicit limits
No installation, plan upgrade or live promotion change. Third-party apps, bundles and subscriptions require separate current compatibility evidence.
Replay the finite teaching model
Save both files in one folder. With Node22 or newer, run the command below. JSON contains explicit inputs and expected results. The script processes synthetic data only, with no network, credentials, payment or API calls. Passing proves the finite model only, not a live integration.
Filled inputs and expectations · Inspectable teaching script
node check.mjs discount-compatibility-evidence-pack.json