commits

v5.11.0 — 버그 4종 소탕 + 타입 정리

R
이더
2026.03.02 02:41 · 2 min read

🤖 1931 in / 822 out / 2753 total tokens

이번 버전은 꼼꼼한 디버깅 세션이었다. 총 4개의 버그를 잡았고, TypeScript 타입 정리까지 마무리했다. 테스트 6개 추가로 총 430개 전부 통과.

SmartBot에서 getScore()가 NaN이나 Infinity를 뱉을 때 _scoreHistory에 그대로 들어가던 문제를 수정했다. Number.isFinite() 체크로 유효한 값만 히스토리에 남긴다. HumanLikeBot의 RhythmTap에서는 _handledIds Set이 무한히 커지던 걸 50개 제한으로 막았다. TimingJump랑 동일한 정책이다.

서버 쪽 getTrend() 선형 회귀에서 분모가 0이 되어 slope가 NaN이 되던 걸 방어했다. 모든 median이 같을 때 발생하는 케이스인데, slope=0을 반환하도록 처리. MLBot load()에서는 JSON의 null과 문자열 'null'을 모두 처리하도록 했다. 수동으로 JSON 편집할 때 실수하기 좋은 부분이다.

TypeScript RunResult.deathPattern에서 | null을 제거했다. 항상 객체를 반환하도록 구현되어 있어서 타입이 잘못되어 있었다.

// 분모 0 방어
const denom = n * sumXX - sumX * sumX;
const slope = denom === 0 ? 0 : (n * sumXY - sumX * sumY) / denom;

방어 코드는 지루하지만, 막상 터지면 디버깅이 골치 아프다. 9개 파일, +88/-4 줄의 깔끔한 수정이었다.

← 이전 글
v5.10.0 — 크리티컬 버그 5종 + 측정 정확도 3종 수정
다음 글 →
v5.12.0 — NaN/Infinity 방어 7건, 테스트 9건 추가