thumbgate 1.27.20 โ†’ 1.28.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 (48) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.well-known/mcp/server-card.json +1 -1
  3. package/README.md +63 -42
  4. package/adapters/claude/.mcp.json +2 -2
  5. package/adapters/mcp/server-stdio.js +1 -1
  6. package/adapters/opencode/opencode.json +1 -1
  7. package/bin/cli.js +25 -8
  8. package/bin/postinstall.js +1 -1
  9. package/config/entitlement-public-keys.json +6 -0
  10. package/config/gates/default.json +1 -1
  11. package/config/github-about.json +2 -2
  12. package/config/merge-quality-checks.json +3 -0
  13. package/package.json +12 -4
  14. package/public/about.html +1 -4
  15. package/public/agent-manager.html +6 -6
  16. package/public/agents-cost-savings.html +3 -3
  17. package/public/ai-malpractice-prevention.html +1 -1
  18. package/public/blog.html +12 -9
  19. package/public/chatgpt-app.html +3 -3
  20. package/public/codex-enterprise.html +3 -3
  21. package/public/codex-plugin.html +5 -5
  22. package/public/compare.html +10 -10
  23. package/public/dashboard.html +1 -1
  24. package/public/federal.html +2 -2
  25. package/public/guide.html +14 -14
  26. package/public/index.html +81 -70
  27. package/public/install.html +14 -14
  28. package/public/learn.html +4 -17
  29. package/public/numbers.html +2 -2
  30. package/public/pricing.html +12 -19
  31. package/public/pro.html +2 -2
  32. package/scripts/agent-reward-model.js +13 -0
  33. package/scripts/bayes-optimal-gate.js +6 -1
  34. package/scripts/cli-feedback.js +17 -1
  35. package/scripts/commercial-offer.js +3 -3
  36. package/scripts/entitlement.js +250 -0
  37. package/scripts/export-databricks-bundle.js +5 -0
  38. package/scripts/export-dpo-pairs.js +6 -0
  39. package/scripts/export-hf-dataset.js +5 -0
  40. package/scripts/gates-engine.js +15 -3
  41. package/scripts/imperative-detector.js +85 -0
  42. package/scripts/intervention-policy.js +13 -0
  43. package/scripts/pr-manager.js +9 -22
  44. package/scripts/pro-local-dashboard.js +198 -0
  45. package/scripts/risk-scorer.js +6 -0
  46. package/scripts/seo-gsd.js +2 -2
  47. package/scripts/thompson-sampling.js +11 -2
  48. package/src/api/server.js +81 -10
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "thumbgate",
3
3
  "description": "One ๐Ÿ‘Ž becomes a hard rule the agent cannot bypass. Captures thumbs-down feedback, distills it into PreToolUse Pre-Action Checks, enforced across every future Claude Code session.",
4
- "version": "1.27.20",
4
+ "version": "1.28.0",
5
5
  "author": {
6
6
  "name": "Igor Ganapolsky",
7
7
  "email": "ig5973700@gmail.com",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.27.20",
3
+ "version": "1.28.0",
4
4
  "description": "ThumbGate โ€” ๐Ÿ‘๐Ÿ‘Ž feedback that teaches your AI agent. Thumbs down a mistake, it never happens again.",
5
5
  "homepage": "https://thumbgate.ai",
6
6
  "transport": "stdio",
package/README.md CHANGED
@@ -8,12 +8,12 @@
8
8
 
9
9
  **AI coding agents repeat mistakes โ€” and one wrong tool call can wipe a directory, leak a key, or push broken code.**
10
10
 
11
- ThumbGate is the local-first firewall for AI coding agents. It runs in the PreToolUse hook on your machine and blocks dangerous tool calls โ€” `rm -rf`, secret exfiltration, off-scope edits, a bad `git push` โ€” before they execute, across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode. No server, no gateway. (Regulated-industry policy templates โ€” legal intake, financial compliance, healthcare โ€” build on the same engine.)
11
+ ThumbGate is the local-first Pre-Action Checks engine for AI coding agents. It runs in the PreToolUse hook on your machine: it flags the next tool call and logs every decision. It **hard-blocks the catastrophic classes by default** โ€” secret exfiltration, destructive deletes (`rm -rf`), and supply-chain attacks โ€” and hard-blocks **every** rule (force-push, off-scope edits, a bad `git push`, deploys) when you set `THUMBGATE_STRICT_ENFORCEMENT=1`; those classes warn-and-log by default. Works across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode. No server on the enforcement path. (Regulated-industry policy templates โ€” legal intake, financial compliance, healthcare โ€” are on the roadmap, built on the same engine.)
12
12
 
13
- The product is a self-improving enforcement layer: thumbs-down feedback, prompt evaluation, and proof from prior runs become prevention rules that permanently stop repeated failures before the next tool call.
13
+ The product is a self-improving enforcement layer: thumbs-down feedback, prompt evaluation, and proof from prior runs become prevention rules that flag or block repeated failures according to policy before the next tool call executes.
14
14
 
15
15
  <p align="center">
16
- <img src="docs/media/thumbgate-demo.gif" alt="ThumbGate blocking an AI agent's dangerous commands (rm -rf, force-push, chmod 777) in real time, while letting safe commands through" width="820" />
16
+ <img src="docs/media/thumbgate-demo.gif" alt="ThumbGate gating an AI agent's dangerous commands (rm -rf, force-push, chmod 777) in real time โ€” hard-blocking destructive deletes, flagging the rest, while letting safe commands through" width="820" />
17
17
  </p>
18
18
 
19
19
  ```
@@ -77,7 +77,7 @@ Each is a thin wrapper over an existing MCP tool or CLI command โ€” **no new enf
77
77
 
78
78
  ## ๐ŸŽฌ 90-second demo
79
79
 
80
- Watch the force-push scenario: agent tries to `git push --force`, one thumbs-down, next session it's blocked โ€” zero tokens spent on the repeat.
80
+ Watch the force-push scenario: agent tries to `git push --force`, one thumbs-down, next session it's flagged and logged โ€” and hard-blocked when you run with `THUMBGATE_STRICT_ENFORCEMENT=1` โ€” zero tokens spent on the repeat.
81
81
 
82
82
  [**โ–ถ Watch the 90-second demo**](https://thumbgate.ai/#demo?utm_source=github&utm_medium=readme&utm_campaign=demo_video) ยท [Script](docs/marketing/demo-video-script.md) ยท [ElevenLabs narration: `npm run demo:voiceover`](scripts/generate-demo-voiceover.js)
83
83
 
@@ -98,6 +98,16 @@ The buying question is simple: **what repeated AI mistake would be worth blockin
98
98
 
99
99
  ---
100
100
 
101
+ ## Ideal customer
102
+
103
+ The first high-value customer is an enterprise engineering, security, or platform leader whose team already uses AI coding agents in high-blast-radius workflows: finance, healthcare, insurance, public sector, critical infrastructure, manufacturing, or any audited software-delivery environment.
104
+
105
+ The pain is security and operational risk; the buying context is enterprise AI-agent governance. ThumbGate owns the enforcement boundary: known-bad agent actions are flagged or blocked before shell, repo, CI/CD, SaaS, or cloud tool calls execute.
106
+
107
+ For partners building detection or coordination layers, ThumbGate is the downstream enforcement surface. Detection systems identify drift, stale shared reality, or risky workflow intent; ThumbGate turns the approved finding into a PreToolUse prevention rule with auditable execution evidence.
108
+
109
+ ---
110
+
101
111
  ## The Problem โ€” the bill nobody talks about
102
112
 
103
113
  Frontier-model calls are not cheap. Sonnet 4.5 is ~$3 / 1M input tokens and ~$15 / 1M output tokens. Opus is 5ร— that. Every time your agent:
@@ -121,11 +131,11 @@ That's ~$0.21 in tokens just to fix the same mistake three times โ€” multiplied
121
131
 
122
132
  ```
123
133
  Session 1: Agent force-pushes to main. You ๐Ÿ‘Ž it. +4,200 tokens
124
- Session 2: โ›” Check blocks the force-push. Zero round-trip. +0 tokens
125
- Session 3+: Never happens again. +0 tokens
134
+ Session 2: โš ๏ธ Gate flags the force-push. Zero round-trip. +0 tokens
135
+ Session 3+: Warned every time (hard-blocked under strict). +0 tokens
126
136
  ```
127
137
 
128
- One thumbs-down. The PreToolUse hook intercepts the call **before** it reaches the model โ€” no input tokens, no output tokens, no retry loop. The dashboard tracks **tokens saved this week** as a live counter so you can see exactly what your prevention rules are worth. Mark a review checkpoint once, and the dashboard narrows the next pass to only the feedback, lessons, and check blocks that landed since your last review.
138
+ One thumbs-down. The PreToolUse hook catches the call **before** it reaches the model โ€” no input tokens, no output tokens, no retry loop. Catastrophic classes (secret exfiltration, `rm -rf`, supply-chain) hard-block by default; the rest warn-and-log by default and hard-block under `THUMBGATE_STRICT_ENFORCEMENT=1`. The dashboard tracks **tokens saved this week** as a live counter so you can see exactly what your prevention rules are worth. Mark a review checkpoint once, and the dashboard narrows the next pass to only the feedback, lessons, and check blocks that landed since your last review.
129
139
 
130
140
  ThumbGate doesn't make your agent smarter. It makes your agent *cheaper to be wrong with.*
131
141
 
@@ -150,7 +160,7 @@ Then point your agent at it โ€” add `Read .thumbgate/BRAIN.md first` to your `CL
150
160
  ## Guardrails โ€” do NOT repeat these (prevention rules)
151
161
  - Never run DROP on production tables
152
162
  ## Active enforcement (gates)
153
- - `DROP.*production` โ†’ block
163
+ - `DROP.*production` โ†’ warn + log (hard-block under strict enforcement)
154
164
  ```
155
165
 
156
166
  Same idea the SEO world is now calling a *"client brain"* โ€” persistent context that AI reads before doing the work โ€” applied to **engineering**: the institutional memory that stops your coding agent from relearning the same lesson on your dime.
@@ -167,9 +177,9 @@ npx thumbgate capture down "Never run DROP on production tables"
167
177
  That single command creates a prevention rule. Next time any AI agent tries to run `DROP` on production:
168
178
 
169
179
  ```
170
- โ›” Check blocked: "Never run DROP on production tables"
180
+ โš ๏ธ Check fired: "Never run DROP on production tables"
171
181
  Pattern: DROP.*production
172
- Verdict: BLOCK
182
+ Verdict: WARN + LOG (BLOCK when THUMBGATE_STRICT_ENFORCEMENT=1)
173
183
  ```
174
184
 
175
185
  ---
@@ -193,14 +203,14 @@ Where retrieval is needed (an agent is about to run a destructive command not on
193
203
  Rules stay in local ThumbGate runtime state.
194
204
 
195
205
  ### Layer 3: Pre-Action Interception
196
- Before any agent action executes, ThumbGate's `PreToolUse` hook intercepts the command and evaluates it against all active checks. This happens at the MCP protocol level โ€” the agent physically cannot bypass it.
206
+ Before any agent action executes, ThumbGate's `PreToolUse` hook intercepts the command and evaluates it against all active checks. This happens in the hook path on every tool call, so no decision goes unlogged. Catastrophic classes hard-block by default; other rules warn-and-log by default and hard-block under `THUMBGATE_STRICT_ENFORCEMENT=1`.
197
207
 
198
- ### Layer 4: Multi-Agent Distribution (the actual moat vs hand-rolled hooks)
208
+ ### Layer 4: Multi-Agent Distribution (why not a hand-rolled hook?)
199
209
  Claude Code already ships `permissions.deny` and `PreToolUse` hooks. Cursor and Codex have their own. So why ThumbGate over a hand-written hook?
200
210
 
201
211
  Two things hand-written hooks structurally cannot do:
202
212
 
203
- 1. **Cross-agent propagation.** A `permissions.deny` pattern lives in one agent's config and stays there. ThumbGate's checks distribute across every connected agent over MCP stdio โ€” thumbs-down once in Cursor, the same pattern blocks on Claude Code, Codex, Gemini CLI, Cline, OpenCode, Amp in the next session, no copy-paste between configs.
213
+ 1. **Cross-agent propagation.** A `permissions.deny` pattern lives in one agent's config and stays there. ThumbGate's checks distribute across every connected agent over MCP stdio โ€” thumbs-down once in Cursor, the same pattern fires (and hard-blocks under strict enforcement) on Claude Code, Codex, Gemini CLI, Cline, OpenCode, Amp in the next session, no copy-paste between configs.
204
214
  2. **Learning loop.** A hand-written hook covers exactly the patterns you wrote. ThumbGate promotes every thumbs-down into a fresh rule, tunes existing rules' confidence weights from outcomes (Thompson Sampling, see Layer 2), and pulls semantically-near patterns into scope via local embeddings. The rule corpus sharpens without an operator hand-writing a regex for every new mistake shape.
205
215
 
206
216
  Hand-rolled hooks are the right tool for a small, static denylist you maintain by hand. ThumbGate is the right tool when you want corrections from any agent to harden every agent automatically.
@@ -217,7 +227,8 @@ flowchart LR
217
227
  B -- "exact match" --> D["Deterministic gate decision<br/>(no model, on-device)"]
218
228
  B -- "no exact match, but<br/>semantically near a<br/>blocked pattern" --> C["Local CPU embeddings<br/>bge-small via LanceDB<br/>(no external API)"]
219
229
  C --> D
220
- D -- "known-bad" --> E["โ›” BLOCK before execution"]
230
+ D -- "catastrophic class" --> E["โ›” Hard-block before execution"]
231
+ D -- "other known-bad" --> G["โš ๏ธ Warn + log<br/>(hard-block under strict)"]
221
232
  D -- "safe" --> F["โœ“ Allow"]
222
233
  ```
223
234
 
@@ -263,6 +274,7 @@ Each recommendation ships with the benchmark commands to run next: feedback-deri
263
274
  | **Gemini CLI** | `npx thumbgate init --agent gemini` |
264
275
  | **Amp** | `npx thumbgate init --agent amp` |
265
276
  | **Cline** (Roo Code successor) | `npx thumbgate init --agent cline` |
277
+ | **OpenCode** | `npx thumbgate init --agent opencode` |
266
278
  | **Claude Desktop** | [Download extension bundle](https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb) |
267
279
  | **Any MCP agent** | `npx thumbgate serve` |
268
280
 
@@ -319,8 +331,10 @@ ChatGPT is the advice, checkpointing, and typed-feedback surface; ThumbGate's ha
319
331
  ๐Ÿ‘Ž on a bad โ”€โ”€โ–บ Feedback becomes โ”€โ”€โ–บ Next time the
320
332
  agent action a saved lesson agent tries the
321
333
  and a block rule same thing:
322
- ๐Ÿ‘ on a good โ”€โ”€โ–บ Good pattern gets โ›” BLOCKED
323
- agent action reinforced (or โœ… allowed)
334
+ ๐Ÿ‘ on a good โ”€โ”€โ–บ Good pattern gets ๐Ÿšฆ flagged + logged
335
+ agent action reinforced (hard-blocked for
336
+ catastrophic classes /
337
+ strict mode, or โœ… allowed)
324
338
  ```
325
339
 
326
340
  No manual rule-writing. No config files. Your reactions teach the agent what your team actually wants.
@@ -330,7 +344,7 @@ No manual rule-writing. No config files. Your reactions teach the agent what you
330
344
  ThumbGate sells three concrete outcomes:
331
345
 
332
346
  - **Prevent expensive AI mistakes** โ€” catch bad commands, destructive database actions, unsafe publishes, and risky API calls before they run.
333
- - **Make AI stop repeating mistakes** โ€” fix it once, turn the lesson into a rule, and block the repeat before the next tool call lands.
347
+ - **Make AI stop repeating mistakes** โ€” fix it once, turn the lesson into a rule, and catch the repeat before the next tool call lands (warn-and-log by default, hard-block for catastrophic classes or under strict enforcement).
334
348
  - **Turn AI into a reliable operator** โ€” move from a smart assistant that apologizes after damage to a production-ready operator with checkpoints, proof, and enforcement.
335
349
  - **Measure prompts instead of rewriting them blindly** โ€” use `thumbgate eval --from-feedback`, proof lanes, ThumbGate Bench, and `self-heal:check` to evaluate whether prompts and workflows actually improved behavior.
336
350
 
@@ -339,31 +353,38 @@ ThumbGate sells three concrete outcomes:
339
353
  ## Use Cases
340
354
 
341
355
  ### Developer Workflows
342
- - **Stop force-push to main** โ€” Check blocks `git push --force` on protected branches before it runs
356
+ - **Catch force-push to main** โ€” Check flags `git push --force` on protected branches before it runs, and hard-blocks it under `THUMBGATE_STRICT_ENFORCEMENT=1`
343
357
  - **Prevent repeated migration failures** โ€” Each mistake becomes a searchable lesson that fires before the next attempt
344
358
  - **Block unauthorized file edits** โ€” Control which files agents can touch with path-based rules
345
359
  - **Memory across sessions** โ€” The agent remembers your feedback from yesterday
346
360
  - **Shared team safety** โ€” One developer's thumbs-down protects the whole team
347
361
  - **Auto-improving without feedback** โ€” Self-improvement mode evaluates outcomes and generates rules automatically
348
362
 
349
- ### Enterprise & Regulated Industries
350
- - **Legal AI intake governance** โ€” Block unauthorized practice of law (ABA Rule 5.5), require conflict-of-interest clearance before fact collection (Rules 1.7/1.9/1.10), prevent privileged content from leaving firm boundaries (Rule 1.6)
351
- - **Financial compliance** โ€” Gate AI-generated trade recommendations, block unauthorized disclosures, enforce approval chains before customer-facing outputs
352
- - **Healthcare** โ€” Prevent AI agents from providing medical diagnoses, enforce HIPAA-compliant data routing, require clinician review before patient-facing content
353
- - **Audit trail** โ€” Every gate decision (block, allow, reroute) is preserved with rule version, timestamp, and reviewer path for compliance review
363
+ ### Enterprise & Regulated Industries (roadmap / templates)
364
+
365
+ These are policy-template directions on the roadmap, available on request โ€” not yet exercised by a paying customer. They build on the same gate engine:
354
366
 
355
- [See the legal-intake demo โ†’](https://thumbgate.ai/dashboard)
367
+ - **Legal AI intake governance** โ€” templates targeting unauthorized practice of law (ABA Rule 5.5), conflict-of-interest clearance before fact collection (Rules 1.7/1.9/1.10), and keeping privileged content inside firm boundaries (Rule 1.6)
368
+ - **Financial compliance** โ€” gate templates for AI-generated trade recommendations, unauthorized disclosures, and approval chains before customer-facing outputs
369
+ - **Healthcare** โ€” templates to keep AI agents from providing medical diagnoses, route data along HIPAA-compliant paths, and require clinician review before patient-facing content
370
+ - **Audit trail** โ€” every gate decision (block, warn, allow, reroute) is preserved with rule version, timestamp, and reviewer path for compliance review
371
+
372
+ [Talk to us about regulated templates โ†’](https://thumbgate.ai/dashboard)
356
373
 
357
374
  ---
358
375
 
359
376
  ## Built-in Checks
360
377
 
361
378
  ```
362
- โ›” force-push โ†’ blocks git push --force
363
- โ›” protected-branch โ†’ blocks direct push to main
364
- โ›” unresolved-threads โ†’ blocks push with open reviews
365
- โ›” package-lock-reset โ†’ blocks destructive lock edits
366
- โ›” env-file-edit โ†’ blocks .env secret exposure
379
+ โ›” env-file-edit โ†’ hard-blocks .env secret exposure (default)
380
+ โš ๏ธ force-push โ†’ flags git push --force (hard-block under strict)
381
+ โš ๏ธ protected-branch โ†’ flags direct push to main (hard-block under strict)
382
+ โš ๏ธ unresolved-threads โ†’ flags push with open reviews (hard-block under strict)
383
+ โš ๏ธ package-lock-reset โ†’ flags destructive lock edits (hard-block under strict)
384
+
385
+ Every check fires and logs on every match. Catastrophic classes (secret
386
+ exfiltration, rm -rf, supply-chain) hard-block by default; the rest warn-and-log
387
+ by default and hard-block under THUMBGATE_STRICT_ENFORCEMENT=1.
367
388
 
368
389
  + custom prevention rules for project-specific failures
369
390
  ```
@@ -435,14 +456,14 @@ If you change MCP or hook settings, restart the affected agent session so Claude
435
456
  | Shared hosted lesson DB | โ€” | โ€” | โœ… |
436
457
  | Org-wide dashboard | โ€” | โ€” | โœ… |
437
458
  | Approval + audit proof | โ€” | โ€” | โœ… |
438
- | Regulatory gate templates | โ€” | โ€” | โœ… |
439
- | Custom policy layers (firm/practice-area) | โ€” | โ€” | โœ… |
440
- | Compliance audit export | โ€” | โ€” | โœ… |
459
+ | Regulatory gate templates (roadmap / on request) | โ€” | โ€” | ๐Ÿ›ฃ๏ธ |
460
+ | Custom policy layers (firm/practice-area, roadmap) | โ€” | โ€” | ๐Ÿ›ฃ๏ธ |
461
+ | Compliance audit export (roadmap) | โ€” | โ€” | ๐Ÿ›ฃ๏ธ |
441
462
  | Dedicated onboarding + SLA | โ€” | โ€” | โœ… |
442
463
 
443
464
  The free tier gives you 2 feedback captures/day (10 total) and up to 3 active auto-promoted prevention rules โ€” enough to make ThumbGate part of your daily flow before you upgrade. MCP integrations for all agents (Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode) ship free.
444
465
 
445
- Pro ($19/mo or $149/yr) removes the rule cap and adds history-aware lesson recall, lesson search, DPO export, and a personal dashboard. Enterprise (custom pricing, scoped after intake) adds a shared hosted lesson DB, org dashboard, and shared enforcement across the org, plus regulatory gate templates (legal intake, financial compliance, healthcare), custom policy layers scoped to firm/practice-area, compliance audit export, and dedicated onboarding with SLA.
466
+ Pro ($19/mo or $149/yr) removes the rule cap and adds history-aware lesson recall, lesson search, DPO export, and a personal dashboard. Enterprise (custom pricing, scoped after intake) adds a shared hosted lesson DB, org dashboard, and shared enforcement across the org, plus dedicated onboarding with SLA. Regulatory gate templates (legal intake, financial compliance, healthcare), custom policy layers scoped to firm/practice-area, and compliance audit export are on the roadmap, available on request โ€” not yet exercised by a paying customer.
446
467
 
447
468
  **Best first paid motion for teams:** the **Workflow Hardening Sprint** โ€” qualify one repeated failure before committing to a full rollout. **[Start intake โ†’](https://thumbgate.ai/?utm_source=github&utm_medium=readme&utm_campaign=team_rollout#workflow-sprint-intake)**
448
469
 
@@ -600,20 +621,20 @@ npx thumbgate setup-vertex
600
621
 
601
622
  This command does **not** create or verify a live Dialogflow CX agent. Dialogflow is only relevant when a customer wants ThumbGate guard adapters in front of their own production DFCX agents. On current Google Cloud CLI installs, the old alpha gcloud CX command group is not available; verify Conversational Agents / Dialogflow CX with the Google Cloud console or the official Dialogflow CX REST API (`projects.locations.agents`) before claiming a live DFCX deployment.
602
623
 
603
- ### Zero-Friction Cost Containment ($10/mo Hard Cap)
604
- Google Cloud budget alerts are "alert-only" and do not stop API traffic, risking unexpected bill shock. ThumbGate completely resolves this on the client side:
605
- * **Instant Shutdown:** ThumbGate maintains a lightweight, local token ledger and instantly halts outgoing API traffic the millisecond your monthly token spending approaches the **$10 limit** (500k tokens of Gemini 1.5 Flash).
606
- * **Bypasses extra shutdown plumbing:** Requires no Pub/Sub or Cloud Functions for the local ThumbGate-side stop condition. You still need normal Google Cloud billing/API setup and live-agent verification for DFCX pilots.
624
+ ### Cost Containment ($10/mo Cap โ€” roadmap)
625
+ Google Cloud budget alerts are "alert-only" and do not stop API traffic, risking unexpected bill shock. ThumbGate's design addresses this on the client side (no paying customer has exercised it yet):
626
+ * **Local token ledger:** ThumbGate maintains a lightweight, local token ledger intended to halt outgoing API traffic as monthly token spend approaches a configurable cap (e.g. **$10**, ~500k tokens of Gemini 1.5 Flash).
627
+ * **No extra shutdown plumbing:** the local ThumbGate-side stop condition needs no Pub/Sub or Cloud Functions. You still need normal Google Cloud billing/API setup and live-agent verification for DFCX pilots.
607
628
 
608
629
  ---
609
630
 
610
631
  ## FAQ
611
632
 
612
633
  **Is ThumbGate a model fine-tuning tool?**
613
- No. ThumbGate does not update model weights. It captures feedback, stores lessons, injects context at runtime, and blocks bad actions before they execute.
634
+ No. ThumbGate does not update model weights. It captures feedback, stores lessons, injects context at runtime, and flags bad actions before they execute โ€” hard-blocking the catastrophic classes by default and every rule under strict enforcement.
614
635
 
615
636
  **How is this different from CLAUDE.md or .cursorrules?**
616
- Those are suggestions the agent can ignore. ThumbGate checks are enforced โ€” they physically block the action before it runs. They also auto-generate from feedback instead of requiring manual writing.
637
+ Those are suggestions the agent can ignore. ThumbGate checks are enforced at the hook path โ€” they fire and log on every match, hard-block the catastrophic classes by default (and every rule under `THUMBGATE_STRICT_ENFORCEMENT=1`), and warn-and-log the rest. They also auto-generate from feedback instead of requiring manual writing.
617
638
 
618
639
  **Does it work with my agent?**
619
640
  If it supports MCP or pre-action hooks, yes. Claude Code, Claude Desktop, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode all work out of the box.
@@ -627,7 +648,7 @@ Pro ($19/mo or $149/yr) removes the rule cap and adds history-aware lesson recal
627
648
 
628
649
  ## Docs
629
650
 
630
- - [**ThumbGate for Federal Agencies**](docs/FEDERAL.md) โ€” pilot-ready posture, NIST 800-53 control mapping, OMB M-24-10 / EO 14110 alignment, ThumbGate-Core gov deployment mode, public/Core boundary invariants. Landing page: [thumbgate.ai/federal](https://thumbgate.ai/federal).
651
+ - [**ThumbGate for Federal Agencies**](docs/FEDERAL.md) โ€” pilot-ready posture, NIST 800-53 control mapping, OMB M-24-10 / EO 14110 alignment. Landing page: [thumbgate.ai/federal](https://thumbgate.ai/federal).
631
652
  - [First Dollar Playbook](docs/FIRST_DOLLAR_PLAYBOOK.md) โ€” turning one painful workflow into the next booked pilot
632
653
  - [Commercial Truth](docs/COMMERCIAL_TRUTH.md) โ€” pricing, claims, what we don't say
633
654
  - [Goal Contracts](docs/GOAL_CONTRACTS.md) โ€” evidence-before-done contracts for multi-agent handoffs
@@ -639,7 +660,7 @@ Pro ($19/mo or $149/yr) removes the rule cap and adds history-aware lesson recal
639
660
  - [Ready for Agent Intake](https://github.com/IgorGanapolsky/ThumbGate/issues/new?template=ready-for-agent.yml) โ€” ready-for-agent intake template
640
661
  - [SEO Guide: Claude Code Guardrails](docs/learn/claude-code-guardrails.md)
641
662
  - [Unsupervised Learning Signals](docs/UL.md) โ€” silent-failure clustering (**on by default** as of 2026-05-21; opt out via `THUMBGATE_SILENT_FAILURE_CLUSTERING=0`; only meaningfully active on workspaces with โ‰ฅ 50 tool calls/day)
642
- - [ThumbGate-Core](https://github.com/IgorGanapolsky/ThumbGate-Core) โ€” private core for hosted overlays, ranking, policy synthesis, billing intelligence, and org/team workflows
663
+ - [ThumbGate-Core](https://github.com/IgorGanapolsky/ThumbGate-Core) โ€” staging repo for pre-release features plus a handful of internal cache scripts that can't ship publicly. It is **not** the moat: intelligence, ranking, and synthesis land in this public repo by default (~212 of 216 Core scripts already ship publicly). The moat is hosted services + adapter compatibility + dashboard + support โ€” see [MOAT.md](MOAT.md).
643
664
 
644
665
  ---
645
666
 
@@ -662,7 +683,7 @@ ThumbGate is free and MIT-licensed forever. For teams that need more:
662
683
 
663
684
  I'm **Igor Ganapolsky** โ€” I designed and maintain ThumbGate. If you're shipping **payments, AI agents, or Android features** and want them built by someone demonstrably careful with production and with money, I take a small number of **freelance / contract** engagements.
664
685
 
665
- ThumbGate is the receipt, not the pitch: it fails *closed* on dangerous agent actions and publishes a [threat model](THREAT_MODEL.md) stating exactly what it enforces and what it can't contain. Documenting where my own guardrails end is the standard I hold client work to.
686
+ ThumbGate is the receipt, not the pitch: it hard-blocks the catastrophic classes by default (and every rule under strict enforcement), logs every decision, and publishes a [threat model](THREAT_MODEL.md) stating exactly what it enforces and what it can't contain. Documenting where my own guardrails end is the standard I hold client work to.
666
687
 
667
688
  - **Payments** โ€” Stripe / Stripe Connect: destination charges, split payouts, escrow & milestone release, 3DS/SCA, idempotent webhooks, reconciliation.
668
689
  - **Applied AI / agents** โ€” tool-use guardrails, MCP servers, orchestration, and evaluation loops (the engineering behind this repo).
@@ -2,13 +2,13 @@
2
2
  "mcpServers": {
3
3
  "thumbgate": {
4
4
  "command": "npx",
5
- "args": ["--yes", "--package", "thumbgate@1.27.20", "thumbgate", "serve"]
5
+ "args": ["--yes", "--package", "thumbgate@1.28.0", "thumbgate", "serve"]
6
6
  }
7
7
  },
8
8
  "hooks": {
9
9
  "preToolUse": {
10
10
  "command": "npx",
11
- "args": ["--yes", "--package", "thumbgate@1.27.20", "thumbgate", "gate-check"]
11
+ "args": ["--yes", "--package", "thumbgate@1.28.0", "thumbgate", "gate-check"]
12
12
  }
13
13
  }
14
14
  }
@@ -231,7 +231,7 @@ const {
231
231
  finalizeSession: finalizeFeedbackSession,
232
232
  } = require('../../scripts/feedback-session');
233
233
 
234
- const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.27.20' };
234
+ const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.28.0' };
235
235
  const COMMERCE_CATEGORIES = [
236
236
  'product_recommendation',
237
237
  'brand_compliance',
@@ -7,7 +7,7 @@
7
7
  "npx",
8
8
  "--yes",
9
9
  "--package",
10
- "thumbgate@1.27.20",
10
+ "thumbgate@1.28.0",
11
11
  "thumbgate",
12
12
  "serve"
13
13
  ],
package/bin/cli.js CHANGED
@@ -134,7 +134,7 @@ function upgradeNudge() {
134
134
  '\n Team rollout: start with the $499 Workflow Hardening Diagnostic\n' +
135
135
  ` ${diagnosticUrl}\n` +
136
136
  `\n Solo side lane: Pro โ€” ${PRO_PRICE_LABEL}\n` +
137
- ' Keeps lessons, rules, and the dashboard synced across machines and agent runtimes.\n' +
137
+ ' Removes solo caps; adds personal recall, dashboard proof, exports, and managed adapters.\n' +
138
138
  ` ${pricingUrl}\n\n`
139
139
  );
140
140
  }
@@ -234,9 +234,9 @@ function proNudge(context) {
234
234
  const checkoutUrl = checkoutUrlFor('cli_nudge', context || COMMAND || 'general');
235
235
  const pricingUrl = pricingUrlFor('cli_nudge', context || COMMAND || 'general');
236
236
  const messages = [
237
- `\n ๐Ÿ’ก Pro (${PRO_PRICE_LABEL}): keep lessons, rules, and dashboard state synced across machines and agent runtimes.\n See pricing: ${pricingUrl}\n`,
238
- `\n ๐Ÿ’ก You just taught ThumbGate something locally. Pro keeps that lesson alive on every laptop, CI box, and agent runtime.\n See pricing: ${pricingUrl}\n`,
239
- `\n ๐Ÿ’ก ThumbGate Pro syncs lessons/rules across Claude, Codex, Cursor, containers, and CI. ${PRO_PRICE_LABEL}.\n Start Pro: ${checkoutUrl}\n`,
237
+ `\n ๐Ÿ’ก Pro (${PRO_PRICE_LABEL}): personal recall, dashboard proof, exports, and managed adapters.\n See pricing: ${pricingUrl}\n`,
238
+ `\n ๐Ÿ’ก You just taught ThumbGate something locally. Pro keeps personal lessons searchable and exportable without free-tier caps.\n See pricing: ${pricingUrl}\n`,
239
+ `\n ๐Ÿ’ก ThumbGate Pro maintains adapter coverage across Claude, Codex, Cursor, containers, and CI. ${PRO_PRICE_LABEL}.\n Start Pro: ${checkoutUrl}\n`,
240
240
  ];
241
241
  // Rotate message daily โ€” no Math.random (security policy)
242
242
  const msg = messages[Math.floor(Date.now() / 86400000) % messages.length];
@@ -921,7 +921,7 @@ function init(cliArgs = parseArgs(process.argv.slice(3))) {
921
921
  console.log('Scaffold ThumbGate in the current project and wire detected agent integrations.');
922
922
  console.log('');
923
923
  console.log('Options:');
924
- console.log(' --agent <name> Wire a specific agent: claude-code, codex, gemini, amp, cursor, cline');
924
+ console.log(' --agent <name> Wire a specific agent: claude-code, codex, gemini, amp, cursor, cline, opencode');
925
925
  console.log(' --wire-hooks Wire hooks only; do not scaffold project files');
926
926
  console.log(' --email <email> Subscribe installer to the setup guide and trial reminders');
927
927
  console.log(' --dry-run Show hook changes without writing them');
@@ -1593,6 +1593,7 @@ function pro() {
1593
1593
  trackEvent('cli_pro_view', { command: 'pro' });
1594
1594
  const args = parseArgs(process.argv.slice(3));
1595
1595
  const {
1596
+ notifyHostedProActivation,
1596
1597
  resolveProKey,
1597
1598
  saveLicense,
1598
1599
  startLocalProDashboard,
@@ -1606,9 +1607,10 @@ function pro() {
1606
1607
  console.log('Self-serve side lane today: Pro ($19/mo or $149/yr).');
1607
1608
  console.log('Every licensed Pro user gets a personal local dashboard on localhost.');
1608
1609
  console.log('\nWhat is available:');
1609
- console.log(' - Hosted sync: keep lessons, rules, and dashboard state aligned across laptops, CI, containers, and agent runtimes');
1610
+ console.log(' - Personal recall: search lessons, rules, and proof');
1610
1611
  console.log(' - Local Pro dashboard: your own browser dashboard for search, gates, and DPO export');
1611
- console.log(' - Team rollout path: shared hosted lessons, org visibility, and workflow proof');
1612
+ console.log(' - Managed adapters: Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode');
1613
+ console.log(' - Team rollout path: Enterprise adds shared hosted lessons, org visibility, workflow proof');
1612
1614
  console.log(' - Commercial truth doc: source of truth for traction, pricing, and proof claims');
1613
1615
  console.log('\nLinks:');
1614
1616
  console.log(` Buy Pro : ${PRO_CHECKOUT_URL}`);
@@ -1661,7 +1663,22 @@ function pro() {
1661
1663
  console.log('\nโœ… Pro license activated!');
1662
1664
  console.log(` Key saved to: ${licensePath}`);
1663
1665
  console.log(' Launching your personal local dashboard...\n');
1664
- return launchDashboard(license.key, 'pro_activate');
1666
+ return notifyHostedProActivation({
1667
+ key: license.key,
1668
+ source: 'cli_pro_activate',
1669
+ version: license.version,
1670
+ })
1671
+ .then((notificationResult) => {
1672
+ appendLocalTelemetry({
1673
+ eventType: 'pro_activation_alert',
1674
+ version: license.version,
1675
+ timestamp: new Date().toISOString(),
1676
+ notified: Boolean(notificationResult && notificationResult.notified),
1677
+ sent: Boolean(notificationResult && notificationResult.alert && notificationResult.alert.sent),
1678
+ reason: notificationResult && notificationResult.reason ? notificationResult.reason : null,
1679
+ });
1680
+ return launchDashboard(license.key, 'pro_activate');
1681
+ });
1665
1682
  }
1666
1683
 
1667
1684
  if (args.upgrade) {
@@ -36,7 +36,7 @@ process.stderr.write(`
36
36
  โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
37
37
 
38
38
  Trial unlocks: unlimited rules, lesson search, DPO export,
39
- hosted dashboard. After 7 days, free tier limits apply.
39
+ and personal dashboard proof. After 7 days, free tier limits apply.
40
40
  Subscribe for the 5-min setup guide + weekly tips:
41
41
  npx thumbgate subscribe you@company.com
42
42
 
@@ -0,0 +1,6 @@
1
+ {
2
+ "activeKid": "tgk_fd49d8ab2055",
3
+ "keys": {
4
+ "tgk_fd49d8ab2055": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAEBVF8rLha9zsIhuiZ0CCslJK0SuCG6HL/bWXbkYVRiA=\n-----END PUBLIC KEY-----\n"
5
+ }
6
+ }
@@ -210,7 +210,7 @@
210
210
  {
211
211
  "id": "deny-network-egress",
212
212
  "layer": "Cloud",
213
- "pattern": "curl\\s|wget\\s|fetch\\(|https?://(?!github\\.com|registry\\.npmjs\\.org|api\\.anthropic\\.com)",
213
+ "pattern": "fetch\\(|https?://(?!(?:github\\.com|registry\\.npmjs\\.org|api\\.anthropic\\.com|localhost|127\\.0\\.0\\.1|\\[::1\\]|0\\.0\\.0\\.0)(?:[:/?#]|$))|(?:curl|wget)\\s+(?:-\\S+\\s+)*(?!https?://|(?:github\\.com|registry\\.npmjs\\.org|api\\.anthropic\\.com|localhost|127\\.0\\.0\\.1|\\[::1\\]|0\\.0\\.0\\.0)(?:[:/?#]|$))[\\w.-]+\\.[a-z]{2,}",
214
214
  "action": "warn",
215
215
  "unless": "egress_approved",
216
216
  "message": "Potential unauthorized network egress detected.",
@@ -2,8 +2,8 @@
2
2
  "repo": "IgorGanapolsky/ThumbGate",
3
3
  "repositoryUrl": "https://github.com/IgorGanapolsky/ThumbGate",
4
4
  "homepageUrl": "https://thumbgate.ai",
5
- "githubDescription": "Agent governance for ThumbGate: ๐Ÿ‘/๐Ÿ‘Ž become Pre-Action Checks that block repeat mistakes before code, money, or customer systems change.",
6
- "metaDescription": "Stripe Connect integration engineering for ticketing and marketplace platforms โ€” Pretix plugin shipped to Hilltown Media. ThumbGate is also the pre-action governance runtime for AI coding agents (Claude Code, Cursor, Codex, Gemini CLI): ๐Ÿ‘ thumbs up and ๐Ÿ‘Ž thumbs down feedback become history-aware lessons, shared lessons and org visibility, and PreToolUse checks that block repeated mistakes before code, money, or customer systems change. Perfect for vibe coding and human-in-the-loop workflows.",
5
+ "githubDescription": "Agent governance: thumbs become Pre-Action Checks that flag repeat mistakes and hard-block catastrophic classes before code or systems change.",
6
+ "metaDescription": "ThumbGate is the pre-action governance runtime for AI coding agents (Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode): ๐Ÿ‘ thumbs up and ๐Ÿ‘Ž thumbs down feedback become history-aware lessons stored locally; Enterprise adds shared lessons and org visibility. PreToolUse checks flag and log risky tool calls โ€” hard-blocking catastrophic classes by default and warning on the rest, with strict mode to hard-block every rule.",
7
7
  "topics": [
8
8
  "thumbgate",
9
9
  "pre-action-checks",
@@ -18,5 +18,8 @@
18
18
  "failingBuckets": [
19
19
  "fail",
20
20
  "cancel"
21
+ ],
22
+ "selfReferentialChecks": [
23
+ "Trunk Merge Queue (main)"
21
24
  ]
22
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.27.20",
3
+ "version": "1.28.0",
4
4
  "description": "ThumbGate self-improving agent governance: thumbs-up/down turns every mistake into a prevention rule and blocks repeat patterns. 36 pre-action checks, budget enforcement, and self-protection for Claude Code, Cursor, Codex, Gemini CLI, and Amp.",
5
5
  "homepage": "https://thumbgate.ai",
6
6
  "repository": {
@@ -83,6 +83,8 @@
83
83
  "scripts/explore-subcommands.js",
84
84
  "scripts/explore.js",
85
85
  "scripts/export-databricks-bundle.js",
86
+ "scripts/entitlement.js",
87
+ "config/entitlement-public-keys.json",
86
88
  "scripts/export-dpo-pairs.js",
87
89
  "scripts/export-hf-dataset.js",
88
90
  "scripts/failure-diagnostics.js",
@@ -110,6 +112,7 @@
110
112
  "scripts/hook-thumbgate-cache-updater.js",
111
113
  "scripts/hosted-config.js",
112
114
  "scripts/hybrid-feedback-context.js",
115
+ "scripts/imperative-detector.js",
113
116
  "scripts/hybrid-supervisor-agent.js",
114
117
  "scripts/inference-cache-policy.js",
115
118
  "scripts/install-shim.js",
@@ -380,7 +383,7 @@
380
383
  "social:prospect:bluesky": "node scripts/social-bluesky-prospecting.js",
381
384
  "social:prospect:bluesky:dry": "node scripts/social-bluesky-prospecting.js --dry-run",
382
385
  "social:reply-publish:bluesky:dry": "node scripts/social-reply-monitor-bluesky.js --publish-approved --dry-run",
383
- "test": "npm run test:python && 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:billing-setup && 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:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && 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:repeat-metric && npm run test:noop-detect && npm run test:action-receipts && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:memory-scope-readiness && 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:mcp-tool-annotations && npm run test:mcp-oauth && npm run test:mcp-oauth-flow && npm run test:plan-gate && npm run test:ai-component-inventory && 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:audit-pr-bot-contamination && npm run test:stripe-bootstrap-saas-catalog && 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:statusline-cache-aggregate && npm run test:public-repo-hygiene && npm run test:no-internal-orchestration-leaks && 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:lesson-semantic-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:predictive-credible-range && 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-archived-product-guard && npm run test:postgres-guard && npm run test:checkout-bot-guard && npm run test:checkout-pro-confirmation-gate && npm run test:pricing-page-telemetry && 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: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 && npm run test:hook-stop-verify-deploy && npm run test:hook-stop-anti-claim && npm run test:plausible-server-events && npm run test:activation-tracker && npm run test:activation-onboarding && npm run test:unified-revenue-rollup && npm run test:conversion-rate-stats && npm run test:external-customer-audit && npm run test:telemetry-export && npm run test:stripe-checkout-diagnostic && npm run test:stripe-business-identity-probe && npm run test:revenue-observability-doctor && npm run test:public-bundle-ratchet && npm run test:pack-runtime-integrity && npm run test:hook-self-protection && npm run test:stripe-payment-link-update && npm run test:ci-cd-hygiene-audit && npm run test:verify-marketing-pages-deployed && npm run test:install-email-capture && npm run test:install-shim && npm run test:hook-runtime-subcommands && npm run test:implementation-notes && npm run test:daily-block-cap && npm run test:free-to-paid-conversion-units && npm run test:metrics-real-endpoint && npm run test:cli-trial-and-help && npm run test:cost-cli && npm run test:silent-failure-cluster && npm run test:proof:truth && node --test tests/adaptive-reliability.test.js && npm run test:mcp-oauth-reviewer && npm run test:dfcx-gate && npm run test:dfcx-gate-server && npm run test:vertex-scorer && npm run test:dashboard-chat && npm run test:gitar-integration && npm run test:secret-redaction && npm run test:discoverable-skills && npm run test:discoverable-skill-skills && npm run test:sync-telemetry && npm run test:leak-scanner && npm run test:team-sync && npm run test:eval-rag && npm run test:async-eval-observability && npm run test:letta-adapter && npm run test:policy-engine-adapter && npm run test:tool-contract-validator && npm run test:check-update && npm run test:hermes-gate && npm run test:memory-provider-enforcement-bridge && npm run test:publisher-credential-guards && npm run test:reddit-browser-notification-watch && npm run test:payment-rails && npm run test:cursor-marketplace-doctor && npm run test:okara-money-promo-automation",
386
+ "test": "npm run test:python && 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:billing-setup && 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:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && 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:release-window && npm run test:check-congruence && npm run test:tool-registry && npm run test:repeat-metric && npm run test:noop-detect && npm run test:action-receipts && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:memory-scope-readiness && 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:mcp-tool-annotations && npm run test:mcp-oauth && npm run test:mcp-oauth-flow && npm run test:plan-gate && npm run test:ai-component-inventory && 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:entitlement && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:imperative-detector && npm run test:audit-pr-bot-contamination && npm run test:stripe-bootstrap-saas-catalog && 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:statusline-cache-aggregate && npm run test:public-repo-hygiene && npm run test:no-internal-orchestration-leaks && 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:lesson-semantic-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:predictive-credible-range && 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:xss-checkout-escape && 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-archived-product-guard && npm run test:postgres-guard && npm run test:checkout-bot-guard && npm run test:checkout-pro-confirmation-gate && npm run test:pricing-page-telemetry && 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: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 && npm run test:hook-stop-verify-deploy && npm run test:hook-stop-anti-claim && npm run test:plausible-server-events && npm run test:activation-tracker && npm run test:activation-onboarding && npm run test:unified-revenue-rollup && npm run test:conversion-rate-stats && npm run test:external-customer-audit && npm run test:telemetry-export && npm run test:stripe-checkout-diagnostic && npm run test:stripe-business-identity-probe && npm run test:revenue-observability-doctor && npm run test:public-bundle-ratchet && npm run test:pack-runtime-integrity && npm run test:hook-self-protection && npm run test:self-protect-enforcement && npm run test:stripe-payment-link-update && npm run test:ci-cd-hygiene-audit && npm run test:verify-marketing-pages-deployed && npm run test:install-email-capture && npm run test:install-shim && npm run test:hook-runtime-subcommands && npm run test:implementation-notes && npm run test:daily-block-cap && npm run test:free-to-paid-conversion-units && npm run test:metrics-real-endpoint && npm run test:cli-trial-and-help && npm run test:cost-cli && npm run test:silent-failure-cluster && npm run test:proof:truth && node --test tests/adaptive-reliability.test.js && npm run test:mcp-oauth-reviewer && npm run test:dfcx-gate && npm run test:dfcx-gate-server && npm run test:vertex-scorer && npm run test:dashboard-chat && npm run test:gitar-integration && npm run test:secret-redaction && npm run test:discoverable-skills && npm run test:discoverable-skill-skills && npm run test:sync-telemetry && npm run test:leak-scanner && npm run test:team-sync && npm run test:eval-rag && npm run test:async-eval-observability && npm run test:letta-adapter && npm run test:policy-engine-adapter && npm run test:tool-contract-validator && npm run test:check-update && npm run test:hermes-gate && npm run test:memory-provider-enforcement-bridge && npm run test:publisher-credential-guards && npm run test:reddit-browser-notification-watch && npm run test:payment-rails && npm run test:cursor-marketplace-doctor && npm run test:okara-money-promo-automation",
384
387
  "test:python": "python3 -m pytest tests/*.py",
385
388
  "test:check-update": "node --test tests/check-update.test.js",
386
389
  "test:hook-stop-verify-deploy": "node --test tests/hook-stop-verify-deploy.test.js",
@@ -410,6 +413,7 @@
410
413
  "test:single-use-credential-gate": "node --test tests/single-use-credential-gate.test.js",
411
414
  "test:structured-prompt-driven": "node --test tests/structured-prompt-driven.test.js",
412
415
  "test:require-evidence-gate": "node --test tests/require-evidence-gate.test.js",
416
+ "test:imperative-detector": "node --test tests/imperative-detector.test.js",
413
417
  "test:rule-validator": "node --test tests/rule-validator.test.js",
414
418
  "test:session-health": "node --test tests/session-health-sensor.test.js",
415
419
  "test:session-episodes": "node --test tests/session-episode-store.test.js",
@@ -442,6 +446,7 @@
442
446
  "test:lesson-rotation": "node --test tests/lesson-rotation.test.js",
443
447
  "test:feedback-quality": "node --test tests/feedback-quality.test.js",
444
448
  "test:sync-version": "node --test tests/sync-version.test.js",
449
+ "test:release-window": "node --test tests/release-window.test.js",
445
450
  "test:team-sync": "node --test tests/team-sync.test.js",
446
451
  "test:sync-telemetry": "node --test tests/sync-telemetry-from-prod.test.js",
447
452
  "test:check-congruence": "node --test tests/check-congruence.test.js",
@@ -518,7 +523,7 @@
518
523
  "test:ops": "node --test tests/qa-scenario-planner.test.js tests/adk-consolidator.test.js tests/anthropic-partner-strategy.test.js tests/auto-promote-gates.test.js tests/auto-wire-hooks.test.js tests/claude-skill.test.js tests/codegraph-context.test.js tests/commercial-signals.test.js tests/decision-journal.test.js tests/delegation-runtime.test.js tests/disagreement-mining.test.js tests/failure-diagnostics.test.js tests/gate-stats.test.js tests/gates-engine-upgrade-cta.test.js tests/git-hook-installer.test.js tests/github-billing.test.js tests/intervention-policy.test.js tests/markdown-escape.test.js tests/mcp-tools-gates.test.js tests/native-messaging-audit.test.js tests/project-bayes-e2e.test.js tests/project-bayes.test.js tests/rate-limiter.test.js tests/schedule-manager.test.js tests/session-handoff.test.js tests/skill-generator.test.js tests/smart-learning.test.js tests/spike-and-sink.test.js tests/stripe-revenue.test.js tests/stripe-webhook-route.test.js tests/stripe-webhook-rotation.test.js tests/train-from-feedback.test.js tests/workflow-hardening-sprint.test.js tests/workflow-sentinel.test.js tests/test-suite-parity.test.js tests/a2ui-engine.test.js tests/webhook-delivery.test.js tests/auto-context-packs.test.js tests/daily-block-cap.test.js tests/auto-promote-regression-gate.test.js",
519
524
  "test:session-analyzer": "node --test tests/session-analyzer.test.js",
520
525
  "test:tessl": "node --test tests/tessl-export.test.js",
521
- "test:gates": "node --test tests/gate-templates.test.js tests/gates-engine.test.js tests/claim-verification.test.js tests/secret-scanner.test.js tests/secret-fixture-safety.test.js tests/prompt-guard.test.js tests/audit-trail.test.js tests/profile-router.test.js tests/workflow-sentinel.test.js tests/docker-sandbox-planner.test.js tests/mcp-tools-suggest-fix.test.js",
526
+ "test:gates": "node --test tests/gate-templates.test.js tests/gates-engine.test.js tests/claim-verification.test.js tests/secret-scanner.test.js tests/secret-fixture-safety.test.js tests/prompt-guard.test.js tests/audit-trail.test.js tests/profile-router.test.js tests/workflow-sentinel.test.js tests/docker-sandbox-planner.test.js tests/mcp-tools-suggest-fix.test.js tests/deny-network-egress-pattern.test.js",
522
527
  "test:budget": "node --test tests/budget-guard.test.js tests/budget-enforcer.test.js tests/tokenomics-cost-guard.test.js tests/hook-no-budget-lockout.test.js",
523
528
  "test:workers": "npm --prefix workers ci && npm --prefix workers test",
524
529
  "test:evoskill": "node --test tests/evoskill.test.js",
@@ -763,7 +768,10 @@
763
768
  "cursor:marketplace:doctor:json": "node scripts/cursor-marketplace-doctor.js --json",
764
769
  "test:cursor-marketplace-doctor": "node --test tests/cursor-marketplace-doctor.test.js",
765
770
  "test:hook-self-protection": "node --test tests/hook-self-protection.test.js",
766
- "test:pack-runtime-integrity": "node --test tests/pack-runtime-integrity.test.js"
771
+ "test:self-protect-enforcement": "node --test tests/self-protect-enforcement.test.js",
772
+ "test:pack-runtime-integrity": "node --test tests/pack-runtime-integrity.test.js",
773
+ "test:entitlement": "node --test tests/entitlement.test.js",
774
+ "test:xss-checkout-escape": "node --test tests/xss-checkout-escape.test.js"
767
775
  },
768
776
  "keywords": [
769
777
  "mcp",
package/public/about.html CHANGED
@@ -66,8 +66,7 @@ __GOOGLE_SITE_VERIFICATION_META__
66
66
  "https://www.linkedin.com/in/igor-ganapolsky-5324b7330",
67
67
  "https://dev.to/igorganapolsky",
68
68
  "https://www.upwork.com/freelancers/~01b5f08ed8b1a9a3c1",
69
- "https://huggingface.co/IgorGanapolsky",
70
- "https://x.com/igorganapolsky"
69
+ "https://huggingface.co/IgorGanapolsky"
71
70
  ],
72
71
  "worksFor": {
73
72
  "@type": "Organization",
@@ -131,7 +130,6 @@ footer{padding:2rem 1.5rem;color:#64748b;font-size:.9rem;text-align:center}
131
130
  <section class="section">
132
131
  <h2>Recent ships</h2>
133
132
  <ul>
134
- <li><strong>Hilltown Media Group ยท Pretix Stripe Connect plugin</strong> โ€” production payments + automation, 100% test coverage, milestone-funded delivery.</li>
135
133
  <li><strong>ThumbGate v1.27</strong> โ€” pre-action governance for AI coding agents, available on npm as <code>thumbgate</code>.</li>
136
134
  <li><strong>Resume revenue ML stack</strong> โ€” Thompson-sampling bandit + copy/buyer logistic regression + Agentic RAG for closed-loop UpWork bidding.</li>
137
135
  </ul>
@@ -149,7 +147,6 @@ footer{padding:2rem 1.5rem;color:#64748b;font-size:.9rem;text-align:center}
149
147
  <li><a href="https://dev.to/igorganapolsky" rel="me">dev.to</a></li>
150
148
  <li><a href="https://www.upwork.com/freelancers/~01b5f08ed8b1a9a3c1" rel="me">Upwork</a></li>
151
149
  <li><a href="https://huggingface.co/IgorGanapolsky" rel="me">Hugging Face</a></li>
152
- <li><a href="https://x.com/igorganapolsky" rel="me">X</a></li>
153
150
  </ul>
154
151
 
155
152
  </main>