← 목록
한선씨 2026-06-22 17KB 읽기 17분

한선씨 대치감사 → 책·마이그레이션·부동소수점 (2026-06-22)

개요

"한선씨 구현능력·전체 서비스 대치 가능성·저성능 영역" 울트라씽킹 감사에서 출발해, 사용자 지시로 ① 책 발간 ② node→한선씨 마이그레이션 ③ 부동소수점 벽 돌파 ④ 음 본래의미 정정을 수행.

감사 결론

  • VM(crownyc.c 867 opcode)·고수준(hanseonc_high 225함수/24lib) = 프로덕션급
  • 210서비스 중 ~72-75% 즉시 대치가능, 사이드카(한선주서버+JS HTTPS브리지) 표준화 시 ~90%
  • 4대 물리벽: 부동소수점·TLS·외부LLM·대용량스트리밍
  • RPN 정통(hanseonc_std.asm) 깨짐, hanseonc_rpn.c는 작동 → 문서정정 필요
  • 크라우니코드 생성엔진 자립도 70%(수학98·문자열98·네트워크97·알고리즘91, 약: 파일IO74·자료구조66)

1. 책 — book.crowny.org/hanseon (발간)

  • "한선씨 만들기 — 한국어로 컴퓨터를 짓다", 4버전(kid/fast/general/expert)×7장
  • 빌더 CONFIG: 웹/build-reader.js 의 hanseon 항목 추가
  • 원고: data/전권/hanseon/{버전}_{NN}.md
  • 1차 집필(35에이전트) 후 다듬기(20에이전트): 음 본래의미 충실 반영 + 한계중심→극복서사 톤전환
  • 공개 HTTPS 200 검증(8443 SNI), 라이브 무중단. 1편 유지, 2·3편 보완 예정

2. 마이그레이션 — 서비스서버.한선 (파일럿)

  • /Users/ef/crowny-services/서비스서버.한선 (384줄, EXIT=0): 33서비스 공유 node 진입점의 한선씨 대치
  • 섀도 패리티 6/6(19742 vs 9742 beauti): health/정적/tokens.css/store/폴백
  • 일괄스왑 안전대상 29개(blob/anchor 미사용). 미포팅=blob스트리밍/SHA256앵커/ZIP/CRDT merge → JS유지(4096캡 한계). cloud/memo는 2차
  • 라이브 컷오버 완료(2026-06-22): 33서비스 중 28개 node→한선씨, 롤백 0. 카나리(beauti)→데몬1틱 안정확인→배치(서비스별 health+landing 200 검증 통과시에만 등재). 공개 8443 200
  • 영속화: manage.sh 패치(is_migrated→crownyc/node 분기, stop=js|toau, 백업 .bak.precutover_20260622) + migrated.txt(28개) + LaunchAgent kickstart. 한선씨 죽으면 데몬이 한선씨로 자가치유
  • 제외 5개(node 유지): cloud·memo(blob/anchor)·mail(메일API)·ecosystem(상태집계)·market(coin) — 동적API 미포팅, 2차
  • 롤백: migrated.txt에서 이름 제거 → manage.sh restart. 함정: TCP읽기 2인자 필수

2차 마이그레이션 — 동적 API 포팅 + 컷오버 (2026-06-22)

  • 서비스서버_ext.한선 → 프로덕션 서비스서버.한선/.toau(843KB, 백업 .bak.preext_20260622). 회귀 안전(bible·care·market 200)
  • 포팅 동적 API: store(GET/POST 본문누적)·anchor(SHA256체인)·merge(LWW)·quota(du)·access(집계)·status(ecosystem 순차헬스)·구매확정(verse coin TCP, graceful)·share-note. 본문누적=Content-Length+TCP읽기(연결,4096) 루프
  • JS 영구유지: blob GET(Range 스트리밍)·zip(CRC32 바이너리)·share-blob — 바이너리 스트리밍은 JS 우위
  • 추가 컷오버: memo·ecosystem → 한선씨(검증: memo store/anchor 라운드트립, ecosystem /api/status 200). 최종 30 한선씨 / 3 node
  • node 잔류 3개: cloud(blob 코어)·market(이미지 blob 가능성)·mail(독립 메일서버 49라우트)
  • 함정: owner=X-Crowny-Owner 헤더 또는 ?o=, sanitizeOwner는 8~100자 [a-zA-Z0-9_-](짧은 owner 401은 정상 거부)

4. 축자속모터 4상균형3진 벡터제어 — 축자속벡터제어.한선 (2026-06-22)

파일: /Users/ef/CrownyOS/apps/축자속벡터제어.한선 (25KB, 기존 축자속모터.한선 무수정). 가져오기 고정소수점v2
  • 클라크/파크/역파크/역클라크(고정v2_사인·코사인 CORDIC), FOC비율(변조율·dq비·약자속비)
  • ★균형3진 ↔ NPC 3레벨 인버터★: 상별 Vx→{T=+Vdc/2, O=0, A=-Vdc/2}, 3상 3트릿=3³=27 전압벡터=ISA729 큐브 주소공간 동형
  • ★적은트릿 원리 실증★: 3⁷=2187 제어, 최대오차 0.28% < INT8(256레벨) 0.39% → 제어루프 저정밀 충분(테슬라 교훈 수치확인)
  • 4상판정 Ti(정상)/Om(경계)/Ta(과변조)/Um. 예제 θ=30/60/90/45° 검증
  • 미구현: PI 전류제어기, SVM, PLL/관측기, 약자속 id_ref 감쇄(현재 개루프)

4-b. 축자속 폐루프 — 축자속폐루프.한선 (2026-06-22)

파일: /Users/ef/CrownyOS/apps/축자속폐루프.한선 (가져오기 축자속벡터제어+고정v2, 기존 무수정)
  • PI 전류제어기(Kp≈0.8/Ki≈0.3, 안티와인드업 Vq=400V 클램프 확인), SVM 6섹터(T1+T2+T0=2187 보장), 약자속 id_ref(|V|>462V 음수감쇄), 모터모델(R10mΩ/L1mH/Ψf1Wb/Ts100μs 오일러)
  • 폐루프 스텝응답: 5A@1000rpm 오차0.02%, 10A@2000 0.12%, 15A@5000 1.0%, 200스텝(20ms) 수렴
  • 한계: 5000rpm 오버슈트 42%(Kp/Ki 재조정 필요), θ=0 고정(옵저버/엔코더 미연동), 데드타임보상·열모델·과전류인터락 없음. 실HW 전 6종 필요(θ추정기/이득재조정/데드타임/ADC동기/파라미터갱신/안전래치)

5. blob 바이너리 스트리밍 + VM opcode 3개 (2026-06-22)

  • /Users/ef/crowny-services/블롭스트림.한선: 다운로드(파일소켓전송 856, 바이트안전 MD5일치), Range, 업로드(버퍼SHA256+버퍼파일쓰기)
  • ★VM opcode 3개 추가(crownyc.c/hanseonc_high.c, additive)★: 857 버퍼파일쓰기(BUF_FILE_WRITE, fopen wb+fwrite+원자rename), 858 버퍼SHA256(BUF_SHA256, 버퍼 대상 해시), 859 파일소켓범위전송(FILE_SOCKET_SEND_RANGE, fseek+부분전송). 사용중 아닌 번호, case 856 직후. 이름테이블+hanseonc_high 매핑 전레이어 배선
  • 회귀 ALL PASS(고정v2·크라우니수·서비스서버 컴파일·산술/배열/맵), opcode 스모크(버퍼SHA256=해시_SHA256 바이트동일)
  • blob 섀도 9/9: 200KB NUL업로드 SHA256+cmp 바이트동일, dedup, 대용량Range offset>65536, 전체다운로드 바이트동일
  • ★프로덕션 VM 스왑 완료(사용자 승인)★: 백업 crownyc.bak.preopcode_20260622·hanseonc_high.bak.preopcode_20260622, 원자 mv. 프로덕션 스모크 버퍼SHA256("Hello")=해시_SHA256 검증. 30 라이브 한선씨 서비스는 in-memory 구바이너리 무영향, respawn시 신바이너리(additive 안전)
  • ✅ 블롭스트림→서비스서버.한선 통합 완료(가져오기+/api/blob prefix 라우팅, 바이너리안전 버그수정 부분/글자수→버퍼찾기/잘라/문자열). 서비스서버.toau 1.25MB 스왑(백업 .bak.preblob_20260622)
  • cloud·market 컷오버 완료: cloud blob 라이브 라운드트립 50KB 업로드→다운로드 바이트동일. 최종 32 한선씨 / 1 node(mail만), 공개 8443 전부 200
  • node 잔류=mail(독립 크라우니메일서버 49라우트, 별도 트랙)

mail + kimpresidentsk 컷오버 → 100% 한선씨 (2026-06-22)

  • mail: /Users/ef/crowny-mail/크라우니메일서버.한선(406KB toau, 17라우트 완전 독립 HTTP서버). 독립 LaunchAgent com.crowny.mail(KeepAlive, PORT=9610). 라이브 발송→수신 검증(admin@crowny.org/crowny2026! → kim, "33완성" 수신). 세션=X-Session 헤더
  • manage.sh 독립.txt skip 추가(is_independent → start_one return3): 독립 LaunchAgent 소유 서비스를 데몬이 무간섭(mail 등록). 데몬 충돌 방지
  • kimpresidentsk(9942, 후발 등록 서비스)도 서비스서버.toau로 컷오버
  • ★최종: 34 공유서비스 전부 한선씨, node 0★
  • ⚠️ mail 영속성 갭: 인메모리 DB(재시작 시 admin/kim/rental 3계정만, 메일 초기화). mail.log/users.log는 있으나 부팅 replay 미구현 → 다음 개선과제(부팅시 로그 replay)
  • 진단경고 2건(crownyc.c:9361 unused-return, 12200 misleading-indent)=기존코드 코스메틱, 신규opcode 아님

6. 크라우니수 모터 결선 — 축자속손실.한선 (2026-06-22)

파일: /Users/ef/CrownyOS/apps/축자속손실.한선 (가져오기 크라우니수+고정v2)
  • Steinmetz 철손 P_fe=k·f^1.6·B² — f^1.6 멱법칙=크라우니수_지수(0.6×크라우니수_로그(f))×f (α=정수1+소수0.6 분해로 오버플로 회피)
  • ★크라우니수 스위치 실증★: 철손=켜기(멱법칙 eᵏ), 동손 I²R=끄기(3진). 함수내 끄기() 복원으로 문맥누출 0
  • f^1.6 정밀도: f≤1000Hz 오차 0천분율(Python 일치). 효율 99.2%@4000rpm→98.4%@12000rpm(고속 철손 지배, 물리타당)
  • 한계: f>7527Hz(113,000rpm) 오버플로 — 운용상한(800Hz/12000rpm)의 9.4배라 무관. 함정수정: 고정v2_곱셈 정밀손실→_고정곱 분해

7. θ 슬라이딩모드 옵저버 — 축자속옵저버.한선 (센서리스, 부분통과)

파일: /Users/ef/CrownyOS/apps/축자속옵저버.한선 (가져오기 고정v2)
  • SMO 전류옵저버(K·sign 적분기 내부), 역기전력→θ=CORDIC arctan2(4사분면 정확 0/90/±135/45°), LPF(α=0.7), PLL(각도PI)
  • 수렴: 1000rpm 750스텝(75ms)→정상상태 9°, 2000rpm 600스텝→17°, 3000rpm 360스텝→0°(진동중). 전 케이스 최소오차 0° [Ti-수렴]
  • ★정상상태 오차=LPF 위상지연(이론 9.9/19.2/27.6° vs 측정 9/17/28°, 2° 이내 일치)=설계 트레이드오프, 버그 아님★
  • 한계(센서리스 고유): ①저속(<800rpm) 역기전력<채터링→추정불능(HFI/인코더 기동필요) ②LPF 위상지연 토크오차 sin(28°)=47%@고속(α↑로 완화) ③3000rpm PLL 진동(Kp↓ 필요) ④VM OOM(함수내 배열누적, >600스텝→전역변수 리팩터/MEM_MAX 확장 필요)
  • 개선여지: 위상지연 보상(θ+예측), 전역변수 리팩터(OOM), Kp 재튜닝

수 체계 3분할 (확정)

  • 기계제어=적은트릿 고정소수점(3⁷, 3레벨인버터 직결) / 회계=정확정수+오일러e 상수 그대로(진법에 안녹임) / 과학·지수로그=크라우니수 v3

3. 부동소수점 — 고정소수점.한선 (돌파)

  • /Users/ef/CrownyOS/crownyc/libs/고정소수점.한선 (233줄): 테슬라식 스케일드정수
  • SCALE=1000(소수3자리, 1e6는 곱셈 오버플로 ±1412억 초과). 함수 10종(정수화/덧셈/뺄셈/곱셈단계축소/나눗셈/루트뉴턴/사인·코사인 분면축소테일러/문자열/절댓값)
  • 정확도 최대오차 0.001. 검증 에이전트가 나눗셈 단계축소 버그 1건 수정
  • 함정: VM 자연반올림이 문자열변환 깨뜨림(-0.999→"1.-1")→_바닥나눗셈 헬퍼
  • 테슬라 웹리서치: 1차 Fable 불가로 실패 → sonnet+WebSearch로 재실행(진행중)

4. 음 본래의미 정정 (사용자)

  • 옴(O,0)=화이트홀·가시선·티/타 전상태 / 음(U,-0)=블랙홀·비가시선·모름영역(옴0 대치 -0)
  • 코드의 U=구분자/띄어쓰기는 2진FPGA 매핑 도구적결정일뿐, "단지 띄어쓰기" 아님
  • 메모리 reference_tiomta_4sang_um_meaning 기록, 책 1·2·6장에 반영

3-b. 테슬라 정수연산 리서치 (학습 완료)

출처: Tesla FSD HW3/HW4(INT8×INT8→INT32, 4.9 TOPs/W), Dojo CFloat8, ISO26262/DO-178C, CORDIC, nullhardware 고정소수점.

왜 FP를 피하나: 정수가 9배 전력효율 / 플랫폼불문 결정론(FP는 라운딩모드·FMA·재순서화로 결과 달라짐) / NaN·Inf·denormal 없어 인증(형식검증) 쉬움. 테슬라 전략=훈련 CFloat8·추론 INT8 분리.

고정소수점.한선 개선 5 (권고):

  1. SCALE 1000→65536(Q16): 2의거듭제곱→>>16 비트시프트로 자연반올림 오차제거, 66배 정밀(오차 0.000015). 안전최대값 ≈2,154,831. 기존 API 호환 위해 Q16 변형모드 분리
  2. 테일러 sin/cos→CORDIC(덧셈+시프트만, 20회=6자리, 극점오차 제거) 또는 nullhardware 5차다항식
  3. 곱셈 단계축소 기준 절a > sqrt(VM_MAX/SCALE)≈375786로, 음수 부호보존 검증 추가
  4. 나눗셈 뱅커 반올림(round-half-to-even)으로 누산편향 제거
  5. 뉴턴 루트 초기값 MSB 비트추정(60회→6~10회), 수렴조건 차이<1
아키텍처 권고: 단기=라이브러리 개선(Q16/CORDIC/뱅커), 장기=VM opcode(FMUL_Q16 등). 단 VM은 범용 3진ISA 유지하고 고정소수점 보정은 라이브러리가 담당하는 역할분리가 맞음(VM cube_divmod는 이미 자연반올림 처리).

3-c. 고정소수점 v2 — 4상균형3진 네이티브 (구현·검증)

파일: /Users/ef/CrownyOS/crownyc/libs/고정소수점v2.한선 (v1 보존)
  • SCALE = 3^11 = 177147 (10진 1000 아님 — 3진 네이티브). VM 워드=3^24=±141,214,768,240
  • 트릿시프트 TSHR(opcode 95)로 ÷3^k 정확 (자연반올림 오차 없음). ÷e^k는 트릿경계 불일치로 불가
  • sin/cos = CORDIC 16단계(라딕스-3은 arctan(3^-i) 순환의존으로 미채택 → 3^k 스케일 위 표준 CORDIC, ÷2^i는 반복/2)
  • 나눗셈 뱅커반올림, 곱셈 단계축소(임계 sqrt(VM_MAX)=375785)
  • 정확도: 소수 ~5.2자리. 1/3 오차=0(3^11/3=3^10 정확 — 3진 네이티브 핵심이점). sin/cos 극점오차 1.7e-5
  • v1 대비: sin(3π/2) 오차 1e-3→1.7e-5 = 59배 개선, 3자리→5~6자리
  • 함정: 문자열변환 ×1e6 오버플로(2단계분리), VM 자연반올림vs floor 충돌(_v2_바닥나눗셈)
  • ★버그 수정완료★: 고정v2_루트 N=vSCALE^2 오버플로 → SCALE=3^6×3^5 분해 _ascale_div_b 2단계 나눗셈 + 뉴턴루프 고정v2_나눗셈 사용. 독립검증 sqrt(9)=3.000000·sqrt(100)=10·sqrt(2)=1.414210·1/3=0.333333. 안전범위 정수부 4→797,161

3-d. Cr(base-e=2.71828진법) 적용 검토 — 판정: 범용 불가, 특화 가능

  • Cr진법(/Users/ef/crowny-base): 자릿값=round(e^k) 무리수 위치기수계, 음(Um)=잉여덤프 오차누적버퍼
  • 범용 고정소수점 불가: SCALE=e^n 무리수 → e^n·e^m이 정수격자에서 닫히지 않음. 음덤프는 오차를 0이 아니라 유계로만 유지(저차수 상대오차 ~10%)
  • Cr 유리 도메인: 지수·로그·복리/감쇠·로그스케일 압축 (d/dx eˣ=eˣ 자연성, ln LUT가 진법 내장). CIF/CVF 트릿트리 코덱과 동형
  • 권고: 이원화 — 범용=3진(3^k, TSHR 정확), Cr=지수/로그 특화레이어. 최선=하이브리드(e^k 레벨 ⊕ 3진 가수 m·e^k), 잉여는 정규화 시점 1회만 음덤프
  • crowny-base 소스버그 발견: 그리드[7]=1096 → 정답 1097(round(e^7)). v1·v2_코어 동일 오타 (수정은 crowny-base 세션 판단)

3-e. Cr 하이브리드 v3 — 크라우니수.한선 (런타임 스위치) ✅

파일: /Users/ef/CrownyOS/crownyc/libs/크라우니수.한선 (366줄)
  • 표현: 하이브리드 (eᵏ 레벨 ⊕ 3진 가수, 고정소수점v2 백엔드 재사용)
  • 런타임 스위치: 전역 _크라우니수_모드(0/1) + 크라우니수_켜기()/크라우니수_끄기(). ON/OFF/ON 반복 정상
  • OFF = 3진 v2와 bit-identical(1/3 raw=59049, √2 raw=250523 오차0) — 폴백 완벽
  • ON 정확도: e¹=2.718279(오차~0), ln(e)=1·ln(e²)=2 정확, e^0.5 오차 3.4e-5, e²=7.389 오차 1.7e-5. 복리(1000,5%,10) 오차 0.062(테일러 6항 누산, 부분통과)
  • 16/17 PASS. 함정 수정: 고정v2_곱셈 오버플로분기가 e→3 뱅킹 → _cr_곱안전(S1=3⁶·S2=3⁵ 2단계)
  • 개선여지: 테일러 7~8항이면 복리오차 0.001↓. e⁵ 이상 별도검증
  • 용도: 지수/로그/복리 서비스(finance·reward·value·달란트)에서 필요시 스위치 ON

3-e-2. v3 정밀도 개선 (테일러 9항) — 2026-06-22

  • e^x 소수부 테일러 6→9항(누적식 항_k=_cr_곱안전(항_(k-1),frac)/k, 오버플로회피). 복리 rt=이율기간SCALE/1000 한번나눔
  • e^0.5 오차 2.8e-5→5.6e-6(SCALE 분해능 한계 도달). 복리(1000,5%,10)=1648.709829 오차 0.062→0.011. 복리(100,10%,1)=110.517819
  • OFF 회귀 PASS(1/3·√2 bit-identical), 스위치/ln/곱셈 미수정
  • ★중대 제약(finance 직결)★: 복리 원금 인자는 평문정수, 내부 고정v2_정수화 → 원금 > ~797,161(3¹³)이면 오버플로(복리(1e6,..)=-800). 고정소수점 정수부 천장. 수십억 CRY엔 부적합 → 워크어라운드: 천원단위 스케일 OR v4(원금을 하이브리드 eᵏ레벨⊕가수로 유지해 동적범위 확장 — Cr 본래목적)

잔여 이슈

  • 테슬라 리서치 결과로 고정소수점.한선 개선(삼각함수 극점오차, 정밀도) 검토
  • VM 네이티브 고정소수점 opcode 도입 여부 결정
  • RPN 정통 문서정정(hanseonc_std→hanseonc_rpn.c)
  • 마이그레이션 라이브 컷오버(29서비스) — 사용자 결정 대기
  • 책 2·3편 (만들기 서사 심화)

관련 파일

  • /Users/ef/crowny-agent/웹/build-reader.js (hanseon CONFIG)
  • /Users/ef/crowny-agent/data/전권/hanseon/.md
  • /Users/ef/crowny-services/서비스서버.한선
  • /Users/ef/CrownyOS/crownyc/libs/고정소수점.한선