Self-Improving-Coding-Agents/SI2CA-Training-Trajectories
Dataset Card for SI2CA-Training-Trajectories [π Website] β’ [π€ Dataset] β’ [π Paper] β’ [π± GitHub] π‘ Introduction This dataset consists of 32,340 coding-agent trajectories generated by Qwen3.5-122B-A10B on the same 10,780 executable Python SWE tasks under the three trajectory-curation settings of Section 4.4 of the paper: standard sampling, full self-judgement, and an efficient discovered strategy found by the recursive self-improvement framework. Each task isβ¦ See the full description on the dataset page: https://huggingface.co/datasets/Self-Improving-Coding-Agents/SI2CA-Training-Trajectories.
<h1 align="center">Dataset Card for SI2CA-Training-Trajectories</h1>
<p align="center"> <a href="https://github.com/Self-Improving-Coding-Agents/SI2CA-Visualization"><b>[π Website]</b></a> β’ <a href="https://huggingface.co/datasets/Self-Improving-Coding-Agents/SI2CA-Training-Trajectories"><b>[π€ Dataset]</b></a> β’ <a href="https://github.com/Self-Improving-Coding-Agents/SI2CA"><b>[π Paper]</b></a> β’ <a href="https://github.com/Self-Improving-Coding-Agents/SI2CA"><b>[π± GitHub]</b></a> </p>
π‘ Introduction
<div align="justify">
This dataset consists of 32,340 coding-agent trajectories generated by Qwen3.5-122B-A10B on the same 10,780 executable Python SWE tasks under the three trajectory-curation settings of Section 4.4 of the paper: standard sampling, full self-judgement, and an efficient discovered strategy found by the recursive self-improvement framework. Each task is solved once per setting; every trajectory contains the model's reasoning, its bash tool calls, the environment outputs, the submitted patch and a test-based reward, and the two self-judgement settings additionally include the complete per-turn branch-and-judge logs. The task pool (problem statements, gold patches, tests, container images) is released alongside. Fine-tuning Qwen3.5-35B-A3B-Base on the self-judgement trajectories instead of the standard ones raises its resolve rate by +2.2 points on SWE-bench Verified and +4.2 points on SWE-bench Pro (Python).
</div>
π§ͺ Curation Settings
<div align="justify">
All three settings use the same generator, the mini-SWE-agent harness with a single bash tool, a 250-turn cap, temperature 1.0, top-p 0.95, top-k 10 and at most 4,096 new tokens per turn. Every trajectory that exits cleanly is kept, solved or not.
- Standard: one sampled continuation at each turn.
- Full self-judgement: at every turn the policy samples k = 2 candidate turns; the same model, acting as judge, scores each candidate n = 3 times against a rubric (soundness of reasoning, soundness of the action, and alignment with the task's gold patch, which only the judge can see), and the candidate with the higher mean score is executed.
- Discovered strategy: the same self-judgement procedure applied only inside the early-commitment window, from the first environment observation until the third file-mutating command; outside the window a single continuation is sampled.
The judge's inputs and outputs never enter the policy's context, so the trajectories of the three settings have identical form.
</div>
π Statistics
<div align="justify">
The 10,780 tasks are 6,146 real pull requests from SWE-rebench-V2 and 4,634 synthetic bugs from SWE-smith, spanning 763 GitHub repositories. Turns = number of assistant messages.
</div>
π₯ Data Loading
from datasets import load_dataset
repo = "Self-Improving-Coding-Agents/SI2CA-Training-Trajectories"
standard = load_dataset(repo, "standard", split="train")
full_sj = load_dataset(repo, "full_self_judgement", split="train")
discovered = load_dataset(repo, "discovered_strategy", split="train")
tasks = load_dataset(repo, "tasks", split="train")π¦ Data Instance
Trajectory configs (standard, full_self_judgement, discovered_strategy)
<div align="justify">
The three configs share the same fields and the same 10,780 instance_ids.
instance_id: task identifier; joins the three configs andtasks.curation_strategy:standard,full_self_judgementordiscovered_strategy.generator:Qwen3.5-122B-A10B.source_dataset:SWE-rebench-V2orSWE-smith.source_raw: the raw source tag from the generation record (rebench/smith), null when absent.repo: GitHub repositoryowner/name.image: Docker image the trajectory was generated and graded in.messages: the full conversation in OpenAI chat format. Each message hasrole(system/user/assistant/tool),content,reasoning_content(the model's reasoning, assistant turns only),tool_calls(JSON string of the assistant's bash call,[{"id": ..., "type": "function", "function": {"name": "bash", "arguments": {"command": ...}}}]),tool_call_id(tool messages only) andname(unused, null).tools: JSON string of the tool list given to the agent (a singlebashtool).resolved: whether the submitted patch passed the task's hidden tests (reward >= 0.5).reward: 1.0 if all FAILTOPASS and PASSTOPASS tests pass after applyingmodel_patch, else 0.0.agent_exit_code: exit code of the agent loop; 0 for every released row.n_assistant_turns: number of assistant messages (the "turns" of the paper).n_messages: length ofmessages.model_patch: the diff the agent submitted (capped at 40,000 characters;diff_lenholds the full length).patch_applied: whether the patch applied cleanly before grading.diff_len: length of the submitted diff in characters.elapsed_sec: wall-clock seconds of the run, including judging in the self-judgement settings.gen_node: generation shard the row came from (provenance only).self_judgement_log: JSON string with the per-turn branch-and-judge log (see below); null instandard.n_steps_logged,n_branched_steps,n_judged_steps: number of logged steps, steps with two sampled candidates, and steps on which the judge scored the candidates (all 0 instandard).n_harness_error_msgs: number of tool messages containing a harness-side error notice (a container cleanup error or the 60 s command timeout) rather than only the command's output.
</div>
self_judgement_log
<div align="justify">
A list with one entry per assistant turn, in step order; the executed turn is candidates[winner_idx].
step: 0-based turn index.decision: how the winner was chosen:score_comparison(judged, higher mean score wins),random_tie,identical_command(both candidates proposed the same command, no judging),only_valid_toolcall,both_invalid,parse_fallback,single_candidate,teacher_unavailable. Indiscovered_strategythe value is prefixed with the window phase:gated:skip_before_first_observation,branch_before_first_mutation:*,branch_after_first_mutation:*,branch_after_second_mutation:*,gated:skip_after_third_mutation.gated: true when branching was skipped at this step (discovered_strategyonly; a single candidate was sampled).winner_idx: index of the executed candidate.n_candidates: 1 on gated steps, otherwise 2.student_gen_sec,judge_sec: seconds spent sampling the candidates and judging them.candidates: one object per candidate withidx,command(the bash command, null if the candidate produced no valid call),content,reasoning_content,tool_calls,finish_reason(tool_calls/stop/length),usage(prompt_tokens,completion_tokens,total_tokens) andjudge.judge: null when the candidate was not scored; otherwisen_samples(3),mean_weighted_total(the selection score) andsamples, one per judge call, each withscores(rubric itemsR1groundedness,R2diagnostic insight,R3plan coherence,A1analysisβaction alignment,A2correctness,A3expected progress,A4efficiency and safety,G1goal alignment with the gold patch, each 1β10),weighted_total(= 0.105Β·R1 + 0.105Β·R2 + 0.07Β·R3 + 0.105Β·A1 + 0.14Β·A2 + 0.105Β·A3 + 0.07Β·A4 + 0.30Β·G1),teacher_total(the total the judge reported itself) andjustification.
</div>
tasks config
<div align="justify">
instance_id: task identifier.repo: GitHub repositoryowner/name.source_dataset,source_raw:SWE-rebench-V2/SWE-smithand the harness source tag (rebench_v2/swesmith).language:python.license: repository license from the upstream metadata, null when unknown.base_commit: upstream commit SHA (SWE-rebench-V2 only).problem_statement: the issue text shown to the agent.gold_patch: the reference patch (the privileged information shown to the judge; never shown to the policy).test_patch: the hidden test patch (SWE-rebench-V2 only).eval_cmd: the grading script run after applying a patch;reward= 1.0 iff it exits 0.test_cmd: the bare test command.fail_to_pass,pass_to_pass: JSON lists of the graded test ids that must start passing / keep passing.image: Docker image.workdir: working directory of the repository inside the container (/testbedfor SWE-smith,/<repository name>for SWE-rebench-V2).extra_metadata: JSON object with the remaining upstream and curation metadata (bug patch and pre-commands for SWE-smith tasks, pool tier and evidence counts, etc.).
</div>
π Cite Us
<div align="justify">
If you find this dataset helpful, please consider citing our paper:
</div>
@misc{liang2026si2ca,
author = {{Project Contributors}},
title = {{(Self-Improving)$^2$ Coding Agents: Curating High-Quality Trajectories via Recursive Self-Improvement}},
year = {2026},
url = {https://github.com/Self-Improving-Coding-Agents/SI2CA}
}