rtr-bench 0.1.4 → 0.2.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/README.md CHANGED
@@ -1,101 +1,230 @@
1
1
  # RTR-bench
2
2
 
3
- **RTR-bench** is a benchmark that scores language models on cultural fluency, built from real human data. Its source is [Mixed Messages](https://mixedmessages.fyi), a generative art project that asks participants to interpret a daily prompt by placing a coordinate on a 2x2 grid, where the x-axis is Honest vs Performed and the y-axis is Uniting vs Dividing. Across 174 closed windows there have been almost 40k individual submissions. Each one is a unique, real human data point.
3
+ **RTR-bench** is an exploratory benchmark that tests whether language models can predict how a crowd interprets an ambiguous prompt, and whether examples from that crowd help them improve. It investigates one aspect of cultural fluency: anticipating how people assign meaning to words, people, institutions, and ideas. Its source is [Mixed Messages](https://mixedmessages.fyi), a generative art project where participants respond to a daily prompt by placing a coordinate on a 2×2 grid: Honest vs Performed on one axis, Uniting vs Dividing on the other. The dataset used here contains 39,828 submissions across 165 closed windows.
4
4
 
5
- Most labeled datasets are made by asking annotators to apply a rubric. This one was not. Nobody was given a definition of honest or performed, nobody was trained, and there was no correct answer to converge on. People arrived, interpreted a prompt, placed a submission, and left. What makes the data unusual is that the crowd's answer is a distribution, rather than a label. Not "people say X", but "31% of people said this, 44% said that, and the rest said something else."
5
+ These submissions were collected through participation in a generative art project. Participants were not trained to apply an annotation rubric or converge on a correct answer. Each placement recorded an interpretation, and together those placements formed a distribution. That distribution preserves both agreement and disagreement: how strongly one reading prevailed, which alternatives attracted people, and where the crowd split.
6
6
 
7
- That distribution is what makes it useful for evaluating a model. Every window has a dominant quadrant, so a model can be scored on whether it lands with the crowd or against it, and on which axis it misreads when it does. There is also nothing here to memorize: the axes are cultural rather than factual, so no amount of training data tells a model how a crowd interpreted a prompt. The only way to get it right is for the model to understand how people would think and interpret.
7
+ Commonly cited benchmarks such as [HLE](https://lastexam.ai/) and [SWE-bench](https://www.swebench.com/) evaluate expert answers or software changes against defined criteria for success. RTR-bench evaluates a model against an observed social response. A crowd’s interpretation can be contradictory, unfamiliar, or difficult to anticipate, and accurately predicting it requires distinguishing what a prompt means to that audience from the reading the model would otherwise produce.
8
8
 
9
- Commonly-cited benchmarks, such as [SWE-bench](https://www.swebench.com/) and [HLE](https://lastexam.ai/), measure whether a model can produce a correct answer: multiple choice, math, and code. RTR-bench measures a different subject. There is no answer key in this data, only how people actually interpreted an ambiguous prompt, so a model is scored against the crowd rather than against a key. That is what makes it a test of whether a model can read the room.
9
+ For each prompt, the model estimates the share of human submissions in all four quadrants. **`Predict`** asks for this distribution without historical examples. **`Learn`** lets the model choose and inspect up to three historical examples before submitting its prediction. Both tracks score the prediction against the recorded crowd distribution, out of 100. Learn also reports its gain or loss against Predict, showing whether gathering evidence improved the answer.
10
10
 
11
- **RTR-bench** is not a knowledge test, and that is deliberate. It is a prediction task. Given a prompt, a model has to decide how the crowd interpreted it, and then decide how it would interpret it itself. Both answers are scored against the real submissions.
11
+ The scores are one way to compare models; their patterns of agreement and error are another. Which interpretations do models consistently anticipate? Where do different models make the same mistake? Which examples do they seek out, and when does that evidence help or mislead them? RTR-bench uses these questions to examine what it means for a model to read the room—with the room here defined by the participants in Mixed Messages.
12
+
13
+ RTR-bench is intended to surface patterns of agreement, disagreement, and adaptation that warrant further investigation. Its results describe performance on this audience and prompt set; broader claims about cultural fluency require validation across other audiences and settings. Recorded submissions provide an observable prediction target, but do not establish participants’ underlying beliefs or subjective experiences.
12
14
 
13
15
  ## How it works
14
16
 
15
- [Mixed Messages](https://mixedmessages.fyi) publishes one prompt, every day. Over a 24-hour submission period, participants interpret that prompt by placing a coordinate on the grid. When the window closes, a rendering algorithm uses the (x, y) coordinates to create an artwork which depicts the day's collective interpretation. Each window has a dominant quadrant, as well as conviction and polarizations cores. The 2x2 grid gives us four possible options for the dominant quadrant, with the following implied readings and coordinates:
17
+ [Mixed Messages](https://mixedmessages.fyi) publishes one prompt, every day. Over a 24-hour submission period, participants interpret that prompt by placing a coordinate on the grid. When the window closes, a rendering algorithm uses the (x, y) coordinates to create an artwork which depicts the day’s collective interpretation. Each window has a distribution across four quadrants, along with conviction and polarization scores. The 2×2 grid gives us the following readings and coordinates:
16
18
 
17
19
  | Quadrant | Reading | Coordinates | Color |
18
20
  |---|---|---|---|
19
- | Honest x Uniting | Bringing us together, authentically | x ≥ 5,000, y < 5,000 | Green |
20
- | Honest x Dividing | Fracturing us, truthfully | x ≥ 5,000, y ≥ 5,000 | Purple |
21
- | Performed x Uniting | Creating false unity among us | x < 5,000, y < 5,000 | Cyan |
22
- | Performed x Dividing | Exploiting our divisions, deliberately | x < 5,000, y ≥ 5,000 | Red |
21
+ | Honest × Uniting | Bringing us together, authentically | x ≥ 5,000, y < 5,000 | Green |
22
+ | Honest × Dividing | Fracturing us, truthfully | x ≥ 5,000, y ≥ 5,000 | Purple |
23
+ | Performed × Uniting | Creating false unity among us | x < 5,000, y < 5,000 | Cyan |
24
+ | Performed × Dividing | Exploiting our divisions, deliberately | x < 5,000, y ≥ 5,000 | Red |
25
+
26
+ **The dataset.** 39,828 submissions across 165 of the 174 closed windows, from the November 12, 2026 export. Only windows with at least 25 submissions are included. `data/windows.json` holds everything: the prompt, submission counts by quadrant, center of mass, and conviction and polarization scores. The latter measures are not used in scoring.
27
+
28
+ The dataset is divided chronologically into 90 reference windows, 30 development windows, and 45 evaluation windows. Every reference window predates every target. Development outcomes are never added to the reference pool. The same data and frozen splits are available on [Hugging Face](https://huggingface.co/datasets/noahmclaughlin/RTR-bench).
29
+
30
+ **The tasks.** In **`Predict`**, the model receives the target prompt, audience description, and quadrant definitions, then returns four probabilities totaling one. A prediction of 0.10, 0.50, 0.25, and 0.15 means it expects 10%, 50%, 25%, and 15% of the crowd’s submissions in the respective quadrants. It sees no historical examples or target outcomes. In **`Learn`**, the model can first request a catalog containing the names and IDs of the 90 reference prompts. It chooses an example to inspect and receives that example’s actual distribution and submission count. It can then choose another example or submit its prediction, up to three distinct inspections. The choices are sequential: evidence from one example can influence what it inspects next.
31
+
32
+ Note that each **`Learn`** episode starts a fresh conversation. The model receives no target score or correctness feedback during the episode, and it can submit before exhausting its inspection budget. The environment allows eight actions and eight model turns. Learning happens through the conversation; the model’s weights are not updated.
33
+
34
+ **Scoring.** For each target, sum the squared differences between the predicted and observed shares across all four quadrants. Average those errors equally across the declared targets, then calculate:
35
+
36
+ ```text
37
+ Score = 100 × (1 − mean error / 2)
38
+ Learn gain = Learn score − Predict score
39
+ ```
23
40
 
24
- **The dataset.** 39,828 submissions across 165 of the 174 closed windows, as of November 12th. Eight windows had fewer than 25 marks, which is the floor. `data/windows.json` holds everything: the prompt, the submission counts, the dominant quadrant, the center of mass, and the conviction and polarization scores, which are not used in scoring but may be included at a later date.
41
+ An exact match scores 100. Invalid or missing terminal predictions receive zero and remain in the denominator. Pending targets keep the run incomplete, without an aggregate headline score. Probabilities must be finite values between zero and one; sums within 0.001 of one are normalized.
25
42
 
26
- **The task.** For each window with N≥25 submissions, the model is asked to determine, given the prompt, which quadrant received the most submissions. Submission counts and dominant quadrants are never shown to the model.
43
+ These scores are not percentage accuracy. Reports include uniform predictions and a constant distribution calculated from the reference windows, so a model’s score can be interpreted against simple baselines. Learn’s final score and its gain should be read together: improvement from a weak starting point does not necessarily produce a strong final prediction.
27
44
 
28
- **Scoring.** A right answer is one point. A wrong answer is zero points. The final score is calculated as the number of points divided by the number of prompts interpreted (165 as of 11/12/26), times 100. A score of 50 means that the model determined the correct dominant quadrant for half of the prompts. The four dominant quadrant options are rotated against four model calls so that no option gains from position. 3/4 matching answers is the model's final answer. A 2/2 split scores zero.
45
+ **Consistency.** Repeated runs record fresh predictions under the same declared settings. Their observed ranges describe variation between runs. Reports also include confidence intervals obtained by resampling target entity groups, preserving matched targets when calculating Learn’s gain. These intervals describe variation across targets; they do not measure repeated-run variability or uncertainty about independent people.
46
+
47
+ The full comparison includes randomly selected examples and examples selected by a fixed text-similarity method. These are controls for Learn, not additional tracks. Predict supplies the no-example control without duplicate calls. See the [Predict protocol](docs/distribution.md) and [Learn protocol](docs/learn-room.md) for the exact prompts, limits, failure handling, and reproducibility rules.
29
48
 
30
49
  ## Quickstart
31
50
 
32
- Scoring needs no database access, just an OpenRouter API key.
51
+ Run RTR-bench from Terminal using one of these three commands:
33
52
 
34
- ### Test a model
53
+ | Command | What it runs |
54
+ |---|---|
55
+ | `npx rtr-bench read-the-room <model>` | **Predict and Learn**, plus Learn's gain or loss against Predict |
56
+ | `npx rtr-bench predict <model>` | **Predict only**: predict the crowd's distribution without examples |
57
+ | `npx rtr-bench learn <model>` | **Learn only**: inspect historical examples, then predict; does not calculate Learn gain |
35
58
 
36
- Node 18 or newer. No clone, no install.
59
+ `<model>` is a placeholder for the model's OpenRouter ID. Each command also needs the provider and run settings. **After the one-time setup below**, this complete example runs both tracks on **five development prompts**, with a **$0.25 spending cap**:
37
60
 
38
61
  ```bash
39
- mkdir rtr-run && cd rtr-run
40
- echo 'OPENROUTER_API_KEY=sk-or-your-key' > .env
62
+ npx rtr-bench read-the-room z-ai/glm-5.3-flash \
63
+ --provider Relace \
64
+ --split development \
65
+ --limit 5 \
66
+ --max-usd 0.25
67
+ ```
68
+
69
+ To run only one track, replace `read-the-room` with `predict` or `learn` and keep the rest of the command. `--limit 5` means five target prompts per selected track. The backslashes let one command continue across several lines; copy the whole block into Terminal.
70
+
71
+ ### Before your first run
72
+
73
+ 1. Install [Node.js](https://nodejs.org/) **22.18 or newer**, which includes `npx`. `npx` downloads and starts RTR-bench for you. You do not need to clone GitHub or run `npm install` or `npm ci` for this path. The dataset is included; no GPU or database setup is needed.
74
+ 2. Open Terminal in a folder where you want to keep your results. Any folder you choose is fine. Creating a new folder is optional and does not start an evaluation.
75
+ 3. Get an [OpenRouter API key](https://openrouter.ai/settings/keys) and add credits to that account. In your chosen folder, create a plain-text file named `.env` containing the line below, replacing `sk-or-your-key` with your key. Keep this file private.
76
+
77
+ ```text
78
+ OPENROUTER_API_KEY=sk-or-your-key
79
+ ```
41
80
 
42
- # see ids and prices. costs nothing
43
- npx --yes rtr-bench catalog --limit 20
81
+ Keep Terminal in that same folder and run the complete command above. The benchmark reads `.env`, sends requests through OpenRouter, and charges your OpenRouter account for model usage. `--max-usd` is a spending limit, not a fixed price; the run stops incomplete if it cannot continue within that limit.
44
82
 
45
- # run one model, then score it
46
- npx --yes rtr-bench z-ai/glm-5.3-flash
83
+ These commands require RTR-bench **0.2.0 or newer** on npm. To select that exact release, replace `npx rtr-bench` with `npx rtr-bench@0.2.0`. GitHub updates and npm releases are published separately.
84
+
85
+ ### Read the results
86
+
87
+ When the run finishes, Terminal prints each selected track's score and the path to `report.html`. Open that file in a browser to inspect the results. A combined `read-the-room` run also prints Learn's gain or loss against Predict.
88
+
89
+ The benchmark automatically creates `results/learn-room/` inside your current folder and saves reports, requests, responses, action traces, and spending records there. You do not need to create the results folders yourself.
90
+
91
+ Running the identical command again resumes its saved run rather than starting a fresh evaluation. Changing the model, selected tracks, target set, or settings creates a separate run and spending ledger. A small development run's predictions and budget are not carried into a larger run.
92
+
93
+ ### Run the final evaluation
94
+
95
+ Use development prompts to check the setup. Once the settings are fixed, the following command runs **Predict, Learn, and both comparison controls on all 45 final evaluation prompts**, matching the conditions in the results table:
96
+
97
+ ```bash
98
+ npx rtr-bench read-the-room z-ai/glm-5.3-flash \
99
+ --provider Relace \
100
+ --controls \
101
+ --split evaluation \
102
+ --limit 45 \
103
+ --max-usd 0.25
47
104
  ```
48
105
 
49
- `--yes` skips npx's install prompt. A run makes 1,320 calls, takes about four minutes on a cheap model, costs a few cents, and writes `results/` in the folder you created. Add `--concurrency 8` to go faster.
106
+ `--controls` adds two comparisons: one supplies randomly selected historical examples, and the other supplies examples selected by text similarity. Without this flag, `read-the-room` runs only Predict and Learn. A development run is not comparable with the final evaluation results.
50
107
 
51
- By default OpenRouter may route each call to any host that serves the model, and hosts differ in quantisation. List them, with price and precision:
108
+ To evaluate another model, replace `z-ai/glm-5.3-flash` with its OpenRouter model ID and select a provider that serves it. You can list models and inspect a model's providers with:
52
109
 
53
110
  ```bash
54
- npx --yes rtr-bench providers z-ai/glm-5.3-flash
111
+ npx rtr-bench catalog --limit 20
112
+ npx rtr-bench providers z-ai/glm-5.3-flash
55
113
  ```
56
114
 
57
- Pin one with `--provider Wafer`. A pinned run refuses to fall back, and the summary names the host that served the calls.
115
+ Provider availability and pricing can change. Choose a spending cap appropriate for the selected model and provider; $0.25 is the cap for the GLM example, not a recommended budget for every model.
58
116
 
59
- ### Work on the code
117
+ ### Use the GitHub source instead (optional)
60
118
 
61
- The repository runs the TypeScript sources directly, so this path needs Node 22.18 or newer.
119
+ If you want to inspect or change the code, install [Git](https://git-scm.com/) and run:
62
120
 
63
121
  ```bash
64
122
  git clone https://github.com/1999labs/RTR-bench
65
123
  cd RTR-bench
66
- npm install
67
- echo 'OPENROUTER_API_KEY=sk-or-your-key' > .env
68
- node src/cli.ts catalog --limit 20
69
- node src/cli.ts run --models z-ai/glm-5.3-flash --concurrency 8
70
- node src/cli.ts report
124
+ npm ci
71
125
  ```
72
126
 
73
- Rebuilding the dataset needs the project's database connection, so `npm run export` is included for inspection only.
127
+ These commands download the project, enter its folder, and install its supporting software. If you already have a checkout, use that folder. Create `.env` there as described above, then replace `npx rtr-bench` with `node src/cli.ts` in the evaluation commands. `src/cli.ts` is the source file that starts the benchmark. This is an alternative to the npm path, not an additional setup step.
74
128
 
75
129
  ## Results
76
130
 
77
- | Model | Provider | Score | Cost |
78
- |---|---|---|---|
79
- | z-ai/glm-5.3-flash | Tenstorrent (fp8) | 41.2 | $0.0281 |
80
- | z-ai/glm-5.3 | Tenstorrent (fp8) | 40.0 | $0.2828 |
81
- | minimax/minimax-m3.1-flash | GMICloud (fp8) | 32.1 | $0.2444 |
82
- | xiaomi/mimo-v2.6-flash | GMICloud (bf16) | 40.6 | $0.1216 |
83
- | deepseek/deepseek-v4.1-flash-1017 | Morph (fp8) | 40.0 | $0.3414 |
84
- | tencent/hy3 | Tencent (fp8) | 40.0 | $0.2665 |
85
- | google/gemini-3.8-flash | Google AI Studio | 46.1 | $0.7790 |
86
- | openai/gpt-6-luna | OpenAI | 37.0 | $0.1329 |
87
- | anthropic/claude-haiku-5.5 | Claude Platform on AWS | 43.0 | $0.1696 |
88
- | thinkingmachines/inkling-small | DeepInfra (fp8) | 37.0 | $0.1733 |
89
- | openai/gpt-oss-120b | DekaLLM (bf16) | 32.7 | $0.0205 |
131
+ | Model | Provider | Predict | Learn | Learn gain | Full run cost (including controls) |
132
+ |---|---|---:|---:|---:|---:|
133
+ | z-ai/glm-5.3-flash | Relace (fp4) | 87.93 | 85.57 | −2.37 | $0.03150 |
134
+ | z-ai/glm-5.3 | TBD | TBD | TBD | TBD | TBD |
135
+ | minimax/minimax-m3.1-flash | TBD | TBD | TBD | TBD | TBD |
136
+ | xiaomi/mimo-v2.6-flash | TBD | TBD | TBD | TBD | TBD |
137
+ | deepseek/deepseek-v4.1-flash-1017 | TBD | TBD | TBD | TBD | TBD |
138
+ | tencent/hy3 | TBD | TBD | TBD | TBD | TBD |
139
+ | google/gemini-3.8-flash | TBD | TBD | TBD | TBD | TBD |
140
+ | openai/gpt-6-luna | TBD | TBD | TBD | TBD | TBD |
141
+ | anthropic/claude-haiku-5.5 | TBD | TBD | TBD | TBD | TBD |
142
+ | thinkingmachines/inkling-small | TBD | TBD | TBD | TBD | TBD |
143
+ | openai/gpt-oss-120b | TBD | TBD | TBD | TBD | TBD |
144
+
145
+ ## Optional usage
146
+
147
+ The examples below use the GitHub source checkout. For model evaluations through the npm package, replace `node src/cli.ts` with `npx rtr-bench`. The synthetic examples use fixture paths from the source checkout.
148
+
149
+ ### Run one track
150
+
151
+ To run Predict alone:
152
+
153
+ ```bash
154
+ node src/cli.ts predict z-ai/glm-5.3-flash \
155
+ --provider Relace \
156
+ --split development \
157
+ --limit 5 \
158
+ --max-usd 0.25
159
+ ```
160
+
161
+ Replace `predict` with `learn` to run Learn alone. Each reports its own score; Learn’s gain requires the matching Predict result, which `read-the-room` calculates automatically. The standalone commands use the same prompts and scorer as their conditions in the combined run.
162
+
163
+ Separate commands and changes to `--controls` create separate runs and spending ledgers; saved predictions are not automatically shared between them. Use `read-the-room --controls` from the outset when you want both tracks and the controls.
164
+
165
+ The legacy `learn-room` and `distribution` commands remain available with their original defaults and saved-run formats. In particular, legacy `learn-room` without `--strategy` runs the no-example and random conditions. New commands use the existing `results/learn-room/` storage and report format; internal strategy labels are `none` (Predict), `agent` (Learn), `random`, and `similar`.
166
+
167
+ ### Synthetic runs
168
+
169
+ Try Predict on the five-target fixture without an API key or any API spending:
170
+
171
+ ```bash
172
+ node src/cli.ts predict \
173
+ --fixture tests/fixtures/learn-room-four-strategies.json \
174
+ --limit 5
175
+ ```
176
+
177
+ To exercise Learn and all comparison conditions:
178
+
179
+ ```bash
180
+ node src/cli.ts read-the-room \
181
+ --fixture tests/fixtures/learn-room-four-strategies.json \
182
+ --controls \
183
+ --limit 5
184
+ ```
185
+
186
+ These commands write explicitly labeled synthetic reports with saved outputs and browsable traces. They demonstrate the pipeline, not model performance.
187
+
188
+ Synthetic run directories are ignored by Git. Fixture inputs and tests stay tracked; regenerate the reports locally with the commands above. Published benchmark reports remain tracked and are marked as generated in `.gitattributes`.
90
189
 
91
- ![RTR-bench: score against cost](results/leaderboard-scatter.png)
190
+ ### Providers and concurrency
191
+
192
+ OpenRouter may route calls to different providers serving the same model. To list providers, token prices, and numerical precision:
193
+
194
+ ```bash
195
+ node src/cli.ts providers z-ai/glm-5.3-flash
196
+ ```
197
+
198
+ Use `--provider` to select a provider from that list. A pinned run refuses to fall back to another provider, and reports name the providers that served the calls. Provider availability can change.
199
+
200
+ Predict and Learn currently execute requests sequentially. Each Learn episode contains a sequence of decisions, with the next request depending on the previous observation. Time and cost depend on the model, provider, token usage, and number of turns.
201
+
202
+ On 45 targets, Predict and Learn together typically use about 270 model calls. Adding `--controls` brings that to about 360: 45 for Predict, 45 for each automatic control, and approximately five calls per Learn episode. Early stopping can reduce that number; additional agent turns and transport retries can increase it. The first final GLM run used 347 calls.
203
+
204
+ The public commands default to 4,000 output tokens per response. Learn uses the published `transfer-check-v1` policy, up to three inspected examples, and eight model turns. Advanced runs can override `--max-tokens` and, for Learn, `--agent-policy`.
205
+
206
+ The current client uses OpenRouter. Direct connections to other hosted or local endpoints are not yet implemented.
207
+
208
+ ## Development
209
+
210
+ After the GitHub source setup in [Quickstart](#quickstart), use these commands from the project folder to check changes and build the distributable program. Source commands run TypeScript directly and require Node.js 22.18 or newer.
211
+
212
+ ```bash
213
+ npm test
214
+ npm run build
215
+
216
+ node src/cli.ts read-the-room \
217
+ --fixture tests/fixtures/learn-room-four-strategies.json \
218
+ --controls \
219
+ --limit 5
220
+ ```
92
221
 
93
- Eleven models were tested against the same 165 windows. Scores concentrated in the high 30s and low 40s. Models were more alike in how they fail than in how they score. Across 1,591 answers, they decided on Honest x Uniting 67.7% of the time and Honest x Dividing 18.2% of the time, while the dominant quadrant was Honest x Dividing in 39 of those 165 windows. Division, when a model registers it at all, reads as spin or as bad faith, and almost never as candor.
222
+ `npm test` checks the implementation. `npm run build` bundles the source into `dist/cli.js`, the program included in the npm package. The fixture command generates a synthetic report without making model API calls. For paid runs, use the Quickstart commands. See the [npm release instructions](docs/npm-release.md) for packaging and publishing.
94
223
 
95
- There were seven prompts that no model got right. They were Donald Trump, Elon Musk, Las Vegas, Barack Obama, Reputation, Dreams, and Honor. The dominant quadrant for each of them besides Dreams was Honest x Dividing. There were three prompts that every model got right. They were Handwritten Notes, The CIA, and Altruism.
224
+ Rebuilding the original dataset requires the project’s database connection and the configuration in `scripts/export.mjs`. The exported dataset is already included, so running the benchmark does not require database access. The Hugging Face export and validator preserve the frozen source data and split assignments.
96
225
 
97
- My main takeaway is that the same blind spot shows up in every model, and it is not a vocabulary problem. Ask it to pick the dominant quadrant for Trump or Musk and the model can easily choose dividing instead of uniting, but has a hard time determining honest or performed. That is why Honest X Dividing is the quadrant the models got wrong the most. Next, I would like to score more closed frontier models, score only the windows where the crowd was very decisive, and somehow factor into the benchmark the conviction and polarization scores from each window.
226
+ RTR-bench previously evaluated dominant-quadrant predictions. Those scores use a different protocol and are not directly comparable with Predict and Learn. See the [original benchmark README and results](results/history/original-benchmark/README.md).
98
227
 
99
228
  ## License
100
229
 
101
- MIT for the code. CC0 for `data/windows.json`.
230
+ MIT for the code. CC0 for `data/windows.json` and its derived dataset exports.
@@ -0,0 +1,184 @@
1
+ {
2
+ "version": "chronological-v1",
3
+ "datasetSha256": "ec9d7582b5610a24f4e14dbbb05d13c636b692ec9e133b9381db0fdf483ffb2b",
4
+ "rule": "Reference: day <= 99; development: days 100..129; evaluation: day >= 130. All reference windows precede all targets. No labels used to choose boundaries.",
5
+ "grouping": {
6
+ "method": "Trim, lowercase, collapse whitespace; manually reviewed prompt list for entity aliases.",
7
+ "aliases": {},
8
+ "decisions": [
9
+ "ELON MUSK (days 30 and 99) stays entirely in reference.",
10
+ "Related but distinct prompts (such as CONTENT CREATORS and INFLUENCERS) remain distinct; grouping prevents same-entity retrieval, not thematic overlap."
11
+ ]
12
+ },
13
+ "reference": [
14
+ 1,
15
+ 2,
16
+ 3,
17
+ 4,
18
+ 5,
19
+ 6,
20
+ 7,
21
+ 8,
22
+ 9,
23
+ 10,
24
+ 11,
25
+ 12,
26
+ 13,
27
+ 14,
28
+ 15,
29
+ 16,
30
+ 17,
31
+ 18,
32
+ 19,
33
+ 20,
34
+ 21,
35
+ 22,
36
+ 23,
37
+ 24,
38
+ 25,
39
+ 28,
40
+ 29,
41
+ 30,
42
+ 31,
43
+ 35,
44
+ 36,
45
+ 37,
46
+ 38,
47
+ 39,
48
+ 42,
49
+ 43,
50
+ 44,
51
+ 45,
52
+ 46,
53
+ 47,
54
+ 48,
55
+ 49,
56
+ 50,
57
+ 51,
58
+ 52,
59
+ 53,
60
+ 54,
61
+ 55,
62
+ 56,
63
+ 57,
64
+ 58,
65
+ 59,
66
+ 60,
67
+ 61,
68
+ 62,
69
+ 63,
70
+ 64,
71
+ 65,
72
+ 66,
73
+ 67,
74
+ 68,
75
+ 69,
76
+ 70,
77
+ 71,
78
+ 72,
79
+ 73,
80
+ 74,
81
+ 77,
82
+ 78,
83
+ 79,
84
+ 80,
85
+ 81,
86
+ 82,
87
+ 83,
88
+ 84,
89
+ 85,
90
+ 86,
91
+ 87,
92
+ 88,
93
+ 89,
94
+ 90,
95
+ 91,
96
+ 92,
97
+ 93,
98
+ 94,
99
+ 95,
100
+ 96,
101
+ 97,
102
+ 98,
103
+ 99
104
+ ],
105
+ "development": [
106
+ 100,
107
+ 101,
108
+ 102,
109
+ 103,
110
+ 104,
111
+ 105,
112
+ 106,
113
+ 107,
114
+ 108,
115
+ 109,
116
+ 110,
117
+ 111,
118
+ 112,
119
+ 113,
120
+ 114,
121
+ 115,
122
+ 116,
123
+ 117,
124
+ 118,
125
+ 119,
126
+ 120,
127
+ 121,
128
+ 122,
129
+ 123,
130
+ 124,
131
+ 125,
132
+ 126,
133
+ 127,
134
+ 128,
135
+ 129
136
+ ],
137
+ "evaluation": [
138
+ 130,
139
+ 131,
140
+ 132,
141
+ 133,
142
+ 134,
143
+ 135,
144
+ 136,
145
+ 137,
146
+ 138,
147
+ 139,
148
+ 140,
149
+ 141,
150
+ 142,
151
+ 143,
152
+ 144,
153
+ 145,
154
+ 146,
155
+ 147,
156
+ 148,
157
+ 149,
158
+ 150,
159
+ 151,
160
+ 152,
161
+ 153,
162
+ 154,
163
+ 155,
164
+ 156,
165
+ 157,
166
+ 158,
167
+ 159,
168
+ 160,
169
+ 161,
170
+ 162,
171
+ 163,
172
+ 164,
173
+ 165,
174
+ 166,
175
+ 167,
176
+ 168,
177
+ 169,
178
+ 170,
179
+ 171,
180
+ 172,
181
+ 173,
182
+ 174
183
+ ]
184
+ }