building.crowny.org:9605 빌딩서버 구축
개요
크라우니빌딩(빌딩 시설관제 앱) 번들을 웹 도메인으로 서빙하는 한선씨 서버를
/Users/ef/crowny-building/에 신규 구축. 포트 9605는 이미 gateway.yaml에
crowny-building 엔트리로 등록되어 있었음(본 작업에서 gateway.yaml 무편집).
무엇을 했는지
빌딩서버.한선 — TCP 서버(9605): /·/index.html→app 번들(4.2MB) 스트리밍,
/design→design 번들(4.3MB) 스트리밍,
/health,
/api/route?cmd=...→
bundle/building/bridge/빌딩명령.한선 판정엔진을 별도 프로세스(체계()+crownyc run
핀toau)로 실행해 PSV 결과 반환.
start.sh — 소스+컴파일러+VM+출력 4항 mtime 비교로 재컴파일 판단 후
exec crownyc run(PID 이양, launchd가 실제 서버 PID를 직접 추적).
~/Library/LaunchAgents/org.crowny.building.plist — KeepAlive, PATH 명시,
로그
/tmp/crowny-building.log.
CLAUDE.md — 구조/포트/검증명령/함정 기록.
검증 게이트 (전부 PASS, 2026-07-17)
- a.
CROWNY_STRICT=1 hanseonc_high 컴파일 — 경고 0, 에러 0 (1차 시도에서
파일바이트수·
현재밀리초 미정의 함수 에러 발견 →
파일바이트크기·
현재시간으로 교정)
- b.
/health → OK building 9605
- c.
/ → app 번들과 cmp 바이트 무결(BYTE_IDENTICAL, 4,262,455B)
- d.
/design → design 번들과 바이트 무결(BYTE_IDENTICAL, 4,317,706B)
- e.
/api/route?cmd=3층 회의실 시원하게 해줘 →
공조|냉방|3층|티|0|offline|단일구역 가역 조작 - 즉시실행
- f. LaunchAgent load 후
kill -9 → KeepAlive 자가부활 확인(새 PID로 즉시 재기동, health 정상)
- g. 게이트웨이(라이브 HTTP 업스트림 8080) 경유 확인:
curl -H "Host: building.crowny.org" http://127.0.0.1:8080/health → OK.
추가로
https://building.crowny.org/(443/stunnel)까지 실측 — cert SAN에
building.crowny.org 이미 포함되어 있어 HTTPS 전체 경로(4.2MB 앱 스트리밍 포함)도
바이트 무결 확인됨(예상보다 좋은 결과 — 사전 인증서 발급 불필요).
관련 파일
/Users/ef/crowny-building/빌딩서버.한선
/Users/ef/crowny-building/start.sh
/Users/ef/crowny-building/data/빌딩서버.toau, data/빌딩명령.toau
/Users/ef/crowny-building/CLAUDE.md
~/Library/LaunchAgents/org.crowny.building.plist
- (읽기 전용 참조, 무수정)
/Users/ef/CrownyBrowser/bundle/building/app/index.html,
bundle/building/design/index.html,
bundle/building/bridge/빌딩명령.한선함정 조우 기록
파일바이트수()/현재밀리초()는 존재하지 않는 함수명(학습DB 패턴에 잘못 박제되어 있었음) —
실제는
파일바이트크기()(opcode 297)·
현재시간(). STRICT 컴파일에서 즉시 "미정의 함수"로
걸러짐(컴파일 게이트가 정확히 작동).
파일존재()는 1=있음/-1=없음(0 아님) — 정적파일 존재 가드에 반영.
- 4.2MB 정적파일은
읽기()(65535B 캡) 대신 파일소켓전송() 디스크→소켓 직결 스트리밍으로
우회(사전 학습DB
게이트웨이_정적_fork0_서빙 패턴 그대로 재사용,
파일바이트크기()로
Content-Length 계산).
/health·/api/route 등 한글 포함 가능 동적 응답은 Content-Length 생략 +
Connection: close로 UTF-8 바이트수 계산 함정 회피.
빌딩명령.한선은 top-level 메인() 자체실행 CLI라 가져오기 대신 별도 프로세스 실행으로 격리.
잔여 이슈
없음 — 전 게이트(a~g) 통과, LaunchAgent 상시 구동 중.
크라우니코드
lookup HIT 다수(TCP accept 루프, URL디코드/헥스바이트, 파일소켓전송 정적스트리밍, bind실패종료,
쿼리스트링 분리 — 전부 학습DB/패턴DB 재사용) / MISS 2건 생성(
cmd파라미터추출 직접 파싱,
4항 mtime 재컴파일 판정) / learn 추가 2건(
빌딩서버_정적스트리밍_route프록시 via
crownycode-brain.sh learn,
cmd파라미터추출_쿼리직접파싱 via crownycode-learn.sh add).