thumbgate 1.34.3 → 1.35.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.
@@ -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.34.3",
4
+ "version": "1.35.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.34.3",
3
+ "version": "1.35.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",
@@ -2,13 +2,13 @@
2
2
  "mcpServers": {
3
3
  "thumbgate": {
4
4
  "command": "npx",
5
- "args": ["--yes", "--package", "thumbgate@1.34.3", "thumbgate", "serve"]
5
+ "args": ["--yes", "--package", "thumbgate@1.35.0", "thumbgate", "serve"]
6
6
  }
7
7
  },
8
8
  "hooks": {
9
9
  "preToolUse": {
10
10
  "command": "npx",
11
- "args": ["--yes", "--package", "thumbgate@1.34.3", "thumbgate", "gate-check"]
11
+ "args": ["--yes", "--package", "thumbgate@1.35.0", "thumbgate", "gate-check"]
12
12
  }
13
13
  }
14
14
  }
@@ -9,12 +9,12 @@ version: "1"
9
9
  skills:
10
10
  thumbgate-gate-check:
11
11
  description: "ThumbGate PreToolUse gate — blocks known-bad tool calls"
12
- command: "npx --yes --package thumbgate@1.34.3 thumbgate gate-check"
12
+ command: "npx --yes --package thumbgate@1.35.0 thumbgate gate-check"
13
13
  trigger: pre_tool_use
14
14
 
15
15
  thumbgate-feedback:
16
16
  description: "ThumbGate feedback capture — logs user prompt context"
17
- command: "npx --yes --package thumbgate@1.34.3 thumbgate hook-auto-capture"
17
+ command: "npx --yes --package thumbgate@1.35.0 thumbgate hook-auto-capture"
18
18
  trigger: user_prompt
19
19
 
20
20
  mcp:
@@ -23,6 +23,6 @@ mcp:
23
23
  args:
24
24
  - "--yes"
25
25
  - "--package"
26
- - "thumbgate@1.34.3"
26
+ - "thumbgate@1.35.0"
27
27
  - "thumbgate"
28
28
  - "serve"
@@ -328,7 +328,7 @@ const {
328
328
  finalizeSession: finalizeFeedbackSession,
329
329
  } = require('../../scripts/feedback-session');
330
330
 
331
- const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.34.3' };
331
+ const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.35.0' };
332
332
  const COMMERCE_CATEGORIES = [
333
333
  'product_recommendation',
334
334
  'brand_compliance',
@@ -7,7 +7,7 @@
7
7
  "npx",
8
8
  "--yes",
9
9
  "--package",
10
- "thumbgate@1.34.3",
10
+ "thumbgate@1.35.0",
11
11
  "thumbgate",
12
12
  "serve"
13
13
  ],
package/bin/cli.js CHANGED
@@ -1659,13 +1659,18 @@ function compact() {
1659
1659
 
1660
1660
  function cfo() {
1661
1661
  const args = parseArgs(process.argv.slice(3));
1662
+ const { createCliProgress } = require(path.join(PKG_ROOT, 'scripts', 'cli-progress'));
1663
+ const progress = createCliProgress();
1662
1664
  const { getOperationalBillingSummary } = require(path.join(PKG_ROOT, 'scripts', 'operational-summary'));
1665
+ progress.start('Loading CFO billing summary…');
1663
1666
  getOperationalBillingSummary({
1664
1667
  window: args.window,
1665
1668
  timeZone: args.timezone,
1666
1669
  now: args.now,
1670
+ onProgress: (message) => progress.update(message),
1667
1671
  })
1668
1672
  .then(({ source, summary, fallbackReason }) => {
1673
+ progress.succeed(`Billing summary ready (${source})`);
1669
1674
  console.log(JSON.stringify({
1670
1675
  source,
1671
1676
  fallbackReason,
@@ -1674,6 +1679,7 @@ function cfo() {
1674
1679
  process.exit(0);
1675
1680
  })
1676
1681
  .catch((err) => {
1682
+ progress.fail('CFO billing summary failed');
1677
1683
  console.error(err && err.message ? err.message : err);
1678
1684
  process.exit(1);
1679
1685
  });
@@ -1691,14 +1697,19 @@ function repairGithubMarketplace() {
1691
1697
 
1692
1698
  function northStar() {
1693
1699
  const args = parseArgs(process.argv.slice(3));
1700
+ const { createCliProgress } = require(path.join(PKG_ROOT, 'scripts', 'cli-progress'));
1701
+ const progress = createCliProgress();
1694
1702
  const { getOperationalDashboard } = require(path.join(PKG_ROOT, 'scripts', 'operational-dashboard'));
1695
1703
 
1704
+ progress.start('Loading North Star metrics…');
1696
1705
  getOperationalDashboard({
1697
1706
  window: args.window,
1698
1707
  timeZone: args.timezone,
1699
1708
  now: args.now,
1709
+ onProgress: (message) => progress.update(message),
1700
1710
  })
1701
1711
  .then(({ source, data, fallbackReason }) => {
1712
+ progress.succeed(`North Star ready (${source})`);
1702
1713
  const summary = data.analytics.northStar || {};
1703
1714
  const revenue = data.analytics.revenue || {};
1704
1715
 
@@ -1721,6 +1732,7 @@ function northStar() {
1721
1732
  process.exit(0);
1722
1733
  })
1723
1734
  .catch((err) => {
1735
+ progress.fail('North Star failed');
1724
1736
  console.error(err && err.message ? err.message : err);
1725
1737
  process.exit(1);
1726
1738
  });
@@ -3038,21 +3050,35 @@ function installMcp() {
3038
3050
 
3039
3051
  function dashboard() {
3040
3052
  const args = parseArgs(process.argv.slice(3));
3053
+ const { createCliProgress } = require(path.join(PKG_ROOT, 'scripts', 'cli-progress'));
3054
+ const progress = createCliProgress();
3055
+
3041
3056
  if (args.open || args.web) {
3042
3057
  const { resolveProjectDir } = require(path.join(PKG_ROOT, 'scripts', 'feedback-paths'));
3043
3058
  const projectDir = resolveProjectDir({ cwd: process.cwd(), env: process.env });
3044
3059
  const port = process.env.PORT || 3456;
3045
3060
  const url = `http://127.0.0.1:${port}/dashboard?project=${encodeURIComponent(projectDir)}`;
3046
3061
 
3062
+ progress.start(`Starting local dashboard on :${port}…`);
3047
3063
  ensureDash(Number(port))
3048
3064
  .then((server) => {
3065
+ // Keep the stable stdout contract: scripts/tests parse `API <port> pid <n>`.
3066
+ // Progress stays on stderr so humans still see a spinner without breaking parsers.
3049
3067
  if (server.started) {
3050
3068
  console.log(`API ${port} pid ${server.pid}`);
3069
+ progress.update(`Local API listening (pid ${server.pid})…`);
3070
+ } else {
3071
+ progress.update('Local API already running…');
3051
3072
  }
3073
+ progress.update('Opening browser…');
3052
3074
  return openBrowser(url);
3053
3075
  })
3054
- .then(() => process.exit(0))
3076
+ .then(() => {
3077
+ progress.succeed(`Dashboard open: ${url}`);
3078
+ process.exit(0);
3079
+ })
3055
3080
  .catch((err) => {
3081
+ progress.fail('Failed to open local dashboard');
3056
3082
  console.error(err && err.message ? err.message : err);
3057
3083
  process.exit(1);
3058
3084
  });
@@ -3062,16 +3088,25 @@ function dashboard() {
3062
3088
  const { printDashboard } = require(path.join(PKG_ROOT, 'scripts', 'dashboard'));
3063
3089
  const { getOperationalDashboard } = require(path.join(PKG_ROOT, 'scripts', 'operational-dashboard'));
3064
3090
 
3091
+ progress.start('Loading ThumbGate dashboard…');
3065
3092
  getOperationalDashboard({
3066
3093
  window: args.window,
3067
3094
  timeZone: args.timezone,
3068
3095
  now: args.now,
3096
+ onProgress: (message) => progress.update(message),
3069
3097
  })
3070
- .then(({ data }) => {
3098
+ .then(({ data, source }) => {
3099
+ const sourceLabel = source === 'hosted'
3100
+ ? 'hosted'
3101
+ : source === 'local-unverified'
3102
+ ? 'local (hosted unavailable)'
3103
+ : 'local';
3104
+ progress.succeed(`Dashboard ready (${sourceLabel})`);
3071
3105
  printDashboard(data);
3072
3106
  process.exit(0);
3073
3107
  })
3074
3108
  .catch((err) => {
3109
+ progress.fail('Dashboard failed');
3075
3110
  console.error(err && err.message ? err.message : err);
3076
3111
  process.exit(1);
3077
3112
  });
@@ -660,6 +660,78 @@
660
660
  "problem": "Blocks any file edit or write tool call that is not within a specified active/target directory.",
661
661
  "roi": "Restricts agent edits to a controlled workspace, preventing scope drift, accidental modification of configuration or source files, and unwanted global refactors during focused task debugging.",
662
662
  "rollout": "Enable dynamically on-demand using /freeze to specify the only path(s) the agent is allowed to write to during the session."
663
+ },
664
+ {
665
+ "id": "block-vlt-install-vulnerable-deps",
666
+ "name": "Block vlt install of vulnerable dependencies",
667
+ "category": "JavaScript Package Registry Governance",
668
+ "signal": "👎",
669
+ "defaultAction": "block",
670
+ "severity": "critical",
671
+ "pattern": "(vlt\\s+install|vlt\\s+add).*?(--audit\\s+critical|vuln|cve|high-severity|known-vuln|left-pad|event-stream|colors|unsafe|insecure|deprecated|obsolete|legacy|vulnerable|unresolved-cve)",
672
+ "problem": "Blocks vlt install/add of packages flagged with --audit critical or known-vulnerable CVE references (e.g. left-pad, event-stream, colors). vlt's hosted registry provides real-time vulnerability scanning; agents must not bypass the audit pipeline.",
673
+ "roi": "Prevents supply-chain compromise via known-vulnerable dependencies. Direct 1st-order risk: left-pad-style incidents cause cascading production outages. Second-order: agents that install without audit never learn to check. Captured feedback (thumbgate capture --tag supply-chain-security) turns each bypass into a prevention rule.",
674
+ "rollout": "Require --audit critical on all vlt install/add. Block packages with known CVE references. Auto-capture feedback for each bypass attempt."
675
+ },
676
+ {
677
+ "id": "require-review-vlt-registry-override",
678
+ "name": "Require review for vlt registry override to non-approved hosts",
679
+ "category": "JavaScript Package Registry Governance",
680
+ "signal": "👎",
681
+ "defaultAction": "block",
682
+ "severity": "critical",
683
+ "pattern": "(vlt\\s+config\\s+set|vlt\\s+registry\\s+add|vlt\\s+set\\s+registry).*(registry|registry-url|self-host|override|redirect|mirror|vsr)",
684
+ "problem": "Blocks vlt registry configuration that redirects dependency resolution to non-approved self-hosted VSR or mirror hosts. Agents must only pull from allowlisted registries (vlt.sh, registry.npmjs.org, approved internal VSR).",
685
+ "roi": "High: Prevents supply-chain attacks via rogue registry configuration. Critical for enterprise on-prem/air-gapped environments where vlt's self-hosted VSR is the approved source. Captured feedback (thumbgate capture --tag registry-override) generates prevention rules for unauthorized redirect patterns.",
686
+ "rollout": "Block all registry-setting commands for non-allowlisted hosts. Warn (human review) for internal VSR. Allowlist vlt.sh, registry.npmjs.org, and approved internal domains."
687
+ },
688
+ {
689
+ "id": "enforce-vlt-workspace-dep-pinning",
690
+ "name": "Enforce pinned dependency versions in vlt workspace installs",
691
+ "category": "JavaScript Package Registry Governance",
692
+ "signal": "👎",
693
+ "defaultAction": "block",
694
+ "severity": "high",
695
+ "pattern": "(vlt\\s+add|vlt\\s+install).*?(@\\s*(?:\\^|~|>|<|>=|<=|\\*|latest|next))",
696
+ "problem": "Blocks vlt add/install with unpinned (wildcard, range, latest/next) dependency versions. vlt workspace installs with @*, @^, @~, @>, @<, @>=, @<=, @latest, @next resolve to potentially vulnerable latest versions instead of audited pinned versions.",
697
+ "roi": "Pinned dependencies are the bedrock of reproducible builds and vulnerability scanning. vlt's hosted registry provides lockfiles by default; agents must respect them. Feedback (thumbgate capture --tag dep-pinning) from each bypass generates a rule for the specific unpinned package pattern.",
698
+ "rollout": "Enforce exact version pinning in workspace vlt add/install. Block @* ^ ~ > < >= <= latest next. Allow exact versions like @4.18.2."
699
+ },
700
+ {
701
+ "id": "gate-vlt-package-publishing",
702
+ "name": "Gate vlt package publishing for provenance and scope safety",
703
+ "category": "JavaScript Package Registry Governance",
704
+ "signal": "👎",
705
+ "defaultAction": "block",
706
+ "severity": "critical",
707
+ "pattern": "(vlt\\s+publish|vlt\\s+pack|npm\\s+publish).*(no-provenance|unsigned|no-2fa|no-attestation|typosquat|squat|unscoped|no-scope)",
708
+ "problem": "Blocks vlt/npm publish of packages without provenance attestation, 2FA, or proper scope/access controls. vlt's hosted registry supports provenance; agents must not publish unsigned or unscoped packages.",
709
+ "roi": "Prevents typosquatting and supply-chain attacks via unsigned package publishing. Aligns with vlt's security posture and npm provenance ecosystem. Captures high-value feedback for prevention rules.",
710
+ "rollout": "Require provenance attestation and 2FA for all vlt publish operations. Block publishes to scopes matching existing packages (typosquatting detection)."
711
+ },
712
+ {
713
+ "id": "block-vlt-private-registry-bypass",
714
+ "name": "Block vlt private registry bypass via npmrc or env override",
715
+ "category": "JavaScript Package Registry Governance",
716
+ "signal": "👎",
717
+ "defaultAction": "block",
718
+ "severity": "critical",
719
+ "pattern": "(\\.npmrc|vlt.*config|NPM_CONFIG_REGISTRY|VLT_REGISTRY).*(https?://(?!(?:registry\\.npmjs\\.org|vlt\\.sh|localhost|127\\.0\\.0\\.1|\\[::1\\]|0\\.0\\.0\\.0)(?:[:/?#]|$))[\\w.-]+)",
720
+ "problem": "Blocks vlt/npm configuration that redirects dependency resolution to unapproved private or external registries via .npmrc, environment variables, or CLI config overrides.",
721
+ "roi": "High: Prevents data exfil and supply-chain compromise via rogue registry configuration. Critical for enterprise on-prem/air-gapped environments where vlt's self-hosted VSR is used.",
722
+ "rollout": "Block all registry overrides to non-allowlisted hosts. Allowlist vlt.sh, registry.npmjs.org, and approved internal VSR domains."
723
+ },
724
+ {
725
+ "id": "validate-context-before-codegen",
726
+ "name": "Validate context freshness and relevance before code generation",
727
+ "category": "AI Engineering Stack Safety",
728
+ "signal": "👎",
729
+ "defaultAction": "block",
730
+ "severity": "high",
731
+ "pattern": "(Edit|Write|MultiEdit|StrReplace).*",
732
+ "problem": "Agents frequently generate code without first ensuring AGENTS.md, CLAUDE.md, test infrastructure, and ownership context are fresh and relevant. Per the Hugging Face Context Course: 'an agent is only as good as the context it has.' Results in style violations, wrong test commands, and rework.",
733
+ "roi": "Eliminates rework from stale or missing project context. Direct 1st-order improvement to context-engineering workflows (Hugging Face Context Course Units 1-3). Reduces PR churn and review cycles.",
734
+ "rollout": "Before any Edit/Write/MultiEdit, verify AGENTS.md exists and is fresh (modified within last 7 days). Require explicit context-freshness check before code edits. Capture feedback with 'missing-context' and 'stale-context' tags."
663
735
  }
664
736
  ]
665
737
  }
@@ -180,6 +180,19 @@
180
180
  "CWE-863"
181
181
  ]
182
182
  },
183
+ {
184
+ "id": "outbound-email-send",
185
+ "layer": "Execution",
186
+ "trigger": "any:outbound_email_send",
187
+ "pattern": "(?:(?:^|[_.])send[_-]?(?:message|mail|email|now|draft)s?\\b|emailer[_-]?messages?[_-]?send|(?:^|[_.])send_draft\\b|users\\/[^/\\s\"\\']+\\/messages\\/send|\\bmessages\\/send\\b|messages\\s*\\(\\s*\\)\\s*\\.\\s*send\\s*\\(|users\\s*\\(\\s*\\)\\s*\\.\\s*messages\\s*\\(\\s*\\)\\s*\\.\\s*send\\b|(?:^|[\\s;/])sendmail\\b|\\bmsmtp\\b|\\bmailx?\\s+-s\\b|(?:import\\s+smtplib|from\\s+smtplib\\b|\\bsmtplib\\.SMTP\\b)|(?:require\\s*\\(\\s*[\\'\"]nodemailer[\\'\"]\\s*\\)|from\\s+[\\'\"]nodemailer[\\'\"]|nodemailer\\.createTransport)|createTransport\\s*\\()",
188
+ "action": "block",
189
+ "message": "Outbound email SEND is blocked. Save a draft instead; a human reviews Drafts and sends personally. create_draft / update_draft / list_drafts remain allowed.",
190
+ "severity": "critical",
191
+ "compliance": [
192
+ "SOC2-CC6.1",
193
+ "CWE-285"
194
+ ]
195
+ },
183
196
  {
184
197
  "id": "git-reset-hard",
185
198
  "layer": "Execution",
@@ -20,6 +20,9 @@
20
20
  "cancel"
21
21
  ],
22
22
  "selfReferentialChecks": [
23
- "Trunk Merge Queue (main)"
23
+ "Trunk Merge Queue (main)",
24
+ "SonarCloud Code Analysis",
25
+ "SonarCloud",
26
+ "Merge blob reports"
24
27
  ]
25
28
  }
@@ -133,6 +133,48 @@
133
133
  "medianLatencyMs",
134
134
  "costPerEvolutionUsd"
135
135
  ]
136
+ },
137
+ "js-package-registry-governance": {
138
+ "label": "JavaScript package registry governance",
139
+ "summary": "Governance, gating, and supply-chain enforcement for agents consuming and publishing JavaScript packages via npm, vlt registry, and self-hosted VSR (serverless registry). Pre-action checks for dependency installation, registry override, provenance attestation, and workspace dependency pinning.",
140
+ "desiredStrengths": ["agentic-coding", "tool-use", "supply-chain-security", "reliability", "security", "audit-trail"],
141
+ "targetContextWindow": 64000,
142
+ "benchmarkCommands": [
143
+ "npx thumbgate eval --from-feedback --json --min-score=0",
144
+ "node scripts/gate-eval.js run",
145
+ "npx thumbgate bench --json --min-score=90"
146
+ ],
147
+ "metrics": [
148
+ "passRate",
149
+ "falsePositiveRate",
150
+ "dependencyAuditRecall",
151
+ "typosquattingDetectionRate",
152
+ "registryOverrideBlockRate",
153
+ "provenanceAttestationRate",
154
+ "medianLatencyMs",
155
+ "costPer1kActionsUsd"
156
+ ]
157
+ },
158
+ "context-engineering": {
159
+ "label": "Context engineering for AI code agents",
160
+ "summary": "Evaluating models on context structuring, skill synthesis, MCP tool governance, sub-agent coordination, and hook-based lifecycle automation for AI code agent workflows (Claude Code, Codex, OpenCode). Based on the Hugging Face Context Course curriculum.",
161
+ "desiredStrengths": ["agentic-coding", "tool-use", "context-structuring", "skill-synthesis", "MCP-governance", "reliability", "long-horizon-coding"],
162
+ "targetContextWindow": 128000,
163
+ "benchmarkCommands": [
164
+ "npx thumbgate eval --from-feedback --json --min-score=0",
165
+ "node scripts/gate-eval.js run",
166
+ "npx thumbgate bench --json --min-score=90"
167
+ ],
168
+ "metrics": [
169
+ "passRate",
170
+ "contextFreshnessRate",
171
+ "skillValidationAccuracy",
172
+ "mcpToolSafetyRate",
173
+ "subagentCoordinationCompliance",
174
+ "falsePositiveRate",
175
+ "medianLatencyMs",
176
+ "costPer1kActionsUsd"
177
+ ]
136
178
  }
137
179
  },
138
180
  "candidates": [
@@ -329,6 +371,39 @@
329
371
  "costClass": "medium",
330
372
  "strengths": ["agentic-coding", "tool-use", "reliability", "long-context", "data-analysis", "cost-efficiency"],
331
373
  "notes": "Google's 3.1 Pro Preview model with 55.5 Coding Index and massive 2M token context window. Strong choice for complex RAG tasks, repository-scale auditing, and long-context trace analysis."
374
+ },
375
+ {
376
+ "id": "vlt/vlt-registry-hosted",
377
+ "vendor": "vlt",
378
+ "family": "javascript-package-registry",
379
+ "provider": "vlt",
380
+ "model": "hosted-registry",
381
+ "contextWindow": 10000,
382
+ "costClass": "low",
383
+ "strengths": ["supply-chain-security", "package-management", "audit-trail", "reliability", "security"],
384
+ "notes": "vlt's hosted package registry service (launched Aug 2026) with secure npm mirror, private registries, and VSR (self-hosted serverless registry). ThumbGate gates integrate via preToolUse hooks on vlt install/add/publish and registry config overrides. Pair with require-local-dependency-vulnerability-scan and gate-vlt-package-publishing templates. See adapters/vlt/VLT.md and https://vlt.io/blog/1-0."
385
+ },
386
+ {
387
+ "id": "vlt/vlt-vsr-self-hosted",
388
+ "vendor": "vlt",
389
+ "family": "javascript-package-registry",
390
+ "provider": "vlt",
391
+ "model": "self-hosted-vsr",
392
+ "contextWindow": 10000,
393
+ "costClass": "low",
394
+ "strengths": ["supply-chain-security", "package-management", "on-prem", "airgap", "audit-trail", "security"],
395
+ "notes": "vlt's self-hosted VSR (serverless registry) for enterprise on-prem and air-gapped environments. ThumbGate's block-vlt-private-registry-bypass and require-review-vlt-registry-override gate templates enforce approved registry hosts. Critical for enterprises where most data is not cloud-native."
396
+ },
397
+ {
398
+ "id": "huggingface/context-engineering-agent",
399
+ "vendor": "Hugging Face",
400
+ "family": "context-engineering",
401
+ "provider": "huggingface",
402
+ "model": "context-engineering-agent",
403
+ "contextWindow": 200000,
404
+ "costClass": "low",
405
+ "strengths": ["context-structuring", "skill-synthesis", "MCP-governance", "agentic-coding", "tool-use", "reliability"],
406
+ "notes": "Model optimized for the Hugging Face Context Course curriculum — context engineering for AI code agents (Claude Code, Codex, OpenCode). Excels at structuring knowledge so agents find context efficiently. Evaluated on MCP tool governance, skill synthesis validation, and hook-based lifecycle automation. See docs/guides/huggingface-context-course-governance.md and adapters/huggingface-context-course/."
332
407
  }
333
408
  ]
334
409
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.34.3",
3
+ "version": "1.35.0",
4
4
  "description": "ThumbGate Pre-Action Checks self-improve from ranked lessons and repeated failures, hard-block detected secret leaks, and block matches in strict mode.",
5
5
  "homepage": "https://thumbgate.ai",
6
6
  "repository": {
@@ -64,6 +64,7 @@
64
64
  "scripts/cli-status.js",
65
65
  "scripts/cli-telemetry.js",
66
66
  "scripts/cli-test-block.js",
67
+ "scripts/cli-progress.js",
67
68
  "scripts/cloudflare-dynamic-sandbox.js",
68
69
  "scripts/code-graph-guardrails.js",
69
70
  "scripts/code-mode-mcp-plan.js",
@@ -81,6 +82,7 @@
81
82
  "scripts/dashboard-chat.js",
82
83
  "scripts/dashboard-render-spec.js",
83
84
  "scripts/dashboard.js",
85
+ "scripts/dashboard-limits.js",
84
86
  "scripts/decision-journal.js",
85
87
  "scripts/deepseek-v4-runtime-guardrails.js",
86
88
  "scripts/docker-sandbox-planner.js",
@@ -463,7 +465,7 @@
463
465
  "social:prospect:bluesky": "node scripts/social-bluesky-prospecting.js",
464
466
  "social:prospect:bluesky:dry": "node scripts/social-bluesky-prospecting.js --dry-run",
465
467
  "social:reply-publish:bluesky:dry": "node scripts/social-reply-monitor-bluesky.js --publish-approved --dry-run",
466
- "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:proof-pack-cadence && npm run test:grafana-revenue-evidence && 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:canary && 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:verification-evidence && 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:universal-claim-evaluator && 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:stop-hook-json-contract && 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:jsonl-window && npm run test:observability-env && npm run test:glama-mcp && npm run test:prove-glama-mcp && 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:never-bypass-branch-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:rag-pipeline && npm run test:autonomous-reliability && 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:service-checkout-price-integrity && npm run test:cursor-marketplace-doctor && npm run test:plugin-hooks-manifest && npm run test:okara-money-promo-automation && npm run test:retrieval-window && npm run test:risk-quality && npm run test:eval-mining && npm run test:state-backup && npm run test:eval-golden && npm run test:task-scope-lease && npm run test:evaluations-page && npm run test:agent-install-paths && npm run test:mcp-gate-check && npm run test:adapter-pins && npm run test:secret-egress && npm run test:harness-tool-names && npm run test:feedback-reward && npm run test:capability-wiring",
468
+ "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:proof-pack-cadence && npm run test:grafana-revenue-evidence && 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:canary && 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:verification-evidence && 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:vlt && npm run test:hf-context && npm run test:proof-common && 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:universal-claim-evaluator && 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:stop-hook-json-contract && 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:jsonl-window && npm run test:observability-env && npm run test:glama-mcp && npm run test:prove-glama-mcp && 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:never-bypass-branch-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:rag-pipeline && npm run test:autonomous-reliability && 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:service-checkout-price-integrity && npm run test:cursor-marketplace-doctor && npm run test:plugin-hooks-manifest && npm run test:okara-money-promo-automation && npm run test:retrieval-window && npm run test:risk-quality && npm run test:eval-mining && npm run test:state-backup && npm run test:eval-golden && npm run test:task-scope-lease && npm run test:evaluations-page && npm run test:agent-install-paths && npm run test:mcp-gate-check && npm run test:adapter-pins && npm run test:secret-egress && npm run test:harness-tool-names && npm run test:feedback-reward && npm run test:capability-wiring",
467
469
  "test:python": "python3 -m pytest tests/*.py",
468
470
  "test:check-update": "node --test tests/check-update.test.js",
469
471
  "test:hook-stop-verify-deploy": "node --test tests/hook-stop-verify-deploy.test.js",
@@ -617,7 +619,7 @@
617
619
  "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/financial-control-plane.test.js tests/financial-spend-attack-matrix.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 tests/install-spend-guard.test.js tests/spend-guard-path-precision.test.js tests/spend-guard-hook-contract.test.js tests/enforcement-provenance.test.js",
618
620
  "test:session-analyzer": "node --test tests/session-analyzer.test.js",
619
621
  "test:tessl": "node --test tests/tessl-export.test.js",
620
- "test:gates": "node --test --test-concurrency=1 tests/gate-templates.test.js tests/gates-engine.test.js tests/claim-verification.test.js tests/universal-claim-evaluator.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 tests/git-pathspec-scope.test.js tests/git-global-option-bypass.test.js tests/gate-evasion-matrix.test.js",
622
+ "test:gates": "node --test --test-concurrency=1 tests/gate-templates.test.js tests/gates-engine.test.js tests/gates-engine-outbound-email.test.js tests/claim-verification.test.js tests/universal-claim-evaluator.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 tests/git-pathspec-scope.test.js tests/git-global-option-bypass.test.js tests/gate-evasion-matrix.test.js",
621
623
  "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",
622
624
  "test:workers": "npm --prefix workers ci && npm --prefix workers test",
623
625
  "test:evoskill": "node --test tests/evoskill.test.js",
@@ -803,7 +805,10 @@
803
805
  "test:interaction-model": "node --test tests/interaction-model.test.js tests/interaction-model-e2e.test.js",
804
806
  "aws-blocks:guardrails": "node scripts/aws-blocks-guardrails.js",
805
807
  "test:aws-blocks-guardrails": "node --test tests/aws-blocks-guardrails.test.js",
806
- "test:high-roi": "node --test tests/high-roi.test.js tests/model-candidates.test.js tests/autonomous-workflow.test.js tests/high-roi-agent-workflows.test.js tests/interaction-model.test.js tests/interaction-model-e2e.test.js tests/code-graph-guardrails.test.js tests/proxy-pointer-rag-guardrails.test.js tests/rag-precision-guardrails.test.js tests/ai-engineering-stack-guardrails.test.js tests/long-running-agent-context-guardrails.test.js tests/reasoning-efficiency-guardrails.test.js tests/deepseek-v4-runtime-guardrails.test.js tests/upstream-contribution-engine.test.js tests/proactive-agent-eval-guardrails.test.js tests/reward-hacking-guardrails.test.js tests/chatgpt-ads-readiness-pack.test.js tests/oss-pr-opportunity-scout.test.js tests/agent-design-governance.test.js tests/gemini-embedding-policy.test.js tests/openclaw-agent-governance-kit.test.js tests/agent-operations-planner.test.js tests/aws-blocks-guardrails.test.js",
808
+ "test:vlt": "node --test tests/vlt-proof.test.js",
809
+ "test:hf-context": "node --test tests/hf-context-course.test.js",
810
+ "test:proof-common": "node --test tests/proof-common.test.js",
811
+ "test:high-roi": "node --test tests/high-roi.test.js tests/model-candidates.test.js tests/autonomous-workflow.test.js tests/high-roi-agent-workflows.test.js tests/interaction-model.test.js tests/interaction-model-e2e.test.js tests/code-graph-guardrails.test.js tests/proxy-pointer-rag-guardrails.test.js tests/rag-precision-guardrails.test.js tests/ai-engineering-stack-guardrails.test.js tests/long-running-agent-context-guardrails.test.js tests/reasoning-efficiency-guardrails.test.js tests/deepseek-v4-runtime-guardrails.test.js tests/upstream-contribution-engine.test.js tests/proactive-agent-eval-guardrails.test.js tests/reward-hacking-guardrails.test.js tests/chatgpt-ads-readiness-pack.test.js tests/oss-pr-opportunity-scout.test.js tests/agent-design-governance.test.js tests/gemini-embedding-policy.test.js tests/openclaw-agent-governance-kit.test.js tests/agent-operations-planner.test.js tests/aws-blocks-guardrails.test.js tests/vlt-proof.test.js tests/hf-context-course.test.js tests/proof-common.test.js",
807
812
  "test:public-static-assets": "node --test tests/public-static-assets.test.js tests/public-checkout-intent-gate.test.js tests/public-enterprise-capability-boundary.test.js",
808
813
  "test:token-savings": "node --test tests/token-savings.test.js",
809
814
  "test:cost-cli": "node --test tests/cost-cli.test.js tests/conversion-receipt.test.js",
@@ -857,7 +862,7 @@
857
862
  "test:mcp-oauth-reviewer": "node --test tests/mcp-oauth-reviewer.test.js",
858
863
  "test:dashboard-chat": "node --test tests/dashboard-chat.test.js",
859
864
  "test:gitar-integration": "node --test tests/gitar-integration.test.js",
860
- "test:api": "node --test --test-concurrency=1 tests/api-server.test.js tests/api-events-sse.test.js tests/api-auth-config.test.js tests/mcp-server.test.js tests/adapters.test.js tests/openapi-parity.test.js tests/budget-guard.test.js tests/context-manager.test.js tests/contextfs.test.js tests/job-api.test.js tests/pack-templates.test.js tests/dashboard.test.js tests/dashboard-render-spec.test.js tests/dashboard-html.test.js tests/agent-readiness.test.js tests/mcp-policy.test.js tests/subagent-profiles.test.js tests/intent-router.test.js tests/internal-agent-bootstrap.test.js tests/lesson-search.test.js tests/thumbgate-search.test.js tests/document-intake.test.js tests/rubric-engine.test.js tests/self-healing-check.test.js tests/self-heal.test.js tests/feedback-schema.test.js tests/thompson-sampling.test.js tests/feedback-sequences.test.js tests/diversity-tracking.test.js tests/vector-store.test.js tests/gemini-embedding-policy.test.js tests/feedback-attribution.test.js tests/hybrid-feedback-context.test.js tests/loop-closure.test.js tests/code-reasoning.test.js tests/feedback-loop.test.js tests/feedback-inbox-read.test.js tests/feedback-to-memory.test.js tests/test-coverage.test.js tests/version-metadata.test.js tests/claude-mcpb.test.js tests/claude-codex-bridge.test.js tests/cursor-plugin.test.js tests/codex-plugin.test.js tests/ide-marketplace-extensions.test.js tests/telemetry-analytics.test.js tests/public-landing.test.js tests/lessons-page.test.js tests/pro-landing.test.js tests/local-model-profile.test.js tests/risk-scorer.test.js tests/context-compaction.test.js tests/reminder-engine.test.js tests/verification-loop.test.js tests/async-job-runner.test.js tests/commerce-quality.test.js tests/recall-limit.test.js tests/problem-detail.test.js tests/natural-language-harness.test.js tests/settings-hierarchy.test.js tests/classifier-routing.test.js",
865
+ "test:api": "node --test --test-concurrency=1 tests/api-server.test.js tests/api-events-sse.test.js tests/api-auth-config.test.js tests/mcp-server.test.js tests/adapters.test.js tests/openapi-parity.test.js tests/budget-guard.test.js tests/context-manager.test.js tests/contextfs.test.js tests/job-api.test.js tests/pack-templates.test.js tests/dashboard.test.js tests/dashboard-jsonl-bound.test.js tests/dashboard-limits.test.js tests/cli-progress.test.js tests/dashboard-render-spec.test.js tests/dashboard-html.test.js tests/agent-readiness.test.js tests/mcp-policy.test.js tests/subagent-profiles.test.js tests/intent-router.test.js tests/internal-agent-bootstrap.test.js tests/lesson-search.test.js tests/thumbgate-search.test.js tests/document-intake.test.js tests/rubric-engine.test.js tests/self-healing-check.test.js tests/self-heal.test.js tests/feedback-schema.test.js tests/thompson-sampling.test.js tests/feedback-sequences.test.js tests/diversity-tracking.test.js tests/vector-store.test.js tests/gemini-embedding-policy.test.js tests/feedback-attribution.test.js tests/hybrid-feedback-context.test.js tests/loop-closure.test.js tests/code-reasoning.test.js tests/feedback-loop.test.js tests/feedback-inbox-read.test.js tests/feedback-to-memory.test.js tests/test-coverage.test.js tests/version-metadata.test.js tests/claude-mcpb.test.js tests/claude-codex-bridge.test.js tests/cursor-plugin.test.js tests/codex-plugin.test.js tests/ide-marketplace-extensions.test.js tests/telemetry-analytics.test.js tests/public-landing.test.js tests/lessons-page.test.js tests/pro-landing.test.js tests/local-model-profile.test.js tests/risk-scorer.test.js tests/context-compaction.test.js tests/reminder-engine.test.js tests/verification-loop.test.js tests/async-job-runner.test.js tests/commerce-quality.test.js tests/recall-limit.test.js tests/problem-detail.test.js tests/natural-language-harness.test.js tests/settings-hierarchy.test.js tests/classifier-routing.test.js",
861
866
  "test:leak-scanner": "node --test tests/leak-scanner.test.js",
862
867
  "test:tool-contract-validator": "node --test tests/tool-contract-validator.test.js",
863
868
  "test:letta-adapter": "node --test tests/letta-adapter.test.js",
@@ -912,6 +917,10 @@
912
917
  "explore:reliability:ci": "node scripts/prove-reliability.js --seed=42 --iterations=10",
913
918
  "test:glama-mcp": "node --test tests/glama-mcp-start-contract.test.js",
914
919
  "prove:glama-mcp": "node scripts/prove-glama-mcp-start.js",
920
+ "prove:vlt-governance": "node --test tests/vlt-proof.test.js",
921
+ "prove:hf-context-course": "node --test tests/hf-context-course.test.js",
922
+ "prove:vlt-governance-harness": "node scripts/prove-vlt.js",
923
+ "prove:hf-context-course-harness": "node scripts/prove-hf-context.js",
915
924
  "test:prove-glama-mcp": "node --test tests/prove-glama-mcp-start.test.js",
916
925
  "test:agent-install-paths": "node --test tests/agent-install-paths.test.js",
917
926
  "test:mcp-gate-check": "node --test tests/mcp-gate-check-tool.test.js",
@@ -919,7 +928,7 @@
919
928
  "test:secret-egress": "node --test tests/secret-egress-gate.test.js",
920
929
  "test:harness-tool-names": "node --test tests/harness-tool-names.test.js",
921
930
  "test:feedback-reward": "node --test tests/feedback-reward-score.test.js",
922
- "test:capability-wiring": "node --test tests/capability-wiring-ratchet.test.js",
931
+ "test:capability-wiring": "node --test tests/capability-wiring-ratchet.test.js && node --test tests/prove-vlt-dogfood.test.js && node --test tests/context-engineering-checklist.test.js",
923
932
  "test:llm-gateway": "node --test tests/llm-gateway-provider.test.js",
924
933
  "test:request-envelope": "node --test tests/request-envelope.test.js",
925
934
  "test:a-plus-evidence": "node --test tests/a-plus-evidence-scorecard.test.js",
@@ -928,7 +937,10 @@
928
937
  "verify:claims": "node scripts/universal-claim-evaluator.js",
929
938
  "spend-guard:install": "node scripts/install-spend-guard.js",
930
939
  "spend-guard:diff": "node docs/guard/spend-guard-decision-diff.js",
931
- "enforcement:provenance": "node scripts/enforcement-provenance-check.js"
940
+ "enforcement:provenance": "node scripts/enforcement-provenance-check.js",
941
+ "prove:vlt": "node scripts/prove-vlt-dogfood.js",
942
+ "test:vlt-dogfood": "node --test tests/prove-vlt-dogfood.test.js",
943
+ "test:context-engineering": "node --test tests/context-engineering-checklist.test.js"
932
944
  },
933
945
  "keywords": [
934
946
  "mcp",
@@ -983,7 +995,7 @@
983
995
  "node": ">=18.18.0"
984
996
  },
985
997
  "dependencies": {
986
- "@anthropic-ai/sdk": "0.102.0",
998
+ "@anthropic-ai/sdk": "0.115.0",
987
999
  "@google/genai": "2.7.0",
988
1000
  "@lancedb/lancedb": "^0.30.0",
989
1001
  "apache-arrow": "^18.1.0",
package/public/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <meta name="generator" content="ThumbGate">
7
7
  <meta name="author" content="Igor Ganapolsky">
8
- <meta name="thumbgate-version" content="1.34.3">
8
+ <meta name="thumbgate-version" content="1.35.0">
9
9
  __GOOGLE_SITE_VERIFICATION_META__
10
10
  <link rel="icon" type="image/png" href="/thumbgate-icon.png">
11
11
  <link rel="canonical" href="__APP_ORIGIN__/">
@@ -942,7 +942,7 @@ next decision recorded before execution</pre>
942
942
 
943
943
  <footer>
944
944
  <div class="shell footer-inner">
945
- <span>ThumbGate · MIT License · npm v1.34.3</span>
945
+ <span>ThumbGate · MIT License · npm v1.35.0</span>
946
946
  <div class="footer-links">
947
947
  <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
948
948
  <a href="/guide">Technical setup</a>
@@ -25,7 +25,7 @@
25
25
  "alternateName": "thumbgate",
26
26
  "applicationCategory": "DeveloperApplication",
27
27
  "operatingSystem": "Cross-platform, Node.js >=18.18.0",
28
- "softwareVersion": "1.34.3",
28
+ "softwareVersion": "1.35.0",
29
29
  "url": "https://thumbgate-production.up.railway.app/numbers",
30
30
  "dateModified": "2026-08-03",
31
31
  "creator": {
@@ -202,7 +202,7 @@
202
202
  <main class="container">
203
203
  <h1>The Numbers</h1>
204
204
  <p class="subtitle">Generated first-party operational snapshot from the ThumbGate runtime. This is not customer traction, install volume, revenue, or proof that a configured gate has fired.</p>
205
- <div class="freshness">Updated: 2026-08-03 · Version 1.34.3</div>
205
+ <div class="freshness">Updated: 2026-08-03 · Version 1.35.0</div>
206
206
  <div class="truth-note"><strong>Read this first:</strong> configured checks are inventory. Recorded blocks and warnings are usage evidence. This snapshot currently reports 0 recorded hard-block event(s) and 0 recorded warning event(s).</div>
207
207
 
208
208
  <h2>Gate enforcement</h2>