benchmark-latency-budget 0.0.0-stage → 0.1.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/AGENTS.md +17 -0
- package/CHANGELOG.md +24 -0
- package/LICENSE +21 -0
- package/README.md +301 -2
- package/data/PROVENANCE.md +13 -0
- package/data/tasks.jsonl +36 -0
- package/dist/api.d.ts +13 -0
- package/dist/api.js +10 -0
- package/dist/api.js.map +1 -0
- package/dist/chunk-5UN7OIMU.js +62 -0
- package/dist/chunk-5UN7OIMU.js.map +1 -0
- package/dist/chunk-65SHHDK7.js +46 -0
- package/dist/chunk-65SHHDK7.js.map +1 -0
- package/dist/chunk-BGHRWUHU.js +86 -0
- package/dist/chunk-BGHRWUHU.js.map +1 -0
- package/dist/chunk-MRKAHJN3.js +435 -0
- package/dist/chunk-MRKAHJN3.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +139 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +175 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +13 -0
- package/dist/mcp.js +11 -0
- package/dist/mcp.js.map +1 -0
- package/llms.txt +29 -0
- package/package.json +25 -4
- package/server.json +12 -0
package/AGENTS.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Working on benchmark-latency-budget
|
|
2
|
+
|
|
3
|
+
## Commands
|
|
4
|
+
|
|
5
|
+
- Install with `npm ci`.
|
|
6
|
+
- Run the full gate with `npm run ci:local`.
|
|
7
|
+
- Generate tasks with `npm run generate:tasks`.
|
|
8
|
+
- Generate provenance after building with `npm run provenance`.
|
|
9
|
+
- Add no unit tests. Extend `scripts/e2e.mjs` through a public surface.
|
|
10
|
+
|
|
11
|
+
## Contracts
|
|
12
|
+
|
|
13
|
+
Keep tasks, deterministic grading, and provenance in sync. Episode environments must be seeded. Grade episode traces by replaying their tool log against a fresh simulator. Time is virtual: scheduled charge per call plus model turn time (measured wall-clock from the environment, or declared thinkMs per turn when the clock is declared). Write the failure modes in docs/grading.md before changing grader code.
|
|
14
|
+
|
|
15
|
+
Never read provider keys from repository files. OpenRouter uses `OPENROUTER_API_KEY`. OpenAI-compatible providers use `OPENAI_BASE_URL` and `OPENAI_API_KEY`.
|
|
16
|
+
|
|
17
|
+
Open an issue before a branch. Use `blbd-<issue>-<slug>` and `[blbd-<issue>] Imperative subject`. Keep pull requests below 500 counted lines. Do not merge your own pull request or push `release`.
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0 - 2026-10-16
|
|
4
|
+
|
|
5
|
+
Initial alpha release.
|
|
6
|
+
|
|
7
|
+
- 36 seeded episode tasks across voice, UI, and background deadline
|
|
8
|
+
classes; each deadline is set at 1.5-2x the task's shortest correct path
|
|
9
|
+
(voice 447-641 ms, UI 875-1494 ms, background 2025-3714 ms).
|
|
10
|
+
- Deterministic `qualityWithinBudget` grader: the answer must name exactly
|
|
11
|
+
one candidate value, be grounded in replayed tool output, and arrive
|
|
12
|
+
inside the deadline.
|
|
13
|
+
- Virtual clock: scheduled per-tool latencies plus model turn time,
|
|
14
|
+
measured wall-clock by default or declared `thinkMs` per turn
|
|
15
|
+
(`--clock declared`, `LATENCY_BUDGET_CLOCK=declared`).
|
|
16
|
+
- SDK, CLI (`--tasks`, `--clock`), MCP stdio server, and fetch-style HTTP
|
|
17
|
+
API from one `defineBenchmark` package.
|
|
18
|
+
- Run reports carry a `latency` block: p50/p95 billed time,
|
|
19
|
+
`lateButCorrect`, clock counts, and the 0.5x-4x deadline curve. MCP
|
|
20
|
+
`run_benchmark` returns the same block; `POST /v1/score` and MCP
|
|
21
|
+
`score_answer` return a per-submission `latency` block and bill
|
|
22
|
+
submitted traces at the declared rate.
|
|
23
|
+
- Hidden split generation (`--split hidden`) derives prompts and answers
|
|
24
|
+
from a transformed seed and prefixes task ids with `h-`.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Pooria Arab
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,302 @@
|
|
|
1
|
-
#
|
|
1
|
+
# benchmark-latency-budget
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/benchmark-latency-budget) [](https://www.npmjs.com/package/benchmark-latency-budget) [](./LICENSE) [](#sdk)
|
|
4
|
+
|
|
5
|
+
[AI Benchmark Index](https://aibenchmarkindex.com/benchmarks/benchmark-latency-budget) · [npm](https://www.npmjs.com/package/benchmark-latency-budget) · [API](#http-api) · [MCP](#model-context-protocol)
|
|
6
|
+
|
|
7
|
+
A right answer that arrives too late is a wrong answer in a voice call or a
|
|
8
|
+
busy UI. benchmark-latency-budget checks whether an agent gives the correct
|
|
9
|
+
answer before its deadline. Tasks come in voice, UI, and background classes,
|
|
10
|
+
and each deadline is set at 1.5-2x the shortest correct path, so chatty
|
|
11
|
+
agents run out of time. The agent sees its deadline in the system text and
|
|
12
|
+
can audit tool costs with a `describe_tools` call.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx benchmark-latency-budget run --model offline --provider mock
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
# Latency Budget
|
|
20
|
+
|
|
21
|
+
- Model: `mock:1`
|
|
22
|
+
- Score: **47.2%**
|
|
23
|
+
- 95% CI: 30.6%–63.9%
|
|
24
|
+
- Tasks: 36
|
|
25
|
+
|
|
26
|
+
| Task | Score | Reason |
|
|
27
|
+
| --- | ---: | --- |
|
|
28
|
+
| voice-01 | 0.0% | No candidate value found in the answer; 0ms against a 641ms deadline. |
|
|
29
|
+
| voice-02 | 100.0% | Correct answer in 121ms, within the 484ms deadline. |
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The tasks are seeded synthetic directory, calendar, and doc lookups. Seed
|
|
33
|
+
20261015 reproduces the public set; a hidden split derives from a
|
|
34
|
+
transformed seed, so its prompts and answers never repeat the public one
|
|
35
|
+
and its task ids carry an `h-` prefix.
|
|
36
|
+
|
|
37
|
+
## Install
|
|
38
|
+
|
|
39
|
+
benchmark-latency-budget requires Node.js 20 or newer.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install benchmark-latency-budget
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Run your first benchmark
|
|
46
|
+
|
|
47
|
+
The mock provider needs no key or network access.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npx benchmark-latency-budget run --model offline --provider mock
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
About half the mock answers are right and on time; the rest are wrong, so
|
|
54
|
+
expect a mean near 50%. A successful run prints 36 scored rows and a mean
|
|
55
|
+
with a bootstrap 95% confidence interval.
|
|
56
|
+
|
|
57
|
+
## Run on a real model
|
|
58
|
+
|
|
59
|
+
Point the runner at OpenRouter with any chat model:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
OPENROUTER_API_KEY=sk-or-... npx benchmark-latency-budget run --model openai/gpt-4o-mini --provider openrouter
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Any OpenAI-compatible endpoint works too:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
OPENAI_BASE_URL=https://my-proxy/v1 OPENAI_API_KEY=... npx benchmark-latency-budget run --model my-model --provider openai
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Never put keys in repo files; the runner reads them from the environment.
|
|
72
|
+
|
|
73
|
+
## How to read the score
|
|
74
|
+
|
|
75
|
+
The headline is `qualityWithinBudget`: 1 only for a correct answer whose
|
|
76
|
+
total time fits the deadline, else 0. Totals add model turn time to every
|
|
77
|
+
scheduled tool charge. Turn time is measured wall-clock by default, or the
|
|
78
|
+
declared `thinkMs` (80 ms) per turn when the clock is declared
|
|
79
|
+
(`--clock declared` or `LATENCY_BUDGET_CLOCK=declared`) for repeatable
|
|
80
|
+
runs. A correct answer past the deadline scores 0 on the headline and is
|
|
81
|
+
counted as `lateButCorrect`, so you can tell slowness apart from
|
|
82
|
+
wrongness. Every run report also carries a `latency` block with p50/p95
|
|
83
|
+
total time, the `lateButCorrect` count, and a quality-vs-deadline curve
|
|
84
|
+
at 0.5x, 1x, 2x, and 4x each deadline.
|
|
85
|
+
|
|
86
|
+
Measured mode bills real wall-clock turn time, and the deadlines assume
|
|
87
|
+
about 80 ms of model time per turn (the declared `thinkMs`). A hosted chat
|
|
88
|
+
model that needs a second or more per turn will therefore score near 0 in
|
|
89
|
+
measured mode on voice and UI tasks — that is what the benchmark is
|
|
90
|
+
measuring. For cross-model comparisons where raw speed should not
|
|
91
|
+
dominate, run `--clock declared` so every model is billed the same 80 ms
|
|
92
|
+
per turn.
|
|
93
|
+
|
|
94
|
+
## How it works
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
seeded tasks -> agent tools (lookup, calendar_get, search_docs, describe_tools)
|
|
98
|
+
-> virtual clock (model turn time + scheduled ms per call)
|
|
99
|
+
-> deterministic grader (one candidate + grounded + on time)
|
|
100
|
+
-> CLI / SDK / MCP / HTTP API
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The runner keeps task order and records score, reason, latency, retries,
|
|
104
|
+
usage, and cost when available. Model turn time is billed from the
|
|
105
|
+
environment's wall-clock record; run with a declared clock when results
|
|
106
|
+
must repeat bit for bit across machines.
|
|
107
|
+
|
|
108
|
+
## Why it exists
|
|
109
|
+
|
|
110
|
+
General model leaderboards do not isolate agents behavior under time
|
|
111
|
+
pressure. This package keeps the task data, grading rules, and provenance
|
|
112
|
+
together for inspection.
|
|
113
|
+
|
|
114
|
+
## Compare
|
|
115
|
+
|
|
116
|
+
Checked on 2026-10-16.
|
|
117
|
+
|
|
118
|
+
| Property | benchmark-latency-budget | General chat leaderboard | Ad hoc prompt test |
|
|
119
|
+
| --- | --- | --- | --- |
|
|
120
|
+
| Target | Correct answers inside voice, UI, and background deadlines. | Broad model quality | One local example |
|
|
121
|
+
| Grading | Deterministic code | Varies | Manual |
|
|
122
|
+
| Offline run | Mock provider | Varies | Varies |
|
|
123
|
+
| Provenance | Package record | Varies | Usually absent |
|
|
124
|
+
|
|
125
|
+
## Coverage
|
|
126
|
+
|
|
127
|
+
| Surface | Status |
|
|
128
|
+
| --- | --- |
|
|
129
|
+
| episode tasks | Included (36: 12 voice, 12 UI, 12 background) |
|
|
130
|
+
| SDK | Included |
|
|
131
|
+
| CLI | Included |
|
|
132
|
+
| MCP server | Included |
|
|
133
|
+
| HTTP API | Included |
|
|
134
|
+
|
|
135
|
+
The E2E gate checks every listed surface against the package source.
|
|
136
|
+
|
|
137
|
+
## Deadlines
|
|
138
|
+
|
|
139
|
+
Each task sets `deadlineMs` at 1.5-2x its shortest correct path (declared
|
|
140
|
+
turn time plus scheduled call charges), so slower schedules get wider
|
|
141
|
+
budgets and nothing is loose enough to hide wasted calls. The shipped data
|
|
142
|
+
spans voice 447-641 ms, UI 875-1494 ms, background 2025-3714 ms.
|
|
143
|
+
|
|
144
|
+
| Class | Minimal calls | Deadline range | What burns the budget |
|
|
145
|
+
| --- | --- | --- | --- |
|
|
146
|
+
| voice | 1 | 447-641 ms | A repeat lookup or a wrong first guess |
|
|
147
|
+
| UI | 2 | 875-1494 ms | Redundant searches before the follow-up call |
|
|
148
|
+
| background | 3 | 2025-3714 ms | Long chains of speculative calls |
|
|
149
|
+
|
|
150
|
+
Per-call charges range from 100 ms (voice lookup) to 700 ms (background
|
|
151
|
+
search). Retrying a failed call costs the full charge again, and the
|
|
152
|
+
read-only `describe_tools` audit costs a flat 25 ms.
|
|
153
|
+
|
|
154
|
+
## Common use cases
|
|
155
|
+
|
|
156
|
+
1. **Model developers:** compare adapters with the same seeded tasks.
|
|
157
|
+
2. **Agent developers:** inspect task-level failures before changing prompts.
|
|
158
|
+
3. **Release teams:** run the mock gate before publishing a data update.
|
|
159
|
+
4. **Researchers:** export per-task scores for a reproducible analysis.
|
|
160
|
+
|
|
161
|
+
## Features
|
|
162
|
+
|
|
163
|
+
- **Deterministic grading:** Each row includes a score and reason.
|
|
164
|
+
- **Reproducible data:** A committed seeded script creates the public tasks.
|
|
165
|
+
- **Virtual clock:** Tool time is scheduled and model turns are measured or declared, so runs are fair and can repeat exactly.
|
|
166
|
+
- **Share cards:** The `card` command writes a 1200×630 SVG with the benchmark name, the model, and the score.
|
|
167
|
+
- **Provenance:** Code and Markdown carry the same source record.
|
|
168
|
+
|
|
169
|
+
## SDK
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
import { benchmark, run, score } from "benchmark-latency-budget";
|
|
173
|
+
import { createLatencyBenchmark, latencyReport } from "benchmark-latency-budget";
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
`run(adapter, options)` creates a report with a `latency` summary block.
|
|
177
|
+
`score(taskId, submission)` grades one trace. `totalTimeMs(task, submission)`
|
|
178
|
+
returns the billed total and `sweepDeadlines(task, submission)` returns the
|
|
179
|
+
0.5x–4x curve. `createLatencyBenchmark({ tasksPath, clock })` builds a
|
|
180
|
+
benchmark over a different tasks file or clock mode, and
|
|
181
|
+
`latencyReport(report)` adds the summary to any stored run report.
|
|
182
|
+
|
|
183
|
+
## CLI
|
|
184
|
+
|
|
185
|
+
Commands are `list`, `show`, `run`, `score`, `card`, `provenance`,
|
|
186
|
+
`index-entry`, `serve`, and `mcp`. Pass `--json` for machine-readable output.
|
|
187
|
+
Two flags work on every command: `--tasks <path>` swaps the packaged task set
|
|
188
|
+
for another JSONL file (for example a generated hidden split), and
|
|
189
|
+
`--clock measured|declared` picks measured wall-clock turns or the repeatable
|
|
190
|
+
declared `thinkMs` per turn.
|
|
191
|
+
|
|
192
|
+
## Model Context Protocol
|
|
193
|
+
|
|
194
|
+
Start the MCP stdio server:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
npx benchmark-latency-budget mcp
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Tools are `list_tasks`, `get_task`, `score_answer`, `run_benchmark`, and
|
|
201
|
+
`get_provenance`. `run_benchmark` returns the report with the `latency`
|
|
202
|
+
summary and accepts `provider: "mock"` for offline runs; `score_answer`
|
|
203
|
+
replies with a per-submission `latency` timing block.
|
|
204
|
+
|
|
205
|
+
## HTTP API
|
|
206
|
+
|
|
207
|
+
Import `handler` from `benchmark-latency-budget/api`, or run
|
|
208
|
+
`npx benchmark-latency-budget serve`. Routes are `GET /health`,
|
|
209
|
+
`GET /v1/tasks`, `GET /v1/tasks/:id`, `POST /v1/score`,
|
|
210
|
+
`GET /v1/provenance`, and `GET /v1/index-entry`. `POST /v1/score` returns
|
|
211
|
+
the score plus a `latency` timing block (deadline, billed total, clock
|
|
212
|
+
mode, on-time flag). Server surfaces ignore self-reported measured turn
|
|
213
|
+
times — a caller cannot prove them — so submitted traces are billed at the
|
|
214
|
+
declared rate.
|
|
215
|
+
|
|
216
|
+
## Data provenance
|
|
217
|
+
|
|
218
|
+
`data/tasks.jsonl` contains the 36 public tasks. `data/PROVENANCE.md` names
|
|
219
|
+
the generator, seed, licence, cutoff, and refresh steps. Run
|
|
220
|
+
`npm run generate:tasks` to rebuild the public set and
|
|
221
|
+
`node scripts/gen-tasks.mjs --seed <n> --split hidden` for a hidden split
|
|
222
|
+
(written to gitignored `artifacts/`, never published).
|
|
223
|
+
|
|
224
|
+
## Limits and known weaknesses
|
|
225
|
+
|
|
226
|
+
No public leaderboard yet: only the mock provider has been run here, so the
|
|
227
|
+
sample table above shows mock behavior, not model rankings. Declared mode
|
|
228
|
+
cannot see where turns broke in a flat tool log, so each recorded call is
|
|
229
|
+
billed as its own turn; measured mode fixes that but depends on the machine.
|
|
230
|
+
Synthetic fixtures are small, so agents can look faster than on messy real
|
|
231
|
+
tools. Public tasks can enter training data; keep a separately seeded hidden
|
|
232
|
+
split for final comparisons. Remote providers can add cost and retain
|
|
233
|
+
prompts under their own policies.
|
|
234
|
+
|
|
235
|
+
## Prior art
|
|
236
|
+
|
|
237
|
+
There is no single prior benchmark this copies. The episode simulator
|
|
238
|
+
pattern follows `benchmark-core`'s seeded `OrderLookupEnvironment`, and the
|
|
239
|
+
deadline framing follows the conversational-systems practice of treating a
|
|
240
|
+
late reply as a failure. The difference here is the virtual clock: tool time
|
|
241
|
+
is scheduled per call and model turn time is recorded by the environment or
|
|
242
|
+
declared, so nothing depends on per-call wall-clock jitter.
|
|
243
|
+
|
|
244
|
+
## Integration guides
|
|
245
|
+
|
|
246
|
+
- [TypeScript SDK integration](#sdk)
|
|
247
|
+
- [Model Context Protocol integration](#model-context-protocol)
|
|
248
|
+
- [HTTP API integration](#http-api)
|
|
249
|
+
|
|
250
|
+
## Status
|
|
251
|
+
|
|
252
|
+
Version 0.1.0 is alpha, saturation unknown. Task schemas and grading may
|
|
253
|
+
change before 1.0. Report defects through the GitHub issue tracker. Public
|
|
254
|
+
case studies are not yet published.
|
|
255
|
+
|
|
256
|
+
## FAQ
|
|
257
|
+
|
|
258
|
+
### What does benchmark-latency-budget measure?
|
|
259
|
+
|
|
260
|
+
Whether an agent answers correctly before a voice, UI, or background
|
|
261
|
+
deadline. The committed grader defines the exact pass conditions.
|
|
262
|
+
|
|
263
|
+
### Can benchmark-latency-budget run offline?
|
|
264
|
+
|
|
265
|
+
It runs end to end with the mock provider and no key. Real model runs need
|
|
266
|
+
a configured provider.
|
|
267
|
+
|
|
268
|
+
### Which providers work?
|
|
269
|
+
|
|
270
|
+
OpenRouter, an OpenAI-compatible base URL, and the offline mock adapter
|
|
271
|
+
through benchmark-core.
|
|
272
|
+
|
|
273
|
+
### Does benchmark-latency-budget provide a hosted service?
|
|
274
|
+
|
|
275
|
+
It provides a server you run. It does not provide a managed benchmark
|
|
276
|
+
service.
|
|
277
|
+
|
|
278
|
+
### Where do the tasks come from?
|
|
279
|
+
|
|
280
|
+
Seeded synthetic directory, calendar, and doc fixtures. The provenance file
|
|
281
|
+
explains how to reproduce and refresh them.
|
|
282
|
+
|
|
283
|
+
### How are answers graded?
|
|
284
|
+
|
|
285
|
+
The answer must name exactly one of the task's candidate values
|
|
286
|
+
(case-insensitive, word-bounded) and a replayed tool result must ground it,
|
|
287
|
+
then the total time must fit the deadline. Model judging is off.
|
|
288
|
+
|
|
289
|
+
### How is this different from a general leaderboard?
|
|
290
|
+
|
|
291
|
+
It measures one named behavior with inspectable tasks and grading. General
|
|
292
|
+
leaderboards combine broader capabilities.
|
|
293
|
+
|
|
294
|
+
### Can I use a hidden split?
|
|
295
|
+
|
|
296
|
+
Yes. Generate one with `--split hidden` into `artifacts/` and run it with
|
|
297
|
+
`--tasks artifacts/tasks.hidden.jsonl`. Keep it out of the npm package and
|
|
298
|
+
the public repository.
|
|
299
|
+
|
|
300
|
+
## License
|
|
301
|
+
|
|
302
|
+
[MIT](LICENSE) © Pooria Arab
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Latency Budget provenance
|
|
2
|
+
|
|
3
|
+
This file is generated from the benchmark definition.
|
|
4
|
+
|
|
5
|
+
## Seeded latency-budget task generator
|
|
6
|
+
|
|
7
|
+
- Kind: `synthetic`
|
|
8
|
+
- URL: https://github.com/pooriaarab/benchmark-latency-budget/blob/main/scripts/gen-tasks.mjs
|
|
9
|
+
- Licence: `MIT`
|
|
10
|
+
- Retrieved: 2026-10-15T00:00:00.000Z
|
|
11
|
+
- How to get it: Run `node scripts/gen-tasks.mjs --seed 20261015` for the public tasks, or `node scripts/gen-tasks.mjs --seed <n> --split hidden` for a hidden split (written to gitignored artifacts/ with h- prefixed task ids).
|
|
12
|
+
- Contamination notes: Public tasks generated with seed 20261015, benchmark cutoff 2026-10-15. Public tasks may enter training data; use a separately seeded hidden split for final comparisons.
|
|
13
|
+
- Refresh: Pick a new seed, run the generator, review the JSONL diff. Regenerate quarterly or when saturation is shown.
|
package/data/tasks.jsonl
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{"id":"voice-01","kind":"episode","prompt":"What is the phone extension for Lina Haddad?","expected":"8929","metadata":{"budgetClass":"voice","deadlineMs":641,"thinkMs":80,"latencyMs":{"lookup":220,"calendar_get":176,"search_docs":202},"fixtures":{"directory":{"Lina Haddad":{"extension":"8929","room":"Atrium-1"},"Sofia Marchetti":{"extension":"1196","room":"Atrium-1"},"David Kim":{"extension":"9549","room":"West-3"},"Omar Farouk":{"extension":"7198","room":"Atrium-1"}}},"minimalCalls":[{"name":"lookup","args":{"key":"Lina Haddad"}}],"candidates":["8929","1196","9549","7198"],"seed":20261395}}
|
|
2
|
+
{"id":"voice-02","kind":"episode","prompt":"Which room is Demo Friday on 2026-11-09?","expected":"Garden-A","metadata":{"budgetClass":"voice","deadlineMs":484,"thinkMs":80,"latencyMs":{"lookup":106,"calendar_get":121,"search_docs":207},"fixtures":{"directory":{"Grace Mwangi":{"extension":"7778","room":"Focus-4"},"Sofia Marchetti":{"extension":"2475","room":"North-2"},"Amara Okafor":{"extension":"2688","room":"West-3"},"David Kim":{"extension":"6041","room":"Garden-A"}},"calendar":{"2026-11-09":[{"event":"Demo Friday","room":"Garden-A","organizer":"Grace Mwangi"},{"event":"Release train","room":"1D","organizer":"Sofia Marchetti"}]}},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-09"}}],"candidates":["Garden-A","1D"],"seed":20261296}}
|
|
3
|
+
{"id":"voice-03","kind":"episode","prompt":"What internal doc covers parental leave?","expected":"Parental leave, step by step","metadata":{"budgetClass":"voice","deadlineMs":447,"thinkMs":80,"latencyMs":{"lookup":102,"calendar_get":151,"search_docs":109},"fixtures":{"directory":{"Amara Okafor":{"extension":"7208","room":"Focus-4"},"Lina Haddad":{"extension":"9106","room":"Focus-4"},"Ana Petrova":{"extension":"4400","room":"Atrium-1"},"Tomas Ribeiro":{"extension":"1443","room":"West-3"}},"docs":[{"title":"Parental leave, step by step","topic":"parental leave","author":"Amara Okafor"},{"title":"Ten shortcuts for the editor","topic":"editor shortcuts","author":"Lina Haddad"},{"title":"Where each team sits","topic":"seating plan","author":"Lina Haddad"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"parental leave"}}],"candidates":["Parental leave, step by step","Ten shortcuts for the editor","Where each team sits"],"seed":20261284}}
|
|
4
|
+
{"id":"voice-04","kind":"episode","prompt":"Give me Yuki Tanaka's phone extension.","expected":"5747","metadata":{"budgetClass":"voice","deadlineMs":476,"thinkMs":80,"latencyMs":{"lookup":156,"calendar_get":118,"search_docs":210},"fixtures":{"directory":{"Yuki Tanaka":{"extension":"5747","room":"1D"},"Ana Petrova":{"extension":"9989","room":"Garden-A"},"Grace Mwangi":{"extension":"3594","room":"Atrium-1"},"Ella Novak":{"extension":"8494","room":"3B"}}},"minimalCalls":[{"name":"lookup","args":{"key":"Yuki Tanaka"}}],"candidates":["5747","9989","3594","8494"],"seed":20261331}}
|
|
5
|
+
{"id":"voice-05","kind":"episode","prompt":"Which room is Roadmap sync on 2026-11-10?","expected":"West-3","metadata":{"budgetClass":"voice","deadlineMs":517,"thinkMs":80,"latencyMs":{"lookup":122,"calendar_get":102,"search_docs":188},"fixtures":{"directory":{"David Kim":{"extension":"1247","room":"Atrium-1"},"Grace Mwangi":{"extension":"4988","room":"3B"},"Omar Farouk":{"extension":"6395","room":"Atrium-1"},"Marco Silva":{"extension":"3831","room":"Garden-A"}},"calendar":{"2026-11-10":[{"event":"Roadmap sync","room":"West-3","organizer":"David Kim"},{"event":"Release train","room":"3B","organizer":"Grace Mwangi"}]}},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-10"}}],"candidates":["West-3","3B"],"seed":20261277}}
|
|
6
|
+
{"id":"voice-06","kind":"episode","prompt":"What internal doc covers parental leave?","expected":"Parental leave, step by step","metadata":{"budgetClass":"voice","deadlineMs":579,"thinkMs":80,"latencyMs":{"lookup":114,"calendar_get":139,"search_docs":214},"fixtures":{"directory":{"Yuki Tanaka":{"extension":"3094","room":"2C"},"Amara Okafor":{"extension":"9840","room":"Garden-A"},"Omar Farouk":{"extension":"3245","room":"North-2"},"David Kim":{"extension":"1512","room":"3B"}},"docs":[{"title":"Parental leave, step by step","topic":"parental leave","author":"Yuki Tanaka"},{"title":"Refunds within 14 days","topic":"refund window","author":"Amara Okafor"},{"title":"Where each team sits","topic":"seating plan","author":"Amara Okafor"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"parental leave"}}],"candidates":["Parental leave, step by step","Refunds within 14 days","Where each team sits"],"seed":20261389}}
|
|
7
|
+
{"id":"voice-07","kind":"episode","prompt":"Give me Ravi Menon's phone extension.","expected":"4292","metadata":{"budgetClass":"voice","deadlineMs":619,"thinkMs":80,"latencyMs":{"lookup":197,"calendar_get":146,"search_docs":163},"fixtures":{"directory":{"Ravi Menon":{"extension":"4292","room":"North-2"},"Marco Silva":{"extension":"5312","room":"North-2"},"David Kim":{"extension":"1945","room":"Atrium-1"},"Grace Mwangi":{"extension":"2394","room":"West-3"}}},"minimalCalls":[{"name":"lookup","args":{"key":"Ravi Menon"}}],"candidates":["4292","5312","1945","2394"],"seed":20261372}}
|
|
8
|
+
{"id":"voice-08","kind":"episode","prompt":"Where does Demo Friday take place on 2026-11-03?","expected":"Focus-4","metadata":{"budgetClass":"voice","deadlineMs":488,"thinkMs":80,"latencyMs":{"lookup":164,"calendar_get":123,"search_docs":172},"fixtures":{"directory":{"Priya Nair":{"extension":"7888","room":"West-3"},"Sofia Marchetti":{"extension":"2382","room":"Focus-4"},"Jonas Lindqvist":{"extension":"1333","room":"1D"},"Fatima Diallo":{"extension":"9373","room":"West-3"}},"calendar":{"2026-11-03":[{"event":"Demo Friday","room":"Focus-4","organizer":"Priya Nair"},{"event":"Sprint review","room":"West-3","organizer":"Sofia Marchetti"}]}},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-03"}}],"candidates":["Focus-4","West-3"],"seed":20261298}}
|
|
9
|
+
{"id":"voice-09","kind":"episode","prompt":"What internal doc covers expense policy?","expected":"Expensing travel the simple way","metadata":{"budgetClass":"voice","deadlineMs":488,"thinkMs":80,"latencyMs":{"lookup":115,"calendar_get":187,"search_docs":131},"fixtures":{"directory":{"Amara Okafor":{"extension":"9110","room":"West-3"},"David Kim":{"extension":"2811","room":"3B"},"Yuki Tanaka":{"extension":"7127","room":"2C"},"Tomas Ribeiro":{"extension":"6577","room":"2C"}},"docs":[{"title":"Expensing travel the simple way","topic":"expense policy","author":"Amara Okafor"},{"title":"Parental leave, step by step","topic":"parental leave","author":"David Kim"},{"title":"Refunds within 14 days","topic":"refund window","author":"David Kim"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"expense policy"}}],"candidates":["Expensing travel the simple way","Parental leave, step by step","Refunds within 14 days"],"seed":20261306}}
|
|
10
|
+
{"id":"voice-10","kind":"episode","prompt":"Give me Sofia Marchetti's phone extension.","expected":"5040","metadata":{"budgetClass":"voice","deadlineMs":536,"thinkMs":80,"latencyMs":{"lookup":188,"calendar_get":104,"search_docs":180},"fixtures":{"directory":{"Sofia Marchetti":{"extension":"5040","room":"West-3"},"Fatima Diallo":{"extension":"5537","room":"2C"},"Amara Okafor":{"extension":"5363","room":"1D"},"Marco Silva":{"extension":"3288","room":"Atrium-1"}}},"minimalCalls":[{"name":"lookup","args":{"key":"Sofia Marchetti"}}],"candidates":["5040","5537","5363","3288"],"seed":20261363}}
|
|
11
|
+
{"id":"voice-11","kind":"episode","prompt":"Where does Onboarding take place on 2026-11-09?","expected":"West-3","metadata":{"budgetClass":"voice","deadlineMs":544,"thinkMs":80,"latencyMs":{"lookup":124,"calendar_get":198,"search_docs":206},"fixtures":{"directory":{"Marco Silva":{"extension":"2401","room":"Atrium-1"},"Yuki Tanaka":{"extension":"6430","room":"West-3"},"Sofia Marchetti":{"extension":"1424","room":"West-3"},"Grace Mwangi":{"extension":"1225","room":"Garden-A"}},"calendar":{"2026-11-09":[{"event":"Onboarding","room":"West-3","organizer":"Marco Silva"},{"event":"Demo Friday","room":"Focus-4","organizer":"Yuki Tanaka"}]}},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-09"}}],"candidates":["West-3","Focus-4"],"seed":20261373}}
|
|
12
|
+
{"id":"voice-12","kind":"episode","prompt":"Which internal doc explains data retention?","expected":"Keeping customer data for 30 days","metadata":{"budgetClass":"voice","deadlineMs":625,"thinkMs":80,"latencyMs":{"lookup":105,"calendar_get":176,"search_docs":219},"fixtures":{"directory":{"Ravi Menon":{"extension":"3802","room":"1D"},"Fatima Diallo":{"extension":"2164","room":"3B"},"Sofia Marchetti":{"extension":"7996","room":"1D"},"Ella Novak":{"extension":"2209","room":"1D"}},"docs":[{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Ravi Menon"},{"title":"Parental leave, step by step","topic":"parental leave","author":"Fatima Diallo"},{"title":"Who to page when prod is down","topic":"incident response","author":"Fatima Diallo"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"data retention"}}],"candidates":["Keeping customer data for 30 days","Parental leave, step by step","Who to page when prod is down"],"seed":20261394}}
|
|
13
|
+
{"id":"ui-01","kind":"episode","prompt":"Who organizes Onboarding on 2026-11-06, and what is their extension?","expected":"1266","metadata":{"budgetClass":"ui","deadlineMs":1316,"thinkMs":80,"latencyMs":{"lookup":211,"calendar_get":249,"search_docs":285},"fixtures":{"directory":{"David Kim":{"extension":"1266","room":"West-3"},"Marco Silva":{"extension":"3310","room":"North-2"},"Priya Nair":{"extension":"9542","room":"Focus-4"},"Tomas Ribeiro":{"extension":"4706","room":"Garden-A"},"Ella Novak":{"extension":"9239","room":"Garden-A"}},"calendar":{"2026-11-06":[{"event":"Onboarding","room":"2C","organizer":"David Kim"},{"event":"Support handoff","room":"3B","organizer":"Marco Silva"}]}},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-06"}},{"name":"lookup","args":{"key":"David Kim"}}],"candidates":["1266","3310","9542","4706","9239"],"seed":20261715}}
|
|
14
|
+
{"id":"ui-02","kind":"episode","prompt":"What is the phone extension of the author of the doc about vpn setup?","expected":"2662","metadata":{"budgetClass":"ui","deadlineMs":1342,"thinkMs":80,"latencyMs":{"lookup":243,"calendar_get":261,"search_docs":255},"fixtures":{"directory":{"Tomas Ribeiro":{"extension":"2662","room":"West-3"},"Lina Haddad":{"extension":"2518","room":"3B"},"Grace Mwangi":{"extension":"4649","room":"1D"},"Ravi Menon":{"extension":"6593","room":"3B"},"Marco Silva":{"extension":"9973","room":"Atrium-1"}},"docs":[{"title":"Connect to the office VPN","topic":"vpn setup","author":"Tomas Ribeiro"},{"title":"Who to page when prod is down","topic":"incident response","author":"Lina Haddad"},{"title":"Expensing travel the simple way","topic":"expense policy","author":"Grace Mwangi"},{"title":"Parental leave, step by step","topic":"parental leave","author":"Ravi Menon"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"vpn setup"}},{"name":"lookup","args":{"key":"Tomas Ribeiro"}}],"candidates":["2662","2518","4649","6593","9973"],"seed":20261753}}
|
|
15
|
+
{"id":"ui-03","kind":"episode","prompt":"What is the phone extension of the organizer of Sprint review on 2026-11-11?","expected":"5181","metadata":{"budgetClass":"ui","deadlineMs":1494,"thinkMs":80,"latencyMs":{"lookup":246,"calendar_get":308,"search_docs":194},"fixtures":{"directory":{"Amara Okafor":{"extension":"5181","room":"Garden-A"},"Jonas Lindqvist":{"extension":"2517","room":"2C"},"Ella Novak":{"extension":"1853","room":"North-2"},"Kenji Sato":{"extension":"1622","room":"3B"},"Omar Farouk":{"extension":"5971","room":"1D"}},"calendar":{"2026-11-11":[{"event":"Sprint review","room":"3B","organizer":"Amara Okafor"},{"event":"Support handoff","room":"Garden-A","organizer":"Jonas Lindqvist"}]}},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-11"}},{"name":"lookup","args":{"key":"Amara Okafor"}}],"candidates":["5181","2517","1853","1622","5971"],"seed":20261809}}
|
|
16
|
+
{"id":"ui-04","kind":"episode","prompt":"What extension does the author of the doc on editor shortcuts have?","expected":"8030","metadata":{"budgetClass":"ui","deadlineMs":1341,"thinkMs":80,"latencyMs":{"lookup":245,"calendar_get":257,"search_docs":314},"fixtures":{"directory":{"Omar Farouk":{"extension":"8030","room":"Atrium-1"},"Ana Petrova":{"extension":"9942","room":"3B"},"Yuki Tanaka":{"extension":"2814","room":"Garden-A"},"Ravi Menon":{"extension":"3104","room":"2C"},"Priya Nair":{"extension":"4677","room":"West-3"}},"docs":[{"title":"Ten shortcuts for the editor","topic":"editor shortcuts","author":"Omar Farouk"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Ana Petrova"},{"title":"Parental leave, step by step","topic":"parental leave","author":"Yuki Tanaka"},{"title":"Who to page when prod is down","topic":"incident response","author":"Ravi Menon"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"editor shortcuts"}},{"name":"lookup","args":{"key":"Omar Farouk"}}],"candidates":["8030","9942","2814","3104","4677"],"seed":20261814}}
|
|
17
|
+
{"id":"ui-05","kind":"episode","prompt":"Extension of the organizer for Design crit on 2026-11-05?","expected":"7295","metadata":{"budgetClass":"ui","deadlineMs":938,"thinkMs":80,"latencyMs":{"lookup":140,"calendar_get":159,"search_docs":325},"fixtures":{"directory":{"Omar Farouk":{"extension":"7295","room":"North-2"},"Lina Haddad":{"extension":"9044","room":"3B"},"Tomas Ribeiro":{"extension":"8311","room":"Focus-4"},"Ana Petrova":{"extension":"5214","room":"North-2"},"Kenji Sato":{"extension":"5035","room":"1D"}},"calendar":{"2026-11-05":[{"event":"Design crit","room":"North-2","organizer":"Omar Farouk"},{"event":"Support handoff","room":"Focus-4","organizer":"Lina Haddad"}]}},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-05"}},{"name":"lookup","args":{"key":"Omar Farouk"}}],"candidates":["7295","9044","8311","5214","5035"],"seed":20261554}}
|
|
18
|
+
{"id":"ui-06","kind":"episode","prompt":"What extension does the author of the doc on vpn setup have?","expected":"9013","metadata":{"budgetClass":"ui","deadlineMs":1475,"thinkMs":80,"latencyMs":{"lookup":269,"calendar_get":314,"search_docs":341},"fixtures":{"directory":{"Omar Farouk":{"extension":"9013","room":"Focus-4"},"Ana Petrova":{"extension":"5344","room":"West-3"},"Lina Haddad":{"extension":"3785","room":"Atrium-1"},"Yuki Tanaka":{"extension":"3368","room":"3B"},"Amara Okafor":{"extension":"4626","room":"Garden-A"}},"docs":[{"title":"Connect to the office VPN","topic":"vpn setup","author":"Omar Farouk"},{"title":"Who to page when prod is down","topic":"incident response","author":"Ana Petrova"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Lina Haddad"},{"title":"Where each team sits","topic":"seating plan","author":"Yuki Tanaka"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"vpn setup"}},{"name":"lookup","args":{"key":"Omar Farouk"}}],"candidates":["9013","5344","3785","3368","4626"],"seed":20261865}}
|
|
19
|
+
{"id":"ui-07","kind":"episode","prompt":"What is the phone extension of the organizer of Roadmap sync on 2026-11-02?","expected":"1660","metadata":{"budgetClass":"ui","deadlineMs":1396,"thinkMs":80,"latencyMs":{"lookup":239,"calendar_get":275,"search_docs":240},"fixtures":{"directory":{"Marco Silva":{"extension":"1660","room":"1D"},"Priya Nair":{"extension":"8499","room":"1D"},"Kenji Sato":{"extension":"2413","room":"3B"},"Sofia Marchetti":{"extension":"7259","room":"2C"},"Ana Petrova":{"extension":"1763","room":"Focus-4"}},"calendar":{"2026-11-02":[{"event":"Roadmap sync","room":"Atrium-1","organizer":"Marco Silva"},{"event":"Retro","room":"3B","organizer":"Priya Nair"}]}},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-02"}},{"name":"lookup","args":{"key":"Marco Silva"}}],"candidates":["1660","8499","2413","7259","1763"],"seed":20261769}}
|
|
20
|
+
{"id":"ui-08","kind":"episode","prompt":"Who wrote the doc about parental leave, and what is their extension?","expected":"9594","metadata":{"budgetClass":"ui","deadlineMs":1439,"thinkMs":80,"latencyMs":{"lookup":292,"calendar_get":246,"search_docs":359},"fixtures":{"directory":{"Priya Nair":{"extension":"9594","room":"Atrium-1"},"Grace Mwangi":{"extension":"7922","room":"Atrium-1"},"Jonas Lindqvist":{"extension":"4334","room":"Focus-4"},"Lina Haddad":{"extension":"7324","room":"1D"},"Ella Novak":{"extension":"7817","room":"2C"}},"docs":[{"title":"Parental leave, step by step","topic":"parental leave","author":"Priya Nair"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Grace Mwangi"},{"title":"Refunds within 14 days","topic":"refund window","author":"Jonas Lindqvist"},{"title":"Connect to the office VPN","topic":"vpn setup","author":"Lina Haddad"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"parental leave"}},{"name":"lookup","args":{"key":"Priya Nair"}}],"candidates":["9594","7922","4334","7324","7817"],"seed":20261906}}
|
|
21
|
+
{"id":"ui-09","kind":"episode","prompt":"Who organizes Sprint review on 2026-11-12, and what is their extension?","expected":"6017","metadata":{"budgetClass":"ui","deadlineMs":1244,"thinkMs":80,"latencyMs":{"lookup":286,"calendar_get":187,"search_docs":319},"fixtures":{"directory":{"Fatima Diallo":{"extension":"6017","room":"3B"},"David Kim":{"extension":"5238","room":"North-2"},"Ella Novak":{"extension":"9856","room":"3B"},"Tomas Ribeiro":{"extension":"7970","room":"2C"},"Ana Petrova":{"extension":"3179","room":"2C"}},"calendar":{"2026-11-12":[{"event":"Sprint review","room":"Garden-A","organizer":"Fatima Diallo"},{"event":"Sprint review","room":"Garden-A","organizer":"David Kim"}]}},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-12"}},{"name":"lookup","args":{"key":"Fatima Diallo"}}],"candidates":["6017","5238","9856","7970","3179"],"seed":20261728}}
|
|
22
|
+
{"id":"ui-10","kind":"episode","prompt":"What extension does the author of the doc on seating plan have?","expected":"4532","metadata":{"budgetClass":"ui","deadlineMs":875,"thinkMs":80,"latencyMs":{"lookup":159,"calendar_get":215,"search_docs":181},"fixtures":{"directory":{"Marco Silva":{"extension":"4532","room":"West-3"},"Sofia Marchetti":{"extension":"6640","room":"3B"},"Priya Nair":{"extension":"1403","room":"3B"},"Ravi Menon":{"extension":"6378","room":"3B"},"Ella Novak":{"extension":"7344","room":"1D"}},"docs":[{"title":"Where each team sits","topic":"seating plan","author":"Marco Silva"},{"title":"Expensing travel the simple way","topic":"expense policy","author":"Sofia Marchetti"},{"title":"Parental leave, step by step","topic":"parental leave","author":"Priya Nair"},{"title":"Who to page when prod is down","topic":"incident response","author":"Ravi Menon"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"seating plan"}},{"name":"lookup","args":{"key":"Marco Silva"}}],"candidates":["4532","6640","1403","6378","7344"],"seed":20261595}}
|
|
23
|
+
{"id":"ui-11","kind":"episode","prompt":"Who organizes Onboarding on 2026-11-04, and what is their extension?","expected":"7666","metadata":{"budgetClass":"ui","deadlineMs":1129,"thinkMs":80,"latencyMs":{"lookup":182,"calendar_get":167,"search_docs":265},"fixtures":{"directory":{"Amara Okafor":{"extension":"7666","room":"Focus-4"},"David Kim":{"extension":"5885","room":"Atrium-1"},"Sofia Marchetti":{"extension":"9879","room":"2C"},"Marco Silva":{"extension":"4579","room":"Atrium-1"},"Ana Petrova":{"extension":"8225","room":"Atrium-1"}},"calendar":{"2026-11-04":[{"event":"Onboarding","room":"Atrium-1","organizer":"Amara Okafor"},{"event":"Onboarding","room":"2C","organizer":"David Kim"}]}},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-04"}},{"name":"lookup","args":{"key":"Amara Okafor"}}],"candidates":["7666","5885","9879","4579","8225"],"seed":20261604}}
|
|
24
|
+
{"id":"ui-12","kind":"episode","prompt":"What extension does the author of the doc on data retention have?","expected":"4055","metadata":{"budgetClass":"ui","deadlineMs":1036,"thinkMs":80,"latencyMs":{"lookup":214,"calendar_get":161,"search_docs":214},"fixtures":{"directory":{"Priya Nair":{"extension":"4055","room":"West-3"},"Yuki Tanaka":{"extension":"3883","room":"1D"},"Kenji Sato":{"extension":"1212","room":"Garden-A"},"Sofia Marchetti":{"extension":"5327","room":"West-3"},"Ravi Menon":{"extension":"5357","room":"1D"}},"docs":[{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Priya Nair"},{"title":"Where each team sits","topic":"seating plan","author":"Yuki Tanaka"},{"title":"Expensing travel the simple way","topic":"expense policy","author":"Kenji Sato"},{"title":"Ten shortcuts for the editor","topic":"editor shortcuts","author":"Sofia Marchetti"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"data retention"}},{"name":"lookup","args":{"key":"Priya Nair"}}],"candidates":["4055","3883","1212","5327","5357"],"seed":20261683}}
|
|
25
|
+
{"id":"bg-01","kind":"episode","prompt":"Find the internal doc covering Roadmap sync on 2026-11-04; what extension does its author have?","expected":"8751","metadata":{"budgetClass":"background","deadlineMs":3446,"thinkMs":80,"latencyMs":{"lookup":660,"calendar_get":493,"search_docs":615},"fixtures":{"directory":{"Ella Novak":{"extension":"8751","room":"Atrium-1"},"Ravi Menon":{"extension":"2293","room":"1D"},"Priya Nair":{"extension":"5114","room":"North-2"},"Ana Petrova":{"extension":"2495","room":"2C"},"Grace Mwangi":{"extension":"9915","room":"3B"},"Yuki Tanaka":{"extension":"4887","room":"Garden-A"}},"calendar":{"2026-11-04":[{"event":"Roadmap sync","room":"Atrium-1","organizer":"Ravi Menon","topic":"parental leave"}]},"docs":[{"title":"Parental leave, step by step","topic":"parental leave","author":"Ella Novak"},{"title":"Refunds within 14 days","topic":"refund window","author":"Ravi Menon"},{"title":"Ten shortcuts for the editor","topic":"editor shortcuts","author":"Priya Nair"},{"title":"Expensing travel the simple way","topic":"expense policy","author":"Ana Petrova"},{"title":"Who to page when prod is down","topic":"incident response","author":"Grace Mwangi"}]},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-04"}},{"name":"search_docs","args":{"query":"parental leave"}},{"name":"lookup","args":{"key":"Ella Novak"}}],"candidates":["8751","2293","5114","2495","9915","4887"],"seed":20263103}}
|
|
26
|
+
{"id":"bg-02","kind":"episode","prompt":"A doc about vpn setup mentions an event. What is the phone extension of that event's organizer?","expected":"9366","metadata":{"budgetClass":"background","deadlineMs":2644,"thinkMs":80,"latencyMs":{"lookup":466,"calendar_get":275,"search_docs":599},"fixtures":{"directory":{"David Kim":{"extension":"9366","room":"1D"},"Kenji Sato":{"extension":"1742","room":"West-3"},"Ana Petrova":{"extension":"6007","room":"3B"},"Yuki Tanaka":{"extension":"7712","room":"Garden-A"},"Amara Okafor":{"extension":"7969","room":"Focus-4"},"Marco Silva":{"extension":"4085","room":"Atrium-1"}},"calendar":{"2026-11-12":[{"event":"Release train","room":"2C","organizer":"David Kim"}]},"docs":[{"title":"Connect to the office VPN","topic":"vpn setup","author":"Kenji Sato","event":"Release train","date":"2026-11-12"},{"title":"Ten shortcuts for the editor","topic":"editor shortcuts","author":"Ana Petrova"},{"title":"Refunds within 14 days","topic":"refund window","author":"Yuki Tanaka"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Amara Okafor"},{"title":"Who to page when prod is down","topic":"incident response","author":"Marco Silva"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"vpn setup"}},{"name":"calendar_get","args":{"date":"2026-11-12"}},{"name":"lookup","args":{"key":"David Kim"}}],"candidates":["9366","1742","6007","7712","7969","4085"],"seed":20262675}}
|
|
27
|
+
{"id":"bg-03","kind":"episode","prompt":"The internal doc on Sprint review for 2026-11-02 has an author. What is their extension?","expected":"7214","metadata":{"budgetClass":"background","deadlineMs":3194,"thinkMs":80,"latencyMs":{"lookup":604,"calendar_get":352,"search_docs":660},"fixtures":{"directory":{"Priya Nair":{"extension":"7214","room":"2C"},"Ella Novak":{"extension":"2303","room":"West-3"},"Fatima Diallo":{"extension":"9946","room":"West-3"},"Kenji Sato":{"extension":"6705","room":"3B"},"David Kim":{"extension":"3324","room":"West-3"},"Tomas Ribeiro":{"extension":"3774","room":"Garden-A"}},"calendar":{"2026-11-02":[{"event":"Sprint review","room":"3B","organizer":"Ella Novak","topic":"incident response"}]},"docs":[{"title":"Who to page when prod is down","topic":"incident response","author":"Priya Nair"},{"title":"Where each team sits","topic":"seating plan","author":"Ella Novak"},{"title":"Refunds within 14 days","topic":"refund window","author":"Fatima Diallo"},{"title":"Expensing travel the simple way","topic":"expense policy","author":"Kenji Sato"},{"title":"Parental leave, step by step","topic":"parental leave","author":"David Kim"}]},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-02"}},{"name":"search_docs","args":{"query":"incident response"}},{"name":"lookup","args":{"key":"Priya Nair"}}],"candidates":["7214","2303","9946","6705","3324","3774"],"seed":20262951}}
|
|
28
|
+
{"id":"bg-04","kind":"episode","prompt":"A doc about vpn setup mentions an event. What is the phone extension of that event's organizer?","expected":"3734","metadata":{"budgetClass":"background","deadlineMs":2991,"thinkMs":80,"latencyMs":{"lookup":493,"calendar_get":608,"search_docs":295},"fixtures":{"directory":{"Jonas Lindqvist":{"extension":"3734","room":"2C"},"Ella Novak":{"extension":"8869","room":"3B"},"Ravi Menon":{"extension":"4808","room":"2C"},"Yuki Tanaka":{"extension":"4756","room":"1D"},"Omar Farouk":{"extension":"5119","room":"2C"},"Tomas Ribeiro":{"extension":"4530","room":"North-2"}},"calendar":{"2026-11-04":[{"event":"Roadmap sync","room":"Garden-A","organizer":"Jonas Lindqvist"}]},"docs":[{"title":"Connect to the office VPN","topic":"vpn setup","author":"Ella Novak","event":"Roadmap sync","date":"2026-11-04"},{"title":"Expensing travel the simple way","topic":"expense policy","author":"Ravi Menon"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Yuki Tanaka"},{"title":"Parental leave, step by step","topic":"parental leave","author":"Omar Farouk"},{"title":"Where each team sits","topic":"seating plan","author":"Tomas Ribeiro"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"vpn setup"}},{"name":"calendar_get","args":{"date":"2026-11-04"}},{"name":"lookup","args":{"key":"Jonas Lindqvist"}}],"candidates":["3734","8869","4808","4756","5119","4530"],"seed":20262731}}
|
|
29
|
+
{"id":"bg-05","kind":"episode","prompt":"The internal doc on Design crit for 2026-11-06 has an author. What is their extension?","expected":"4320","metadata":{"budgetClass":"background","deadlineMs":3589,"thinkMs":80,"latencyMs":{"lookup":638,"calendar_get":513,"search_docs":658},"fixtures":{"directory":{"Kenji Sato":{"extension":"4320","room":"2C"},"Grace Mwangi":{"extension":"4496","room":"Focus-4"},"David Kim":{"extension":"7927","room":"Garden-A"},"Marco Silva":{"extension":"7650","room":"1D"},"Tomas Ribeiro":{"extension":"5400","room":"Garden-A"},"Jonas Lindqvist":{"extension":"3954","room":"Atrium-1"}},"calendar":{"2026-11-06":[{"event":"Design crit","room":"Atrium-1","organizer":"Grace Mwangi","topic":"data retention"}]},"docs":[{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Kenji Sato"},{"title":"Where each team sits","topic":"seating plan","author":"Grace Mwangi"},{"title":"Connect to the office VPN","topic":"vpn setup","author":"David Kim"},{"title":"Refunds within 14 days","topic":"refund window","author":"Marco Silva"},{"title":"Ten shortcuts for the editor","topic":"editor shortcuts","author":"Tomas Ribeiro"}]},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-06"}},{"name":"search_docs","args":{"query":"data retention"}},{"name":"lookup","args":{"key":"Kenji Sato"}}],"candidates":["4320","4496","7927","7650","5400","3954"],"seed":20263144}}
|
|
30
|
+
{"id":"bg-06","kind":"episode","prompt":"The doc on vpn setup names an event. What extension does its organizer have?","expected":"3488","metadata":{"budgetClass":"background","deadlineMs":3283,"thinkMs":80,"latencyMs":{"lookup":600,"calendar_get":508,"search_docs":602},"fixtures":{"directory":{"Marco Silva":{"extension":"3488","room":"Atrium-1"},"David Kim":{"extension":"1277","room":"West-3"},"Ella Novak":{"extension":"7560","room":"North-2"},"Amara Okafor":{"extension":"8306","room":"1D"},"Grace Mwangi":{"extension":"2593","room":"Focus-4"},"Omar Farouk":{"extension":"4143","room":"Focus-4"}},"calendar":{"2026-11-13":[{"event":"Support handoff","room":"Atrium-1","organizer":"Marco Silva"}]},"docs":[{"title":"Connect to the office VPN","topic":"vpn setup","author":"David Kim","event":"Support handoff","date":"2026-11-13"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Ella Novak"},{"title":"Refunds within 14 days","topic":"refund window","author":"Amara Okafor"},{"title":"Parental leave, step by step","topic":"parental leave","author":"Grace Mwangi"},{"title":"Ten shortcuts for the editor","topic":"editor shortcuts","author":"Omar Farouk"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"vpn setup"}},{"name":"calendar_get","args":{"date":"2026-11-13"}},{"name":"lookup","args":{"key":"Marco Silva"}}],"candidates":["3488","1277","7560","8306","2593","4143"],"seed":20263045}}
|
|
31
|
+
{"id":"bg-07","kind":"episode","prompt":"Find the internal doc covering Roadmap sync on 2026-11-09; what extension does its author have?","expected":"2253","metadata":{"budgetClass":"background","deadlineMs":2553,"thinkMs":80,"latencyMs":{"lookup":366,"calendar_get":641,"search_docs":293},"fixtures":{"directory":{"Grace Mwangi":{"extension":"2253","room":"North-2"},"Sofia Marchetti":{"extension":"5927","room":"North-2"},"Priya Nair":{"extension":"2524","room":"North-2"},"David Kim":{"extension":"2314","room":"2C"},"Lina Haddad":{"extension":"3363","room":"2C"},"Jonas Lindqvist":{"extension":"6368","room":"Atrium-1"}},"calendar":{"2026-11-09":[{"event":"Roadmap sync","room":"3B","organizer":"Sofia Marchetti","topic":"incident response"}]},"docs":[{"title":"Who to page when prod is down","topic":"incident response","author":"Grace Mwangi"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Sofia Marchetti"},{"title":"Where each team sits","topic":"seating plan","author":"Priya Nair"},{"title":"Connect to the office VPN","topic":"vpn setup","author":"David Kim"},{"title":"Refunds within 14 days","topic":"refund window","author":"Lina Haddad"}]},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-09"}},{"name":"search_docs","args":{"query":"incident response"}},{"name":"lookup","args":{"key":"Grace Mwangi"}}],"candidates":["2253","5927","2524","2314","3363","6368"],"seed":20262635}}
|
|
32
|
+
{"id":"bg-08","kind":"episode","prompt":"Read the doc about parental leave and give me the extension of the organizer of the event it mentions.","expected":"5055","metadata":{"budgetClass":"background","deadlineMs":2606,"thinkMs":80,"latencyMs":{"lookup":415,"calendar_get":531,"search_docs":263},"fixtures":{"directory":{"Grace Mwangi":{"extension":"5055","room":"North-2"},"Jonas Lindqvist":{"extension":"7862","room":"1D"},"Kenji Sato":{"extension":"1601","room":"Focus-4"},"Lina Haddad":{"extension":"9378","room":"2C"},"Amara Okafor":{"extension":"3632","room":"Garden-A"},"Ana Petrova":{"extension":"1714","room":"1D"}},"calendar":{"2026-11-09":[{"event":"Sprint review","room":"West-3","organizer":"Grace Mwangi"}]},"docs":[{"title":"Parental leave, step by step","topic":"parental leave","author":"Jonas Lindqvist","event":"Sprint review","date":"2026-11-09"},{"title":"Refunds within 14 days","topic":"refund window","author":"Kenji Sato"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Lina Haddad"},{"title":"Who to page when prod is down","topic":"incident response","author":"Amara Okafor"},{"title":"Connect to the office VPN","topic":"vpn setup","author":"Ana Petrova"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"parental leave"}},{"name":"calendar_get","args":{"date":"2026-11-09"}},{"name":"lookup","args":{"key":"Grace Mwangi"}}],"candidates":["5055","7862","1601","9378","3632","1714"],"seed":20262544}}
|
|
33
|
+
{"id":"bg-09","kind":"episode","prompt":"Find the internal doc covering Demo Friday on 2026-11-02; what extension does its author have?","expected":"1111","metadata":{"budgetClass":"background","deadlineMs":3714,"thinkMs":80,"latencyMs":{"lookup":459,"calendar_get":694,"search_docs":676},"fixtures":{"directory":{"Grace Mwangi":{"extension":"1111","room":"Garden-A"},"Omar Farouk":{"extension":"5932","room":"Atrium-1"},"Sofia Marchetti":{"extension":"8536","room":"Focus-4"},"Yuki Tanaka":{"extension":"6542","room":"Atrium-1"},"Ella Novak":{"extension":"3877","room":"West-3"},"Fatima Diallo":{"extension":"2253","room":"Garden-A"}},"calendar":{"2026-11-02":[{"event":"Demo Friday","room":"3B","organizer":"Omar Farouk","topic":"refund window"}]},"docs":[{"title":"Refunds within 14 days","topic":"refund window","author":"Grace Mwangi"},{"title":"Ten shortcuts for the editor","topic":"editor shortcuts","author":"Omar Farouk"},{"title":"Connect to the office VPN","topic":"vpn setup","author":"Sofia Marchetti"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Yuki Tanaka"},{"title":"Where each team sits","topic":"seating plan","author":"Ella Novak"}]},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-02"}},{"name":"search_docs","args":{"query":"refund window"}},{"name":"lookup","args":{"key":"Grace Mwangi"}}],"candidates":["1111","5932","8536","6542","3877","2253"],"seed":20263164}}
|
|
34
|
+
{"id":"bg-10","kind":"episode","prompt":"Read the doc about incident response and give me the extension of the organizer of the event it mentions.","expected":"3903","metadata":{"budgetClass":"background","deadlineMs":2025,"thinkMs":80,"latencyMs":{"lookup":270,"calendar_get":458,"search_docs":279},"fixtures":{"directory":{"Jonas Lindqvist":{"extension":"3903","room":"Atrium-1"},"Omar Farouk":{"extension":"2713","room":"2C"},"Yuki Tanaka":{"extension":"5153","room":"1D"},"Priya Nair":{"extension":"7887","room":"2C"},"Kenji Sato":{"extension":"7610","room":"3B"},"Tomas Ribeiro":{"extension":"3129","room":"1D"}},"calendar":{"2026-11-03":[{"event":"Sprint review","room":"2C","organizer":"Jonas Lindqvist"}]},"docs":[{"title":"Who to page when prod is down","topic":"incident response","author":"Omar Farouk","event":"Sprint review","date":"2026-11-03"},{"title":"Parental leave, step by step","topic":"parental leave","author":"Yuki Tanaka"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Priya Nair"},{"title":"Ten shortcuts for the editor","topic":"editor shortcuts","author":"Kenji Sato"},{"title":"Connect to the office VPN","topic":"vpn setup","author":"Tomas Ribeiro"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"incident response"}},{"name":"calendar_get","args":{"date":"2026-11-03"}},{"name":"lookup","args":{"key":"Jonas Lindqvist"}}],"candidates":["3903","2713","5153","7887","7610","3129"],"seed":20262342}}
|
|
35
|
+
{"id":"bg-11","kind":"episode","prompt":"What is the phone extension of the author of the internal doc covering the topic of Sprint review on 2026-11-03?","expected":"9967","metadata":{"budgetClass":"background","deadlineMs":3070,"thinkMs":80,"latencyMs":{"lookup":518,"calendar_get":335,"search_docs":637},"fixtures":{"directory":{"Marco Silva":{"extension":"9967","room":"2C"},"Ravi Menon":{"extension":"5377","room":"2C"},"Fatima Diallo":{"extension":"3773","room":"Garden-A"},"Ella Novak":{"extension":"5883","room":"West-3"},"Priya Nair":{"extension":"6786","room":"1D"},"Grace Mwangi":{"extension":"3887","room":"Atrium-1"}},"calendar":{"2026-11-03":[{"event":"Sprint review","room":"1D","organizer":"Ravi Menon","topic":"vpn setup"}]},"docs":[{"title":"Connect to the office VPN","topic":"vpn setup","author":"Marco Silva"},{"title":"Refunds within 14 days","topic":"refund window","author":"Ravi Menon"},{"title":"Ten shortcuts for the editor","topic":"editor shortcuts","author":"Fatima Diallo"},{"title":"Where each team sits","topic":"seating plan","author":"Ella Novak"},{"title":"Expensing travel the simple way","topic":"expense policy","author":"Priya Nair"}]},"minimalCalls":[{"name":"calendar_get","args":{"date":"2026-11-03"}},{"name":"search_docs","args":{"query":"vpn setup"}},{"name":"lookup","args":{"key":"Marco Silva"}}],"candidates":["9967","5377","3773","5883","6786","3887"],"seed":20262825}}
|
|
36
|
+
{"id":"bg-12","kind":"episode","prompt":"A doc about parental leave mentions an event. What is the phone extension of that event's organizer?","expected":"8843","metadata":{"budgetClass":"background","deadlineMs":3476,"thinkMs":80,"latencyMs":{"lookup":546,"calendar_get":588,"search_docs":635},"fixtures":{"directory":{"David Kim":{"extension":"8843","room":"West-3"},"Ella Novak":{"extension":"1641","room":"Atrium-1"},"Omar Farouk":{"extension":"7356","room":"Atrium-1"},"Lina Haddad":{"extension":"6821","room":"Garden-A"},"Ana Petrova":{"extension":"8391","room":"3B"},"Ravi Menon":{"extension":"9405","room":"Focus-4"}},"calendar":{"2026-11-11":[{"event":"Design crit","room":"2C","organizer":"David Kim"}]},"docs":[{"title":"Parental leave, step by step","topic":"parental leave","author":"Ella Novak","event":"Design crit","date":"2026-11-11"},{"title":"Keeping customer data for 30 days","topic":"data retention","author":"Omar Farouk"},{"title":"Where each team sits","topic":"seating plan","author":"Lina Haddad"},{"title":"Refunds within 14 days","topic":"refund window","author":"Ana Petrova"},{"title":"Expensing travel the simple way","topic":"expense policy","author":"Ravi Menon"}]},"minimalCalls":[{"name":"search_docs","args":{"query":"parental leave"}},{"name":"calendar_get","args":{"date":"2026-11-11"}},{"name":"lookup","args":{"key":"David Kim"}}],"candidates":["8843","1641","7356","6821","8391","9405"],"seed":20263104}}
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Benchmark, Task } from 'benchmark-core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Fetch-style handler over the core routes. For `POST /v1/score` the
|
|
5
|
+
* submission's self-reported measured clock is stripped before grading (a
|
|
6
|
+
* caller cannot prove its wall-clock turn times) and the response gains a
|
|
7
|
+
* `latency` timing block: deadlineMs, totalTimeMs, modelMs, toolMs,
|
|
8
|
+
* modelTurns, clock, onTime, lateButCorrect.
|
|
9
|
+
*/
|
|
10
|
+
declare function createApi(bench?: Benchmark<Task>): (request: Request) => Promise<Response>;
|
|
11
|
+
declare const handler: (request: Request) => Promise<Response>;
|
|
12
|
+
|
|
13
|
+
export { createApi, handler };
|
package/dist/api.js
ADDED
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|