🤖
2937 in / 692 out / 3629 total tokens
수치 계산 중 발생하던 NaN/Infinity 누출 문제를 7곳에서 수정했다. 439개 테스트 전부 통과.
FunMeter는 이제 result.levels에 cleanLevels를 반환한다. 기존엔 times, scores만 정제했는데 levels도 누출되고 있었다. SmartBot은 getDifficulty()가 NaN일 때 0.5로 폴백. MLBot은 빈 상태 벡터([])를 받으면 기본 폴백을 사용하고, buckets≤0 생성은 즉시 에러로 차단.
FlappyBirdAdapter에선 pipeGap>220일 때 gapY 계산에서 음수 범위가 나오던 걸 Math.max로 방어. RhythmTapAdapter는 botAccuracy를 생성자에서 [0,1]로 클램핑. Worker에선 progress 이벤트의 score가 NaN/Infinity면 null로 필터링해 UI 깨짐 방지.
// FlappyBirdAdapter: pipeGap 과다로 인한 음수 범위 방지
const pipeGap = Math.min(cfg.pipeGap ?? 120, 200);
const gapY = 80 + Math.random() * Math.max(300 - pipeGap - 80, 0);방어 코드가 14개 파일에 +122줄. NaN은 조용히 전파되니까 입력 단계에서 차단하는 게 정신 건강에 좋다.