{
  "algorithm": "grpo",
  "executable": true,
  "field_classification": [
    {
      "classification": "exact",
      "local_target": "loss.clip_ratio",
      "reason": "same vanilla policy clip",
      "resolution_status": "resolved",
      "source_value": 0.2,
      "upstream_field": "actor_rollout_ref.actor.clip_ratio"
    },
    {
      "classification": "exact",
      "local_target": "loss.clip_ratio_c",
      "reason": "same dual-clip coefficient",
      "resolution_status": "resolved",
      "source_value": 3.0,
      "upstream_field": "actor_rollout_ref.actor.clip_ratio_c"
    },
    {
      "classification": "exact",
      "local_target": "loss.clip_ratio_high",
      "reason": "same upper clip",
      "resolution_status": "resolved",
      "source_value": 0.2,
      "upstream_field": "actor_rollout_ref.actor.clip_ratio_high"
    },
    {
      "classification": "exact",
      "local_target": "loss.clip_ratio_low",
      "reason": "same lower clip",
      "resolution_status": "resolved",
      "source_value": 0.2,
      "upstream_field": "actor_rollout_ref.actor.clip_ratio_low"
    },
    {
      "classification": "exact",
      "local_target": null,
      "reason": "entropy regularization is disabled in both runtimes",
      "resolution_status": "resolved",
      "source_value": 0.0,
      "upstream_field": "actor_rollout_ref.actor.entropy_coeff"
    },
    {
      "classification": "exact",
      "local_target": "loss.aggregation",
      "reason": "token-mean aggregation",
      "resolution_status": "resolved",
      "source_value": "token-mean",
      "upstream_field": "actor_rollout_ref.actor.loss_agg_mode"
    },
    {
      "classification": "exact",
      "local_target": "train.learning_rate",
      "reason": "same optimizer learning rate",
      "resolution_status": "resolved",
      "source_value": 1e-05,
      "upstream_field": "actor_rollout_ref.actor.optim.lr"
    },
    {
      "classification": "exact",
      "local_target": "train.warmup_steps",
      "reason": "same optimizer-step count",
      "resolution_status": "resolved",
      "source_value": 0,
      "upstream_field": "actor_rollout_ref.actor.optim.lr_warmup_steps"
    },
    {
      "classification": "exact",
      "local_target": "train.weight_decay",
      "reason": "same optimizer coefficient",
      "resolution_status": "resolved",
      "source_value": 0.01,
      "upstream_field": "actor_rollout_ref.actor.optim.weight_decay"
    },
    {
      "classification": "exact",
      "local_target": "train.opd_freshness",
      "reason": "one fresh-policy update pass is supported",
      "resolution_status": "resolved",
      "source_value": 1,
      "upstream_field": "actor_rollout_ref.actor.ppo_epochs"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "train.gradient_accumulation_steps",
      "reason": "one logical upstream mini-batch is physically microbatched on one GPU",
      "resolution_status": "resolved",
      "source_value": 8,
      "upstream_field": "actor_rollout_ref.actor.ppo_mini_batch_size"
    },
    {
      "classification": "exact",
      "local_target": null,
      "reason": "actor-loss KL is disabled in both runtimes",
      "resolution_status": "resolved",
      "source_value": false,
      "upstream_field": "actor_rollout_ref.actor.use_kl_loss"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "models.student.gradient_checkpointing",
      "reason": "same activation-memory technique",
      "resolution_status": "resolved",
      "source_value": true,
      "upstream_field": "actor_rollout_ref.model.enable_gradient_checkpointing"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "models.student.lora.alpha",
      "reason": "same PEFT scale when enabled",
      "resolution_status": "resolved",
      "source_value": 32,
      "upstream_field": "actor_rollout_ref.model.lora_alpha"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "models.student.lora.r",
      "reason": "same PEFT rank when enabled",
      "resolution_status": "resolved",
      "source_value": 16,
      "upstream_field": "actor_rollout_ref.model.lora_rank"
    },
    {
      "classification": "exact",
      "local_target": "models.student.model_id",
      "reason": "same actor checkpoint identity",
      "resolution_status": "resolved",
      "source_value": "Qwen/Qwen3-0.6B",
      "upstream_field": "actor_rollout_ref.model.path"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "models.student.lora.target_modules",
      "reason": "same PEFT target names when enabled",
      "resolution_status": "resolved",
      "source_value": [
        "q_proj",
        "k_proj",
        "v_proj",
        "o_proj",
        "gate_proj",
        "up_proj",
        "down_proj"
      ],
      "upstream_field": "actor_rollout_ref.model.target_modules"
    },
    {
      "classification": "locally_lowered",
      "local_target": "memory planner",
      "reason": "recorded as an upstream engine hint; local placement is planned separately",
      "resolution_status": "resolved",
      "source_value": 0.6,
      "upstream_field": "actor_rollout_ref.rollout.gpu_memory_utilization"
    },
    {
      "classification": "exact",
      "local_target": "rollout.samples_per_prompt",
      "reason": "same grouped sample count",
      "resolution_status": "resolved",
      "source_value": 4,
      "upstream_field": "actor_rollout_ref.rollout.n"
    },
    {
      "classification": "locally_lowered",
      "local_target": "rollout.backend",
      "reason": "distributed engine selection becomes a validated local HF backend",
      "resolution_status": "resolved",
      "source_value": "vllm",
      "upstream_field": "actor_rollout_ref.rollout.name"
    },
    {
      "classification": "exact",
      "local_target": "rollout.temperature",
      "reason": "same behavior-policy temperature",
      "resolution_status": "resolved",
      "source_value": 1.0,
      "upstream_field": "actor_rollout_ref.rollout.temperature"
    },
    {
      "classification": "distributed_only",
      "local_target": null,
      "reason": "tensor parallel placement is not part of one-GPU semantics",
      "resolution_status": "resolved",
      "source_value": 8,
      "upstream_field": "actor_rollout_ref.rollout.tensor_model_parallel_size"
    },
    {
      "classification": "exact",
      "local_target": "rollout.top_k",
      "reason": "same top-k bound",
      "resolution_status": "resolved",
      "source_value": 0,
      "upstream_field": "actor_rollout_ref.rollout.top_k"
    },
    {
      "classification": "exact",
      "local_target": "rollout.top_p",
      "reason": "same nucleus threshold",
      "resolution_status": "resolved",
      "source_value": 1.0,
      "upstream_field": "actor_rollout_ref.rollout.top_p"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "algorithm.name",
      "reason": "pinned estimator implementation",
      "resolution_status": "resolved",
      "source_value": "grpo",
      "upstream_field": "algorithm.adv_estimator"
    },
    {
      "classification": "informational_only",
      "local_target": null,
      "reason": "not consumed by the grpo estimator",
      "resolution_status": "resolved",
      "source_value": 1.0,
      "upstream_field": "algorithm.gamma"
    },
    {
      "classification": "informational_only",
      "local_target": null,
      "reason": "not consumed by the grpo estimator",
      "resolution_status": "resolved",
      "source_value": 1.0,
      "upstream_field": "algorithm.lam"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "algorithm.name",
      "reason": "false selects Dr.GRPO centering",
      "resolution_status": "resolved",
      "source_value": true,
      "upstream_field": "algorithm.norm_adv_by_std_in_grpo"
    },
    {
      "classification": "exact",
      "local_target": "algorithm.kl_coef",
      "reason": "reference-policy reward KL is disabled in both runtimes",
      "resolution_status": "resolved",
      "source_value": false,
      "upstream_field": "algorithm.use_kl_in_reward"
    },
    {
      "classification": "exact",
      "local_target": "source.max_prompt_length",
      "reason": "same token bound",
      "resolution_status": "resolved",
      "source_value": 128,
      "upstream_field": "data.max_prompt_length"
    },
    {
      "classification": "exact",
      "local_target": "source.max_response_length",
      "reason": "same token bound",
      "resolution_status": "resolved",
      "source_value": 24,
      "upstream_field": "data.max_response_length"
    },
    {
      "classification": "exact",
      "local_target": "source.prompt_key",
      "reason": "same Parquet column",
      "resolution_status": "resolved",
      "source_value": "prompt",
      "upstream_field": "data.prompt_key"
    },
    {
      "classification": "exact",
      "local_target": "source.seed",
      "reason": "same seed",
      "resolution_status": "resolved",
      "source_value": 17,
      "upstream_field": "data.seed"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "source.shuffle",
      "reason": "same data policy",
      "resolution_status": "resolved",
      "source_value": true,
      "upstream_field": "data.shuffle"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "train.rollouts_per_cycle",
      "reason": "same logical prompts per rollout",
      "resolution_status": "resolved",
      "source_value": 2,
      "upstream_field": "data.train_batch_size"
    },
    {
      "classification": "exact",
      "local_target": "source.train_files",
      "reason": "same Parquet inputs",
      "resolution_status": "resolved",
      "source_value": [
        "data/rl-prompts.parquet"
      ],
      "upstream_field": "data.train_files"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "source.truncation",
      "reason": "same policy",
      "resolution_status": "resolved",
      "source_value": "error",
      "upstream_field": "data.truncation"
    },
    {
      "classification": "exact",
      "local_target": "source.val_files",
      "reason": "same Parquet inputs",
      "resolution_status": "resolved",
      "source_value": [],
      "upstream_field": "data.val_files"
    },
    {
      "classification": "exact",
      "local_target": "models.student.dtype",
      "reason": "local runtime choice",
      "resolution_status": "resolved",
      "source_value": "auto",
      "upstream_field": "miniverl.actor.dtype"
    },
    {
      "classification": "exact",
      "local_target": "models.student.lora.enabled",
      "reason": "explicit local parameterization choice",
      "resolution_status": "resolved",
      "source_value": true,
      "upstream_field": "miniverl.actor.lora_enabled"
    },
    {
      "classification": "exact",
      "local_target": "models.student.quantization",
      "reason": "local runtime choice",
      "resolution_status": "resolved",
      "source_value": "nf4",
      "upstream_field": "miniverl.actor.quantization"
    },
    {
      "classification": "exact",
      "local_target": "models.student.revision",
      "reason": "immutable actor snapshot revision",
      "resolution_status": "resolved",
      "source_value": "c1899de289a04d12100db370d81485cdf75e47ca",
      "upstream_field": "miniverl.actor.revision"
    },
    {
      "classification": "exact",
      "local_target": "models.student.tokenizer_revision",
      "reason": "immutable tokenizer snapshot revision",
      "resolution_status": "resolved",
      "source_value": "c1899de289a04d12100db370d81485cdf75e47ca",
      "upstream_field": "miniverl.actor.tokenizer_revision"
    },
    {
      "classification": "exact",
      "local_target": "memory.strategy",
      "reason": "local placement choice",
      "resolution_status": "resolved",
      "source_value": "resident",
      "upstream_field": "miniverl.memory.strategy"
    },
    {
      "classification": "exact",
      "local_target": "reward.provider",
      "reason": "explicit trusted local reward implementation",
      "resolution_status": "resolved",
      "source_value": "exact_answer",
      "upstream_field": "miniverl.reward.provider"
    },
    {
      "classification": "exact",
      "local_target": "rollout.backend",
      "reason": "local runtime choice",
      "resolution_status": "resolved",
      "source_value": "hf_cached",
      "upstream_field": "miniverl.rollout.backend"
    },
    {
      "classification": "exact",
      "local_target": "train.trajectory_batch_size",
      "reason": "physical-only one-GPU batch size",
      "resolution_status": "resolved",
      "source_value": 1,
      "upstream_field": "miniverl.update.trajectory_batch_size"
    },
    {
      "classification": "exact",
      "local_target": "run.name",
      "reason": "same run label",
      "resolution_status": "resolved",
      "source_value": "qwen3-grpo-local",
      "upstream_field": "trainer.experiment_name"
    },
    {
      "classification": "informational_only",
      "local_target": null,
      "reason": "external logging is not activated",
      "resolution_status": "resolved",
      "source_value": [
        "console"
      ],
      "upstream_field": "trainer.logger"
    },
    {
      "classification": "distributed_only",
      "local_target": null,
      "reason": "resource placement lowers to one local CUDA device",
      "resolution_status": "resolved",
      "source_value": 8,
      "upstream_field": "trainer.n_gpus_per_node"
    },
    {
      "classification": "distributed_only",
      "local_target": null,
      "reason": "resource placement lowers to one local process",
      "resolution_status": "resolved",
      "source_value": 2,
      "upstream_field": "trainer.nnodes"
    },
    {
      "classification": "semantically_conformant",
      "local_target": "run.tags",
      "reason": "same provenance label",
      "resolution_status": "resolved",
      "source_value": "mini-verl",
      "upstream_field": "trainer.project_name"
    },
    {
      "classification": "exact",
      "local_target": "train.save_every_cycles",
      "reason": "same rollout-iteration interval",
      "resolution_status": "resolved",
      "source_value": 1,
      "upstream_field": "trainer.save_freq"
    },
    {
      "classification": "exact",
      "local_target": "train.eval_every_cycles",
      "reason": "same rollout-iteration interval",
      "resolution_status": "resolved",
      "source_value": -1,
      "upstream_field": "trainer.test_freq"
    },
    {
      "classification": "informational_only",
      "local_target": null,
      "reason": "recorded but not used when total_training_steps supplies the exact optimizer-step cap",
      "resolution_status": "resolved",
      "source_value": 1,
      "upstream_field": "trainer.total_epochs"
    },
    {
      "classification": "exact",
      "local_target": "train.cycles",
      "reason": "one local cycle is one upstream rollout iteration",
      "resolution_status": "resolved",
      "source_value": 2,
      "upstream_field": "trainer.total_training_steps"
    }
  ],
  "generated_path": "verl-rl-v0.9-single-gpu.yaml",
  "generated_recipe_sha256": "8a47fa6edf8679a8c82e41e8c5e0fc0aec30898567bc6f5ce6904510c8b2545a",
  "generated_recipe_validated": true,
  "input_contract": "resolved documented verl v0.9 RL subset; not arbitrary Hydra YAML",
  "local_lowering": [
    {
      "kind": "physical_runtime",
      "local_value": "hf_cached",
      "source_field": "actor_rollout_ref.rollout.name",
      "source_value": "vllm"
    },
    {
      "kind": "distributed_only",
      "local_value": 1,
      "source_field": "actor_rollout_ref.rollout.tensor_model_parallel_size",
      "source_value": 8
    },
    {
      "kind": "distributed_only",
      "local_value": {
        "devices": 1,
        "processes": 1
      },
      "source_field": "trainer.n_gpus_per_node/trainer.nnodes",
      "source_value": {
        "n_gpus_per_node": 8,
        "nnodes": 2
      }
    }
  ],
  "profile": "verl-rl-v0.9-single-gpu-v1",
  "profile_field_rules_sha256": "d37d10c946993d1da840eda7157e4577fcd7c77ae238852c84b03298097e660f",
  "report_path": "verl-rl-v0.9-single-gpu.import-report.json",
  "required_user_input": [],
  "schema_version": 1,
  "source_config_sha256": "52fb94c28c6f4a878f584c1bcc9997ca35d4ad979e91c02071618f5a4a0f0a07",
  "source_verl": {
    "commit": "483b8a009ba3a97563edee3a19887e4862b8094a",
    "repository": "https://github.com/verl-project/verl",
    "tag": "v0.9.0"
  },
  "status": "accepted",
  "unresolved_fields": [],
  "unsupported_fields": []
}
