thumbgate 1.31.0 โ†’ 1.34.1

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.31.0",
4
+ "version": "1.34.1",
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.31.0",
3
+ "version": "1.34.1",
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.31.0", "thumbgate", "serve"]
5
+ "args": ["--yes", "--package", "thumbgate@1.34.1", "thumbgate", "serve"]
6
6
  }
7
7
  },
8
8
  "hooks": {
9
9
  "preToolUse": {
10
10
  "command": "npx",
11
- "args": ["--yes", "--package", "thumbgate@1.31.0", "thumbgate", "gate-check"]
11
+ "args": ["--yes", "--package", "thumbgate@1.34.1", "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.31.0 thumbgate gate-check"
12
+ command: "npx --yes --package thumbgate@1.34.1 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.31.0 thumbgate hook-auto-capture"
17
+ command: "npx --yes --package thumbgate@1.34.1 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.31.0"
26
+ - "thumbgate@1.34.1"
27
27
  - "thumbgate"
28
28
  - "serve"
@@ -95,6 +95,19 @@ const {
95
95
  listEscalations,
96
96
  requestEscalation,
97
97
  } = require('../../scripts/human-escalation');
98
+ const {
99
+ createPurchaseRequisition,
100
+ getFinancialControlRuntimeOptions,
101
+ getRuntimePrincipal,
102
+ listPurchaseRequisitions,
103
+ reconcilePurchaseLedger,
104
+ reservePurchaseRequisition,
105
+ settlePurchaseRequisition,
106
+ } = require('../../scripts/financial-control-plane');
107
+ const MCP_FINANCIAL_PRINCIPAL = getRuntimePrincipal();
108
+ const MCP_FINANCIAL_OPTIONS = getFinancialControlRuntimeOptions({
109
+ authenticatedPrincipal: MCP_FINANCIAL_PRINCIPAL,
110
+ });
98
111
  const { recordReasoningTrace } = require('../../scripts/agent-reasoning-traces');
99
112
  const { recordToolCall } = require('../../scripts/tool-kpi-tracker');
100
113
  const {
@@ -315,7 +328,7 @@ const {
315
328
  finalizeSession: finalizeFeedbackSession,
316
329
  } = require('../../scripts/feedback-session');
317
330
 
318
- const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.31.0' };
331
+ const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.34.1' };
319
332
  const COMMERCE_CATEGORIES = [
320
333
  'product_recommendation',
321
334
  'brand_compliance',
@@ -1368,6 +1381,20 @@ async function callToolInner(name, args) {
1368
1381
  return toTextResult(requestEscalation(args));
1369
1382
  case 'list_human_escalations':
1370
1383
  return toTextResult(listEscalations({ status: args.status }).slice(0, Number(args.limit || 20)));
1384
+ case 'create_purchase_requisition':
1385
+ return toTextResult(createPurchaseRequisition(args, MCP_FINANCIAL_OPTIONS));
1386
+ case 'list_purchase_requisitions': {
1387
+ const rows = listPurchaseRequisitions(MCP_FINANCIAL_OPTIONS)
1388
+ .filter((entry) => !args.status || entry.status === args.status)
1389
+ .slice(0, Number(args.limit || 20));
1390
+ return toTextResult(rows);
1391
+ }
1392
+ case 'reserve_purchase_requisition':
1393
+ return toTextResult(reservePurchaseRequisition(args, MCP_FINANCIAL_OPTIONS));
1394
+ case 'settle_purchase_requisition':
1395
+ return toTextResult(settlePurchaseRequisition(args, MCP_FINANCIAL_OPTIONS));
1396
+ case 'reconcile_purchase_ledger':
1397
+ return toTextResult(reconcilePurchaseLedger(MCP_FINANCIAL_OPTIONS));
1371
1398
  case 'verify_claim':
1372
1399
  return toTextResult(verifyClaimEvidence(args.claim, { goalContract: args.goalContract }));
1373
1400
  case 'require_evidence_for_claim': {
@@ -1382,6 +1409,9 @@ async function callToolInner(name, args) {
1382
1409
  const missingActions = hasMatchingChecks
1383
1410
  ? Array.from(new Set(verification.checks.flatMap((check) => check.missing || [])))
1384
1411
  : [];
1412
+ const factualMismatches = Array.isArray(verification.universal && verification.universal.checks)
1413
+ ? verification.universal.checks.filter((check) => !check.passed)
1414
+ : [];
1385
1415
  try {
1386
1416
  const { recordAuditEvent } = require('../../scripts/audit-trail');
1387
1417
  recordAuditEvent({
@@ -1393,13 +1423,16 @@ async function callToolInner(name, args) {
1393
1423
  goalContract: verification.goalContract && verification.goalContract.matched
1394
1424
  ? verification.goalContract
1395
1425
  : null,
1426
+ universalParsed: verification.universal ? verification.universal.parsedCount : 0,
1396
1427
  },
1397
1428
  decision: blocking ? 'deny' : 'allow',
1398
1429
  gateId: verification.goalContract && verification.goalContract.matched
1399
1430
  ? 'completion_goal_contract'
1400
- : 'completion_claim',
1431
+ : (factualMismatches.length > 0 ? 'completion_claim_factual' : 'completion_claim'),
1401
1432
  message: blocking
1402
- ? `Completion claim blocked โ€” missing evidence: ${missingActions.join(', ') || 'unknown'}`
1433
+ ? (factualMismatches.length > 0
1434
+ ? `Completion claim blocked โ€” factual mismatch/unconfigured: ${factualMismatches.map((c) => c.message).join('; ')}`
1435
+ : `Completion claim blocked โ€” missing evidence: ${missingActions.join(', ') || 'unknown'}`)
1403
1436
  : `Completion claim verified (${verification.verified ? 'evidence present' : 'no matching gate'})`,
1404
1437
  source: 'completion-gate',
1405
1438
  });
@@ -1413,6 +1446,8 @@ async function callToolInner(name, args) {
1413
1446
  missingActions,
1414
1447
  checks: verification.checks,
1415
1448
  goalContract: verification.goalContract,
1449
+ universal: verification.universal,
1450
+ factualMismatches,
1416
1451
  sessionId: args.sessionId || null,
1417
1452
  });
1418
1453
  }
@@ -1477,6 +1512,7 @@ async function callToolInner(name, args) {
1477
1512
  mcp: args.mcp,
1478
1513
  mcpToolCall: args.mcpToolCall,
1479
1514
  budget: args.budget,
1515
+ financialControl: args.financialControl,
1480
1516
  usage: args.usage,
1481
1517
  }, {
1482
1518
  provider: args.provider,
@@ -1486,6 +1522,7 @@ async function callToolInner(name, args) {
1486
1522
  tokenEstimate: args.tokenEstimate,
1487
1523
  costUsd: args.costUsd,
1488
1524
  budget: args.budget,
1525
+ financialControl: args.financialControl,
1489
1526
  repoPath: args.repoPath,
1490
1527
  baseBranch: args.baseBranch,
1491
1528
  affectedFiles: changedFiles.length > 0 ? changedFiles : undefined,
@@ -7,7 +7,7 @@
7
7
  "npx",
8
8
  "--yes",
9
9
  "--package",
10
- "thumbgate@1.31.0",
10
+ "thumbgate@1.34.1",
11
11
  "thumbgate",
12
12
  "serve"
13
13
  ],
package/bin/cli.js CHANGED
@@ -3236,6 +3236,16 @@ function aiInventory() {
3236
3236
  console.log(payload);
3237
3237
  }
3238
3238
 
3239
+ function verifyClaimsCmd() {
3240
+ const { runCli } = require(path.join(PKG_ROOT, 'scripts', 'universal-claim-evaluator'));
3241
+ process.exitCode = runCli(process.argv.slice(3));
3242
+ }
3243
+
3244
+ function claimStopCheckCmd() {
3245
+ const { main } = require(path.join(PKG_ROOT, 'scripts', 'hook-stop-anti-claim'));
3246
+ main();
3247
+ }
3248
+
3239
3249
  function help() {
3240
3250
  const v = pkgVersion();
3241
3251
  const helpArgs = process.argv.slice(3);
@@ -3258,6 +3268,7 @@ function help() {
3258
3268
  console.log(' explore Interactive TUI for lessons, gates, stats');
3259
3269
  console.log(' dashboard Open the local ThumbGate dashboard');
3260
3270
  console.log(' ai-inventory Scan AI/ML components and export ML-BOM evidence');
3271
+ console.log(' verify-claims --claim="..." Recheck factual claims against configured sources');
3261
3272
  console.log(' doctor Audit runtime isolation + bootstrap context');
3262
3273
  console.log(' break-glass --reason="..." Short TTL recovery if gates over-fire');
3263
3274
  console.log(' brain [--write] Build the agent-readable context brain (lessons + rules + gates)');
@@ -3304,6 +3315,7 @@ function help() {
3304
3315
  console.log(' cache-update Refresh Claude statusline cache from stdin');
3305
3316
  console.log(' statusline-render Render ThumbGate Claude status line');
3306
3317
  console.log(' hook-auto-capture Process Claude UserPromptSubmit inline feedback');
3318
+ console.log(' claim-stop-check Recheck configured factual claims before Claude stops');
3307
3319
  console.log(' session-start Refresh local ThumbGate session cache');
3308
3320
  console.log('');
3309
3321
 
@@ -3412,6 +3424,8 @@ const SUBCOMMAND_HELP = {
3412
3424
  lessons: 'Usage: npx thumbgate lessons [--query="..."] [--limit=N]\n\nSearch the lesson database (Pro feature).',
3413
3425
  search: 'Usage: npx thumbgate search <query>\n\nSearch ThumbGate knowledge base (Pro feature).',
3414
3426
  'gate-check': 'Usage: npx thumbgate gate-check\n\nPreToolUse hook interface: reads tool call JSON from stdin, outputs gate verdict.',
3427
+ 'claim-stop-check': 'Usage: npx thumbgate claim-stop-check\n\nClaude Stop-hook interface: reads the hook payload from stdin and blocks factual claims that disagree with configured sources.',
3428
+ 'verify-claims': 'Usage: npx thumbgate verify-claims --claim="the row count is 1,284" [--config=.thumbgate/claim-verifiers.json] [--cwd=path] [--json]\n\nRecheck supported factual claims against operator-configured SQLite, filesystem, and JSON sources. Exits non-zero on mismatch, missing verifier, or verifier error.',
3415
3429
  'hermes-gate': 'Usage: npx thumbgate hermes-gate\n\nNous Research Hermes Agent pre_tool_call shell hook: reads Hermes tool-call JSON from stdin, runs the ThumbGate gate pipeline (strict by default), and outputs {"decision":"block","reason":...} to veto or {} to allow. Gates terminal/patch/skill_manage etc. See adapters/hermes/config.yaml.',
3416
3430
  'break-glass': 'Usage: npx thumbgate break-glass --reason="why" [--ttl=5m] [--json]\n\nShort-lived recovery path for over-firing gates. Allows hook settings edits and satisfies PR-create/thread-check gates without disabling core destructive-action protections.',
3417
3431
  serve: 'Usage: npx thumbgate serve\n\nStart the MCP stdio server. This is for agent runtimes, not the local HTTP dashboard.',
@@ -3690,6 +3704,9 @@ switch (COMMAND) {
3690
3704
  case 'hook-auto-capture':
3691
3705
  hookAutoCapture();
3692
3706
  break;
3707
+ case 'claim-stop-check':
3708
+ claimStopCheckCmd();
3709
+ break;
3693
3710
  case 'session-start':
3694
3711
  sessionStart();
3695
3712
  break;
@@ -4185,6 +4202,10 @@ switch (COMMAND) {
4185
4202
  case 'gate-stats':
4186
4203
  gateStats();
4187
4204
  break;
4205
+ case 'verify-claims':
4206
+ case 'verify-claim':
4207
+ verifyClaimsCmd();
4208
+ break;
4188
4209
  case 'eval':
4189
4210
  case 'prompt-eval':
4190
4211
  evalCmd();
@@ -0,0 +1,42 @@
1
+ {
2
+ "version": 1,
3
+ "description": "Configured sources of truth for the universal claim evaluator. Copy to .thumbgate/claim-verifiers.json or config/gates/claim-verifiers.json. Queries and paths come only from this file โ€” never from claim text.",
4
+ "verifiers": [
5
+ {
6
+ "id": "orders-row-count",
7
+ "kind": "sqlite_count",
8
+ "match": {
9
+ "kinds": ["count"],
10
+ "subjects": ["row count", "rows", "orders", "order count", "total rows"]
11
+ },
12
+ "dbPath": "data/app.sqlite",
13
+ "query": "SELECT COUNT(*) AS n FROM orders"
14
+ },
15
+ {
16
+ "id": "readme-line-count",
17
+ "kind": "file_lines",
18
+ "match": {
19
+ "kinds": ["file_lines"],
20
+ "paths": ["README.md"]
21
+ },
22
+ "path": "README.md"
23
+ },
24
+ {
25
+ "id": "package-version",
26
+ "kind": "json_path",
27
+ "match": {
28
+ "kinds": ["value"],
29
+ "subjects": ["version", "package version"]
30
+ },
31
+ "path": "package.json",
32
+ "jsonPath": "version"
33
+ },
34
+ {
35
+ "id": "nightly-invoices",
36
+ "kind": "json_path",
37
+ "claimTemplate": "The nightly batch built {{value}} invoices",
38
+ "path": "metrics.json",
39
+ "jsonPath": "nightly.invoices"
40
+ }
41
+ ]
42
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "version": 1,
3
+ "description": "Default factual claim verifiers shipped with ThumbGate. Override with .thumbgate/claim-verifiers.json or THUMBGATE_CLAIM_VERIFIERS_PATH. Queries and paths are operator-owned โ€” never taken from claim text.",
4
+ "verifiers": [
5
+ {
6
+ "id": "package-version",
7
+ "kind": "json_path",
8
+ "match": {
9
+ "kinds": ["value"],
10
+ "subjects": ["version", "package version"]
11
+ },
12
+ "path": "package.json",
13
+ "jsonPath": "version"
14
+ },
15
+ {
16
+ "id": "package-json-exists",
17
+ "kind": "file_exists",
18
+ "match": {
19
+ "kinds": ["file_exists"],
20
+ "paths": ["package.json"]
21
+ },
22
+ "path": "package.json"
23
+ }
24
+ ]
25
+ }
@@ -13,6 +13,7 @@
13
13
  "construct_context_pack",
14
14
  "context_provenance",
15
15
  "context_stuff_lessons",
16
+ "create_purchase_requisition",
16
17
  "dashboard",
17
18
  "describe_reliability_entity",
18
19
  "describe_semantic_entity",
@@ -41,6 +42,7 @@
41
42
  "list_harnesses",
42
43
  "list_human_escalations",
43
44
  "list_intents",
45
+ "list_purchase_requisitions",
44
46
  "managed_agent_status",
45
47
  "native_messaging_audit",
46
48
  "open_feedback_session",
@@ -61,10 +63,12 @@
61
63
  "recall",
62
64
  "record_action_receipt",
63
65
  "record_task_outcome",
66
+ "reconcile_purchase_ledger",
64
67
  "reflect_on_feedback",
65
68
  "register_claim_gate",
66
69
  "report_product_issue",
67
70
  "request_human_escalation",
71
+ "reserve_purchase_requisition",
68
72
  "require_evidence_for_claim",
69
73
  "retrieve_lessons",
70
74
  "run_autoresearch",
@@ -76,6 +80,7 @@
76
80
  "search_thumbgate",
77
81
  "self_distill_status",
78
82
  "session_report",
83
+ "settle_purchase_requisition",
79
84
  "set_branch_governance",
80
85
  "set_task_scope",
81
86
  "settings_status",
@@ -91,6 +96,7 @@
91
96
  "approve_protected_action",
92
97
  "capture_feedback",
93
98
  "check_operational_integrity",
99
+ "create_purchase_requisition",
94
100
  "estimate_uncertainty",
95
101
  "feedback_stats",
96
102
  "feedback_summary",
@@ -102,6 +108,7 @@
102
108
  "get_scope_state",
103
109
  "get_task_outcomes",
104
110
  "list_human_escalations",
111
+ "list_purchase_requisitions",
105
112
  "open_feedback_session",
106
113
  "parallel_workflow",
107
114
  "plan_agent_design_governance",
@@ -114,15 +121,18 @@
114
121
  "prevention_rules",
115
122
  "recall",
116
123
  "record_task_outcome",
124
+ "reconcile_purchase_ledger",
117
125
  "reflect_on_feedback",
118
126
  "report_product_issue",
119
127
  "request_human_escalation",
128
+ "reserve_purchase_requisition",
120
129
  "require_evidence_for_claim",
121
130
  "retrieve_lessons",
122
131
  "satisfy_gate",
123
132
  "search_lessons",
124
133
  "search_thumbgate",
125
134
  "session_report",
135
+ "settle_purchase_requisition",
126
136
  "set_branch_governance",
127
137
  "set_task_scope",
128
138
  "suggest_fix",
@@ -136,6 +146,7 @@
136
146
  "capture_feedback",
137
147
  "check_operational_integrity",
138
148
  "commerce_recall",
149
+ "create_purchase_requisition",
139
150
  "feedback_stats",
140
151
  "feedback_summary",
141
152
  "gate_check",
@@ -144,14 +155,18 @@
144
155
  "get_scope_state",
145
156
  "get_task_outcomes",
146
157
  "list_human_escalations",
158
+ "list_purchase_requisitions",
147
159
  "prevention_rules",
148
160
  "recall",
149
161
  "record_task_outcome",
162
+ "reconcile_purchase_ledger",
150
163
  "request_human_escalation",
164
+ "reserve_purchase_requisition",
151
165
  "retrieve_lessons",
152
166
  "search_thumbgate",
153
167
  "set_branch_governance",
154
168
  "set_task_scope",
169
+ "settle_purchase_requisition",
155
170
  "suggest_fix",
156
171
  "track_action",
157
172
  "verify_claim",
@@ -178,6 +193,7 @@
178
193
  "list_harnesses",
179
194
  "list_human_escalations",
180
195
  "list_intents",
196
+ "list_purchase_requisitions",
181
197
  "native_messaging_audit",
182
198
  "perplexity_ask",
183
199
  "perplexity_search",
@@ -190,6 +206,7 @@
190
206
  "plan_proactive_agent_eval_guardrails",
191
207
  "plan_reward_hacking_guardrails",
192
208
  "recall",
209
+ "reconcile_purchase_ledger",
193
210
  "require_evidence_for_claim",
194
211
  "retrieve_lessons",
195
212
  "search_lessons",
@@ -222,6 +239,7 @@
222
239
  "list_harnesses",
223
240
  "list_human_escalations",
224
241
  "list_intents",
242
+ "list_purchase_requisitions",
225
243
  "native_messaging_audit",
226
244
  "perplexity_ask",
227
245
  "perplexity_search",
@@ -234,6 +252,7 @@
234
252
  "plan_proactive_agent_eval_guardrails",
235
253
  "plan_reward_hacking_guardrails",
236
254
  "recall",
255
+ "reconcile_purchase_ledger",
237
256
  "require_evidence_for_claim",
238
257
  "retrieve_lessons",
239
258
  "run_harness",
@@ -259,6 +278,7 @@
259
278
  "list_harnesses",
260
279
  "list_human_escalations",
261
280
  "list_intents",
281
+ "list_purchase_requisitions",
262
282
  "native_messaging_audit",
263
283
  "plan_agent_design_governance",
264
284
  "plan_chatgpt_ads_readiness",
@@ -268,6 +288,7 @@
268
288
  "plan_proactive_agent_eval_guardrails",
269
289
  "plan_reward_hacking_guardrails",
270
290
  "retrieve_lessons",
291
+ "reconcile_purchase_ledger",
271
292
  "search_lessons",
272
293
  "search_thumbgate",
273
294
  "settings_status",
package/hooks/hooks.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "hooks": {
3
3
  "PreToolUse": [
4
4
  {
5
- "matcher": "Bash|Edit|Write",
5
+ "matcher": ".*",
6
6
  "hooks": [
7
7
  {
8
8
  "type": "command",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.31.0",
3
+ "version": "1.34.1",
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": {
@@ -117,6 +117,8 @@
117
117
  "scripts/feedback-session.js",
118
118
  "scripts/feedback-to-rules.js",
119
119
  "scripts/feedback_quality_eval.py",
120
+ "scripts/file-ledger-lock.js",
121
+ "scripts/financial-control-plane.js",
120
122
  "scripts/filesystem-search.js",
121
123
  "scripts/fs-utils.js",
122
124
  "scripts/grafana-revenue-evidence.js",
@@ -268,6 +270,7 @@
268
270
  "scripts/task-outcomes.js",
269
271
  "scripts/tool-kpi-tracker.js",
270
272
  "scripts/upstream-contribution-engine.js",
273
+ "scripts/universal-claim-evaluator.js",
271
274
  "scripts/user-profile.js",
272
275
  "scripts/validate-workflow-contract.js",
273
276
  "scripts/vector-store.js",
@@ -460,7 +463,7 @@
460
463
  "social:prospect:bluesky": "node scripts/social-bluesky-prospecting.js",
461
464
  "social:prospect:bluesky:dry": "node scripts/social-bluesky-prospecting.js --dry-run",
462
465
  "social:reply-publish:bluesky:dry": "node scripts/social-reply-monitor-bluesky.js --publish-approved --dry-run",
463
- "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: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",
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",
464
467
  "test:python": "python3 -m pytest tests/*.py",
465
468
  "test:check-update": "node --test tests/check-update.test.js",
466
469
  "test:hook-stop-verify-deploy": "node --test tests/hook-stop-verify-deploy.test.js",
@@ -510,7 +513,7 @@
510
513
  "eval:feedback": "node scripts/prompt-eval.js --from-feedback",
511
514
  "eval:feedback-quality": "python3 scripts/feedback_quality_eval.py",
512
515
  "eval:classifier": "python3 scripts/eval_gate_classifier.py",
513
- "eval:rag": "node scripts/eval-rag.js",
516
+ "eval:rag": "node -r dotenv/config scripts/eval-rag.js",
514
517
  "eval:quality": "node scripts/eval-quality-suite.js",
515
518
  "test:eval-quality": "node --test tests/ragas-style-metrics.test.js tests/retrieval-ranking-eval.test.js tests/ir-metrics.test.js",
516
519
  "test:eval-rag": "node --test tests/eval-rag.test.js tests/retrieval-hybrid-ablation.test.js",
@@ -599,7 +602,7 @@
599
602
  "test:quality": "node --test tests/validate-feedback.test.js tests/feedback-quality-eval-python.test.js tests/eval-gate-classifier.test.js",
600
603
  "test:intelligence": "node --test tests/intelligence.test.js",
601
604
  "test:training-export": "node --test tests/training-export.test.js tests/databricks-export.test.js",
602
- "test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js tests/changeset-check.test.js tests/release-notes.test.js tests/sonarcloud-workflow.test.js tests/package-boundary.test.js tests/public-package-boundary.test.js tests/packed-feedback-retrieval-e2e.test.js tests/packed-provider-payment-reconciler-e2e.test.js tests/packed-revenue-remediation-e2e.test.js",
605
+ "test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js tests/changeset-check.test.js tests/release-notes.test.js tests/sonarcloud-workflow.test.js tests/package-boundary.test.js tests/public-package-boundary.test.js tests/packed-feedback-retrieval-e2e.test.js tests/packed-provider-payment-reconciler-e2e.test.js tests/packed-revenue-remediation-e2e.test.js tests/prove-production-authenticated.test.js tests/verify-npm-githead.test.js",
603
606
  "test:operational-integrity": "node --test tests/operational-integrity.test.js tests/sync-branch-protection.test.js",
604
607
  "test:workflow": "node --test tests/parallel-workflow.test.js tests/parallel-workflow-public.test.js tests/workflow-contract.test.js tests/positioning-contract.test.js tests/docs-claim-hygiene.test.js tests/thumbgate-scope.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/workflow-intake-queue.test.js tests/revenue-pack-utils.test.js tests/apollo-acquisition.test.js tests/sales-pipeline.test.js tests/provider-payment-reconciler.test.js tests/reddit-dm-outreach-evidence.test.js tests/gtm-sales-evidence-commands.test.js tests/revenue-action-eligibility.test.js tests/revenue-evidence-remediation.test.js tests/gtm-revenue-action-eligibility.test.js tests/revenue-offer-ladder.test.js tests/revenue-offer-system.test.js tests/buyer-paths.test.js tests/github-outreach.test.js tests/enterprise-story.test.js tests/guide-conversion-path.test.js tests/buyer-intent-revenue-assist.test.js && node --test tests/eval-proof-pack-pages.test.js && npm run test:proof-pack-cadence",
605
608
  "test:revenue-evidence-remediation": "node --test tests/revenue-evidence-remediation.test.js",
@@ -611,10 +614,10 @@
611
614
  "test:evolution": "node --test tests/workspace-evolver.test.js",
612
615
  "test:watcher": "node --test tests/jsonl-watcher.test.js",
613
616
  "test:autoresearch": "node --test tests/autoresearch.test.js",
614
- "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",
617
+ "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/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",
615
618
  "test:session-analyzer": "node --test tests/session-analyzer.test.js",
616
619
  "test:tessl": "node --test tests/tessl-export.test.js",
617
- "test:gates": "node --test --test-concurrency=1 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 tests/git-pathspec-scope.test.js tests/git-global-option-bypass.test.js tests/gate-evasion-matrix.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",
618
621
  "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",
619
622
  "test:workers": "npm --prefix workers ci && npm --prefix workers test",
620
623
  "test:evoskill": "node --test tests/evoskill.test.js",
@@ -898,8 +901,8 @@
898
901
  "outreach:case-study": "node scripts/generate-case-study-outreach.js",
899
902
  "test:proof-pack-cadence": "node --test tests/refresh-proof-pack.test.js tests/case-study-outreach.test.js",
900
903
  "test:evaluations-page": "node --test tests/evaluations-page.test.js",
901
- "prove:rag": "node scripts/prove-rag-pipeline.js",
902
- "test:rag-pipeline": "node --test tests/rag-document-pipeline.test.js tests/rag-structured-output.test.js tests/rag-stage-contracts.test.js tests/prove-rag-pipeline.test.js tests/ir-metrics.test.js tests/retrieval-ranking-eval.test.js tests/pragmatic-hybrid-search.test.js",
904
+ "prove:rag": "node -r dotenv/config scripts/prove-rag-pipeline.js",
905
+ "test:rag-pipeline": "node --require dotenv/config --test tests/rag-document-pipeline.test.js tests/rag-structured-output.test.js tests/rag-stage-contracts.test.js tests/prove-rag-pipeline.test.js tests/ir-metrics.test.js tests/retrieval-ranking-eval.test.js tests/pragmatic-hybrid-search.test.js",
903
906
  "eval:ranking": "node scripts/retrieval-ranking-eval.js",
904
907
  "test:ir-metrics": "node --test tests/ir-metrics.test.js tests/retrieval-ranking-eval.test.js",
905
908
  "test:pragmatic-hybrid": "node --test tests/pragmatic-hybrid-search.test.js",
@@ -920,7 +923,9 @@
920
923
  "test:llm-gateway": "node --test tests/llm-gateway-provider.test.js",
921
924
  "test:request-envelope": "node --test tests/request-envelope.test.js",
922
925
  "test:a-plus-evidence": "node --test tests/a-plus-evidence-scorecard.test.js",
923
- "score:a-plus": "node scripts/a-plus-evidence-scorecard.js"
926
+ "score:a-plus": "node scripts/a-plus-evidence-scorecard.js",
927
+ "test:universal-claim-evaluator": "node --test tests/universal-claim-evaluator.test.js",
928
+ "verify:claims": "node scripts/universal-claim-evaluator.js"
924
929
  },
925
930
  "keywords": [
926
931
  "mcp",
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.31.0">
8
+ <meta name="thumbgate-version" content="1.34.1">
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.31.0</span>
945
+ <span>ThumbGate ยท MIT License ยท npm v1.34.1</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>