thumbgate 1.27.19 → 1.27.20

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 (87) hide show
  1. package/.claude/commands/dashboard.md +15 -0
  2. package/.claude/commands/thumbgate-blocked.md +27 -0
  3. package/.claude/commands/thumbgate-dashboard.md +15 -0
  4. package/.claude/commands/thumbgate-doctor.md +30 -0
  5. package/.claude/commands/thumbgate-guard.md +36 -0
  6. package/.claude/commands/thumbgate-protect.md +30 -0
  7. package/.claude/commands/thumbgate-rules.md +30 -0
  8. package/.claude-plugin/plugin.json +1 -1
  9. package/.well-known/mcp/server-card.json +1 -1
  10. package/README.md +0 -3
  11. package/adapters/claude/.mcp.json +2 -2
  12. package/adapters/gcp/dfcx-webhook-gate.js +295 -0
  13. package/adapters/letta/README.md +41 -0
  14. package/adapters/letta/thumbgate-letta-adapter.js +133 -0
  15. package/adapters/mcp/server-stdio.js +1 -1
  16. package/adapters/opencode/opencode.json +1 -1
  17. package/adapters/policy-engine/ethicore-guardian-client.js +68 -0
  18. package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +260 -0
  19. package/bench/observability-eval-suite.json +26 -0
  20. package/bin/cli.js +27 -1
  21. package/bin/dashboard-cli.js +7 -0
  22. package/bin/postinstall.js +14 -23
  23. package/commands/dashboard.md +15 -0
  24. package/commands/thumbgate-dashboard.md +15 -0
  25. package/package.json +225 -100
  26. package/public/about.html +162 -0
  27. package/public/agent-manager.html +179 -0
  28. package/public/agents-cost-savings.html +153 -0
  29. package/public/ai-malpractice-prevention.html +818 -0
  30. package/public/assets/brand/github-social-preview.png +0 -0
  31. package/public/assets/brand/thumbgate-icon-512.png +0 -0
  32. package/public/assets/brand/thumbgate-icon-pro-512.png +0 -0
  33. package/public/assets/brand/thumbgate-icon-team-512.png +0 -0
  34. package/public/assets/brand/thumbgate-logo-1200x360.png +0 -0
  35. package/public/assets/brand/thumbgate-logo-transparent.svg +28 -0
  36. package/public/assets/brand/thumbgate-mark-inline-v3.svg +18 -0
  37. package/public/assets/brand/thumbgate-mark-pro.svg +23 -0
  38. package/public/assets/brand/thumbgate-mark-team.svg +26 -0
  39. package/public/assets/brand/thumbgate-mark.svg +21 -0
  40. package/public/assets/brand/thumbgate-wordmark.svg +20 -0
  41. package/public/assets/claude-thumbgate-statusbar.svg +8 -0
  42. package/public/assets/codex-thumbgate-statusbar-test.svg +9 -0
  43. package/public/assets/legal-intake-control-flow.svg +66 -0
  44. package/public/brand/thumbgate-mark.svg +19 -0
  45. package/public/brand/thumbgate-og.svg +16 -0
  46. package/public/chatgpt-app.html +330 -0
  47. package/public/codex-enterprise.html +123 -0
  48. package/public/diagnostic.html +345 -0
  49. package/public/index.html +2 -2
  50. package/public/install.html +193 -0
  51. package/public/js/buyer-intent.js +672 -0
  52. package/public/numbers.html +2 -2
  53. package/public/pricing.html +399 -0
  54. package/scripts/action-receipts.js +324 -0
  55. package/scripts/activation-quickstart.js +187 -0
  56. package/scripts/agent-operations-planner.js +621 -0
  57. package/scripts/ai-component-inventory.js +367 -0
  58. package/scripts/async-eval-observability.js +236 -0
  59. package/scripts/audit.js +65 -0
  60. package/scripts/aws-blocks-guardrails.js +272 -0
  61. package/scripts/classifier-routing.js +130 -0
  62. package/scripts/dashboard-chat.js +332 -0
  63. package/scripts/feedback-aggregate.js +281 -0
  64. package/scripts/feedback-sanitizer.js +105 -0
  65. package/scripts/hook-stop-anti-claim.js +301 -0
  66. package/scripts/install-shim.js +87 -0
  67. package/scripts/mcp-oauth.js +293 -0
  68. package/scripts/noop-detect.js +285 -0
  69. package/scripts/parallel-workflow-orchestrator.js +293 -0
  70. package/scripts/plan-gate.js +243 -0
  71. package/scripts/plausible-domain-config.js +99 -0
  72. package/scripts/qa-scenario-planner.js +136 -0
  73. package/scripts/repeat-metric.js +137 -0
  74. package/scripts/secret-fixture-tokens.js +61 -0
  75. package/scripts/secret-redaction.js +166 -0
  76. package/scripts/self-harness-optimizer.js +141 -0
  77. package/scripts/self-healing-check.js +193 -0
  78. package/scripts/self-protection.js +90 -0
  79. package/scripts/silent-failure-cluster.js +531 -0
  80. package/scripts/statusline-cache-read.js +57 -0
  81. package/scripts/sync-telemetry-from-prod.js +374 -0
  82. package/scripts/tool-contract-validator.js +76 -0
  83. package/scripts/trajectory-scorer.js +63 -0
  84. package/scripts/verify-marketing-pages-deployed.js +212 -0
  85. package/scripts/visitor-journey.js +172 -0
  86. package/.claude-plugin/marketplace.json +0 -85
  87. package/adapters/chatgpt/openapi.yaml +0 -1707
@@ -0,0 +1,123 @@
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
+ <title>ThumbGate for Codex in the Enterprise — Governance for OpenAI Codex (Dell-Distributed or Self-Hosted)</title>
7
+ <script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
8
+ <meta name="description" content="OpenAI and Dell are distributing Codex into the enterprise. Codex in production needs a governance layer — capture every agent decision, promote repeat failures to PreToolUse gates, ship the audit trail procurement requires.">
9
+ <meta property="og:title" content="ThumbGate for Codex in the Enterprise">
10
+ <meta property="og:description" content="Dell-distributed or self-hosted, Codex agents repeat the same mistakes. ThumbGate is the governance layer underneath — capture, promote, audit.">
11
+ <meta property="og:type" content="article">
12
+ <meta property="og:image" content="https://thumbgate.ai/og.png">
13
+ <link rel="canonical" href="https://thumbgate.ai/codex-enterprise">
14
+ <script type="application/ld+json">
15
+ {
16
+ "@context": "https://schema.org",
17
+ "@type": "TechArticle",
18
+ "headline": "ThumbGate for Codex in the Enterprise",
19
+ "description": "Dell-distributed or self-hosted, Codex agents in production need a governance layer. ThumbGate captures every agent decision, promotes repeat failures to PreToolUse gates, and ships the audit trail enterprise procurement requires.",
20
+ "datePublished": "2026-05-20",
21
+ "dateModified": "2026-05-20",
22
+ "author": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" },
23
+ "publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate.ai" },
24
+ "about": [
25
+ { "@type": "Thing", "name": "OpenAI Codex" },
26
+ { "@type": "Thing", "name": "Dell Codex Enterprise" },
27
+ { "@type": "Thing", "name": "Agent Governance" },
28
+ { "@type": "Thing", "name": "PreToolUse Gates" }
29
+ ]
30
+ }
31
+ </script>
32
+ <style>
33
+ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
34
+ :root { --bg:#0a0a0b; --card:#161618; --border:#222225; --text:#e8e8ec; --muted:#8b8b94; --cyan:#22d3ee; }
35
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--text); line-height: 1.7; }
36
+ .container { max-width: 860px; margin: 0 auto; padding: 2rem 1.5rem 4rem; }
37
+ nav { padding: 1rem 2rem; border-bottom: 1px solid var(--border); display:flex; gap:1.5rem; flex-wrap:wrap; }
38
+ nav a { color: var(--muted); text-decoration:none; font-size:0.9rem; }
39
+ nav .brand { color: var(--text); font-weight:700; }
40
+ .pill { display:inline-block; font-size:0.75rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--cyan); background:rgba(34,211,238,0.08); border:1px solid rgba(34,211,238,0.2); padding:4px 12px; border-radius:100px; margin-top:1.5rem; font-weight:600; }
41
+ h1 { font-size:2.2rem; line-height:1.15; margin:1rem 0 1rem; }
42
+ h2 { font-size:1.45rem; margin:2.2rem 0 1rem; color:var(--cyan); }
43
+ h3 { margin:0.6rem 0; font-size:1rem; }
44
+ p, li { margin-bottom:0.75rem; }
45
+ ul, ol { padding-left:1.25rem; }
46
+ .card { background: var(--card); border:1px solid var(--border); border-radius:12px; padding:1.25rem; margin:1rem 0; }
47
+ .grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1rem; margin:1rem 0; }
48
+ .grid .card h3 { color:var(--cyan); }
49
+ .cta { display:inline-block; background:var(--cyan); color:#000; padding:0.8rem 1.2rem; border-radius:8px; text-decoration:none; font-weight:700; }
50
+ .secondary { color:var(--cyan); text-decoration:underline; margin-left:1rem; }
51
+ .quote { border-left:3px solid var(--cyan); padding:0.75rem 1rem; margin:1rem 0; color:var(--muted); font-style:italic; }
52
+ code, pre { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; background:#0f0f11; border:1px solid var(--border); border-radius:6px; padding:0.15rem 0.4rem; font-size:0.9rem; }
53
+ pre { padding:0.85rem 1rem; overflow-x:auto; }
54
+ .footer-links { margin-top:2.5rem; padding-top:1.25rem; border-top:1px solid var(--border); color:var(--muted); font-size:0.9rem; }
55
+ .footer-links a { color:var(--cyan); text-decoration:none; }
56
+ </style>
57
+ </head>
58
+ <body>
59
+ <nav>
60
+ <a href="/" class="brand">ThumbGate</a>
61
+ <a href="/guide">Guide</a>
62
+ <a href="/agent-manager">Agent Manager</a>
63
+ <a href="/codex-plugin">Codex plugin</a>
64
+ <a href="/dashboard">Dashboard demo</a>
65
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
66
+ </nav>
67
+ <div class="container">
68
+ <span class="pill">Codex in the Enterprise</span>
69
+ <h1>Codex in production needs a governance layer. Dell-distributed or self-hosted, agents repeat the same mistakes.</h1>
70
+ <p>OpenAI and Dell <a href="https://openai.com/index/dell-codex-enterprise-partnership/" target="_blank" rel="noopener" style="color:var(--cyan)">just announced</a> a partnership to distribute Codex into the enterprise — Dell PCs, Dell servers, and Dell's enterprise sales motion become a delivery channel for OpenAI's coding agent. Codex's addressable market jumps from individual developer install to org-wide procurement. The governance gap jumps with it: every enterprise that turns Codex on now needs a runtime layer that captures what the agent did, blocks the repeat failures, and produces the audit trail their security review will ask for.</p>
71
+ <p>ThumbGate already ships a <a href="/codex-plugin">Codex plugin</a>. The free CLI is real, MIT-licensed, and the gates work locally without a hosted account. This page is what that plugin maps to once Codex is no longer one developer's experiment but a procurement line item.</p>
72
+
73
+ <h2>What the governance layer ships</h2>
74
+ <div class="grid">
75
+ <div class="card">
76
+ <h3>Capture every agent decision as it happens</h3>
77
+ <p>The Thariq pattern — running implementation notes that record decisions, assumptions (marked VERIFIED or UNVERIFIED), tradeoffs, and corrections — productionized as a Codex hook. Every multi-step task gets a structured journal you can review async without re-reading the entire transcript.</p>
78
+ </div>
79
+ <div class="card">
80
+ <h3>Promote repeat failures to PreToolUse gates</h3>
81
+ <p>When the same agent mistake shows up twice, ThumbGate distills it into a prevention rule and blocks the next attempt at the tool-call boundary — with the rule that fired in the agent's reasoning trace, so Codex chooses a safer plan instead of being told to "be more careful."</p>
82
+ </div>
83
+ <div class="card">
84
+ <h3>Audit trail enterprise procurement requires</h3>
85
+ <p>Per-tool-call evidence, per-rule provenance, exportable for SOC 2 / ISO 27001 / EU AI Act review. The hosted dashboard rolls this up across repos so the Agent Manager role has one surface instead of N developer machines.</p>
86
+ </div>
87
+ </div>
88
+
89
+ <h2>Why this matters now</h2>
90
+ <p>The Dell distribution channel changes who buys Codex. The individual-developer install is opt-in; the enterprise procurement install is policy-driven. The teams approving the Codex line item will ask three questions ThumbGate is built to answer:</p>
91
+ <ol>
92
+ <li><strong>What did the agent do?</strong> — capture, with evidence, on every tool call.</li>
93
+ <li><strong>What did we stop it from doing?</strong> — PreToolUse gates with the rule that fired and why.</li>
94
+ <li><strong>How do you keep this current as Codex updates?</strong> — adapter matrix that's CI-checked against upstream.</li>
95
+ </ol>
96
+ <div class="quote">"Dell-distributed Codex into the enterprise is the moment governance moves from optional to procurement-required. The runtime that captures, blocks, and audits is the line item underneath the line item."</div>
97
+
98
+ <h2>Install</h2>
99
+ <p>One repo, one command:</p>
100
+ <pre><code>npx thumbgate init --agent codex</code></pre>
101
+ <p>This wires the Codex hook, sets up the local lesson DB, and gives you the capture/promote/block loop without a hosted account. If you want the standalone Codex plugin as a self-contained zip — for offline distribution to Dell-managed machines or for security review — grab it from <a href="https://github.com/IgorGanapolsky/ThumbGate/releases" target="_blank" rel="noopener" style="color:var(--cyan)">GitHub releases</a> (look for <code>codex-plugin-*.zip</code>).</p>
102
+
103
+ <div class="card">
104
+ <p><strong>The free CLI is real. The paid tier is the hosted dashboard, the org-wide rule library, and the operator the Agent Manager doesn't have to be themselves.</strong></p>
105
+ <p>
106
+ <a href="/#workflow-sprint-intake?utm_source=website&amp;utm_medium=codex_enterprise_page&amp;utm_campaign=codex_enterprise_sprint&amp;cta_id=codex_enterprise_sprint_intake&amp;cta_placement=codex_enterprise_page" class="cta">Start the Workflow Hardening Sprint</a>
107
+ <a href="/checkout/pro?utm_source=website&amp;utm_medium=codex_enterprise_page&amp;utm_campaign=pro_upgrade&amp;cta_id=codex_enterprise_pro_checkout&amp;cta_placement=codex_enterprise_page&amp;plan_id=pro" class="secondary">Or start Pro at $19/mo →</a>
108
+ </p>
109
+ </div>
110
+
111
+ <h2>Related reading</h2>
112
+ <ul>
113
+ <li><a href="/agent-manager">ThumbGate for the Agent Manager</a> — the role inside the enterprise that owns Codex rollout policy.</li>
114
+ <li><a href="/codex-plugin">Codex plugin overview</a> — the standalone plugin surface this page rides on top of.</li>
115
+ <li><a href="/compare">Compare</a> — how governance compares to orchestration suites under the same Codex install.</li>
116
+ </ul>
117
+
118
+ <div class="footer-links">
119
+ Built for teams who turned on Codex and discovered "tell the model to be more careful" doesn't scale. See also <a href="/agent-manager">/agent-manager</a> for the role-level framing.
120
+ </div>
121
+ </div>
122
+ </body>
123
+ </html>
@@ -0,0 +1,345 @@
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">
6
+ <title>ThumbGate Workflow Hardening Diagnostic</title>
7
+ <meta name="description" content="A focused diagnostic for one repeated AI-agent workflow failure. ThumbGate maps the failure taxonomy, block/warn/human-review split, and proof checklist before rollout.">
8
+ <link rel="canonical" href="__APP_ORIGIN__/diagnostic">
9
+ <link rel="alternate" type="text/markdown" title="ThumbGate LLM context" href="__APP_ORIGIN__/llm-context.md">
10
+ <meta property="og:title" content="ThumbGate Workflow Hardening Diagnostic">
11
+ <meta property="og:description" content="Send one repeated AI-agent workflow failure. Get the gate/review split and proof checklist before implementation.">
12
+ <meta property="og:url" content="__APP_ORIGIN__/diagnostic">
13
+ <meta property="og:type" content="website">
14
+ <style>
15
+ :root {
16
+ color-scheme: dark;
17
+ --bg: #05080a;
18
+ --panel: #0d1418;
19
+ --panel-2: #12181d;
20
+ --line: #24323a;
21
+ --text: #eef7f9;
22
+ --muted: #a9b7bd;
23
+ --cyan: #28d5ee;
24
+ --green: #48dd83;
25
+ --red: #ff7676;
26
+ --white: #ffffff;
27
+ }
28
+ * { box-sizing: border-box; }
29
+ body {
30
+ margin: 0;
31
+ min-height: 100vh;
32
+ background: var(--bg);
33
+ color: var(--text);
34
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
35
+ line-height: 1.5;
36
+ }
37
+ a { color: inherit; }
38
+ header, main, footer { width: min(1120px, calc(100% - 32px)); margin: 0 auto; }
39
+ header {
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: space-between;
43
+ gap: 24px;
44
+ padding: 24px 0;
45
+ }
46
+ .brand {
47
+ display: flex;
48
+ align-items: center;
49
+ gap: 10px;
50
+ font-weight: 800;
51
+ letter-spacing: 0;
52
+ }
53
+ .mark {
54
+ width: 28px;
55
+ height: 28px;
56
+ display: block;
57
+ }
58
+ nav { display: flex; gap: 18px; color: var(--muted); font-size: 14px; }
59
+ .hero {
60
+ display: grid;
61
+ grid-template-columns: minmax(0, 1.05fr) minmax(340px, 0.95fr);
62
+ gap: 36px;
63
+ align-items: start;
64
+ padding: 54px 0 40px;
65
+ }
66
+ .eyebrow {
67
+ color: var(--cyan);
68
+ font-size: 13px;
69
+ font-weight: 800;
70
+ text-transform: uppercase;
71
+ letter-spacing: .08em;
72
+ }
73
+ h1 {
74
+ margin: 14px 0 18px;
75
+ max-width: 720px;
76
+ font-size: clamp(42px, 6vw, 76px);
77
+ line-height: .92;
78
+ letter-spacing: 0;
79
+ }
80
+ .lede {
81
+ max-width: 650px;
82
+ margin: 0 0 26px;
83
+ color: var(--muted);
84
+ font-size: 20px;
85
+ }
86
+ .actions { display: flex; flex-wrap: wrap; gap: 12px; }
87
+ .button {
88
+ min-height: 48px;
89
+ display: inline-flex;
90
+ align-items: center;
91
+ justify-content: center;
92
+ padding: 0 18px;
93
+ border: 1px solid var(--line);
94
+ border-radius: 7px;
95
+ text-decoration: none;
96
+ font-weight: 800;
97
+ color: var(--text);
98
+ }
99
+ .button.primary {
100
+ border-color: var(--cyan);
101
+ background: var(--cyan);
102
+ color: #031014;
103
+ }
104
+ .proof-strip {
105
+ display: grid;
106
+ grid-template-columns: repeat(3, minmax(0, 1fr));
107
+ gap: 12px;
108
+ margin-top: 34px;
109
+ }
110
+ .proof {
111
+ min-height: 90px;
112
+ padding: 16px;
113
+ border: 1px solid var(--line);
114
+ background: var(--panel);
115
+ border-radius: 8px;
116
+ }
117
+ .proof strong { display: block; font-size: 20px; }
118
+ .proof span { color: var(--muted); font-size: 14px; }
119
+ .intake-card {
120
+ border: 1px solid var(--line);
121
+ background: var(--panel);
122
+ border-radius: 8px;
123
+ padding: 24px;
124
+ }
125
+ .intake-card h2 { margin: 0 0 10px; font-size: 24px; }
126
+ .intake-card p { color: var(--muted); margin: 0 0 18px; }
127
+ label {
128
+ display: block;
129
+ margin: 14px 0 7px;
130
+ color: var(--text);
131
+ font-size: 14px;
132
+ font-weight: 750;
133
+ }
134
+ input, textarea, select {
135
+ width: 100%;
136
+ border: 1px solid #32424a;
137
+ border-radius: 7px;
138
+ background: #070b0d;
139
+ color: var(--text);
140
+ padding: 12px;
141
+ font: inherit;
142
+ }
143
+ textarea { min-height: 116px; resize: vertical; }
144
+ button {
145
+ width: 100%;
146
+ min-height: 50px;
147
+ margin-top: 18px;
148
+ border: 0;
149
+ border-radius: 7px;
150
+ background: var(--cyan);
151
+ color: #031014;
152
+ font: inherit;
153
+ font-weight: 900;
154
+ cursor: pointer;
155
+ }
156
+ .hint { font-size: 13px; color: var(--muted); }
157
+ section {
158
+ padding: 40px 0;
159
+ border-top: 1px solid var(--line);
160
+ }
161
+ .grid {
162
+ display: grid;
163
+ grid-template-columns: repeat(3, minmax(0, 1fr));
164
+ gap: 16px;
165
+ }
166
+ .box {
167
+ min-height: 170px;
168
+ padding: 20px;
169
+ border: 1px solid var(--line);
170
+ border-radius: 8px;
171
+ background: var(--panel-2);
172
+ }
173
+ .box h3 { margin: 0 0 8px; }
174
+ .box p { margin: 0; color: var(--muted); }
175
+ footer { padding: 32px 0 44px; color: var(--muted); }
176
+ @media (max-width: 860px) {
177
+ header { align-items: flex-start; flex-direction: column; }
178
+ .hero, .grid, .proof-strip { grid-template-columns: 1fr; }
179
+ h1 { font-size: 42px; }
180
+ }
181
+ </style>
182
+ <script type="application/ld+json">
183
+ {
184
+ "@context": "https://schema.org",
185
+ "@type": "Service",
186
+ "name": "ThumbGate Workflow Hardening Diagnostic",
187
+ "provider": {
188
+ "@type": "Organization",
189
+ "name": "ThumbGate",
190
+ "url": "__APP_ORIGIN__"
191
+ },
192
+ "description": "A focused diagnostic for one repeated AI-agent workflow failure, including failure taxonomy, block/warn/human-review split, and proof checklist.",
193
+ "offers": {
194
+ "@type": "Offer",
195
+ "price": "__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__",
196
+ "priceCurrency": "USD",
197
+ "availability": "https://schema.org/InStock",
198
+ "url": "__APP_ORIGIN__/diagnostic"
199
+ }
200
+ }
201
+ </script>
202
+ </head>
203
+ <body>
204
+ <header>
205
+ <a class="brand" href="/">
206
+ <img class="mark" src="/assets/brand/thumbgate-mark-inline-v3.svg" alt="ThumbGate" width="28" height="28" />
207
+ <span>ThumbGate</span>
208
+ </a>
209
+ <nav aria-label="Primary">
210
+ <a href="/pro">Pro</a>
211
+ <a href="/pricing">Pricing</a>
212
+ <a href="/llm-context.md">LLM Context</a>
213
+ </nav>
214
+ </header>
215
+ <main>
216
+ <div class="hero">
217
+ <div>
218
+ <div class="eyebrow">Workflow Hardening Diagnostic</div>
219
+ <h1>Turn one repeated AI-agent failure into a gate you can prove.</h1>
220
+ <p class="lede">Send the workflow that keeps failing. ThumbGate maps what should block, warn, or route to human review before an agent writes, sends, deploys, or spends.</p>
221
+ <div class="actions">
222
+ <a class="button primary" href="/go/diagnostic?utm_source=diagnostic_page&amp;utm_medium=onsite&amp;utm_campaign=workflow_hardening_diagnostic&amp;utm_content=hero_paid_diagnostic" data-revenue-cta data-cta-id="diagnostic_hero_paid" data-cta-placement="hero">Pay $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ diagnostic</a>
223
+ <a class="button" href="#intake" data-revenue-cta data-cta-id="diagnostic_hero_intake" data-cta-placement="hero">Send workflow first</a>
224
+ </div>
225
+ <div class="proof-strip" aria-label="Diagnostic proof points">
226
+ <div class="proof"><strong>$__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__</strong><span>Credited toward a sprint when implementation follows.</span></div>
227
+ <div class="proof"><strong>One workflow</strong><span>Scoped tightly so the proof is shippable.</span></div>
228
+ <div class="proof"><strong>Fit fallback</strong><span>Use the intake if the workflow needs scoping first.</span></div>
229
+ </div>
230
+ </div>
231
+ <form id="intake" class="intake-card" action="/v1/intake/workflow-sprint" method="POST" data-team-intake-form data-diagnostic-intake-form>
232
+ <h2>Submit for diagnostic scope</h2>
233
+ <p>Use this when an AI-assisted workflow has already caused rework, review drag, or release risk.</p>
234
+ <input type="hidden" name="ctaId" value="diagnostic_page_intake">
235
+ <input type="hidden" name="ctaPlacement" value="diagnostic_page">
236
+ <input type="hidden" name="utmMedium" value="diagnostic_intake">
237
+ <input type="hidden" name="utmCampaign" value="workflow_hardening_diagnostic">
238
+ <input type="hidden" name="planId" value="diagnostic">
239
+ <input type="hidden" name="page" value="/diagnostic">
240
+ <label for="name">Name</label>
241
+ <input id="name" name="name" autocomplete="name" required>
242
+ <label for="email">Work email</label>
243
+ <input id="email" name="email" type="email" autocomplete="email" required>
244
+ <label for="company">Company or project</label>
245
+ <input id="company" name="company" autocomplete="organization">
246
+ <label for="workflow">What workflow keeps failing?</label>
247
+ <textarea id="workflow" name="workflow" required placeholder="Example: agent opens PRs without the right proof, sends the wrong customer update, or deploys before approvals are clear."></textarea>
248
+ <label for="urgency">Urgency</label>
249
+ <select id="urgency" name="urgency">
250
+ <option>Repeated failure already cost us time</option>
251
+ <option>We are about to roll this workflow out</option>
252
+ <option>We need an independent proof checklist first</option>
253
+ </select>
254
+ <button type="submit" data-revenue-cta data-cta-id="diagnostic_page_submit" data-cta-placement="intake">Submit for diagnostic scope</button>
255
+ <p class="hint">Ready to pay now? Use the $499 diagnostic checkout above. If the workflow needs fit review first, submit it here and we will route you to the diagnostic or sprint only when the scope is real.</p>
256
+ </form>
257
+ </div>
258
+ <section>
259
+ <div class="grid">
260
+ <div class="box">
261
+ <h3>Failure taxonomy</h3>
262
+ <p>Classify the repeated action: bad context, missing approval, unsafe write, wrong target, or proof gap.</p>
263
+ </div>
264
+ <div class="box">
265
+ <h3>Gate split</h3>
266
+ <p>Define what should block automatically, warn the operator, or route to human review with evidence attached.</p>
267
+ </div>
268
+ <div class="box">
269
+ <h3>Proof checklist</h3>
270
+ <p>Leave with the verification steps needed to prove the next similar action is caught before execution.</p>
271
+ </div>
272
+ </div>
273
+ </section>
274
+ <section>
275
+ <h2>Use this for real agent workflows</h2>
276
+ <div class="grid">
277
+ <div class="box">
278
+ <h3>Code and PR agents</h3>
279
+ <p>Repeated bad diffs, missing tests, unsafe merges, or unclear ownership around generated changes.</p>
280
+ </div>
281
+ <div class="box">
282
+ <h3>Browser and ops agents</h3>
283
+ <p>Agents clicking, posting, updating CRMs, or moving money without the right boundary proof.</p>
284
+ </div>
285
+ <div class="box">
286
+ <h3>Customer-visible automation</h3>
287
+ <p>Email, support, billing, or publishing workflows where a repeat mistake costs trust.</p>
288
+ </div>
289
+ </div>
290
+ </section>
291
+ </main>
292
+ <footer>
293
+ ThumbGate is local-first agent governance. Use <a href="/pro">Pro</a> for self-serve operator proof, or submit one workflow above for a diagnostic.
294
+ </footer>
295
+ <script>
296
+ (function () {
297
+ const search = new URLSearchParams(window.location.search);
298
+ const form = document.querySelector('[data-diagnostic-intake-form]');
299
+ if (form) {
300
+ for (const [key, value] of search.entries()) {
301
+ if (!/^utm_|^(source|campaign|content|term)$/i.test(key)) continue;
302
+ let input = form.querySelector(`input[name="${CSS.escape(key)}"]`);
303
+ if (!input) {
304
+ input = document.createElement('input');
305
+ input.type = 'hidden';
306
+ input.name = key;
307
+ form.appendChild(input);
308
+ }
309
+ input.value = value;
310
+ }
311
+ }
312
+
313
+ function telemetry(eventName, props) {
314
+ try {
315
+ navigator.sendBeacon && navigator.sendBeacon('/v1/telemetry/event', JSON.stringify({
316
+ event: eventName,
317
+ page: '/diagnostic',
318
+ source: 'diagnostic_page',
319
+ props
320
+ }));
321
+ } catch (_) {}
322
+ }
323
+
324
+ document.addEventListener('click', function (event) {
325
+ const cta = event.target.closest('[data-revenue-cta]');
326
+ if (!cta) return;
327
+ telemetry('diagnostic_cta_click', {
328
+ ctaId: cta.getAttribute('data-cta-id'),
329
+ ctaPlacement: cta.getAttribute('data-cta-placement'),
330
+ planId: cta.getAttribute('data-cta-id') === 'diagnostic_secondary_pro' ? 'pro' : 'diagnostic'
331
+ });
332
+ });
333
+
334
+ document.addEventListener('submit', function (event) {
335
+ if (!event.target.matches('[data-diagnostic-intake-form]')) return;
336
+ telemetry('workflow_sprint_intake_submit_attempted', {
337
+ ctaId: 'diagnostic_page_submit',
338
+ ctaPlacement: 'diagnostic_page',
339
+ planId: 'diagnostic'
340
+ });
341
+ });
342
+ })();
343
+ </script>
344
+ </body>
345
+ </html>
package/public/index.html CHANGED
@@ -20,7 +20,7 @@ __GOOGLE_SITE_VERIFICATION_META__
20
20
  <meta property="og:image" content="https://thumbgate.ai/og.png">
21
21
  <meta name="twitter:card" content="summary_large_image">
22
22
  <meta name="twitter:image" content="https://thumbgate.ai/og.png">
23
- <meta name="thumbgate-version" content="1.27.15">
23
+ <meta name="thumbgate-version" content="1.27.20">
24
24
  <meta name="keywords" content="ThumbGate, thumbgate, AI agent orchestration, AI experience orchestration, agentic development cycle, AC/DC framework, Guide Generate Verify Solve, 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">
25
25
  <link rel="canonical" href="__APP_ORIGIN__/">
26
26
  <link rel="alternate" type="text/markdown" title="ThumbGate LLM context" href="__APP_ORIGIN__/llm-context.md">
@@ -1794,7 +1794,7 @@ __GA_BOOTSTRAP__
1794
1794
  <a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
1795
1795
  <a href="/blog">Blog</a>
1796
1796
  </div>
1797
- <span class="footer-copy">© 2026 ThumbGate · MIT License · npm v1.27.15</span>
1797
+ <span class="footer-copy">© 2026 ThumbGate · MIT License · npm v1.27.20</span>
1798
1798
  </div>
1799
1799
  </footer>
1800
1800