Paper · Blog · Leaderboard
ProgramDistill is a dataset and executable benchmark for evaluating whether coding agents can restore missing behavior in interactive web applications. Each feature-restoration task contains a masked application, a solver-facing task statement, a working reference application configuration, replayable browser traces, a behavioral verifier, and a reference solution.
The release contains 4,063 feature-restoration tasks across 26 applications, a public 300-task model-comparison subset, and 12 full-reconstruction tasks with 590 atomic workflows, 413 cumulative endpoints, and 1,541 cumulative replay stages.
The public release is limited to the packaged benchmark and a dashboard/project page. The ProgramDistill mining, task-generation, and orchestration pipeline is not released. Internal generation records, generation prompts and model configurations, review logs, and agent evaluation trajectories are also outside the release scope. Task-local solver prompts, build recipes, verifiers, and reference solutions remain part of the benchmark tasks described below.
ProgramDistill turns working web-application behavior into verifiable coding tasks:
Verified traces can depend on earlier traces, forming prerequisite lineages. This supports atomic feature restoration, cumulative tasks that combine dependent behaviors, and whole-application reconstruction.
en) for task statements and prompts; source-code
languages vary by applicationThe first release snapshot is identified by:
| Released component | Commit |
|---|---|
| ProgramDistill-Benchmark task snapshot | 6e0a580b252e429da25d261ca202140c2adf28e3 |
ProgramDistill is intended for research on:
For feature-restoration tasks, success is measured by replaying browser traces and checking their expected signals. Cumulative tasks can award partial credit through chain score, the fraction of dependent behaviors restored. Full-reconstruction tasks are scored against multiple verifier targets.
ProgramDistill is not designed or validated for:
The public partial-reconstruction-subset is not a private or
contamination-resistant test set. Every subset task also appears in
partial-reconstruction, and reference solutions and verifiers are distributed
with the benchmark.
| Path | Contents |
|---|---|
README.md | Dataset description, setup instructions, and evaluation guidance |
pyproject.toml | Shared Python runtime dependencies for the bundled solver |
tasks/ | Benchmark task collections, including build recipes, solver agents, reference solutions, browser traces, and verifiers |
The collection paths below are relative to the repository root.
| Path | Contents |
|---|---|
tasks/partial-reconstruction/ | All 4,063 feature-restoration tasks across 26 applications |
tasks/partial-reconstruction-subset/ | Public 300-task model-comparison subset selected from the complete partial-reconstruction corpus |
tasks/full-reconstruction/ | 12 whole-application reconstruction tasks with 590 atomic workflows, 413 cumulative endpoints, and 1,541 cumulative replay stages |
Because partial-reconstruction-subset is contained in
partial-reconstruction, the two collections must not be added together when
counting unique feature-restoration tasks. Collection-level metadata
directories are not tasks; each task directory is a standalone Harbor package.
A complete example is:
tasks/partial-reconstruction-subset/insurance_claim_web__insurance_claim_web__save_common_accident_claim_draft__logic_and_ui__cumulative/
Each task has this top-level layout:
agent/ task-local agent and patching prompt
agent_context.json application, browser, and runtime context
build_images.sh pinned source materialization and image build
environment/ Harbor environment and application source recipe
gold_gate.sh reference-solution validation
instruction.md solver-facing restoration requirement
run.sh Harbor agent entry point
solution/ mask diff, masked source, and reference solution
task.toml task metadata and resource settings
tests/ masked source, replay traces, verifier, and scorer
The task additionally includes:
environment/app/images/recipes/<category>/<app>/upstream_pin.jsonenvironment/app/images/recipes/<category>/<app>/programdistill_overlay.patchtests/masked/ and solution/masked/solution/mask_patch.diffsolution/solve.shtests/traces/tests/scorer/Application source is not represented only as a vendored snapshot. It is
reconstructed from the upstream checkout identified by source_repo and
source_commit, with programdistill_overlay.patch applied.
The principal task.toml fields are:
schema_version
[task] name, description, authors, keywords
[metadata] difficulty, category, task_mode, mask_scope,
lineage_depth, restoration_depth
[agent] timeout_sec
[environment] network_mode, allowed_hosts, build_timeout_sec,
cpus, memory_mb, storage_mb
[verifier] timeout_sec, environment_mode
[verifier.environment] docker_image, network_mode, build_timeout_sec,
cpus, memory_mb, storage_mb
The principal agent_context.json fields are:
browser_config, browser_port, candidate_id, dataset_type,
dev_start_command, freeze_time, instance_id, ProgramDistill_mode,
readiness_ports, repo_path, repository, submission_excluded_paths
Each upstream_pin.json contains:
app, category, source_repo, source_commit, sparse_keep,
overlay_files, reproduces_vendored, license
The principal browser-trace fields are:
action_trace, artifact_paths, candidate_id, description, errors,
expected_signals, final_observation, freeze_time,
mining_certificate_signature, mining_trace_sha256, name,
parent_trace, quality_labels, retry_history, rows, schema, status,
trace_hint, trace_sequence, validated_at
The broken source state is represented by solution/mask_patch.diff and the
files under tests/masked/ and solution/masked/.
Each task in tasks/full-reconstruction/ contains:
The 12 tasks contain 590 atomic workflows, 413 cumulative endpoints, and 1,541 cumulative replay stages.
ProgramDistill does not provide conventional train, validation, and test splits:
partial-reconstruction is the complete 4,063-task feature-restoration
corpus.partial-reconstruction-subset is a public 300-task evaluation selection
from partial-reconstruction.full-reconstruction is a separate whole-application reconstruction task
type.The subset includes all 26 applications and uses these restoration-depth quotas:
| Restoration depth | Tasks |
|---|---|
| 1 | 50 |
| 2 | 45 |
| 3 | 45 |
| 4 | 40 |
| 5 | 35 |
| 6 | 30 |
| 7 | 30 |
| 8 | 25 |
| Total | 300 |
Researchers creating new splits should group tasks by application and lineage to avoid source and behavioral leakage.
Counts for the 2026-08-25 task snapshot are:
| Item | Count |
|---|---|
| Completed applications | 26 |
| Feature-restoration tasks | 4,063 |
| Atomic tasks | 2,862 |
| Cumulative tasks | 1,201 |
| Logic-only masks | 1,997 |
| Logic-and-UI masks | 2,066 |
| Public evaluation subset | 300 |
| Full-reconstruction tasks | 12 |
| Full-reconstruction atomic workflows | 590 |
| Full-reconstruction cumulative endpoints | 413 |
| Full-reconstruction cumulative replay stages | 1,541 |
Verified-behavior discovery records, internal generation records, and saved agent evaluation trajectories are outside the scope of this task release.
Install:
uvStart Docker, then install Harbor:
docker info
docker compose version
uv tool install "harbor==0.23.0" --python 3.12
harbor --version
If harbor is not found, run uv tool update-shell and open a new shell.
Enable Git LFS and clone the dataset:
git lfs install
git clone https://huggingface.co/datasets/microsoft/ProgramDistill
cd ProgramDistill
Git LFS downloads large files automatically during cloning. The dataset contains nearly one million files; allow time for checkout and additional disk space for Git/LFS storage and Docker images.
Use the Hugging Face CLI to download the subset and its shared runtime manifest:
uv tool install huggingface_hub
hf download microsoft/ProgramDistill \
--repo-type dataset \
--include "tasks/partial-reconstruction-subset/**" \
--include "README.md" \
--include "pyproject.toml" \
--include "tasks/README.md" \
--local-dir ProgramDistill-subset
cd ProgramDistill-subset
find tasks/partial-reconstruction-subset -type f -name "*.sh" -exec chmod +x {} +
hf download does not preserve executable permissions or symlinks. The last
command restores shell-script permissions; use Git if you need the original
file modes and symlinks.
From the cloned repository or downloaded subset directory, validate the reference solution:
TASK=tasks/partial-reconstruction-subset/insurance_claim_web__insurance_claim_web__save_common_accident_claim_draft__logic_and_ui__cumulative
"$TASK/gold_gate.sh"
This checks the provided solution without a model or API key.
Then run the bundled solver:
export ANTHROPIC_API_KEY="<your-api-key>"
"$TASK/run.sh" --model anthropic/claude-sonnet-4-5
Both wrappers build images automatically; run.sh also installs the shared
runtime. Model names use LiteLLM's provider/model format.
Optional ten-step smoke test:
MINEPATCH_MAX_STEPS=10 "$TASK/run.sh" --model anthropic/claude-sonnet-4-5
The sample defaults to 1,000 steps and a 10-hour agent timeout. A short smoke test may score 0.0 without making edits; it is not a full solving attempt.
For Full Reconstruction:
TASK=tasks/full-reconstruction/baserow_baserow
"$TASK/gold_gate.sh"
"$TASK/run.sh" --model anthropic/claude-opus-5
Results default to jobs/<job-name>/. Both wrappers accept --jobs-dir and
--job-name.
| File | What to inspect |
|---|---|
result.json | Job completion, stats.n_errored_trials, and aggregate rewards |
<trial>/result.json | exception_info and verifier_result.rewards.reward for the task |
<trial>/exception.txt | Exception details when setup or execution fails |
<trial>/trial.log | Trial execution and environment diagnostics |
<trial>/verifier/test-stdout.txt | Verifier output, including why a submission received its score |
<trial>/verifier/reward.txt | The verifier's recorded reward |
<trial>/agent/trajectory.json | Model-agent actions, configured limits, and exit reason |
Check the recorded errors and reward, not just the exit code: Harbor can exit
with status 0 after a setup failure. The reference solution should score 1.0.
For model runs, exit_reason: abs_step_limit means the step cap was reached,
not necessarily that the task was solved.
Most software-engineering benchmarks derive tasks from written issues and hidden tests. This is expensive to scale, emphasizes codebases with suitable issue histories, and does not directly test whether an agent can infer intended behavior from running software.
ProgramDistill instead treats working application behavior as an executable specification. It creates automatically verified tasks that exercise both browser interaction and source-code modification, with difficulty scaling through behavioral dependencies.
ProgramDistill began with 30 candidate web applications from OSWorld application sources and public open-source repositories. The final feature-restoration release includes 26 applications.
The following candidates are not included:
dinogame_webglbviewer_webslidepuzzle_webcalcom_cal_comFor every released application, each task carries frozen provenance at:
environment/app/images/recipes/<category>/<app>/upstream_pin.json
environment/app/images/recipes/<category>/<app>/programdistill_overlay.patch
upstream_pin.json records the ProgramDistill application ID, source category,
upstream repository URL, source commit, sparse checkout paths, overlay files,
vendoring-reproduction status, and license. The overlay records ProgramDistill
modifications.
Initial application state is reconstructed from the pinned upstream source together with the ProgramDistill overlay, fixtures, and reset scripts included with the task.
Each application is packaged as a stable reference instance and a hot-reloading editable instance. Application state is reset before collection and replay, and a deterministic clock reduces runtime variation.
The following summarizes how the released tasks were created; the construction pipeline implementation is not included in the public release:
The release contains the resulting packaged benchmark tasks, not the ProgramDistill
mining, task-generation, or orchestration pipeline. Internal generation model
and prompt versions, manual review records, generation timelines,
verified-behavior discovery records, and evaluation trajectories are not part
of the release. Task-local prompts under each task's agent/ directory are
included because they are required to execute that packaged task.
The original application source was produced by OSWorld application authors and contributors to the included public open-source repositories. ProgramDistill task statements, masks, traces, verifier metadata, and reference solutions were generated by the ProgramDistill pipeline.
The release is not based on human study participants, crowdworkers, or human annotation of personal behavior.
ProgramDistill annotations are generated automatically. They include behavior names and descriptions, action traces, expected signals, prerequisite relationships, mask scopes, task metadata, and verification outcomes.
Validation is executable:
gold_gate.sh validates the packaged reference solution.Replay establishes that a trace is reproducible against the packaged application. It does not prove that every label is the only possible semantic description of the behavior.
Annotations are machine-generated by the ProgramDistill agent pipeline and deterministic browser, replay, masking, and scoring infrastructure. The current task release does not include internal generation or review records.
ProgramDistill does not collect data from live users or study participants. It processes selected public open-source repositories and task-local fixtures in self-contained benchmark applications.
Public repositories can contain contributor names, public attribution, copyright notices, and contact information required by upstream licenses. Application fixtures can include person-like names, messages, accounts, or credentials used only inside the benchmark. Seeded credentials must not grant access to external systems.
The release should not contain private repositories, live credentials, secrets, or private user data. Reports of unexpected personal or sensitive content should be sent to the maintained dataset contact for review and removal.
partial-reconstruction-subset is fully public,
contained in partial-reconstruction, and distributed with solutions and
verifiers. It is not a hidden test set and may be present in model training
data after release.tasks/partial-reconstruction-subset/ for direct comparison with
reported 300-task evaluations and tasks/partial-reconstruction/ for
broader coverage.partial-reconstruction-subset as held out from
partial-reconstruction.solution/, hidden evaluator assets, or other
excluded paths during an evaluation run.gold_gate.sh after materializing a task to validate the packaged
reference solution.BibTeX:
@article{programdistill2026,
author = {Jeonghye Kim and Minseon Kim and Young Jin Kim and
Matheus Pereira and Marc-Alexandre C{\^o}t{\'e} and
Alessandro Sordoni and Xingdi Yuan and Zhengyan Shi},
title = {ProgramDistill: From Interactive Web Apps to Verifiable
Reference-Guided SWE Tasks},
year = {2026},
eprint = {2609.18805},
archivePrefix = {arXiv},
primaryClass = {cs.SE},
url = {https://arxiv.org/abs/2609.18805}
}
Jeonghye Kim and the ProgramDistill research team.
jeonghye.kim@kaist.ac.kr)4 commits
Paper · Blog · Leaderboard
ProgramDistill is a dataset and executable benchmark for evaluating whether coding agents can restore missing behavior in interactive web applications. Each feature-restoration task contains a masked application, a solver-facing task statement, a working reference application configuration, replayable browser traces, a behavioral verifier, and a reference solution.
The release contains 4,063 feature-restoration tasks across 26 applications, a public 300-task model-comparison subset, and 12 full-reconstruction tasks with 590 atomic workflows, 413 cumulative endpoints, and 1,541 cumulative replay stages.
The public release is limited to the packaged benchmark and a dashboard/project page. The ProgramDistill mining, task-generation, and orchestration pipeline is not released. Internal generation records, generation prompts and model configurations, review logs, and agent evaluation trajectories are also outside the release scope. Task-local solver prompts, build recipes, verifiers, and reference solutions remain part of the benchmark tasks described below.
ProgramDistill turns working web-application behavior into verifiable coding tasks:
Verified traces can depend on earlier traces, forming prerequisite lineages. This supports atomic feature restoration, cumulative tasks that combine dependent behaviors, and whole-application reconstruction.
en) for task statements and prompts; source-code
languages vary by applicationThe first release snapshot is identified by:
| Released component | Commit |
|---|---|
| ProgramDistill-Benchmark task snapshot | 6e0a580b252e429da25d261ca202140c2adf28e3 |
ProgramDistill is intended for research on:
For feature-restoration tasks, success is measured by replaying browser traces and checking their expected signals. Cumulative tasks can award partial credit through chain score, the fraction of dependent behaviors restored. Full-reconstruction tasks are scored against multiple verifier targets.
ProgramDistill is not designed or validated for:
The public partial-reconstruction-subset is not a private or
contamination-resistant test set. Every subset task also appears in
partial-reconstruction, and reference solutions and verifiers are distributed
with the benchmark.
| Path | Contents |
|---|---|
README.md | Dataset description, setup instructions, and evaluation guidance |
pyproject.toml | Shared Python runtime dependencies for the bundled solver |
tasks/ | Benchmark task collections, including build recipes, solver agents, reference solutions, browser traces, and verifiers |
The collection paths below are relative to the repository root.
| Path | Contents |
|---|---|
tasks/partial-reconstruction/ | All 4,063 feature-restoration tasks across 26 applications |
tasks/partial-reconstruction-subset/ | Public 300-task model-comparison subset selected from the complete partial-reconstruction corpus |
tasks/full-reconstruction/ | 12 whole-application reconstruction tasks with 590 atomic workflows, 413 cumulative endpoints, and 1,541 cumulative replay stages |
Because partial-reconstruction-subset is contained in
partial-reconstruction, the two collections must not be added together when
counting unique feature-restoration tasks. Collection-level metadata
directories are not tasks; each task directory is a standalone Harbor package.
A complete example is:
tasks/partial-reconstruction-subset/insurance_claim_web__insurance_claim_web__save_common_accident_claim_draft__logic_and_ui__cumulative/
Each task has this top-level layout:
agent/ task-local agent and patching prompt
agent_context.json application, browser, and runtime context
build_images.sh pinned source materialization and image build
environment/ Harbor environment and application source recipe
gold_gate.sh reference-solution validation
instruction.md solver-facing restoration requirement
run.sh Harbor agent entry point
solution/ mask diff, masked source, and reference solution
task.toml task metadata and resource settings
tests/ masked source, replay traces, verifier, and scorer
The task additionally includes:
environment/app/images/recipes/<category>/<app>/upstream_pin.jsonenvironment/app/images/recipes/<category>/<app>/programdistill_overlay.patchtests/masked/ and solution/masked/solution/mask_patch.diffsolution/solve.shtests/traces/tests/scorer/Application source is not represented only as a vendored snapshot. It is
reconstructed from the upstream checkout identified by source_repo and
source_commit, with programdistill_overlay.patch applied.
The principal task.toml fields are:
schema_version
[task] name, description, authors, keywords
[metadata] difficulty, category, task_mode, mask_scope,
lineage_depth, restoration_depth
[agent] timeout_sec
[environment] network_mode, allowed_hosts, build_timeout_sec,
cpus, memory_mb, storage_mb
[verifier] timeout_sec, environment_mode
[verifier.environment] docker_image, network_mode, build_timeout_sec,
cpus, memory_mb, storage_mb
The principal agent_context.json fields are:
browser_config, browser_port, candidate_id, dataset_type,
dev_start_command, freeze_time, instance_id, ProgramDistill_mode,
readiness_ports, repo_path, repository, submission_excluded_paths
Each upstream_pin.json contains:
app, category, source_repo, source_commit, sparse_keep,
overlay_files, reproduces_vendored, license
The principal browser-trace fields are:
action_trace, artifact_paths, candidate_id, description, errors,
expected_signals, final_observation, freeze_time,
mining_certificate_signature, mining_trace_sha256, name,
parent_trace, quality_labels, retry_history, rows, schema, status,
trace_hint, trace_sequence, validated_at
The broken source state is represented by solution/mask_patch.diff and the
files under tests/masked/ and solution/masked/.
Each task in tasks/full-reconstruction/ contains:
The 12 tasks contain 590 atomic workflows, 413 cumulative endpoints, and 1,541 cumulative replay stages.
ProgramDistill does not provide conventional train, validation, and test splits:
partial-reconstruction is the complete 4,063-task feature-restoration
corpus.partial-reconstruction-subset is a public 300-task evaluation selection
from partial-reconstruction.full-reconstruction is a separate whole-application reconstruction task
type.The subset includes all 26 applications and uses these restoration-depth quotas:
| Restoration depth | Tasks |
|---|---|
| 1 | 50 |
| 2 | 45 |
| 3 | 45 |
| 4 | 40 |
| 5 | 35 |
| 6 | 30 |
| 7 | 30 |
| 8 | 25 |
| Total | 300 |
Researchers creating new splits should group tasks by application and lineage to avoid source and behavioral leakage.
Counts for the 2026-08-25 task snapshot are:
| Item | Count |
|---|---|
| Completed applications | 26 |
| Feature-restoration tasks | 4,063 |
| Atomic tasks | 2,862 |
| Cumulative tasks | 1,201 |
| Logic-only masks | 1,997 |
| Logic-and-UI masks | 2,066 |
| Public evaluation subset | 300 |
| Full-reconstruction tasks | 12 |
| Full-reconstruction atomic workflows | 590 |
| Full-reconstruction cumulative endpoints | 413 |
| Full-reconstruction cumulative replay stages | 1,541 |
Verified-behavior discovery records, internal generation records, and saved agent evaluation trajectories are outside the scope of this task release.
Install:
uvStart Docker, then install Harbor:
docker info
docker compose version
uv tool install "harbor==0.23.0" --python 3.12
harbor --version
If harbor is not found, run uv tool update-shell and open a new shell.
Enable Git LFS and clone the dataset:
git lfs install
git clone https://huggingface.co/datasets/microsoft/ProgramDistill
cd ProgramDistill
Git LFS downloads large files automatically during cloning. The dataset contains nearly one million files; allow time for checkout and additional disk space for Git/LFS storage and Docker images.
Use the Hugging Face CLI to download the subset and its shared runtime manifest:
uv tool install huggingface_hub
hf download microsoft/ProgramDistill \
--repo-type dataset \
--include "tasks/partial-reconstruction-subset/**" \
--include "README.md" \
--include "pyproject.toml" \
--include "tasks/README.md" \
--local-dir ProgramDistill-subset
cd ProgramDistill-subset
find tasks/partial-reconstruction-subset -type f -name "*.sh" -exec chmod +x {} +
hf download does not preserve executable permissions or symlinks. The last
command restores shell-script permissions; use Git if you need the original
file modes and symlinks.
From the cloned repository or downloaded subset directory, validate the reference solution:
TASK=tasks/partial-reconstruction-subset/insurance_claim_web__insurance_claim_web__save_common_accident_claim_draft__logic_and_ui__cumulative
"$TASK/gold_gate.sh"
This checks the provided solution without a model or API key.
Then run the bundled solver:
export ANTHROPIC_API_KEY="<your-api-key>"
"$TASK/run.sh" --model anthropic/claude-sonnet-4-5
Both wrappers build images automatically; run.sh also installs the shared
runtime. Model names use LiteLLM's provider/model format.
Optional ten-step smoke test:
MINEPATCH_MAX_STEPS=10 "$TASK/run.sh" --model anthropic/claude-sonnet-4-5
The sample defaults to 1,000 steps and a 10-hour agent timeout. A short smoke test may score 0.0 without making edits; it is not a full solving attempt.
For Full Reconstruction:
TASK=tasks/full-reconstruction/baserow_baserow
"$TASK/gold_gate.sh"
"$TASK/run.sh" --model anthropic/claude-opus-5
Results default to jobs/<job-name>/. Both wrappers accept --jobs-dir and
--job-name.
| File | What to inspect |
|---|---|
result.json | Job completion, stats.n_errored_trials, and aggregate rewards |
<trial>/result.json | exception_info and verifier_result.rewards.reward for the task |
<trial>/exception.txt | Exception details when setup or execution fails |
<trial>/trial.log | Trial execution and environment diagnostics |
<trial>/verifier/test-stdout.txt | Verifier output, including why a submission received its score |
<trial>/verifier/reward.txt | The verifier's recorded reward |
<trial>/agent/trajectory.json | Model-agent actions, configured limits, and exit reason |
Check the recorded errors and reward, not just the exit code: Harbor can exit
with status 0 after a setup failure. The reference solution should score 1.0.
For model runs, exit_reason: abs_step_limit means the step cap was reached,
not necessarily that the task was solved.
Most software-engineering benchmarks derive tasks from written issues and hidden tests. This is expensive to scale, emphasizes codebases with suitable issue histories, and does not directly test whether an agent can infer intended behavior from running software.
ProgramDistill instead treats working application behavior as an executable specification. It creates automatically verified tasks that exercise both browser interaction and source-code modification, with difficulty scaling through behavioral dependencies.
ProgramDistill began with 30 candidate web applications from OSWorld application sources and public open-source repositories. The final feature-restoration release includes 26 applications.
The following candidates are not included:
dinogame_webglbviewer_webslidepuzzle_webcalcom_cal_comFor every released application, each task carries frozen provenance at:
environment/app/images/recipes/<category>/<app>/upstream_pin.json
environment/app/images/recipes/<category>/<app>/programdistill_overlay.patch
upstream_pin.json records the ProgramDistill application ID, source category,
upstream repository URL, source commit, sparse checkout paths, overlay files,
vendoring-reproduction status, and license. The overlay records ProgramDistill
modifications.
Initial application state is reconstructed from the pinned upstream source together with the ProgramDistill overlay, fixtures, and reset scripts included with the task.
Each application is packaged as a stable reference instance and a hot-reloading editable instance. Application state is reset before collection and replay, and a deterministic clock reduces runtime variation.
The following summarizes how the released tasks were created; the construction pipeline implementation is not included in the public release:
The release contains the resulting packaged benchmark tasks, not the ProgramDistill
mining, task-generation, or orchestration pipeline. Internal generation model
and prompt versions, manual review records, generation timelines,
verified-behavior discovery records, and evaluation trajectories are not part
of the release. Task-local prompts under each task's agent/ directory are
included because they are required to execute that packaged task.
The original application source was produced by OSWorld application authors and contributors to the included public open-source repositories. ProgramDistill task statements, masks, traces, verifier metadata, and reference solutions were generated by the ProgramDistill pipeline.
The release is not based on human study participants, crowdworkers, or human annotation of personal behavior.
ProgramDistill annotations are generated automatically. They include behavior names and descriptions, action traces, expected signals, prerequisite relationships, mask scopes, task metadata, and verification outcomes.
Validation is executable:
gold_gate.sh validates the packaged reference solution.Replay establishes that a trace is reproducible against the packaged application. It does not prove that every label is the only possible semantic description of the behavior.
Annotations are machine-generated by the ProgramDistill agent pipeline and deterministic browser, replay, masking, and scoring infrastructure. The current task release does not include internal generation or review records.
ProgramDistill does not collect data from live users or study participants. It processes selected public open-source repositories and task-local fixtures in self-contained benchmark applications.
Public repositories can contain contributor names, public attribution, copyright notices, and contact information required by upstream licenses. Application fixtures can include person-like names, messages, accounts, or credentials used only inside the benchmark. Seeded credentials must not grant access to external systems.
The release should not contain private repositories, live credentials, secrets, or private user data. Reports of unexpected personal or sensitive content should be sent to the maintained dataset contact for review and removal.
partial-reconstruction-subset is fully public,
contained in partial-reconstruction, and distributed with solutions and
verifiers. It is not a hidden test set and may be present in model training
data after release.tasks/partial-reconstruction-subset/ for direct comparison with
reported 300-task evaluations and tasks/partial-reconstruction/ for
broader coverage.partial-reconstruction-subset as held out from
partial-reconstruction.solution/, hidden evaluator assets, or other
excluded paths during an evaluation run.gold_gate.sh after materializing a task to validate the packaged
reference solution.BibTeX:
@article{programdistill2026,
author = {Jeonghye Kim and Minseon Kim and Young Jin Kim and
Matheus Pereira and Marc-Alexandre C{\^o}t{\'e} and
Alessandro Sordoni and Xingdi Yuan and Zhengyan Shi},
title = {ProgramDistill: From Interactive Web Apps to Verifiable
Reference-Guided SWE Tasks},
year = {2026},
eprint = {2609.18805},
archivePrefix = {arXiv},
primaryClass = {cs.SE},
url = {https://arxiv.org/abs/2609.18805}
}
Jeonghye Kim and the ProgramDistill research team.
jeonghye.kim@kaist.ac.kr)4 commits