File size: 32,124 Bytes
51f29cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f41326
 
 
 
 
 
 
 
51f29cd
 
 
 
 
 
 
 
 
 
 
 
 
1f41326
 
 
 
51f29cd
1f41326
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51f29cd
 
 
 
1f41326
51f29cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f41326
 
 
 
 
 
 
 
51f29cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f41326
 
 
 
51f29cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
# Creating Benchmark Task Documents

This document defines the policy and template for task-level benchmark
documentation under `docs/benchmark_tasks/`.

## Purpose

Each task page should let a reader understand what the retrieval task measures
before looking at leaderboard scores. A page should explain the source benchmark,
the concrete query and document shapes, the domain, the language, the BM25
baseline behavior, representative examples from the actual Nano tables, and the
kind of training data likely to improve the task without leaking evaluation
answers.

The pages are public GitHub Markdown. Do not include local paper paths, local
Obsidian links, local filesystem paths, private notes, or machine-specific URLs.

## Output Location

Write task documents under:

```text
docs/benchmark_tasks/{Nano-set name}/{task name}.md
```

For collection-level samples where the backing Nano dataset is different from
the collection name, include the backing dataset in the file name, for example:

```text
docs/benchmark_tasks/MNanoBEIR/NanoBEIR-ja__NanoMSMARCO.md
```

## Source Policy

Prefer task-level source metadata from `config/datasets/*.yaml` and
`config/dataset_collections/*.yaml`. If task-level metadata is absent, fall back
to dataset-level metadata, then to the Hugging Face dataset README, then to
upstream benchmark metadata.

For papers, check whether the original paper has an arXiv page. Use the arXiv
URL as the first source URL when it exists, even if an ACL Anthology, DOI,
publisher, OpenReview, or project page also exists. Still include the DOI or
official proceedings URL as secondary metadata when it is useful for citation
accuracy. When a paper exists, read the paper PDF or HTML, not only the abstract,
and use the paper's dataset construction, related work, limitations, retrieval
source, annotation policy, train/dev/test split, and baseline analysis to improve
the task explanation.

Source priority:

1. arXiv page for the original task or benchmark paper.
2. Official proceedings, DOI, OpenReview, publisher, or ACL Anthology page when
   no arXiv page exists, or as a secondary URL.
3. Official dataset card, project page, GitHub repository, or Hugging Face
   dataset.
4. Upstream benchmark source metadata.
5. Blog posts only when they are the canonical source and no stronger source is
   available.

For benchmark collections such as BEIR, MTEB, MIRACL, BIRCO, CodeRAG-Bench, or
domain-specific benchmark suites, distinguish three paper levels:

- `task_paper`: a paper primarily introducing the exact source task or dataset.
- `benchmark_paper`: a paper introducing the benchmark that includes this task
  and discusses its construction, split policy, table statistics, task category,
  evaluation setting, or limitations.
- `related_paper`: a paper about the general task family that does not define the
  evaluated dataset.

If no standalone task paper is found but a benchmark paper includes a section,
appendix entry, dataset table, or construction note for the task, treat that
benchmark paper as a source that must be read and reflected in the Details
section. Do not write "no paper was confirmed" in a way that implies no paper was
used; instead say that no standalone task paper was confirmed and cite the
benchmark paper for the available construction details. For example, Quora in
BEIR should use the BEIR paper's duplicate-question retrieval category, Quora
statistics, split construction, and overlap-removal notes, even though the Quora
Question Pairs record is the dataset source.

Do not invent a source paper just to make a task look citable. If only a dataset
card or project page is known, list it as a source URL and make that limitation
visible. In that case, explicitly say that no task or benchmark paper was
confirmed and that the interpretation is based on the official dataset card,
Hugging Face dataset, project page, technical article, and observed sample data.

When a paper is used in prose, cite it explicitly in the sentence that relies on
it, for example: `[MIRACL: A Multilingual Retrieval Dataset Covering 18 Diverse
Languages](https://arxiv.org/abs/2210.09984) states that ...`. Do not hide paper
usage only in the source list.

When using a benchmark paper, inspect more than the abstract. Look for the task
overview figure, dataset statistics table, appendix entry for the task, split
construction, overlap or leakage mitigation, evaluation metric discussion,
baseline discussion, and limitations. Mention whichever of those items materially
changes the interpretation of the Nano task.

OB Wiki Search can be used as background research, but local wiki or paper-note
paths must not be written into generated Markdown or into the machine-readable
metadata block.

## Structured Fields

Place structured reference material after `## Example Data` and before
`## Machine-Readable Metadata`. This keeps the reader-facing flow focused on the
task first: overview, interpretation, then examples. The information table
should include at least:

- Nano set name.
- Backing dataset name.
- Backing Hugging Face dataset id.
- Task or split name.
- Language and category.
- Query count, document count, and positive qrels row count.
- BM25 nDCG@10 computed from the dataset's `bm25` candidate column and positive
  qrels.
- BM25 hit@10 when available.
- Average query length and document length in characters.

Include positives-per-query rows in the visible information table only when they
add signal: for example, when the average is not exactly `1.00`, when the
minimum/maximum differ from `1`, or when any query has multiple positives. If
every query has exactly one positive qrel, omit the visible distribution rows.
Still keep the full positives-per-query statistics in the final YAML metadata
block so index builders and audits can use them.

Character averages are sufficient for the current version. Prefer
repository-maintained `query_text_stats` and `document_text_stats` when present.
If they are missing, compute them from the Nano `queries` and `corpus` tables.

## Required Page Structure

Use this structure unless a task needs a clearly better variant:

1. `# {Nano set} / {task}` title.
2. GitHub note, placed immediately after the title, warning that the page was
   generated by an LLM from source papers, dataset cards, repository metadata,
   and sampled data, and that it may contain mistakes. Keep it simple and
   reader-facing:

   ```markdown
   > [!NOTE]
   > This page was generated by an LLM using source papers, dataset cards,
   > repository metadata, and sampled benchmark data. It may contain mistakes;
   > please treat it as a reference aid rather than a definitive source.
   ```

3. `## Overview`: a paper-centered summary of what the benchmark task is. Start
   from the source paper when one exists: what retrieval problem the paper
   introduced, how the source data is framed, and what the concrete task asks a
   model to retrieve. If no source paper is available, summarize the benchmark
   task itself from the dataset card, official project page, and sampled data.
   The Overview should be task-specific prose, not a reusable sentence pattern
   such as "`{Task}` evaluates ... Queries are ...". Mention Nano packaging only
   when it changes how the source task is interpreted.
4. `## Details`: longer interpretive prose about the original task/data,
   source-paper findings, observed Nano data tendencies, BM25 difficulty, and
   why the benchmark differs from adjacent benchmarks.
5. `## Example Data`: random query-positive examples from the actual Nano split.
6. `## Dataset Information`: a Markdown table for structured facts.
7. `### Public Sources`: source papers, official pages, and dataset records.
8. `### Hugging Face Links`: the Nano dataset and source Hugging Face datasets
   when known.
9. `### Source Reference Table`: structured source title, year, type, URL.
10. `## Machine-Readable Metadata`: final YAML block for index generation.

## Example Policy

Show five query-positive examples when possible. Select five queries by
deterministic random sampling, not by taking the head of the query table. For
each sampled query, use a positive qrel with matching query and corpus records.
Use the repository script so regenerated pages stay stable:

```bash
uv run python scripts/extract_benchmark_task_examples.py hakari-bench/NanoMMTEB-v2 argu_ana
```

For bulk refreshes, replace only the `## Example Data` sections with:

```bash
uv run python scripts/extract_benchmark_task_examples.py --update-docs docs/benchmark_tasks
```

Use a Markdown table with exactly two columns by default: `Query` and
`Positive document`. The visible table should focus on the actual query and
positive document text. Omit query/doc IDs, BM25 ranks, and extra count columns
unless a task specifically needs them. Append full character counts inline.
Truncate long content to the configured visible character limit and show the
full pre-truncation length with the compact marker
`[truncated 225 chars](1258 chars)`.

```markdown
| Query | Positive document |
| --- | --- |
| What is ...? (12 chars) | The answer-bearing passage ... [truncated 225 chars](1800 chars) |
```

For extremely long-context, legal, patent, medical, code, or documentation tasks,
use a vertical sample-block format only when the table would be unreadable on
GitHub:

```markdown
### Sample 1

| Field | Value |
| --- | --- |
| Query ID | `q1` |
| Positive Doc ID | `d1` |

**Query**

> Truncated query text ... [truncated from 2400 chars]

**Positive document**

> Truncated positive document text ... [truncated from 18000 chars]
```

Do not summarize samples. Show the actual query and positive document text from
the Nano tables. Long query or document text must be truncated to a readable
length, with the original character count visible, for example `[truncated from
20442 chars]`. Even when text is truncated, the reader should be able to tell the full
query and positive-document character counts.

## Interpretation Policy

The `Details` section should explain the data itself. Do not spend the section
explaining that this is a Nano subset or that the Nano format has query, corpus,
qrels, and BM25 tables. Mention Nano sampling only when the observed sampled
data changes how readers should interpret the task.

Use these subheadings inside `## Details`:

```markdown
### What the Original Data Measures

### Observed Data Profile

### BM25 Difficulty

### Training Data That May Help

### Synthetic Data Guidance
```

Discuss:

- what the task asks the model to retrieve,
- what the original paper or official dataset source says the dataset was built
  to evaluate,
- what the source paper says about dataset construction, annotation, split
  design, related benchmarks, baseline behavior, limitations, or intended use,
- what the actual Nano data looks like: query style, document genre, document
  length, positives per query, language, and domain,
- whether lexical matching is likely to be strong,
- whether the task is multilingual, domain-specific, code-oriented,
  long-document-oriented, or fact/evidence-oriented,
- whether qrels are mostly single-positive or multi-positive,
- how BM25 nDCG@10 and hit@10 should be read for this task,
- what existing non-evaluation training data may help,
- what synthetic source documents and synthetic questions would be useful.

Avoid generic filler. Each final task page should include at least one
task-specific paragraph grounded in the original paper, dataset card, or
benchmark source.

If a source paper exists, cite it in prose. Good detail text should read like:

```markdown
[CodeRAG-Bench: Can Retrieval Augment Code Generation?](https://arxiv.org/abs/2406.14497)
reports that the benchmark aggregates programming solutions, online tutorials,
library documentation, StackOverflow posts, and GitHub repositories as retrieval
sources. This matters for this task because ...
```

If no source paper is confirmed, say so plainly:

```markdown
No source paper was confirmed for this task. The interpretation below is based
on the official Hugging Face dataset card, project metadata, and observed sample
queries and positives.
```

### Training Data That May Help

This subsection should answer which existing datasets or supervised pairs could
teach the domain without using evaluation answers.

Cover these cases:

- If the original dataset provides a train split or official training data,
  state that it is the first source to inspect. Do not assume it may be used for
  a leaderboard unless the benchmark rules allow it.
- Always check split provenance. If the Nano task is derived from an upstream
  dev or test split, say that data likely to overlap with the benchmark, such as
  the same upstream dev/test split, should preferably be excluded from training.
  Recommend upstream train splits or other source data that are unlikely to
  overlap with the evaluation task.
- For public datasets, warn in practical terms that obvious overlap with the
  benchmark should be avoided. Detailed ID or text overlap audits are useful for
  production-quality training pipelines, but the reader-facing guidance should
  not make the first-pass task brief feel like an implementation checklist.
- State that learning the evaluation queries, qrels, or positive passages can
  inflate benchmark scores. For retrieval tasks, memorizing the answer passage is
  not the same as learning retrieval behavior.
- For code tasks, recommend source-aligned data such as documentation retrieval,
  DocPrompting-style NL-intent-to-doc pairs, StackOverflow QA, tutorials,
  migration guides, docstrings, issue-to-fix pairs, and API examples.
- For multilingual tasks, recommend native-language supervised pairs and
  same-language corpora rather than translated English-only pairs.
- Keep this subsection concise and technical. It should list the data types that
  help, not re-explain the entire benchmark.

### Synthetic Data Guidance

This subsection should explain what synthetic documents and questions to create.
It should be separate from `Training Data That May Help`.

Cover these cases:

- If synthetic data is recommended, specify the document genre, document
  contents, question style, question intent, and how the generated question
  should be answerable from the generated or selected document.
- Distinguish document-to-question generation from joint document-and-question
  generation. Document-to-question generation should use non-evaluation source
  documents. Joint generation should create both realistic source-style
  documents and questions with explicit answer grounding.
- Do not use evaluation split queries or positive passages as seeds for
  synthetic generation. For example, if a Nano task is derived from MIRACL dev,
  use MIRACL train or non-overlapping Wikipedia passages, not MIRACL dev/test
  positives.
- For multilingual tasks, prefer native-language synthetic queries and
  documents over translated English-only data.
- For code tasks, synthetic data should preserve executable/API semantics,
  identifiers, version constraints, stack traces, and realistic developer
  tasks.
- For legal, patent, medical, finance, or scientific tasks, synthetic documents
  should use realistic domain structure, terminology, citations, measurements,
  entities, and evidential wording.
- For multi-positive tasks, train with multi-positive objectives or listwise /
  distillation signals rather than reducing the task to one positive per query.

## Machine-Readable Metadata

Each task page must end with a fenced YAML block. This block is for future index
page generation and should be easy to parse without reading prose.

Use this marker immediately before the YAML block:

```markdown
<!-- benchmark-task-metadata:v1 -->
```

The block must be the final content in the Markdown file:

````markdown
## Machine-Readable Metadata

<!-- benchmark-task-metadata:v1 -->

```yaml
benchmark_task_metadata:
  schema_version: 1
  document_status: first_pass
  nano_set: NanoMIRACL
  backing_dataset: NanoMIRACL
  dataset_id: hakari-bench/NanoMIRACL
  task_name: ja
  split_name: ja
  language: ja
  category: natural_language
  document_path: docs/benchmark_tasks/NanoMIRACL/ja.md
  source_research:
    primary_source_type: task_paper
    paper_pdf_or_html_checked: true
    no_paper_note: null
  counts:
    queries: 200
    documents: 1846
    positive_qrels: 200
  positives_per_query:
    average: 1.0
    min: 1
    median: 1.0
    max: 1
    multi_positive_queries: 0
    multi_positive_query_percent: 0.0
  text_stats_chars:
    query_mean: 17.47
    document_mean: 297.912784
  bm25:
    ndcg_at_10: 0.5956231823
    hit_at_10: 0.94
    source: dataset_bm25_column
  learning:
    original_train_split: unknown
    evaluation_split_origin: unknown
    train_eval_overlap_audit: not_audited
    leakage_note: do not train on upstream dev/test queries, qrels, or positive passages
    useful_training_data:
      - official non-overlapping train split
      - native-language question-to-passage retrieval pairs
      - non-overlapping source-corpus passage QA pairs
    synthetic_data:
      document_generation: native-language answer-bearing passages from the source collection style
      question_generation: native-language information needs answerable from those passages
      answerability: questions should be grounded in explicit facts, entities, or relations in the document
    multi_positive_training: single_positive_question_document_focus
  links:
    nano_dataset: https://huggingface.co/datasets/hakari-bench/NanoMIRACL
    source_urls:
      - label: MIRACL unified source dataset
        url: https://huggingface.co/datasets/hotchpotch/miracl-hf-unified
    source_notes: []
  references:
    - title: "MIRACL: A Multilingual Retrieval Dataset Covering 18 Diverse Languages"
      url: https://arxiv.org/abs/2210.09984
      year: 2023
      doi: 10.1162/tacl_a_00595
      is_paper: true
      source_confidence: definitive_paper_link
```
````

Metadata field guidance:

- `schema_version`: increment only for incompatible schema changes.
- `document_status`: use `first_pass`, `reviewed`, or `needs_review`.
- `document_path`: repository-relative path only.
- `source_research.primary_source_type`: use `task_paper`, `benchmark_paper`,
  `dataset_card`, `project_page`, `technical_article`, or `sample_inference`.
  Use `benchmark_paper` when the strongest paper source is the benchmark paper
  that includes the task, even if no standalone task paper was confirmed.
- `source_research.paper_pdf_or_html_checked`: boolean. Set `true` only when
  the paper PDF or HTML was inspected beyond title/abstract metadata.
- `source_research.no_paper_note`: short public note when no paper was
  confirmed, otherwise `null`.
- `bm25.source`: must be `dataset_bm25_column` unless the task explicitly uses a
  different source.
- `learning.original_train_split`: use `available`, `not_found`, or `unknown`.
  Leave this as `unknown` unless the original source split was explicitly
  audited.
- `learning.evaluation_split_origin`: record the upstream split if known, such
  as `train`, `dev`, `test`, `validation`, or `unknown`.
- `learning.train_eval_overlap_audit`: use `passed`, `failed`,
  `not_applicable`, or `not_audited`. Use `not_audited` until query IDs,
  document IDs, source titles, and positive text overlap were checked.
- `learning.leakage_note`: short public warning about what not to train on.
- `learning.useful_training_data`: concise machine-readable list of existing
  data types that may teach the domain without using evaluation answers.
- `learning.synthetic_data`: concise machine-readable hints for what synthetic
  documents and questions to generate. These are for index/filter pages and
  should mirror the prose in `### Synthetic Data Guidance`.
- `learning.multi_positive_training`: use `multi_positive_objective` when the
  qrels contain multiple positives for a meaningful share of queries, otherwise
  `single_positive_question_document_focus`.
- `references[].url`: use the arXiv URL first when one exists.
- `links.source_urls`: structured `{label, url}` objects with public URLs only.
  These may include Hugging Face datasets, project pages, or source repositories.
- `links.source_notes`: optional non-URL source notes from README metadata.

## Document Template

Use this template for new pages:

````markdown
# {Nano set} / {task name}

> [!NOTE]
> This page was generated by an LLM using source papers, dataset cards,
> repository metadata, and sampled benchmark data. It may contain mistakes;
> please treat it as a reference aid rather than a definitive source.

## Overview

{About 500 English characters summarizing what this benchmark task is. When a
paper exists, ground the overview in the paper: what problem the paper introduced,
how the data was constructed or adapted, what the query and document sides
represent, and what retrieval behavior is being tested. When no paper exists,
summarize the task from the dataset card, official page, repository metadata, and
sampled data. Avoid a fill-in-the-blank pattern such as "`{Task}` evaluates ...
Queries are ..."; the paragraph should contain details that would not fit most
other tasks in the same group.}

## Details

### What the Original Data Measures

{Explain the original data or benchmark from the source paper, official dataset
card, or project page. Focus on what retrieval behavior is being tested, not on
Nano packaging. If a paper was used, cite it directly in prose, e.g.
`[Paper Title](url) reports that ...`. If no paper was confirmed, state that the
interpretation is based on public dataset cards, project pages, and sample data.}

### Observed Data Profile

{Summarize the actual sampled task with useful interpretation, not only counts:
query and document styles, recurring intents, multi-positive clusters, visible
data quirks, and what those imply for retrieval.}

### BM25 Difficulty

{Explain BM25 nDCG@10 and hit@10 for this task. Include concrete patterns from
the Nano BM25 candidate ranking when useful, such as cases where lexical matching
finds the topic but misses intent equivalence.}

### Training Data That May Help

{List concise, technical existing-data recommendations. Mention the official
train split when available, but warn that upstream dev/test sets, or other data
likely to overlap with the benchmark, should preferably be excluded. Keep
detailed overlap-audit mechanics in metadata or implementation notes rather than
the main prose unless the task specifically needs them.}

### Synthetic Data Guidance

{Describe what synthetic source-style documents and questions to create. Separate
document-to-question generation from generating both documents and questions.
State that evaluation split queries and positive passages should not be used as
seeds.}

## Example Data

{Five deterministic random query-positive examples. Generate with
`scripts/extract_benchmark_task_examples.py`. Use a two-column Markdown table,
include full character counts inline, and visibly truncate long content with
`[truncated 225 chars](N chars)`.}

## Dataset Information

| Field | Value |
| --- | --- |
| Nano set | {Nano set} |
| Backing dataset | {Backing dataset} |
| Task / split | {Task or split} |
| Hugging Face dataset | [{dataset_id}](https://huggingface.co/datasets/{dataset_id}) |
| Language | {language} |
| Category | {natural_language or code} |
| Queries | {query_count} |
| Documents | {document_count} |
| Positive qrels | {qrel_count} |
| Avg positives / query | {avg_positives_per_query; omit this row when all queries have exactly one positive} |
| Positives per query (min / median / max) | {min} / {median} / {max; omit this row when all queries have exactly one positive} |
| Queries with multiple positives | {count} ({percent}%; omit this row when all queries have exactly one positive} |
| BM25 nDCG@10 | {bm25_ndcg_at_10} |
| BM25 hit@10 | {bm25_hit_at_10} |
| Query length avg chars | {query_mean_chars} |
| Document length avg chars | {document_mean_chars} |

### Public Sources

- [{Primary paper title, preferably arXiv when available}]({primary_public_url}); {year}; {authors}; DOI: `{doi}`.
- [{Dataset card or project page}]({public_url}).

### Hugging Face Links

- Nano dataset: [{dataset_id}](https://huggingface.co/datasets/{dataset_id})
- Source dataset: [{source_dataset_id}](https://huggingface.co/datasets/{source_dataset_id})

### Source Reference Table

| Title | Year | Type | URL |
| --- | ---: | --- | --- |
| {title} | {year} | paper | {url} |

## Machine-Readable Metadata

<!-- benchmark-task-metadata:v1 -->

```yaml
benchmark_task_metadata:
  schema_version: 1
  document_status: first_pass
  nano_set: {Nano set}
  backing_dataset: {Backing dataset}
  dataset_id: {dataset_id}
  task_name: {task_name}
  split_name: {split_name}
  language: {language}
  category: {category}
  document_path: docs/benchmark_tasks/{Nano-set name}/{task name}.md
  source_research:
    primary_source_type: {task_paper|benchmark_paper|dataset_card|project_page|technical_article|sample_inference}
    paper_pdf_or_html_checked: {true|false}
    no_paper_note: {null or public note}
  counts:
    queries: {query_count}
    documents: {document_count}
    positive_qrels: {qrel_count}
  positives_per_query:
    average: {avg_positives_per_query}
    min: {min_positives}
    median: {median_positives}
    max: {max_positives}
    multi_positive_queries: {multi_positive_query_count}
    multi_positive_query_percent: {multi_positive_query_percent}
  text_stats_chars:
    query_mean: {query_mean_chars}
    document_mean: {document_mean_chars}
  bm25:
    ndcg_at_10: {bm25_ndcg_at_10}
    hit_at_10: {bm25_hit_at_10}
    source: dataset_bm25_column
  learning:
    original_train_split: unknown
    evaluation_split_origin: {train|dev|test|validation|unknown}
    train_eval_overlap_audit: not_audited
    leakage_note: {short leakage warning}
    useful_training_data:
      - {existing_training_data_type}
    synthetic_data:
      document_generation: {synthetic_document_generation}
      question_generation: {synthetic_question_generation}
      answerability: {synthetic_answerability}
    multi_positive_training: {multi_positive_training}
  links:
    nano_dataset: https://huggingface.co/datasets/{dataset_id}
    source_urls:
      - label: {source_label}
        url: {source_url}
    source_notes: []
  references:
    - title: {title}
      url: {public_url}
      year: {year}
      doi: {doi}
      is_paper: true
      source_confidence: {source_confidence}
```
````

## Group Index Pages

Before scaling to all 500+ tasks, add group index pages such as:

```text
docs/benchmark_tasks/{Nano-set name}/index.md
```

Build index pages from the machine-readable metadata blocks. Each group index
should include:

- task name and document link,
- language and category,
- query/document/qrels counts,
- positives-per-query summary only when the task is not exactly one-positive per
  query,
- BM25 nDCG@10 and hit@10,
- average query/document character lengths,
- source status and primary paper title,
- document status.

## Maintenance Checklist

Before publishing a batch:

1. Confirm every generated page has a Nano dataset link and at least one public
   source or a visible note that source metadata is missing.
2. Confirm arXiv was checked for every paper source and is used as the first URL
   when available.
3. Confirm that every cited paper was checked beyond the abstract when possible:
   use the PDF or HTML to inspect dataset construction, source data, splits,
   related work, baselines, limitations, and task-specific discussion.
4. If no source paper is confirmed, confirm the page says so and explains that
   the interpretation is based on official dataset cards, project pages,
   technical articles, Hugging Face metadata, and observed samples.
5. Confirm train/dev/test provenance. If the Nano task comes from an upstream
   dev/test split, the page must warn against training on that split and should
   recommend only non-overlapping train or source-corpus data.
6. Confirm BM25 nDCG@10 was computed from the Nano `bm25` table, not from a
   fresh local BM25 run.
7. Confirm positives-per-query statistics were computed from qrels.
8. Confirm exactly five random examples come from the selected Nano split when
   at least five qrel pairs are available.
9. Confirm sample data shows actual query and positive document text, not a
   summary, and that long samples are visibly truncated with original character
   count.
10. Confirm the final YAML metadata block parses successfully.
11. Confirm no generated benchmark outputs, caches, local paper paths, local wiki
   paths, or private scratch artifacts are committed.

## Final Prose Quality Review

After generating a task page, do a final pass specifically for writing quality
and usefulness. The page should not feel like a statistics dump. It should help a
reader understand what kind of retrieval behavior the task rewards, why the task
is difficult, and what data would plausibly teach the domain.

Use this checklist before considering a generated task page ready:

1. The overview explains the original benchmark or source dataset first, then
   explains the concrete Nano task. It describes the task itself, not the
   Markdown file or the Nano packaging.
2. The source discussion cites the paper, benchmark paper, dataset card, or
   project page in the sentences that depend on that source. When no paper was
   confirmed, the page says so plainly and does not pretend that a paper-backed
   interpretation exists.
3. The details section includes at least one paragraph grounded in the source
   paper or official dataset card: dataset construction, annotation workflow,
   source corpus, split design, benchmark purpose, or known limitations.
4. The observed data profile goes beyond counts. It names visible query types,
   document genres, recurring domains, language-specific issues, entity or
   terminology patterns, multi-positive clusters when present, and any quirks
   that affect retrieval.
5. The BM25 section interprets the score. It should explain what BM25 is doing
   well, what it fails to distinguish, and include concrete patterns from the
   dataset-provided BM25 ranking when those patterns are informative.
6. The task-specific difficulty is explicit. For example, debate tasks should
   discuss stance and counterargument matching; duplicate-question tasks should
   discuss intent equivalence and paraphrase clusters; Wikipedia QA retrieval
   should discuss short fact queries and passage evidence; public-health FAQ
   retrieval should discuss procedural guidance and action-specific matching.
7. The training-data section is concise and technical. It recommends existing
   data types that teach the domain without using likely evaluation answers, and
   it includes a practical overlap warning for public train/dev/test data.
8. The synthetic-data section focuses on what documents and questions to
   generate. It should specify document genre, question style, answerability, and
   domain details. Do not spend this section on hard negatives.
9. The examples are actual query-positive text from the Nano split. They should
   be readable on GitHub, include full character counts, and show truncation
   clearly when content is shortened.
10. The page avoids generic filler. Replace broad statements such as "this task
    requires semantic understanding" with task-specific statements about the
    exact relation being retrieved.
11. The writing separates evidence from inference. If a claim comes from a
    paper, say so with a link. If it comes from inspecting the sampled Nano data,
    make that clear through wording such as "the sampled data shows" or "the
    observed BM25 ranking suggests".
12. The final page has a coherent reader flow: warning note, overview, details,
    samples, dataset information, public sources, and machine-readable metadata.
    A user should understand the task before reaching the tables and source
    lists.