크라우니 클라우드·메모장 구축 + 메일 현황
개요
사용자 요청:
크라우니클라우드 서비스 + 크라우니메모장 서비스 신규 구축, 크라우니메일 현황 체크.
추가 아키텍처 지시: 단순 JS 랜딩이 아니라 스택 위에 올린다 —
벡터형4상균형3진 → 크라우니3진기계어 → 한선씨RPN → 크라우니VM → 크라우니OS → 크라우니블록체인서버 → 클라우드/메일/메모장. (헌법 상승방향과 일치)
레이어 매핑 (실체)
| 레이어 | 실체 | 역할 |
|---|
| 벡터형4상3진 → 3진기계어 → 한선씨RPN | crownyc(639KB) + TOAU | 코어 로직 컴파일/실행 |
| 크라우니VM / OS | crownyc 런타임 | 실행 기반 |
| 크라우니블록체인서버 | chain :9729 / Bank :9400 (CellCoreDB, Balanced Ternary) | 콘텐츠 해시 체인 앵커 |
| 클라우드·메일·메모장 | 한선씨 코어 + 통합 웹셸(서비스서버.js) | 서비스 |
무엇을 했는지
1. 크라우니메일 현황 (체크 완료)
- ✅ 운영 중 — 통합
서비스서버.js가 :9610 서빙. HTTP 200, health service:mail, UI=public/mail/index.html(37KB)
- ⚠️ 독립 구현
/Users/ef/crowny-mail(server.js + 크라우니메일서버.한선 28KB)는 미가동 레거시(9610은 통합서버 점유)
- 데이터:
/Users/ef/crowny-data/mail/(wal.log, users.log)
2. 크라우니메모장 (신규) — memo.crowny.org:9612
- 한선씨 코어
크라우니메모장코어.한선 — 메모아이디(콘텐츠해시), 앵커생성(해시체인), 메모매칭(검색), 고정우선/정렬가중. crownyc 컴파일·자체검증 통과.
- 웹셸
public/memo/index.html — 검색·고정·태그·자동저장, 디자인표준(베이지+골드 #C9A961, Pretendard, 다크/라이트), 블록체인 해시체인 앵커 표시.
- 기기간 동기화: 표준 owner 스코핑
/api/store 스니펫 재사용.
3. 크라우니클라우드 (신규) — cloud.crowny.org:9611
- 한선씨 코어
크라우니클라우드코어.한선 — 항목아이디(콘텐츠주소화 dedup), 앵커생성, 용량허용/사용률(512KB 한도), 원본바이트. crownyc 통과.
- 웹셸
public/cloud/index.html — 폴더트리·드래그앤드롭 업로드(base64)·용량게이지·미리보기/내려받기·콘텐츠해시 dedup·해시체인 앵커.
- 정직: 개인 보관함 한도 512KB(/api/store 캡) UI 노출. 대용량은 향후 전용 업로드 백엔드.
4. 인프라 결선
- 포트:
crowny-ports.sh set → cloud 9611, memo 9612 (gateway.yaml SSOT + PORTS.md 갱신)
- registry.psv 한 줄씩 추가 → manage.sh 자가치유 데몬(pid 37210, 30초) 자동 커버
- 게이트웨이 자동결선: HTTP :8080 301→HTTPS, HTTPS :8443 SNI TLS OK(마스터폴백 cert), DNS A=112.144.147.144
- store 왕복 검증: POST {ok:true} / GET 데이터 반환 ✓
한선씨 함정 (이번에 재확인)
포함()은 위치(0-base) 반환, 미발견 -1 → 진리값 대신 != -1 비교 (메모매칭 버그 수정)
- 시각+10^12 정렬가중은 정수 오버플로 음수 래핑 → 고정우선/정렬가중 2필드 분리
- 본문 65535B 캡 가드, 사용률 ×100 먼저(자연반올림 회피)
관련 파일
/Users/ef/crowny-services/크라우니메모장코어.한선, 크라우니클라우드코어.한선
/Users/ef/crowny-services/public/memo/index.html, public/cloud/index.html
/Users/ef/crowny-services/registry.psv (cloud|9611, memo|9612 추가)
2차 (이어서 완성)
블록체인 앵커 저널 — 실제 연동 완료
chain:9729는 compiled .toau로 임의 콘텐츠 제출 API 없음(submit/tx/anchor 404) → 게이트웨이 chain-anchor 저널 패턴을
서비스 계층에 직접 구현(더 정직·완전).
서비스서버.js에 /api/anchor 추가: owner/service별 append-only 해시체인 data/anchor/<owner>/<svc>.jsonl. anchor = SHA-256(prev + content), 서버 권위 head, 콘텐츠 hex해시만 허용.
- 한선씨 동반
앵커저널.한선(콘텐츠유효·앵커계산·앵커검증·다음시퀀스) crownyc 검증 통과.
- 레이어 정합 증명: crownyc
해시_SHA256 ≡ node sha256(0d4228cc4f3b1f21 동일) → 한선씨 VM 예측 앵커(0d4228cc, 4b6e21d5)가 서버 산출과 정확히 일치. 한선씨VM ≡ 서버 ≡ 영속저널 3중 정합.
- 웹셸 결선: memo/cloud가 저장 시 콘텐츠해시를
/api/anchor에 디바운스 제출, 서버 확정 #seq 앵커 표시. .jsonl 영속 확인.
RPN 정통 변환 (헌법 상승방향)
clike_to_rpn.py로 3개 코어 RPN 정본 생성:
앵커저널.rpn.한선(57),
크라우니메모장코어.rpn.한선(88),
크라우니클라우드코어.rpn.한선(74). 운영은 고수준(같은 기계어), RPN은 학습DB 정본 아카이브.
3차 — 클라우드 실파일 백엔드 (실사용 수준)
512KB localStorage 한계 제거 →
디스크 스트리밍 블롭 저장소.
서비스서버.js /api/blob(POST 스트리밍 업로드·GET Range·DELETE) + /api/quota. data/blobs/<owner>/<sha256>, 콘텐츠 주소화(id=SHA-256(bytes)=dedup), owner당 256MB 쿼터·파일 64MB 상한, 메모리 버퍼링 없음(스트림+해시 동시), Range 206 미디어 시킹.
- 프론트 전환: base64 localStorage → 실제 업로드(XHR 진행률), 메타(이름/폴더/blobId)만 동기화, 미리보기=이미지/비디오/오디오/PDF/텍스트 인라인, 내려받기=Content-Disposition, 삭제 시 참조 끊긴 블롭만 서버 회수.
- 한선씨 동반
블롭저장소.한선(업로드허용·새블롭인가·쿼터증가·사용률·레인지끝/길이) crownyc 검증 통과 + RPN 정본.
- E2E 입증: 2MB 스트리밍 업로드 → 다운로드 SHA == id(무결성), Range 206 정확, 쿼터 반영·DELETE 회수. 인라인 주석 함정([[feedback_hanseon_comment_bug]]) 1건 수정.
4차 — 다기능 고도화 (울트라 병렬 Workflow, 6에이전트)
울트라 병렬 Workflow(
wf_90c35d38)로 비충돌 병렬(단일파일-단일작성자) 구현. 모델 분업: 백엔드=opus, 한선씨/프론트/검증=sonnet, 연구=fable(가용불가→opus 재실행).
백엔드 (서비스서버.js, +신규 3 엔드포인트, ADD-only)
- 썸네일
GET /api/blob?thumb=1&mime=image/* — macOS sips로 320px JPEG 생성·<id>.thumb 캐시·비이미지 폴백.
- ZIP
POST /api/zip {entries:[{id,name}]} — 순수 node CRC32+store(무압축) local/central/EOCD 직접 작성, 스트리밍, 256MB·2000엔트리 가드.
- 공유
POST /api/share(토큰 24-hex, data/share/<token>.json) · GET ?t=(공개·만료410·blob스트리밍/note text) · DELETE(owner일치).
- 헬퍼: SHARE_DIR·CRC_TABLE/crc32·zipSafeName·execFileSync.
프론트
- 클라우드(public/cloud): 썸네일 그리드·갤러리 라이트박스(lbOpen ←→)·폴더 ZIP·공유링크·휴지통(소프트삭제/복원/영구)·이름변경/이동·전체검색. 13 신규함수.
- 메모장(public/memo): 마크다운 렌더(mdParse, XSS escape先)·내보내기(md/txt/json)·노트북 그룹·공유링크·검색 하이라이트.
한선씨 동반 (신규 3 + RPN)
압축저장.한선(ZIP 오프셋/EOCD/CRC 데모)·공유토큰.한선(토큰·만료·권한)·썸네일.한선(이미지판정·리사이즈비율). 7개 코어 전부 crownyc 컴파일+실행 통과. RPN 정본 동반.
검증 (17/17 기능 PASS)
독립 스모크: 썸네일 ffd8(JPEG)·ZIP 504b(PK)+unzip목록·공유 token→200·회귀(store/anchor/quota/blob) 정상. 3서비스 헬스 200.
5차 — 딥리서치 반영 (2026-06-16, opus)
딥리서치(별도 문서
2026-06-16-크라우니클라우드-메모-딥리서치-아키텍처.md) 우선순위 3종 즉시 구현:
- #1 데이터손실 근본수정 — 신규
/api/merge(항목 id별 ts LWW + 툼스톤). 공용 /api/store(30+서비스) 무수정, 클라/메모 전용 결선(save→scheduleMerge·삭제→addTomb·rename/move ts갱신·로드 mergeSync, fail-safe). 멀티기기 시뮬: B기기 동기화 후 A·B 노트 모두 보존 검증.
- #2 공유링크 위생 —
/api/share에 Referrer-Policy: no-referrer+X-Robots-Tag: noindex, 토큰 96→128bit.
- #5 무결성 검증 —
GET /api/anchor?verify=1 체인 재계산 intact 판정.
- 한선씨 동반
항목머지.한선+RPN. 8개 코어 전부 컴파일 통과, 3서비스 헬스 200.
잔여 이슈 (차기)
- 노트 본문 시퀀스 CRDT(동시 텍스트 협업)·재개가능 업로드(64MB 초과 시)·머클 체크포인트+Ed25519 — 딥리서치 권고, 별도 세션
- 크라우니브라우저 첫 검증(feedback_crownybrowser_first_test) → 크롬 cross-check (수동)
- 레거시
/Users/ef/crowny-mail 통합 or 폐기 결정