← back to Dw Signup Fulfillment
Record TK-10994 production E2E proof
b745c53d474053720f58ae0883c171e7847c2fb8 · 2026-08-31 01:37:15 -0700 · Steve Abrams
Files touched
A verification/e2e-proof.json
Diff
commit b745c53d474053720f58ae0883c171e7847c2fb8
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Aug 31 01:37:15 2026 -0700
Record TK-10994 production E2E proof
---
verification/e2e-proof.json | 111 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 111 insertions(+)
diff --git a/verification/e2e-proof.json b/verification/e2e-proof.json
new file mode 100644
index 0000000..ba17bd3
--- /dev/null
+++ b/verification/e2e-proof.json
@@ -0,0 +1,111 @@
+{
+ "ticket": "TK-10994",
+ "intent": "Prove the production Designer Wallcoverings signup and sample-entitlement journey without creating accounts, submitting forms, sending email or SMS, mutating Shopify, or spending money.",
+ "riskTier": "R4",
+ "environment": "production read-only validation plus local pure-logic tests",
+ "timestamp": "2026-08-31T08:36:01Z",
+ "buildIdentity": {
+ "fulfillmentRepoHead": "a491d701c0b72ab764bab77fb36b3c8a4f466e14",
+ "productionValidatorSha256": "c66fd59ed3557ee34f7deb32a65911724b1049ffcdae8cab91abe0e8c3268b26",
+ "storefrontRepoHead": "34ffd563959fd60b580a63253bcb80a7eb67d59f",
+ "discountFunctionSha256": "11806790b63890a18a3648c45670845f4c2ab4f54ea8ace02df99498c54bddad",
+ "discountFunctionTestSha256": "bc5a5f57360f29f9307a77ff3adafceb919e9e52b196470d9775af0d58d523b8",
+ "orderLedgerSha256": "e09c44d60019f30832b4c8deb1199529dce21eef3672ce100a40113dbb755fd5",
+ "fulfillmentLedgerTestSha256": "55304a2301a28a76478983b384f76973f329543063a517668915022d71a28733"
+ },
+ "preconditions": [
+ {
+ "verdict": "PASS",
+ "assertion": "Production fulfillment service reports live mode",
+ "evidence": "GET /healthz returned HTTP 200 with ok=true and dry_run=false"
+ },
+ {
+ "verdict": "PASS",
+ "assertion": "Validation remained non-customer-mutating",
+ "evidence": "No trade/retail form was submitted, no account was created, no approval/rejection route was called, no email/SMS route was called, and no purchase or spend occurred"
+ }
+ ],
+ "commands": [
+ "node scripts/production-validation.js 2",
+ "node scripts/production-validation.js 3",
+ "node scripts/production-validation.js 4",
+ "node scripts/production-validation.js 5",
+ "npm test (shopify/staged/free-samples-function)",
+ "npm run test:ledger",
+ "Headless Chrome GET-only storefront inspection",
+ "curl GET storefront, /healthz, and unauthenticated /admin/trade"
+ ],
+ "checks": [
+ {
+ "name": "five consecutive production validation passes",
+ "verdict": "PASS",
+ "detail": "Passes 1-5 are green; passes 2-5 were rerun consecutively in this handoff and each returned all production assertions true. Pass 1 is recorded on TK-10994."
+ },
+ {
+ "name": "retail exact three lifetime samples",
+ "verdict": "PASS",
+ "detail": "The live storefront says retail accounts receive 3 lifetime complimentary samples. The active Shopify automatic app discount resolves to function 01a0475d-d202-743e-bdc8-7a659f6ff512. Pure-logic tests prove four sample lines discount only three, quantity five discounts exactly 3 x $4.25, prior usage reduces the remainder, and used=3 yields no discount."
+ },
+ {
+ "name": "approved trade unlimited samples",
+ "verdict": "PASS",
+ "detail": "The live storefront advertises unlimited complimentary samples for approved design professionals. Pure-logic tests prove only the exact trade_approved tag grants every sample line free even with prior retail usage; pending/designer tags do not."
+ },
+ {
+ "name": "lifetime usage persistence and duplicate safety",
+ "verdict": "PASS",
+ "detail": "Order-paid ledger tests prove the customer free_samples_used metafield increments to the lifetime cap, the order is marked counted, and duplicate webhook delivery is idempotently ignored."
+ },
+ {
+ "name": "production webhook boundary",
+ "verdict": "PASS",
+ "detail": "Invalid HMAC is rejected with 401. A correctly signed empty fixture is returned as ignored and performs no customer/order mutation. ORDERS_PAID subscription is present at the expected callback."
+ },
+ {
+ "name": "storefront signup UX",
+ "verdict": "PASS",
+ "detail": "Headless Chrome rendered the live trade form, sample banner, daily room, unchecked-by-default SMS opt-in, STOP/HELP and Do Not Call disclosure, returning-client modal, legacy-order reassurance, and secure Shopify customer-authentication handoff. No application endpoint was called."
+ },
+ {
+ "name": "admin authentication negative path",
+ "verdict": "PASS",
+ "detail": "Unauthenticated GET /admin/trade returned 401."
+ },
+ {
+ "name": "legacy customer non-regression",
+ "verdict": "PASS",
+ "detail": "All five production passes confirm the 2018 fixture remains intact and does not carry the authoritative trade_approved tag."
+ }
+ ],
+ "artifacts": [
+ {
+ "path": "/private/tmp/TK-10994-final.png",
+ "sha256": "552acfab8a252dc0099d8d35379134cf379a150f5b0ec862388305c58df5c66e",
+ "description": "Read-only production storefront screenshot"
+ },
+ {
+ "path": "verification/e2e-proof.json",
+ "description": "This structured proof bundle"
+ }
+ ],
+ "negativeChecks": [
+ "Anonymous customer gets no sample discount",
+ "Non-sample roll line receives no discount",
+ "Retail customer with all three lifetime samples used receives no discount",
+ "Non-approved trade-like tags do not grant unlimited samples",
+ "Invalid Shopify webhook signature is rejected",
+ "Unauthenticated trade admin request is rejected"
+ ],
+ "sideEffects": {
+ "productionDataMutations": 0,
+ "formsSubmitted": 0,
+ "accountsCreated": 0,
+ "emailsSent": 0,
+ "smsSent": 0,
+ "shopifyMutations": 0,
+ "spendUsd": 0,
+ "cleanup": "No retained production test state and no cleanup required. Browser telemetry generated by Shopify/analytics during page load was not an application form or commerce mutation."
+ },
+ "verdict": "PASS",
+ "skips": []
+}
← a491d70 Declare message_class transactional on george send (TK-10944
·
back to Dw Signup Fulfillment
·
prove production signup and sample activation aa1c2a5 →