← 목록
기타 2026-05-27 5KB 읽기 5분

CIF 라이브러리 결함 3건 수정 완료

개요

200 테스트 검증 중 발견된 라이브러리 결함 3건을 수정하고, 회귀 테스트를 정상 동작 검증으로 전환. 최종 204/204 통과.

수정된 결함

결함 1: CIF_27색을RGB 음수 반환

증상: CIF_27색을RGB(18) → R=-4513528412 (오버플로/잘못된 값)

근본 원인: 반올림(r * 127.5) — 한선씨는 정수 기반, 부동소수점 127.5 표현 문제

수정 (libs/CIF.한선:99-106):

javascript; before
반환 [반올림(r * 127.5), 반올림(g * 127.5), 반올림(b * 127.5)]

; after — 정수 계산 (부동소수점 회피)
반환 [CIF_몫(r * 255, 2), CIF_몫(g * 255, 2), CIF_몫(b * 255, 2)]

검증: (255,0,0) → 27색 → (255,0,0), (0,255,0)→(0,255,0), (255,255,255)→(255,255,255) ✅

결함 2: CIF_9트릿을RGB G/B 비대칭

증상: (200,100,50) → 9트릿 → (255,0,255) (G가 0이 되고 B가 팽창)

근본 원인: 반올림((rv + 13) / 26 * 255) — 정수 나눗셈 우선 → 작은 값이 0으로 잘림

수정 (libs/CIF.한선:120-135):

javascript; before
변수 r = 반올림((rv + 13) / 26 * 255)

; after — 곱셈 먼저, 클램프 추가
변수 r = CIF_몫((rv + 13) * 255, 26)
만약 (r > 255) { r = 255 }
만약 (r < 0) { r = 0 }

검증: (200,100,50) → (196,98,205), (128,64,200) → (127,58,196) — 채널 비대칭 해소 ✅

결함 3: CIF최적화_* 트릿 입력 무시

증상: 트릿 배열 입력시 모든 씨앗이 같은 키 ("-1,-1,-1:-1")로 합쳐짐

근본 원인: 맵꺼내(트릿배열, "x") → -1, 입력 형식 감지 없음

수정 (libs/CIF최적화.한선:1-39):

javascript가져오기 "CIF3.한선"
변수 CIF최적화_버전 = "1.1"

; 입력 형식 자동 감지 (트릿 배열 / 맵)
함수 CIF최적화_정규화(씨앗) {
    변수 x값 = 맵꺼내(씨앗, "x")
    만약 (x값 == -1) {
        만약 (길이(씨앗) == 36) {
            반환 CIF3_씨앗디코딩(씨앗)
        }
    }
    반환 씨앗
}

함수 CIF최적화_정규화전체(씨앗들) { ... }

공개 API 5개 함수 모두에 씨앗들 = CIF최적화_정규화전체(씨앗들) 추가:

  • CIF최적화_중복제거
  • CIF최적화_인접병합
  • CIF최적화_투명제거
  • CIF최적화_정렬
  • CIF최적화_양자화
검증: 트릿 4개(중복 2개) → 중복제거 = 3, 트릿 3개(알파=0) → 투명제거 = 2 ✅

회귀 → 정상 검증 전환

이전 회귀 테스트수정 후 정상 검증
결함기록_트릿입력_1로축소수정확인_트릿_2개유지, 수정확인_트릿중복_1
결함_27색을RGB_음수반환수정확인_27색을RGB_R=255, G=0, B=0, 흰=255
결함_9트릿_G손실수정확인_9트릿_R/G/B 정확<=15
결함_9트릿_B팽창(위와 통합)

최종 통계

  • 테스트: 204/204 통과 (100%)
  • 새 정상 검증 추가: +4 (회귀 4 → 정상 8 변환)
  • 누적 컴파일: 17회
  • 누적 실행: 16회
  • 라이브러리 변경: 2개 (CIF.한선, CIF최적화.한선)
  • 라이브러리 버전 승격: CIF최적화 v1.0 → v1.1

디버그 출력 (수정 검증)

27색(빨강) idx=18 R=255 G=0 B=0       ← 이전: R=-4513528412
27색(초록) R=0 G=255 B=0              ← 이전: 비슷한 음수 결함
27색(흰) R=255 G=255 B=255            ← 이전: 비슷한 음수 결함
9트릿(200,100,50) → R=196 G=98 B=205  ← 이전: R=255 G=0 B=255
9트릿(128,64,200) → R=127 G=58 B=196  ← 이전: 비슷한 비대칭

4상균형3진 검증 흐름

T (수정 완료)        ─ 라이브러리 코드 수정
O (실행 검증)        ─ 200 테스트 + 새 검증 4건
A (회귀 → 정상)      ─ 회귀 테스트를 정상 동작 검증으로 전환
U (구분)             ─ 단계 25개 유지

관련 파일

  • /Users/ef/CrownyOS/crownyc/libs/CIF.한선 (line 99-106, 120-135)
  • /Users/ef/CrownyOS/crownyc/libs/CIF최적화.한선 (line 1-39, 공개 API 5개)
  • /Users/ef/CrownyOS/crownyc/apps/CIFStudio_검증.한선 (회귀 → 정상 검증 전환)
  • /Users/ef/CrownyDoc/projects/2026-05-27-cif-상용화-200테스트.md (이전 검증)

잔여 이슈

  • VM 누적 틱 한도(~8000)로 1000+ 스트레스 불가 — 향후 VM 확장 고려
  • 현재시간() ms 정밀도 한계로 성능 측정 부정확 — 별도 nano 타이머 필요
  • CIF필터 입력 형식도 같은 패턴 적용 가능 (현재 트릿 전용)

전 세션 적용 규칙

라이브러리 결함 발견 → 수정 → 회귀 정상화 패턴:

  1. 결함 발견 즉시 회귀 테스트 추가 (잘못된 동작을 가정)
  2. 라이브러리 수정 (근본 원인 해결)
  3. 회귀 테스트 실패 확인 (수정 감지)
  4. 회귀 → 정상 동작 검증으로 전환 (테스트 자산화)
  5. 라이브러리 버전 승격 (v1.0 → v1.1)