thumbgate 1.16.13 → 1.16.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +3 -1
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/mcp/server-stdio.js +26 -1
- package/adapters/opencode/opencode.json +1 -1
- package/bin/cli.js +420 -1
- package/bin/postinstall.js +2 -2
- package/config/gate-templates.json +372 -0
- package/config/mcp-allowlists.json +25 -0
- package/config/model-candidates.json +59 -2
- package/config/model-tiers.json +4 -1
- package/package.json +79 -22
- package/public/compare.html +6 -0
- package/public/index.html +153 -20
- package/public/numbers.html +6 -6
- package/public/pro.html +25 -27
- package/scripts/agent-design-governance.js +211 -0
- package/scripts/agent-reasoning-traces.js +683 -0
- package/scripts/agent-reward-model.js +438 -0
- package/scripts/agent-stack-survival-audit.js +231 -0
- package/scripts/ai-engineering-stack-guardrails.js +256 -0
- package/scripts/billing.js +33 -5
- package/scripts/chatgpt-ads-readiness-pack.js +195 -0
- package/scripts/cli-schema.js +277 -0
- package/scripts/code-graph-guardrails.js +176 -0
- package/scripts/commercial-offer.js +1 -1
- package/scripts/deepseek-v4-runtime-guardrails.js +253 -0
- package/scripts/gemini-embedding-policy.js +198 -0
- package/scripts/inference-cache-policy.js +39 -0
- package/scripts/judge-reward-function.js +396 -0
- package/scripts/llm-behavior-monitor.js +251 -0
- package/scripts/long-running-agent-context-guardrails.js +176 -0
- package/scripts/multimodal-retrieval-plan.js +31 -11
- package/scripts/oss-pr-opportunity-scout.js +240 -0
- package/scripts/proactive-agent-eval-guardrails.js +230 -0
- package/scripts/profile-router.js +5 -4
- package/scripts/prompting-operating-system.js +273 -0
- package/scripts/proxy-pointer-rag-guardrails.js +189 -0
- package/scripts/rag-precision-guardrails.js +202 -0
- package/scripts/rate-limiter.js +1 -1
- package/scripts/reasoning-efficiency-guardrails.js +176 -0
- package/scripts/reward-hacking-guardrails.js +251 -0
- package/scripts/seo-gsd.js +1201 -11
- package/scripts/single-use-credential-gate.js +182 -0
- package/scripts/structured-prompt-driven.js +226 -0
- package/scripts/telemetry-analytics.js +108 -6
- package/scripts/tool-registry.js +92 -0
- package/scripts/upstream-contribution-engine.js +379 -0
- package/scripts/vector-store.js +119 -4
- package/src/api/server.js +455 -143
- package/scripts/agents-sdk-sandbox-plan.js +0 -57
- package/scripts/ai-org-governance.js +0 -98
- package/scripts/artifact-agent-plan.js +0 -81
- package/scripts/enterprise-agent-rollout.js +0 -34
- package/scripts/experience-replay-governance.js +0 -69
- package/scripts/inference-economics.js +0 -53
- package/scripts/knowledge-layer-plan.js +0 -108
- package/scripts/memory-store-governance.js +0 -60
- package/scripts/post-training-governance.js +0 -34
- package/scripts/production-agent-readiness.js +0 -40
- package/scripts/scaling-law-claims.js +0 -60
- package/scripts/student-consistent-training.js +0 -73
package/scripts/seo-gsd.js
CHANGED
|
@@ -13,6 +13,8 @@ const PRODUCT = {
|
|
|
13
13
|
homepageUrl: 'https://thumbgate.ai',
|
|
14
14
|
verificationUrl: 'https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md',
|
|
15
15
|
automationUrl: 'https://github.com/IgorGanapolsky/ThumbGate/blob/main/proof/automation/report.json',
|
|
16
|
+
sprintDiagnosticPaymentUrl: 'https://buy.stripe.com/00w14neyUcXA5pL5e33sI0e',
|
|
17
|
+
workflowSprintPaymentUrl: 'https://buy.stripe.com/fZu9AT76saPsg4pbCr3sI0f',
|
|
16
18
|
compatibility: ['Claude Code', 'Cursor', 'Codex', 'Gemini', 'Amp', 'OpenCode'],
|
|
17
19
|
proofPoints: [
|
|
18
20
|
'thumbs-up/down feedback loop',
|
|
@@ -48,6 +50,81 @@ const HIGH_ROI_QUERY_SEEDS = [
|
|
|
48
50
|
94,
|
|
49
51
|
'Fresh harness-engineering demand that maps directly to ThumbGate progressive disclosure, pre-action checks, and workflow audits.',
|
|
50
52
|
),
|
|
53
|
+
querySeed(
|
|
54
|
+
'code knowledge graph guardrails',
|
|
55
|
+
94,
|
|
56
|
+
'Fresh Claude Code plugin and code-graph demand where ThumbGate can own the enforcement layer after graph-based code understanding.',
|
|
57
|
+
),
|
|
58
|
+
querySeed(
|
|
59
|
+
'developer machine supply chain guardrails',
|
|
60
|
+
94,
|
|
61
|
+
'Developer-machine compromise and package-manager risk map directly to ThumbGate pre-action gates before agents run risky local commands.',
|
|
62
|
+
),
|
|
63
|
+
querySeed(
|
|
64
|
+
'prompt tricks to workflow rules',
|
|
65
|
+
94,
|
|
66
|
+
'Fresh prompt-engineering skepticism that maps directly to ThumbGate converting clear instructions, examples, and repeated failures into enforceable local checks.',
|
|
67
|
+
),
|
|
68
|
+
querySeed(
|
|
69
|
+
'semantic programmatic seo guardrails',
|
|
70
|
+
94,
|
|
71
|
+
'Fresh semantic pSEO demand where ThumbGate can own the governance layer: authority maps, brand context rules, semantic internal linking, and technical monitoring before AI content scales.',
|
|
72
|
+
),
|
|
73
|
+
querySeed(
|
|
74
|
+
'proxy pointer rag guardrails',
|
|
75
|
+
94,
|
|
76
|
+
'Fresh document-RAG demand where ThumbGate can own grounding gates for section trees, image pointers, visual claims, and cross-document leakage.',
|
|
77
|
+
),
|
|
78
|
+
querySeed(
|
|
79
|
+
'rag precision tuning guardrails',
|
|
80
|
+
94,
|
|
81
|
+
'Fresh retrieval-quality demand where ThumbGate can gate embedding fine-tunes, threshold changes, recall regressions, and verifier latency before agentic RAG pipelines act.',
|
|
82
|
+
),
|
|
83
|
+
querySeed(
|
|
84
|
+
'internal ai engineering stack guardrails',
|
|
85
|
+
94,
|
|
86
|
+
'Fresh Cloudflare-style AI engineering stack demand where ThumbGate can govern AI gateways, MCP portals, AGENTS.md/LLM wiki freshness, AI review, and sandboxed background agents.',
|
|
87
|
+
),
|
|
88
|
+
querySeed(
|
|
89
|
+
'seo agent skills guardrails',
|
|
90
|
+
94,
|
|
91
|
+
'Fresh SEO-agent demand where ThumbGate can govern workspaces, proof context, brand rules, internal-link checks, and publish gates.',
|
|
92
|
+
),
|
|
93
|
+
querySeed(
|
|
94
|
+
'thumbgate vs fallow',
|
|
95
|
+
93,
|
|
96
|
+
'Bottom-of-funnel positioning against JS/TS static-analysis and agent-review tooling; Fallow finds code health issues while ThumbGate enforces agent action boundaries.',
|
|
97
|
+
),
|
|
98
|
+
querySeed(
|
|
99
|
+
'claude code masterclass guardrails',
|
|
100
|
+
91,
|
|
101
|
+
'Claude Code education demand proves a growing buyer audience that needs a safety kit after learning to automate more workflows.',
|
|
102
|
+
),
|
|
103
|
+
querySeed(
|
|
104
|
+
'long running agent context management',
|
|
105
|
+
93,
|
|
106
|
+
'Fresh Slack engineering pattern where ThumbGate can gate director journals, critic reviews, credibility scoring, and timelines for long-running agents.',
|
|
107
|
+
),
|
|
108
|
+
querySeed(
|
|
109
|
+
'reasoning compression guardrails',
|
|
110
|
+
92,
|
|
111
|
+
'Fresh efficient-reasoning research where ThumbGate can govern step-level confidence, verifier outcomes, and token-saving model routes.',
|
|
112
|
+
),
|
|
113
|
+
querySeed(
|
|
114
|
+
'background agent governance',
|
|
115
|
+
94,
|
|
116
|
+
'New team-buying query for unattended agent PRs where alignment context, isolated execution, risk-tiered review, and audit evidence create immediate ROI.',
|
|
117
|
+
),
|
|
118
|
+
querySeed(
|
|
119
|
+
'ai agent governance sprint',
|
|
120
|
+
95,
|
|
121
|
+
'Bottom-of-funnel service query that turns background-agent governance demand into a paid 48-hour Team intake and implementation wedge.',
|
|
122
|
+
),
|
|
123
|
+
querySeed(
|
|
124
|
+
'gpt-5.5 model evaluation',
|
|
125
|
+
94,
|
|
126
|
+
'Fresh frontier-model upgrade query that maps to ThumbGate model candidate benchmarking, dashboard-analysis workloads, and routing governance before teams move expensive work.',
|
|
127
|
+
),
|
|
51
128
|
querySeed(
|
|
52
129
|
'browser automation safety',
|
|
53
130
|
93,
|
|
@@ -242,6 +319,807 @@ function buildHarnessOptimizationGuide() {
|
|
|
242
319
|
});
|
|
243
320
|
}
|
|
244
321
|
|
|
322
|
+
const SEMANTIC_PSEO_GUARDRAILS_SPEC = Object.freeze({
|
|
323
|
+
slug: 'semantic-programmatic-seo-guardrails',
|
|
324
|
+
meta: {
|
|
325
|
+
query: 'semantic programmatic seo guardrails',
|
|
326
|
+
title: 'Semantic Programmatic SEO Guardrails | ThumbGate Guide',
|
|
327
|
+
heroTitle: 'Semantic pSEO Needs Governance Before Scale',
|
|
328
|
+
heroSummary: 'Semantic programmatic SEO works when every page has authority, brand context, internal links, and technical monitoring. ThumbGate turns those requirements into pre-action checks before AI agents publish at scale.',
|
|
329
|
+
},
|
|
330
|
+
takeaways: [
|
|
331
|
+
'Authority maps stop the team from generating pages in categories where ThumbGate has no right to rank yet.',
|
|
332
|
+
'Context governance turns brand rules, negative constraints, and proof links into reusable AI-agent instructions.',
|
|
333
|
+
'Semantic mesh checks prevent orphan pages by requiring every new SEO page to point to the next useful buyer step.',
|
|
334
|
+
'Technical monitoring catches broken routes, missing schema, and stale proof before scaled content hurts trust.',
|
|
335
|
+
],
|
|
336
|
+
sections: [
|
|
337
|
+
['paragraphs', 'Why this promotes ThumbGate', [
|
|
338
|
+
'The semantic pSEO play is not to publish thousands of thin pages. It is to prove that ThumbGate is the governance layer teams need before they let AI agents generate, edit, and publish buyer-facing surfaces.',
|
|
339
|
+
'That maps cleanly to the product: ThumbGate already turns feedback, context, and risky workflow patterns into pre-action checks. SEO teams have the same problem when AI content workflows start moving faster than review.',
|
|
340
|
+
]],
|
|
341
|
+
['bullets', 'The high-ROI pSEO guardrails', [
|
|
342
|
+
'Authority map gate: prioritize queries where ThumbGate already has topical proof, shipped pages, or product evidence.',
|
|
343
|
+
'Brand context gate: inject persona, negative wording constraints, pricing truth, and proof links before draft generation.',
|
|
344
|
+
'Semantic mesh gate: require every new page to link to a pillar, a comparison, a conversion path, and at least one adjacent guide.',
|
|
345
|
+
'Technical guardian gate: block publish when canonical tags, JSON-LD, llm-context links, route coverage, or proof freshness are missing.',
|
|
346
|
+
]],
|
|
347
|
+
['paragraphs', 'Where the conversion path belongs', [
|
|
348
|
+
'Semantic pSEO only helps us make money when the page routes the searcher into a concrete next step. For ThumbGate, the next step is either the $19/mo Pro lane for self-serve operators or the workflow-hardening sprint for teams with risky agent workflows.',
|
|
349
|
+
'That is why each page generated from the SEO/GEO engine needs a buyer-intent CTA, related pages that keep the journey alive, and proof assets that reduce trust friction before checkout.',
|
|
350
|
+
]],
|
|
351
|
+
],
|
|
352
|
+
faq: [
|
|
353
|
+
[
|
|
354
|
+
'Is semantic programmatic SEO just AI content at scale?',
|
|
355
|
+
'No. The useful version starts with authority data, then uses governed context, semantic linking, and technical monitoring so each page answers a distinct buyer need instead of duplicating a template.',
|
|
356
|
+
],
|
|
357
|
+
[
|
|
358
|
+
'How does ThumbGate fit into semantic pSEO?',
|
|
359
|
+
'ThumbGate is the enforcement layer around the AI workflow: it can block unsupported claims, missing proof, orphan pages, stale pricing, and risky publish steps before generated content goes live.',
|
|
360
|
+
],
|
|
361
|
+
],
|
|
362
|
+
relatedPaths: ['/guides/ai-search-topical-presence', '/guides/prompt-tricks-to-workflow-rules', '/compare/mem0'],
|
|
363
|
+
});
|
|
364
|
+
|
|
365
|
+
function buildSemanticPseoGuide() {
|
|
366
|
+
return guideBlueprint({
|
|
367
|
+
...SEMANTIC_PSEO_GUARDRAILS_SPEC.meta,
|
|
368
|
+
path: `/guides/${SEMANTIC_PSEO_GUARDRAILS_SPEC.slug}`,
|
|
369
|
+
pillar: 'seo-governance',
|
|
370
|
+
takeaways: SEMANTIC_PSEO_GUARDRAILS_SPEC.takeaways,
|
|
371
|
+
sections: SEMANTIC_PSEO_GUARDRAILS_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
372
|
+
faq: SEMANTIC_PSEO_GUARDRAILS_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
373
|
+
relatedPaths: SEMANTIC_PSEO_GUARDRAILS_SPEC.relatedPaths,
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
const PROXY_POINTER_RAG_GUARDRAILS_SPEC = Object.freeze({
|
|
378
|
+
slug: 'proxy-pointer-rag-guardrails',
|
|
379
|
+
meta: {
|
|
380
|
+
query: 'proxy pointer rag guardrails',
|
|
381
|
+
title: 'Proxy-Pointer RAG Guardrails | Multimodal Answers Without Ungrounded Images',
|
|
382
|
+
heroTitle: 'Proxy-Pointer RAG Needs Guardrails Before Visual Answers',
|
|
383
|
+
heroSummary: 'Proxy-pointer RAG keeps visual document systems cheaper by preserving section trees and image pointers instead of embedding every image. ThumbGate turns that structure into pre-action checks before agents answer with charts, figures, or screenshots.',
|
|
384
|
+
},
|
|
385
|
+
takeaways: [
|
|
386
|
+
'Document structure is a control surface: section trees, source document IDs, and image paths should travel with every answer.',
|
|
387
|
+
'Visual answers need pointer grounding so one plausible chart from the wrong PDF cannot slip into a buyer-facing response.',
|
|
388
|
+
'ThumbGate now maps proxy-pointer RAG signals to Document RAG Safety templates through npx thumbgate proxy-pointer-rag-guardrails.',
|
|
389
|
+
],
|
|
390
|
+
sections: [
|
|
391
|
+
['paragraphs', 'Why this helps ThumbGate', [
|
|
392
|
+
'The commercial wedge is clear: teams want cheaper multimodal answers, but they still need proof that the visual evidence came from the right document and section.',
|
|
393
|
+
'ThumbGate does not replace multimodal embeddings. It governs the answer boundary: did the agent preserve the section tree, attach image pointers, prevent cross-document leakage, and sanity-check high-impact visual claims?',
|
|
394
|
+
]],
|
|
395
|
+
['bullets', 'High-ROI gates to enable', [
|
|
396
|
+
'Require section tree before multimodal answers so visual claims stay attached to document hierarchy.',
|
|
397
|
+
'Require image pointer grounding for every cited chart, figure, or screenshot path.',
|
|
398
|
+
'Block cross-document image leakage when the selected visual belongs to a different source document.',
|
|
399
|
+
'Checkpoint a vision filter only when the answer makes high-impact visual claims.',
|
|
400
|
+
'CLI path: npx thumbgate proxy-pointer-rag-guardrails --tree-path=.rag/tree.json --image-pointers=paper-1/figures/fig2.png --documents=paper-1 --visual-claims --json.',
|
|
401
|
+
]],
|
|
402
|
+
['paragraphs', 'Where this creates revenue', [
|
|
403
|
+
'This gives ThumbGate a new RAG/document-AI buyer path without pretending to be a vector database. The offer is workflow hardening for one document-answering pipeline: ingestion metadata, pointer proof, answer gates, and evidence review.',
|
|
404
|
+
]],
|
|
405
|
+
],
|
|
406
|
+
faq: [
|
|
407
|
+
[
|
|
408
|
+
'Does ThumbGate replace multimodal embeddings?',
|
|
409
|
+
'No. ThumbGate enforces the structure around the retrieval and answer step. Teams can still use text embeddings, multimodal embeddings, or proxy-pointer RAG; ThumbGate checks whether the answer is grounded before the agent acts.',
|
|
410
|
+
],
|
|
411
|
+
[
|
|
412
|
+
'What should teams gate first in visual document RAG?',
|
|
413
|
+
'Start with section-tree presence, image pointer grounding, and cross-document leakage. Those checks are specific enough to enforce quickly and risky enough to matter.',
|
|
414
|
+
],
|
|
415
|
+
],
|
|
416
|
+
relatedPaths: ['/guides/rag-precision-tuning-guardrails', '/guides/code-knowledge-graph-guardrails', '/guides/pre-action-checks'],
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
function buildProxyPointerRagGuide() {
|
|
420
|
+
return guideBlueprint({
|
|
421
|
+
...PROXY_POINTER_RAG_GUARDRAILS_SPEC.meta,
|
|
422
|
+
path: `/guides/${PROXY_POINTER_RAG_GUARDRAILS_SPEC.slug}`,
|
|
423
|
+
pillar: 'document-rag-safety',
|
|
424
|
+
takeaways: PROXY_POINTER_RAG_GUARDRAILS_SPEC.takeaways,
|
|
425
|
+
sections: PROXY_POINTER_RAG_GUARDRAILS_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
426
|
+
faq: PROXY_POINTER_RAG_GUARDRAILS_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
427
|
+
relatedPaths: PROXY_POINTER_RAG_GUARDRAILS_SPEC.relatedPaths,
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
const RAG_PRECISION_TUNING_GUARDRAILS_SPEC = Object.freeze({
|
|
432
|
+
slug: 'rag-precision-tuning-guardrails',
|
|
433
|
+
meta: {
|
|
434
|
+
query: 'rag precision tuning guardrails',
|
|
435
|
+
title: 'RAG Precision Tuning Guardrails | Stop Retrieval Regressions Before Agents Act',
|
|
436
|
+
heroTitle: 'RAG Precision Tuning Can Break Agentic Pipelines Quietly',
|
|
437
|
+
heroSummary: 'Embedding fine-tunes and threshold tweaks can improve one precision metric while degrading broad retrieval recall. ThumbGate gates retrieval changes with baselines, verifier checks, and latency budgets before agentic RAG output triggers downstream actions.',
|
|
438
|
+
},
|
|
439
|
+
takeaways: [
|
|
440
|
+
'A precision win is not safe unless recall@k, precision@k, answer-with-evidence, and latency are compared against a saved baseline.',
|
|
441
|
+
'Agentic RAG raises the risk because one retrieval miss can cascade into tool calls, decisions, or workflow changes.',
|
|
442
|
+
'ThumbGate now exposes npx thumbgate rag-precision-guardrails for retrieval-tuning and verifier rollout checks.',
|
|
443
|
+
],
|
|
444
|
+
sections: [
|
|
445
|
+
['paragraphs', 'Why this became urgent', [
|
|
446
|
+
'Recent retrieval research surfaced a failure mode that matches ThumbGate perfectly: a system can look better on one tuning objective while quietly getting worse at the general retrieval job the agent depends on.',
|
|
447
|
+
'That is not only an answer-quality problem. In an agentic pipeline, retrieved context can determine which files get edited, which customer gets contacted, or which operational action runs next.',
|
|
448
|
+
]],
|
|
449
|
+
['bullets', 'High-ROI gates to enable', [
|
|
450
|
+
'Require a retrieval baseline before embedding fine-tunes, threshold changes, or top-k changes.',
|
|
451
|
+
'Block rollout when recall drops without a rollback plan, even if a narrow precision metric improves.',
|
|
452
|
+
'Require a second-stage verifier or reranker for structural near misses such as negation flips and role reversals.',
|
|
453
|
+
'Checkpoint latency and precision tradeoffs before verifier stages become production dependencies.',
|
|
454
|
+
'CLI path: npx thumbgate rag-precision-guardrails --baseline-recall=0.86 --new-recall=0.72 --threshold-change --agentic --structural-near-misses --json.',
|
|
455
|
+
]],
|
|
456
|
+
['paragraphs', 'Where this creates revenue', [
|
|
457
|
+
'This is a sharp enterprise wedge for teams that already bought a vector database or RAG platform and now need governance. ThumbGate sells the missing safety lane: baseline proof, action gates, and retrieval-change review before autonomous agents depend on the new index.',
|
|
458
|
+
]],
|
|
459
|
+
],
|
|
460
|
+
faq: [
|
|
461
|
+
[
|
|
462
|
+
'Does higher retrieval precision always help RAG?',
|
|
463
|
+
'No. Precision tuning can improve a narrow objective while hurting broad recall or generalization. ThumbGate treats retrieval tuning as a gated change, not a harmless config tweak.',
|
|
464
|
+
],
|
|
465
|
+
[
|
|
466
|
+
'When do I need a two-stage verifier?',
|
|
467
|
+
'Use one when the workflow is sensitive to structural near misses, such as negation, role reversal, legal clauses, financial facts, policy exceptions, or anything that can trigger downstream agent actions.',
|
|
468
|
+
],
|
|
469
|
+
],
|
|
470
|
+
relatedPaths: ['/guides/proxy-pointer-rag-guardrails', '/guides/pre-action-checks', '/guides/background-agent-governance'],
|
|
471
|
+
});
|
|
472
|
+
|
|
473
|
+
function buildRagPrecisionTuningGuide() {
|
|
474
|
+
return guideBlueprint({
|
|
475
|
+
...RAG_PRECISION_TUNING_GUARDRAILS_SPEC.meta,
|
|
476
|
+
path: `/guides/${RAG_PRECISION_TUNING_GUARDRAILS_SPEC.slug}`,
|
|
477
|
+
pillar: 'document-rag-safety',
|
|
478
|
+
takeaways: RAG_PRECISION_TUNING_GUARDRAILS_SPEC.takeaways,
|
|
479
|
+
sections: RAG_PRECISION_TUNING_GUARDRAILS_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
480
|
+
faq: RAG_PRECISION_TUNING_GUARDRAILS_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
481
|
+
relatedPaths: RAG_PRECISION_TUNING_GUARDRAILS_SPEC.relatedPaths,
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
const AI_ENGINEERING_STACK_GUARDRAILS_SPEC = Object.freeze({
|
|
486
|
+
slug: 'internal-ai-engineering-stack-guardrails',
|
|
487
|
+
meta: {
|
|
488
|
+
query: 'internal ai engineering stack guardrails',
|
|
489
|
+
title: 'Internal AI Engineering Stack Guardrails | ThumbGate Guide',
|
|
490
|
+
heroTitle: 'Internal AI Engineering Stacks Need Pre-Action Enforcement',
|
|
491
|
+
heroSummary: 'AI coding adoption scales when the platform has a model gateway, progressive MCP discovery, fresh AGENTS.md and LLM wiki context, risk-tiered AI review, and sandboxed background agents. ThumbGate turns those layers into checks before unsafe agent work ships.',
|
|
492
|
+
},
|
|
493
|
+
takeaways: [
|
|
494
|
+
'A central AI gateway or proxy keeps model keys, spend, attribution, routing, and retention policy out of individual laptops.',
|
|
495
|
+
'MCP portals need progressive discovery or code-mode search/execute tools before schema overhead eats the agent context window.',
|
|
496
|
+
'AGENTS.md and LLM wiki pages become useful only when source-backed freshness gates keep repo instructions current.',
|
|
497
|
+
'Risk-tiered AI review and sandboxed background agents let teams automate more work without losing standards, logs, or isolation.',
|
|
498
|
+
],
|
|
499
|
+
sections: [
|
|
500
|
+
['paragraphs', 'Why this helps ThumbGate make money', [
|
|
501
|
+
'Cloudflare described the enterprise version of a pattern ThumbGate can sell to smaller teams today: the value is not a clever prompt, it is the wiring between access, model routing, tool portals, repo context, review, standards, and durable agent execution.',
|
|
502
|
+
'ThumbGate is the enforcement layer for that stack. It can block direct provider keys, warn on MCP schema bloat, require AGENTS.md and LLM wiki freshness, demand rule-cited review, and stop background agents that are not isolated before the next action runs.',
|
|
503
|
+
]],
|
|
504
|
+
['bullets', 'The high-ROI stack gates', [
|
|
505
|
+
'AI gateway gate: require one model proxy or gateway before adding providers, clients, BYOK paths, or high-volume coding assistants.',
|
|
506
|
+
'MCP portal gate: collapse large tool surfaces behind progressive discovery or code-mode search/execute so every prompt does not preload every schema.',
|
|
507
|
+
'AGENTS.md and LLM wiki freshness gate: regenerate short repo context from source metadata, ownership, tests, and dependency maps before agent runs rely on it.',
|
|
508
|
+
'AI review gate: classify changes by risk tier, cite standards-as-skills, and separate security, code quality, performance, docs, and release-impact findings.',
|
|
509
|
+
'Background agent sandbox gate: require isolated clone/build/test execution, durable logs, and resumable sessions before unattended agents can publish, deploy, or touch revenue workflows.',
|
|
510
|
+
]],
|
|
511
|
+
['paragraphs', 'How to run it this week', [
|
|
512
|
+
'Start with the parts that affect money or production: checkout, pricing, publish automation, deploys, customer data, and outbound marketing. Run the stack planner against those workflows, enable the recommended templates, then publish the guide as proof that ThumbGate understands the modern AI engineering stack.',
|
|
513
|
+
'This also answers the LLM-wiki trend directly. A wiki is useful when it becomes short, source-backed context that agents can trust; it is dangerous when stale pages become invisible policy. ThumbGate makes freshness and grounding enforceable.',
|
|
514
|
+
]],
|
|
515
|
+
['bullets', 'Operator command', [
|
|
516
|
+
'npx thumbgate ai-engineering-stack-guardrails --mcp-tool-count=182 --direct-provider-keys --llm-wiki-pages=24 --context-freshness-days=30 --background-agents --high-risk-workflows=deploy,billing --json.',
|
|
517
|
+
]],
|
|
518
|
+
],
|
|
519
|
+
faq: [
|
|
520
|
+
[
|
|
521
|
+
'Do we need to rebuild Cloudflare infrastructure to benefit from this?',
|
|
522
|
+
'No. ThumbGate starts with the control points that matter most: centralized model access, smaller MCP surfaces, fresh agent context, AI review, and sandbox evidence. Those can be gated before a full platform migration.',
|
|
523
|
+
],
|
|
524
|
+
[
|
|
525
|
+
'How does this relate to LLM wikis and AGENTS.md?',
|
|
526
|
+
'Both are agent-context surfaces. ThumbGate treats them as source-backed operational artifacts, then blocks or warns when they are missing, stale, unowned, or disconnected from tests and repo conventions.',
|
|
527
|
+
],
|
|
528
|
+
],
|
|
529
|
+
relatedPaths: ['/guides/code-knowledge-graph-guardrails', '/guides/long-running-agent-context-management', '/guides/rag-precision-tuning-guardrails'],
|
|
530
|
+
});
|
|
531
|
+
|
|
532
|
+
function buildAiEngineeringStackGuide() {
|
|
533
|
+
return guideBlueprint({
|
|
534
|
+
...AI_ENGINEERING_STACK_GUARDRAILS_SPEC.meta,
|
|
535
|
+
path: `/guides/${AI_ENGINEERING_STACK_GUARDRAILS_SPEC.slug}`,
|
|
536
|
+
pillar: 'ai-stack-governance',
|
|
537
|
+
takeaways: AI_ENGINEERING_STACK_GUARDRAILS_SPEC.takeaways,
|
|
538
|
+
sections: AI_ENGINEERING_STACK_GUARDRAILS_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
539
|
+
faq: AI_ENGINEERING_STACK_GUARDRAILS_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
540
|
+
relatedPaths: AI_ENGINEERING_STACK_GUARDRAILS_SPEC.relatedPaths,
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
const SEO_AGENT_SKILLS_GUARDRAILS_SPEC = Object.freeze({
|
|
545
|
+
slug: 'seo-agent-skills-guardrails',
|
|
546
|
+
meta: {
|
|
547
|
+
query: 'seo agent skills guardrails',
|
|
548
|
+
title: 'SEO Agent Skills Guardrails | Govern Workspaces, Proof, and Publish Gates',
|
|
549
|
+
heroTitle: 'SEO Agents Need Workspaces and Guardrails, Not Prompt Sprawl',
|
|
550
|
+
heroSummary: 'Useful SEO agents need skills, workspace context, technical checks, brand rules, and a publish review loop. ThumbGate turns that SEO-agent operating system into pre-action gates before AI content, links, or page changes go live.',
|
|
551
|
+
},
|
|
552
|
+
takeaways: [
|
|
553
|
+
'The best SEO-agent workflow starts with workspaces: site context, brand context, SERP evidence, technical constraints, and proof assets.',
|
|
554
|
+
'ThumbGate makes those skills enforceable with gates for unsupported claims, orphan pages, stale pricing, schema gaps, and missing internal links.',
|
|
555
|
+
'This promotes ThumbGate directly because every SEO-agent buyer also needs a governance layer before automation scales.',
|
|
556
|
+
],
|
|
557
|
+
sections: [
|
|
558
|
+
['paragraphs', 'Why this promotes ThumbGate', [
|
|
559
|
+
'The Search Engine Land pattern is exactly our product thesis in a marketing workflow: stop relying on free-form prompts and build a skill/workspace system that agents can use repeatedly.',
|
|
560
|
+
'ThumbGate adds the missing enforcement layer. An SEO skill can say "use proof links" or "check the sitemap"; a ThumbGate pre-action gate can block publish when proof, canonical tags, schema, or buyer-path links are missing.',
|
|
561
|
+
]],
|
|
562
|
+
['bullets', 'High-ROI SEO-agent gates', [
|
|
563
|
+
'Workspace context gate: require brand rules, pricing truth, proof links, SERP intent, and target persona before drafting.',
|
|
564
|
+
'Technical publish gate: block missing canonical tags, FAQPage schema, llm-context links, sitemap coverage, and crawl-safe routes.',
|
|
565
|
+
'Semantic mesh gate: require pillar, comparison, conversion, and adjacent-guide links before publishing a new page.',
|
|
566
|
+
'Reviewer handoff gate: require the agent to summarize claim risk, source evidence, and next conversion path before a human approves.',
|
|
567
|
+
]],
|
|
568
|
+
['paragraphs', 'Where this creates revenue', [
|
|
569
|
+
'This turns SEO-agent interest into the same Workflow Hardening Sprint offer: harden one content workflow, prove one publish gate, and connect the page to checkout or team intake instead of shipping more ungoverned AI content.',
|
|
570
|
+
]],
|
|
571
|
+
],
|
|
572
|
+
faq: [
|
|
573
|
+
[
|
|
574
|
+
'Should ThumbGate build SEO agents?',
|
|
575
|
+
'ThumbGate should govern SEO agents first. The product value is making skills, workspaces, and publish checks enforceable before generated pages or edits go live.',
|
|
576
|
+
],
|
|
577
|
+
[
|
|
578
|
+
'What is the first SEO-agent gate to implement?',
|
|
579
|
+
'Start with proof and semantic mesh: block pages that lack verification links, current pricing, related internal links, and a concrete conversion path.',
|
|
580
|
+
],
|
|
581
|
+
],
|
|
582
|
+
relatedPaths: ['/guides/semantic-programmatic-seo-guardrails', '/guides/ai-search-topical-presence', '/compare/fallow'],
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
function buildSeoAgentSkillsGuide() {
|
|
586
|
+
return guideBlueprint({
|
|
587
|
+
...SEO_AGENT_SKILLS_GUARDRAILS_SPEC.meta,
|
|
588
|
+
path: `/guides/${SEO_AGENT_SKILLS_GUARDRAILS_SPEC.slug}`,
|
|
589
|
+
pillar: 'seo-governance',
|
|
590
|
+
takeaways: SEO_AGENT_SKILLS_GUARDRAILS_SPEC.takeaways,
|
|
591
|
+
sections: SEO_AGENT_SKILLS_GUARDRAILS_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
592
|
+
faq: SEO_AGENT_SKILLS_GUARDRAILS_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
593
|
+
relatedPaths: SEO_AGENT_SKILLS_GUARDRAILS_SPEC.relatedPaths,
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
const CLAUDE_CODE_SKILLS_GUARDRAILS_SPEC = Object.freeze({
|
|
598
|
+
slug: 'claude-code-skills-guardrails',
|
|
599
|
+
meta: {
|
|
600
|
+
query: 'claude code masterclass guardrails',
|
|
601
|
+
title: 'Claude Code Skills Guardrails | Turn Skillbooks Into Enforced Workflows',
|
|
602
|
+
heroTitle: 'Claude Code Skills Need Pre-Action Enforcement',
|
|
603
|
+
heroSummary: 'Claude Code skillbooks make recurring work more systematic, but markdown skills are still advisory. ThumbGate turns skill feedback into reusable rules, tests, and pre-action checks before the next risky command or edit runs.',
|
|
604
|
+
},
|
|
605
|
+
takeaways: [
|
|
606
|
+
'A living skillbook is useful acquisition fuel because new Claude Code users need reusable workflows immediately.',
|
|
607
|
+
'The high-ROI product move is not another prompt file; it is converting named skills into gates, tests, and proof loops.',
|
|
608
|
+
'This creates a clear post-course offer: install ThumbGate after learning Claude Code so the new automation does not repeat costly mistakes.',
|
|
609
|
+
],
|
|
610
|
+
sections: [
|
|
611
|
+
['paragraphs', 'Why this helps ThumbGate', [
|
|
612
|
+
'Claude Code education expands the market. More people learning to automate code means more people about to hit repeated mistakes, risky shell commands, skipped tests, and vague project rules.',
|
|
613
|
+
'ThumbGate can be the safety kit for that moment: keep the skillbook, but promote every painful correction into an enforced pre-action check.',
|
|
614
|
+
]],
|
|
615
|
+
['bullets', 'High-ROI workflow to ship', [
|
|
616
|
+
'Create a repo skillbook with named skills for refactors, tests, migrations, CI hardening, and prompt/tool changes.',
|
|
617
|
+
'Require each skill to name inputs, forbidden actions, verification steps, and examples of good and bad execution.',
|
|
618
|
+
'Capture thumbs-down failures from skill use and promote repeat patterns into ThumbGate prevention rules.',
|
|
619
|
+
'Block risky actions when the current task claims a skill but skips its required verification.',
|
|
620
|
+
'Route buyers into the Workflow Hardening Sprint when one skill repeatedly fails in a shared repo.',
|
|
621
|
+
]],
|
|
622
|
+
['paragraphs', 'Where this creates revenue', [
|
|
623
|
+
'This is a concrete sales bridge from Claude Code training content to ThumbGate: if a team is investing in skills, they already believe AI coding workflows can improve. ThumbGate sells the part that makes those workflows reliable across sessions and teammates.',
|
|
624
|
+
]],
|
|
625
|
+
],
|
|
626
|
+
faq: [
|
|
627
|
+
[
|
|
628
|
+
'Does ThumbGate replace Claude skills?',
|
|
629
|
+
'No. Skills describe how work should happen. ThumbGate checks whether the agent is allowed to take the next action and whether it has followed the skill evidence requirements.',
|
|
630
|
+
],
|
|
631
|
+
[
|
|
632
|
+
'What should a Claude Code skillbook contain?',
|
|
633
|
+
'Use named skills with purpose, inputs, do/don’t rules, verification commands, expected evidence, and examples. Then wire repeated failures into ThumbGate gates.',
|
|
634
|
+
],
|
|
635
|
+
],
|
|
636
|
+
relatedPaths: ['/guides/claude-code-feedback', '/guides/prompt-tricks-to-workflow-rules', '/guides/pre-action-checks'],
|
|
637
|
+
});
|
|
638
|
+
|
|
639
|
+
function buildClaudeCodeSkillsGuide() {
|
|
640
|
+
return guideBlueprint({
|
|
641
|
+
...CLAUDE_CODE_SKILLS_GUARDRAILS_SPEC.meta,
|
|
642
|
+
path: `/guides/${CLAUDE_CODE_SKILLS_GUARDRAILS_SPEC.slug}`,
|
|
643
|
+
pillar: 'agent-workflows',
|
|
644
|
+
takeaways: CLAUDE_CODE_SKILLS_GUARDRAILS_SPEC.takeaways,
|
|
645
|
+
sections: CLAUDE_CODE_SKILLS_GUARDRAILS_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
646
|
+
faq: CLAUDE_CODE_SKILLS_GUARDRAILS_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
647
|
+
relatedPaths: CLAUDE_CODE_SKILLS_GUARDRAILS_SPEC.relatedPaths,
|
|
648
|
+
});
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
const LONG_RUNNING_AGENT_CONTEXT_GUIDE_SPEC = Object.freeze({
|
|
652
|
+
slug: 'long-running-agent-context-management',
|
|
653
|
+
meta: {
|
|
654
|
+
query: 'long running agent context management',
|
|
655
|
+
title: 'Long-Running Agent Context Management | Director Journals and Critic Reviews',
|
|
656
|
+
heroTitle: 'Long-Running Agents Need Structured Memory, Not Raw Chat Logs',
|
|
657
|
+
heroSummary: 'Slack\'s long-running multi-agent pattern points to director journals, critic reviews, and credibility-scored timelines. ThumbGate turns those context channels into pre-action checks before background agents, revenue loops, or investigations drift.',
|
|
658
|
+
},
|
|
659
|
+
takeaways: [
|
|
660
|
+
'Long-running agents should not rely on accumulated chat logs once requests and output grow across many rounds.',
|
|
661
|
+
'Director journals keep structured working memory; critic reviews score evidence; timelines deduplicate and resolve conflicts.',
|
|
662
|
+
'ThumbGate now exposes npx thumbgate long-running-agent-context-guardrails to gate missing structured memory before handoff or action.',
|
|
663
|
+
],
|
|
664
|
+
sections: [
|
|
665
|
+
['paragraphs', 'Why this helps ThumbGate', [
|
|
666
|
+
'This maps directly to Ralph Loop, reply orchestration, background PRs, and revenue automation. The longer the loop runs, the more dangerous raw history becomes as the source of truth.',
|
|
667
|
+
'ThumbGate can sell the control layer: journal the decisions, review findings with evidence, score credibility, and block external actions when the agent is building on unreviewed memory.',
|
|
668
|
+
]],
|
|
669
|
+
['bullets', 'High-ROI context gates', [
|
|
670
|
+
'Require a director journal for observations, decisions, questions, hypotheses, and open risks.',
|
|
671
|
+
'Require critic review with credibility scores before expert findings become shared memory.',
|
|
672
|
+
'Checkpoint the critic timeline when duplicates, stale claims, or conflicts remain unresolved.',
|
|
673
|
+
'CLI path: npx thumbgate long-running-agent-context-guardrails --request-count=80 --output-mb=3 --raw-chat-only --json.',
|
|
674
|
+
]],
|
|
675
|
+
['paragraphs', 'Where this creates revenue', [
|
|
676
|
+
'This is an enterprise-quality story for teams moving from one-off assistants to persistent agents. ThumbGate hardens one long-running workflow and proves that it can maintain truth across sessions before the agent reaches production authority.',
|
|
677
|
+
]],
|
|
678
|
+
],
|
|
679
|
+
faq: [
|
|
680
|
+
[
|
|
681
|
+
'Why not just keep the whole chat history?',
|
|
682
|
+
'Because raw history grows until it wastes context, creates stale truth, and degrades reasoning. Structured memory keeps the useful state without passing every token forever.',
|
|
683
|
+
],
|
|
684
|
+
[
|
|
685
|
+
'What should a long-running agent persist?',
|
|
686
|
+
'Persist a director journal, critic-reviewed findings with credibility scores, and a deduplicated timeline that resolves conflicts by strongest evidence.',
|
|
687
|
+
],
|
|
688
|
+
],
|
|
689
|
+
relatedPaths: ['/guides/background-agent-governance', '/guides/agent-harness-optimization', '/guides/pre-action-checks'],
|
|
690
|
+
});
|
|
691
|
+
|
|
692
|
+
function buildLongRunningAgentContextGuide() {
|
|
693
|
+
return preActionGuide(LONG_RUNNING_AGENT_CONTEXT_GUIDE_SPEC.slug, {
|
|
694
|
+
...LONG_RUNNING_AGENT_CONTEXT_GUIDE_SPEC.meta,
|
|
695
|
+
takeaways: LONG_RUNNING_AGENT_CONTEXT_GUIDE_SPEC.takeaways,
|
|
696
|
+
sections: LONG_RUNNING_AGENT_CONTEXT_GUIDE_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
697
|
+
faq: LONG_RUNNING_AGENT_CONTEXT_GUIDE_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
698
|
+
relatedPaths: LONG_RUNNING_AGENT_CONTEXT_GUIDE_SPEC.relatedPaths,
|
|
699
|
+
});
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
const REASONING_COMPRESSION_GUARDRAILS_SPEC = Object.freeze({
|
|
703
|
+
slug: 'reasoning-compression-guardrails',
|
|
704
|
+
meta: {
|
|
705
|
+
query: 'reasoning compression guardrails',
|
|
706
|
+
title: 'Reasoning Compression Guardrails | Step-Level Verifier Checks Before Token Savings',
|
|
707
|
+
heroTitle: 'Reasoning Compression Needs Step-Level Safety Checks',
|
|
708
|
+
heroSummary: 'Efficient reasoning can reduce token cost, but short traces can destabilize accuracy. ThumbGate gates reasoning compression with verifier outcomes, pass@1 baselines, low-confidence step review, and high-confidence failure inspection.',
|
|
709
|
+
},
|
|
710
|
+
takeaways: [
|
|
711
|
+
'Reasoning compression is only ROI-positive when quality survives the token savings.',
|
|
712
|
+
'Step-level confidence matters because correct final answers can still contain brittle intermediate steps.',
|
|
713
|
+
'ThumbGate now exposes npx thumbgate reasoning-efficiency-guardrails for verifier-backed model routing and prompt-eval workflows.',
|
|
714
|
+
],
|
|
715
|
+
sections: [
|
|
716
|
+
['paragraphs', 'Why this helps ThumbGate', [
|
|
717
|
+
'This creates a model-cost governance story: ThumbGate can help teams route cheaper, shorter reasoning only when a verifier proves the compressed trace is still safe.',
|
|
718
|
+
'The same mechanism also protects DPO/RLHF export and model-evaluation workflows from rewarding or punishing the wrong reasoning steps.',
|
|
719
|
+
]],
|
|
720
|
+
['bullets', 'High-ROI reasoning gates', [
|
|
721
|
+
'Require verifier and pass@1 evidence before compressing reasoning traces.',
|
|
722
|
+
'Checkpoint low-confidence steps even in correct rollouts before reinforcing them.',
|
|
723
|
+
'Checkpoint high-confidence failed rollouts for truncation or verifier noise before penalizing them.',
|
|
724
|
+
'CLI path: npx thumbgate reasoning-efficiency-guardrails --baseline-tokens=1200 --compressed-tokens=980 --baseline-accuracy=0.84 --compressed-accuracy=0.85 --verifier --json.',
|
|
725
|
+
]],
|
|
726
|
+
['paragraphs', 'Where this creates revenue', [
|
|
727
|
+
'This improves the Pro and Team model-hardening story. Buyers can save inference cost and evaluation time without turning "shorter reasoning" into an unmeasured reliability regression.',
|
|
728
|
+
]],
|
|
729
|
+
],
|
|
730
|
+
faq: [
|
|
731
|
+
[
|
|
732
|
+
'Should every agent use shorter reasoning traces?',
|
|
733
|
+
'No. Compress traces only when verifier outcomes and accuracy baselines prove the shorter route still works for the workload.',
|
|
734
|
+
],
|
|
735
|
+
[
|
|
736
|
+
'How does ThumbGate use step-level reasoning signals?',
|
|
737
|
+
'ThumbGate does not train the model directly. It gates routing, exports, and workflow decisions when low-confidence steps, high-confidence failures, or missing verifier evidence make compression risky.',
|
|
738
|
+
],
|
|
739
|
+
],
|
|
740
|
+
relatedPaths: ['/guides/gpt-5-5-model-evaluation', '/guides/agent-harness-optimization', '/guides/pre-action-checks'],
|
|
741
|
+
});
|
|
742
|
+
|
|
743
|
+
function buildReasoningCompressionGuide() {
|
|
744
|
+
return preActionGuide(REASONING_COMPRESSION_GUARDRAILS_SPEC.slug, {
|
|
745
|
+
...REASONING_COMPRESSION_GUARDRAILS_SPEC.meta,
|
|
746
|
+
takeaways: REASONING_COMPRESSION_GUARDRAILS_SPEC.takeaways,
|
|
747
|
+
sections: REASONING_COMPRESSION_GUARDRAILS_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
748
|
+
faq: REASONING_COMPRESSION_GUARDRAILS_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
749
|
+
relatedPaths: REASONING_COMPRESSION_GUARDRAILS_SPEC.relatedPaths,
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
const DEEPSEEK_V4_RUNTIME_GUARDRAILS_SPEC = Object.freeze({
|
|
754
|
+
slug: 'deepseek-v4-runtime-guardrails',
|
|
755
|
+
meta: {
|
|
756
|
+
query: 'deepseek v4 runtime guardrails',
|
|
757
|
+
title: 'DeepSeek V4 Runtime Guardrails | Sparse Attention, Speculation, and Verified RL',
|
|
758
|
+
heroTitle: 'DeepSeek-V4 Needs Runtime Guardrails Before Production Routing',
|
|
759
|
+
heroSummary: 'DeepSeek-V4 introduces long-context sparse attention, speculative decoding, KV offload, FP4/FP8 paths, and verified-RL replay concerns. ThumbGate turns those runtime signals into pre-action checks before model-routing or training changes go live.',
|
|
760
|
+
},
|
|
761
|
+
takeaways: [
|
|
762
|
+
'The high-ROI move is not blindly switching models; it is benchmarking DeepSeek-V4 behind cache, speculation, precision, and replay gates.',
|
|
763
|
+
'Hybrid sparse attention changes prefix-cache assumptions, so cache coherence and rollback evidence must exist before routing long traces.',
|
|
764
|
+
'ThumbGate now exposes npx thumbgate deepseek-v4-runtime-guardrails for self-hosted long-context model rollouts.',
|
|
765
|
+
],
|
|
766
|
+
sections: [
|
|
767
|
+
['paragraphs', 'Why this helps ThumbGate', [
|
|
768
|
+
'Teams adopting SGLang-style DeepSeek-V4 serving are exactly the buyers who need agent governance: they are optimizing cost and throughput while increasing context length and system complexity.',
|
|
769
|
+
'ThumbGate can sit above the runtime as the policy layer that blocks unsafe routing changes, requires benchmark proof, and keeps self-hosted model experiments from becoming invisible production risk.',
|
|
770
|
+
]],
|
|
771
|
+
['bullets', 'High-ROI runtime gates', [
|
|
772
|
+
'Require hybrid prefix-cache coherence eval before enabling long-context cache reuse.',
|
|
773
|
+
'Checkpoint speculative decoding acceptance length, rollback behavior, and correctness before treating it as a speedup.',
|
|
774
|
+
'Require long-context KV capacity and offload plans before 128k+ or 1M-token routing.',
|
|
775
|
+
'Require rollout routing replay, indexer replay, and train-inference drift checks before RL or fine-tuning updates.',
|
|
776
|
+
'Checkpoint FP4/FP8 mixed-precision determinism before benchmark results update routing.',
|
|
777
|
+
'CLI path: npx thumbgate deepseek-v4-runtime-guardrails --context-tokens=900000 --hybrid-attention --speculative-decoding --accept-length=1.4 --precision-mode=fp8 --json.',
|
|
778
|
+
]],
|
|
779
|
+
['paragraphs', 'Where this creates revenue', [
|
|
780
|
+
'This gives ThumbGate a serious infrastructure story for teams moving beyond hosted APIs. The offer is a Workflow Hardening Sprint around one model-routing lane: prove the runtime change, gate the risks, and keep the agent from silently routing expensive work through an unverified path.',
|
|
781
|
+
]],
|
|
782
|
+
],
|
|
783
|
+
faq: [
|
|
784
|
+
[
|
|
785
|
+
'Should ThumbGate switch to DeepSeek-V4 by default?',
|
|
786
|
+
'No. Treat DeepSeek-V4 as a candidate for self-hosted long-context workloads. Route to it only after ThumbGate benchmarks pass for quality, cache coherence, latency, cost, and rollback behavior.',
|
|
787
|
+
],
|
|
788
|
+
[
|
|
789
|
+
'What is different about DeepSeek-V4 governance?',
|
|
790
|
+
'The risk is not only model quality. Hybrid sparse attention, speculative decoding, KV offload, mixed precision, and RL replay can all create silent runtime failures unless each change is gated with evidence.',
|
|
791
|
+
],
|
|
792
|
+
],
|
|
793
|
+
relatedPaths: ['/guides/reasoning-compression-guardrails', '/guides/long-running-agent-context-management', '/guides/gpt-5-5-model-evaluation'],
|
|
794
|
+
});
|
|
795
|
+
|
|
796
|
+
function buildDeepSeekV4RuntimeGuide() {
|
|
797
|
+
return preActionGuide(DEEPSEEK_V4_RUNTIME_GUARDRAILS_SPEC.slug, {
|
|
798
|
+
...DEEPSEEK_V4_RUNTIME_GUARDRAILS_SPEC.meta,
|
|
799
|
+
takeaways: DEEPSEEK_V4_RUNTIME_GUARDRAILS_SPEC.takeaways,
|
|
800
|
+
sections: DEEPSEEK_V4_RUNTIME_GUARDRAILS_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
801
|
+
faq: DEEPSEEK_V4_RUNTIME_GUARDRAILS_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
802
|
+
relatedPaths: DEEPSEEK_V4_RUNTIME_GUARDRAILS_SPEC.relatedPaths,
|
|
803
|
+
});
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
const CODE_KNOWLEDGE_GRAPH_GUARDRAILS_SPEC = Object.freeze({
|
|
807
|
+
slug: 'code-knowledge-graph-guardrails',
|
|
808
|
+
meta: {
|
|
809
|
+
query: 'code knowledge graph guardrails',
|
|
810
|
+
title: 'Code Knowledge Graph Guardrails | ThumbGate Guide',
|
|
811
|
+
heroTitle: 'Code Graphs Are Context. ThumbGate Is Execution Control.',
|
|
812
|
+
heroSummary: 'Code knowledge graphs help AI coding agents understand files, functions, dependencies, and architecture layers. ThumbGate turns those graph signals into pre-action checks before risky edits, commands, deploys, or publishes execute.',
|
|
813
|
+
},
|
|
814
|
+
takeaways: [
|
|
815
|
+
'Code graphs explain what the system is; pre-action gates decide what the agent is allowed to do next.',
|
|
816
|
+
'The fastest rollout is three graph-informed checks: central-file impact review, cross-layer refactor checkpointing, and generated-graph artifact protection.',
|
|
817
|
+
'This positions graph tools as complementary context while making ThumbGate the enforcement layer buyers still need.',
|
|
818
|
+
],
|
|
819
|
+
sections: [
|
|
820
|
+
['paragraphs', 'Why this became a buyer question', [
|
|
821
|
+
'Understand Anything and code-graph MCPs are making architecture maps easier to generate. That helps agents stop reading code blind, but it does not automatically govern the next tool call.',
|
|
822
|
+
'A graph can say a file is central, a refactor crosses layers, or a generated graph artifact should not be edited. ThumbGate turns those signals into allow, warn, or block decisions before execution.',
|
|
823
|
+
]],
|
|
824
|
+
['bullets', 'High-ROI gate templates', [
|
|
825
|
+
'CLI path: npx thumbgate code-graph-guardrails --central-files=src/api/server.js --layers=api,data --generated-artifacts=.codegraph/index.json --json.',
|
|
826
|
+
'Require diff impact before central edits: block writes to high-centrality files until the agent has reviewed blast radius.',
|
|
827
|
+
'Checkpoint cross-layer refactors: warn before one run changes API, service, data, and UI layers together.',
|
|
828
|
+
'Protect generated graph artifacts: block manual edits to graph outputs that should be regenerated from source.',
|
|
829
|
+
]],
|
|
830
|
+
['paragraphs', 'Where this creates revenue', [
|
|
831
|
+
'This is a strong engagement wedge for audiences already excited about codebase understanding. The public line is simple: Code graphs tell the agent what the system is; ThumbGate decides what the agent is allowed to do next.',
|
|
832
|
+
'For teams, sell the Workflow Hardening Sprint around one graph-informed repeated failure: one central file, one risky refactor path, or one generated artifact that agents keep touching incorrectly.',
|
|
833
|
+
]],
|
|
834
|
+
],
|
|
835
|
+
faq: [
|
|
836
|
+
['Does ThumbGate build the code knowledge graph?', 'No. ThumbGate can work alongside graph tools by consuming their risk signals as policy context. The graph supplies structure; ThumbGate enforces the next action.'],
|
|
837
|
+
['What should I gate first after generating a code graph?', 'Start with high-centrality files, cross-layer refactors, and generated graph artifacts. Those are narrow enough to enforce quickly and risky enough to create real ROI.'],
|
|
838
|
+
['Is this a replacement for architecture documentation?', 'No. It turns architecture context into runtime enforcement so the agent cannot ignore the risk signals it just discovered.'],
|
|
839
|
+
],
|
|
840
|
+
relatedPaths: ['/guides/pre-action-checks', '/guides/agent-harness-optimization', '/guides/best-tools-stop-ai-agents-breaking-production'],
|
|
841
|
+
});
|
|
842
|
+
|
|
843
|
+
function buildCodeKnowledgeGraphGuardrailsGuide() {
|
|
844
|
+
return preActionGuide(CODE_KNOWLEDGE_GRAPH_GUARDRAILS_SPEC.slug, {
|
|
845
|
+
...CODE_KNOWLEDGE_GRAPH_GUARDRAILS_SPEC.meta,
|
|
846
|
+
takeaways: CODE_KNOWLEDGE_GRAPH_GUARDRAILS_SPEC.takeaways,
|
|
847
|
+
sections: CODE_KNOWLEDGE_GRAPH_GUARDRAILS_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
848
|
+
faq: CODE_KNOWLEDGE_GRAPH_GUARDRAILS_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
849
|
+
relatedPaths: CODE_KNOWLEDGE_GRAPH_GUARDRAILS_SPEC.relatedPaths,
|
|
850
|
+
});
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
const DEVELOPER_MACHINE_SUPPLY_CHAIN_GUARDRAILS_SPEC = Object.freeze({
|
|
854
|
+
slug: 'developer-machine-supply-chain-guardrails',
|
|
855
|
+
meta: {
|
|
856
|
+
query: 'developer machine supply chain guardrails',
|
|
857
|
+
title: 'Developer Machine Supply Chain Guardrails | ThumbGate Guide',
|
|
858
|
+
heroTitle: 'Stop AI Assistants From Amplifying Supply-Chain Attacks.',
|
|
859
|
+
heroSummary: 'Developer laptops and CI runners hold tokens, package-manager trust, and one-shot CLI install paths. ThumbGate turns that local execution risk into pre-action gates before an agent runs npm, PyPI, Docker, or shell commands that can expose credentials.',
|
|
860
|
+
},
|
|
861
|
+
takeaways: [
|
|
862
|
+
'Secrets scanners find leaks; ThumbGate blocks the agent behavior that creates or amplifies them.',
|
|
863
|
+
'Supply Chain Safety templates should start with package lifecycle scripts, untrusted one-shot CLI installers, dependency autofixes, and credential exposure assessment.',
|
|
864
|
+
'This is complementary to GitGuardian, endpoint security, and incident response because it governs the next local action.',
|
|
865
|
+
],
|
|
866
|
+
sections: [
|
|
867
|
+
['paragraphs', 'Why developer machines are now the blast radius', [
|
|
868
|
+
'A compromised package does not need to break production directly. It can read .env, .npmrc, .pypirc, Docker config, SSH keys, and cloud tokens while an AI coding assistant repeats the trusted-looking command across more repos.',
|
|
869
|
+
'The high-ROI control is local and specific: detect risky execution before it runs, require review where exposure is plausible, and promote every missed incident into a durable ThumbGate rule.',
|
|
870
|
+
]],
|
|
871
|
+
['bullets', 'High-ROI gate templates', [
|
|
872
|
+
'Block package lifecycle secret harvest: stop install, postinstall, prepare, and similar scripts from reading local credential surfaces.',
|
|
873
|
+
'Review untrusted CLI before execution: block curl-to-shell flows, unknown npx commands, uvx, and pipx run until the source and permissions are reviewed.',
|
|
874
|
+
'Checkpoint dependency bot autofix: warn before Dependabot, Renovate, audit-fix, Docker pull, or broad package updates expand the trusted code surface.',
|
|
875
|
+
'Require credential exposure assessment: force an answer about what credential lived where, what executed, and whether rotation is required.',
|
|
876
|
+
]],
|
|
877
|
+
['paragraphs', 'Where this creates revenue', [
|
|
878
|
+
'This is a strong security wedge for teams that already run scanners but still let agents execute local install/update commands. The offer is not "replace your scanner"; it is "connect scanner and incident lessons to pre-action enforcement."',
|
|
879
|
+
'For the Workflow Hardening Sprint, pick one concrete local-risk pattern: package lifecycle scripts, one-shot installers, dependency bot autofixes, or unresolved credential exposure after a suspected compromise.',
|
|
880
|
+
]],
|
|
881
|
+
],
|
|
882
|
+
faq: [
|
|
883
|
+
['Does ThumbGate replace secrets scanning?', 'No. Secrets scanners tell you what leaked. ThumbGate blocks or checkpoints the agent behavior that can create or amplify the leak before execution.'],
|
|
884
|
+
['Which supply-chain gate should teams enable first?', 'Start with one-shot CLI installers and package lifecycle scripts because those paths can execute before a human sees the diff.'],
|
|
885
|
+
['Can this work with existing incident-response tools?', 'Yes. Use scanner, EDR, and incident-response findings as evidence, then turn the repeated local action pattern into a ThumbGate pre-action rule.'],
|
|
886
|
+
],
|
|
887
|
+
relatedPaths: ['/guides/pre-action-checks', '/guides/code-knowledge-graph-guardrails', '/guides/best-tools-stop-ai-agents-breaking-production'],
|
|
888
|
+
});
|
|
889
|
+
|
|
890
|
+
function buildDeveloperMachineSupplyChainGuardrailsGuide() {
|
|
891
|
+
return preActionGuide(DEVELOPER_MACHINE_SUPPLY_CHAIN_GUARDRAILS_SPEC.slug, {
|
|
892
|
+
...DEVELOPER_MACHINE_SUPPLY_CHAIN_GUARDRAILS_SPEC.meta,
|
|
893
|
+
takeaways: DEVELOPER_MACHINE_SUPPLY_CHAIN_GUARDRAILS_SPEC.takeaways,
|
|
894
|
+
sections: DEVELOPER_MACHINE_SUPPLY_CHAIN_GUARDRAILS_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
895
|
+
faq: DEVELOPER_MACHINE_SUPPLY_CHAIN_GUARDRAILS_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
896
|
+
relatedPaths: DEVELOPER_MACHINE_SUPPLY_CHAIN_GUARDRAILS_SPEC.relatedPaths,
|
|
897
|
+
});
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
const PROMPT_TRICKS_TO_WORKFLOW_RULES_SPEC = Object.freeze({
|
|
901
|
+
slug: 'prompt-tricks-to-workflow-rules',
|
|
902
|
+
meta: {
|
|
903
|
+
query: 'prompt tricks to workflow rules',
|
|
904
|
+
title: 'Prompt Tricks Are Not Enough | Turn AI Instructions Into Workflow Rules',
|
|
905
|
+
heroTitle: 'Prompt Tricks Are Table Stakes. Workflow Rules Make Them Pay.',
|
|
906
|
+
heroSummary: 'Clear prompts and examples help modern AI tools, but they do not stop the same failure from recurring. ThumbGate turns one messy agent workflow into rules, examples, and pre-action checks before the next tool call executes.',
|
|
907
|
+
},
|
|
908
|
+
takeaways: [
|
|
909
|
+
'Politeness, threats, flattery, and clever prompt rituals are unreliable leverage; clear task shape, examples, and verification are the durable parts.',
|
|
910
|
+
'The paid layer is enforcement: convert repeated mistakes into durable rules that run before an agent acts.',
|
|
911
|
+
'The fastest revenue offer is a $99 workflow diagnostic that turns one messy AI workflow into clear instructions, examples, and pre-action checks.',
|
|
912
|
+
],
|
|
913
|
+
sections: [
|
|
914
|
+
['paragraphs', 'Why this became a buyer question', [
|
|
915
|
+
'Teams have learned that better prompts can reduce ambiguity, but a prompt still relies on the model remembering and obeying every constraint at the exact moment it matters.',
|
|
916
|
+
'That is where ThumbGate fits. Keep prompts clear and neutral, then promote the failure patterns into local checks that can warn or block before shell commands, file edits, browser actions, or deploy steps run.',
|
|
917
|
+
]],
|
|
918
|
+
['bullets', 'High-ROI conversion steps', [
|
|
919
|
+
'Capture one repeated failure: the agent edits the wrong file, runs a risky command, invents an import, skips verification, or reopens a resolved loop.',
|
|
920
|
+
'Write the smallest clear rule: describe the allowed action, the blocked action, and one concrete example of each.',
|
|
921
|
+
'Attach a pre-action check: run the rule before the tool call, not after the agent has already spent tokens or changed files.',
|
|
922
|
+
'Verify with proof: record the next prevented action, the saved remediation time, and the narrower rule created from feedback.',
|
|
923
|
+
]],
|
|
924
|
+
['paragraphs', 'Where this creates revenue', [
|
|
925
|
+
'This turns generic prompt advice into a buyer-ready diagnostic. The public offer is simple: send one messy AI-agent workflow and ThumbGate turns it into clear rules, examples, and pre-action checks.',
|
|
926
|
+
'For teams, position the Workflow Hardening Sprint around the repeated failure they can already name. The deliverable is not a better pep talk for the model; it is enforcement that survives across sessions and agents.',
|
|
927
|
+
]],
|
|
928
|
+
],
|
|
929
|
+
faq: [
|
|
930
|
+
['Do better prompts still matter?', 'Yes. Clear prompts and examples reduce ambiguity. ThumbGate starts where prompts stop: enforcing repeated lessons before the next action executes.'],
|
|
931
|
+
['What prompt tactics should teams stop wasting time on?', 'Do not rely on politeness, threats, flattery, or roleplay as control mechanisms. Use clear instructions, concrete examples, neutral constraints, and verification gates.'],
|
|
932
|
+
['What should a $99 workflow diagnostic produce?', 'One repeated failure translated into a rule, one good and bad example, one pre-action check, and a short verification plan for proving the check paid for itself.'],
|
|
933
|
+
],
|
|
934
|
+
relatedPaths: ['/guides/pre-action-checks', '/guides/agent-harness-optimization', '/guides/best-tools-stop-ai-agents-breaking-production'],
|
|
935
|
+
});
|
|
936
|
+
|
|
937
|
+
function buildPromptTricksToWorkflowRulesGuide() {
|
|
938
|
+
return preActionGuide(PROMPT_TRICKS_TO_WORKFLOW_RULES_SPEC.slug, {
|
|
939
|
+
...PROMPT_TRICKS_TO_WORKFLOW_RULES_SPEC.meta,
|
|
940
|
+
takeaways: PROMPT_TRICKS_TO_WORKFLOW_RULES_SPEC.takeaways,
|
|
941
|
+
sections: PROMPT_TRICKS_TO_WORKFLOW_RULES_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
942
|
+
faq: PROMPT_TRICKS_TO_WORKFLOW_RULES_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
943
|
+
relatedPaths: PROMPT_TRICKS_TO_WORKFLOW_RULES_SPEC.relatedPaths,
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
const BACKGROUND_AGENT_GOVERNANCE_GUIDE_SPEC = Object.freeze({
|
|
948
|
+
slug: 'background-agent-governance',
|
|
949
|
+
meta: {
|
|
950
|
+
query: 'background agent governance',
|
|
951
|
+
title: 'Background Agent Governance | Risk-Tiered Review for Agent PRs',
|
|
952
|
+
heroTitle: 'Background Agent Governance for Agent PRs',
|
|
953
|
+
heroSummary: 'Background agents can draft changes while humans work elsewhere, but review becomes the bottleneck. ThumbGate adds pre-dispatch checks, run reports, isolated task lanes, and evidence-backed review routing before unattended agent work piles up.',
|
|
954
|
+
},
|
|
955
|
+
takeaways: [
|
|
956
|
+
'Background agents need a real run ledger, not just a pile of PRs.',
|
|
957
|
+
'The highest ROI control is risk-tiered review: stricter checks for protected branches, high-failure agents, and large blast-radius changes.',
|
|
958
|
+
'ThumbGate turns CI failures and human review feedback into Pre-Action Checks so the same failed agent pattern gets blocked before the next run.',
|
|
959
|
+
],
|
|
960
|
+
sections: [
|
|
961
|
+
['paragraphs', 'Why this became urgent', [
|
|
962
|
+
'Teams are moving from local agent sessions to unattended background work. That changes the review problem: humans no longer inspect one assistant transcript at a time; they receive a queue of agent-created branches, PRs, and CI failures.',
|
|
963
|
+
'If context alignment happens in Slack, Linear, Jira, or a planning thread, the agent run also needs a durable record of what was agreed, where it executed, which gates fired, and what evidence came back.',
|
|
964
|
+
]],
|
|
965
|
+
['bullets', 'What ThumbGate adds', [
|
|
966
|
+
'A background-agent run ledger with agent ID, source, branch, PR number, gate counts, CI outcome, and changed-file count.',
|
|
967
|
+
'A pre-dispatch governance check for high-failure agents, protected branches, and large blast-radius runs.',
|
|
968
|
+
'Post-run audit that can convert CI failures into structured thumbs-down feedback and future prevention rules.',
|
|
969
|
+
'A report command for review queues: npx thumbgate background-governance --json.',
|
|
970
|
+
'A risk check command for dispatch systems: npx thumbgate background-governance --check --agent-id=builder --branch=main --files-changed=25 --json.',
|
|
971
|
+
]],
|
|
972
|
+
['paragraphs', 'Where this creates revenue', [
|
|
973
|
+
'This is a clean Workflow Hardening Sprint wedge. The buyer does not need a broad platform migration; they need one background-agent workflow hardened from context intake to isolated execution to risk-tiered review.',
|
|
974
|
+
'The promise stays honest: ThumbGate does not remove human review. It makes the review queue smaller, better labeled, and backed by evidence before a risky agent PR reaches a reviewer.',
|
|
975
|
+
]],
|
|
976
|
+
],
|
|
977
|
+
faq: [
|
|
978
|
+
[
|
|
979
|
+
'Does ThumbGate replace human review for background agents?',
|
|
980
|
+
'No. ThumbGate reduces review load by blocking known bad actions earlier, warning on risky dispatches, and attaching run evidence so humans can focus on high-risk changes.',
|
|
981
|
+
],
|
|
982
|
+
[
|
|
983
|
+
'What should teams check before dispatching a background agent?',
|
|
984
|
+
'Check recent agent failure rate, prior gate blocks, target branch, expected blast radius, isolated execution environment, CI expectations, and the human context that authorized the task.',
|
|
985
|
+
],
|
|
986
|
+
[
|
|
987
|
+
'How does this connect to the Workflow Hardening Sprint?',
|
|
988
|
+
'The sprint can harden one background-agent workflow end to end: context intake, pre-dispatch governance, sandbox routing, CI audit, prevention rules, and proof review.',
|
|
989
|
+
],
|
|
990
|
+
],
|
|
991
|
+
relatedPaths: ['/guides/pre-action-checks', '/guides/agent-harness-optimization', '/guides/best-tools-stop-ai-agents-breaking-production'],
|
|
992
|
+
});
|
|
993
|
+
|
|
994
|
+
function buildBackgroundAgentGovernanceGuide() {
|
|
995
|
+
return preActionGuide(BACKGROUND_AGENT_GOVERNANCE_GUIDE_SPEC.slug, {
|
|
996
|
+
...BACKGROUND_AGENT_GOVERNANCE_GUIDE_SPEC.meta,
|
|
997
|
+
takeaways: BACKGROUND_AGENT_GOVERNANCE_GUIDE_SPEC.takeaways,
|
|
998
|
+
sections: BACKGROUND_AGENT_GOVERNANCE_GUIDE_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
999
|
+
faq: BACKGROUND_AGENT_GOVERNANCE_GUIDE_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
1000
|
+
relatedPaths: BACKGROUND_AGENT_GOVERNANCE_GUIDE_SPEC.relatedPaths,
|
|
1001
|
+
});
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
const AI_AGENT_GOVERNANCE_SPRINT_GUIDE_SPEC = Object.freeze({
|
|
1005
|
+
slug: 'ai-agent-governance-sprint',
|
|
1006
|
+
meta: {
|
|
1007
|
+
query: 'ai agent governance sprint',
|
|
1008
|
+
title: 'AI Agent Governance Sprint | 48-Hour Workflow Hardening',
|
|
1009
|
+
heroTitle: 'AI Agent Governance Sprint for One Risky Workflow',
|
|
1010
|
+
heroSummary: 'ThumbGate turns one repeated AI-agent failure into approval boundaries, pre-action checks, rollback safety, and rollout proof in a focused 48-hour Workflow Hardening Sprint.',
|
|
1011
|
+
},
|
|
1012
|
+
takeaways: [
|
|
1013
|
+
'The fastest paid wedge is not a broad platform migration; it is one repo, one workflow owner, and one repeated failure that already has budget pressure.',
|
|
1014
|
+
'A governance sprint should ship evidence: rule inventory, pre-action checks, review routing, rollback notes, and a buyer-ready proof pack.',
|
|
1015
|
+
'ThumbGate keeps the promise narrow enough to sell quickly while creating the path to Team seats and recurring governance.',
|
|
1016
|
+
],
|
|
1017
|
+
sections: [
|
|
1018
|
+
['paragraphs', 'Who this is for', [
|
|
1019
|
+
'The right buyer is already running Claude Code, Codex, Cursor, Gemini, or another agent against real code and has one failure they no longer want to review manually. Examples include unsafe migrations, noisy background-agent PRs, deploy approval bypasses, credential-adjacent commands, and repeated generated-artifact edits.',
|
|
1020
|
+
'The sprint works because it avoids generic AI consulting. The scope is one workflow that can be observed, hardened, and reviewed in front of the buyer before a wider team rollout.',
|
|
1021
|
+
]],
|
|
1022
|
+
['bullets', 'What the sprint ships', [
|
|
1023
|
+
'Intake: one repo, one owner, one repeated failure, one target rollout date, and the current agent/runtime surface.',
|
|
1024
|
+
'Governance map: approval boundaries, risky commands, protected files, branch rules, review tiers, and rollback expectations.',
|
|
1025
|
+
'Pre-action checks: concrete blocks or warnings for the repeated failure and adjacent high-risk actions.',
|
|
1026
|
+
'Background-agent review routing: npx thumbgate background-governance --check --json to label risk before dispatch or PR review.',
|
|
1027
|
+
'Proof pack: verification evidence, run reports, blocked-repeat examples, and rollout notes the buyer can share internally.',
|
|
1028
|
+
]],
|
|
1029
|
+
['paragraphs', 'Where this creates ROI', [
|
|
1030
|
+
'This page is the service conversion layer for the governance guides. Readers who already understand background-agent risk need a next step that is smaller than procurement and more concrete than a demo.',
|
|
1031
|
+
'The offer stays defensible: ThumbGate does not claim to make agents autonomous without review. It makes one expensive review failure measurable, enforceable, and easier to roll out across Team seats.',
|
|
1032
|
+
]],
|
|
1033
|
+
],
|
|
1034
|
+
faq: [
|
|
1035
|
+
[
|
|
1036
|
+
'What is included in the AI Agent Governance Sprint?',
|
|
1037
|
+
'A focused 48-hour implementation around one workflow: intake, governance mapping, pre-action checks, background-agent risk routing, rollback notes, and a proof pack for the buyer review.',
|
|
1038
|
+
],
|
|
1039
|
+
[
|
|
1040
|
+
'How is this different from the Workflow Hardening Sprint?',
|
|
1041
|
+
'It is the same Team conversion path positioned for buyers searching for AI agent governance. The deliverable remains narrow: one repeated failure hardened with approval boundaries, rollback safety, and rollout proof.',
|
|
1042
|
+
],
|
|
1043
|
+
[
|
|
1044
|
+
'Do we need to migrate every agent workflow first?',
|
|
1045
|
+
'No. Start with one repeated failure that already costs review time or rollout confidence. After it proves value, reuse the checks, lesson database, and proof workflow across Team seats.',
|
|
1046
|
+
],
|
|
1047
|
+
],
|
|
1048
|
+
relatedPaths: ['/guides/background-agent-governance', '/guides/pre-action-checks', '/guides/best-tools-stop-ai-agents-breaking-production'],
|
|
1049
|
+
});
|
|
1050
|
+
|
|
1051
|
+
function buildAiAgentGovernanceSprintGuide() {
|
|
1052
|
+
return {
|
|
1053
|
+
...preActionGuide(AI_AGENT_GOVERNANCE_SPRINT_GUIDE_SPEC.slug, {
|
|
1054
|
+
...AI_AGENT_GOVERNANCE_SPRINT_GUIDE_SPEC.meta,
|
|
1055
|
+
takeaways: AI_AGENT_GOVERNANCE_SPRINT_GUIDE_SPEC.takeaways,
|
|
1056
|
+
sections: AI_AGENT_GOVERNANCE_SPRINT_GUIDE_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
1057
|
+
faq: AI_AGENT_GOVERNANCE_SPRINT_GUIDE_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
1058
|
+
relatedPaths: AI_AGENT_GOVERNANCE_SPRINT_GUIDE_SPEC.relatedPaths,
|
|
1059
|
+
}),
|
|
1060
|
+
cta: {
|
|
1061
|
+
label: 'Start the governance sprint',
|
|
1062
|
+
href: '/?utm_source=website&utm_medium=seo_page&utm_campaign=ai_agent_governance_sprint&cta_placement=seo_brief&plan_id=team#workflow-sprint-intake',
|
|
1063
|
+
},
|
|
1064
|
+
};
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
const MODEL_UPGRADE_EVALUATION_GUIDE_SPEC = Object.freeze({
|
|
1068
|
+
slug: 'gpt-5-5-model-evaluation',
|
|
1069
|
+
meta: {
|
|
1070
|
+
query: 'gpt-5.5 model evaluation',
|
|
1071
|
+
title: 'GPT-5.5 Model Evaluation | Benchmark Before Routing Expensive Agent Work',
|
|
1072
|
+
heroTitle: 'Evaluate GPT-5.5 Before You Route Production Agent Work',
|
|
1073
|
+
heroSummary: 'Frontier-model upgrades can improve coding, dataset analysis, and dashboards, but the ROI comes from measured routing. ThumbGate adds a model-candidate workload so teams can benchmark GPT-5.5 against real feedback, gate evals, and dashboard-analysis criteria before changing defaults.',
|
|
1074
|
+
},
|
|
1075
|
+
takeaways: [
|
|
1076
|
+
'GPT-5.5 should be treated as a frontier candidate for complex work, not a blanket replacement for every cheap gate.',
|
|
1077
|
+
'The highest ROI path is benchmark-first routing: keep cheap tiers for simple checks and escalate dataset, dashboard, and long-context work when evidence supports it.',
|
|
1078
|
+
'ThumbGate now exposes a dashboard-analysis workload through npx thumbgate model-candidates --workload=dashboard-analysis --provider=openai --json.',
|
|
1079
|
+
],
|
|
1080
|
+
sections: [
|
|
1081
|
+
['paragraphs', 'What changed', [
|
|
1082
|
+
'OpenAI positions GPT-5.5 for complex reasoning, coding, data analysis, and tool-using work. Julius framed the same model around dataset analysis, charts, dashboards, insight quality, and code generation.',
|
|
1083
|
+
'For ThumbGate, the useful product move is not to rewrite every default. It is to make model adoption measurable: define the workload, pick candidate models, run existing evals, and route only the work that earns the frontier spend.',
|
|
1084
|
+
]],
|
|
1085
|
+
['bullets', 'What ThumbGate adds', [
|
|
1086
|
+
'A GPT-5.5 model candidate in config/model-candidates.json with long-context, data-analysis, dashboard-creation, charting, tool-use, and reliability strengths.',
|
|
1087
|
+
'A dashboard-analysis workload with metrics for insight accuracy, chart-spec validity, dashboard completeness, long-context reliability, latency, and cost per analysis.',
|
|
1088
|
+
'A CLI path: npx thumbgate model-candidates --workload=dashboard-analysis --provider=openai --json.',
|
|
1089
|
+
'A tier-router config that pins the frontier tier to gpt-5.5 while keeping explicit cheaper tiers for fast, low-cost work.',
|
|
1090
|
+
]],
|
|
1091
|
+
['paragraphs', 'Where this creates ROI', [
|
|
1092
|
+
'This gives platform teams a defensible answer to "should we move to GPT-5.5?" Run the candidate report, attach gate and benchmark evidence, and only then route high-value analytical or long-context agent tasks to the frontier tier.',
|
|
1093
|
+
'The commercial wedge is a Workflow Hardening Sprint focused on model routing: define which workflows deserve frontier spend, which stay on cheap tiers, and which require pre-action checks before a model can touch live systems.',
|
|
1094
|
+
]],
|
|
1095
|
+
],
|
|
1096
|
+
faq: [
|
|
1097
|
+
[
|
|
1098
|
+
'Should every ThumbGate task use GPT-5.5?',
|
|
1099
|
+
'No. Cheap gates, classification, extraction, and simple triage should stay on lower-cost tiers when they pass evals. GPT-5.5 is best evaluated for complex reasoning, long-context, coding, dataset, and dashboard work.',
|
|
1100
|
+
],
|
|
1101
|
+
[
|
|
1102
|
+
'How do I benchmark GPT-5.5 in ThumbGate?',
|
|
1103
|
+
'Run npx thumbgate model-candidates --workload=dashboard-analysis --provider=openai --json, then use the emitted benchmark commands and metrics to compare insight quality, chart validity, latency, and cost before changing routing defaults.',
|
|
1104
|
+
],
|
|
1105
|
+
[
|
|
1106
|
+
'Does this automatically call the OpenAI API?',
|
|
1107
|
+
'No. The catalog is an evaluation and routing surface. It records candidate models and benchmark plans without assuming provider credentials or silently changing runtime behavior.',
|
|
1108
|
+
],
|
|
1109
|
+
],
|
|
1110
|
+
relatedPaths: ['/guides/agent-harness-optimization', '/guides/background-agent-governance', '/guides/pre-action-checks'],
|
|
1111
|
+
});
|
|
1112
|
+
|
|
1113
|
+
function buildModelUpgradeEvaluationGuide() {
|
|
1114
|
+
return preActionGuide(MODEL_UPGRADE_EVALUATION_GUIDE_SPEC.slug, {
|
|
1115
|
+
...MODEL_UPGRADE_EVALUATION_GUIDE_SPEC.meta,
|
|
1116
|
+
takeaways: MODEL_UPGRADE_EVALUATION_GUIDE_SPEC.takeaways,
|
|
1117
|
+
sections: MODEL_UPGRADE_EVALUATION_GUIDE_SPEC.sections.map(([kind, heading, entries]) => buildSectionFromSpec(kind, heading, entries)),
|
|
1118
|
+
faq: MODEL_UPGRADE_EVALUATION_GUIDE_SPEC.faq.map(([question, text]) => answer(question, text)),
|
|
1119
|
+
relatedPaths: MODEL_UPGRADE_EVALUATION_GUIDE_SPEC.relatedPaths,
|
|
1120
|
+
});
|
|
1121
|
+
}
|
|
1122
|
+
|
|
245
1123
|
const BROWSER_BRIDGE_GUIDE_SPECS = Object.freeze([
|
|
246
1124
|
{
|
|
247
1125
|
slug: 'browser-automation-safety',
|
|
@@ -529,6 +1407,71 @@ const PAGE_BLUEPRINTS = [
|
|
|
529
1407
|
],
|
|
530
1408
|
relatedPaths: ['/compare/speclock', '/guides/claude-code-feedback'],
|
|
531
1409
|
},
|
|
1410
|
+
buildSemanticPseoGuide(),
|
|
1411
|
+
buildProxyPointerRagGuide(),
|
|
1412
|
+
buildRagPrecisionTuningGuide(),
|
|
1413
|
+
buildAiEngineeringStackGuide(),
|
|
1414
|
+
buildSeoAgentSkillsGuide(),
|
|
1415
|
+
{
|
|
1416
|
+
query: 'thumbgate vs fallow',
|
|
1417
|
+
path: '/compare/fallow',
|
|
1418
|
+
pageType: 'comparison',
|
|
1419
|
+
pillar: 'comparison',
|
|
1420
|
+
title: 'ThumbGate vs Fallow | Static Analysis vs Agent Action Enforcement',
|
|
1421
|
+
heroTitle: 'ThumbGate vs Fallow',
|
|
1422
|
+
heroSummary: 'Fallow finds JS/TS code health issues: dead code, duplication, complexity, and architecture drift. ThumbGate is action-boundary enforcement for AI agents, stopping agents from acting on those signals unsafely.',
|
|
1423
|
+
takeaways: [
|
|
1424
|
+
'Fallow is complementary, not a direct replacement: it finds dead code, duplication, complexity, and architecture drift.',
|
|
1425
|
+
'ThumbGate governs the next agent action: refactor scope, risky edits, CI proof, team lessons, and pre-action blocks.',
|
|
1426
|
+
'Together, Fallow output can become ThumbGate gates so agents do not blindly refactor everything a static analyzer flags.',
|
|
1427
|
+
],
|
|
1428
|
+
sections: [
|
|
1429
|
+
{
|
|
1430
|
+
heading: 'The product difference in one sentence',
|
|
1431
|
+
paragraphs: [
|
|
1432
|
+
'Fallow tells you where a JavaScript or TypeScript codebase may be unhealthy. ThumbGate governs what AI agents are allowed to do next: make the next edit, command, PR, or publish action.',
|
|
1433
|
+
'That distinction matters because analyzer output can be useful and dangerous at the same time. A duplicated block can be safe to refactor, or it can be intentional domain duplication where an agent should stop and ask for evidence.',
|
|
1434
|
+
],
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
heading: 'Choose Fallow when',
|
|
1438
|
+
bullets: [
|
|
1439
|
+
'You want static reports for unused code, duplicate blocks, complexity hotspots, circular dependencies, or architecture drift.',
|
|
1440
|
+
'You need JSON diagnostics an agent can inspect before proposing cleanup work.',
|
|
1441
|
+
'Your immediate goal is code health visibility in JS/TS repositories.',
|
|
1442
|
+
],
|
|
1443
|
+
},
|
|
1444
|
+
{
|
|
1445
|
+
heading: 'Choose ThumbGate when',
|
|
1446
|
+
bullets: [
|
|
1447
|
+
'You need pre-action enforcement before an AI agent applies analyzer-driven refactors.',
|
|
1448
|
+
'You want CI and human feedback to become durable prevention rules across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode.',
|
|
1449
|
+
'You need audit evidence that a risky cleanup, dependency update, or cross-layer refactor was checked before execution.',
|
|
1450
|
+
],
|
|
1451
|
+
},
|
|
1452
|
+
{
|
|
1453
|
+
heading: 'Best together',
|
|
1454
|
+
paragraphs: [
|
|
1455
|
+
'The highest-ROI workflow is Fallow for deterministic codebase signals and ThumbGate for agent governance. Run the analyzer, pass the changed-file and complexity signals into a ThumbGate gate, then require proof before the agent edits central files or opens a PR.',
|
|
1456
|
+
],
|
|
1457
|
+
},
|
|
1458
|
+
],
|
|
1459
|
+
faq: [
|
|
1460
|
+
{
|
|
1461
|
+
question: 'Is Fallow a competitor to ThumbGate?',
|
|
1462
|
+
answer: 'Partly adjacent, but mostly complementary. Fallow analyzes JS/TS code health. ThumbGate enforces AI-agent actions before execution. They solve different parts of the agent workflow.',
|
|
1463
|
+
},
|
|
1464
|
+
{
|
|
1465
|
+
question: 'Should ThumbGate integrate with Fallow output?',
|
|
1466
|
+
answer: 'Yes. Fallow JSON is useful input for ThumbGate gates, especially duplication, complexity, changed-file audit results, and architecture-boundary warnings.',
|
|
1467
|
+
},
|
|
1468
|
+
],
|
|
1469
|
+
relatedPaths: ['/guides/code-knowledge-graph-guardrails', '/guides/agent-harness-optimization', '/guides/pre-action-checks'],
|
|
1470
|
+
},
|
|
1471
|
+
buildClaudeCodeSkillsGuide(),
|
|
1472
|
+
buildLongRunningAgentContextGuide(),
|
|
1473
|
+
buildReasoningCompressionGuide(),
|
|
1474
|
+
buildDeepSeekV4RuntimeGuide(),
|
|
532
1475
|
{
|
|
533
1476
|
query: 'pre-action checks for ai coding agents',
|
|
534
1477
|
path: '/guides/pre-action-checks',
|
|
@@ -642,6 +1585,12 @@ const PAGE_BLUEPRINTS = [
|
|
|
642
1585
|
relatedPaths: ['/guides/pre-action-checks', '/guides/agent-harness-optimization', '/guides/ai-search-topical-presence'],
|
|
643
1586
|
},
|
|
644
1587
|
buildHarnessOptimizationGuide(),
|
|
1588
|
+
buildCodeKnowledgeGraphGuardrailsGuide(),
|
|
1589
|
+
buildDeveloperMachineSupplyChainGuardrailsGuide(),
|
|
1590
|
+
buildPromptTricksToWorkflowRulesGuide(),
|
|
1591
|
+
buildBackgroundAgentGovernanceGuide(),
|
|
1592
|
+
buildAiAgentGovernanceSprintGuide(),
|
|
1593
|
+
buildModelUpgradeEvaluationGuide(),
|
|
645
1594
|
{
|
|
646
1595
|
query: 'stop ai coding agents from repeating mistakes',
|
|
647
1596
|
path: '/guides/stop-repeated-ai-agent-mistakes',
|
|
@@ -1058,8 +2007,12 @@ function normalizeText(value) {
|
|
|
1058
2007
|
function slugify(value) {
|
|
1059
2008
|
return normalizeText(value)
|
|
1060
2009
|
.toLowerCase()
|
|
1061
|
-
.
|
|
1062
|
-
.
|
|
2010
|
+
.split('')
|
|
2011
|
+
.map((char) => (/[a-z0-9]/.test(char) ? char : '-'))
|
|
2012
|
+
.join('')
|
|
2013
|
+
.split('-')
|
|
2014
|
+
.filter(Boolean)
|
|
2015
|
+
.join('-');
|
|
1063
2016
|
}
|
|
1064
2017
|
|
|
1065
2018
|
function toNumber(value) {
|
|
@@ -1149,7 +2102,7 @@ function classifyIntent(query) {
|
|
|
1149
2102
|
if (!normalized) return 'informational';
|
|
1150
2103
|
if (/\b(vs|versus|alternative|compare|comparison|better than)\b/.test(normalized)) return 'comparison';
|
|
1151
2104
|
if (/\b(price|pricing|buy|checkout|purchase|cost)\b/.test(normalized)) return 'transactional';
|
|
1152
|
-
if (/\b(autoresearch|self-improving|benchmark|reward hacking|agent safety)\b/.test(normalized)) return 'commercial';
|
|
2105
|
+
if (/\b(autoresearch|self-improving|benchmark|reward hacking|agent safety|governance|sprint)\b/.test(normalized)) return 'commercial';
|
|
1153
2106
|
if (/\b(claude code|cursor|codex|gemini|amp|opencode|integration|plugin|setup|install)\b/.test(normalized)) {
|
|
1154
2107
|
return 'commercial';
|
|
1155
2108
|
}
|
|
@@ -1164,9 +2117,11 @@ function inferPillar(query) {
|
|
|
1164
2117
|
const normalized = normalizeText(query).toLowerCase();
|
|
1165
2118
|
if (/\b(speclock|mem0|alternative|vs|compare|comparison)\b/.test(normalized)) return 'comparison';
|
|
1166
2119
|
if (/\b(thumbs up|thumbs down|feedback|reinforce|mistake)\b/.test(normalized)) return 'feedback-loop';
|
|
2120
|
+
if (/\b(programmatic seo|pseo|semantic seo|semantic programmatic|seo agent)\b/.test(normalized)) return 'seo-governance';
|
|
2121
|
+
if (/\b(rag|retrieval|proxy pointer|multimodal answer|document rag)\b/.test(normalized)) return 'document-rag-safety';
|
|
1167
2122
|
if (/\b(topical presence|relational knowledge|recommend(?:ation|ed)? brands?|ai search visibility)\b/.test(normalized)) return 'ai-agent-reliability';
|
|
1168
2123
|
if (/\b(browser automation|native messaging|browser bridge|prompt injection)\b/.test(normalized)) return 'pre-action-checks';
|
|
1169
|
-
if (/\b(autoresearch|self-improving|benchmark|reward hacking|harness optimization)\b/.test(normalized)) return 'pre-action-checks';
|
|
2124
|
+
if (/\b(autoresearch|self-improving|benchmark|reward hacking|harness optimization|long running agent|context management|reasoning compression|governance|sprint)\b/.test(normalized)) return 'pre-action-checks';
|
|
1170
2125
|
if (/\b(pre-action checks|guardrails|block|prevent repeated mistakes|repeating mistakes)\b/.test(normalized)) return 'pre-action-checks';
|
|
1171
2126
|
if (/\b(claude code|cursor|codex|gemini|amp|opencode|integration|plugin)\b/.test(normalized)) return 'agent-workflows';
|
|
1172
2127
|
return 'ai-agent-reliability';
|
|
@@ -1179,8 +2134,11 @@ function inferPersona(query) {
|
|
|
1179
2134
|
if (normalized.includes('codex')) return 'codex-builder';
|
|
1180
2135
|
if (normalized.includes('gemini')) return 'gemini-builder';
|
|
1181
2136
|
if (normalized.includes('autoresearch') || normalized.includes('self-improving')) return 'ai-research-engineer';
|
|
2137
|
+
if (/\b(long running agent|context management|reasoning compression)\b/.test(normalized)) return 'platform-engineer';
|
|
2138
|
+
if (/\b(programmatic seo|pseo|semantic seo|ai search|topical presence|seo agent)\b/.test(normalized)) return 'growth-engineer';
|
|
2139
|
+
if (/\b(rag|retrieval|proxy pointer|multimodal answer|document rag)\b/.test(normalized)) return 'rag-engineer';
|
|
1182
2140
|
if (/\b(vs|alternative|compare)\b/.test(normalized)) return 'tool-evaluator';
|
|
1183
|
-
if (/\b(guardrails|pre-action checks)\b/.test(normalized)) return 'engineering-lead';
|
|
2141
|
+
if (/\b(guardrails|pre-action checks|governance|sprint)\b/.test(normalized)) return 'engineering-lead';
|
|
1184
2142
|
return 'ai-engineer';
|
|
1185
2143
|
}
|
|
1186
2144
|
|
|
@@ -1216,6 +2174,8 @@ function scoreOpportunity(row) {
|
|
|
1216
2174
|
'pre-action-checks': 12,
|
|
1217
2175
|
'feedback-loop': 12,
|
|
1218
2176
|
'agent-workflows': 11,
|
|
2177
|
+
'seo-governance': 12,
|
|
2178
|
+
'document-rag-safety': 12,
|
|
1219
2179
|
'ai-agent-reliability': 9,
|
|
1220
2180
|
};
|
|
1221
2181
|
|
|
@@ -1299,14 +2259,111 @@ function clusterKeywordRows(rows) {
|
|
|
1299
2259
|
return [...clusters.values()]
|
|
1300
2260
|
.map((cluster) => ({
|
|
1301
2261
|
...cluster,
|
|
1302
|
-
personas: [...cluster.personas].sort(),
|
|
1303
|
-
intents: [...cluster.intents].sort(),
|
|
2262
|
+
personas: [...cluster.personas].sort((a, b) => a.localeCompare(b)),
|
|
2263
|
+
intents: [...cluster.intents].sort((a, b) => a.localeCompare(b)),
|
|
1304
2264
|
totalOpportunityScore: Number(cluster.totalOpportunityScore.toFixed(2)),
|
|
1305
2265
|
queries: [...cluster.queries].sort((a, b) => b.opportunityScore - a.opportunityScore),
|
|
1306
2266
|
}))
|
|
1307
2267
|
.sort((a, b) => b.totalOpportunityScore - a.totalOpportunityScore);
|
|
1308
2268
|
}
|
|
1309
2269
|
|
|
2270
|
+
function buildAuthorityMap(rows, pages) {
|
|
2271
|
+
const pageProofByPillar = pages.reduce((acc, page) => {
|
|
2272
|
+
if (!acc[page.pillar]) acc[page.pillar] = [];
|
|
2273
|
+
acc[page.pillar].push(page.path);
|
|
2274
|
+
return acc;
|
|
2275
|
+
}, {});
|
|
2276
|
+
|
|
2277
|
+
return clusterKeywordRows(rows).map((cluster) => {
|
|
2278
|
+
const proofPages = pageProofByPillar[cluster.pillar] || [];
|
|
2279
|
+
const authorityScore = clamp(
|
|
2280
|
+
Math.round((cluster.totalOpportunityScore / 2) + (proofPages.length * 32)),
|
|
2281
|
+
0,
|
|
2282
|
+
100
|
|
2283
|
+
);
|
|
2284
|
+
const rankPermission = authorityScore >= 70
|
|
2285
|
+
? 'expand'
|
|
2286
|
+
: authorityScore >= 48
|
|
2287
|
+
? 'defend-and-fill'
|
|
2288
|
+
: 'hold';
|
|
2289
|
+
|
|
2290
|
+
return {
|
|
2291
|
+
pillar: cluster.pillar,
|
|
2292
|
+
primaryQuery: cluster.primaryQuery.query,
|
|
2293
|
+
authorityScore,
|
|
2294
|
+
rankPermission,
|
|
2295
|
+
proofPages: proofPages.slice(0, 5),
|
|
2296
|
+
nextAction: rankPermission === 'expand'
|
|
2297
|
+
? 'Publish semantic variants with proof-backed internal links.'
|
|
2298
|
+
: rankPermission === 'defend-and-fill'
|
|
2299
|
+
? 'Fill semantic gaps before scaling adjacent pages.'
|
|
2300
|
+
: 'Collect more proof or external demand before generating pages.',
|
|
2301
|
+
};
|
|
2302
|
+
});
|
|
2303
|
+
}
|
|
2304
|
+
|
|
2305
|
+
function buildContextGovernance() {
|
|
2306
|
+
return {
|
|
2307
|
+
brandPersona: 'Technical, direct, proof-backed, and buyer-useful. ThumbGate is the enforcement layer, not generic AI content.',
|
|
2308
|
+
negativeConstraints: [
|
|
2309
|
+
'Do not claim partnerships, approval, revenue, or compliance unless the proof artifact exists.',
|
|
2310
|
+
'Do not publish stale pricing; use $19/mo Pro, $149/yr Pro, and $49/seat/mo Team only when the commercial truth source agrees.',
|
|
2311
|
+
'Do not create find-and-replace pages that only swap one keyword or platform name.',
|
|
2312
|
+
],
|
|
2313
|
+
requiredContext: [
|
|
2314
|
+
'ThumbGate turns thumbs-up/down feedback into pre-action checks.',
|
|
2315
|
+
'Every buyer-facing page needs a concrete next step: Pro checkout, workflow sprint intake, or a proof-backed guide.',
|
|
2316
|
+
'Every generated page must include verification evidence, automation proof, llm-context, FAQPage, and TechArticle schema.',
|
|
2317
|
+
],
|
|
2318
|
+
};
|
|
2319
|
+
}
|
|
2320
|
+
|
|
2321
|
+
function buildSemanticMesh(pages) {
|
|
2322
|
+
return pages.map((page) => {
|
|
2323
|
+
const relatedPaths = page.relatedPages.map((related) => related.path);
|
|
2324
|
+
const hasConversionPath = Boolean(page.cta && page.cta.href);
|
|
2325
|
+
const hasPillarBridge = relatedPaths.some((relatedPath) => {
|
|
2326
|
+
const related = pages.find((candidate) => candidate.path === relatedPath);
|
|
2327
|
+
return related && related.pillar !== page.pillar;
|
|
2328
|
+
});
|
|
2329
|
+
|
|
2330
|
+
return {
|
|
2331
|
+
path: page.path,
|
|
2332
|
+
pillar: page.pillar,
|
|
2333
|
+
relatedPaths,
|
|
2334
|
+
hasConversionPath,
|
|
2335
|
+
meshStatus: relatedPaths.length >= 2 && hasPillarBridge && hasConversionPath ? 'healthy' : 'needs-links',
|
|
2336
|
+
nextStep: relatedPaths.length >= 2 && hasPillarBridge && hasConversionPath
|
|
2337
|
+
? 'Keep proof and adjacent links fresh.'
|
|
2338
|
+
: 'Add pillar, adjacent-guide, and conversion links before publish.',
|
|
2339
|
+
};
|
|
2340
|
+
});
|
|
2341
|
+
}
|
|
2342
|
+
|
|
2343
|
+
function buildTechnicalGuardian(pages) {
|
|
2344
|
+
return {
|
|
2345
|
+
checks: [
|
|
2346
|
+
'canonical_url',
|
|
2347
|
+
'faq_json_ld',
|
|
2348
|
+
'tech_article_json_ld',
|
|
2349
|
+
'llm_context_link',
|
|
2350
|
+
'proof_links',
|
|
2351
|
+
'conversion_cta',
|
|
2352
|
+
'semantic_related_links',
|
|
2353
|
+
],
|
|
2354
|
+
publishBlockers: pages
|
|
2355
|
+
.filter((page) => (
|
|
2356
|
+
!page.cta ||
|
|
2357
|
+
!page.cta.href ||
|
|
2358
|
+
!page.relatedPages ||
|
|
2359
|
+
page.relatedPages.length < 2 ||
|
|
2360
|
+
!page.proofLinks ||
|
|
2361
|
+
page.proofLinks.length < 2
|
|
2362
|
+
))
|
|
2363
|
+
.map((page) => page.path),
|
|
2364
|
+
};
|
|
2365
|
+
}
|
|
2366
|
+
|
|
1310
2367
|
function trimMetaDescription(value, max = 160) {
|
|
1311
2368
|
const text = normalizeText(value);
|
|
1312
2369
|
if (text.length <= max) return text;
|
|
@@ -1343,7 +2400,7 @@ function createPageSpec(blueprint, row) {
|
|
|
1343
2400
|
sections: blueprint.sections,
|
|
1344
2401
|
faq: blueprint.faq,
|
|
1345
2402
|
relatedPages,
|
|
1346
|
-
cta: {
|
|
2403
|
+
cta: blueprint.cta || {
|
|
1347
2404
|
label: 'Go Pro — $19/mo',
|
|
1348
2405
|
href: `/checkout/pro?utm_source=website&utm_medium=seo_page&utm_campaign=${blueprint.path.split('/').filter(Boolean).join('_')}&cta_placement=seo_brief&plan_id=pro`,
|
|
1349
2406
|
},
|
|
@@ -1374,6 +2431,12 @@ function buildThumbGateSeoPlan(rawRows = HIGH_ROI_QUERY_SEEDS) {
|
|
|
1374
2431
|
});
|
|
1375
2432
|
return createPageSpec(blueprint, row);
|
|
1376
2433
|
}).sort((a, b) => b.opportunityScore - a.opportunityScore);
|
|
2434
|
+
const semanticProgrammaticSeo = {
|
|
2435
|
+
authorityMap: buildAuthorityMap(capture, pages),
|
|
2436
|
+
contextGovernance: buildContextGovernance(),
|
|
2437
|
+
semanticMesh: buildSemanticMesh(pages),
|
|
2438
|
+
technicalGuardian: buildTechnicalGuardian(pages),
|
|
2439
|
+
};
|
|
1377
2440
|
|
|
1378
2441
|
const briefs = pages.map((page, index) => ({
|
|
1379
2442
|
priority: index + 1,
|
|
@@ -1407,10 +2470,13 @@ function buildThumbGateSeoPlan(rawRows = HIGH_ROI_QUERY_SEEDS) {
|
|
|
1407
2470
|
acc[row.pageType] = (acc[row.pageType] || 0) + 1;
|
|
1408
2471
|
return acc;
|
|
1409
2472
|
}, {}),
|
|
2473
|
+
contextGovernance: semanticProgrammaticSeo.contextGovernance,
|
|
1410
2474
|
},
|
|
1411
2475
|
organize: {
|
|
1412
2476
|
clusters,
|
|
1413
2477
|
topClusters: clusters.slice(0, 4),
|
|
2478
|
+
authorityMap: semanticProgrammaticSeo.authorityMap,
|
|
2479
|
+
semanticMesh: semanticProgrammaticSeo.semanticMesh,
|
|
1414
2480
|
},
|
|
1415
2481
|
execute: {
|
|
1416
2482
|
briefs,
|
|
@@ -1420,7 +2486,9 @@ function buildThumbGateSeoPlan(rawRows = HIGH_ROI_QUERY_SEEDS) {
|
|
|
1420
2486
|
topOpportunityQuery: capture.slice().sort((a, b) => b.opportunityScore - a.opportunityScore)[0],
|
|
1421
2487
|
recommendedOrder: briefs.map((brief) => brief.path),
|
|
1422
2488
|
proofAssets: PRODUCT.proofPoints,
|
|
2489
|
+
technicalGuardian: semanticProgrammaticSeo.technicalGuardian,
|
|
1423
2490
|
},
|
|
2491
|
+
semanticProgrammaticSeo,
|
|
1424
2492
|
};
|
|
1425
2493
|
}
|
|
1426
2494
|
|
|
@@ -1440,11 +2508,20 @@ function renderPlanMarkdown(plan) {
|
|
|
1440
2508
|
`- Intents: ${Object.entries(plan.clarify.intents).map(([key, value]) => `${key}=${value}`).join(', ')}`,
|
|
1441
2509
|
`- Personas: ${Object.entries(plan.clarify.personas).map(([key, value]) => `${key}=${value}`).join(', ')}`,
|
|
1442
2510
|
`- Page types: ${Object.entries(plan.clarify.pageTypes).map(([key, value]) => `${key}=${value}`).join(', ')}`,
|
|
2511
|
+
`- Context governance: ${plan.clarify.contextGovernance.brandPersona}`,
|
|
1443
2512
|
'',
|
|
1444
2513
|
'## Organize',
|
|
1445
2514
|
'',
|
|
1446
2515
|
...plan.organize.topClusters.map((cluster) => `- ${cluster.pillar}: ${cluster.primaryQuery.query} (${cluster.totalOpportunityScore})`),
|
|
1447
2516
|
'',
|
|
2517
|
+
'### Authority Map',
|
|
2518
|
+
'',
|
|
2519
|
+
...plan.organize.authorityMap.slice(0, 6).map((entry) => `- ${entry.pillar}: ${entry.rankPermission} | score=${entry.authorityScore} | ${entry.nextAction}`),
|
|
2520
|
+
'',
|
|
2521
|
+
'### Semantic Mesh',
|
|
2522
|
+
'',
|
|
2523
|
+
...plan.organize.semanticMesh.slice(0, 8).map((entry) => `- ${entry.path}: ${entry.meshStatus} | links=${entry.relatedPaths.join(', ')}`),
|
|
2524
|
+
'',
|
|
1448
2525
|
'## Execute',
|
|
1449
2526
|
'',
|
|
1450
2527
|
...plan.execute.briefs.map((brief) => (
|
|
@@ -1456,6 +2533,8 @@ function renderPlanMarkdown(plan) {
|
|
|
1456
2533
|
`- Top opportunity query: ${plan.review.topOpportunityQuery.query}`,
|
|
1457
2534
|
`- Recommended publish order: ${plan.review.recommendedOrder.join(', ')}`,
|
|
1458
2535
|
`- Proof assets: ${plan.review.proofAssets.join(', ')}`,
|
|
2536
|
+
`- Technical guardian checks: ${plan.review.technicalGuardian.checks.join(', ')}`,
|
|
2537
|
+
`- Publish blockers: ${plan.review.technicalGuardian.publishBlockers.length ? plan.review.technicalGuardian.publishBlockers.join(', ') : 'none'}`,
|
|
1459
2538
|
'',
|
|
1460
2539
|
];
|
|
1461
2540
|
return lines.join('\n');
|
|
@@ -1514,6 +2593,26 @@ function renderWebPageJsonLd(page, runtimeConfig) {
|
|
|
1514
2593
|
}, null, 2);
|
|
1515
2594
|
}
|
|
1516
2595
|
|
|
2596
|
+
function renderPaidSprintCheckoutCard(page) {
|
|
2597
|
+
if (page.path !== '/guides/ai-agent-governance-sprint') return '';
|
|
2598
|
+
|
|
2599
|
+
return `<div class="sidebar-card paid-sprint-card">
|
|
2600
|
+
<h2>Ready to buy the sprint?</h2>
|
|
2601
|
+
<p>Skip the unpaid intake when budget is ready. Pick the smaller diagnostic to validate one repeated failure, or buy the 48-hour sprint for implementation and proof.</p>
|
|
2602
|
+
<div class="paid-offers">
|
|
2603
|
+
<a class="paid-offer diagnostic" href="${escapeHtml(PRODUCT.sprintDiagnosticPaymentUrl)}" target="_blank" rel="noopener">
|
|
2604
|
+
<span>Workflow Hardening Diagnostic</span>
|
|
2605
|
+
<strong>$499</strong>
|
|
2606
|
+
</a>
|
|
2607
|
+
<a class="paid-offer sprint" href="${escapeHtml(PRODUCT.workflowSprintPaymentUrl)}" target="_blank" rel="noopener">
|
|
2608
|
+
<span>AI Agent Governance Sprint</span>
|
|
2609
|
+
<strong>$1500</strong>
|
|
2610
|
+
</a>
|
|
2611
|
+
</div>
|
|
2612
|
+
<a class="secondary-cta" href="${escapeHtml(page.cta.href)}" target="_blank" rel="noopener">Use intake instead</a>
|
|
2613
|
+
</div>`;
|
|
2614
|
+
}
|
|
2615
|
+
|
|
1517
2616
|
function renderSeoPageHtml(page, runtimeConfig = {}) {
|
|
1518
2617
|
const appOrigin = normalizeText(runtimeConfig.appOrigin) || PRODUCT.homepageUrl;
|
|
1519
2618
|
const canonicalUrl = `${appOrigin}${page.path}`;
|
|
@@ -1535,9 +2634,44 @@ function renderSeoPageHtml(page, runtimeConfig = {}) {
|
|
|
1535
2634
|
<p>${escapeHtml(item.answer)}</p>
|
|
1536
2635
|
</details>`).join('');
|
|
1537
2636
|
const proofLinks = page.proofLinks.map((link) => `<a href="${escapeHtml(link.href)}" target="_blank" rel="noopener">${escapeHtml(link.label)}</a>`).join('');
|
|
2637
|
+
const paidSprintCheckoutCard = renderPaidSprintCheckoutCard(page);
|
|
1538
2638
|
const faqJsonLd = renderFaqJsonLd(page);
|
|
1539
|
-
|
|
1540
|
-
|
|
2639
|
+
const semanticPseoSidebar = page.path === '/guides/semantic-programmatic-seo-guardrails' ? `<div class="sidebar-card">
|
|
2640
|
+
<h2>pSEO governance gates</h2>
|
|
2641
|
+
<ul>
|
|
2642
|
+
<li>Authority map before page generation</li>
|
|
2643
|
+
<li>Brand context governance before drafting</li>
|
|
2644
|
+
<li>Semantic mesh links before publish</li>
|
|
2645
|
+
<li>Technical guardian checks before crawl</li>
|
|
2646
|
+
</ul>
|
|
2647
|
+
</div>` : '';
|
|
2648
|
+
const documentRagSidebar = page.pillar === 'document-rag-safety' ? `<div class="sidebar-card">
|
|
2649
|
+
<h2>Document RAG Safety gates</h2>
|
|
2650
|
+
<ul>
|
|
2651
|
+
<li>Retrieval baseline before tuning</li>
|
|
2652
|
+
<li>Two-stage verifier for structural near misses</li>
|
|
2653
|
+
<li>Section tree and image pointer grounding</li>
|
|
2654
|
+
<li>Latency budget before verifier rollout</li>
|
|
2655
|
+
</ul>
|
|
2656
|
+
</div>` : '';
|
|
2657
|
+
const codeGraphSidebar = page.path === '/guides/code-knowledge-graph-guardrails' ? `<div class="sidebar-card">
|
|
2658
|
+
<h2>Knowledge Graph Safety</h2>
|
|
2659
|
+
<ul>
|
|
2660
|
+
<li>Require diff impact before central edits</li>
|
|
2661
|
+
<li>Checkpoint cross-layer refactors</li>
|
|
2662
|
+
<li>Protect generated graph artifacts</li>
|
|
2663
|
+
</ul>
|
|
2664
|
+
</div>` : '';
|
|
2665
|
+
const workflowRuleSidebar = page.path === '/guides/prompt-tricks-to-workflow-rules' ? `<div class="sidebar-card">
|
|
2666
|
+
<h2>Workflow Rule Safety</h2>
|
|
2667
|
+
<ul>
|
|
2668
|
+
<li>Clear rule before risky execution</li>
|
|
2669
|
+
<li>Good and bad examples before reuse</li>
|
|
2670
|
+
<li>Verification evidence before done</li>
|
|
2671
|
+
</ul>
|
|
2672
|
+
</div>` : '';
|
|
2673
|
+
|
|
2674
|
+
const html = `<!DOCTYPE html>
|
|
1541
2675
|
<html lang="en">
|
|
1542
2676
|
<head>
|
|
1543
2677
|
<meta charset="UTF-8" />
|
|
@@ -1707,6 +2841,48 @@ function renderSeoPageHtml(page, runtimeConfig = {}) {
|
|
|
1707
2841
|
font-weight: 700;
|
|
1708
2842
|
text-decoration: none;
|
|
1709
2843
|
}
|
|
2844
|
+
.paid-sprint-card {
|
|
2845
|
+
border-color: rgba(74, 222, 128, 0.32);
|
|
2846
|
+
background: linear-gradient(180deg, rgba(17, 17, 19, 0.98), rgba(10, 20, 14, 0.96));
|
|
2847
|
+
}
|
|
2848
|
+
.paid-sprint-card p {
|
|
2849
|
+
color: var(--muted);
|
|
2850
|
+
font-size: 14px;
|
|
2851
|
+
line-height: 1.55;
|
|
2852
|
+
}
|
|
2853
|
+
.paid-offers {
|
|
2854
|
+
display: grid;
|
|
2855
|
+
gap: 10px;
|
|
2856
|
+
margin-top: 16px;
|
|
2857
|
+
}
|
|
2858
|
+
.paid-offer {
|
|
2859
|
+
display: flex;
|
|
2860
|
+
align-items: center;
|
|
2861
|
+
justify-content: space-between;
|
|
2862
|
+
gap: 12px;
|
|
2863
|
+
padding: 12px;
|
|
2864
|
+
border: 1px solid rgba(74, 222, 128, 0.28);
|
|
2865
|
+
border-radius: 10px;
|
|
2866
|
+
color: var(--fg);
|
|
2867
|
+
text-decoration: none;
|
|
2868
|
+
background: rgba(0, 0, 0, 0.22);
|
|
2869
|
+
}
|
|
2870
|
+
.paid-offer strong {
|
|
2871
|
+
color: #9af5b0;
|
|
2872
|
+
white-space: nowrap;
|
|
2873
|
+
}
|
|
2874
|
+
.paid-offer:hover, .paid-offer:focus-visible {
|
|
2875
|
+
border-color: rgba(74, 222, 128, 0.62);
|
|
2876
|
+
outline: none;
|
|
2877
|
+
}
|
|
2878
|
+
.secondary-cta {
|
|
2879
|
+
display: inline-flex;
|
|
2880
|
+
margin-top: 12px;
|
|
2881
|
+
color: var(--cyan);
|
|
2882
|
+
font-size: 14px;
|
|
2883
|
+
font-weight: 700;
|
|
2884
|
+
text-decoration: none;
|
|
2885
|
+
}
|
|
1710
2886
|
.faq-item {
|
|
1711
2887
|
border-top: 1px solid var(--line);
|
|
1712
2888
|
padding: 14px 0;
|
|
@@ -1784,6 +2960,11 @@ ${renderWebPageJsonLd(page, { appOrigin })}
|
|
|
1784
2960
|
</div>
|
|
1785
2961
|
|
|
1786
2962
|
<aside class="sidebar">
|
|
2963
|
+
${semanticPseoSidebar}
|
|
2964
|
+
${documentRagSidebar}
|
|
2965
|
+
${codeGraphSidebar}
|
|
2966
|
+
${workflowRuleSidebar}
|
|
2967
|
+
${paidSprintCheckoutCard}
|
|
1787
2968
|
<div class="sidebar-card">
|
|
1788
2969
|
<h2>GSD execution brief</h2>
|
|
1789
2970
|
<p>This page was prioritized because it captures high-intent demand around ${escapeHtml(page.query)} and feeds directly into ThumbGate's proof-led conversion path.</p>
|
|
@@ -1803,6 +2984,7 @@ ${renderWebPageJsonLd(page, { appOrigin })}
|
|
|
1803
2984
|
</main>
|
|
1804
2985
|
</body>
|
|
1805
2986
|
</html>`;
|
|
2987
|
+
return html.split('\n').map((line) => line.trimEnd()).join('\n');
|
|
1806
2988
|
}
|
|
1807
2989
|
|
|
1808
2990
|
const THUMBGATE_SEO_PLAN = buildThumbGateSeoPlan(HIGH_ROI_QUERY_SEEDS);
|
|
@@ -1859,7 +3041,11 @@ async function main() {
|
|
|
1859
3041
|
}
|
|
1860
3042
|
}
|
|
1861
3043
|
|
|
1862
|
-
|
|
3044
|
+
function isCliInvocation(argv = process.argv) {
|
|
3045
|
+
return Boolean(argv[1] && path.resolve(argv[1]) === __filename);
|
|
3046
|
+
}
|
|
3047
|
+
|
|
3048
|
+
if (isCliInvocation()) {
|
|
1863
3049
|
main().catch((error) => {
|
|
1864
3050
|
console.error(error.message || String(error));
|
|
1865
3051
|
process.exit(1);
|
|
@@ -1875,6 +3061,10 @@ module.exports = {
|
|
|
1875
3061
|
THUMBGATE_SEO_PAGE_SPECS,
|
|
1876
3062
|
THUMBGATE_SEO_SITEMAP_ENTRIES,
|
|
1877
3063
|
buildThumbGateSeoPlan,
|
|
3064
|
+
buildAuthorityMap,
|
|
3065
|
+
buildContextGovernance,
|
|
3066
|
+
buildSemanticMesh,
|
|
3067
|
+
buildTechnicalGuardian,
|
|
1878
3068
|
classifyIntent,
|
|
1879
3069
|
clusterKeywordRows,
|
|
1880
3070
|
createPageSpec,
|