CoolFace
Datasetpublic

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.

sourceHugging Facecc-by-4.0updated 1d agoView on Hugging Face
0likes40downloads
Dataset Card

<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>

SettingSourceTasksResolvedResolved %Turns meanTurns median
StandardSWE-rebench-V26,1461,55625.373.066
StandardSWE-smith4,6343,47475.053.544
Full self-judgementSWE-rebench-V26,1461,64926.866.059
Full self-judgementSWE-smith4,6343,56276.945.837
Discovered strategySWE-rebench-V26,1461,61426.370.964
Discovered strategySWE-smith4,6343,54476.549.840
SettingTasksResolvedResolved %Turns meanTurns medianTurns p90
Standard10,7805,03046.764.656114
Full self-judgement10,7805,21148.357.349102
Discovered strategy10,7805,15847.861.854111

πŸ“₯ Data Loading

python
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 and tasks.
  • β€”curation_strategy: standard, full_self_judgement or discovered_strategy.
  • β€”generator: Qwen3.5-122B-A10B.
  • β€”source_dataset: SWE-rebench-V2 or SWE-smith.
  • β€”source_raw: the raw source tag from the generation record (rebench / smith), null when absent.
  • β€”repo: GitHub repository owner/name.
  • β€”image: Docker image the trajectory was generated and graded in.
  • β€”messages: the full conversation in OpenAI chat format. Each message has role (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) and name (unused, null).
  • β€”tools: JSON string of the tool list given to the agent (a single bash tool).
  • β€”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 applying model_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 of messages.
  • β€”model_patch: the diff the agent submitted (capped at 40,000 characters; diff_len holds 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 in standard.
  • β€”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 in standard).
  • β€”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. In discovered_strategy the 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_strategy only; 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 with idx, 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) and judge.
  • β€”judge: null when the candidate was not scored; otherwise n_samples (3), mean_weighted_total (the selection score) and samples, one per judge call, each with scores (rubric items R1 groundedness, R2 diagnostic insight, R3 plan coherence, A1 analysis–action alignment, A2 correctness, A3 expected progress, A4 efficiency and safety, G1 goal 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) and justification.

</div>

tasks config

<div align="justify">

  • β€”instance_id: task identifier.
  • β€”repo: GitHub repository owner/name.
  • β€”source_dataset, source_raw: SWE-rebench-V2 / SWE-smith and 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 (/testbed for 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>

bibtex
@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}
}