thumbgate 1.37.2 → 1.37.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/.agents/skills/article-syndication-pipeline/SKILL.md +37 -0
  2. package/.agents/skills/ci-gha-buildkite-patterns-not-clone/SKILL.md +72 -0
  3. package/.agents/skills/comet-session-logger/SKILL.md +59 -0
  4. package/.agents/skills/datadog-llm-obs-compare-not-clone/SKILL.md +75 -0
  5. package/.agents/skills/deeppattern-discipline-honesty-not-clone/SKILL.md +73 -0
  6. package/.agents/skills/thumbgate-board-loop/SKILL.md +72 -0
  7. package/.agents/skills/thumbgate-daily-discoveries/SKILL.md +57 -0
  8. package/.agents/skills/typesafe-typed-questions-not-clone/SKILL.md +7 -3
  9. package/.claude-plugin/plugin.json +1 -1
  10. package/.well-known/mcp/server-card.json +1 -1
  11. package/adapters/claude/.mcp.json +2 -2
  12. package/adapters/forge/forge.yaml +3 -3
  13. package/adapters/future-agi/.mcp.json +1 -1
  14. package/adapters/future-agi/config.toml +1 -1
  15. package/adapters/future-agi/opencode.json +1 -1
  16. package/adapters/herdr/herdr-plugin.toml +2 -2
  17. package/adapters/mcp/server-stdio.js +1 -1
  18. package/adapters/opencode/opencode.json +1 -1
  19. package/bin/cli.js +132 -4
  20. package/config/gate-templates.json +48 -0
  21. package/package.json +36 -9
  22. package/public/blog/2026-09-23-datadog-llm-obs-four-practices.html +42 -0
  23. package/public/index.html +2 -2
  24. package/public/install.html +7 -7
  25. package/public/numbers.html +2 -2
  26. package/scripts/ci-gha-buildkite-patterns.js +393 -0
  27. package/scripts/cli-schema.js +51 -1
  28. package/scripts/deeppattern-discipline-honesty.js +431 -0
  29. package/scripts/install-thumbgate-daily-publish-launchd.sh +83 -0
  30. package/scripts/llm-obs-honesty.js +478 -0
  31. package/scripts/thumbgate-board-loop.js +432 -0
  32. package/scripts/thumbgate-daily-discoveries-publish.js +413 -0
  33. package/scripts/thumbgate-daily-discoveries-publish.sh +18 -0
  34. package/scripts/typesafe-typed-questions.js +332 -7
  35. package/server.json +2 -2
  36. package/skills/article-syndication-pipeline/SKILL.md +37 -0
  37. package/skills/comet-session-logger/SKILL.md +59 -0
  38. package/skills/thumbgate-daily-discoveries/SKILL.md +57 -0
  39. package/src/index.js +10 -0
  40. package/src/integrations/ideabrowser-connector.js +190 -0
package/bin/cli.js CHANGED
@@ -2711,13 +2711,13 @@ function tokenShuntHonesty() {
2711
2711
  if (report.status === 'fail') process.exitCode = 1;
2712
2712
  }
2713
2713
 
2714
- function typesafeTypedQuestionsDoctor() {
2714
+ async function typesafeTypedQuestionsDoctor() {
2715
2715
  const args = parseArgs(process.argv.slice(3));
2716
2716
  const {
2717
- buildTypesafeTypedQuestionsReport,
2717
+ buildTypesafeTypedQuestionsReportAsync,
2718
2718
  formatTypesafeTypedQuestionsReport,
2719
2719
  } = require(path.join(PKG_ROOT, 'scripts', 'typesafe-typed-questions'));
2720
- const report = buildTypesafeTypedQuestionsReport(args);
2720
+ const report = await buildTypesafeTypedQuestionsReportAsync(args);
2721
2721
  if (args.json) {
2722
2722
  console.log(JSON.stringify(report, null, 2));
2723
2723
  } else {
@@ -2730,6 +2730,78 @@ function typesafeTypedQuestionsDoctor() {
2730
2730
  if (report.status === 'fail') process.exitCode = 1;
2731
2731
  }
2732
2732
 
2733
+ function ciGhaBuildkitePatternsDoctor() {
2734
+ const args = parseArgs(process.argv.slice(3));
2735
+ const {
2736
+ buildCiGhaBuildkitePatternsReport,
2737
+ formatCiGhaBuildkitePatternsReport,
2738
+ } = require(path.join(PKG_ROOT, 'scripts', 'ci-gha-buildkite-patterns'));
2739
+ const report = args['map-only']
2740
+ ? buildCiGhaBuildkitePatternsReport({ ...args, mapOnly: true })
2741
+ : buildCiGhaBuildkitePatternsReport({
2742
+ json: Boolean(args.json),
2743
+ strict: Boolean(args.strict),
2744
+ mapOnly: Boolean(args['map-only']),
2745
+ annotate: Boolean(args.annotate),
2746
+ cloneBuildkite: Boolean(args['clone-buildkite']),
2747
+ migrate: Boolean(args.migrate),
2748
+ rerunQueued: Boolean(args['rerun-queued']),
2749
+ quarantine: Boolean(args.quarantine),
2750
+ jobsJson: args['jobs-json'] || '',
2751
+ workflow: args.workflow || '',
2752
+ });
2753
+ if (args.json) {
2754
+ console.log(JSON.stringify(report, null, 2));
2755
+ } else {
2756
+ process.stdout.write(formatCiGhaBuildkitePatternsReport(report));
2757
+ }
2758
+ if (args.strict && report.status !== 'ready') {
2759
+ process.exitCode = 1;
2760
+ return;
2761
+ }
2762
+ if (report.status === 'fail') process.exitCode = 1;
2763
+ }
2764
+
2765
+ function deeppatternDisciplineHonestyDoctor() {
2766
+ const args = parseArgs(process.argv.slice(3));
2767
+ const {
2768
+ buildDeeppatternDisciplineHonestyReport,
2769
+ formatDeeppatternDisciplineHonestyReport,
2770
+ } = require(path.join(PKG_ROOT, 'scripts', 'deeppattern-discipline-honesty'));
2771
+ const report = buildDeeppatternDisciplineHonestyReport(args);
2772
+ if (args.json) {
2773
+ console.log(JSON.stringify(report, null, 2));
2774
+ } else {
2775
+ process.stdout.write(formatDeeppatternDisciplineHonestyReport(report));
2776
+ }
2777
+ if (args.strict && report.status !== 'ready') {
2778
+ process.exitCode = 1;
2779
+ return;
2780
+ }
2781
+ if (report.status === 'fail') process.exitCode = 1;
2782
+ }
2783
+
2784
+
2785
+ function thumbgateBoardLoop() {
2786
+ const args = parseArgs(process.argv.slice(3));
2787
+ const { buildReport, formatReport } = require(path.join(PKG_ROOT, 'scripts', 'thumbgate-board-loop'));
2788
+ const truthy = (value) => value === true || /^(1|true|yes|on)$/i.test(String(value || '').trim());
2789
+ const report = buildReport({
2790
+ json: truthy(args.json),
2791
+ apply: truthy(args.apply),
2792
+ maxUpdateBranch: Number(args['max-update-branch'] ?? 1),
2793
+ maxPrManage: Number(args['max-pr-manage'] ?? 1),
2794
+ maxComments: Number(args['max-comments'] ?? 4),
2795
+ skipPr: args['skip-pr'] ? Number(args['skip-pr']) : null,
2796
+ });
2797
+
2798
+ if (args.json) {
2799
+ console.log(JSON.stringify(report, null, 2));
2800
+ } else {
2801
+ process.stdout.write(formatReport(report));
2802
+ }
2803
+ }
2804
+
2733
2805
  function colabComputeHonestyDoctor() {
2734
2806
  const args = parseArgs(process.argv.slice(3));
2735
2807
  const {
@@ -2749,6 +2821,25 @@ function colabComputeHonestyDoctor() {
2749
2821
  if (report.status === 'fail') process.exitCode = 1;
2750
2822
  }
2751
2823
 
2824
+ function llmObsHonesty() {
2825
+ const args = parseArgs(process.argv.slice(3));
2826
+ const {
2827
+ buildLlmObsHonestyReport,
2828
+ formatLlmObsHonestyReport,
2829
+ } = require(path.join(PKG_ROOT, 'scripts', 'llm-obs-honesty'));
2830
+ const report = buildLlmObsHonestyReport(args);
2831
+ if (args.json) {
2832
+ console.log(JSON.stringify(report, null, 2));
2833
+ } else {
2834
+ process.stdout.write(formatLlmObsHonestyReport(report));
2835
+ }
2836
+ if (args.strict && report.status !== 'ready') {
2837
+ process.exitCode = 1;
2838
+ return;
2839
+ }
2840
+ if (report.status === 'fail') process.exitCode = 1;
2841
+ }
2842
+
2752
2843
  function cobbleHotStoreSplit() {
2753
2844
  const args = parseArgs(process.argv.slice(3));
2754
2845
  const {
@@ -3662,7 +3753,11 @@ function help() {
3662
3753
  console.log(' cobble-hot-store-split Split durable/delivery/hot lesson planes (CobbleDB FORMAT)');
3663
3754
  console.log(' token-shunt-honesty Intercept untargeted bulk reads (Portal FORMAT; not shunt@portal)');
3664
3755
  console.log(' typesafe-typed-questions Typed noul/choice/score + code-owned route (TypeSafe FORMAT; not Jev)');
3756
+ console.log(' ci-gha-buildkite-patterns First-fail + PR fail-fast on GitHub Actions (Buildkite FORMAT; not Buildkite)');
3757
+ console.log(' deeppattern-discipline-honesty Layer-check + evidence-closeout (DeepPattern FORMAT; not AQG/DE)');
3665
3758
  console.log(' colab-compute-honesty Compute-unit honesty from Colab /signup (not a GPU SKU)');
3759
+ console.log(' llm-obs-honesty Four LLM-obs practices on existing rails (Datadog FORMAT, not a clone)');
3760
+ console.log(' board-loop Classify+drain Issues/PR wall (BEHIND Dependabot, never approve)');
3666
3761
  console.log(' workspace-search-route Route query to rg/fts/vector/hybrid/graph (zg FORMAT)');
3667
3762
  console.log(' intent-governed-execution NL intent → classify/authorize/gate/HITL/evidence (CyberStrike FORMAT)');
3668
3763
  console.log(' background-governance Background-agent run report and dispatch risk check');
@@ -3709,7 +3804,11 @@ function help() {
3709
3804
  console.log(' npx thumbgate cobble-hot-store-split --json');
3710
3805
  console.log(' npx thumbgate token-shunt-honesty --json --lines=800');
3711
3806
  console.log(' npx thumbgate typesafe-typed-questions --json --tool-name=Bash --command="git push --force origin main"');
3807
+ console.log(' npx thumbgate ci-gha-buildkite-patterns --json --map-only');
3808
+ console.log(' npx thumbgate deeppattern-discipline-honesty --json --map-only');
3712
3809
  console.log(' npx thumbgate colab-compute-honesty --json --map-only');
3810
+ console.log(' npx thumbgate llm-obs-honesty --json');
3811
+ console.log(' npx thumbgate board-loop --json');
3713
3812
  console.log(' npx thumbgate workspace-search-route --query="how does X connect" --json');
3714
3813
  console.log(' npx thumbgate intent-governed-execution --intent="railway deploy" --json');
3715
3814
  console.log(' npx thumbgate upstream-contributions --max-repos=10 --write');
@@ -3752,6 +3851,9 @@ const SUBCOMMAND_HELP = {
3752
3851
  search: 'Usage: npx thumbgate search <query>\n\nSearch ThumbGate knowledge base (Pro feature).',
3753
3852
  'gate-check': 'Usage: npx thumbgate gate-check\n\nPreToolUse hook interface: reads tool call JSON from stdin, outputs gate verdict.',
3754
3853
  'typesafe-typed-questions': 'Usage: npx thumbgate typesafe-typed-questions [--payload=path] [--tool-name=Bash] [--command="..."] [--json] [--map-only] [--clone-jev]\n\nTypeSafe FORMAT steal: typed noul/choice/score over a PreToolUse payload, code-owned pass/review/block. Does not install typesafe-sdk or call Jev.',
3854
+ 'ci-gha-buildkite-patterns': 'Usage: npx thumbgate ci-gha-buildkite-patterns [--jobs-json=path] [--workflow=path] [--json] [--map-only]\n\nBuildkite pipeline FORMAT on GitHub Actions: first-fail step, PR fail-fast, needs:/skip/annotations. Does not add Buildkite.',
3855
+ 'deeppattern-discipline-honesty': 'Usage: npx thumbgate deeppattern-discipline-honesty [--claim="..."] [--closeout=path.md] [--json] [--map-only]\n\nDeepPattern FORMAT steal: layer-check + evidence-closeout. Does not install AQG/Decision Engine.',
3856
+ 'board-loop': 'Usage: npx thumbgate board-loop [--apply] [--json] [--max-update-branch=1] [--max-pr-manage=1] [--max-comments=4] [--skip-pr=N]\n\nClassify Issues+PR wall: update-branch BEHIND green Dependabot, pr:manage READY, comment DIRTY/ECI. Never approve.',
3755
3857
  'colab-compute-honesty': 'Usage: npx thumbgate colab-compute-honesty [--claim="..."] [--plan-proof=proplus] [--json] [--map-only]\n\nColab /signup FORMAT steal: Compute Units ≠ dedicated GPU; Subscribe ≠ receipt. Does not buy Pro/Pro+.',
3756
3858
  '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.',
3757
3859
  '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.',
@@ -4387,13 +4489,39 @@ switch (COMMAND) {
4387
4489
  case 'typesafe-hook':
4388
4490
  case 'typed-questions':
4389
4491
  case 'jev-typed-questions':
4390
- typesafeTypedQuestionsDoctor();
4492
+ typesafeTypedQuestionsDoctor().catch((err) => {
4493
+ console.error(err && err.stack ? err.stack : err);
4494
+ process.exitCode = 1;
4495
+ });
4496
+ break;
4497
+ case 'board-loop':
4498
+ case 'thumbgate-board-loop':
4499
+ case 'pr-issue-loop':
4500
+ thumbgateBoardLoop();
4391
4501
  break;
4392
4502
  case 'colab-compute-honesty':
4393
4503
  case 'colab-honesty':
4394
4504
  case 'compute-unit-honesty':
4395
4505
  colabComputeHonestyDoctor();
4396
4506
  break;
4507
+ case 'llm-obs-honesty':
4508
+ case 'datadog-llm-obs':
4509
+ case 'llm-observability-honesty':
4510
+ llmObsHonesty();
4511
+ break;
4512
+ case 'ci-gha-buildkite-patterns':
4513
+ case 'ci-buildkite-patterns':
4514
+ case 'gha-buildkite-honesty':
4515
+ case 'first-fail-gha':
4516
+ ciGhaBuildkitePatternsDoctor();
4517
+ break;
4518
+ case 'deeppattern-discipline-honesty':
4519
+ case 'deeppattern-honesty':
4520
+ case 'layer-check-honesty':
4521
+ case 'evidence-closeout-honesty':
4522
+ case 'aqg-de-honesty':
4523
+ deeppatternDisciplineHonestyDoctor();
4524
+ break;
4397
4525
  case 'workspace-search-route':
4398
4526
  case 'zg-search-route':
4399
4527
  case 'zvec-grep-route':
@@ -109,6 +109,54 @@
109
109
  "roi": "No surprise $9.99/$49.99 spend. No fake colab-cli.",
110
110
  "rollout": "Enable wherever an agent proposes Colab offload. Does not purchase a plan."
111
111
  },
112
+ {
113
+ "id": "require-same-layer-comparison",
114
+ "name": "Require same-layer product comparisons (DeepPattern layer-check)",
115
+ "category": "Agent Honesty",
116
+ "signal": "👎",
117
+ "defaultAction": "block",
118
+ "severity": "high",
119
+ "pattern": "(?=[\\s\\S]*(openrouter|litellm|token aggregat|api gateway|raw (model )?api|foundation model))(?=[\\s\\S]*(replace[sd]?|substitut|commoditiz|competes? with|instead of)[\\s\\S]*(thumbgate|pretooluse))",
120
+ "problem": "Blocks treating L4 transport / L2 models as substitutes for L7 ThumbGate PreToolUse governance (DeepPattern layer-check FORMAT).",
121
+ "roi": "Stops category-error competitive analysis. Gateways are inputs; hosted multi-model panels are complements.",
122
+ "rollout": "Pair with deeppattern-discipline-honesty --json. Tag L1–L8 before competitor claims."
123
+ },
124
+ {
125
+ "id": "require-evidence-closeout-items",
126
+ "name": "Require evidence-closeout items before done claims",
127
+ "category": "Agent Honesty",
128
+ "signal": "👎",
129
+ "defaultAction": "block",
130
+ "severity": "high",
131
+ "pattern": "(?=[\\s\\S]*(done|shipped|fixed|complete|merged))(?![\\s\\S]*(scope completed|verification run|production boundary))",
132
+ "problem": "Blocks summary-without-evidence closeouts. AQG evidence-closeout FORMAT: six required items under an Evidence heading.",
133
+ "roi": "Aligns with Completion Claim Contract. Fresh verification before the word done.",
134
+ "rollout": "Pair with deeppattern-discipline-honesty --closeout=path.md --strict."
135
+ },
136
+ {
137
+ "id": "refuse-buildkite-vendor-migration",
138
+ "name": "Refuse Buildkite vendor migration on public GitHub Actions",
139
+ "category": "Agent Honesty",
140
+ "signal": "👎",
141
+ "defaultAction": "block",
142
+ "severity": "high",
143
+ "pattern": "migrate.{0,40}buildkite|replace github actions with buildkite|add buildkite as.{0,20}required|buildkite-agent|test engine auto-?quarantine",
144
+ "problem": "Blocks adding Buildkite Pipelines/agents/Test Engine as a second CI vendor. Steal first-fail + fail-fast onto existing GHA.",
145
+ "roi": "Public repo GHA minutes stay $0. No second required check. Diagnosis stays the first failed step.",
146
+ "rollout": "Pair with ci-gha-buildkite-patterns --json. Keep ubuntu-latest required contexts."
147
+ },
148
+ {
149
+ "id": "refuse-deeppattern-sku-clone",
150
+ "name": "Refuse DeepPattern AQG/Decision-Engine SKU clones",
151
+ "category": "Agent Honesty",
152
+ "signal": "👎",
153
+ "defaultAction": "block",
154
+ "severity": "high",
155
+ "pattern": "dp-install|install_aqg|agent-quality-gates|decision-engine.{0,40}(clone|install|sku)|clone.{0,20}(aqg|decision.engine|deeppattern)",
156
+ "problem": "Blocks cloning Agent Quality Gates or Decision Engine as a ThumbGate product surface.",
157
+ "roi": "FORMAT steal only (layer-check + evidence-closeout). No hosted cross-vendor audit SKU.",
158
+ "rollout": "Enable on competitive-steal and install prompts. Does not vendor DeepPattern."
159
+ },
112
160
  {
113
161
  "id": "require-broker-signed-execution-receipt",
114
162
  "name": "Require broker-signed execution receipts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.37.2",
3
+ "version": "1.37.3",
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": {
@@ -453,7 +453,24 @@
453
453
  "scripts/typesafe-typed-questions.js",
454
454
  ".agents/skills/typesafe-typed-questions-not-clone/",
455
455
  "scripts/colab-compute-honesty.js",
456
- ".agents/skills/colab-compute-honesty-not-clone/"
456
+ ".agents/skills/colab-compute-honesty-not-clone/",
457
+ ".agents/skills/deeppattern-discipline-honesty-not-clone/",
458
+ "scripts/deeppattern-discipline-honesty.js",
459
+ ".agents/skills/ci-gha-buildkite-patterns-not-clone/",
460
+ "scripts/ci-gha-buildkite-patterns.js",
461
+ "scripts/thumbgate-board-loop.js",
462
+ ".agents/skills/thumbgate-board-loop/",
463
+ "scripts/llm-obs-honesty.js",
464
+ ".agents/skills/datadog-llm-obs-compare-not-clone/",
465
+ "scripts/thumbgate-daily-discoveries-publish.js",
466
+ "scripts/thumbgate-daily-discoveries-publish.sh",
467
+ "scripts/install-thumbgate-daily-publish-launchd.sh",
468
+ ".agents/skills/thumbgate-daily-discoveries/",
469
+ ".agents/skills/comet-session-logger/",
470
+ ".agents/skills/article-syndication-pipeline/",
471
+ "skills/thumbgate-daily-discoveries/",
472
+ "skills/comet-session-logger/",
473
+ "skills/article-syndication-pipeline/"
457
474
  ],
458
475
  "scripts": {
459
476
  "canary:snapshot": "node scripts/gate-decision-canary.js --snapshot",
@@ -593,7 +610,8 @@
593
610
  "test:futureagi-prepost": "node --test tests/futureagi-prepost-gate.test.js",
594
611
  "test:five-walls": "node --test tests/five-walls-governance.test.js",
595
612
  "test:llm-surface-consistency": "node --test tests/llm-surface-consistency.test.js",
596
- "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:broker-execution-receipts && npm run test:provider-attestation && 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:agent-security-central && 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:workos-production-guard && npm run test:partner-landing && npm run test:memory-pyramid && 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:github-marketplace-action && 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 && npm run test:autonomous-mandate && npm run test:memory-near-dupe && npm run test:lesson-retrieval-dedupe-backfill && npm run test:matryoshka-embedding && npm run test:rag-embedding-identity && npm run test:switchyard-router && npm run test:bulk-cloud-tier && npm run test:session-lease && npm run test:compare-agoragentic && npm run test:compare-dirac && npm run test:compare-aperture && npm run test:qwen-adapter && npm run test:qwen38-max-cost-optimizer && npm run test:openai-compatible-embed && npm run test:legal-public-routes && npm run test:gurobi && npm run test:mcp-session-handles && npm run test:agent-egress-policy && npm run test:budget-aware-gates-proof && npm run test:edotenv-rl-gateway && npm run test:rsi-safety-hillclimb && npm run test:research-agent-harness && npm run test:governance-curriculum && npm run test:provider-receipt-contract && npm run test:adaptive-governance-arena && npm run test:gpc-optout && npm run test:override-audit && npm run test:admin-override && npm run test:progressive-wiring && npm run test:security-questionnaire && npm run test:pipeline-compass && npm run test:guide-progressive && npm run test:git-at-scale && npm run test:rule-sprawl && npm run test:hidden-entry && npm run test:solver-parity && npm run test:mcp-writeguard && npm run test:latency-budget && npm run test:gates-tree-scope && npm run test:actor-critic && npm run test:infoq-engage && npm run test:hermes-platform && npm run test:future-agi && npm run test:futureagi-prepost && npm run test:five-walls && npm run test:llm-surface-consistency && npm run test:dashboard-oversized-logs && npm run test:agent-action-inventory && npm run test:simatree-data-governance && npm run test:governance-conflict-audit && npm run test:agent-identity-plane && npm run test:mcp-identity-bootstrap && npm run test:alert-noise-ledger && npm run test:webmcp && npm run test:perf-budget && npm run test:agent-loop && npm run test:nvhbm-base-die-gates && npm run test:graphrag-schema-first-multi-hop && npm run test:ai-governance-operating-plan && npm run test:claw-harness-production && npm run test:double-blind-eval-protocol && npm run test:codex-runbook-flywheel && npm run test:explainx-trending && npm run test:graphify && npm run test:tooling-scripts && npm run test:synthetic-customer-panel && npm run test:star-history && npm run test:github-achievement-honesty && npm run test:ai-identity-checklist && npm run test:knowledge-graph-fuse && npm run test:skill-library-compact && npm run test:intent-scope-runtime && npm run test:unicode-tag-block-normalize && npm run test:issue-3702-action-not-substring && npm run test:mantis-critic-review && npm run test:break-glass-gates-propose",
613
+ "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:broker-execution-receipts && npm run test:provider-attestation && 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:agent-security-central && 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:workos-production-guard && npm run test:partner-landing && npm run test:memory-pyramid && 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:github-marketplace-action && 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 && npm run test:autonomous-mandate && npm run test:memory-near-dupe && npm run test:lesson-retrieval-dedupe-backfill && npm run test:matryoshka-embedding && npm run test:rag-embedding-identity && npm run test:switchyard-router && npm run test:bulk-cloud-tier && npm run test:session-lease && npm run test:compare-agoragentic && npm run test:compare-dirac && npm run test:compare-aperture && npm run test:qwen-adapter && npm run test:qwen38-max-cost-optimizer && npm run test:openai-compatible-embed && npm run test:legal-public-routes && npm run test:gurobi && npm run test:mcp-session-handles && npm run test:agent-egress-policy && npm run test:budget-aware-gates-proof && npm run test:edotenv-rl-gateway && npm run test:rsi-safety-hillclimb && npm run test:research-agent-harness && npm run test:governance-curriculum && npm run test:provider-receipt-contract && npm run test:adaptive-governance-arena && npm run test:gpc-optout && npm run test:override-audit && npm run test:admin-override && npm run test:progressive-wiring && npm run test:security-questionnaire && npm run test:pipeline-compass && npm run test:guide-progressive && npm run test:git-at-scale && npm run test:rule-sprawl && npm run test:hidden-entry && npm run test:solver-parity && npm run test:mcp-writeguard && npm run test:latency-budget && npm run test:gates-tree-scope && npm run test:actor-critic && npm run test:infoq-engage && npm run test:hermes-platform && npm run test:future-agi && npm run test:futureagi-prepost && npm run test:five-walls && npm run test:llm-surface-consistency && npm run test:dashboard-oversized-logs && npm run test:agent-action-inventory && npm run test:simatree-data-governance && npm run test:governance-conflict-audit && npm run test:agent-identity-plane && npm run test:mcp-identity-bootstrap && npm run test:alert-noise-ledger && npm run test:webmcp && npm run test:ideabrowser-connector && npm run test:perf-budget && npm run test:agent-loop && npm run test:nvhbm-base-die-gates && npm run test:graphrag-schema-first-multi-hop && npm run test:ai-governance-operating-plan && npm run test:claw-harness-production && npm run test:double-blind-eval-protocol && npm run test:codex-runbook-flywheel && npm run test:explainx-trending && npm run test:graphify && npm run test:tooling-scripts && npm run test:synthetic-customer-panel && npm run test:star-history && npm run test:github-achievement-honesty && npm run test:ai-identity-checklist && npm run test:knowledge-graph-fuse && npm run test:skill-library-compact && npm run test:intent-scope-runtime && npm run test:unicode-tag-block-normalize && npm run test:issue-3702-action-not-substring && npm run test:mantis-critic-review && npm run test:break-glass-gates-propose && npm run test:thumbgate-daily-discoveries-publish",
614
+ "test:thumbgate-daily-discoveries-publish": "node --test tests/thumbgate-daily-discoveries-publish.test.js",
597
615
  "test:dashboard-oversized-logs": "node --test tests/dashboard-oversized-log-resilience.test.js",
598
616
  "test:python": "python3 -m pytest tests/*.py",
599
617
  "test:check-update": "node --test tests/check-update.test.js",
@@ -771,6 +789,7 @@
771
789
  "perf:budget": "node scripts/perf-budget-check.js",
772
790
  "perf:budget:prod": "node scripts/perf-budget-check.js --prod",
773
791
  "test:webmcp": "node --test tests/webmcp-governance.test.js",
792
+ "test:ideabrowser-connector": "node --test tests/ideabrowser-connector.test.js",
774
793
  "test:stealth-memory-injection": "node --test tests/stealth-memory-injection-gate.test.js",
775
794
  "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",
776
795
  "test:workers": "npm --prefix workers ci && npm --prefix workers test",
@@ -977,7 +996,7 @@
977
996
  "openui-catalog-compose-honesty": "node scripts/openui-catalog-compose-honesty.js",
978
997
  "test:budget-aware-gates-proof": "node --test tests/budget-aware-gates-proof.test.js",
979
998
  "test:business-function-agents": "node --test tests/business-function-agent-team.test.js",
980
- "test:high-roi": "node --test tests/high-roi.test.js tests/gurobi-optimizer.test.js tests/model-candidates.test.js tests/autonomous-workflow.test.js tests/high-roi-agent-workflows.test.js tests/business-function-agent-team.test.js tests/radware-threat-defense.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/nvidia-specdecode-al-doctor.test.js tests/package-manager-honesty-doctor.test.js tests/openui-catalog-compose-honesty.test.js tests/gist-prompt-budget.test.js tests/workload-identity-honesty.test.js tests/config-strict-parse.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/rag-embedding-identity.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 tests/mcp-session-handles.test.js tests/agent-egress-policy.test.js tests/allowlist-bridge-honesty.test.js tests/budget-aware-gates-proof.test.js tests/edotenv-rl-gateway.test.js tests/rsi-safety-hillclimb.test.js tests/research-agent-harness.test.js tests/rule-sprawl.test.js tests/solver-parity.test.js tests/six-function-agent-team.test.js && npm run test:jit-harness-compose && npm run test:workspace-search-route && npm run test:intent-governed-execution && npm run test:cobble-hot-store-split && npm run test:token-shunt-honesty && npm run test:typesafe-typed-questions && npm run test:colab-compute-honesty",
999
+ "test:high-roi": "node --test tests/high-roi.test.js tests/gurobi-optimizer.test.js tests/model-candidates.test.js tests/autonomous-workflow.test.js tests/high-roi-agent-workflows.test.js tests/business-function-agent-team.test.js tests/radware-threat-defense.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/nvidia-specdecode-al-doctor.test.js tests/package-manager-honesty-doctor.test.js tests/openui-catalog-compose-honesty.test.js tests/gist-prompt-budget.test.js tests/workload-identity-honesty.test.js tests/config-strict-parse.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/rag-embedding-identity.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 tests/mcp-session-handles.test.js tests/agent-egress-policy.test.js tests/allowlist-bridge-honesty.test.js tests/budget-aware-gates-proof.test.js tests/edotenv-rl-gateway.test.js tests/rsi-safety-hillclimb.test.js tests/research-agent-harness.test.js tests/rule-sprawl.test.js tests/solver-parity.test.js tests/six-function-agent-team.test.js && npm run test:jit-harness-compose && npm run test:workspace-search-route && npm run test:intent-governed-execution && npm run test:cobble-hot-store-split && npm run test:token-shunt-honesty && npm run test:typesafe-typed-questions && npm run test:colab-compute-honesty && npm run test:deeppattern-discipline-honesty && npm run test:ci-gha-buildkite-patterns && npm run test:board-loop && npm run test:llm-obs-honesty",
981
1000
  "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 tests/founders-conversion-page.test.js",
982
1001
  "test:token-savings": "node --test tests/token-savings.test.js",
983
1002
  "test:cost-cli": "node --test tests/cost-cli.test.js tests/conversion-receipt.test.js",
@@ -1189,6 +1208,8 @@
1189
1208
  "typesafe-typed-questions": "node scripts/typesafe-typed-questions.js",
1190
1209
  "test:colab-compute-honesty": "node --test tests/colab-compute-honesty.test.js",
1191
1210
  "colab-compute-honesty": "node scripts/colab-compute-honesty.js",
1211
+ "test:llm-obs-honesty": "node --test tests/llm-obs-honesty.test.js",
1212
+ "llm-obs-honesty": "node scripts/llm-obs-honesty.js",
1192
1213
  "test:workspace-search-route": "node --test tests/workspace-search-route.test.js",
1193
1214
  "test:intent-governed-execution": "node --test tests/intent-governed-execution.test.js",
1194
1215
  "memory:vs-rag": "node scripts/memory-vs-rag-route.js",
@@ -1197,7 +1218,13 @@
1197
1218
  "workload-identity:honesty": "node scripts/workload-identity-honesty.js",
1198
1219
  "test:workload-identity-honesty": "node --test tests/workload-identity-honesty.test.js",
1199
1220
  "config:strict-parse": "node scripts/config-strict-parse.js",
1200
- "test:config-strict-parse": "node --test tests/config-strict-parse.test.js"
1221
+ "test:config-strict-parse": "node --test tests/config-strict-parse.test.js",
1222
+ "test:deeppattern-discipline-honesty": "node --test tests/deeppattern-discipline-honesty.test.js",
1223
+ "deeppattern-discipline-honesty": "node scripts/deeppattern-discipline-honesty.js",
1224
+ "test:ci-gha-buildkite-patterns": "node --test tests/ci-gha-buildkite-patterns.test.js",
1225
+ "ci-gha-buildkite-patterns": "node scripts/ci-gha-buildkite-patterns.js",
1226
+ "test:board-loop": "node --test tests/thumbgate-board-loop.test.js",
1227
+ "board-loop": "node scripts/thumbgate-board-loop.js"
1201
1228
  },
1202
1229
  "keywords": [
1203
1230
  "mcp",
@@ -1252,13 +1279,13 @@
1252
1279
  "node": ">=18.18.0"
1253
1280
  },
1254
1281
  "dependencies": {
1255
- "@anthropic-ai/sdk": "^0.122.0",
1256
- "@google/genai": "2.21.0",
1282
+ "@anthropic-ai/sdk": "^0.125.0",
1283
+ "@google/genai": "2.22.0",
1257
1284
  "@lancedb/lancedb": "^0.38.0",
1258
1285
  "apache-arrow": "^18.1.0",
1259
1286
  "better-sqlite3": "^12.9.0",
1260
1287
  "dotenv": "^17.4.2",
1261
- "js-yaml": "5.4.1",
1288
+ "js-yaml": "5.4.2",
1262
1289
  "playwright-core": "^1.59.1",
1263
1290
  "protobufjs": "^8.7.1",
1264
1291
  "stripe": "^22.2.0"
@@ -1275,7 +1302,7 @@
1275
1302
  "express@4.22.1": {
1276
1303
  "path-to-regexp": "0.1.13"
1277
1304
  },
1278
- "js-yaml": "5.4.1",
1305
+ "js-yaml": "5.4.2",
1279
1306
  "sharp": "0.35.4",
1280
1307
  "undici": "8.10.2"
1281
1308
  },
@@ -0,0 +1,42 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>LLM Observability on Existing Rails: The Four Hardened Practices | ThumbGate</title>
7
+ <link rel="canonical" href="https://thumbgate.ai/blog/2026-09-23-datadog-llm-obs-four-practices">
8
+ <meta name="description" content="Operational metrics, injection/PII scrubbing, quality evals, and parented spans without heavy vendor SKUs.">
9
+ <meta property="og:title" content="LLM Observability on Existing Rails: The Four Hardened Practices">
10
+ <meta property="og:description" content="Operational metrics, injection/PII scrubbing, quality evals, and parented spans without heavy vendor SKUs.">
11
+ <meta property="og:url" content="https://thumbgate.ai/blog/2026-09-23-datadog-llm-obs-four-practices">
12
+ <link rel="stylesheet" href="/style.css">
13
+ </head>
14
+ <body class="blog-post-page">
15
+ <main class="container">
16
+ <article class="post-content">
17
+ <h1>LLM Observability on Existing Rails: The Four Hardened Practices</h1>
18
+ <p class="post-meta">Published on 2026-09-23 by Igor Ganapolsky</p>
19
+ <section class="post-body">
20
+ <p class="lead">Operational metrics, injection/PII scrubbing, quality evals, and parented spans without heavy vendor SKUs.</p>
21
+ <h2>The Failure Mode</h2>
22
+ <p>Traditional APM tools add massive dependency bloat and vendor lock-in for AI agent observability, while ad-hoc logging misses parent-child tool call spans and leaks sensitive tokens.</p>
23
+ <h2>Architectural Resolution</h2>
24
+ <p>ThumbGate steals the four essential Datadog LLM-obs formats onto native Node.js rails: structured execution receipts, automatic PII redaction, deterministic quality evals, and correlation-parented spans.</p>
25
+ <pre><code>// Lightweight e2e parented execution receipt
26
+ const receipt = {
27
+ spanId: generateSpanId(),
28
+ parentId: activeTrace.parentId,
29
+ toolName: 'Bash',
30
+ redactedArgs: scrubPII(rawArgs),
31
+ verdict: 'allowed',
32
+ durationMs: 42,
33
+ timestamp: new Date().toISOString()
34
+ };</code></pre>
35
+ </section>
36
+ <footer class="post-footer">
37
+ <a href="https://thumbgate.ai/go/pro?utm_source=blog&utm_medium=article&utm_campaign=2026-09-23-datadog-llm-obs-four-practices" class="cta-btn">Upgrade to ThumbGate Pro</a>
38
+ </footer>
39
+ </article>
40
+ </main>
41
+ </body>
42
+ </html>
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.37.2">
8
+ <meta name="thumbgate-version" content="1.37.3">
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__/">
@@ -948,7 +948,7 @@ next decision recorded before execution</pre>
948
948
 
949
949
  <footer>
950
950
  <div class="shell footer-inner">
951
- <span>ThumbGate · MIT License · npm v1.37.2</span>
951
+ <span>ThumbGate · MIT License · npm v1.37.3</span>
952
952
  <div class="footer-links">
953
953
  <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
954
954
  <a href="/guide">Technical setup</a>
@@ -139,7 +139,7 @@ __GA_BOOTSTRAP__
139
139
  <a class="btn-secondary" href="/diagnostic?utm_source=install_page&utm_medium=owned_page&utm_campaign=marketplace_distribution">Harden one workflow</a>
140
140
  </div>
141
141
  <div class="proof-strip" aria-label="Verified live distribution surfaces">
142
- <div class="proof"><strong>npm</strong><span>thumbgate@1.37.2</span></div>
142
+ <div class="proof"><strong>npm</strong><span>thumbgate@1.37.3</span></div>
143
143
  <div class="proof"><strong>VS Code</strong><span>Marketplace version live</span></div>
144
144
  <div class="proof"><strong>Open VSX</strong><span>Antigravity-compatible path</span></div>
145
145
  <div class="proof"><strong>MCP Registry</strong><span>1.27.20 is latest</span></div>
@@ -152,11 +152,11 @@ __GA_BOOTSTRAP__
152
152
  <h2>Choose the install path that matches your agent.</h2>
153
153
  <p class="section-lede">Use the local CLI path for immediate enforcement. Use marketplace installs where your editor supports them. Use the diagnostic path when you need a human-reviewed gate map for one risky workflow. New install: <a href="/guides/progressive-wiring">prove the pipe first</a> (doctor green, empty dashboard OK) before expecting a gate to fire.</p>
154
154
  <div class="grid">
155
- <article class="card"><h3>CLI and MCP-compatible agents</h3><p>Fastest path for Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode, and local MCP-compatible agents.</p><pre><code>npx -y thumbgate@1.37.2 doctor
156
- npx -y thumbgate@1.37.2 doctor --fix</code></pre></article>
157
- <article class="card"><h3>Claude Desktop</h3><p>Use the npm-backed MCP server today. The Claude Desktop `.mcpb` directory submission packet is prepared separately.</p><pre><code>claude mcp add thumbgate -- npx --yes --package thumbgate@1.37.2 thumbgate serve</code></pre></article>
158
- <article class="card"><h3>Cursor</h3><p>The public Cursor Marketplace listing is not live yet. Use the CLI wiring while the dashboard submission is resolved.</p><pre><code>npx -y thumbgate@1.37.2 init --agent cursor</code></pre></article>
159
- <article class="card"><h3>Codex</h3><p>Use the local adapter now. Public Codex self-serve plugin publishing is not open yet, so the GitHub Release asset is the distribution proof.</p><pre><code>npx -y thumbgate@1.37.2 init --agent codex</code></pre></article>
155
+ <article class="card"><h3>CLI and MCP-compatible agents</h3><p>Fastest path for Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode, and local MCP-compatible agents.</p><pre><code>npx -y thumbgate@1.37.3 doctor
156
+ npx -y thumbgate@1.37.3 doctor --fix</code></pre></article>
157
+ <article class="card"><h3>Claude Desktop</h3><p>Use the npm-backed MCP server today. The Claude Desktop `.mcpb` directory submission packet is prepared separately.</p><pre><code>claude mcp add thumbgate -- npx --yes --package thumbgate@1.37.3 thumbgate serve</code></pre></article>
158
+ <article class="card"><h3>Cursor</h3><p>The public Cursor Marketplace listing is not live yet. Use the CLI wiring while the dashboard submission is resolved.</p><pre><code>npx -y thumbgate@1.37.3 init --agent cursor</code></pre></article>
159
+ <article class="card"><h3>Codex</h3><p>Use the local adapter now. Public Codex self-serve plugin publishing is not open yet, so the GitHub Release asset is the distribution proof.</p><pre><code>npx -y thumbgate@1.37.3 init --agent codex</code></pre></article>
160
160
  </div>
161
161
  </div>
162
162
  </section>
@@ -165,7 +165,7 @@ npx -y thumbgate@1.37.2 doctor --fix</code></pre></article>
165
165
  <h2>Verified public surfaces.</h2>
166
166
  <p class="section-lede">These are the surfaces safe to claim in public copy right now. Pending surfaces are listed so buyers do not get sent to dead marketplace pages.</p>
167
167
  <div class="status-list">
168
- <div class="status"><span class="badge live">LIVE</span><div><strong><a href="https://www.npmjs.com/package/thumbgate">npm package</a></strong><span>`thumbgate@1.37.2` is the canonical runtime install.</span></div></div>
168
+ <div class="status"><span class="badge live">LIVE</span><div><strong><a href="https://www.npmjs.com/package/thumbgate">npm package</a></strong><span>`thumbgate@1.37.3` is the canonical runtime install.</span></div></div>
169
169
  <div class="status"><span class="badge live">LIVE</span><div><strong><a href="https://marketplace.visualstudio.com/items?itemName=igorganapolsky.thumbgate">VS Code Marketplace</a></strong><span>Marketplace version-list API includes `1.27.20`.</span></div></div>
170
170
  <div class="status"><span class="badge live">LIVE</span><div><strong><a href="https://open-vsx.org/extension/igorganapolsky/thumbgate">Open VSX</a></strong><span>Public registry latest version is `1.27.20`; use this path for VS Code-compatible IDEs that consume Open VSX.</span></div></div>
171
171
  <div class="status"><span class="badge live">LIVE</span><div><strong><a href="https://registry.modelcontextprotocol.io/v0/servers?search=thumbgate">MCP Registry</a></strong><span>Public search returns `io.github.IgorGanapolsky/thumbgate` version `1.27.20` as latest.</span></div></div>
@@ -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.37.2",
28
+ "softwareVersion": "1.37.3",
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.37.2</div>
205
+ <div class="freshness">Updated: 2026-08-03 · Version 1.37.3</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>