estel.crowny.org 순수 한선씨 HTTP 서버 (서버.한선)
개요
estel.crowny.org(:9785) 재구축 프로젝트의 백엔드 라우터를, 기존 node
estEL서버.js(레거시, :9601 QKD 데모)를 대체하는 순수 한선씨 HTTP 서버로
새로 작성했다. 라이브 :9785는 여전히 기존 node 프로세스가 점유 중이며
(가드레일 지시대로) 건드리지 않았다 — 배포(전환)는 사용자 몫으로 남긴다.
무엇을 했는지
/Users/ef/crowny-estel/서버.한선 (941줄) 신규 작성.
정적 서빙: /(앱.html) · /셸.js · /모듈/<id>.js(화이트리스트
sky,qi,lab,puzzle,vault,learn,partner,hw,ops) ·
/legacy(estEL.html).
POST /api/estel/ai — 5단계 파이프라인(자연어→의미어코드→한선씨→
crownyc opcode→estEL 실행) JSON, 질의형 문장은 ③④ 생략 표기.
POST /api/quantum/run — DEVELOPER_GUIDE §4 프리셋 6종(bell/ghz12/
bb84/grover27/dj/qec) 결정론 RunResult(seed 137/733/212/91/58/404
기본값, 정수 분할로 재현 — 같은 입력=항상 같은 출력).
레거시 이식 5종(/api/qkd /api/qec /api/surface /api/tcount /api/pqc)
— execFileSync 서브프로세스 없이 순수 계산/네이티브 VM 호출로 대체:
-
/api/qkd: QKD엔진.한선 원본 BB84/BBM92 알고리즘을 그대로 인라인
이식, crownyc 네이티브 스태빌라이저 opcode(914~917)를 서버 프로세스
안에서 직접 호출(서브프로세스 없이 진짜 물리 시뮬레이션).
-
/api/qec,
/api/surface: 반복부호 최소무게 복호를 대수적으로
"다수결 vs 큐비트0" 판정으로 축약(순수 X노이즈 반복부호는 클리포드
한정이라 고전 계산과 완전 등가 — 근사 아님). 표면코드는 X/Z 두
직교 반복부호 체인으로 근사한 서로게이트(정직 경계 명시, 진짜 2D
태블로 아님).
-
/api/tcount: Tcount예산.한선 판정() 로직 순수 정수 수학 이식.
-
/api/pqc: 진짜 ML-KEM/ML-DSA(격자)는 한선씨로 구현 불가 — VM
내장 SHA256으로 해시일치/변조거부/재현/독립성 4개 실계산 검증하는
서로게이트, 응답에 STUB 명시(허위 통과 주장 금지).
URL디코드 추가 — 브라우저가 /모듈/sky.js 등 한글 경로를 퍼센트
인코딩(
/%EB%AA%A8...)해서 보내므로 경로추출()에서 반드시 디코드
해야 라우팅됨(실측: 디코드 없이는 전부 404).
검증
hanseonc_high 컴파일 — 에러 0, CROWNY_STRICT=1 경고 0.
- RPN 정본 변환 —
clike_to_rpn.한선(옛 .py 툴은 삭제되고 한선씨로
재작성됨,
CROWNY_ARG1=<파일> ./crownyc run tools/clike_to_rpn.toau
경로 사용) →
서버.rpn.한선. 초회 변환에서 "아니면 만약"(else-if)
체인과 이스케이프따옴표(
"\"") 조건이 컨버터 버그로 미인식단어 77건
발생 → 소스를 독립
만약 패턴(early-return/플래그 변수)으로 평탄화,
따옴표/역슬래시 비교를
글자변환(34)/글자변환(92) 문자 변수 비교로
치환해 0건까지 정리.
hanseonc_rpn 직접 컴파일 확인.
- 스모크(포트 9300 임시 사본, 라이브 9785/9786/9787은 타 세션 점유라
회피):
/health,
/,
/legacy,
/셸.js,
/모듈/sky.js(다른
세션이 이미 만들어둔 모듈 파일까지 정상 서빙 확인), 모듈 화이트리스트
위반·경로조작 400,
POST /api/quantum/run bell/ghz12/bb84 결정론
재현(동일 요청 2회 동일 응답),
POST /api/estel/ai compute/query 두
경로, 레거시 5종(
/api/qkd eve on/off·bbm92,
/api/qec,
/api/surface,
/api/tcount,
/api/pqc) 전부 실측 200 + 정상 JSON. 404/OPTIONS도 확인.
관련 파일
/Users/ef/crowny-estel/서버.한선 — 고수준 정본(941줄)
/Users/ef/crowny-estel/서버.toau — 컴파일 산출(569,604B)
/Users/ef/crowny-estel/서버.rpn.한선 — RPN 헌법 정본(1506줄)
- SSOT:
/Users/ef/Downloads/design_handoff_estel_qi/README.md,
DEVELOPER_GUIDE.md
- 하우스 패턴 정본:
/Users/ef/crowny-cad/서버.한선
- 레거시(보존, /legacy로만 서빙):
/Users/ef/crowny-estel/estEL.html,
/Users/ef/crowny-estel/estEL서버.js(:9601, 별개 서비스로 무접촉)
잔여 이슈
- 라이브 :9785 전환(node → 이 서버) — 사용자 승인 필요, 이 작업 범위 밖.
/Users/ef/crowny-estel/모듈/ — 다른 세션이 sky.js 등 모듈 스크립트를
병행 제작 중(스모크 시점 sky.js 확인됨). 앱.html/셸.js는 스모크 시점
이미 다른 세션이 채워둔 상태(200 확인) — 내용은 검증 범위 밖.
- clike_to_rpn.한선 컨버터의 "아니면 만약"/이스케이프따옴표 조건 버그는
이번엔 소스 측에서 회피만 했다 — 컨버터 자체 수정은 별도 과제로 남김.