[
  {
    "rule_no": "RB-01",
    "symptom_pattern": "CUDA out of memory",
    "cause_code": "gpu_oom",
    "priority": 10,
    "first_action": "배치 크기를 절반으로 줄이거나 gradient checkpointing 을 켜고 같은 설정으로 다시 돌립니다.",
    "escalate_to": null,
    "registered_on": "2026-03-04"
  },
  {
    "rule_no": "RB-02",
    "symptom_pattern": "container exceeded memory limit",
    "cause_code": "gpu_oom",
    "priority": 20,
    "first_action": "컨테이너 메모리 상한을 워크로드 실측치 위로 올리고 다시 돌립니다.",
    "escalate_to": null,
    "registered_on": "2026-04-11"
  },
  {
    "rule_no": "RB-03",
    "symptom_pattern": "NCCL error",
    "cause_code": "nccl_timeout",
    "priority": 10,
    "first_action": "NCCL_DEBUG=INFO 로 다시 돌려 어느 랭크에서 멈추는지 확인하고 인터커넥트 상태를 봅니다.",
    "escalate_to": "SRE",
    "registered_on": "2026-03-04"
  },
  {
    "rule_no": "RB-04",
    "symptom_pattern": "watchdog caught collective operation timeout",
    "cause_code": "nccl_timeout",
    "priority": 5,
    "first_action": "타임아웃 값을 늘리기 전에 랭크별 진행 로그를 맞춰 지연된 랭크를 먼저 찾습니다.",
    "escalate_to": "SRE",
    "registered_on": "2026-05-20"
  },
  {
    "rule_no": "RB-05",
    "symptom_pattern": "manifest unknown",
    "cause_code": "image_pull_failed",
    "priority": 10,
    "first_action": "이미지 태그가 레지스트리에 있는지 확인하고 없으면 빌드 파이프라인을 다시 돌립니다.",
    "escalate_to": null,
    "registered_on": "2026-03-04"
  },
  {
    "rule_no": "RB-06",
    "symptom_pattern": "authentication required",
    "cause_code": "image_pull_failed",
    "priority": 5,
    "first_action": "클러스터의 레지스트리 인증 정보를 갱신하고 다시 받습니다.",
    "escalate_to": "SRE",
    "registered_on": "2026-06-02"
  },
  {
    "rule_no": "RB-07",
    "symptom_pattern": "exceeded quota: gpu-quota",
    "cause_code": "quota_exceeded",
    "priority": 10,
    "first_action": "고객사 쿼터 잔여를 확인하고 모자라면 증설 요청을 올립니다.",
    "escalate_to": "계정 담당",
    "registered_on": "2026-03-04"
  },
  {
    "rule_no": "RB-08",
    "symptom_pattern": "No such file or directory: '/mnt/ckpt",
    "cause_code": "checkpoint_missing",
    "priority": 10,
    "first_action": "체크포인트 경로가 마운트됐는지 확인하고 경로를 실제 볼륨에 맞춥니다.",
    "escalate_to": null,
    "registered_on": "2026-04-11"
  },
  {
    "rule_no": "RB-09",
    "symptom_pattern": "No such file or directory: '/mnt/data",
    "cause_code": "dataset_missing",
    "priority": 10,
    "first_action": "데이터 볼륨이 마운트됐는지 확인하고 경로를 실제 볼륨에 맞춥니다.",
    "escalate_to": null,
    "registered_on": "2026-05-20"
  },
  {
    "rule_no": "RB-10",
    "symptom_pattern": "server started on",
    "cause_code": "run_succeeded",
    "priority": 10,
    "first_action": "조치가 필요하지 않습니다. 정상 기동으로 기록합니다.",
    "escalate_to": null,
    "registered_on": "2026-03-04"
  },
  {
    "rule_no": "RB-11",
    "symptom_pattern": "avg ttft",
    "cause_code": "run_succeeded",
    "priority": 20,
    "first_action": "조치가 필요하지 않습니다. 지연 지표를 운영 기록에 남깁니다.",
    "escalate_to": null,
    "registered_on": "2026-06-02"
  },
  {
    "rule_no": "RB-12",
    "symptom_pattern": "Tokenizer class",
    "cause_code": "config_mismatch",
    "priority": 10,
    "first_action": "토크나이저 클래스와 프레임워크 버전이 맞는지 확인하고 이미지 버전을 올립니다.",
    "escalate_to": null,
    "registered_on": "2026-07-15"
  }
]