크라우니캔버스 최종 재검 (:9620)
개요
crowny-canvas 서버(:9620) 라이브 최종 재검. blockRef 계약 회귀·검색 스톨 진단/해소·정크 데이터 정리·hex 하드코딩 감사 수행.
무엇을 했는지
① 정적 5종 + API 11종 curl 상태
전부 200 확인(/ /demo /bar /setup /legacy, /api/부팅 /api/브리핑 /api/커넥터상태 /api/결재함 /api/검색 /api/원장 /api/페이지/<id> /api/페이지생성 /api/온보딩(검증 400) /api/커맨드(200/400 분기)).
② blockRef 계약 회귀
- blockRef 포함 → 200 확인
- blockRef 미포함 → 400
{"오류":"blockRef 필수(대상 페이지를 지정해야 권한 검증 가능)"} 확인
정상 동작.
③ 검색 스톨 진단 및 해소
q=Today: 8.15s, q=부하: 23.86s(수리 전 실측) — 500ms 기준 대폭 초과.
- 검색.한선 로직 자체는 정상(격리 테스트: 323건 인덱스 대상 검색_질의 9ms) → 병목은 검색 알고리즘이 아니라 라이브 crownyc 프로세스의 VM 힙 고갈 상태였음.
- /tmp/crowny-canvas.err 확인 결과
[ARRAY] OOM! base=143838190 MAX=144000000(144M 캡 근접) 반복 플러딩 + [STR] 조기경고 432000/480000(90%) — 과거 부하테스트(부하테스트 페이지 1~113)·1000건 자체테스트 반복 실행 잔재로 힙 고갈.
- 데이터/페이지.psv 정크 정리(184줄→27줄, 부하테스트 113·XSS/악의주입 3·타이밍측정 1·단건측정 9·멱등성테스트 2·테스트/라우트검증 2·선테A-D 체인 8·중복 Notes/Tasks/Wikis 45 제거) + 검색인덱스 샤드 재생성(검색재색인_임시.한선으로 27건 재색인) + 컬렉션 타이밍 테스트 잔여물 정리.
launchctl kickstart -k gui/$(id -u)/org.crowny.canvas로 프로세스 재기동(힙 리셋).
- 재검: q=Today 239~254ms(3회 반복 동일), q=기획 232ms — 500ms 기준 충족.
④ 컬렉션 조회 시간 실측
실 컬렉션 데이터 없어 100건 합성 데이터로 하니스 측정(컬렉션타이밍_임시.한선):
- 컬렉션_레코드목록(100건) = 43ms
- 컬렉션_레코드필터 = 50ms
- 컬렉션_레코드정렬 = 78ms
⑤ hex 하드코딩 grep (tokens.css 제외)
잔존 발견(수정은 담당 범위 밖 — 미수정, blocked 보고):
- 앱/bar.html: L51
#D8CBAF, L53/L65 #FFFDF6, L75 #FFF7EA
- 앱/화면/editor.js: L742
#D5C8A8
- 앱/화면/approval.js: L173, L305
#F0E8D4
- 공용.js: 0건
관련 파일
- /Users/ef/crowny-canvas/한선씨/서버.한선, 검색.한선, 컬렉션.한선
- /Users/ef/crowny-canvas/데이터/페이지.psv (정리됨, 백업: 페이지.psv.bak_cleanup_1784834629)
- /Users/ef/crowny-canvas/데이터/_정리백업/ (제거된 검색인덱스·컬렉션 테스트 잔재 백업)
- /Users/ef/crowny-canvas/앱/bar.html, 앱/화면/editor.js, 앱/화면/approval.js (hex 하드코딩 잔존, 미수정)
잔여 이슈
- hex 하드코딩 7건(bar.html 4·editor.js 1·approval.js 2) — tokens.css var()로 치환 필요(담당 에이전트).
- 저장소.한선 손상 로그 1건 관측:
데이터/블록/seed_room_a.json 루트가 배열이 아님 → 안전 폴백 [](과거 발생, 원본 보존 상태 — 수동 복구 필요 여부 확인 권장).
- 이번 재검 자체(하니스 스크립트 컬렉션타이밍_임시.한선/검색재색인_임시.한선/검색타이밍_임시.한선)가 라이브 힙/데이터에 부하를 남기는 패턴 재확인 — 향후 유사 부하테스트는 별도 프로세스(격리 crownyc run)로만 실행하고 라이브 :9620 프로세스에는 절대 태우지 말 것(오늘 재발 원인의 재발 방지 메모).