{
  "pipeline": [
    {
      "phase": 0,
      "name": "construct_seed_profiles_tasks_outputs_feedback_rubrics_briefs",
      "status": "planning"
    },
    {
      "phase": 1,
      "name": "train_UserSim_full_parameter_SFT",
      "backbone": "Qwen3-4B",
      "checkpoint": "Qwen3-4B-UserSim"
    },
    {
      "phase": 2,
      "name": "optional_align_UserSim_with_DPO_or_GRPO",
      "frozen_after": true
    },
    {
      "phase": 3,
      "name": "freeze_UserSim",
      "constraint": "no Phase-4 UserSim improvement after Controller training"
    },
    {
      "phase": 4,
      "name": "train_Controller_full_parameter_SFT",
      "backbone": "Qwen3-4B",
      "checkpoint": "Qwen3-4B-Controller"
    },
    {
      "phase": 5,
      "name": "train_Controller_DPO_or_GRPO_with_frozen_UserSim_and_frozen_Generator_rollouts"
    },
    {
      "phase": 6,
      "name": "evaluate_on_held_out_users_feedback_regimes_judges_human_audit"
    }
  ],
  "constraints": {
    "no_joint_UserSim_Controller_co_training": true,
    "no_alternating_phase_after_controller_training": true,
    "generator_main_setting": "Frozen Generator",
    "full_parameter_fine_tuning": {
      "Qwen3-4B-UserSim": true,
      "Qwen3-4B-Controller": true,
      "Qwen3-4B-Generator-optional": true
    }
  },
  "recommended_infra": [
    "bf16",
    "sequence_packing",
    "gradient_checkpointing",
    "FSDP",
    "DeepSpeed ZeRO-3",
    "separate_checkpoints"
  ],
  "rollout_loop": [
    "Controller samples briefs",
    "Frozen Generator writes y_{t+1}",
    "Frozen UserSim/judge scores",
    "DPO/GRPO updates Controller only"
  ]
}
