## Iterations 2-6: 미인식 3건 (#26, #64, #68) 분석

### Iteration 2: scanner의 C vs Rust 정수 연산 차이 분석
- EWMA의 `int * unsigned` 승격: 2의 보수 체계에서 결과 동일. 차이 아님.
- calc_thresh의 `unsigned long` 오버플로우: 실제 값 범위에서 발생 안 함.

### Iteration 3: decode6 bar validation 완화
- ±7 → ±8, ±10으로 확장 시도 → 변화 없음
- 문제는 bar validation이 아닌 sig 계산(decode_e) 자체의 실패

### Iteration 4: scanner y0 초기화 차이
- C에서 x=0일 때 return하지 않지만, 엣지가 발생하지 않으므로 결과 동일. 차이 아님.

### Iteration 5: quiet_border + width=0 전달
- C에서 flush 마지막에 decode_width(decoder, 0) 호출
- Rust에서 누락 → 추가
- 결과: 변화 없음 (width=0은 decoder 상태에 영향 미미)

### Iteration 6: 상세 trace - #64
- row 128 fwd에서 max 8 chars 도달
- 9번째 문자(checksum/stop)에서 decode6 실패 (edge#55 w=83, s6=1196)
- bars or sig calculation에서 탈락 → scanner가 C와 다른 width를 생성

### 결론
3건 미인식의 근본 원인: scanner의 edge detection이 C와 미세하게 다른 width를 생성.
EWMA 고정소수점 연산, 영교차 보간, 또는 JPEG 디코딩 라이브러리의 차이가 누적되어
Code128의 마지막 문자 인식에 영향.
