차량 한 대가 -63°로 뒤집혔다
차량 호송(convoy) 시나리오는 이미 검증을 마친 상태였습니다 — 21대가 줄지어 멀쩡히 주행. 그런데 어느 날 다시 돌리니, 한 대가 roll −63°로 벌렁 뒤집혔습니다. 어제까지 되던 게 오늘 안 된다. 가장 헷갈리는 종류의 버그입니다.
물리를 의심했지만
전복이니 당연히 물리를 의심했습니다 — 질량 분포? 서스펜션? 충돌체? 바퀴 마찰? 며칠을 차량 물리 파라미터만 들여다봤습니다. 그런데 이상했습니다. 다른 20대는 멀쩡한데 한 대만, 그것도 특정 위치에서만 뒤집혔습니다.
💡 "한 대만, 특정 위치에서"가 단서였다 — 차량 물리가 문제라면 비슷한 차들이 비슷하게 굴러야 합니다. 특정 위치에서만 한 대가 뒤집힌다는 건, 차가 아니라 그 위치의 지형을 의심하라는 신호였습니다. 증상의 패턴이 범인의 위치를 가리킵니다.
진짜 범인 — 환경이 조용히 바뀌었다
지형을 확인하니 답이 나왔습니다. 그 환경은 원래 검증된 평탄 지형을 쓰고 있었는데, 며칠 전 어떤 일괄(batch) 작업이 환경 DB를 가파른 면(facet)이 있는 다른 버전으로 조용히 바꿔치기한 것이었습니다. 차는 그대로였고, 발밑의 땅이 바뀐 것입니다.
도식 렌더링 중…
환경 DB를 검증된 평탄 버전으로 되돌리자, 그 차량의 roll이 −63°에서 정상 범위(4.5°)로 돌아왔습니다. 물리는 처음부터 멀쩡했습니다.
차량 roll 각도 비교. 조용히 갈아끼워진 가파른 지형에선 63°로 전복(롤오버 위험선 45° 초과), 검증된 평탄 지형으로 복구하니 4.5°로 정상. 차량 코드는 전혀 손대지 않았다.
교훈 — config가 물리 버그로 위장한다
⚠️ "환경이 이상하면 문서화된 정본(canonical)과 비교하라" — 어떤 일괄 작업은 누락된 자산을 placeholder로 채우는 것뿐 아니라, 멀쩡한 자산을 틀린 버전으로 갈아끼우기도 합니다. 그리고 그 결과는 물리 버그처럼 보입니다(전복·미끄러짐). 환경이 의심스러우면, 차량 코드를 파기 전에 그 환경이 검증된 정본과 같은 버전인지부터 대조하세요.
이건 silent fail·추측 게이트와 한 가족입니다 — 조용한 변경이 엉뚱한 증상으로 나타나 디버깅을 엉뚱한 곳으로 끕니다. 차이는, 이번엔 코드가 아니라 *데이터(환경 버전)*가 조용히 바뀐 것입니다.
한 줄 정리
📌 검증 끝난 호송에서 차량 한 대가 −63° 전복했지만, 범인은 물리가 아니라 환경 DB가 검증된 평탄 지형에서 가파른 버전으로 조용히 바뀐 것이었다. "한 대만·특정 위치"가 지형을 가리켰다. 환경이 이상하면 차량 코드보다 환경이 정본과 같은 버전인지부터 대조하라 — config가 물리 버그로 위장한다.
