thumbgate 1.16.20 → 1.16.22

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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.16.20",
4
- "description": "Self-improving agent governance: type thumbs-up or thumbs-down on any AI agent action. ThumbGate turns every mistake into a prevention rule and blocks the pattern from repeating. One thumbs-down, never again. 33 pre-action checks, budget enforcement, and self-protection for Claude Code, Cursor, Codex, Gemini CLI, and Amp.",
3
+ "version": "1.16.22",
4
+ "description": "ThumbGate self-improving agent governance: thumbs-up/down turns every mistake into a prevention rule and blocks repeat patterns. 33 pre-action checks, budget enforcement, and self-protection for Claude Code, Cursor, Codex, Gemini CLI, and Amp.",
5
5
  "homepage": "https://thumbgate-production.up.railway.app",
6
6
  "repository": {
7
7
  "type": "git",
@@ -28,7 +28,9 @@
28
28
  "adapters/gemini/function-declarations.json",
29
29
  "adapters/mcp/server-stdio.js",
30
30
  "adapters/opencode/opencode.json",
31
+ "bench/programbench-smoke.json",
31
32
  "bench/prompt-eval-suite.json",
33
+ "bench/thumbgate-bench.json",
32
34
  "bin/cli.js",
33
35
  "bin/postinstall.js",
34
36
  "config/",
@@ -56,7 +58,6 @@
56
58
  "scripts/ai-engineering-stack-guardrails.js",
57
59
  "scripts/ai-search-distribution.js",
58
60
  "scripts/analytics-window.js",
59
- "scripts/chatgpt-ads-readiness-pack.js",
60
61
  "scripts/autoresearch-runner.js",
61
62
  "scripts/async-job-runner.js",
62
63
  "scripts/audit-trail.js",
@@ -207,6 +208,7 @@
207
208
  "scripts/task-context-result.js",
208
209
  "scripts/telemetry-analytics.js",
209
210
  "scripts/thompson-sampling.js",
211
+ "scripts/thumbgate-bench.js",
210
212
  "scripts/thumbgate-search.js",
211
213
  "scripts/token-tco.js",
212
214
  "scripts/token-savings.js",
@@ -318,7 +320,7 @@
318
320
  "social:prospect:bluesky": "node scripts/social-bluesky-prospecting.js",
319
321
  "social:prospect:bluesky:dry": "node scripts/social-bluesky-prospecting.js --dry-run",
320
322
  "social:reply-publish:bluesky:dry": "node scripts/social-reply-monitor-bluesky.js --publish-approved --dry-run",
321
- "test": "npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && npm run test:post-everywhere-zernio-default && npm run test:zernio-canonical-pollers && npm run test:zernio-status && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:check-congruence && npm run test:tool-registry && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operational-dashboard && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:plan-gate && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:bot-detector && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:semantic-dedup && npm run test:fs-utils && npm run test:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test:lesson-canonical && npm run test:background-governance && npm run test:memory-migration && npm run test:prompt-dlp && npm run test:ephemeral-store && npm run test:agent-security && npm run test:skill-progressive && npm run test:per-step-scoring && npm run test:weekly-auto-post && npm run test:social-post-hourly && npm run test:social-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:budget && npm run test:quick-start && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator && npm run test:engagement-audit && npm run test:install-growth-automation && npm run test:publish-thumbgate-launch && npm run test:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-bot-guard && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:telemetry-tracked-link-slug && npm run test:prompt-eval && npm run test:demo-voiceover && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:numbers-page && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:competitive-positioning-marketing && npm run test:medium-weekly && npm run test:dashboard-deeplink-e2e && npm run test:public-package-parity && npm run test:token-savings-dashboard && npm run test:cursor-wiring && npm run test:pretooluse-injection && npm run test:recent-corrective-context && npm run test:durability-step && npm run test:mailer && npm run test:brand-assets && npm run test:enforcement-teeth && npm run test:bayes-optimal-gate && npm run test:swarm-coordinator && npm run test:session-report && npm run test:agent-reasoning-traces && npm run test:judge-reward && npm run test:llm-behavior-monitor && npm run test:prompting-os && npm run test:single-use-credential-gate && npm run test:structured-prompt-driven && npm run test:require-evidence-gate && npm run test:rule-validator && npm run test:bluesky-atproto && npm run test:social-reply-monitor-bluesky && npm run test:bluesky-delete-replies && npm run test:architect-kit-memory-bridge && npm run test:sonar-review-hotspots && npm run test:actionable-remediations && npm run test:gemini-embedding-policy && npm run test:agent-design-governance && npm run test:public-core-boundary",
323
+ "test": "npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && npm run test:post-everywhere-zernio-default && npm run test:zernio-canonical-pollers && npm run test:zernio-status && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:check-congruence && npm run test:tool-registry && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operational-dashboard && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:plan-gate && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:bot-detector && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:semantic-dedup && npm run test:fs-utils && npm run test:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test:lesson-canonical && npm run test:background-governance && npm run test:memory-migration && npm run test:prompt-dlp && npm run test:ephemeral-store && npm run test:agent-security && npm run test:skill-progressive && npm run test:per-step-scoring && npm run test:weekly-auto-post && npm run test:social-post-hourly && npm run test:social-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:budget && npm run test:quick-start && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator && npm run test:engagement-audit && npm run test:install-growth-automation && npm run test:publish-thumbgate-launch && npm run test:community-course-platform-launch-kit && npm run test:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:social-dedupe-cleanup && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-bot-guard && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:telemetry-tracked-link-slug && npm run test:prompt-eval && npm run test:demo-voiceover && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:numbers-page && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:competitive-positioning-marketing && npm run test:medium-weekly && npm run test:dashboard-deeplink-e2e && npm run test:public-package-parity && npm run test:token-savings-dashboard && npm run test:cursor-wiring && npm run test:pretooluse-injection && npm run test:recent-corrective-context && npm run test:durability-step && npm run test:mailer && npm run test:brand-assets && npm run test:enforcement-teeth && npm run test:bayes-optimal-gate && npm run test:swarm-coordinator && npm run test:session-report && npm run test:agent-reasoning-traces && npm run test:judge-reward && npm run test:llm-behavior-monitor && npm run test:prompting-os && npm run test:single-use-credential-gate && npm run test:structured-prompt-driven && npm run test:require-evidence-gate && npm run test:rule-validator && npm run test:bluesky-atproto && npm run test:social-reply-monitor-bluesky && npm run test:bluesky-delete-replies && npm run test:architect-kit-memory-bridge && npm run test:sonar-review-hotspots && npm run test:actionable-remediations && npm run test:gemini-embedding-policy && npm run test:agent-design-governance && npm run test:public-core-boundary",
322
324
  "test:swarm-coordinator": "node --test tests/swarm-coordinator.test.js",
323
325
  "test:session-report": "node --test tests/session-report.test.js",
324
326
  "test:agent-reasoning-traces": "node --test tests/agent-reasoning-traces.test.js tests/agent-stack-survival-audit.test.js",
@@ -407,7 +409,7 @@
407
409
  "test:training-export": "node --test tests/training-export.test.js tests/databricks-export.test.js",
408
410
  "test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js tests/changeset-check.test.js tests/release-notes.test.js tests/sonarcloud-workflow.test.js tests/package-boundary.test.js tests/public-package-boundary.test.js tests/revenue-observability-workflow.test.js",
409
411
  "test:operational-integrity": "node --test tests/operational-integrity.test.js tests/sync-branch-protection.test.js",
410
- "test:workflow": "node --test tests/workflow-contract.test.js tests/social-marketing-assets.test.js tests/social-pipeline.test.js tests/positioning-contract.test.js tests/docs-claim-hygiene.test.js tests/thumbgate-scope.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/gtm-revenue-loop.test.js tests/may-2026-revenue-machine.test.js tests/customer-discovery-sprint.test.js tests/revenue-pack-utils.test.js tests/aiventyx-marketplace-plan.test.js tests/cursor-marketplace-revenue-pack.test.js tests/codex-marketplace-revenue-pack.test.js tests/codex-plugin-revenue-pack.test.js tests/gemini-cli-demand-pack.test.js tests/roo-sunset-demand-pack.test.js tests/linkedin-workflow-hardening-pack.test.js tests/chatgpt-gpt-revenue-pack.test.js tests/mcp-directory-revenue-pack.test.js tests/autonomous-sales-agent.test.js tests/reddit-dm-workflow-hardening-pack.test.js tests/sales-pipeline.test.js tests/reddit-dm-outreach.test.js tests/github-outreach.test.js tests/enterprise-story.test.js tests/ralph-loop.test.js tests/ralph-mode-ci.test.js tests/guide-conversion-path.test.js tests/roo-sunset-marketing.test.js",
412
+ "test:workflow": "node --test tests/workflow-contract.test.js tests/social-marketing-assets.test.js tests/social-pipeline.test.js tests/positioning-contract.test.js tests/docs-claim-hygiene.test.js tests/thumbgate-scope.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/gtm-revenue-loop.test.js tests/may-2026-revenue-machine.test.js tests/customer-discovery-sprint.test.js tests/revenue-pack-utils.test.js tests/aiventyx-marketplace-plan.test.js tests/cursor-marketplace-revenue-pack.test.js tests/codex-marketplace-revenue-pack.test.js tests/codex-plugin-revenue-pack.test.js tests/gemini-cli-demand-pack.test.js tests/roo-sunset-demand-pack.test.js tests/linkedin-workflow-hardening-pack.test.js tests/chatgpt-gpt-revenue-pack.test.js tests/mcp-directory-revenue-pack.test.js tests/money-marketplace-distribution-pack.test.js tests/autonomous-sales-agent.test.js tests/reddit-dm-workflow-hardening-pack.test.js tests/sales-pipeline.test.js tests/reddit-dm-outreach.test.js tests/github-outreach.test.js tests/enterprise-story.test.js tests/ralph-loop.test.js tests/ralph-mode-ci.test.js tests/guide-conversion-path.test.js tests/roo-sunset-marketing.test.js",
411
413
  "test:sales-pipeline": "node --test tests/sales-pipeline.test.js",
412
414
  "test:billing": "node --test tests/billing.test.js tests/stripe-sync-product-images.test.js",
413
415
  "test:cli": "node --test tests/analytics-report.test.js tests/agent-design-governance.test.js tests/codex-self-heal.test.js tests/creator-campaigns.test.js tests/cli.test.js tests/codex-bridge-script.test.js tests/dependabot-changeset.test.js tests/dispatch-brief.test.js tests/feedback-normalize.test.js tests/install-mcp.test.js tests/pr-manager.test.js tests/pro-local-dashboard.test.js tests/published-cli.test.js tests/revenue-status.test.js tests/stripe-live-status.test.js",
@@ -422,7 +424,7 @@
422
424
  "test:workers": "npm --prefix workers ci && npm --prefix workers test",
423
425
  "test:evoskill": "node --test tests/evoskill.test.js",
424
426
  "test:gates-hardening": "node --test tests/gates-hardening.test.js",
425
- "test:social-analytics": "node --test tests/social-analytics.test.js",
427
+ "test:social-analytics": "node --test tests/social-analytics.test.js tests/load-env.test.js",
426
428
  "test:memalign": "node --test tests/memalign.test.js",
427
429
  "test:xmemory-lite": "node --test tests/xmemory-lite.test.js",
428
430
  "test:filesystem-search": "node --test tests/filesystem-search.test.js",
@@ -534,11 +536,14 @@
534
536
  "social:reconcile:campaign": "node scripts/social-analytics/reconcile-thumbgate-campaign.js",
535
537
  "social:sync:launch-assets": "node scripts/social-analytics/sync-launch-assets.js",
536
538
  "social:engagement:audit": "node scripts/social-analytics/engagement-audit.js",
539
+ "social:dedupe:cleanup": "node scripts/social-analytics/cleanup-zernio-duplicates.js",
537
540
  "test:install-growth-automation": "node --test tests/install-growth-automation.test.js",
538
541
  "test:publish-thumbgate-launch": "node --test tests/publish-thumbgate-launch.test.js",
542
+ "test:community-course-platform-launch-kit": "node --test tests/community-course-platform-launch-kit.test.js",
539
543
  "test:reconcile-thumbgate-campaign": "node --test tests/reconcile-thumbgate-campaign.test.js",
540
544
  "test:schedule-thumbgate-campaign": "node --test tests/schedule-thumbgate-campaign.test.js",
541
545
  "test:social-reply-monitor": "node --test tests/social-reply-monitor.test.js tests/reddit-monitor-launchd.test.js",
546
+ "test:social-dedupe-cleanup": "node --test tests/cleanup-zernio-duplicates.test.js",
542
547
  "test:bluesky-atproto": "node --test tests/bluesky-atproto.test.js",
543
548
  "test:social-reply-monitor-bluesky": "node --test tests/social-reply-monitor-bluesky.test.js tests/bluesky-monitor-launchd.test.js tests/social-bluesky-prospecting.test.js",
544
549
  "test:bluesky-delete-replies": "node --test tests/bluesky-delete-replies.test.js",
@@ -572,6 +577,9 @@
572
577
  "test:harness-selector": "node --test tests/harness-selector.test.js",
573
578
  "test:thumbgate-bench": "node --test tests/thumbgate-bench.test.js",
574
579
  "thumbgate:bench": "node scripts/thumbgate-bench.js",
580
+ "thumbgate:bench:programbench": "node scripts/thumbgate-bench.js --programbench-smoke",
581
+ "gtm:openclaw-kits": "node scripts/openclaw-agent-governance-kit.js --write-docs",
582
+ "test:openclaw-governance-kit": "node --test tests/openclaw-agent-governance-kit.test.js",
575
583
  "test:perplexity": "node --test tests/perplexity-client.test.js tests/perplexity-command-center.test.js tests/perplexity-adapter.test.js",
576
584
  "perplexity:visibility": "node scripts/perplexity-command-center.js visibility",
577
585
  "perplexity:leads": "node scripts/perplexity-command-center.js leads",
@@ -586,7 +594,7 @@
586
594
  "test:gate-eval": "node --test tests/gate-eval.test.js",
587
595
  "gate-eval:ci": "node scripts/gate-eval.js run",
588
596
  "test:ai-engineering-stack-guardrails": "node --test tests/ai-engineering-stack-guardrails.test.js",
589
- "test:high-roi": "node --test tests/high-roi.test.js tests/model-candidates.test.js tests/autonomous-workflow.test.js tests/high-roi-agent-workflows.test.js tests/code-graph-guardrails.test.js tests/proxy-pointer-rag-guardrails.test.js tests/rag-precision-guardrails.test.js tests/ai-engineering-stack-guardrails.test.js tests/long-running-agent-context-guardrails.test.js tests/reasoning-efficiency-guardrails.test.js tests/deepseek-v4-runtime-guardrails.test.js tests/upstream-contribution-engine.test.js tests/proactive-agent-eval-guardrails.test.js tests/reward-hacking-guardrails.test.js tests/chatgpt-ads-readiness-pack.test.js tests/oss-pr-opportunity-scout.test.js tests/agent-design-governance.test.js tests/gemini-embedding-policy.test.js",
597
+ "test:high-roi": "node --test tests/high-roi.test.js tests/model-candidates.test.js tests/autonomous-workflow.test.js tests/high-roi-agent-workflows.test.js tests/code-graph-guardrails.test.js tests/proxy-pointer-rag-guardrails.test.js tests/rag-precision-guardrails.test.js tests/ai-engineering-stack-guardrails.test.js tests/long-running-agent-context-guardrails.test.js tests/reasoning-efficiency-guardrails.test.js tests/deepseek-v4-runtime-guardrails.test.js tests/upstream-contribution-engine.test.js tests/proactive-agent-eval-guardrails.test.js tests/reward-hacking-guardrails.test.js tests/chatgpt-ads-readiness-pack.test.js tests/oss-pr-opportunity-scout.test.js tests/agent-design-governance.test.js tests/gemini-embedding-policy.test.js tests/openclaw-agent-governance-kit.test.js",
590
598
  "test:public-static-assets": "node --test tests/public-static-assets.test.js",
591
599
  "test:token-savings": "node --test tests/token-savings.test.js",
592
600
  "test:numbers-page": "node --test tests/numbers-page.test.js",
@@ -604,7 +612,7 @@
604
612
  "test:cursor-wiring": "node --test tests/cursor-wiring.test.js",
605
613
  "test:pretooluse-injection": "node --test tests/pretooluse-lesson-injection.test.js",
606
614
  "test:recent-corrective-context": "node --test tests/recent-corrective-actions-context.test.js",
607
- "test:mailer": "node --test tests/mailer.test.js tests/mailer-dns.test.js tests/billing-webhook-email.test.js",
615
+ "test:mailer": "node --test tests/mailer.test.js tests/mailer-dns.test.js tests/billing-webhook-email.test.js tests/revenue-email-dispatch.test.js",
608
616
  "test:brand-assets": "node --test tests/brand-assets.test.js",
609
617
  "test:enforcement-teeth": "node --test tests/enforcement-teeth.test.js",
610
618
  "test:bayes-optimal-gate": "node --test tests/bayes-optimal-gate.test.js",
@@ -242,7 +242,7 @@
242
242
 
243
243
  <div class="demo-banner" id="demoBanner" style="display:none;">
244
244
  <span>📊 <strong>Demo Mode</strong> — sample data. Pro unlocks your personal dashboard with search, DPO export, and gate analytics.</span>
245
- <a href="/go/pro?utm_source=dashboard_demo" rel="noopener" style="background:#b85c2d;color:#fff;padding:6px 14px;border-radius:8px;text-decoration:none;font-weight:700;white-space:nowrap;">Start 7-day free trial</a>
245
+ <a href="/go/pro?utm_source=dashboard_demo" rel="noopener" style="background:#b85c2d;color:#fff;padding:6px 14px;border-radius:8px;text-decoration:none;font-weight:700;white-space:nowrap;">Start Pro now</a>
246
246
  </div>
247
247
 
248
248
  <!-- STATS -->
package/public/guide.html CHANGED
@@ -352,9 +352,11 @@ npx thumbgate init --agent gemini</code></pre>
352
352
  <h2>Get Started</h2>
353
353
  <pre><code>npx thumbgate init</code></pre>
354
354
  <p>One command. Works with Claude Code, Cursor, Codex, Gemini, Amp, and OpenCode. Claude Code can also call Codex for review, adversarial review, and second-pass handoffs through the repo-local bridge plugin.</p>
355
- <a href="https://thumbgate-production.up.railway.app/checkout/pro?utm_source=guide&utm_medium=cta_button&utm_campaign=pro_pack" class="cta">Get Pro — $19/mo or $149/yr</a>
356
- <a href="https://thumbgate-production.up.railway.app/#workflow-sprint-intake" class="cta cta-secondary">Start a Workflow Hardening Sprint</a>
357
- <p style="color:var(--muted); font-size:0.85rem;">Free keeps local enforcement with 3 feedback captures total, 1 auto-promoted prevention rule, and built-in hook blocking. Pro is $19/mo or $149/yr for a personal local dashboard, recall, lesson search, and DPO export. Team rollout starts intake-first at $49/seat/mo with a 3-seat minimum for the hosted shared lesson DB, org dashboard, and generated review views.</p>
355
+ <a href="https://thumbgate.ai/checkout/pro?utm_source=guide&utm_medium=cta_button&utm_campaign=pro_pack" class="cta">Get Pro — $19/mo or $149/yr</a>
356
+ <a href="https://buy.stripe.com/00w14neyUcXA5pL5e33sI0e" class="cta cta-secondary">Pay $499 diagnostic</a>
357
+ <a href="https://buy.stripe.com/fZu9AT76saPsg4pbCr3sI0f" class="cta cta-secondary">Pay $1500 sprint</a>
358
+ <a href="https://thumbgate.ai/#workflow-sprint-intake" class="cta cta-secondary">Send workflow first</a>
359
+ <p style="color:var(--muted); font-size:0.85rem;">Free: 3 feedback captures, 1 prevention rule, hook blocking. Pro: dashboard, recall, lesson search, DPO export. Team: intake first, then $49/seat/mo with a 3-seat minimum.</p>
358
360
 
359
361
  </div>
360
362
  </body>
package/public/index.html CHANGED
@@ -1,20 +1,8 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
3
  <head>
4
- <!--
5
- ______ __
6
- / ____/___ ____ ___ ____ __ __/ /____ _____
7
- / / / __ \/ __ `__ \/ __ \/ / / / __/ _ \/ ___/
8
- / /___/ /_/ / / / / / / /_/ / /_/ / /_/ __/ /
9
- \____/\____/_/ /_/ /_/ .___/\__,_/\__/\___/_/
10
- /_/
11
- Created with Perplexity Computer
12
- https://www.perplexity.ai/computer
13
- -->
14
4
  <meta name="generator" content="ThumbGate">
15
5
  <meta name="author" content="Igor Ganapolsky">
16
- <meta property="og:see_also" content="https://www.perplexity.ai/computer">
17
- <link rel="author" href="https://www.perplexity.ai/computer">
18
6
 
19
7
  <meta charset="UTF-8">
20
8
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -32,7 +20,6 @@ __GOOGLE_SITE_VERIFICATION_META__
32
20
  <meta name="twitter:card" content="summary_large_image">
33
21
  <meta name="twitter:image" content="https://thumbgate-production.up.railway.app/og.png">
34
22
  <meta name="keywords" content="ThumbGate, thumbgate, AI agent orchestration, AI experience orchestration, agent enforcement layer, save LLM tokens, reduce Claude API cost, reduce OpenAI cost, AI agent token savings, prevent LLM retries, prevent hallucination retries, stop AI token waste, pre-action checks, agent governance, Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, workflow hardening, context engineering, AI authenticity, brand authenticity AI">
35
- <link rel="icon" type="image/png" href="/thumbgate-icon.png">
36
23
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
37
24
 
38
25
  <!-- Privacy-friendly analytics by Plausible -->
@@ -692,7 +679,23 @@ __GA_BOOTSTRAP__
692
679
  <p style="font-size:18px;color:var(--text-muted);max-width:720px;margin:0 auto 20px;line-height:1.6;">Every retry loop, every hallucinated import, every "let me try a different approach" — those are billable tokens on every LLM vendor's bill. ThumbGate is machine-speed pre-action defense: thumbs-down once, block that exact mistake on every future call, surface the next highest-ROI remediation, and show which agent surfaces are actually active before rollout. Across Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode — any MCP-compatible agent, forever, including fast-moving vibe coding workflows.</p>
693
680
  <p style="font-size:15px;color:var(--text-dim);max-width:760px;margin:0 auto 24px;line-height:1.6;">As desktop agents move into parallel sessions, terminals, and production workflows, ThumbGate checks the thing benchmarks miss: is this next action a known workflow, an open-ended agent, a costly fan-out, or a blind tool call with no way to verify it worked?</p>
694
681
 
695
- <!-- HERO PRICING CARD visible in first viewport so $19/mo and $149/yr never get buried -->
682
+ <div class="hero-paid-path" aria-label="Paid AI agent governance sprint checkout options">
683
+ <div>
684
+ <strong>Need buyer-ready proof today?</strong>
685
+ <span>For one repeated workflow failure, book the $499 diagnostic or $1500 sprint first. Same-day Workflow Teardown and smaller paid reads remain available when you need clear rules, examples, and pre-action checks before a larger scope.</span>
686
+ </div>
687
+ <div class="hero-paid-actions">
688
+ <a class="diagnostic" href="__SPRINT_DIAGNOSTIC_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_diagnostic_checkout_started',{ctaId:'hero_workflow_sprint_diagnostic_checkout',price:sprintDiagnosticPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:sprintDiagnosticPriceDollars});">Pay $499 diagnostic &rarr;</a>
689
+ <a class="sprint" href="__WORKFLOW_SPRINT_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_checkout_started',{ctaId:'hero_workflow_sprint_checkout',price:workflowSprintPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:workflowSprintPriceDollars});">Pay $1500 sprint &rarr;</a>
690
+ <a class="starter" title="First AI Agent Failure Rule" href="https://buy.stripe.com/4gM6oHgH2bTw4lH6i73sI0z" onclick="sendFirstPartyTelemetry('first_failure_rule_checkout_started',{ctaId:'hero_first_failure_rule_checkout',price:1});sendGa4Event('begin_checkout',{currency:'USD',value:1,items:[{item_id:'first_failure_rule',item_name:'First AI Agent Failure Rule'}]});">Pay $1 first rule &rarr;</a>
691
+ <a class="starter" title="AI Agent Failure Quick Read" href="https://buy.stripe.com/aFa8wPgH29Lo4lH35V3sI0w" onclick="sendFirstPartyTelemetry('quick_read_checkout_started',{ctaId:'hero_quick_read_checkout',price:19});">Pay $19 quick read &rarr;</a>
692
+ <a class="starter" href="https://buy.stripe.com/7sYfZhgH29LodWhdKz3sI0v" onclick="sendFirstPartyTelemetry('workflow_teardown_checkout_started',{ctaId:'hero_workflow_teardown_checkout'})">Pay $99 teardown</a>
693
+ <a class="intake" href="#workflow-sprint-intake" onclick="sendFirstPartyTelemetry('workflow_sprint_recovery_intake_clicked',{ctaId:'hero_workflow_sprint_recovery_intake'});sendGa4Event('generate_lead',{method:'workflow_sprint_recovery_intake'});">Send workflow first &rarr;</a>
694
+ <a class="starter" href="/guides/ai-agent-governance-sprint">See sprint scope &rarr;</a>
695
+ </div>
696
+ </div>
697
+
698
+ <!-- HERO PRICING CARD — secondary path after the proof-led paid offers -->
696
699
  <div id="pro-pitch" style="max-width:820px;margin:0 auto 32px;padding:24px 28px;background:linear-gradient(180deg,rgba(17,17,19,0.94) 0%,rgba(22,22,24,0.94) 100%);border:1px solid rgba(34,211,238,0.32);border-radius:20px;box-shadow:0 0 0 1px rgba(34,211,238,0.18),0 24px 64px rgba(0,0,0,0.35);text-align:left;">
697
700
  <div style="display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px;">
698
701
  <div>
@@ -720,20 +723,6 @@ __GA_BOOTSTRAP__
720
723
  <p style="margin:14px 0 0;font-size:11px;color:var(--text-muted);text-align:center;">Card required · billed today · cancel anytime · your rules and captures stay local. <a href="/go/install" style="color:var(--cyan);text-decoration:none;">Prefer free? Install CLI →</a></p>
721
724
  </div>
722
725
 
723
- <div class="hero-paid-path" aria-label="Paid AI agent governance sprint checkout options">
724
- <div>
725
- <strong>Need buyer-ready proof today?</strong>
726
- <span>Send one messy AI-agent workflow. We turn it into clear rules, examples, and pre-action checks, plus AI Agent Governance Sprint approval boundaries and rollback safety before it touches developer-machine risk surfaces.</span>
727
- </div>
728
- <div class="hero-paid-actions">
729
- <a class="starter" href="https://buy.stripe.com/7sY4gzgH24r49G17mb3sI0g" onclick="sendFirstPartyTelemetry('founder_workflow_diagnostic_checkout_started',{ctaId:'hero_founder_workflow_diagnostic_checkout',ctaPlacement:'hero_paid_path',planId:'team',offer:'founder_workflow_diagnostic',price:99});sendGa4Event('begin_checkout',{currency:'USD',value:99,items:[{item_id:'founder_workflow_diagnostic',item_name:'Founder Workflow Diagnostic'}]});">Pay $99 diagnostic &rarr;</a>
730
- <a class="diagnostic" href="__SPRINT_DIAGNOSTIC_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_diagnostic_checkout_started',{ctaId:'hero_workflow_sprint_diagnostic_checkout',ctaPlacement:'hero_paid_path',planId:'team',offer:'workflow_hardening_diagnostic',price:sprintDiagnosticPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:sprintDiagnosticPriceDollars,items:[{item_id:'workflow_hardening_diagnostic',item_name:'Workflow Hardening Diagnostic'}]});">Pay $499 diagnostic &rarr;</a>
731
- <a class="sprint" href="__WORKFLOW_SPRINT_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_checkout_started',{ctaId:'hero_workflow_sprint_checkout',ctaPlacement:'hero_paid_path',planId:'team',offer:'workflow_hardening_sprint',price:workflowSprintPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:workflowSprintPriceDollars,items:[{item_id:'workflow_hardening_sprint',item_name:'Workflow Hardening Sprint'}]});">Pay $1500 sprint &rarr;</a>
732
- <a class="intake" href="#workflow-sprint-intake" onclick="sendFirstPartyTelemetry('workflow_sprint_recovery_intake_clicked',{ctaId:'hero_workflow_sprint_recovery_intake',ctaPlacement:'hero_paid_path',planId:'team',offer:'workflow_hardening_sprint',reason:'not_ready_to_pay'});sendGa4Event('generate_lead',{currency:'USD',value:0,method:'workflow_sprint_recovery_intake'});">Send workflow first &rarr;</a>
733
- <a class="starter" href="/guides/ai-agent-governance-sprint">See sprint scope &rarr;</a>
734
- </div>
735
- </div>
736
-
737
726
  <a href="/dashboard" class="hero-dashboard-preview" style="display:block;max-width:620px;margin:0 auto 28px;background:linear-gradient(135deg,#0d1220 0%,#121a2e 100%);border:1px solid rgba(34,211,238,0.35);border-radius:12px;padding:20px 24px;box-shadow:0 0 48px rgba(34,211,238,0.15);font-family:var(--mono);text-align:left;text-decoration:none;color:inherit;" title="Open your live dashboard">
738
727
  <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-muted);">
739
728
  <span>Your dashboard · <span style="color:#eab308;background:rgba(234,179,8,0.1);padding:2px 6px;border-radius:3px;letter-spacing:0.04em;">Sample</span></span>
@@ -1309,7 +1298,7 @@ __GA_BOOTSTRAP__
1309
1298
  <!-- HOW IT WORKS -->
1310
1299
  <section class="how-it-works" id="how-it-works">
1311
1300
  <div class="container">
1312
- <div class="section-label">New in v1.16.20</div>
1301
+ <div class="section-label">New in v1.16.22</div>
1313
1302
  <h2 class="section-title">Three steps to stop repeated AI failures</h2>
1314
1303
  <div class="steps">
1315
1304
  <div class="step">
@@ -1573,11 +1562,31 @@ __GA_BOOTSTRAP__
1573
1562
  <a class="team-paid-link" data-workflow-sprint-link href="__WORKFLOW_SPRINT_CHECKOUT_URL__">Pay for sprint</a>
1574
1563
  </div>
1575
1564
  </div>
1565
+ <div class="team-paid-card">
1566
+ <div>
1567
+ <h4>Reliable AI Agent Governance Setup</h4>
1568
+ <p>Full ThumbGate-powered setup for Claude Code, Cursor, or Codex teams: npx install, custom prevention rules, audit trail, training, and proof reports. Optional ongoing rule management is $297/mo.</p>
1569
+ </div>
1570
+ <div>
1571
+ <div class="team-paid-price">$3,997</div>
1572
+ <a class="team-paid-link" href="#team-pilot-intake-form" onclick="sendFirstPartyTelemetry('governance_setup_intake_clicked',{ctaId:'team_governance_setup_intake',ctaPlacement:'team_paid_path',planId:'team',offer:'reliable_ai_agent_governance_setup',price:3997});sendGa4Event('generate_lead',{currency:'USD',value:3997,method:'governance_setup_intake'});">Request setup</a>
1573
+ </div>
1574
+ </div>
1575
+ <div class="team-paid-card">
1576
+ <div>
1577
+ <h4>OpenClaw Agent Governance Kit</h4>
1578
+ <p>Self-serve digital kit with ThumbGate prevention rules, OpenClaw-compatible workflow prompts, agent registry checklist, proof report template, and Zernio launch copy.</p>
1579
+ </div>
1580
+ <div>
1581
+ <div class="team-paid-price">$97</div>
1582
+ <a class="team-paid-link" href="https://buy.stripe.com/bJe14naiE9Lo7xT49Z3sI12" onclick="sendFirstPartyTelemetry('openclaw_governance_kit_checkout_started',{ctaId:'team_openclaw_governance_kit_checkout',ctaPlacement:'team_paid_path',planId:'digital_kit',offer:'openclaw_agent_governance_kit',price:97});sendGa4Event('begin_checkout',{currency:'USD',value:97,items:[{item_id:'openclaw_agent_governance_kit',item_name:'OpenClaw Agent Governance Kit'}]});">Buy kit</a>
1583
+ </div>
1584
+ </div>
1576
1585
  </div>
1577
1586
  <div class="team-intake-recovery" aria-label="Checkout recovery path for workflow sprint buyers">
1578
1587
  <div>
1579
1588
  <strong>Not ready to pay from a checkout page?</strong>
1580
- <span>Send the workflow first. We can qualify the blocker, confirm the proof plan, and route you to the $499 diagnostic or $1500 sprint only when the scope is real.</span>
1589
+ <span>Send the workflow first. We can qualify the blocker, confirm the proof plan, and route you to the $499 diagnostic, $1500 sprint, or $3,997 governance setup only when the scope is real.</span>
1581
1590
  </div>
1582
1591
  <a href="#team-pilot-intake-form" onclick="sendFirstPartyTelemetry('workflow_sprint_recovery_intake_clicked',{ctaId:'team_workflow_sprint_recovery_intake',ctaPlacement:'team_paid_path_recovery',planId:'team',offer:'workflow_hardening_sprint',reason:'checkout_abandon'});sendGa4Event('generate_lead',{currency:'USD',value:0,method:'workflow_sprint_recovery_intake'});">Send workflow first</a>
1583
1592
  </div>
@@ -1708,7 +1717,7 @@ __GA_BOOTSTRAP__
1708
1717
  <a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
1709
1718
  <a href="/blog">Blog</a>
1710
1719
  </div>
1711
- <span class="footer-copy">© 2026 Max Smith KDP LLC · MIT License · v1.16.20</span>
1720
+ <span class="footer-copy">© 2026 Max Smith KDP LLC · MIT License · v1.16.22</span>
1712
1721
  </div>
1713
1722
  </footer>
1714
1723
 
@@ -2011,6 +2020,9 @@ function copyInstall(el) {
2011
2020
  { selector: '#pro-checkout-link', ctaId: 'pricing_pro_trial', ctaPlacement: 'pricing', planId: 'pro' },
2012
2021
  { selector: '.price-card.pro .btn-pro', ctaId: 'pricing_pro_monthly', ctaPlacement: 'pricing', planId: 'pro' },
2013
2022
  { selector: '.hero-actions .btn-pro-page', ctaId: 'hero_go_pro', ctaPlacement: 'hero', planId: 'pro' },
2023
+ { selector: '.hero-paid-actions .diagnostic', ctaId: 'hero_workflow_sprint_diagnostic_checkout', ctaPlacement: 'hero_paid_path', planId: 'team' },
2024
+ { selector: '.hero-paid-actions .sprint', ctaId: 'hero_workflow_sprint_checkout', ctaPlacement: 'hero_paid_path', planId: 'team' },
2025
+ { selector: '.hero-paid-actions .intake', ctaId: 'hero_workflow_sprint_recovery_intake', ctaPlacement: 'hero_paid_path', planId: 'team' },
2014
2026
  { selector: '.sticky-cta .btn-pro', ctaId: 'sticky_go_pro', ctaPlacement: 'sticky_cta', planId: 'pro' },
2015
2027
  { selector: '.price-card.team .btn-team', ctaId: 'team_workflow_sprint', ctaPlacement: 'pricing', planId: 'team' },
2016
2028
  { selector: '#team-pilot-intake-form', ctaId: 'workflow_sprint_intake', ctaPlacement: 'team_visible_intake', planId: 'team' }
@@ -845,7 +845,7 @@ function renderUpgradeWall(containerId) {
845
845
  '<div style="font-size:20px;font-weight:700;color:#fff;margin-bottom:8px;">Unlock your full lessons</div>' +
846
846
  '<div style="color:#aaa;margin-bottom:16px;">Pro shows your real prevention rules, timeline, and insights.</div>' +
847
847
  '<a href="/go/pro?utm_source=lessons" rel="noopener" ' +
848
- 'style="display:inline-block;background:#b85c2d;color:#fff;padding:10px 24px;border-radius:8px;text-decoration:none;font-weight:700;">Start 7-day free trial</a>' +
848
+ 'style="display:inline-block;background:#b85c2d;color:#fff;padding:10px 24px;border-radius:8px;text-decoration:none;font-weight:700;">Start Pro now</a>' +
849
849
  '<div style="color:#666;font-size:12px;margin-top:10px;">npx thumbgate pro --activate --key=YOUR_KEY</div>' +
850
850
  '</div></div>';
851
851
  el.appendChild(wall);
@@ -6,9 +6,9 @@
6
6
  <meta name="generator" content="ThumbGate">
7
7
  <meta name="author" content="Igor Ganapolsky">
8
8
  <title>ThumbGate — The Numbers | First-Party Data Snapshot</title>
9
- <meta name="description" content="ThumbGate's generated first-party operational snapshot: active pre-action checks, AI agent actions blocked, estimated LLM tokens and dollars saved, and the Bayes error rate of the intervention scorer.">
9
+ <meta name="description" content="ThumbGate's generated first-party operational snapshot: configured pre-action checks, recorded block/warn events, estimated LLM token savings when events exist, and scorer calibration when the sample supports it.">
10
10
  <meta property="og:title" content="ThumbGate — The Numbers">
11
- <meta property="og:description" content="Generated first-party operational metrics: gates, blocks, token savings, and scorer calibration.">
11
+ <meta property="og:description" content="Generated first-party operational snapshot: configured gates, recorded interventions, and explicit zero-evidence caveats.">
12
12
  <meta property="og:type" content="website">
13
13
  <meta property="og:url" content="https://thumbgate-production.up.railway.app/numbers">
14
14
  <meta name="twitter:card" content="summary_large_image">
@@ -25,9 +25,9 @@
25
25
  "alternateName": "thumbgate",
26
26
  "applicationCategory": "DeveloperApplication",
27
27
  "operatingSystem": "Cross-platform, Node.js >=18.18.0",
28
- "softwareVersion": "1.16.20",
28
+ "softwareVersion": "1.16.22",
29
29
  "url": "https://thumbgate-production.up.railway.app/numbers",
30
- "dateModified": "2026-05-05",
30
+ "dateModified": "2026-05-07",
31
31
  "creator": {
32
32
  "@type": "Person",
33
33
  "name": "Igor Ganapolsky",
@@ -44,8 +44,8 @@
44
44
  {
45
45
  "@context": "https://schema.org",
46
46
  "@type": "Dataset",
47
- "name": "ThumbGate Live Operational Metrics",
48
- "description": "First-party operational metrics from the ThumbGate pre-action check runtime: active checks, blocked AI agent actions, estimated token savings, and Bayes error rate of the intervention scorer.",
47
+ "name": "ThumbGate Operational Snapshot",
48
+ "description": "First-party operational snapshot from the ThumbGate pre-action check runtime: configured checks, recorded block/warn events, estimated token savings from recorded blocks, and Bayes error rate when the sample supports it.",
49
49
  "url": "https://thumbgate-production.up.railway.app/numbers",
50
50
  "license": "https://opensource.org/licenses/MIT",
51
51
  "creator": {
@@ -57,8 +57,8 @@
57
57
  "https://www.linkedin.com/in/igorganapolsky"
58
58
  ]
59
59
  },
60
- "dateModified": "2026-05-05",
61
- "datePublished": "2026-05-05",
60
+ "dateModified": "2026-05-07",
61
+ "datePublished": "2026-05-07",
62
62
  "keywords": [
63
63
  "AI agent gates",
64
64
  "LLM token savings",
@@ -69,8 +69,8 @@
69
69
  "variableMeasured": [
70
70
  {
71
71
  "@type": "PropertyValue",
72
- "name": "active_gates",
73
- "value": 37
72
+ "name": "configured_gates",
73
+ "value": 36
74
74
  },
75
75
  {
76
76
  "@type": "PropertyValue",
@@ -101,7 +101,7 @@
101
101
  {
102
102
  "@type": "PropertyValue",
103
103
  "name": "bayes_error_rate",
104
- "value": 0
104
+ "value": null
105
105
  }
106
106
  ]
107
107
  }
@@ -119,6 +119,8 @@
119
119
  --cyan: #22d3ee;
120
120
  --green: #34d399;
121
121
  --amber: #fbbf24;
122
+ --amber-soft: rgba(251, 191, 36, 0.1);
123
+ --amber-line: rgba(251, 191, 36, 0.34);
122
124
  }
123
125
  body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--text); line-height: 1.6; }
124
126
  nav { padding: 1rem 2rem; border-bottom: 1px solid var(--border); display: flex; gap: 1.5rem; align-items: center; }
@@ -140,6 +142,16 @@
140
142
  font-weight: 600;
141
143
  margin-bottom: 2.5rem;
142
144
  }
145
+ .truth-note {
146
+ background: var(--amber-soft);
147
+ border: 1px solid var(--amber-line);
148
+ border-radius: 12px;
149
+ color: #fde68a;
150
+ padding: 16px 18px;
151
+ margin: 0 0 2.5rem;
152
+ font-size: 0.95rem;
153
+ }
154
+ .truth-note strong { color: #fff3bd; }
143
155
  .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px; margin: 1.5rem 0; }
144
156
  .stat-card {
145
157
  background: var(--bg-card);
@@ -189,33 +201,34 @@
189
201
 
190
202
  <main class="container">
191
203
  <h1>The Numbers</h1>
192
- <p class="subtitle">Generated first-party operational data from the ThumbGate runtime. No surveys or projections — this page is a release-time snapshot produced by the same local scripts that power the CLI and dashboard.</p>
193
- <div class="freshness">Updated: 2026-05-05 · Version 1.16.20</div>
204
+ <p class="subtitle">Generated first-party operational snapshot from the ThumbGate runtime. This is not customer traction, install volume, revenue, or proof that a configured gate has fired.</p>
205
+ <div class="freshness">Updated: 2026-05-07 · Version 1.16.22</div>
206
+ <div class="truth-note"><strong>Read this first:</strong> configured checks are inventory. Recorded blocks and warnings are usage evidence. This snapshot currently reports 0 recorded hard-block event(s) and 0 recorded warning event(s).</div>
194
207
 
195
208
  <h2>Gate enforcement</h2>
196
209
  <div class="stats-grid">
197
210
  <div class="stat-card">
198
- <div class="stat-label">Active gates</div>
199
- <div class="stat-value">37</div>
200
- <div class="stat-sub">36 manual · 1 auto-promoted</div>
211
+ <div class="stat-label">Configured checks</div>
212
+ <div class="stat-value">36</div>
213
+ <div class="stat-sub">36 shipped defaults · 0 auto-promoted; inventory, not usage</div>
201
214
  <a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/gate-stats.js">source: gate-stats.js</a>
202
215
  </div>
203
216
  <div class="stat-card">
204
217
  <div class="stat-label">Actions blocked</div>
205
218
  <div class="stat-value">0</div>
206
- <div class="stat-sub">repeat AI mistakes prevented at the gate</div>
219
+ <div class="stat-sub">no recorded hard-block events in this snapshot</div>
207
220
  <a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/gate-stats.js">source: gate-stats.js</a>
208
221
  </div>
209
222
  <div class="stat-card">
210
223
  <div class="stat-label">Actions warned</div>
211
224
  <div class="stat-value">0</div>
212
- <div class="stat-sub">soft interventions; not blocks</div>
225
+ <div class="stat-sub">no recorded soft-warning events in this snapshot</div>
213
226
  <a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/gate-stats.js">source: gate-stats.js</a>
214
227
  </div>
215
228
  <div class="stat-card">
216
- <div class="stat-label">Top blocked gate</div>
217
- <div class="stat-value" style="font-size:1.1rem;">local-only-git-writes (0 blocks)</div>
218
- <div class="stat-sub">highest-occurrence prevention rule</div>
229
+ <div class="stat-label">Top recorded blocker</div>
230
+ <div class="stat-value" style="font-size:1.1rem;">No recorded blocker yet</div>
231
+ <div class="stat-sub">top blocker appears only after at least one recorded block</div>
219
232
  <a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/gate-stats.js">source: gate-stats.js</a>
220
233
  </div>
221
234
  </div>
@@ -225,25 +238,25 @@
225
238
  <div class="stat-card">
226
239
  <div class="stat-label">Estimated hours saved</div>
227
240
  <div class="stat-value">0.0</div>
228
- <div class="stat-sub">~15 min per blocked mistake × blocks+warns</div>
241
+ <div class="stat-sub">0 because no block/warn events are recorded</div>
229
242
  <a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/gate-stats.js">source: gate-stats.js</a>
230
243
  </div>
231
244
  <div class="stat-card">
232
245
  <div class="stat-label">Estimated LLM dollars saved</div>
233
246
  <div class="stat-value">$0.00</div>
234
- <div class="stat-sub">blended Sonnet/Opus/Haiku 80/15/5 mix</div>
247
+ <div class="stat-sub">0 because no recorded block events feed this estimate</div>
235
248
  <a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/token-savings.js">source: token-savings.js</a>
236
249
  </div>
237
250
  <div class="stat-card">
238
251
  <div class="stat-label">Tokens not spent</div>
239
252
  <div class="stat-value">0</div>
240
- <div class="stat-sub">2,000 input + 600 output per block, conservative</div>
253
+ <div class="stat-sub">0 because no recorded block events feed this estimate</div>
241
254
  <a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/token-savings.js">source: token-savings.js</a>
242
255
  </div>
243
256
  <div class="stat-card">
244
257
  <div class="stat-label">Scorer Bayes error</div>
245
- <div class="stat-value">0.0%</div>
246
- <div class="stat-sub">irreducible error given current feature set</div>
258
+ <div class="stat-value">n/a</div>
259
+ <div class="stat-sub">needs both safe and harmful feedback sequences</div>
247
260
  <a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/bayes-optimal-gate.js">source: bayes-optimal-gate.js</a>
248
261
  </div>
249
262
  </div>
@@ -252,11 +265,11 @@
252
265
  <div class="method">
253
266
  <p><strong>Where the numbers come from.</strong> This page is regenerated from local scripts — no survey data, no hand-edited figures, no third-party attribution. Every number on this page is produced by code in the public <a href="https://github.com/IgorGanapolsky/ThumbGate">ThumbGate repo</a>.</p>
254
267
  <ul>
255
- <li><strong>Active checks</strong> — union of shipped default rules and the auto-promotion ledger (auto).</li>
256
- <li><strong>Actions blocked/warned</strong> — sum of <code>occurrences</code> across gates with the corresponding action.</li>
257
- <li><strong>Hours saved</strong> — conservative 15-minute/incident estimate for debugging a repeated AI mistake × (blocks + warns).</li>
258
- <li><strong>Dollars saved</strong> — blended per-call token estimate (2k input + 600 output) × blocks × 2026-04-15 Anthropic + OpenAI list prices. See <code>scripts/token-savings.js</code> for the full price snapshot.</li>
259
- <li><strong>Bayes error rate</strong> — irreducible classifier error of the current risk scorer given its feature set. High values mean "add features, don't tune thresholds."</li>
268
+ <li><strong>Configured checks</strong> — union of shipped default rules and the auto-promotion ledger. This is inventory, not proof that the check fired.</li>
269
+ <li><strong>Actions blocked/warned</strong> — recorded intervention counts from gate occurrence data. These are the evidence counters.</li>
270
+ <li><strong>Hours saved</strong> — conservative 15-minute/incident estimate, shown only as a function of recorded block/warn counts.</li>
271
+ <li><strong>Dollars saved</strong> — blended per-call token estimate (2k input + 600 output) × recorded blocks × 2026-04-15 Anthropic + OpenAI list prices. See <code>scripts/token-savings.js</code> for the full price snapshot.</li>
272
+ <li><strong>Bayes error rate</strong> — shown only when the feedback sample contains both safe and harmful outcomes. One-class samples are reported as n/a.</li>
260
273
  </ul>
261
274
  <p style="margin-top:12px;">Last auto-promotion: none. Regenerated on every release via <code>npm run numbers:generate</code> and on a weekly cadence.</p>
262
275
  </div>
@@ -264,7 +277,7 @@
264
277
  <div class="cta">
265
278
  <a href="https://www.npmjs.com/package/thumbgate">Install ThumbGate — npx thumbgate init</a>
266
279
  <div class="footer-note">Prefer the raw feed? See <a href="https://github.com/IgorGanapolsky/ThumbGate">GitHub</a> or run <code>npm run gate:stats</code> locally.</div>
267
- <div class="footer-note">Generated at 2026-05-05T14:49:47.056Z UTC.</div>
280
+ <div class="footer-note">Generated at 2026-05-07T14:59:51.816Z UTC.</div>
268
281
  </div>
269
282
  </main>
270
283
  </body>