### 0
helm dependency build <REPO_ROOT>/charts/miles-run

### 1
helm upgrade --install miles-run-260101-000000-000-all <REPO_ROOT>/charts/miles-run --namespace rl --values <SANDBOX>/infra.yaml --values <SANDBOX>/cluster-storage/miles_data/miles-runs/260101-000000-000/values/values-260101-000000-000001.yaml --dry-run --output json

### 2
kubectl delete job miles-run-260101-000000-000-all-uninstall --namespace rl --ignore-not-found --cascade foreground

### 3
helm upgrade --install miles-run-260101-000000-000-all <REPO_ROOT>/charts/miles-run --namespace rl --values <SANDBOX>/infra.yaml --values <SANDBOX>/cluster-storage/miles_data/miles-runs/260101-000000-000/values/values-260101-000000-000001.yaml

### pseudo file 1
run:
  env:
    CUDA_DEVICE_MAX_CONNECTIONS: '1'
    MILES_SNAPSHOT_RECORD_DIR: ''
    MILES_UPDATE_SNAPSHOTS: ''
    PYTHONUNBUFFERED: '1'
  id: '260101-000000-000'
  inferenceEngines:
  - command:
    - 'python'
    - '-m'
    - 'sglang.launch_server'
    - '--node-rank'
    - '$(LWS_WORKER_INDEX)'
    - '--dist-init-addr'
    - '$(LWS_LEADER_ADDRESS):9000'
    env:
      NVSHMEM_DISABLE_NCCL: '1'
    meta:
      gpu_ids: '0,1,2,3,4,5,6,7'
    name: 'inference-engine-0-0'
    objectName: 'miles-run-26-98cf6da492ec-inference-engine-0-0'
    poolId: 'inference-engine-0-0'
    ports:
    - name: 'primary'
      port: 8000
    - name: 'dist-init'
      port: 9000
    replicas: 2
    resources:
      limits:
        nvidia.com/gpu: 8
    size: 2
  launchRecord: '<SANDBOX>/cluster-storage/miles_data/miles-runs/260101-000000-000/launches/launch-260101-000000-000001.json'
  objectNames:
    colocatePairing: 'miles-run-260101-98cf6da492ec-colocate-pairing'
    mooncakeMaster: 'miles-run-260101-98cf6da492ec-mooncake-master'
    orchestrator: 'miles-run-260101-000000-000-all-orchestrator'
    platformRead: 'miles-run-260101-000000-000-all-platform-read'
    platformReadDelete: 'miles-run-26-98cf6da492ec-platform-read-delete'
    uninstall: 'miles-run-260101-000000-000-all-uninstall'
    uninstallManifest: 'miles-run-2601-98cf6da492ec-uninstall-manifest'
  orchestrator:
    command:
    - 'python'
    - '/repo/train.py'
    - '--rollout-num-gpus'
    - '8'
    - '--cluster-backend'
    - 'kubernetes'
    - '--run-uuid'
    - 'f52ecf8e9d7d4889'
  stateFile: '<SANDBOX>/cluster-storage/miles_data/miles-runs/260101-000000-000/state/orchestrator-260101-000000-000001.state'
  staticWorkers:
  - command:
    - 'python'
    - '-m'
    - 'sglang_router.launch_router'
    - '--host'
    - '0.0.0.0'
    - '--port'
    - '30000'
    name: 'inference-router-0'
    objectName: 'miles-run-2601-98cf6da492ec-inference-router-0'
    poolId: 'inference-router-0'
    ports:
    - name: 'primary'
      port: 30000
    replicas: 1
  trainerEngines:
  - command:
    - '<PYTHON>'
    - '-m'
    - 'miles.utils.workers.process_supervisor'
    - '--num-subprocesses'
    - '8'
    - '--'
    - '<PYTHON>'
    - '-m'
    - 'miles.utils.workers.serving.serve'
    - '--specs'
    - 'miles.ray.specs.entrypoint.compute_specs_from_argv'
    - '--pool-id'
    - 'trainer-engine-actor'
    - '--'
    - '--rollout-num-gpus'
    - '8'
    - '--cluster-backend'
    - 'kubernetes'
    - '--run-uuid'
    - 'f52ecf8e9d7d4889'
    meta:
      gpu_ids: '0,1,2,3,4,5,6,7'
    name: 'trainer-engine-actor'
    objectName: 'miles-run-26-98cf6da492ec-trainer-engine-actor'
    poolId: 'trainer-engine-actor'
    ports:
    - name: 'master'
      port: 9000
    - name: 'rpc'
      port: 8000
    replicas: 2
    resources:
      limits:
        nvidia.com/gpu: 8

