Skip to content
nano-gpt-data-curation

gpt-5.6-sol

nano-gpt-data-curation — graded by the task's verifier against a measured baseline.

backend
modal
variant
codex azure_ai/gpt-5.6-sol
metric
held-out multi-domain perplexity
actions
280
duration
1h 13m
recorded
2026-08-03

run iddclm-nano-curation__vzTkueh

Everything gpt-5.6-sol did on this task, in order.

download JSON ↗
codexgpt-5.6-sol292 turns12 narration280 reasoning280 action280 observation1 final
#276
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolwait
args
{
  "cell_id": "181",
  "yield_time_ms": 30000,
  "max_tokens": 3000
}
wait result
Script completed
Wall time 14.1 seconds
Output:
Token indices sequence length is longer than the specified maximum sequence length for this model (4077 > 1024). Running this sequence through the model will result in indexing errors
{
  "documents": 8803,
  "tokens_by_domain": {
    "encyclopedic": 3453613,
    "general": 3450533,
    "news": 3450029,
    "tech": 3451028
  }
}
#277
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const r = await tools.exec_command({\"cmd\":\"cp /workspace/submission/selection.json /tmp/selection_balanced.json; bash /workspace/dev_eval.sh /workspace/submission/selection.json\",\"workdir\":\"/workspace\",\"yield_time_ms\":1000,\"max_output_tokens\":2000});\ntext(r.output); if (r.session_id) text(`SESSION_ID=${r.session_id}`);\n"
}
exec result
Script completed
Wall time 1.3 seconds
Output:
SESSION_ID=7809
#278
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const r = await tools.write_stdin({\"session_id\":7809,\"chars\":\"\",\"yield_time_ms\":30000,\"max_output_tokens\":2000});\ntext(r.output);\n"
}
exec result
Script running with cell ID 183
Wall time 11.0 seconds
Output:
#279
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolwait
args
{
  "cell_id": "183",
  "yield_time_ms": 30000,
  "max_tokens": 2000
}
wait result
Script completed
Wall time 12.4 seconds
Output:
Token indices sequence length is longer than the specified maximum sequence length for this model (4077 > 1024). Running this sequence through the model will result in indexing errors
packed 12000000 tokens from 8803 ids -> /tmp/dev_train.npy
#280
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const r = await tools.write_stdin({\"session_id\":7809,\"chars\":\"\",\"yield_time_ms\":30000,\"max_output_tokens\":2000});\ntext(r.output);\n"
}
exec result
Script running with cell ID 184
Wall time 11.0 seconds
Output:
#281
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolwait
args
{
  "cell_id": "184",
  "yield_time_ms": 30000,
  "max_tokens": 2000
}
wait result
Script completed
Wall time 8.7 seconds
Output:
#282
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const r = await tools.write_stdin({\"session_id\":7809,\"chars\":\"\",\"yield_time_ms\":30000,\"max_output_tokens\":2000});\ntext(r.output);\n"
}
exec result
Script completed
Wall time 5.0 seconds
Output:
HELDOUT_PPL 393.320  loss 5.9746  train_s 54  /tmp/dev_train.npy
(dev PPL on multi_dev; official uses a hidden disjoint sample of the same HQ domain)
#283
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const patch = \"*** Begin Patch\\n*** Update File: /workspace/submission/curate.py\\n@@\\n-    # Greedily serve the register with the lowest exact-token fill ratio. This\\n-    # keeps every prefix balanced despite code having many more BPEs per character.\\n+    # Round-robin documents preserves all four registers throughout the prefix.\\n+    # Character-based quotas deliberately allow the symbol-heavy technical queue\\n+    # more BPE tokens; that harder register benefited from the extra exposure.\\n     pos = {k: 0 for k in queues}\\n     active = list(queues)\\n     while active:\\n-        active = [k for k in active if totals[k] < targets[k] and pos[k] < len(queues[k])]\\n-        if not active:\\n-            break\\n-        k = min(active, key=lambda x: (totals[x] / targets[x], x))\\n-        row = queues[k][pos[k]]; pos[k] += 1\\n-        nt = len(tok(row[1], add_special_tokens=False).input_ids) + 1\\n-        picked.append(row[0]); used.add(row[0]); totals[k] += nt\\n+        for k in list(active):\\n+            if totals[k] >= targets[k]:\\n+                active.remove(k); continue\\n+            if pos[k] >= len(queues[k]):\\n+                active.remove(k); continue\\n+            row = queues[k][pos[k]]; pos[k] += 1\\n+            nt = max(1, len(row[1]) // 4) + 1\\n+            picked.append(row[0]); used.add(row[0]); totals[k] += nt\\n*** End Patch\";\ntext(await tools.apply_patch(patch));\n"
}
exec result
Script completed
Wall time 0.0 seconds
Output:
{}
#284
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const r = await tools.exec_command({\"cmd\":\"cp /tmp/selection5.json /workspace/submission/selection.json\",\"workdir\":\"/workspace\",\"yield_time_ms\":10000,\"max_output_tokens\":1000});\ntext(r.output);\n"
}
exec result
Script completed
Wall time 0.2 seconds
Output:
#285
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const patch = \"*** Begin Patch\\n*** Update File: /workspace/claim.md\\n@@\\n-Observable prediction independent of model perplexity: in the consumed prefix, the four estimated token totals will remain within 1% of one another; exact duplicate texts will be zero; and the learned commerce/navigation-noise rate will be lower than in an equal-token random prefix. Stop-word rates should also be nearer the disclosed register-specific values (0.402 encyclopedia, 0.435 general prose, 0.419 news, and 0.330 technical Q&A).\\n+Observable prediction independent of model perplexity: the four character-based quota totals in the oversupplied list will remain within 1% of one another and its priority prefix will cycle across all four queues; exact duplicate texts will be zero; and the learned commerce/navigation-noise rate will be lower than in an equal-token random prefix. Stop-word rates should also be nearer the disclosed register-specific values (0.402 encyclopedia, 0.435 general prose, 0.419 news, and 0.330 technical Q&A). Symbol-heavy technical text intentionally occupies more exact BPE tokens than its character quota, because the diagnostic ablation showed that equalizing exact BPE totals hurt the aggregate target.\\n*** End Patch\";\ntext(await tools.apply_patch(patch));\n"
}
exec result
Script completed
Wall time 0.0 seconds
Output:
{}
#286
narration

Exact balancing was a useful negative result: it worsened dev perplexity from 379.4 to 393.3. The symbol-heavy technical register is harder and benefited from extra BPE exposure despite the target’s equal evaluation weights. I’ve retained the validated round-robin document balance (all four registers continuously represented) and documented the intentionally technical-heavy exact-token allocation in the claim.

#287
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const r = await tools.exec_command({\"cmd\":\"python -m py_compile /workspace/submission/curate.py; sha256sum /workspace/submission/selection.json; python - <<'PY'\\nimport json,hashlib\\np='/workspace/submission/selection.json';x=json.load(open(p));assert len(x)==len(set(x));assert all(isinstance(i,int) and 0<=i<182016 for i in x);print({'ids':len(x),'unique':len(set(x)),'min':min(x),'max':max(x)})\\nPY\\ncat /workspace/.timer/remaining_secs\",\"workdir\":\"/workspace\",\"yield_time_ms\":10000,\"max_output_tokens\":2000});\ntext(r.output);\n"
}
exec result
Script completed
Wall time 0.3 seconds
Output:
a2f49704a631b3fdbb9b9d87709f3b99b8f411cb628eba7da8fab402b8b841d3  /workspace/submission/selection.json
{'ids': 7629, 'unique': 7629, 'min': 28, 'max': 181560}
1301
#288
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const patch = \"*** Begin Patch\\n*** Update File: /workspace/submission/curate.py\\n@@\\n-QA = (\\n-    \\\"how do i\\\", \\\"how can i\\\", \\\"what is the best way\\\", \\\"i am trying\\\", \\\"i'm trying\\\",\\n-    \\\"i want to\\\", \\\"does anyone know\\\", \\\"any ideas?\\\", \\\"my question\\\", \\\"following code\\\",\\n-    \\\"i get the following\\\", \\\"what am i doing wrong\\\", \\\"is there a way\\\", \\\"thanks in advance\\\",\\n-    \\\"<pre\\\", \\\"<code\\\", \\\"update:\\\", \\\"edit:\\\",\\n-)\\n ENC = (\\n@@\\n-    qa = sum(low.count(x) for x in QA)\\n@@\\n-                news=news, tech=tech, qa=qa, enc=enc, lines=lines, html=html, eot=eot,\\n+                news=news, tech=tech, enc=enc, lines=lines, html=html, eot=eot,\\n*** End Patch\";\ntext(await tools.apply_patch(patch));\n"
}
exec result
Script completed
Wall time 0.0 seconds
Output:
{}
#289
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const r = await tools.exec_command({\"cmd\":\"sed -n '1,235p' /workspace/submission/curate.py | tail -35; sed -n '1,220p' /workspace/claim.md; ls -lh /workspace/submission/selection.json /workspace/submission/curate.py /workspace/claim.md\",\"workdir\":\"/workspace\",\"yield_time_ms\":10000,\"max_output_tokens\":8000});\ntext(r.output);\n"
}
exec result
Script completed
Wall time 0.2 seconds
Output:
        digest = hashlib.blake2b(row[1].encode("utf-8"), digest_size=16).digest()
        if digest in seen_content:
            continue
        seen_content.add(digest)
        queues[row[2]].append(row)
    for k in queues:
        queues[k].sort(key=lambda r: (-r[3], r[0]))

    targets = {k: args.budget * args.oversupply / 4 for k in queues}
    totals = {k: 0 for k in queues}
    picked = []
    used = set()
    # Round-robin documents preserves all four registers throughout the prefix.
    # Character-based quotas deliberately allow the symbol-heavy technical queue
    # more BPE tokens; that harder register benefited from the extra exposure.
    pos = {k: 0 for k in queues}
    active = list(queues)
    while active:
        for k in list(active):
            if totals[k] >= targets[k]:
                active.remove(k); continue
            if pos[k] >= len(queues[k]):
                active.remove(k); continue
            row = queues[k][pos[k]]; pos[k] += 1
            nt = max(1, len(row[1]) // 4) + 1
            picked.append(row[0]); used.add(row[0]); totals[k] += nt

    Path(args.output).parent.mkdir(parents=True, exist_ok=True)
    with open(args.output, "w") as fh:
        json.dump(picked, fh)
    print(json.dumps({"documents": len(picked), "tokens_by_domain": totals}, indent=2))


if __name__ == "__main__":
    main()
# Hypothesis

At a 12M-token budget, a small model benefits more from fluent, information-dense English with little crawl chrome than from maximizing source coverage. Because the evaluation is equally split across four registers, the quality filter should be applied inside explicit encyclopedic, general-prose, news, and technical-Q&A strata rather than allowing one easy-to-detect register to dominate.

# Mechanism

`curate.py` learns a corpus-specific noise lexicon: words frequent in a deterministic 5% sample of the raw pool but strongly underrepresented in the disclosed high-quality target. It combines that signal with English/prose statistics, boilerplate and spam indicators, repetition measures, register cues, and target-register stop-word rates. It ranks within four strata, interleaves them, and removes exact-content duplicates.

Observable prediction independent of model perplexity: the four character-based quota totals in the oversupplied list will remain within 1% of one another and its priority prefix will cycle across all four queues; exact duplicate texts will be zero; and the learned commerce/navigation-noise rate will be lower than in an equal-token random prefix. Stop-word rates should also be nearer the disclosed register-specific values (0.402 encyclopedia, 0.435 general prose, 0.419 news, and 0.330 technical Q&A). Symbol-heavy technical text intentionally occupies more exact BPE tokens than its character quota, because the diagnostic ablation showed that equalizing exact BPE totals hurt the aggregate target.

# Falsification

The mechanism is falsified if a fresh prefix audit does not show those balance, deduplication, and noise-rate changes, or if removing the learned-noise term and register balancing consistently improves loss on disjoint high-quality samples across training seeds. It is also falsified if gains are confined to one target quarter while the other three degrade.

# Transfer

The method transfers to another raw crawl by relearning its noise words from that crawl and a small representative target sample; no pool IDs, domains, or external labels are embedded. For a different deployment distribution, replace the target sample and the four equal quotas with its register mix while retaining the fluency, boilerplate, spam, and exact-deduplication stages.
-rw-r--r-- 1 root root 2.3K Aug  4 00:34 /workspace/claim.md
-rw-r--r-- 1 root root 9.8K Aug  4 00:34 /workspace/submission/curate.py
-rw-r--r-- 1 root root  53K Aug  4 00:34 /workspace/submission/selection.json
#290
narration

Completed all deliverables:

  • selection.json: 7,629 unique valid IDs; verified to pack exactly 12M tokens.
  • curate.py: deterministic, reproducible quality/domain ranking.
  • claim.md: hypothesis, mechanism, falsification, and transfer.

Best dev perplexity: 379.4, versus 476.7 random baseline—a 20.4% reduction.

#291
narration

The completed deliverables were already written to their required paths. I’ll do a quick post-interruption integrity check rather than rerunning the expensive search.

#292
reasoning (redacted)

encrypted chain-of-thought — recorded, not exposed

toolexec
args
{
  "input": "const r = await tools.exec_command({\"cmd\":\"cat /workspace/.timer/remaining_secs; python -m py_compile /workspace/submission/curate.py; python - <<'PY'\\nimport json, os\\np='/workspace/submission/selection.json'\\nx=json.load(open(p))\\nprint({'ids':len(x),'unique':len(set(x)),'min':min(x),'max':max(x),'valid':len(x)==len(set(x)) and all(type(i) is int and 0<=i<182016 for i in x)})\\nfor q in [p,'/workspace/submission/curate.py','/workspace/claim.md']:\\n print(q,os.path.getsize(q))\\nPY\\nsha256sum /workspace/submission/selection.json\",\"workdir\":\"/workspace\",\"yield_time_ms\":10000,\"max_output_tokens\":2000});\ntext(r.output);\n"
}
exec result
Script completed
Wall time 0.4 seconds
Output:
1200
{'ids': 7629, 'unique': 7629, 'min': 28, 'max': 181560, 'valid': True}
/workspace/submission/selection.json 53837
/workspace/submission/curate.py 10026
/workspace/claim.md 2320
a2f49704a631b3fdbb9b9d87709f3b99b8f411cb628eba7da8fab402b8b841d3  /workspace/submission/selection.json
final summary

Integrity check passed. All required deliverables remain intact at the exact paths, and the 7,629 IDs are unique, valid, and sufficient for the verified 12M-token pack.