Team Ai
Datasetpublic

Self-CriTeach/pddl-planning-data

PDDL Planning Data (Self-CriTeach) PDDL-style planning problem–plan pairs used to train and evaluate Self-CriTeach models. Each example is a single planning problem in the Blocksworld family (and three unseen extensions for OOD evaluation), formatted as static predicates + initial dynamic state + ground-truth action sequence. Companion to: Paper: Self-CriTeach: LLM Self-Teaching and Self-Critiquing for Improving Robotic Planning Code: https://github.com/markli1hoshipu/Plan_LLM… See the full description on the dataset page: https://huggingface.co/datasets/Self-CriTeach/pddl-planning-data.

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes54downloads
Dataset Card

PDDL Planning Data (Self-CriTeach)

PDDL-style planning problem–plan pairs used to train and evaluate Self-CriTeach models. Each example is a single planning problem in the Blocksworld family (and three unseen extensions for OOD evaluation), formatted as static predicates + initial dynamic state + ground-truth action sequence.

Companion to:

Quick start

python
from datasets import load_dataset

ds = load_dataset("Self-CriTeach/pddl-planning-data")
print(ds)                  # train: 7476  /  eval: 2800
print(ds["train"][0])      # one PDDL problem

Schema

Each row is a JSON object with three fields:

FieldTypeDescription
static_statelist[list[str]]Time-invariant predicates: object/robot/table types and IDs.
dynamic_stateslist[list[list[str]]]Sequence of dynamic-state snapshots; dynamic_states[0] is the initial state, [-1] is the goal.
actionslist[list[str]]Ground-truth plan as a list of [action_name, arg1, arg2, …] tuples.

Action vocabulary: pick-up, put-down, unstack, stack, rotate. See configs/prompts/eval_user_prompt_template.md in the code repo for the full PDDL semantics.

Splits

train (7,476 examples) — Blocksworld training data

File# examplesTask
train/align_data.jsonl1,000BW Align (rotate + stack to satisfy alignment predicate)
train/stack_data.jsonl1,000BW Classic — stacking sub-task
train/unstack_data.jsonl1,000BW Classic — unstacking sub-task
train/reorder_data.jsonl2,000BW Classic — full reorder (pick up + stack chain)
train/suboptimal_data.jsonl1,999BW Hard — long-horizon (up to 60 steps), trajectories may be suboptimal
train/suboptimal_data_extra.jsonl477BW Hard — additional long-horizon cases

eval (2,800 examples) — seen + unseen task evaluation

File# examplesDomainType
eval/align_data_eval.jsonl400BW Alignseen
eval/stack_data_eval.jsonl400BW Classic stackseen
eval/unstack_data_eval.jsonl400BW Classic unstackseen
eval/reorder_data_eval.jsonl400BW Classic reorderseen
eval/pack_up_machining_parts_eval.jsonl400Machine Parts Assemblyunseen
eval/prepare_experiment_eval.jsonl400Prepare Experimentunseen
eval/reorganize_room_table_top_eval.jsonl400Reorganize Roomunseen

Raw Materials (optional, under raw/)

The train/ and eval/ JSONLs above are the canonical, clean form. For reproducibility and downstream research, we also include the upstream raw artifacts that produced them — the original planner outputs, plus every intermediate stage of the Self-CriTeach training pipeline. Most users do not need these; use `load_dataset(...)` and skip to the next section.

Two large directories were packaged as tar archives to keep the file count manageable; everything else is shipped as-is.

raw/primary_pkl.tar — raw planning trajectories (138 MB after extract)

19,277 .pkl files, organized by task family: align_data/, stack_data/, unstack_data/, reorder_data/, pack_up_machining_parts/, prepare_experiment/, reorganize_room_table_top/. Each pickle is a Python list of 25 (state, action) tuples; each state is {'static': set(...), 'dynamic': set(...)}. The train/*.jsonl splits above are derived from this pool by flattening.

python
import pickle
with open("raw/primary_pkl/align_data/cleaned_align_plan_10_0.pkl", "rb") as f:
    trajectory = pickle.load(f)        # list[(state_dict, action_tuple)]

raw/eval_pkl.tar — raw eval trajectories (17 MB after extract)

2,753 .pkl files, same schema as primary_pkl. The eval/*.jsonl splits above are the flattened form.

raw/processed/ — CoT-preparation intermediates (~120 MB)

  • —processed/cot_prep_json/cot_generated/ — extracted CoT traces ready for next-stage prompting.
  • —processed/train/ — pre-CoT training-ready jsonl.

Extracting tarballs

bash
huggingface-cli download Self-CriTeach/pddl-planning-data --repo-type dataset --local-dir ./pddl
cd pddl/raw
tar -xf primary_pkl.tar             # → ./primary_pkl/<task>/<file>.pkl
tar -xf eval_pkl.tar                # → ./eval_pkl/<task>/<file>.pkl
Note: downstream pipeline artifacts (CoT distillation outputs from multiple teacher LLMs, DPO preference pairs, RL rollouts, Pass@k base outputs) are not released here. They can be regenerated from the canonical splits using the scripts in the code repository.

Disclaimer on raw/

The raw artifacts are released as-is and may contain duplicated or experimental files that were not used in the published paper. The canonical train / eval JSONL splits above are the supported entry point. Schema for each raw category is partially undocumented; the GitHub repo's scripts (scripts/data/generate_cot.py, prepare_dpo_data.py, etc.) are the source of truth for how each was produced.

Citation

bibtex
@article{huang2025selfcriteach,
  title         = {Self-CriTeach: LLM Self-Teaching and Self-Critiquing for Improving Robotic Planning via Automated Domain Generation},
  author        = {Huang, Jinbang and Li, Zhiyuan and Hu, Yuanzhao and Zhang, Zhanguang and Coates, Mark and Quan, Xingyue and Zhang, Yingxue},
  journal       = {arXiv preprint arXiv:2509.21543},
  year          = {2025},
  url           = {https://arxiv.org/abs/2509.21543}
}

License

Apache 2.0.