← 목록
기타 2026-06-27 9KB 읽기 9분

크라우니 4상균형3진 자체 웹엔진 — 자원감사·아키텍처·전략 (울트라)

7에이전트 워크플로(자원감사 5병렬 + opus 종합 + 전략). 실측·소스라인 검증 기반.

1. 자원체크 — 오래 쌓인 자산의 진짜 상태

영역자산핵심 판정
얇은 동작경로(척추)한선씨웹엔진(649줄)→cmd→렌더브라우저/cmd렌더러→소프트GPU5/5 작동 — 작지만 진짜 픽셀. CSS없음·블록전용
v2 거대경로41파일 105,512줄HTML파서·CSS엔진·DOM엔진 실구현(작동), 나머지 15 부분, JS엔진 strpool 소진
렌더 말단소프트GPU·CIF디코더·글꼴·한글꼴·HAL6/8 작동, 진짜3진 3
3진 코어cube_add(crownyc.c:2734)·CIF씨앗·opcode진짜 균형3진 4/7 (바닥은 사실)
문서/레거시MASTERPLAN·spec·백업MASTERPLAN 900[x]=허위, "47000줄·크롬동등"=과장(정정필요)
핵심: 색(CIF 9트릿)·DOM(readyState -1/0/1)·VM ALU(cube_add) 3축이 진짜 균형3진. 나머지 T/O/A는 이름만(2진관성).

2. 아키텍처 — cmd IR 척추 + 재사용

결정: cmd 프로토콜(INIT/RECT/ROUND/SHADOW/TEXT/IMAGE/END)을 레이아웃↔래스터 단일 IR로 동결. 얇은경로 cmd코어+소프트GPU를 척추로, v2의 진짜 파서/DOM/CSS를 앞단에 접목. 79파일 전부 안 살림(미디어/RTC/확장/WASM 보류).

레이어살린다신규/승격
HTML파싱v2/HTML파서(272줄)span/strong/em/img 추가
DOMv2/DOM엔진(8슬롯, readyState 진짜3진)노드상태 트릿팩
CSSv2/CSS엔진(캐스케이드·변수·@media)computed색→CIF 9트릿 브리지
레이아웃한선씨웹엔진 블록흐름ROUND/SHADOW 발행부
텍스트글꼴+한글꼴(opcode347 직결)FB_RGB_TEXT(366) CIF벡터
이미지IMAGE_LOAD(757)+CIF디코더img파싱 + cmd IMAGE verb
합성소프트GPU(7셰이더·알파, 진짜3진)프레임버퍼→네이티브창
JSv2/JS엔진(1759줄)strpool 소진=치명 블로커, 아레나 재작성
VM ALUcube_add그대로(진짜3진)

3. 마일스톤 — WebKit→한선씨 점진 교체

현 "순수모드"조차 loadHTMLString으로 WKWebView에 주입 = WebKit이 픽셀 그림. 진짜 교체 = 소프트GPU→네이티브창(표시면 B).
  • M0 척추결선(1~2주): 소프트GPU 프레임버퍼→HAL 네이티브창. WKWebView 없이 1페이지 픽셀 출력 증명.
  • M1 MVP 정적(3~4주)★: v2 파서/DOM/CSS 승격 + 색절단(CSS→CIF 9트릿). 정적 crowny.org를 WebKit 없이 렌더. 검증: WKWebView vs 소프트GPU 픽셀 SSIM≥0.95.
  • M2 텍스트/이미지(4~6주): CIF벡터폰트·img·인라인.
  • M3 커널동등+상호작용(4주): vm_core opcode 789·355 신규 → CrownyOS 커널=네이티브 동일렌더. 이벤트/링크클릭.
  • M4 JS(8주+): strpool 아레나 재작성, typeof/RegExp/Promise 마이크로태스크.
  • M5 외부웹(보류): WebKit 폴백 영구 유지. 크롬 동등 추격 금지.

4. WebKit 대체 가능성 (질문 직답)

대상가능성
크라우니 전용(crowny.org 200서비스)M3에 WebKit 완전제거 가능 (정적·SSR). 전제: crowny.org CSS 프로파일 측정·고정, 색절단, 한글래스터, crowny:// 라우팅
일반 외부 웹WebKit 폴백 영구 유지. 스킴분기(crowny://=자체, http(s)=WebKit) 이미 존재
"전용은 자체엔진, 일반은 폴백" = 위험 0 점진 대체.

5. 차별화 전략 (opus, fable 대체)

★ 수렴 = 최대 차별점 (사용자 통찰을 감사가 확증)

  • 브라우저 픽셀경로(소프트GPU→opcode 358/366) = OS 커널 픽셀경로(vm_core 358/366 실구현) 같은 opcode.
  • M3에서 VIRT갭(789/355) 닫으면 "CrownyOS 커널=네이티브=동일렌더".
  • 렌더 substrate가 OS·브라우저 공유 → 자체엔진 = OS 렌더러의 웹 일반화. 따로 안 만듦.
  • ChromeOS=리눅스+크롬(이종접합) vs 크라우니=단일 3진VM 위 OS·브라우저 수렴(동종). "브라우저가 OS, OS가 브라우저"가 진짜 단일기반. Brave가 OS와 별개 250MB Chromium 드는 것과 정반대 — 엔진 1벌로 둘 다.

왜 3진인가 (기술적 실체)

  • 색 end-to-end 균형3진(CIF 9트릿) → UI·이미지·영상 한 색계
  • 3값 논리 DOM(참/거짓/모름) → 규칙엔진 직결
  • 바닥 ALU가 균형3진(cube_add 검증)

포지셔닝 — 올인/포기

  • 올인: 최경량(~수MB)·멤버전용·3진색계 통일·OS수렴·개발도상국 저용량·전용프로토콜 네이티브
  • 의도적 포기: 일반웹 100%호환·최신CSS전부·무거운JS·미디어코덱 → WebKit 폴백 위임
  • Chrome/Brave(만능·무거움)·Arc(Chromium)와 다른 시장(생태계 내부도구) → 정면충돌 회피

리스크 (냉정)

  • JS strpool 소진 = M4 관문(아레나 재작성). 안 풀리면 동적서비스 SSR/폴백
  • CSS는 crowny.org 프로파일로 한정 — 범위통제가 성패
  • 문서 과장 정정(900[x]·47000줄·크롬동등) = 신뢰 필수
  • 하지 말것: 외부웹 크롬동등 추격(승산0), 79파일 전부살리기

M0 척추결선 — 실증 완료 (2026-06-27)

WebKit 0으로 HTML이 픽셀이 됨을 증명. 체인: HTML파일 → 한선씨웹엔진(cmd 15줄) → cmd렌더러(VM 프레임버퍼 opcode 화면초기화/RGB사각형/RGB글쓰기/화면저장) → PPM 1280×800 3MB 실픽셀 → PNG.

  • ✅ 블록 레이아웃·태그 팔레트 색차등(h2 골드/링크 코랄)·구분선·불릿·줄바꿈 정확
  • ⚠️ 글자 글리프 거침(비트맵폰트) → M2 CIF벡터폰트가 해결 / 출력 PPM(네이티브창은 HAL 박막결선 잔여)
  • 산출물: native/m0-실증/{m0.html,cmd,ppm,png,재현.sh}. 재현: 재현.sh [html경로]
  • ⚠️ CROWNY_WEB_HTML = 파일경로(내용 아님). CROWNY_WEB_MODE=cmd 필수.

트릿 색심도 — 검토 완료

현 채널당 3트릿=27레벨=19,683색(8비트比 853배 조악). 확장: 15트릿(5/채널)=14.3M≈8비트(이미지표준,+15%), 18트릿(6/채널)=387M(CVF/HDR,+22%, CVF 4상3진 정합). OS UI는 9트릿 충분. 구현=색심도: 헤더필드 + _색채널N(arr,오프셋,n) 일반화함수(공식 rgb=((sum+max)255)/(2max), max=(3^n-1)/2), 두 파일(CIF디코더·소프트GPU)만 수정, 하위호환.

Windows — 빌드 위치 확정

Mac 교차컴파일 불가(실증 3차단: WebView2.h 부재·WebView2LoaderStatic.lib MSVC COM vtable 충돌·Secure CRT 함수 MinGW 미지원). 코드는 Mac에서 완성(test_win 14/14), Windows에서 build.bat 1회(MSVC+WebView2 SDK+Runtime). native/win/build.bat(4단계 자동화) + BUILD-WINDOWS.md 완비. "만들어놓으면 됨" 확정.

M2 — CIF 벡터폰트 실증 완료 (2026-06-27)

크라우니폰트 CIF 글리프로 텍스트 렌더 — M0 비트맵 대비 압도적 품질 개선.

  • 자원: cifont/CrownyGothic·CrownyMyeongjo 각 128글리프(ASCII 95+한글 33), <유니코드HEX>.cif 72×84 9트릿.
  • 순서대로: ①글리프 합성 실증(사/폰트) ②한선씨 글리프조판.한선(PSV 계획→합성) ③64KB 캡 해결.
  • ★64KB 캡 해결 = 직접 그리기 모드: 글리프조판.한선CROWNY_DRAW=1 추가 — cmd 파일 안 거치고 각 글리프 CIF(각<64KB)를 읽어 RGB사각형 opcode 직결, 한 VM run에서 FB 누적 → 거대 중간 cmd파일 제거 → 임의 길이 렌더. (읽기()=65535 캡 / 입력() stdin스트리밍은 VM 불안정 → 직접모드가 정답.)
  • 검증: "크라우니 폰트"(6글자 3314획) · "안녕 CROWNY 2026"(한글+영문+숫자 12글자) 한 번에 렌더. 산출물 native/m2-실증/.
  • 잔여 ③ 최종배선: 한선씨웹엔진 TEXT cmd → 글리프조판 직접드로우(문자→코드포인트 드라이버 + 폰트사이즈 스케일). RECT(박스)+TEXT(글리프) 통합 페이지렌더러.

M3 — ③ 배선 완료 (통합 페이지렌더러, 2026-06-27)

HTML → 한선씨웹엔진 → 통합 플랜 → 페이지렌더러 → CIF폰트 페이지 (WebKit 0) 전 파이프라인 작동.

  • src/페이지렌더러.한선 신규: 통합 플랜(CANVAS/RECT/GLYPH) 직접 드로우. 글리프=잉크만(근백 스킵)→임의 배경 위 합성. 색 오버라이드(GLYPH 6~8필드=텍스트색, 골드 헤딩 반영). 각 글리프 CIF만 읽어 64KB 캡 무관.
  • native/m3-배선/페이지배선.py: page cmd 파싱 → RECT 통과 + TEXT→글리프 전개(문자→코드포인트, scale=size/60).
  • 작동: "크라우니 폰트"·"안녕 하세요"·구분선 가독 렌더, 색 오버라이드 OK. 산출물 native/m3-배선/.
  • 정직한 잔여(글리프 메트릭 튜닝): 셀 기반 어드밴스라 ASCII 겹침·소형 한글 클러스터. 해법=각 CIF의 잉크 bbox(비백 seed의 min/max x) 추출→per-glyph 실폭 어드밴스. 소형 글자 가독성·최적 스케일도 메트릭으로 해결.

다음 착수 후보

글리프 메트릭(per-glyph 잉크폭) → 네이티브창 HAL결선 → M1 정적 crowny.org. 선행: crowny.org CSS 프로파일 감사.