CrownyAI 워드 앱 — 표준계약 리팩터 + 회귀 편입 (W-A)
개요
크라우니AI 벡터 워드가 시계·메모·할일·설정·북마크·파일·날씨 7앱과 동일한
"앱서비스_<앱>.한선 표준계약"에 합류했다. 07-12 인라인 이식(앱상주서버.한선
1445~2088줄, _v워드렌더/_워드이벤트적용 비표준 명명) 상태의 기술부채를
해소하고, 벡터게이트 회귀 스위트에 워드 케이스를 편입했다.
무엇을 했는지
- A1 파리티 diff: 원본
crowny-word/앱/워드벡터앱.한선(34함수) vs 인라인
_시작/확인/통합절차설명은 테스트전용으로 제외,
_배열합치기는 서버 공용 합치기로 이미 치환됨을 확인. 다만 워드텍스트(상태)·
워드커서(상태)(상태에서 텍스트/커서 뽑는 접근자) 2개가 누락돼 있어
_워드텍스트/_워드커서로 신규 이식(순수 추가, 기존 동작 무영향 — 인라인
코드는 이미 상태파싱을 직접 호출해 왔음).
- A2 표준계약 리팩터: 워드 섹션 전체(함수 정의만)를
src/앱서비스_워드.한선(689줄, 45함수)로 추출. 표준 export
_워드_벡터렌더(CVW,CVH)(내부적으로 기존 _v워드렌더 호출)·
_워드_액션처리(액션)(내부적으로 기존 _워드이벤트적용 호출) 추가 —
내부 헬퍼 리네임은 최소화(회귀 안전). 모듈 상수 8개(_워드제목바H 등)는
top-level 변수였던 것을 파라미터없는 접근자 함수로 전환(표준계약의
"top-level 문 없이 함수만" 요건 충족 — 시계/메모 등 기존 7앱도 top-level
변수 0개였음을 확인 후 동일하게 맞춤).
앱상주서버.한선에는 가져오기 "앱서비스_워드.한선" 추가 + 디스패치
(_벡터처리)가 새 표준 함수를 호출하도록 축소(1445~2088줄 인라인 정의 제거,
총 644줄 삭제 → 짧은 안내 주석 3줄로 대체).
- 컴파일 게이트:
hanseonc_high재컴파일 exit 0·에러 0.
앱상주서버-wA.toau 1,801,884바이트 (베이스라인 1,793,428바이트 대비
+8,456바이트, +0.47% — 파리티 이식분+어댑터 2개+접근자 8개 증가분).
- A3 회귀 편입:
native/벡터게이트.한선_회귀모드()에 워드 케이스 3종
벡터|워드|렌더|960|640→"CMD " 형식 확인, _워드KEY반영확인()
(KEY|A 전송 후 렌더 응답 TEXT에 "A" 반영 확인), 벡터|워드|초기화(미정의
명령이 에러 없이 CMD로 우아하게 처리됨을 확인). 통과 판정 기준
8/8 → 11/11로 갱신. native/벡터게이트.sh의 backup_state/restore_state에
워드상태 추가(기존 터미널상태/입력상태/계산기상태와 동일 패턴).
- A4 실기동 종단 검증: 격리 포트(28950)로
crownyc run기동 →
벡터|워드|렌더 초기 렌더 확인 → KEY|H→KEY|i 연속 전송 → 이어진
렌더 응답 TEXT 20 44 15 26 26 26 Hi 로 실제 반영 확인 → CLICK|300|80
정상 CMD 응답 → /tmp/워드상태.psv 파일에 "Hi" 반영 확인 후 서버 정상
종료. 이어서 bash native/벡터게이트.sh 회귀(11/11 티) +
벡터게이트.sh 전체(회귀 11/11·rtt 티 p50=3ms·스트레스 티 드리프트
401→432ms) 전부 실측 PASS.관련 파일
/Users/ef/CrownyBrowser/src/앱서비스_워드.한선(신규, 689줄, 45함수)/Users/ef/CrownyBrowser/src/앱상주서버.한선(2346→1708줄, 워드 인라인 제거 +
/Users/ef/CrownyBrowser/native/벡터게이트.한선(173→193줄, 회귀케이스 8→11)/Users/ef/CrownyBrowser/native/벡터게이트.sh(backup/restore 대상에
- 백업:
*.bak-표준계약-1784824643(src/native 3파일)
잔여 이슈
- 없음 — 컴파일·회귀·실기동 3게이트 전부 PASS. 다른 7앱과 완전 동일 규약