@nextcommerce/campaigns-os 1.34.1 → 1.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/AGENTS.md +42 -13
  2. package/CHANGELOG.md +87 -0
  3. package/README.md +39 -20
  4. package/contracts/agent-relevant-change-policy.v1.json +1 -0
  5. package/contracts/fixtures/progress/observation.v0.json +89 -0
  6. package/contracts/release-ledger.json +359 -0
  7. package/contracts/supported-surface.json +20 -5
  8. package/demo/apollo-v0/NOTICE.txt +51 -0
  9. package/demo/apollo-v0/assets/css/demo.css +2 -0
  10. package/demo/apollo-v0/assets/css/landing/tokens.css +35 -0
  11. package/demo/apollo-v0/assets/css/next-core.css +16124 -0
  12. package/demo/apollo-v0/assets/images/1x1_1.svg +19 -0
  13. package/demo/apollo-v0/assets/images/1x1_2.svg +19 -0
  14. package/demo/apollo-v0/assets/images/affirm-logo.svg +24 -0
  15. package/demo/apollo-v0/assets/images/apple-pay-logo.svg +4 -0
  16. package/demo/apollo-v0/assets/images/bancontact-logo.svg +1 -0
  17. package/demo/apollo-v0/assets/images/cc-visa.svg +28 -0
  18. package/demo/apollo-v0/assets/images/cc_amex.svg +20 -0
  19. package/demo/apollo-v0/assets/images/cc_discover.svg +21 -0
  20. package/demo/apollo-v0/assets/images/cc_master.svg +22 -0
  21. package/demo/apollo-v0/assets/images/credit-card-flags.svg +38 -0
  22. package/demo/apollo-v0/assets/images/demo-inline-40788e52a7c75b78.svg +1 -0
  23. package/demo/apollo-v0/assets/images/demo-inline-686e73c8840a0f0a.svg +1 -0
  24. package/demo/apollo-v0/assets/images/google-pay-logo.svg +7 -0
  25. package/demo/apollo-v0/assets/images/guarantee-badge.png +0 -0
  26. package/demo/apollo-v0/assets/images/icon-dollar.svg +5 -0
  27. package/demo/apollo-v0/assets/images/icon-guarantee.svg +5 -0
  28. package/demo/apollo-v0/assets/images/icon-shipping.svg +5 -0
  29. package/demo/apollo-v0/assets/images/icons8-lock-24_1icons8-lock-24.png +0 -0
  30. package/demo/apollo-v0/assets/images/ideal-logo.svg +30 -0
  31. package/demo/apollo-v0/assets/images/klarna-logo.svg +9 -0
  32. package/demo/apollo-v0/assets/images/landing/_shared/16x9.svg +19 -0
  33. package/demo/apollo-v0/assets/images/landing/_shared/1x1_1.svg +19 -0
  34. package/demo/apollo-v0/assets/images/landing/_shared/4x3.svg +19 -0
  35. package/demo/apollo-v0/assets/images/landing/_shared/arrow-right.svg +6 -0
  36. package/demo/apollo-v0/assets/images/landing/_shared/cta-guarantee-icon.png +0 -0
  37. package/demo/apollo-v0/assets/images/landing/benefits-2/benefits-2-icon-1.svg +8 -0
  38. package/demo/apollo-v0/assets/images/landing/benefits-2/benefits-2-icon-2.svg +10 -0
  39. package/demo/apollo-v0/assets/images/landing/benefits-2/benefits-2-icon-3.svg +13 -0
  40. package/demo/apollo-v0/assets/images/landing/benefits-2/benefits-2-icon-4.svg +11 -0
  41. package/demo/apollo-v0/assets/images/landing/benefits-2/benefits-2-quote.svg +6 -0
  42. package/demo/apollo-v0/assets/images/landing/benefits-2/benefits-2-verified.svg +10 -0
  43. package/demo/apollo-v0/assets/images/landing/bottomcta-1/check-bullet.svg +5 -0
  44. package/demo/apollo-v0/assets/images/landing/faq-1/faq-chevron.svg +6 -0
  45. package/demo/apollo-v0/assets/images/landing/footer-1/footer-logo.png +0 -0
  46. package/demo/apollo-v0/assets/images/landing/guarantee-1/guarantee-1-badge.svg +8 -0
  47. package/demo/apollo-v0/assets/images/landing/hero-1/icon-check.svg +5 -0
  48. package/demo/apollo-v0/assets/images/landing/hero-1/icon-star.svg +6 -0
  49. package/demo/apollo-v0/assets/images/landing/hero-1/icon-verified.svg +6 -0
  50. package/demo/apollo-v0/assets/images/landing/icons-5/icon-batteries.svg +7 -0
  51. package/demo/apollo-v0/assets/images/landing/icons-5/icon-cuff-checking.svg +6 -0
  52. package/demo/apollo-v0/assets/images/landing/icons-5/icon-dual-user.svg +5 -0
  53. package/demo/apollo-v0/assets/images/landing/icons-5/icon-fda-cleared.svg +5 -0
  54. package/demo/apollo-v0/assets/images/landing/icons-5/icon-heartbeat.svg +17 -0
  55. package/demo/apollo-v0/assets/images/landing/icons-5/icon-lcd-display.svg +10 -0
  56. package/demo/apollo-v0/assets/images/landing/icons-5/icon-movement-error.svg +7 -0
  57. package/demo/apollo-v0/assets/images/landing/icons-5/icon-portable.png +0 -0
  58. package/demo/apollo-v0/assets/images/landing/icons-5/icon-reading-memory.svg +6 -0
  59. package/demo/apollo-v0/assets/images/landing/icons-5/icon-wrist-comfort.svg +5 -0
  60. package/demo/apollo-v0/assets/images/landing/ingredients-3/ingredients-3-card-1.jpg +0 -0
  61. package/demo/apollo-v0/assets/images/landing/ingredients-3/ingredients-3-card-2.jpg +0 -0
  62. package/demo/apollo-v0/assets/images/landing/ingredients-3/ingredients-3-card-3.jpg +0 -0
  63. package/demo/apollo-v0/assets/images/landing/ingredients-3/ingredients-3-card-4.jpg +0 -0
  64. package/demo/apollo-v0/assets/images/landing/ingredients-3/ingredients-3-promise-1.png +0 -0
  65. package/demo/apollo-v0/assets/images/landing/ingredients-3/ingredients-3-promise-2.png +0 -0
  66. package/demo/apollo-v0/assets/images/landing/ingredients-3/ingredients-3-promise-3.png +0 -0
  67. package/demo/apollo-v0/assets/images/landing/ingredients-3/ingredients-3-promise-4.png +0 -0
  68. package/demo/apollo-v0/assets/images/landing/ingredients-3/ingredients-3-promise-5.png +0 -0
  69. package/demo/apollo-v0/assets/images/landing/ingredients-3/ingredients-3-promise-6.png +0 -0
  70. package/demo/apollo-v0/assets/images/landing/nav-1/flag-us.png +0 -0
  71. package/demo/apollo-v0/assets/images/landing/reviews-3/star-card.svg +3 -0
  72. package/demo/apollo-v0/assets/images/landing/reviews-3/star-lg.svg +3 -0
  73. package/demo/apollo-v0/assets/images/landing/reviews-3/star-sm.svg +3 -0
  74. package/demo/apollo-v0/assets/images/landing/reviews-3/verified.svg +10 -0
  75. package/demo/apollo-v0/assets/images/landing/testimonials-2/testimonials-2-reactions.svg +9 -0
  76. package/demo/apollo-v0/assets/images/landing/testimonials-2/testimonials-2-stars.svg +6 -0
  77. package/demo/apollo-v0/assets/images/link-logo.svg +1 -0
  78. package/demo/apollo-v0/assets/images/next-dark.svg +8 -0
  79. package/demo/apollo-v0/assets/images/paypal-logo.svg +5 -0
  80. package/demo/apollo-v0/assets/images/paypal-txt.svg +8 -0
  81. package/demo/apollo-v0/assets/images/paypal.svg +22 -0
  82. package/demo/apollo-v0/assets/images/sepa-logo.svg +275 -0
  83. package/demo/apollo-v0/assets/images/twint-logo.svg +1 -0
  84. package/demo/apollo-v0/assets/images/united-states-flag-icon.webp +0 -0
  85. package/demo/apollo-v0/assets/images/upsell-payment-logos.svg +38 -0
  86. package/demo/apollo-v0/assets/images/usps.png +0 -0
  87. package/demo/apollo-v0/checkout/index.html +1370 -0
  88. package/demo/apollo-v0/landing/index.html +1836 -0
  89. package/demo/apollo-v0/provenance.json +342 -0
  90. package/demo/apollo-v0/receipt/index.html +292 -0
  91. package/demo/apollo-v0/upsell-bundle-stepper/index.html +401 -0
  92. package/docs/activation-and-evidence.md +37 -0
  93. package/docs/demo-preview.md +63 -0
  94. package/docs/diagnostics.md +55 -0
  95. package/docs/orientation-contract-reference.md +2 -1
  96. package/docs/progress-snapshots.md +142 -0
  97. package/docs/runtime-readiness.md +1 -1
  98. package/docs/supported-surface.md +13 -1
  99. package/package.json +13 -3
  100. package/schemas/campaign-runtime-build-context.v0.schema.json +42 -0
  101. package/schemas/campaigns-os-progress-snapshot.v0.schema.json +370 -0
  102. package/skills/next-campaigns-build/SKILL.md +17 -1
  103. package/skills/next-campaigns-os/SKILL.md +19 -3
  104. package/skills/next-campaigns-os-setup/SKILL.md +17 -1
  105. package/skills/next-campaigns-polish/SKILL.md +18 -2
  106. package/skills/next-campaigns-qa/SKILL.md +24 -8
  107. package/skills.json +5 -5
  108. package/src/cli.mjs +74 -4
  109. package/src/consent.mjs +2 -2
  110. package/src/demo-artifact.mjs +97 -0
  111. package/src/demo.mjs +85 -0
  112. package/src/diagnostic.mjs +101 -0
  113. package/src/install-mode.mjs +13 -1
  114. package/src/progress-node.mjs +177 -0
  115. package/src/progress.mjs +133 -0
@@ -0,0 +1,401 @@
1
+ <!DOCTYPE html><html lang="en"><head><meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src 'self'; style-src 'self' 'unsafe-inline'; font-src 'self'; form-action 'none'; base-uri 'none'; connect-src 'none'; frame-src 'none'; object-src 'none'"><link rel="stylesheet" href="../assets/css/demo.css">
2
+ <meta charset="utf-8">
3
+ <title>Apollo — Upsell (bundle stepper)</title>
4
+
5
+ <meta property="og:type" content="website">
6
+ <meta property="og:title" content="Apollo — Upsell (bundle stepper)">
7
+ <meta name="twitter:card" content="summary_large_image">
8
+ <meta name="twitter:title" content="Apollo — Upsell (bundle stepper)">
9
+
10
+
11
+ <meta property="og:description" content="Apollo checkout funnel">
12
+ <meta name="twitter:description" content="Apollo checkout funnel">
13
+
14
+
15
+
16
+
17
+ <meta property="og:site_name" content="Next Commerce">
18
+
19
+
20
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+ <link href="../assets/css/next-core.css" rel="stylesheet" type="text/css">
49
+
50
+
51
+
52
+
53
+
54
+
55
+ </head>
56
+ <body><aside data-demo-banner="true" class="demo-banner"><strong>Demo only</strong><span>Sample content. Checkout, payment and source controls are disabled.</span><nav aria-label="Sample pages"><a data-demo-nav="true" href="../landing/index.html">Landing</a><a data-demo-nav="true" href="../checkout/index.html">Checkout</a><a data-demo-nav="true" href="../upsell-bundle-stepper/index.html">Offer</a><a data-demo-nav="true" href="../receipt/index.html">Receipt</a></nav><p>For a real campaign, start in a new folder with a saved Campaign Map. Keep this demo and any edits as reference.</p></aside>
57
+
58
+
59
+
60
+
61
+ <div class="page-wrapper">
62
+ <div class="main-wrapper">
63
+ <div class="announcement">
64
+ <div class="announcement__block">
65
+ <div class="announcement__text"><strong>Special Offer Unlocked - Do Not Close This Page</strong></div>
66
+ </div>
67
+ </div>
68
+ <section class="upsell-header-bar">
69
+ <div class="container">
70
+ <div class="upsell-header-bar__wrapper">
71
+ <div class="upsell-header-bar__left">
72
+ <div class="upsell-header-bar__logo"><img src="../assets/images/next-dark.svg" alt="Next Commerce" class="brand-logo" loading="eager"></div>
73
+ </div>
74
+ <div class="upsell-header-bar__right">
75
+ <div class="upsell-header-bar__steps">
76
+ <div class="upsell-header-bar__stepper">
77
+
78
+ <div class="upsell-header-bar__step">
79
+
80
+ <div class="upsell-header-bar__step-content">
81
+ <div class="upsell-header-bar__step-label">Checkout</div>
82
+ </div>
83
+ </div>
84
+ <div class="upsell-header-bar__step">
85
+
86
+ <div class="upsell-header-bar__step-content">
87
+ <div class="upsell-header-bar__step-label"> › </div>
88
+ </div>
89
+ </div>
90
+ <div class="upsell-header-bar__step upsell-header-bar__step--active">
91
+
92
+ <div class="upsell-header-bar__step-content">
93
+ <div class="upsell-header-bar__step-label">Upgrades</div>
94
+ </div>
95
+ </div>
96
+ <div class="upsell-header-bar__step">
97
+
98
+ <div class="upsell-header-bar__step-content">
99
+ <div class="upsell-header-bar__step-label"> › </div>
100
+ </div>
101
+ </div>
102
+ <div class="upsell-header-bar__step">
103
+
104
+ <div class="upsell-header-bar__step-content">
105
+ <div class="upsell-header-bar__step-label">Summary</div>
106
+ </div>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ </section>
114
+
115
+
116
+ <section class="section upsell-header">
117
+ <div class="container">
118
+ <div class="upsell-header__inner">
119
+ <div class="upsell-header__title">Wait! Your Order Isn't Complete</div>
120
+ <div class="upsell-header__offer">
121
+ Special Discount: Get 1 More
122
+ <span>Sample product</span>
123
+ For Only
124
+ <span>$29.00 (sample)</span>
125
+ </div>
126
+ <div class="upsell-header__suboffer">
127
+ Add this to your order and get a
128
+ <span>Sample</span>
129
+ discount
130
+ </div>
131
+ </div>
132
+ </div>
133
+ </section>
134
+
135
+
136
+ <div>
137
+ <section class="section upsell-box">
138
+ <div class="container">
139
+ <div class="upsell-wrapper">
140
+
141
+
142
+ <div class="os-option" style="display:none">
143
+ <div role="button" aria-disabled="true" class="os-card next-selected demo-inert"></div>
144
+ </div>
145
+
146
+ <div class="upsell-container">
147
+ <div class="grid-full flex-col flex-horizontal-lg-up">
148
+ <div class="upsell-content__column">
149
+ <div class="upsell-offer__card">
150
+ <h2 class="display-lg"><span>Sample product</span></h2>
151
+ <div class="review_component cc-sm margin-12">
152
+ <div class="review_component-wrapper">
153
+ <div class="review_stars-wrapper cc-color cc-black">
154
+ <div class="review_component-star"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--heroicons" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007l5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527l1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354L7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273l-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433l2.082-5.006Z" clip-rule="evenodd"></path></svg></div>
155
+ <div class="review_component-star"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--heroicons" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007l5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527l1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354L7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273l-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433l2.082-5.006Z" clip-rule="evenodd"></path></svg></div>
156
+ <div class="review_component-star"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--heroicons" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007l5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527l1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354L7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273l-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433l2.082-5.006Z" clip-rule="evenodd"></path></svg></div>
157
+ <div class="review_component-star"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--heroicons" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007l5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527l1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354L7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273l-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433l2.082-5.006Z" clip-rule="evenodd"></path></svg></div>
158
+ <div class="review_component-star"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--heroicons" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007l5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527l1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354L7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273l-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433l2.082-5.006Z" clip-rule="evenodd"></path></svg></div>
159
+ </div>
160
+ <div class="font-bold">(19,569 Ratings)</div>
161
+ </div>
162
+ </div>
163
+ <div class="divider_line _25"></div>
164
+ <div class="upsell-offer__bullets">
165
+ <div class="bullet_inner-one">
166
+ <div class="hero_bullet-features-box-inner">
167
+ <div class="bullet-features-icon-box"><div class="bullet_features-icon-svg"><svg width="100%" height="100%" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_upsell_u1)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10 0.930023C4.48 0.930023 0 5.41002 0 10.93C0 16.45 4.48 20.93 10 20.93C15.52 20.93 20 16.45 20 10.93C20 5.41002 15.52 0.930023 10 0.930023ZM9.99994 18.9302C5.58994 18.9302 1.99994 15.3402 1.99994 10.9302C1.99994 6.52025 5.58994 2.93025 9.99994 2.93025C14.4099 2.93025 17.9999 6.52025 17.9999 10.9302C17.9999 15.3402 14.4099 18.9302 9.99994 18.9302ZM8.00003 13.1002L14.59 6.51021L16 7.93021L8.00003 15.9302L4.00003 11.9302L5.41003 10.5202L8.00003 13.1002Z" fill="currentColor"></path></g><defs><clipPath id="clip0_upsell_u1"><rect width="20" height="20" fill="white" transform="translate(0 0.930023)"></rect></clipPath></defs></svg></div></div>
168
+ <div class="bullet-features-text-box"><div class="text-size-regular text-weight-bold">The standard chunk of Lorem Ipsum</div></div>
169
+ </div>
170
+ <div class="hero_bullet-features-box-inner">
171
+ <div class="bullet-features-icon-box"><div class="bullet_features-icon-svg"><svg width="100%" height="100%" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_upsell_u2)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10 0.930023C4.48 0.930023 0 5.41002 0 10.93C0 16.45 4.48 20.93 10 20.93C15.52 20.93 20 16.45 20 10.93C20 5.41002 15.52 0.930023 10 0.930023ZM9.99994 18.9302C5.58994 18.9302 1.99994 15.3402 1.99994 10.9302C1.99994 6.52025 5.58994 2.93025 9.99994 2.93025C14.4099 2.93025 17.9999 6.52025 17.9999 10.9302C17.9999 15.3402 14.4099 18.9302 9.99994 18.9302ZM8.00003 13.1002L14.59 6.51021L16 7.93021L8.00003 15.9302L4.00003 11.9302L5.41003 10.5202L8.00003 13.1002Z" fill="currentColor"></path></g><defs><clipPath id="clip0_upsell_u2"><rect width="20" height="20" fill="white" transform="translate(0 0.930023)"></rect></clipPath></defs></svg></div></div>
172
+ <div class="bullet-features-text-box"><div class="text-size-regular text-weight-bold">Contrary to popular belief, Lorem Ipsum</div></div>
173
+ </div>
174
+ <div class="hero_bullet-features-box-inner">
175
+ <div class="bullet-features-icon-box"><div class="bullet_features-icon-svg"><svg width="100%" height="100%" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_upsell_u3)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10 0.930023C4.48 0.930023 0 5.41002 0 10.93C0 16.45 4.48 20.93 10 20.93C15.52 20.93 20 16.45 20 10.93C20 5.41002 15.52 0.930023 10 0.930023ZM9.99994 18.9302C5.58994 18.9302 1.99994 15.3402 1.99994 10.9302C1.99994 6.52025 5.58994 2.93025 9.99994 2.93025C14.4099 2.93025 17.9999 6.52025 17.9999 10.9302C17.9999 15.3402 14.4099 18.9302 9.99994 18.9302ZM8.00003 13.1002L14.59 6.51021L16 7.93021L8.00003 15.9302L4.00003 11.9302L5.41003 10.5202L8.00003 13.1002Z" fill="currentColor"></path></g><defs><clipPath id="clip0_upsell_u3"><rect width="20" height="20" fill="white" transform="translate(0 0.930023)"></rect></clipPath></defs></svg></div></div>
176
+ <div class="bullet-features-text-box"><div class="text-size-regular text-weight-bold">Lorem Ipsum has been the industry's</div></div>
177
+ </div>
178
+ <div class="hero_bullet-features-box-inner">
179
+ <div class="bullet-features-icon-box"><div class="bullet_features-icon-svg"><svg width="100%" height="100%" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_upsell_u4)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10 0.930023C4.48 0.930023 0 5.41002 0 10.93C0 16.45 4.48 20.93 10 20.93C15.52 20.93 20 16.45 20 10.93C20 5.41002 15.52 0.930023 10 0.930023ZM9.99994 18.9302C5.58994 18.9302 1.99994 15.3402 1.99994 10.9302C1.99994 6.52025 5.58994 2.93025 9.99994 2.93025C14.4099 2.93025 17.9999 6.52025 17.9999 10.9302C17.9999 15.3402 14.4099 18.9302 9.99994 18.9302ZM8.00003 13.1002L14.59 6.51021L16 7.93021L8.00003 15.9302L4.00003 11.9302L5.41003 10.5202L8.00003 13.1002Z" fill="currentColor"></path></g><defs><clipPath id="clip0_upsell_u4"><rect width="20" height="20" fill="white" transform="translate(0 0.930023)"></rect></clipPath></defs></svg></div></div>
180
+ <div class="bullet-features-text-box"><div class="text-size-regular text-weight-bold">Lorem Ipsum is simply dummy text</div></div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ <div class="divider_line margin-32"></div>
185
+
186
+ <div class="checkout-button-wrapper">
187
+
188
+ <div class="next-bundle-qty">
189
+ <div class="next-bundle-qty__label">
190
+ <div>Select Quantity</div>
191
+ <div class="right-bullet-icon"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ic" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" d="M16.01 11H4v2h12.01v3L20 12l-3.99-4z"></path></svg></div>
192
+ </div>
193
+ <div class="next-bundle-qty__row">
194
+ <button type="button" aria-label="Decrease quantity" disabled="" aria-disabled="true" class="next-bundle-qty__btn demo-inert">−</button>
195
+ <span class="text-lg tw-600" style="min-width: 1.5rem; text-align: center;">1</span>
196
+ <button type="button" aria-label="Increase quantity" disabled="" aria-disabled="true" class="next-bundle-qty__btn demo-inert">+</button>
197
+ </div>
198
+ </div>
199
+
200
+ <div class="prices-text-wrapper">
201
+ <div class="price-wrapper">
202
+ <div class="text-sm tw-600">Retail Price</div>
203
+ <div class="upsell-offer__price diagonal-strike color-muted">$29.00 (sample)</div>
204
+ <div class="text-xs font-bold"><strike>+$4.95 SHIPPING</strike></div>
205
+ </div>
206
+ <div class="upsell-offer__divider"></div>
207
+ <div class="price-wrapper">
208
+ <div class="upsell-offer__price-heading">
209
+ <div class="text-sm tw-600">Offer Price</div>
210
+ <div class="text-sm font-bold color-primary">
211
+ (<span>Sample</span> OFF)
212
+ </div>
213
+ </div>
214
+ <div class="upsell-offer__price">$29.00 (sample)</div>
215
+ <div class="text-xs font-bold color-primary">+ FREE SHIPPING</div>
216
+ </div>
217
+ </div>
218
+
219
+ <a pb-animate="pulse-upsell" aria-disabled="true" class="button demo-inert">
220
+ <div data-button="content" class="button_content"><div>Yes, Add to My Order</div></div>
221
+ </a>
222
+
223
+ <div class="upsell-ships-info">
224
+ <img class="upsell-ships-info__icon" src="../assets/images/usps.png" alt="USPS" loading="eager">
225
+ <p class="upsell-ships-info__text">
226
+ All orders ship from the USA
227
+ <img class="upsell-ships-info__flag" src="../assets/images/united-states-flag-icon.webp" alt="" loading="eager">
228
+ via USPS within 1 business day. A tracking number will be issued to your email.
229
+ </p>
230
+ </div>
231
+ <div class="payment-img-wrapper hide-tablet-up">
232
+ <div class="trust-badge invert"><img src="../assets/images/icons8-lock-24_1icons8-lock-24.png" alt="" class="trust-badge__icon" loading="eager">
233
+ <div class="badge-text-black">100% Encrypted &amp; Secure Checkout</div>
234
+ </div><img src="../assets/images/upsell-payment-logos.svg" alt="" class="credit-card__flags" loading="eager">
235
+ </div>
236
+
237
+ </div>
238
+ </div>
239
+ </div>
240
+
241
+ <div class="upsell-offer__image-column">
242
+ <div>
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+ <div data-component="swiper" data-variant="sw1">
253
+ <div class="slider_component">
254
+ <div class="slider_component-wrapper">
255
+ <div swiper="slider-main" class="swiper">
256
+ <div class="swiper-wrapper">
257
+
258
+ <div class="swiper-slide">
259
+ <div class="swiper-slide_inner">
260
+ <div class="swiper-slide_image-wrap is-square"><img src="../assets/images/1x1_1.svg" alt="" class="cover" loading="eager"></div>
261
+ </div>
262
+ </div>
263
+
264
+ <div class="swiper-slide">
265
+ <div class="swiper-slide_inner">
266
+ <div class="swiper-slide_image-wrap is-square"><img src="../assets/images/1x1_1.svg" alt="" class="cover" loading="eager"></div>
267
+ </div>
268
+ </div>
269
+
270
+ <div class="swiper-slide">
271
+ <div class="swiper-slide_inner">
272
+ <div class="swiper-slide_image-wrap is-square"><img src="../assets/images/1x1_1.svg" alt="" class="cover" loading="eager"></div>
273
+ </div>
274
+ </div>
275
+
276
+ <div class="swiper-slide">
277
+ <div class="swiper-slide_inner">
278
+ <div class="swiper-slide_image-wrap is-square"><img src="../assets/images/1x1_1.svg" alt="" class="cover" loading="eager"></div>
279
+ </div>
280
+ </div>
281
+
282
+ <div class="swiper-slide">
283
+ <div class="swiper-slide_inner">
284
+ <div class="swiper-slide_image-wrap is-square"><img src="../assets/images/1x1_1.svg" alt="" class="cover" loading="eager"></div>
285
+ </div>
286
+ </div>
287
+
288
+ <div class="swiper-slide">
289
+ <div class="swiper-slide_inner">
290
+ <div class="swiper-slide_image-wrap is-square"><img src="../assets/images/1x1_1.svg" alt="" class="cover" loading="eager"></div>
291
+ </div>
292
+ </div>
293
+
294
+ </div>
295
+ </div>
296
+ <div class="swiper-thumbs-arrow">
297
+ <div swiper="prev-button" class="swiper__button-static">
298
+ <div class="swiper__button-icon"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.91316 12.9545L0 12.0028L0.91316 11.0511L9.16383 2.45175L10.077 1.5L11.8979 3.39789L10.9848 4.34964L4.93644 10.6592H22.7108H24V13.3464H22.7108H4.93644L10.9902 19.6504L11.9033 20.6021L10.0824 22.5L9.1692 21.5483L0.91316 12.9545Z" fill="currentColor"></path></svg></div>
299
+ </div>
300
+ <div class="slider_component__thumbs-wrap">
301
+ <div thumbsslider="" swiper="slider-thumbs" class="swiper">
302
+ <div class="swiper-wrapper">
303
+
304
+ <div class="swiper-slide is-thumb swiper-slide-thumb-active">
305
+ <div class="swiper-slide_inner">
306
+ <div class="swiper-slide_image-wrap"><img src="../assets/images/1x1_2.svg" alt="" class="cover" loading="eager"></div>
307
+ </div>
308
+ </div>
309
+
310
+ <div class="swiper-slide is-thumb">
311
+ <div class="swiper-slide_inner">
312
+ <div class="swiper-slide_image-wrap"><img src="../assets/images/1x1_2.svg" alt="" class="cover" loading="eager"></div>
313
+ </div>
314
+ </div>
315
+
316
+ <div class="swiper-slide is-thumb">
317
+ <div class="swiper-slide_inner">
318
+ <div class="swiper-slide_image-wrap"><img src="../assets/images/1x1_2.svg" alt="" class="cover" loading="eager"></div>
319
+ </div>
320
+ </div>
321
+
322
+ <div class="swiper-slide is-thumb">
323
+ <div class="swiper-slide_inner">
324
+ <div class="swiper-slide_image-wrap"><img src="../assets/images/1x1_2.svg" alt="" class="cover" loading="eager"></div>
325
+ </div>
326
+ </div>
327
+
328
+ <div class="swiper-slide is-thumb">
329
+ <div class="swiper-slide_inner">
330
+ <div class="swiper-slide_image-wrap"><img src="../assets/images/1x1_2.svg" alt="" class="cover" loading="eager"></div>
331
+ </div>
332
+ </div>
333
+
334
+ <div class="swiper-slide is-thumb">
335
+ <div class="swiper-slide_inner">
336
+ <div class="swiper-slide_image-wrap"><img src="../assets/images/1x1_2.svg" alt="" class="cover" loading="eager"></div>
337
+ </div>
338
+ </div>
339
+
340
+ </div>
341
+ </div>
342
+ </div>
343
+ <div swiper="next-button" class="swiper__button-static">
344
+ <div class="swiper__button-icon"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M23.0868 12.9545L24 12.0028L23.0868 11.0511L14.8362 2.45175L13.923 1.5L12.1021 3.39789L13.0152 4.34964L19.0636 10.6592H1.28917H0V13.3464H1.28917H19.0582L13.0098 19.6504L12.0967 20.6021L13.9176 22.5L14.8308 21.5483L23.0868 12.9545Z" fill="currentColor"></path></svg></div>
345
+ </div>
346
+ </div>
347
+ </div>
348
+ </div>
349
+ </div>
350
+
351
+ </div>
352
+ <div class="payment-img-wrapper hide-tablet-down">
353
+ <div class="trust-badge invert"><img src="../assets/images/icons8-lock-24_1icons8-lock-24.png" alt="" class="trust-badge__icon" loading="eager">
354
+ <div class="badge-text-black">100% Encrypted &amp; Secure Checkout</div>
355
+ </div><img src="../assets/images/upsell-payment-logos.svg" alt="" class="credit-card__flags" loading="eager">
356
+ </div>
357
+
358
+ </div>
359
+ </div>
360
+ </div>
361
+
362
+ <div class="cc-decline-wrapper">
363
+ <a aria-disabled="true" class="upsell-link cc-decline cc-upsell4 demo-inert">
364
+ <div class="next-icon cc-1-25em"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--carbon" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M16 2C8.2 2 2 8.2 2 16s6.2 14 14 14s14-6.2 14-14S23.8 2 16 2m0 26C9.4 28 4 22.6 4 16S9.4 4 16 4s12 5.4 12 12s-5.4 12-12 12"></path><path fill="currentColor" d="M21.4 23L16 17.6L10.6 23L9 21.4l5.4-5.4L9 10.6L10.6 9l5.4 5.4L21.4 9l1.6 1.6l-5.4 5.4l5.4 5.4z"></path></svg></div>
365
+ <div class="text-sm tw-600 cc-upsell4">No thank you, I don't want this one-time offer</div>
366
+ </a>
367
+ </div>
368
+ </div>
369
+ </div>
370
+ </section>
371
+ </div>
372
+
373
+ <footer class="footer_section">
374
+ <div class="container">
375
+ <div class="footer_layout">
376
+ <div class="footer_copy-info">
377
+ <div class="footer_link-wrapper">
378
+ <a target="_blank" aria-disabled="true" class="footer_legal-link demo-inert">Shipping Policy</a>
379
+ <a target="_blank" aria-disabled="true" class="footer_legal-link demo-inert">Refund Policy</a>
380
+ <a target="_blank" aria-disabled="true" class="footer_legal-link demo-inert">Privacy Policy</a>
381
+ <a target="_blank" aria-disabled="true" class="footer_legal-link demo-inert">Terms of Service</a>
382
+ </div>
383
+ <div class="text-xs">Copyright © <span class="copyright-year"></span> Next Commerce</div>
384
+
385
+ </div>
386
+ </div>
387
+ </div>
388
+ </footer>
389
+
390
+ </div>
391
+ </div>
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+
400
+
401
+ </body></html>
@@ -0,0 +1,37 @@
1
+ # Activation, access, and evidence
2
+
3
+ Start a real campaign with a Campaigns App configuration, a saved Campaign Map
4
+ or local CampaignSpec export, a Page Kit project, and prepared source pages.
5
+ Run `start`, then follow `next` and its named owner, inputs, and gates. These
6
+ commands use the existing Build Packet and Assembly Report lifecycle; the
7
+ milestones below describe evidence, not a second state machine.
8
+
9
+ | Milestone | What it establishes | What is still needed |
10
+ |---|---|---|
11
+ | Toolkit installed | The selected package can run and its agent skills can be checked with `tooling status`. | Campaign inputs and workflow evidence. Installation needs npm access; it does not grant store, Map, deploy, or QA access. |
12
+ | Demo preview | Pinned sample pages can be opened locally for a visual walkthrough; candidate 1.37.0 provides `demo --target <new-directory>`. | A separate real campaign folder, configuration, replaced demo values, and the ordinary build and proof gates. Demo behavior is not live commerce proof. |
13
+ | Map saved | Campaign Map Builder has retained the authored campaign plan. A local export is an alternative build input. | Export/revision agreement and resolution of live campaign data. Saving a Map does not establish Campaigns App or store access. |
14
+ | Campaign resolved | The package-owned resolver has read the campaign's live configuration and produced resolution evidence. | Build, preview, and runtime proof. Confirm Campaigns App keys and allowed domains; store Admin API reads need their own read token. |
15
+ | Preview observed | A browser has inspected the served current build at the tested URL. | Retained package-owned Polish capture and QA evidence tied to that build. A deployed URL alone is not an observation. |
16
+ | QA recorded | The package-owned verdict records the tested URL, build, checks, and exercised order-path depth. | Any recorded blockers, waived exceptions, publication recovery, and run closeout. A verdict's presence does not imply a pass or launch approval. |
17
+
18
+ Access is supplied by the operator or the named workflow owner. When an input
19
+ is missing, keep the stage blocked and collect that input; do not substitute a
20
+ demo value or infer access from an earlier milestone. `doctor` inspects local
21
+ evidence without writing by default. `tooling diagnose --packet <packet>`
22
+ exports only a small, redacted support summary; normal `doctor` and `next`
23
+ remain the detailed local recovery instructions.
24
+
25
+ Trust, freshness, and revision agreement are independent of these milestones.
26
+ Orient on declarative Git objects at one reviewed commit before executing the
27
+ toolkit. An exact installed version and lockfile identify the runtime; they do
28
+ not establish that it is the newest release or trusted. A saved Map, exported
29
+ spec, assembled build, and retained verdict can each refer to a different
30
+ revision. Reconcile them through the existing producer and freshness gates,
31
+ never by treating a later milestone as proof that earlier evidence is current.
32
+
33
+ If QA has finished testing but verdict publication failed, use `qa publish`
34
+ on the existing verdict as the local recovery instructions direct. Publication
35
+ recovery sends retained evidence; it must not rerun checkout or create another
36
+ test order. A diagnostic inspection performs no installation, write, publish,
37
+ deploy, browser run, or order placement.
@@ -0,0 +1,63 @@
1
+ # Offline sample preview
2
+
3
+ Candidate 1.37.0 adds `campaigns-os demo`. The published 1.34.1 installation
4
+ example does not contain this command; install a reviewed full-SHA candidate
5
+ or an exact release at least 1.37.0 after publication.
6
+
7
+ From the folder containing your exact project-local toolkit installation:
8
+
9
+ ```bash
10
+ npx campaigns-os demo --target ./apollo-sample
11
+ ```
12
+
13
+ Open the printed `landing/index.html` file directly. No server or browser
14
+ installer is required. The command creates only a new directory whose parent
15
+ already exists; existing directories, files and symlinks are refused. Only
16
+ `--target` and `--help` are accepted. `--no-write`, `--dry-run`, force, merge
17
+ and overwrite flags are rejected before creation.
18
+
19
+ The banner links landing, checkout, upsell and receipt pages. Sample commerce
20
+ controls are disabled. This is a static visual projection: no SDK, JavaScript,
21
+ forms, live orders, campaign configuration, telemetry, sessions or evidence.
22
+ It remains sample-only even when invoked inside an active or stale campaign.
23
+ The command copies the reviewed bundled files without downloading a template
24
+ or running Page Kit or a CSS compiler. The bundle uses early restrictive CSP
25
+ and only local relative assets. No external resources are fetched.
26
+
27
+ To begin a real campaign, keep any sample edits and create a separate new Page
28
+ Kit folder. Follow [quickstart](quickstart.md) with a real saved Map or spec,
29
+ credentials and source pages. There is no automatic demo conversion. The demo
30
+ milestone grants neither saved-Map status nor build, preview or QA proof; see
31
+ [activation and evidence](activation-and-evidence.md).
32
+
33
+ ## Provenance and regeneration
34
+
35
+ The projection uses NEXT's Apollo template at
36
+ `11352c30c596db258679fd3a552b906086b11bb9`, built by the published
37
+ `next-campaign-page-kit@0.2.0` CLI (source commit
38
+ `eed0679b1d02ef5cbe7f21964165c4202724d91d`) and `tailwindcss@3.4.17`.
39
+ Template design tokens are retained, with a deterministic `system-ui,
40
+ sans-serif` typography fallback. Swiper is projected to its first static slide.
41
+ Two obsolete stock CSS backgrounds with no files at the pinned commit are
42
+ removed. The receipt's runtime skeleton overlay is removed.
43
+
44
+ `demo/apollo-v0/provenance.json` records input hashes, exact pins, the toolchain
45
+ lock hash and every output file hash. `NOTICE.txt` retains factual template
46
+ attribution and Page Kit/Tailwind MIT notices; it grants no additional template
47
+ licence. The provenance manifest is a hashed supported artifact. Other static
48
+ files are internal to this fixed projection and validated against that manifest.
49
+
50
+ Maintainers regenerate from a disposable workspace using the pinned toolchain:
51
+
52
+ ```bash
53
+ npm ci --ignore-scripts --prefix scripts/demo-toolchain
54
+ node scripts/regenerate-demo.mjs --write
55
+ ```
56
+
57
+ The script invokes published `campaign-init` against the full Git ref, builds
58
+ only the four selected pages with `campaign-build`, transcribes the fixed
59
+ Tailwind theme without executing source configuration, and validates the inert
60
+ output before replacing the repository's bundle. Raw source, configuration,
61
+ data, JavaScript, Maps, QA/run files and source maps are excluded. Review changed
62
+ bytes, update the supported provenance hash and release ledger, then run the
63
+ required checks and file-based browser proof before accepting regeneration.
@@ -0,0 +1,55 @@
1
+ # Redacted support diagnostics
2
+
3
+ Requires Campaigns OS 1.35.0 or later. If that version is not yet published to
4
+ npm, install a reviewed full-SHA source pin as described in the quickstart.
5
+
6
+ From the campaign folder:
7
+
8
+ ```bash
9
+ npx campaigns-os tooling diagnose --platform codex --packet campaign-runtime.build.json
10
+ npx campaigns-os tooling diagnose --platform codex --packet campaign-runtime.build.json --json > diagnostic.json
11
+ ```
12
+
13
+ Omit `--packet` for installation and skill diagnostics only. Use `--platform
14
+ claude` for a Claude-only profile. `--context` and `--report` may select existing
15
+ local sidecars; `--target` selects a local skills directory. These inputs are
16
+ never included in the export. The text and JSON forms are suitable for review
17
+ and copying to a support request. The command itself sends nothing.
18
+
19
+ The `campaigns-os-diagnostic/v0` summary is an allowlist projection of existing
20
+ `tooling status` and read-only `doctor` producers. Its stage comes from doctor's
21
+ `next` block, which uses the existing lifecycle picker. It does not execute
22
+ `next`, install, fetch campaign data, run a browser, publish, remit, deploy,
23
+ create an order, sweep a stale run session, or write retained campaign evidence.
24
+ Mutation flags do not change that behavior. Export success means a summary was
25
+ produced, including when its inspection is unavailable; consult its statuses.
26
+
27
+ The only exported fields are the schema version; a numeric package version or
28
+ null; install mode (`checkout`, `node_modules`, `global`, `npx_cache`,
29
+ `package_directory`, or `unknown`); coarse selected agent profile; tooling and
30
+ doctor statuses; existing next stage; freshness; fixed accepted reason/action
31
+ IDs; and fixed human-readable recovery owner, action, and input-needed text.
32
+ Unknown enum values become `unknown` with `diagnostic.unsupported_value`.
33
+ Unrecognized reason/action IDs become `diagnostic.unsupported_reason` or
34
+ `diagnostic.unsupported_action`; they are never copied or given authority.
35
+ Unsupported IDs need detailed local review, not a guessed repair.
36
+
37
+ Toolkit freshness is `pinned` only when a producer identifies a source pin,
38
+ `local_ref_current`/`local_ref_behind` for a checkout's existing local upstream
39
+ comparison, otherwise `unknown`. This performs no network freshness check.
40
+ An exact registry version and lockfile still identify installed bytes when a
41
+ source commit is not derivable. Inspection `observed` means local doctor
42
+ inspection succeeded, not that the served build, deployed campaign, or saved
43
+ Map revision is current. Missing inspection is `not_requested` or `unavailable`.
44
+ The diagnostic is neither an orientation envelope nor launch evidence.
45
+
46
+ The export excludes absolute paths, URLs, argv, environment, source content,
47
+ prompts, free-text findings, credentials, campaign/customer identities, and
48
+ order values. Producer exceptions are summarized with fixed unavailable IDs;
49
+ their raw messages are not exported. Detailed `doctor`/`next` output stays local
50
+ and can contain campaign data, so it is not a substitute for this export.
51
+
52
+ Recovery names who supplies the missing input. Inspect the detailed local
53
+ producer for the exact command and any campaign-specific input. If a QA verdict
54
+ was recorded but publication failed, follow `qa publish` recovery for that
55
+ retained verdict; never rerun checkout or create an order to republish evidence.
@@ -25,7 +25,7 @@ Ledger schema id: `campaigns-os-release-ledger/v1`
25
25
  Change policy version: `1.0.0`
26
26
  Reason-code vocabulary version: `1.0.0`
27
27
  Limits version: `1.0.0`
28
- Supported surface at generation time: `1.34.1`
28
+ Supported surface at generation time: `1.37.1`
29
29
 
30
30
  ## Forward compatibility
31
31
 
@@ -243,6 +243,7 @@ so a renamed command fails here as well as at the supported-surface gate.
243
243
  - `campaigns-os findings`
244
244
  - `campaigns-os run-record`
245
245
  - `campaigns-os run`
246
+ - `campaigns-os demo`
246
247
 
247
248
  ## Terminal outcome examples
248
249