← 목록
한선씨 2026-07-19 5KB 읽기 5분

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).

    검증

    1. hanseonc_high 컴파일 — 에러 0, CROWNY_STRICT=1 경고 0.
    2. 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 직접 컴파일 확인.
    1. 스모크(포트 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.한선 컨버터의 "아니면 만약"/이스케이프따옴표 조건 버그는
    이번엔 소스 측에서 회피만 했다 — 컨버터 자체 수정은 별도 과제로 남김.