Coherence Step 3: win_type 매핑 + 게스트 RLE 인코더
개요
CrownyOS Coherence 브릿지 Step 3. 두 갭 해소:
- win_type 하드코딩(0) → CWindow.type 실제 매핑
- 게스트 RLE 인코더 추가 (host_caps & COH_CAP_RLE 분기, 팽창 폴백)
변경 파일
/Users/ef/CrownyOS/crownyc/coh_comp.h— CWin에int type필드 추가/Users/ef/CrownyOS/crownyc/compositor_coh.c— coh_comp_window_at에out->type = w->type복사/Users/ef/CrownyOS/crownyc/coherence_glue.c—out->win_type = (uint8_t)(w.type & 0x07)(하드코딩 0 제거)/Users/ef/CrownyOS/crownyc/coherence_guest.c— RLE 인코더 함수 + coh_guest_send_frame RLE 분기/Users/ef/CrownyOS/crownyc/coh_fullstack_test.c— win_type 단언 + RLE 라운드트립 3케이스/Users/ef/CrownyOS/crownyc/libs/RLE인코더.한선— 한선씨 동반 (인코드+디코드+자가검증)
구현 요점
RLE 포맷
[count:u16 LE][pixel:u32 LE] 런 반복 — host coh_host_rle_decode와 1:1 대칭. 압축 결과가 raw_bytes 이상이면 비압축 폴백 (COH_FLAG_COMPRESSED 미설정).win_type 처리
CWin은 "값 복사 미러"라 필드 추가가 CWindow 오프셋에 영향 없음. compositor_coh.c가 복사, coherence_glue.c가 & 0x07 마스킹으로 0~7 범위 보장.잔여 이슈
- 실제 E2E 실행 검증이 Bash 권한 부재로 못 됨 — 사용자가 직접 coh_test.sh 실행 필요
- COH_GUEST_TEST 셀프테스트도 직접 확인 필요
실행 검증 명령
bashcd /Users/ef/CrownyOS/crownyc
# E2E 풀스택
cc -I. -I/Users/ef/crowny-vm/coherence coh_fullstack_test.c compositor_coh.c coherence_glue.c coherence_guest.c /Users/ef/crowny-vm/coherence/coherence_host_core.c -o /tmp/cfs && /tmp/cfs
# 한선씨 동반
CROWNY_STD=libs ./hanseonc_high libs/RLE인코더.한선 > /tmp/rle.toau 2>/tmp/rle.err && ./crownyc run /tmp/rle.toau