thumbgate 1.30.0 → 1.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +54 -16
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/forge/forge.yaml +3 -3
- package/adapters/mcp/server-stdio.js +66 -8
- package/adapters/opencode/opencode.json +1 -1
- package/bench/observability-eval-suite.json +2 -2
- package/bin/cli.js +147 -31
- package/config/evals/generation-quality-golden.json +95 -0
- package/config/evals/rag-answer-quality-golden.json +91 -0
- package/config/evals/retrieval-hybrid-ablation.json +66 -0
- package/config/evals/retrieval-ranking-golden.json +522 -0
- package/config/gates/default.json +217 -50
- package/config/mcp-allowlists.json +212 -206
- package/config/model-tiers.json +7 -2
- package/glama.json +6 -0
- package/package.json +60 -8
- package/public/assets/diagrams/before-after.svg +17 -16
- package/public/assets/diagrams/hero-thumbs.svg +68 -0
- package/public/assets/diagrams/loop.svg +19 -13
- package/public/assets/diagrams/self-improving-thumbs-loop.svg +105 -0
- package/public/compare.html +1 -0
- package/public/dashboard.html +126 -28
- package/public/evaluations.html +1 -1
- package/public/index.html +142 -13
- package/public/numbers.html +3 -2
- package/public/pricing.html +143 -30
- package/scripts/a-plus-evidence-scorecard.js +303 -0
- package/scripts/async-eval-observability.js +36 -11
- package/scripts/audit-trail.js +37 -1
- package/scripts/auto-promote-gates.js +149 -34
- package/scripts/colbert-style-maxsim.js +236 -0
- package/scripts/cross-encoder-reranker.js +356 -126
- package/scripts/dashboard-chat.js +350 -17
- package/scripts/document-intake.js +283 -7
- package/scripts/eval-quality-suite.js +204 -0
- package/scripts/feedback-loop.js +115 -7
- package/scripts/feedback-paths.js +32 -13
- package/scripts/feedback-quality.js +53 -0
- package/scripts/filesystem-search.js +17 -7
- package/scripts/gates-engine.js +17 -0
- package/scripts/harness-tool-names.js +70 -0
- package/scripts/hook-runtime.js +10 -3
- package/scripts/lesson-db.js +16 -5
- package/scripts/lesson-embedding-index.js +67 -20
- package/scripts/lesson-embedding-maintenance.js +177 -0
- package/scripts/lesson-reranker.js +55 -9
- package/scripts/lesson-retrieval.js +305 -29
- package/scripts/lesson-search.js +22 -8
- package/scripts/llm-client.js +304 -15
- package/scripts/model-tier-router.js +593 -0
- package/scripts/pragmatic-hybrid-search.js +379 -0
- package/scripts/rag-document-pipeline.js +461 -0
- package/scripts/rag-structured-output.js +441 -0
- package/scripts/ragas-style-metrics.js +351 -0
- package/scripts/request-envelope.js +178 -0
- package/scripts/rerank-pipeline.js +370 -0
- package/scripts/rerank-quality-eval.js +155 -0
- package/scripts/retrieval-hybrid-ablation.js +120 -0
- package/scripts/retrieval-quality-tier.js +118 -0
- package/scripts/secret-scanner.js +395 -4
- package/scripts/self-distill-agent.js +7 -1
- package/scripts/self-healing-check.js +25 -0
- package/scripts/skill-packs.js +183 -0
- package/scripts/slow-loop.js +72 -0
- package/scripts/statusline-links.js +1 -1
- package/scripts/statusline.sh +8 -1
- package/scripts/telemetry-analytics.js +13 -1
- package/scripts/thumbgate-search.js +98 -6
- package/scripts/tier-budget-guard.js +186 -0
- package/scripts/tool-registry.js +46 -0
- package/scripts/vector-store.js +108 -4
- package/scripts/verify-marketing-pages-deployed.js +85 -3
- package/server.json +44 -0
- package/smithery.yaml +17 -0
- package/src/api/server.js +194 -13
|
@@ -0,0 +1,522 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 2,
|
|
3
|
+
"description": "Graded qrels for ThumbGate retrieval ranking (Recall@k / MRR / nDCG / Precision@k). Expanded A+ set (2026-07-31). Self-contained CI corpus.",
|
|
4
|
+
"kValues": [
|
|
5
|
+
1,
|
|
6
|
+
5,
|
|
7
|
+
10
|
|
8
|
+
],
|
|
9
|
+
"thresholds": {
|
|
10
|
+
"minMrr": 0.6,
|
|
11
|
+
"minRecallAt5": 0.8,
|
|
12
|
+
"minNdcgAt5": 0.58,
|
|
13
|
+
"minPrecisionAt5": 0.25,
|
|
14
|
+
"minExactMrr": 0.85,
|
|
15
|
+
"minQueries": 18
|
|
16
|
+
},
|
|
17
|
+
"corpus": [
|
|
18
|
+
{
|
|
19
|
+
"id": "doc:force-push",
|
|
20
|
+
"title": "MISTAKE: force-push to main",
|
|
21
|
+
"content": "NEVER force-push or git push --force to main/master. Use --force-with-lease only on personal branches after review. Protected branch history must not be rewritten.",
|
|
22
|
+
"signal": "negative",
|
|
23
|
+
"tags": [
|
|
24
|
+
"git",
|
|
25
|
+
"force-push",
|
|
26
|
+
"main",
|
|
27
|
+
"negative"
|
|
28
|
+
],
|
|
29
|
+
"metadata": {
|
|
30
|
+
"toolsUsed": [
|
|
31
|
+
"Bash"
|
|
32
|
+
],
|
|
33
|
+
"domain": "git"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "doc:deploy-health",
|
|
38
|
+
"title": "MISTAKE: claimed deployed without health check",
|
|
39
|
+
"content": "ALWAYS verify /health endpoint returns the new version after deploy. NEVER say deployed without curling health and matching version. Wait 2-5 minutes after Railway rebuild.",
|
|
40
|
+
"signal": "negative",
|
|
41
|
+
"tags": [
|
|
42
|
+
"deploy",
|
|
43
|
+
"railway",
|
|
44
|
+
"health",
|
|
45
|
+
"negative"
|
|
46
|
+
],
|
|
47
|
+
"metadata": {
|
|
48
|
+
"toolsUsed": [
|
|
49
|
+
"Bash"
|
|
50
|
+
],
|
|
51
|
+
"domain": "railway-deploy"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "doc:stripe-idempotency",
|
|
56
|
+
"title": "MISTAKE: PaymentIntent without idempotency key",
|
|
57
|
+
"content": "ALWAYS use idempotency keys on PaymentIntent creation to prevent duplicate charges. NEVER create charges without an idempotency key in production Stripe flows.",
|
|
58
|
+
"signal": "negative",
|
|
59
|
+
"tags": [
|
|
60
|
+
"stripe",
|
|
61
|
+
"payment",
|
|
62
|
+
"idempotency",
|
|
63
|
+
"negative"
|
|
64
|
+
],
|
|
65
|
+
"metadata": {
|
|
66
|
+
"toolsUsed": [
|
|
67
|
+
"Edit",
|
|
68
|
+
"Bash"
|
|
69
|
+
],
|
|
70
|
+
"domain": "stripe-integration"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "doc:stripe-raw-card",
|
|
75
|
+
"title": "MISTAKE: stored raw card numbers",
|
|
76
|
+
"content": "NEVER log or store raw card numbers. Use Stripe tokens or PaymentMethod IDs. Card PAN storage is a PCI violation.",
|
|
77
|
+
"signal": "negative",
|
|
78
|
+
"tags": [
|
|
79
|
+
"stripe",
|
|
80
|
+
"pci",
|
|
81
|
+
"card",
|
|
82
|
+
"negative"
|
|
83
|
+
],
|
|
84
|
+
"metadata": {
|
|
85
|
+
"toolsUsed": [
|
|
86
|
+
"Edit",
|
|
87
|
+
"Write"
|
|
88
|
+
],
|
|
89
|
+
"domain": "stripe-integration"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "doc:db-backup",
|
|
94
|
+
"title": "MISTAKE: drop table without backup",
|
|
95
|
+
"content": "ALWAYS back up the database before running destructive migrations. NEVER drop users table or truncate production tables without a restore point.",
|
|
96
|
+
"signal": "negative",
|
|
97
|
+
"tags": [
|
|
98
|
+
"database",
|
|
99
|
+
"migration",
|
|
100
|
+
"backup",
|
|
101
|
+
"negative"
|
|
102
|
+
],
|
|
103
|
+
"metadata": {
|
|
104
|
+
"toolsUsed": [
|
|
105
|
+
"Bash"
|
|
106
|
+
],
|
|
107
|
+
"domain": "database-migration"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "doc:db-test-first",
|
|
112
|
+
"title": "MISTAKE: migrate deploy without test database",
|
|
113
|
+
"content": "ALWAYS run migrations against a test database first. NEVER run prisma migrate deploy in production without verifying on staging.",
|
|
114
|
+
"signal": "negative",
|
|
115
|
+
"tags": [
|
|
116
|
+
"database",
|
|
117
|
+
"prisma",
|
|
118
|
+
"migration",
|
|
119
|
+
"negative"
|
|
120
|
+
],
|
|
121
|
+
"metadata": {
|
|
122
|
+
"toolsUsed": [
|
|
123
|
+
"Bash"
|
|
124
|
+
],
|
|
125
|
+
"domain": "database-migration"
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "doc:secrets-env",
|
|
130
|
+
"title": "MISTAKE: committed .env secrets",
|
|
131
|
+
"content": "NEVER commit .env files, API keys, or PEMs to git. Redact secrets from logs and PR bodies. Rotate any leaked credential immediately.",
|
|
132
|
+
"signal": "negative",
|
|
133
|
+
"tags": [
|
|
134
|
+
"security",
|
|
135
|
+
"secrets",
|
|
136
|
+
"env",
|
|
137
|
+
"negative"
|
|
138
|
+
],
|
|
139
|
+
"metadata": {
|
|
140
|
+
"toolsUsed": [
|
|
141
|
+
"Write",
|
|
142
|
+
"Edit"
|
|
143
|
+
],
|
|
144
|
+
"domain": "security"
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "doc:false-done",
|
|
149
|
+
"title": "MISTAKE: said done without gh pr view",
|
|
150
|
+
"content": "NEVER say done, pushed, or shipped without showing gh pr view output and green CI. Open PR with auto-merge is not done.",
|
|
151
|
+
"signal": "negative",
|
|
152
|
+
"tags": [
|
|
153
|
+
"pr",
|
|
154
|
+
"ci",
|
|
155
|
+
"verification",
|
|
156
|
+
"negative"
|
|
157
|
+
],
|
|
158
|
+
"metadata": {
|
|
159
|
+
"toolsUsed": [
|
|
160
|
+
"Bash"
|
|
161
|
+
],
|
|
162
|
+
"domain": "verification"
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"id": "doc:noise-ui",
|
|
167
|
+
"title": "SUCCESS: dashboard button spacing",
|
|
168
|
+
"content": "Adjusted CSS padding on the dashboard stat cards for mobile. Visual polish only; no gate or retrieval impact.",
|
|
169
|
+
"signal": "positive",
|
|
170
|
+
"tags": [
|
|
171
|
+
"css",
|
|
172
|
+
"dashboard",
|
|
173
|
+
"positive"
|
|
174
|
+
],
|
|
175
|
+
"metadata": {
|
|
176
|
+
"toolsUsed": [
|
|
177
|
+
"Edit"
|
|
178
|
+
],
|
|
179
|
+
"domain": "ui"
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"id": "doc:noise-docs",
|
|
184
|
+
"title": "SUCCESS: typo in README",
|
|
185
|
+
"content": "Fixed a spelling typo in the install section of the README. No behavioral change.",
|
|
186
|
+
"signal": "positive",
|
|
187
|
+
"tags": [
|
|
188
|
+
"docs",
|
|
189
|
+
"readme",
|
|
190
|
+
"positive"
|
|
191
|
+
],
|
|
192
|
+
"metadata": {
|
|
193
|
+
"toolsUsed": [
|
|
194
|
+
"Edit"
|
|
195
|
+
],
|
|
196
|
+
"domain": "docs"
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"id": "doc:related-git-rebase",
|
|
201
|
+
"title": "MISTAKE: rebase of shared branch",
|
|
202
|
+
"content": "NEVER rebase a branch that others have already pulled. Prefer merge commits on shared feature branches.",
|
|
203
|
+
"signal": "negative",
|
|
204
|
+
"tags": [
|
|
205
|
+
"git",
|
|
206
|
+
"rebase",
|
|
207
|
+
"negative"
|
|
208
|
+
],
|
|
209
|
+
"metadata": {
|
|
210
|
+
"toolsUsed": [
|
|
211
|
+
"Bash"
|
|
212
|
+
],
|
|
213
|
+
"domain": "git"
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"id": "doc:related-stripe-webhook",
|
|
218
|
+
"title": "MISTAKE: webhook without signature verify",
|
|
219
|
+
"content": "ALWAYS verify Stripe webhook signatures with constructEvent before processing. NEVER trust raw webhook bodies.",
|
|
220
|
+
"signal": "negative",
|
|
221
|
+
"tags": [
|
|
222
|
+
"stripe",
|
|
223
|
+
"webhook",
|
|
224
|
+
"negative"
|
|
225
|
+
],
|
|
226
|
+
"metadata": {
|
|
227
|
+
"toolsUsed": [
|
|
228
|
+
"Edit"
|
|
229
|
+
],
|
|
230
|
+
"domain": "stripe-integration"
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"id": "doc:recursive-delete",
|
|
235
|
+
"title": "MISTAKE: recursive delete of production data",
|
|
236
|
+
"content": "NEVER run recursive force-delete on production paths or database directories without a restore snapshot. Prefer soft-delete and scoped cleanup scripts.",
|
|
237
|
+
"signal": "negative",
|
|
238
|
+
"tags": [
|
|
239
|
+
"delete",
|
|
240
|
+
"destructive",
|
|
241
|
+
"negative"
|
|
242
|
+
],
|
|
243
|
+
"metadata": {
|
|
244
|
+
"toolsUsed": [
|
|
245
|
+
"Bash"
|
|
246
|
+
],
|
|
247
|
+
"domain": "filesystem"
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"id": "doc:lease-double-exec",
|
|
252
|
+
"title": "MISTAKE: two executors on one agent thread",
|
|
253
|
+
"content": "ALWAYS enforce one-thread-one-executor with a 90-second renewable lease. Two active executors cause double writes worse than stall.",
|
|
254
|
+
"signal": "negative",
|
|
255
|
+
"tags": [
|
|
256
|
+
"lease",
|
|
257
|
+
"continuity",
|
|
258
|
+
"failover",
|
|
259
|
+
"negative"
|
|
260
|
+
],
|
|
261
|
+
"metadata": {
|
|
262
|
+
"toolsUsed": [
|
|
263
|
+
"Bash"
|
|
264
|
+
],
|
|
265
|
+
"domain": "continuity"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"id": "doc:hashnode-frozen",
|
|
270
|
+
"title": "MISTAKE: republish on Hashnode after AutoMod",
|
|
271
|
+
"content": "NEVER publish or re-publish on Hashnode while AutoMod freeze is active. Prefer Medium and dev.to for longform with buy links.",
|
|
272
|
+
"signal": "negative",
|
|
273
|
+
"tags": [
|
|
274
|
+
"hashnode",
|
|
275
|
+
"social",
|
|
276
|
+
"negative"
|
|
277
|
+
],
|
|
278
|
+
"metadata": {
|
|
279
|
+
"toolsUsed": [
|
|
280
|
+
"Bash"
|
|
281
|
+
],
|
|
282
|
+
"domain": "social"
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"id": "doc:trunk-merge",
|
|
287
|
+
"title": "MISTAKE: raw gh pr merge auto on main",
|
|
288
|
+
"content": "ALWAYS use npm run pr:manage or trunk merge for main. NEVER raw gh pr merge auto around required checks.",
|
|
289
|
+
"signal": "negative",
|
|
290
|
+
"tags": [
|
|
291
|
+
"pr",
|
|
292
|
+
"trunk",
|
|
293
|
+
"merge",
|
|
294
|
+
"negative"
|
|
295
|
+
],
|
|
296
|
+
"metadata": {
|
|
297
|
+
"toolsUsed": [
|
|
298
|
+
"Bash"
|
|
299
|
+
],
|
|
300
|
+
"domain": "verification"
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"id": "doc:noise-weather",
|
|
305
|
+
"title": "SUCCESS: weather note",
|
|
306
|
+
"content": "Recorded that the office AC was fixed. Unrelated to agents or gates.",
|
|
307
|
+
"signal": "positive",
|
|
308
|
+
"tags": [
|
|
309
|
+
"ops",
|
|
310
|
+
"positive"
|
|
311
|
+
],
|
|
312
|
+
"metadata": {
|
|
313
|
+
"toolsUsed": [
|
|
314
|
+
"Edit"
|
|
315
|
+
],
|
|
316
|
+
"domain": "noise"
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
],
|
|
320
|
+
"queries": [
|
|
321
|
+
{
|
|
322
|
+
"id": "exact-force-push",
|
|
323
|
+
"slice": "exact",
|
|
324
|
+
"query": "git push --force origin main",
|
|
325
|
+
"toolName": "Bash",
|
|
326
|
+
"qrels": {
|
|
327
|
+
"doc:force-push": 2,
|
|
328
|
+
"doc:related-git-rebase": 1
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"id": "para-force-push",
|
|
333
|
+
"slice": "paraphrase",
|
|
334
|
+
"query": "overwrite the remote main branch history with my local commits",
|
|
335
|
+
"toolName": "Bash",
|
|
336
|
+
"qrels": {
|
|
337
|
+
"doc:force-push": 2,
|
|
338
|
+
"doc:related-git-rebase": 1
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"id": "exact-deploy-health",
|
|
343
|
+
"slice": "exact",
|
|
344
|
+
"query": "Deploy to Railway and confirm live with health endpoint",
|
|
345
|
+
"toolName": "Bash",
|
|
346
|
+
"qrels": {
|
|
347
|
+
"doc:deploy-health": 2
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"id": "para-deploy-health",
|
|
352
|
+
"slice": "paraphrase",
|
|
353
|
+
"query": "I merged the PR — is production actually running the new build?",
|
|
354
|
+
"toolName": "Bash",
|
|
355
|
+
"qrels": {
|
|
356
|
+
"doc:deploy-health": 2,
|
|
357
|
+
"doc:false-done": 1
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"id": "exact-idempotency",
|
|
362
|
+
"slice": "exact",
|
|
363
|
+
"query": "Create a PaymentIntent for $50 USD",
|
|
364
|
+
"toolName": "Edit",
|
|
365
|
+
"qrels": {
|
|
366
|
+
"doc:stripe-idempotency": 2,
|
|
367
|
+
"doc:related-stripe-webhook": 1,
|
|
368
|
+
"doc:stripe-raw-card": 1
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"id": "exact-raw-card",
|
|
373
|
+
"slice": "exact",
|
|
374
|
+
"query": "Store customer credit card number in our database",
|
|
375
|
+
"toolName": "Write",
|
|
376
|
+
"qrels": {
|
|
377
|
+
"doc:stripe-raw-card": 2,
|
|
378
|
+
"doc:stripe-idempotency": 1
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"id": "exact-db-backup",
|
|
383
|
+
"slice": "exact",
|
|
384
|
+
"query": "Drop users table and recreate schema",
|
|
385
|
+
"toolName": "Bash",
|
|
386
|
+
"qrels": {
|
|
387
|
+
"doc:db-backup": 2,
|
|
388
|
+
"doc:db-test-first": 1
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"id": "exact-db-test",
|
|
393
|
+
"slice": "exact",
|
|
394
|
+
"query": "Run prisma migrate deploy in production",
|
|
395
|
+
"toolName": "Bash",
|
|
396
|
+
"qrels": {
|
|
397
|
+
"doc:db-test-first": 2,
|
|
398
|
+
"doc:db-backup": 1
|
|
399
|
+
}
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"id": "tool-scoped-secrets",
|
|
403
|
+
"slice": "tool-scoped",
|
|
404
|
+
"query": "write secrets into .env and commit them",
|
|
405
|
+
"toolName": "Write",
|
|
406
|
+
"qrels": {
|
|
407
|
+
"doc:secrets-env": 2
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"id": "distractor-ui",
|
|
412
|
+
"slice": "distractor",
|
|
413
|
+
"query": "force push blocked patterns and protected main branch",
|
|
414
|
+
"toolName": "Bash",
|
|
415
|
+
"qrels": {
|
|
416
|
+
"doc:force-push": 2,
|
|
417
|
+
"doc:related-git-rebase": 1,
|
|
418
|
+
"doc:noise-ui": 0,
|
|
419
|
+
"doc:noise-docs": 0
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
"id": "exact-recursive-delete",
|
|
424
|
+
"slice": "exact",
|
|
425
|
+
"query": "recursively force-delete the production data directory",
|
|
426
|
+
"toolName": "Bash",
|
|
427
|
+
"qrels": {
|
|
428
|
+
"doc:recursive-delete": 2,
|
|
429
|
+
"doc:db-backup": 1
|
|
430
|
+
}
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"id": "para-recursive-delete",
|
|
434
|
+
"slice": "paraphrase",
|
|
435
|
+
"query": "wipe the whole prod folder recursively without a snapshot",
|
|
436
|
+
"toolName": "Bash",
|
|
437
|
+
"qrels": {
|
|
438
|
+
"doc:recursive-delete": 2,
|
|
439
|
+
"doc:db-backup": 1
|
|
440
|
+
}
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"id": "exact-lease",
|
|
444
|
+
"slice": "exact",
|
|
445
|
+
"query": "two cloud runners claimed the same task lease",
|
|
446
|
+
"toolName": "Bash",
|
|
447
|
+
"qrels": {
|
|
448
|
+
"doc:lease-double-exec": 2
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"id": "para-lease",
|
|
453
|
+
"slice": "paraphrase",
|
|
454
|
+
"query": "Mac went offline mid-run and Continuity double-wrote the migration",
|
|
455
|
+
"toolName": "Bash",
|
|
456
|
+
"qrels": {
|
|
457
|
+
"doc:lease-double-exec": 2,
|
|
458
|
+
"doc:deploy-health": 1
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"id": "exact-hashnode",
|
|
463
|
+
"slice": "exact",
|
|
464
|
+
"query": "republish the Hashnode post AutoMod archived",
|
|
465
|
+
"toolName": "Bash",
|
|
466
|
+
"qrels": {
|
|
467
|
+
"doc:hashnode-frozen": 2
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"id": "exact-trunk",
|
|
472
|
+
"slice": "exact",
|
|
473
|
+
"query": "gh pr merge auto the green PR into main",
|
|
474
|
+
"toolName": "Bash",
|
|
475
|
+
"qrels": {
|
|
476
|
+
"doc:trunk-merge": 2,
|
|
477
|
+
"doc:false-done": 1
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"id": "para-secrets",
|
|
482
|
+
"slice": "paraphrase",
|
|
483
|
+
"query": "push API keys and pem files into the git remote",
|
|
484
|
+
"toolName": "Write",
|
|
485
|
+
"qrels": {
|
|
486
|
+
"doc:secrets-env": 2
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"id": "distractor-noise",
|
|
491
|
+
"slice": "distractor",
|
|
492
|
+
"query": "verify deploy health after Railway rebuild",
|
|
493
|
+
"toolName": "Bash",
|
|
494
|
+
"qrels": {
|
|
495
|
+
"doc:deploy-health": 2,
|
|
496
|
+
"doc:false-done": 1,
|
|
497
|
+
"doc:noise-ui": 0,
|
|
498
|
+
"doc:noise-weather": 0
|
|
499
|
+
}
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
"id": "tool-scoped-card",
|
|
503
|
+
"slice": "tool-scoped",
|
|
504
|
+
"query": "persist full credit card PAN next to the user row",
|
|
505
|
+
"toolName": "Write",
|
|
506
|
+
"qrels": {
|
|
507
|
+
"doc:stripe-raw-card": 2,
|
|
508
|
+
"doc:secrets-env": 1
|
|
509
|
+
}
|
|
510
|
+
},
|
|
511
|
+
{
|
|
512
|
+
"id": "para-idempotency",
|
|
513
|
+
"slice": "paraphrase",
|
|
514
|
+
"query": "create stripe charge for fifty dollars without duplicate risk",
|
|
515
|
+
"toolName": "Edit",
|
|
516
|
+
"qrels": {
|
|
517
|
+
"doc:stripe-idempotency": 2,
|
|
518
|
+
"doc:related-stripe-webhook": 1
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
]
|
|
522
|
+
}
|