# Unified 2.1 Auto-Drag + DragAPart Pilot

Run date: 2026-05-24

## Environment

- Python: `/data/250010098/conda_envs/trellis2/bin/python`
- DragAPart HF Space code: `/tmp/DragAPart_hf_space`
- DragAPart checkpoint: `/data/250010098/PAct-Transporter/model_cache/dragapart_hf/drag-a-part-final.pt`
- Stable Diffusion v1.5: `/data/250010098/StableDiffusion/models/stable-diffusion-v1-5`
- CLIP cache:
  - `/data/250010098/PAct-Transporter/model_cache/clip/clip-vit-base-patch32`
  - `/data/250010098/PAct-Transporter/model_cache/clip/clip-vit-large-patch14`

## Adapter Results

The pilot adapter sampled two records per source dataset from Unified Dataset 2.1 SceneSmith-compatible native releases.

- OK: 7
- Failed: 1
- Failure: `GAPartNet household_items/100023`, reason `no valid drag candidate`

Successful adapter records:

| Source | Object | Joint type | Drag record |
| --- | --- | --- | --- |
| PartNetMobility | `household_fixtures/148` | revolute | `PartNetMobility__household_fixtures__148/drag_record.json` |
| PartNetMobility | `household_fixtures/2702` | revolute | `PartNetMobility__household_fixtures__2702/drag_record.json` |
| GAPartNet | `small_appliances/103110` | revolute | `GAPartNet__small_appliances__103110/drag_record.json` |
| GRScenes | `large_furniture/grscenes_cabinet_03b5d18e8a3f_1e6794` | revolute | `GRScenes__large_furniture__grscenes_cabinet_03b5d18e8a3f_1e6794/drag_record.json` |
| GRScenes | `major_appliances/grscenes_washingmachine_aad33f3d6cf9_a11a11` | prismatic | `GRScenes__major_appliances__grscenes_washingmachine_aad33f3d6cf9_a11a11/drag_record.json` |
| ArtVIP | `large_furniture/GREAKER_cabinet_with_drawers_white_84X101cm` | revolute | `ArtVIP__large_furniture__GREAKER_cabinet_with_drawers_white_84X101cm/drag_record.json` |
| ArtVIP | `small_furniture/model_chair_2` | revolute | `ArtVIP__small_furniture__model_chair_2/drag_record.json` |

## DragAPart Smoke Tests

One representative record per source dataset was passed through DragAPart.

| Source | Record | Output |
| --- | --- | --- |
| PartNetMobility | `PartNetMobility__household_fixtures__148/drag_record.json` | `PartNetMobility__household_fixtures__148/dragapart_generated_steps6.png` |
| GAPartNet | `GAPartNet__small_appliances__103110/drag_record.json` | `GAPartNet__small_appliances__103110/dragapart_generated_steps6.png` |
| GRScenes | `GRScenes__large_furniture__grscenes_cabinet_03b5d18e8a3f_1e6794/drag_record.json` | `GRScenes__large_furniture__grscenes_cabinet_03b5d18e8a3f_1e6794/dragapart_generated_steps6.png` |
| ArtVIP | `ArtVIP__large_furniture__GREAKER_cabinet_with_drawers_white_84X101cm/drag_record.json` | `ArtVIP__large_furniture__GREAKER_cabinet_with_drawers_white_84X101cm/dragapart_generated_steps10.png` |

## Notes

- This pilot uses diagnostic point-cloud renderings from the SDF meshes, not photorealistic RGB renders.
- DragAPart runs end-to-end, but image quality is not the final target yet because the conditioning image is out of its expected natural-image domain.
- The current inference runner reloads the 14 GB DragAPart checkpoint per record. A batch runner should load the model once and iterate over records for larger sweeps.
