Phase 12 앱 모드 인프라 — 5병렬 통합 종합
2026-05-28 | 크라우니브라우저 v2.1 격상 Phase 12를 5개 병렬 에이전트로 동시 진행. 5건 모두 완료.
한눈 요약
| # | 영역 | 산출 | 검증 |
|---|---|---|---|
| A1 | window.crowny.* 브릿지 | 14 함수 / JS엔진 hook +12줄 / shim 65줄 | 메인 빌드 974,787 큐브 |
| A2 | HTTP 헤더 + 앱모드 spec | HTTP스택 +27줄 / 앱모드감지 6함수 / spec 11섹션 | 메인 빌드 972,917 큐브 |
| A3 | crownyc 소켓 검증 | HTTP스택 4종 버그 fix | docs.crowny.org GET 200, 9021바이트 응답 |
| A4 | wpt 회귀 인프라 | 50 케이스 / 러너 248줄 / 실행 50/50 | 100% (큐레이션 범위) |
| A5 | Path A 통합 | hosts-patch / 로컬프록시 (18888 LISTEN+200) / m 빌드 | docs/spear 200 응답 |
crowny_bridge_module, crowny_app_mode_detect, crowny_browser_layer_header, crownyc_socket_client_fetch, crowny_hosts_patch, crowny_local_proxy, crowny_wpt_runner)A1 — window.crowny.* 브릿지
산출:
/Users/ef/CrownyOS/crownyc/libs/크라우니브릿지.한선(14 함수, 1591 큐브)/Users/ef/CrownyBrowser/src/v2/JS엔진.한선(+12줄, sentinel 기반 위임)/Users/ef/CrownyBrowser/src/v2/크라우니브라우저v2.한선(+1줄 import)/Users/ef/CrownyBrowser/bundle/start/crowny-shim.js(외부 브라우저 stub, 65줄)
javascriptwindow.crowny.version // "2.1"
window.crowny.layer // "T"|"O"|"A"|"U"
window.crowny.capabilities() // ["wallet","cell","notification","layer","shortcut"]
window.crowny.userId() // CRN ID
window.crowny.wallet.balance("맘") // 숫자
window.crowny.cell.read(id, slot) // 값
window.crowny.cell.write(id, slot, val) // 상태
window.crowny.notify(t, b) // 0/-1
잔여: 함수 본체 stub → 실제 셀DB/체인 연결, chained call(window.crowny.wallet.balance("맘")) 평가 v2.2.
A2 — HTTP 헤더 + 앱모드 감지
산출:
- HTTP스택.한선 +27줄: 전역
_크라우니버전 _크라우니레이어 _Accept확장, 헤더 4개 (User-Agent + X-Crowny-Browser + X-Crowny-Layer + Accept 확장), setter브라우저레이어설정/조회 /Users/ef/CrownyOS/crownyc/libs/앱모드감지.한선(6 함수, 6572 큐브)/Users/ef/CrownyDoc/projects/2026-05-28-앱모드-감지-spec.md(11 섹션)
User-Agent: CrownyBrowser/2.1 (CrownyOS; 한선씨)
X-Crowny-Browser: 2.1
X-Crowny-Layer: T
Accept: text/html,application/xhtml+xml,application/crowny+vector;q=0.9,*/*;q=0.5
서버 사용:
javascript가져오기 "앱모드감지.한선"
변수 mode = 앱모드_요청검사(요청헤더) // 1=앱 0=웹 -1=미상
변수 layer = 앱모드_레이어추출(요청헤더)
A3 — crownyc 소켓 검증 + HTTP스택 4종 fix ★
최대 발견: 어제 503 받은 원인은 로컬직통 로직 아니라 HTTP스택의 API 미스 사용:
| # | 버그 | 위치 | 수정 |
|---|---|---|---|
| 1 | 소켓생성() 인자 누락 | 3곳 | 소켓생성(2, 1) (AF_INET, SOCK_STREAM) |
| 2 | 소켓받기(소켓) size 인자 누락 | 7곳 | 소켓받기(소켓, 8192) |
| 3 | 슬롯 0 무효 판정 (<= 0 / > 0) | 다곳 | < 0 / >= 0 |
| 4 | _헤더후본문/_청크디코딩 VM 스택 손상 | 함수 호출 | 인라인 우회 (crownyc.c 근본 패치 필요) |
HTTP요청("http://docs.crowny.org/", "GET", 0, "")
→ 상태 200, 본문 9021바이트 (chunked 디코딩 OK)
파일: /Users/ef/crowny-local/소켓검증.한선, /Users/ef/CrownyDoc/projects/2026-05-28-crownyc-소켓-검증.md
crownyc.c 근본 패치 미수행 (사용자 권한). 함수 호출 시 큰 문자열 슬라이스 반환에서 PC 손상. 별도 패치 후속.
A4 — wpt subset 회귀 인프라
산출:
/Users/ef/CrownyBrowser/tests/wpt러너.한선(248줄, 165,038 큐브)/Users/ef/CrownyBrowser/tests/wpt-cases/{html,css,js,url,http}.case(50 케이스)/Users/ef/CrownyBrowser/tests/wpt실행.sh(entry)/Users/ef/CrownyBrowser/tests/CLAUDE.md(61줄)
잔여 (격상 다음 차):
- VM string pool 524288 한계 → 큰 케이스 폭주
- HTML파서 셀 immutability 버그 → 텍스트/속성 직렬화 불완전
- JS엔진 함수 호출/while string 폭주
A5 — Path A 통합 (3 옵션)
| 옵션 | 산출 | 권장 |
|---|---|---|
| A. hosts-patch | /Users/ef/crowny-local/hosts-patch.sh (5.2KB, 157 도메인, sudo) | ★ 가장 단순 |
| B. 로컬프록시 | /Users/ef/crowny-local/로컬프록시.한선 (12 함수, 18888 LISTEN, docs/spear 200 검증) | 격리 필요 시 |
| C. WKWebView proxy | /Users/ef/CrownyBrowser/native/crowny-browser.m (CROWNY_LOCAL_PROXY=1, 127KB 빌드) | Path A 통합 |
다듬기() 버그 + 소켓생성() 인자 누락 발견 → 같은 fix.Phase 12 진행도
기존 청사진의 Phase 12 항목 6개 중:
| Phase 12 항목 | 상태 |
|---|---|
12.1 window.crowny.* 한선씨↔JS 브릿지 | ✅ A1 |
| 12.2 CRN ID 통합 인증 | ⏳ 본체 stub만 |
| 12.3 로컬직통 cleanup (Path A) | ✅ A5 |
| 12.4 디자인 자동 주입 | ⏳ |
| 12.5 셀코어 IPC | ✅ A1 stub (실제 셀DB 연결 후속) |
| 12.6 단축키 전역 | ✅ A1 stub |
- HTTP 헤더 표준 (Phase 12 부수 항목)
- 앱모드 감지 spec (서버 측)
- wpt 회귀 인프라 (Phase 15 선행)
즉시 사용 가능 (사용자 손)
bash# 옵션 A — 시스템 전역 (가장 간단)
sudo /Users/ef/crowny-local/hosts-patch.sh on
# 옵션 B — 프록시 격리 모드
/Users/ef/crowny-local/로컬프록시.sh start # 18888 LISTEN
# 옵션 C — Path A 직접 실행
CROWNY_LOCAL_PROXY=1 /Users/ef/CrownyBrowser/native/CrownyBrowser
# Path B (한선씨 자립)
cd /Users/ef/CrownyOS/crownyc
./hanseonc_high /Users/ef/CrownyBrowser/src/v2/크라우니브라우저v2.한선 > /tmp/b2.toau
./crownyc run /tmp/b2.toau
# wpt 회귀
/Users/ef/CrownyBrowser/tests/wpt실행.sh
# → /tmp/wpt-report.json
잔여 이슈 (Phase 12 후속)
★★★ 우선순위
- ★★★ crownyc.c 패치 — A3의 #4 (함수 반환 시 VM 스택/PC 손상). 사용자 권한 필요.
- ★★★ HTML파서 셀 immutability fix (A4 관찰)
- ★★ JS엔진 함수 호출/while string pool 폭주 (A4 관찰)
- ★★ CRN ID 통합 인증 (A1 stub → 실제)
- ★★ 디자인 자동 주입 (Phase 12.4)
- ★ 로컬프록시 동시성 (현재 직렬)
- ★ wpt 케이스 확장 후 실제 호환률 측정
- ★ HTTPS 미지원 (A5 옵션 A/B 공통) — TLS 1.3 통합 후