nanoswe/swesmith-qwen3.6-35b-a3b
SWE-smith trajectories from Qwen3.6-35B-A3B Multi-turn coding-agent trajectories (issue → tool-using rollout → patch) produced by Qwen3.6-35B-A3B on SWE-smith tasks, stored untokenized. This is the exact SFT corpus used for the harbor arm of the nanoswe teacher-distillation experiments. 101,901 trajectories over 45,242 unique SWE-smith task instances (3 sampled rollouts per task, ~2.25 surviving filtering), 53 parquet shards, ~1.4 GB. ≈1.96B training tokens = exactly one epoch… See the full description on the dataset page: https://huggingface.co/datasets/nanoswe/swesmith-qwen3.6-35b-a3b.
SWE-smith trajectories from Qwen3.6-35B-A3B
Multi-turn coding-agent trajectories (issue → tool-using rollout → patch) produced by Qwen3.6-35B-A3B on SWE-smith tasks, stored untokenized. This is the exact SFT corpus used for the harbor arm of the nanoswe teacher-distillation experiments.
- 101,901 trajectories over 45,242 unique SWE-smith task instances (3 sampled rollouts per task, ~2.25 surviving filtering), 53 parquet shards, ~1.4 GB.
- ≈1.96B training tokens = exactly one epoch (measured packed, SmolLM3 tokenizer, chat-rendered; ~72 messages and ~69k characters per trajectory).
- 51.2% of graded trajectories resolve the task — see
resolved/gradedbelow.
Schema
Correctness
`resolved == False` is not the same as "failed" — 9.3% of rows were never graded (the grading sweep did not cover every rollout). Always pair the two flags:
Per sample:
Failed rollouts are deliberately kept: they are useful for RFT/DPO-style setups and for studying failure modes. Filter on resolved if you only want successful ones.
Generation
Filtering
Applied in order, from raw rollouts to the shards here:
- Submitted only — rollouts that terminated without producing a patch are dropped.
- Patch hygiene — cheat-pattern rollouts (e.g. recovering the fix from git history rather than writing it) are removed at consolidation.
- 32k fit — trajectories whose full chat render exceeds 32,768 tokens are dropped (Qwen3 tokenizer), so every row trains at a 32k sequence length without truncation.
The system message is a fixed scaffold prompt, identical across rows; downstream nanoswe training strips it and unwraps the <pr_description> envelope in messages[1].
Caveats
- Task-level correlation. Up to 3 rollouts share a task instance. Split on the
instance_idprefix (strip__sN), not on rows, or held-out sets will leak. - `resolved` is trajectory-level, not instance-level: a task can be resolved by one sample and failed by another. That disagreement is signal, not noise.
- Teacher is fine-tuned, so this corpus reflects an already SWE-adapted policy — it is not a measurement of stock Qwen3.6-35B-A3B's agentic ability.
- SWE-smith tasks are synthetic (bugs injected into real repos), so patch style is narrower than real-world PRs.
Loading
from datasets import load_dataset
ds = load_dataset("nanoswe/swesmith-qwen3.6-35b-a3b", split="train")
correct = ds.filter(lambda r: r["resolved"]) # 47,273 rows
failed = ds.filter(lambda r: r["graded"] and not r["resolved"]) # 45,105 rowsRelated
- `nanoswe/nanoswe-trajs-260812` — the larger 1.58M-trajectory mixed-origin corpus used for nanoswe pretraining.
- nanoswe — the speedrun training code.
