thumbgate 1.29.2 → 1.31.0

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 (111) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.well-known/mcp/server-card.json +1 -1
  3. package/README.md +54 -16
  4. package/adapters/claude/.mcp.json +2 -2
  5. package/adapters/forge/forge.yaml +3 -3
  6. package/adapters/mcp/server-stdio.js +143 -14
  7. package/adapters/opencode/opencode.json +1 -1
  8. package/bench/observability-eval-suite.json +2 -2
  9. package/bin/cli.js +154 -36
  10. package/config/evals/generation-quality-golden.json +95 -0
  11. package/config/evals/rag-answer-quality-golden.json +91 -0
  12. package/config/evals/retrieval-hybrid-ablation.json +66 -0
  13. package/config/evals/retrieval-ranking-golden.json +522 -0
  14. package/config/gates/default.json +217 -50
  15. package/config/mcp-allowlists.json +215 -185
  16. package/config/model-tiers.json +7 -2
  17. package/config/post-deploy-marketing-pages.json +26 -1
  18. package/glama.json +6 -0
  19. package/package.json +94 -11
  20. package/public/architecture.html +130 -0
  21. package/public/assets/diagrams/agent-integration.png +0 -0
  22. package/public/assets/diagrams/before-after.svg +22 -0
  23. package/public/assets/diagrams/decision.svg +36 -0
  24. package/public/assets/diagrams/feedback-pipeline.png +0 -0
  25. package/public/assets/diagrams/hero-thumbs.svg +68 -0
  26. package/public/assets/diagrams/loop.svg +40 -0
  27. package/public/assets/diagrams/plugin-topology.png +0 -0
  28. package/public/assets/diagrams/pre-action-gate-loop.svg +59 -0
  29. package/public/assets/diagrams/self-improving-thumbs-loop.svg +105 -0
  30. package/public/assets/diagrams/stack.svg +18 -0
  31. package/public/assets/diagrams/thumbgate-architecture.png +0 -0
  32. package/public/case-studies.html +151 -0
  33. package/public/compare.html +1 -0
  34. package/public/dashboard.html +126 -28
  35. package/public/eval-scorecard.html +195 -0
  36. package/public/eval-scorecard.json +18 -0
  37. package/public/evaluations.html +168 -0
  38. package/public/index.html +143 -13
  39. package/public/numbers.html +3 -2
  40. package/public/pricing.html +143 -30
  41. package/public/whitepaper.html +189 -0
  42. package/scripts/a-plus-evidence-scorecard.js +303 -0
  43. package/scripts/activation-quickstart.js +1 -0
  44. package/scripts/agent-outcome-monitor.js +71 -1
  45. package/scripts/async-eval-observability.js +36 -11
  46. package/scripts/audit-trail.js +37 -1
  47. package/scripts/auto-promote-gates.js +149 -34
  48. package/scripts/billing.js +3 -1
  49. package/scripts/claude-feedback-sync.js +3 -2
  50. package/scripts/cli-feedback.js +13 -7
  51. package/scripts/colbert-style-maxsim.js +236 -0
  52. package/scripts/cross-encoder-reranker.js +359 -126
  53. package/scripts/dashboard-chat.js +350 -17
  54. package/scripts/document-intake.js +283 -7
  55. package/scripts/eval-quality-suite.js +204 -0
  56. package/scripts/feedback-aggregate.js +5 -2
  57. package/scripts/feedback-loop.js +359 -189
  58. package/scripts/feedback-paths.js +32 -13
  59. package/scripts/feedback-quality.js +53 -0
  60. package/scripts/filesystem-search.js +17 -7
  61. package/scripts/gates-engine.js +98 -4
  62. package/scripts/generate-case-study-outreach.js +253 -0
  63. package/scripts/generate-eval-scorecard.js +276 -0
  64. package/scripts/growth-campaigns.js +183 -0
  65. package/scripts/harness-tool-names.js +70 -0
  66. package/scripts/hook-runtime.js +10 -3
  67. package/scripts/jsonl-watcher.js +1 -0
  68. package/scripts/lesson-db.js +16 -5
  69. package/scripts/lesson-embedding-index.js +67 -20
  70. package/scripts/lesson-embedding-maintenance.js +177 -0
  71. package/scripts/lesson-inference.js +23 -4
  72. package/scripts/lesson-reranker.js +55 -9
  73. package/scripts/lesson-retrieval.js +375 -32
  74. package/scripts/lesson-search.js +48 -11
  75. package/scripts/llm-client.js +304 -15
  76. package/scripts/mcp-config.js +26 -5
  77. package/scripts/mcp-oauth.js +37 -2
  78. package/scripts/model-eval.js +308 -0
  79. package/scripts/model-tier-router.js +593 -0
  80. package/scripts/parallel-workflow-orchestrator.js +86 -22
  81. package/scripts/pragmatic-hybrid-search.js +379 -0
  82. package/scripts/published-cli.js +11 -1
  83. package/scripts/rag-document-pipeline.js +461 -0
  84. package/scripts/rag-structured-output.js +441 -0
  85. package/scripts/ragas-style-metrics.js +351 -0
  86. package/scripts/refresh-proof-pack.js +261 -0
  87. package/scripts/request-envelope.js +178 -0
  88. package/scripts/rerank-pipeline.js +370 -0
  89. package/scripts/rerank-quality-eval.js +155 -0
  90. package/scripts/retrieval-hybrid-ablation.js +120 -0
  91. package/scripts/retrieval-quality-tier.js +118 -0
  92. package/scripts/risk-scorer.js +144 -15
  93. package/scripts/secret-scanner.js +395 -4
  94. package/scripts/self-distill-agent.js +7 -1
  95. package/scripts/self-healing-check.js +25 -0
  96. package/scripts/skill-packs.js +183 -0
  97. package/scripts/slow-loop.js +72 -0
  98. package/scripts/statusline-links.js +1 -1
  99. package/scripts/statusline-local-stats.js +1 -1
  100. package/scripts/statusline.sh +8 -1
  101. package/scripts/telemetry-analytics.js +13 -1
  102. package/scripts/thumbgate-bench.js +13 -0
  103. package/scripts/thumbgate-search.js +98 -6
  104. package/scripts/tier-budget-guard.js +186 -0
  105. package/scripts/tool-kpi-tracker.js +124 -0
  106. package/scripts/tool-registry.js +95 -1
  107. package/scripts/vector-store.js +108 -4
  108. package/scripts/verify-marketing-pages-deployed.js +85 -3
  109. package/server.json +44 -0
  110. package/smithery.yaml +17 -0
  111. package/src/api/server.js +424 -99
@@ -4,7 +4,7 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Pricing — Enforcement that pays for itself | ThumbGate</title>
7
- <meta name="description" content="ThumbGate vs DIY prompts, platform hire, or GRC suite. Free evaluate, Pro $19/mo, $499 Diagnostic gate. Countable units that convert.">
7
+ <meta name="description" content="Choose ThumbGate by the value and scope of the agent risk: free evaluation, Pro for one operator, a $499 managed diagnostic for one workflow, or custom enterprise intake.">
8
8
  <link rel="canonical" href="__APP_ORIGIN__/pricing">
9
9
  <link rel="alternate" type="text/markdown" title="ThumbGate LLM context" href="__APP_ORIGIN__/llm-context.md">
10
10
  <meta property="og:title" content="ThumbGate Pricing — $499 Diagnostic · Pro $19/mo">
@@ -57,6 +57,19 @@
57
57
  .fit-card { border-top:3px solid var(--green); background:var(--card); padding:22px; }
58
58
  .fit-card h3 { margin:0 0 8px; }
59
59
  .fit-card p { margin:0; color:var(--muted); }
60
+ .value-equation { display:grid; grid-template-columns:1fr auto 1fr auto 1fr auto 1.3fr; gap:12px; align-items:stretch; margin-top:26px; }
61
+ .value-factor { display:grid; align-content:center; min-height:112px; border:1px solid var(--line); border-radius:14px; background:var(--card); padding:18px; }
62
+ .value-factor strong { font-size:1.06rem; }
63
+ .value-factor span { color:var(--muted); font-size:.83rem; }
64
+ .value-operator { display:grid; place-items:center; color:var(--green); font-size:1.7rem; font-weight:900; }
65
+ .value-result { border-color:var(--green); background:#e9f3ee; }
66
+ .segment-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:28px; }
67
+ .segment-card { display:flex; flex-direction:column; border:1px solid var(--line); border-radius:14px; background:var(--card); padding:22px; }
68
+ .segment-card.recommended { border:2px solid var(--green); }
69
+ .segment-card h3 { margin:8px 0 6px; }
70
+ .segment-card p { margin:0 0 14px; color:var(--muted); font-size:.92rem; }
71
+ .segment-card .fence { min-height:58px; margin-top:auto; color:var(--ink); font-size:.82rem; }
72
+ .segment-card .button { margin-top:14px; }
60
73
  .faq { border-top:1px solid var(--line); }
61
74
  .faq-item { border-bottom:1px solid var(--line); }
62
75
  .faq-q { width:100%; border:0; background:transparent; padding:18px 0; color:var(--ink); font:inherit; font-weight:800; text-align:left; cursor:pointer; }
@@ -65,22 +78,52 @@
65
78
  footer { border-top:1px solid var(--line); padding:28px 0; color:var(--muted); font-size:.85rem; }
66
79
  .footer-inner { display:flex; justify-content:space-between; gap:24px; }
67
80
  .footer-links { display:flex; gap:18px; }
68
- @media (max-width:820px) { .hero,.steps,.fit { grid-template-columns:1fr; } .hero { gap:34px; } .nav-links a:not(.nav-buy) { display:none; } }
81
+ @media (max-width:820px) { .hero,.steps,.fit,.segment-grid { grid-template-columns:1fr; } .value-equation { grid-template-columns:1fr; } .value-operator { min-height:24px; } .hero { gap:34px; } .nav-links a:not(.nav-buy) { display:none; } }
69
82
  </style>
70
83
  <script type="application/ld+json">
71
84
  {
72
85
  "@context": "https://schema.org",
73
- "@type": "Service",
74
- "name": "ThumbGate Enterprise Workflow Gate",
75
- "description": "A bounded implementation for one supported local AI-agent workflow: review, configured pre-action gate, regression test, and rollout and rollback proof.",
76
- "provider": { "@type": "Organization", "name": "ThumbGate", "url": "__APP_ORIGIN__/" },
77
- "offers": {
78
- "@type": "Offer",
79
- "price": "499",
80
- "priceCurrency": "USD",
81
- "url": "__APP_ORIGIN__/pricing#buy",
82
- "availability": "https://schema.org/InStock"
83
- }
86
+ "@graph": [
87
+ {
88
+ "@type": "Service",
89
+ "name": "ThumbGate Managed Workflow Diagnostic",
90
+ "description": "A bounded implementation for one supported local AI-agent workflow: review, configured pre-action gate, regression test, and rollout and rollback proof.",
91
+ "provider": { "@type": "Organization", "name": "ThumbGate", "url": "__APP_ORIGIN__/" },
92
+ "audience": { "@type": "BusinessAudience", "audienceType": "Engineering and platform teams with a repeated AI-agent failure" },
93
+ "offers": {
94
+ "@type": "Offer",
95
+ "name": "Managed workflow diagnostic",
96
+ "price": "499",
97
+ "priceCurrency": "USD",
98
+ "url": "__APP_ORIGIN__/pricing#buy",
99
+ "availability": "https://schema.org/InStock"
100
+ }
101
+ },
102
+ {
103
+ "@type": "SoftwareApplication",
104
+ "name": "ThumbGate Pro",
105
+ "applicationCategory": "DeveloperApplication",
106
+ "operatingSystem": "macOS, Linux, Windows",
107
+ "offers": [
108
+ {
109
+ "@type": "Offer",
110
+ "name": "ThumbGate Pro monthly",
111
+ "price": "19",
112
+ "priceCurrency": "USD",
113
+ "url": "__APP_ORIGIN__/checkout/pro?plan_id=pro",
114
+ "availability": "https://schema.org/InStock"
115
+ },
116
+ {
117
+ "@type": "Offer",
118
+ "name": "ThumbGate Pro annual",
119
+ "price": "149",
120
+ "priceCurrency": "USD",
121
+ "url": "__APP_ORIGIN__/checkout/pro?plan_id=pro",
122
+ "availability": "https://schema.org/InStock"
123
+ }
124
+ ]
125
+ }
126
+ ]
84
127
  }
85
128
  </script>
86
129
  <script type="application/ld+json">
@@ -109,8 +152,8 @@
109
152
  <div class="nav-links">
110
153
  <a href="/guide">Technical setup</a>
111
154
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Proof</a>
112
- <a class="nav-enterprise" href="#enterprise-gate" data-offer-link data-cta-id="pricing_nav_buy">Get Started · $499</a>
113
- <a class="nav-pro" href="/checkout/pro?utm_source=pricing&amp;utm_medium=nav&amp;utm_campaign=rally_style_gtm&amp;cta_id=pricing_nav_pro&amp;plan_id=pro" data-offer-link data-cta-id="pricing_nav_pro">Pro · $19/mo</a>
155
+ <a class="nav-enterprise" href="#enterprise-gate" data-offer-link data-cta-id="pricing_nav_buy" data-plan-id="sprint_diagnostic" data-value="499" data-segment="workflow_team">Get Started · $499</a>
156
+ <a class="nav-pro" href="/checkout/pro?utm_source=pricing&amp;utm_medium=nav&amp;utm_campaign=value_packaging_v1&amp;cta_id=pricing_nav_pro&amp;plan_id=pro" data-offer-link data-cta-id="pricing_nav_pro" data-plan-id="pro" data-value="19" data-segment="solo_operator">Pro · $19/mo</a>
114
157
  </div>
115
158
  </div>
116
159
  </nav>
@@ -139,29 +182,74 @@
139
182
  <input type="hidden" name="plan_id" value="sprint_diagnostic">
140
183
  <input type="hidden" name="utm_source" value="pricing">
141
184
  <input type="hidden" name="utm_medium" value="direct_checkout">
142
- <input type="hidden" name="utm_campaign" value="rally_style_gtm">
185
+ <input type="hidden" name="utm_campaign" value="value_packaging_v1">
186
+ <input id="pricing-buyer-segment" type="hidden" name="campaign_variant" value="workflow_team">
143
187
  <input type="hidden" name="cta_id" value="pricing_managed_gate_buy">
144
188
  <input type="hidden" name="cta_placement" value="pricing">
145
189
  <input type="hidden" name="landing_path" value="/pricing">
146
190
  <button class="button" type="submit">Get Started — $499 Diagnostic</button>
147
191
  </form>
148
192
  <p class="fine">Secure payment. We reply with scheduling and the workflow checklist.</p>
149
- <div class="boundary">Detected secret exfiltration and gate-process bypass attempts deny by default. Other destructive actions warn by default and deny when strict enforcement is enabled.</div>
193
+ <div class="boundary">Detected secret exfiltration denies by default: literal secrets, secret-file paths in uploads/pipes/redirections/command-substitution, secret env vars to network tools, scp/rsync/cloud CLI uploads of credential files, and common interpreter one-liners. Not a full network sandbox. Other destructive actions warn by default and deny when strict enforcement is enabled.</div>
150
194
  </aside>
151
195
  <aside class="pro-card" id="pro" aria-label="ThumbGate Pro">
152
196
  <div class="eyebrow">Self-serve</div>
153
197
  <div class="price">$19<span style="font-size:1rem;font-weight:700">/mo</span></div>
154
198
  <p class="price-note">Or $149/yr. Individual operators. Cancel anytime.</p>
155
- <a class="button" href="/checkout/pro?utm_source=pricing&amp;utm_medium=card&amp;utm_campaign=rally_style_gtm&amp;cta_id=pricing_pro_buy&amp;plan_id=pro" data-offer-link data-cta-id="pricing_pro_buy" style="width:100%;box-sizing:border-box">Start Pro — $19/mo</a>
199
+ <a class="button" href="/checkout/pro?utm_source=pricing&amp;utm_medium=card&amp;utm_campaign=value_packaging_v1&amp;cta_id=pricing_pro_buy&amp;plan_id=pro" data-offer-link data-cta-id="pricing_pro_buy" data-plan-id="pro" data-value="19" data-segment="solo_operator" style="width:100%;box-sizing:border-box">Start Pro</a>
156
200
  <p class="fine">Hosted checkout. Free local evaluate remains free after you subscribe.</p>
157
201
  </aside>
158
202
  </div>
159
203
  </div>
160
204
 
205
+ <section id="value">
206
+ <div class="eyebrow">Price from your exposure</div>
207
+ <h2>Value is the recovery work the next repeat does not create.</h2>
208
+ <p class="section-lede">Use your own incident history. ThumbGate does not claim a universal savings number.</p>
209
+ <div class="value-equation" role="img" aria-label="Repeat incidents multiplied by recovery hours and loaded hourly cost, plus downstream impact, equals avoidable recovery exposure">
210
+ <div class="value-factor"><strong>Repeat incidents</strong><span>per quarter</span></div>
211
+ <div class="value-operator">×</div>
212
+ <div class="value-factor"><strong>Recovery hours</strong><span>diagnosis, repair, review</span></div>
213
+ <div class="value-operator">×</div>
214
+ <div class="value-factor"><strong>Loaded hourly cost</strong><span>the people pulled into recovery</span></div>
215
+ <div class="value-operator">+</div>
216
+ <div class="value-factor value-result"><strong>Downstream impact</strong><span>delay, incident response, audit evidence</span></div>
217
+ </div>
218
+ </section>
219
+
220
+ <section id="segments">
221
+ <div class="eyebrow">Choose by buyer value</div>
222
+ <h2>One product. Three buying decisions.</h2>
223
+ <p class="section-lede">The fence is scope and service level—not an arbitrary discount.</p>
224
+ <div class="segment-grid">
225
+ <article class="segment-card">
226
+ <div class="eyebrow">Solo operator</div>
227
+ <h3>Evaluate free, then Pro</h3>
228
+ <p>Pro removes rule limits and adds personal recall, review, dashboard, and export workflows.</p>
229
+ <div class="fence"><strong>Fence:</strong> one operator, local-first, self-serve support. $19 monthly or $149 annual.</div>
230
+ <a class="button" href="/checkout/pro?utm_source=pricing&amp;utm_medium=segment_card&amp;utm_campaign=value_packaging_v1&amp;cta_id=pricing_segment_pro&amp;plan_id=pro" data-offer-link data-cta-id="pricing_segment_pro" data-plan-id="pro" data-value="19" data-segment="solo_operator">Choose Pro</a>
231
+ </article>
232
+ <article class="segment-card recommended">
233
+ <div class="eyebrow">Engineering or platform team</div>
234
+ <h3>Managed diagnostic</h3>
235
+ <p>Turn one expensive, repeated agent failure into a configured gate and a regression proof.</p>
236
+ <div class="fence"><strong>Fence:</strong> one supported local workflow, fixed scope, two-business-day delivery. $499 once.</div>
237
+ <a class="button" href="#enterprise-gate" data-offer-link data-cta-id="pricing_segment_diagnostic" data-plan-id="sprint_diagnostic" data-value="499" data-segment="workflow_team">Harden one workflow</a>
238
+ </article>
239
+ <article class="segment-card">
240
+ <div class="eyebrow">Regulated or multi-workflow team</div>
241
+ <h3>Enterprise service intake</h3>
242
+ <p>Scope approval boundaries, rollback evidence, and accountable rollout support after one workflow proves fit.</p>
243
+ <div class="fence"><strong>Fence:</strong> custom scope after intake. Hosted team features, SSO, and SIEM are not general availability.</div>
244
+ <a class="button" href="#enterprise-gate" data-offer-link data-cta-id="pricing_segment_enterprise" data-plan-id="enterprise_service" data-value="0" data-segment="regulated_team">Start with one diagnostic</a>
245
+ </article>
246
+ </div>
247
+ </section>
248
+
161
249
  <section>
162
250
  <div class="eyebrow">How ThumbGate stacks up</div>
163
251
  <h2>Make the alternative look expensive.</h2>
164
- <p class="section-lede">Same move as high-converting SaaS pricing: DIY prompts cost nothing and stop nothing; platform hire and GRC suites cost months.</p>
252
+ <p class="section-lede">DIY prompts look cheap but still consume model and review time. Platform hiring and GRC suites require larger commitments.</p>
165
253
  <div style="overflow-x:auto;margin-top:22px;border:1px solid var(--line);border-radius:14px;background:var(--card);">
166
254
  <table style="width:100%;border-collapse:collapse;font-size:.92rem;min-width:620px;">
167
255
  <thead>
@@ -176,24 +264,24 @@
176
264
  <tbody>
177
265
  <tr>
178
266
  <td style="padding:12px 14px;border-bottom:1px solid var(--line);color:var(--muted);">Monthly cost</td>
179
- <td style="padding:12px 14px;border-bottom:1px solid var(--line);">$0</td>
180
- <td style="padding:12px 14px;border-bottom:1px solid var(--line);">$15k+ loaded</td>
181
- <td style="padding:12px 14px;border-bottom:1px solid var(--line);">$$$$</td>
267
+ <td style="padding:12px 14px;border-bottom:1px solid var(--line);">Model + review time</td>
268
+ <td style="padding:12px 14px;border-bottom:1px solid var(--line);">Loaded engineering cost</td>
269
+ <td style="padding:12px 14px;border-bottom:1px solid var(--line);">Contract + implementation</td>
182
270
  <td style="padding:12px 14px;border-bottom:1px solid var(--line);font-weight:800;color:var(--green);">$0–$19 · $499 once</td>
183
271
  </tr>
184
272
  <tr>
185
273
  <td style="padding:12px 14px;border-bottom:1px solid var(--line);color:var(--muted);">Time to first gate</td>
186
- <td style="padding:12px 14px;border-bottom:1px solid var(--line);">Never reliable</td>
274
+ <td style="padding:12px 14px;border-bottom:1px solid var(--line);">Manual upkeep</td>
187
275
  <td style="padding:12px 14px;border-bottom:1px solid var(--line);">Weeks</td>
188
276
  <td style="padding:12px 14px;border-bottom:1px solid var(--line);">Months</td>
189
277
  <td style="padding:12px 14px;border-bottom:1px solid var(--line);font-weight:800;">Minutes after install / 2 business days managed</td>
190
278
  </tr>
191
279
  <tr>
192
280
  <td style="padding:12px 14px;color:var(--muted);">When agent “looks competent”</td>
193
- <td style="padding:12px 14px;">Ignores the prompt</td>
281
+ <td style="padding:12px 14px;">Prompt may be skipped</td>
194
282
  <td style="padding:12px 14px;">Custom glue</td>
195
283
  <td style="padding:12px 14px;">Gateway only</td>
196
- <td style="padding:12px 14px;font-weight:800;">Hard block at tool call</td>
284
+ <td style="padding:12px 14px;font-weight:800;">Configured gate at tool call</td>
197
285
  </tr>
198
286
  </tbody>
199
287
  </table>
@@ -254,13 +342,31 @@
254
342
  } catch (_) {}
255
343
  }
256
344
 
257
- function offerProps(ctaId, placement) {
258
- return { ctaId: ctaId, ctaPlacement: placement, planId: 'sprint_diagnostic', value: 499, currency: 'USD' };
345
+ function offerProps(ctaId, placement, planId, value, segment) {
346
+ return {
347
+ ctaId: ctaId,
348
+ ctaPlacement: placement,
349
+ planId: planId,
350
+ value: Number(value || 0),
351
+ currency: 'USD',
352
+ segment: segment,
353
+ experimentId: 'value_packaging_v1'
354
+ };
259
355
  }
260
356
 
261
357
  document.querySelectorAll('[data-offer-link]').forEach(function (link) {
262
358
  link.addEventListener('click', function () {
263
- const props = offerProps(link.dataset.ctaId || 'pricing_anchor', 'pricing_anchor');
359
+ if (link.getAttribute('href') === '#enterprise-gate') {
360
+ const buyerSegment = document.querySelector('#pricing-buyer-segment');
361
+ if (buyerSegment) buyerSegment.value = link.dataset.segment || 'workflow_team';
362
+ }
363
+ const props = offerProps(
364
+ link.dataset.ctaId || 'pricing_anchor',
365
+ 'pricing_anchor',
366
+ link.dataset.planId || 'unknown',
367
+ link.dataset.value || '0',
368
+ link.dataset.segment || 'unknown'
369
+ );
264
370
  window.plausible('pricing_cta_click', { props: props });
265
371
  sendFirstPartyTelemetry('cta_click', props);
266
372
  });
@@ -269,7 +375,14 @@
269
375
  const checkoutForm = document.querySelector('[data-primary-checkout]');
270
376
  if (checkoutForm) {
271
377
  checkoutForm.addEventListener('submit', function () {
272
- const props = offerProps('pricing_managed_gate_buy', 'pricing');
378
+ const buyerSegment = document.querySelector('#pricing-buyer-segment');
379
+ const props = offerProps(
380
+ 'pricing_managed_gate_buy',
381
+ 'pricing',
382
+ 'sprint_diagnostic',
383
+ 499,
384
+ buyerSegment ? buyerSegment.value : 'workflow_team'
385
+ );
273
386
  window.plausible('checkout_start', { props: props });
274
387
  sendFirstPartyTelemetry('checkout_start', props);
275
388
  });
@@ -283,7 +396,7 @@
283
396
  });
284
397
  });
285
398
 
286
- sendFirstPartyTelemetry('pricing_page_view', { landingPath: '/pricing' });
399
+ sendFirstPartyTelemetry('pricing_page_view', { landingPath: '/pricing', experimentId: 'value_packaging_v1' });
287
400
  </script>
288
401
  </body>
289
402
  </html>
@@ -0,0 +1,189 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta name="generator" content="ThumbGate">
7
+ <meta name="author" content="Igor Ganapolsky">
8
+ <title>How We Know ThumbGate Works — Evaluation White Paper</title>
9
+ <meta name="description" content="Evaluation white paper for ThumbGate: golden datasets, offline regression, tool-call correctness, latency, cost, human review, and production monitoring — with diagrams and re-run commands.">
10
+ <meta property="og:title" content="How We Know ThumbGate Works">
11
+ <meta property="og:description" content="Seven proof dimensions for a pre-action gate: goldens, offline tests, tool-call metrics, latency, cost, human review, production monitoring.">
12
+ <meta property="og:type" content="article">
13
+ <meta property="og:url" content="https://thumbgate.ai/whitepaper">
14
+ <link rel="canonical" href="https://thumbgate.ai/whitepaper">
15
+ <link rel="icon" type="image/png" href="/thumbgate-icon.png">
16
+ <script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
17
+ <script type="application/ld+json">
18
+ {
19
+ "@context": "https://schema.org",
20
+ "@type": "TechArticle",
21
+ "headline": "How We Know ThumbGate Works",
22
+ "description": "Buyer-facing evaluation white paper covering golden datasets, offline regression, tool-call correctness, latency, cost, human review, and production monitoring.",
23
+ "url": "https://thumbgate.ai/whitepaper",
24
+ "dateModified": "2026-07-29",
25
+ "author": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" }
26
+ }
27
+ </script>
28
+ <style>
29
+ :root {
30
+ --bg:#0b0f14; --panel:#111823; --border:#1e2a3a; --text:#e6edf3;
31
+ --muted:#8b98a5; --cyan:#39c5cf; --green:#3fb950; --red:#f85149;
32
+ }
33
+ * { margin:0; padding:0; box-sizing:border-box; }
34
+ body { background:var(--bg); color:var(--text); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif; line-height:1.65; }
35
+ nav { padding:1rem 2rem; border-bottom:1px solid var(--border); display:flex; gap:1.25rem; flex-wrap:wrap; align-items:center; }
36
+ nav a { color:var(--muted); text-decoration:none; font-size:0.9rem; }
37
+ nav a:hover { color:var(--cyan); }
38
+ nav .brand { color:var(--text); font-weight:700; }
39
+ .container { max-width:900px; margin:0 auto; padding:2.5rem 1.5rem 4rem; }
40
+ h1 { font-size:2rem; margin-bottom:0.4rem; }
41
+ h2 { font-size:1.3rem; margin:2.3rem 0 0.7rem; color:var(--cyan); }
42
+ h3 { font-size:1.05rem; margin:1.3rem 0 0.4rem; }
43
+ .subtitle { color:var(--muted); font-size:1.05rem; margin-bottom:1.25rem; }
44
+ p, li { margin:0.65rem 0; }
45
+ ul, ol { padding-left:1.3rem; }
46
+ table { width:100%; border-collapse:collapse; margin:1rem 0; font-size:0.92rem; }
47
+ th, td { text-align:left; padding:0.5rem 0.65rem; border-bottom:1px solid var(--border); vertical-align:top; }
48
+ th { color:var(--muted); }
49
+ code { background:#0d1420; border:1px solid var(--border); border-radius:4px; padding:0.1rem 0.35rem; font-size:0.86em; color:var(--cyan); }
50
+ pre { background:#0d1420; border:1px solid var(--border); border-radius:8px; padding:1rem; overflow-x:auto; font-size:0.85rem; margin:1rem 0; }
51
+ .panel { background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:1.1rem 1.25rem; margin:1rem 0; }
52
+ .rule { border-left:3px solid var(--cyan); padding:0.65rem 1rem; background:var(--panel); margin:1.25rem 0; font-weight:600; }
53
+ figure { background:var(--panel); border:1px solid var(--border); border-radius:12px; padding:1rem; margin:1rem 0; }
54
+ figure img { width:100%; height:auto; display:block; border-radius:8px; }
55
+ figcaption { color:var(--muted); font-size:0.88rem; margin-top:0.65rem; }
56
+ a.cta { display:inline-block; background:var(--cyan); color:#001018; font-weight:700; padding:0.7rem 1rem; border-radius:8px; text-decoration:none; margin:0.4rem 0.6rem 0.4rem 0; }
57
+ a.inline { color:var(--cyan); }
58
+ .footer-note { color:var(--muted); font-size:0.85rem; margin-top:2.5rem; text-align:center; }
59
+ .footer-note a { color:var(--cyan); text-decoration:none; }
60
+ .good { color:var(--green); } .bad { color:var(--red); }
61
+ </style>
62
+ </head>
63
+ <body>
64
+ <nav>
65
+ <a class="brand" href="/">ThumbGate</a>
66
+ <a href="/whitepaper">White paper</a>
67
+ <a href="/architecture">Architecture</a>
68
+ <a href="/eval-scorecard">Scorecard</a>
69
+ <a href="/evaluations">Evaluations</a>
70
+ <a href="/case-studies">Case studies</a>
71
+ <a href="/numbers">Numbers</a>
72
+ <a href="/pricing">Pricing</a>
73
+ </nav>
74
+ <main class="container">
75
+ <h1>How we know ThumbGate works</h1>
76
+ <p class="subtitle">Evaluation white paper · Updated 2026-07-29 · Source: <code>docs/HOW-WE-KNOW-IT-WORKS.md</code></p>
77
+
78
+ <div class="rule">Offline goldens + live monitors, not vibes. <code>unsafeActionRate</code> must stay <span class="good">0</span>.</div>
79
+
80
+ <p>ThumbGate is a local-first PreToolUse enforcement layer: feedback becomes lessons, repeated failures become gates, and risky tool calls are checked before execution. This page is the buyer-readable map from that claim to evidence.</p>
81
+
82
+ <figure>
83
+ <img src="/assets/diagrams/thumbgate-architecture.png" alt="ThumbGate system architecture diagram" width="1200" height="800" loading="eager">
84
+ <figcaption>System map: agents, hooks, gate engine, governance, security, feedback promotion. Full gallery on <a class="inline" href="/architecture">/architecture</a>.</figcaption>
85
+ </figure>
86
+
87
+ <h2>1. Golden evaluation dataset</h2>
88
+ <p>Committed suites encode expected allow / deny / warn decisions and reference answers — not aspirational prose.</p>
89
+ <table>
90
+ <tr><th>Pack</th><th>Path</th></tr>
91
+ <tr><td>ThumbGate Bench</td><td><code>bench/thumbgate-bench.json</code></td></tr>
92
+ <tr><td>Agent safety eval</td><td><code>config/evals/agent-safety-eval.json</code></td></tr>
93
+ <tr><td>Prompt eval</td><td><code>bench/prompt-eval-suite.json</code></td></tr>
94
+ <tr><td>Observability / grounding</td><td><code>bench/observability-eval-suite.json</code></td></tr>
95
+ <tr><td>ProgramBench smoke</td><td><code>bench/programbench-smoke.json</code></td></tr>
96
+ <tr><td>Shell golden tests</td><td><code>verification/golden_tests/**</code></td></tr>
97
+ </table>
98
+ <p>Live failures feed offline goldens through <code>scripts/llm-behavior-monitor.js</code> promotion candidates.</p>
99
+
100
+ <h2>2. Offline regression tests</h2>
101
+ <pre>npm test
102
+ npm run test:coverage
103
+ npm run prove:adapters
104
+ npm run prove:automation
105
+ npm run self-heal:check</pre>
106
+ <p>Observed results land in <a class="inline" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md">docs/VERIFICATION_EVIDENCE.md</a>. Releases also require Changesets, SemVer, and version sync.</p>
107
+
108
+ <h2>3. Tool-call correctness</h2>
109
+ <p>ThumbGate Bench measures whether the gate decides correctly on the actual tool call.</p>
110
+ <table>
111
+ <tr><th>Metric</th><th>Intent</th></tr>
112
+ <tr><td><code>taskSuccessRate</code></td><td>Decision matches expected</td></tr>
113
+ <tr><td><code>unsafeActionRate</code></td><td class="good">Must stay 0</td></tr>
114
+ <tr><td><code>capabilityRate</code></td><td>Safe work still allowed</td></tr>
115
+ <tr><td><code>falseBlockRate</code></td><td>No “block everything” cheat</td></tr>
116
+ <tr><td><code>replayStability</code></td><td>Same suite → same decisions</td></tr>
117
+ </table>
118
+ <p><a class="cta" href="/eval-scorecard">Open the live scorecard</a> <a class="inline" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/THUMBGATE_BENCH.md">Bench methodology →</a></p>
119
+
120
+ <h2>4. Latency</h2>
121
+ <figure>
122
+ <img src="/assets/diagrams/pre-action-gate-loop.svg" alt="Pre-action gate loop" width="900" height="360" loading="lazy">
123
+ <figcaption>Enforcement is local: deterministic match first, optional local embeddings, no cloud model on the critical path.</figcaption>
124
+ </figure>
125
+ <ul>
126
+ <li>No LLM on block/allow for the PreToolUse decision</li>
127
+ <li>Routing budgets: <code>lowLatencyBudgetMs: 300</code> for the fast classical lane</li>
128
+ <li>High-risk ambiguity can stop for human review instead of spending tokens</li>
129
+ </ul>
130
+
131
+ <h2>5. Cost</h2>
132
+ <ul>
133
+ <li>A blocked tool call does not spend the model round-trip</li>
134
+ <li><code>npx thumbgate cost</code> prints conservative $ saved from recorded blocks</li>
135
+ <li>Budget ledger + tokenomics guardrails prevent runaway spend</li>
136
+ <li>Methodology: <a class="inline" href="/agents-cost-savings">/agents-cost-savings</a> · inventory: <a class="inline" href="/numbers">/numbers</a></li>
137
+ </ul>
138
+
139
+ <h2>6. Human review</h2>
140
+ <ul>
141
+ <li>Classifier route <code>human_review</code> for credentials, customer data, regulated workflows, payments</li>
142
+ <li>Rubrics require verification evidence before “done”</li>
143
+ <li>Protected actions need scoped approval; break-glass is short-lived and narrow</li>
144
+ <li>Outbound social replies stay draft-only until a human publishes</li>
145
+ </ul>
146
+
147
+ <h2>7. Production monitoring</h2>
148
+ <figure>
149
+ <img src="/assets/diagrams/feedback-pipeline.png" alt="Feedback pipeline sequence diagram" width="1200" height="700" loading="lazy">
150
+ <figcaption>Capture → promote → block the repeat. Production monitors exist to catch silence (fail-open hooks) as well as loud breakage.</figcaption>
151
+ </figure>
152
+ <ul>
153
+ <li>Deploy health: Railway <code>/health</code> version + dashboard smoke</li>
154
+ <li><code>self-heal:check</code> — budget, tests, prove lanes must be HEALTHY</li>
155
+ <li>Gate stats + LLM behavior rates (wrong-tool, malformed, drift)</li>
156
+ <li>Published-artifact evasion jobs and silent-gate canaries</li>
157
+ </ul>
158
+
159
+ <h2>20-minute buyer audit</h2>
160
+ <pre>git clone https://github.com/IgorGanapolsky/ThumbGate
161
+ cd ThumbGate &amp;&amp; npm ci
162
+ npm test
163
+ npm run prove:adapters &amp;&amp; npm run prove:automation
164
+ npm run self-heal:check
165
+ npm run thumbgate:bench -- --json
166
+ curl -s https://thumbgate-production.up.railway.app/health</pre>
167
+
168
+ <h2>What this paper is not</h2>
169
+ <div class="panel">
170
+ <ul>
171
+ <li>Not external customer revenue proof — see commercial truth in the repo</li>
172
+ <li>Not a claim that free installs hard-block every risky command by default</li>
173
+ <li>Not a substitute for human review on payments, credentials, or regulated actions</li>
174
+ </ul>
175
+ </div>
176
+
177
+ <p>
178
+ <a class="cta" href="/case-studies">Case studies</a>
179
+ <a class="cta" href="/evaluations">ML evaluations</a>
180
+ <a class="cta" href="/architecture">Diagram gallery</a>
181
+ </p>
182
+
183
+ <p class="footer-note">
184
+ Longform source: <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/HOW-WE-KNOW-IT-WORKS.md">docs/HOW-WE-KNOW-IT-WORKS.md</a>.
185
+ Built by <a href="https://github.com/IgorGanapolsky">Igor Ganapolsky</a>.
186
+ </p>
187
+ </main>
188
+ </body>
189
+ </html>