← 목록
기타 2026-05-28 7KB 읽기 9분

Phase 12 앱 모드 인프라 — 5병렬 통합 종합

2026-05-28 | 크라우니브라우저 v2.1 격상 Phase 12를 5개 병렬 에이전트로 동시 진행. 5건 모두 완료.

한눈 요약

#영역산출검증
A1window.crowny.* 브릿지14 함수 / JS엔진 hook +12줄 / shim 65줄메인 빌드 974,787 큐브
A2HTTP 헤더 + 앱모드 specHTTP스택 +27줄 / 앱모드감지 6함수 / spec 11섹션메인 빌드 972,917 큐브
A3crownyc 소켓 검증HTTP스택 4종 버그 fixdocs.crowny.org GET 200, 9021바이트 응답
A4wpt 회귀 인프라50 케이스 / 러너 248줄 / 실행 50/50100% (큐레이션 범위)
A5Path A 통합hosts-patch / 로컬프록시 (18888 LISTEN+200) / m 빌드docs/spear 200 응답
총 학습 등록: 6 패턴 (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줄)
노출 API:
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줄)
첫 실행: 50/50 (100%) — 단, 케이스가 v2 모듈의 안정 동작 범위 큐레이션. 즉 인프라는 자리잡았지만 실제 wpt 호환률은 미측정. 다음 단계는 케이스 확장 + v2 모듈 버그 fix 사이클.

잔여 (격상 다음 차):

  • 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 통합
프록시 디버그 부수 산물: A3와 같은 다듬기() 버그 + 소켓생성() 인자 누락 발견 → 같은 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 선행)
Phase 12 골격 완성. 본체 연결 (12.2 CRN ID, 12.4 디자인 주입) + v2.2 chained call이 다음 단계.


즉시 사용 가능 (사용자 손)

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 통합 후