벡터직결 P0-1b/2b/3b 독립 재검증 (2026-07-12)
개요
담당A(한선/앱상주서버.한선 P0-1b)·담당B(ObjC/crowny-browser.m P0-2b/3b)의 재수정 완료 보고를 7개 게이트로 독립 재판정. 결과: target_met = false (7개 중 3개 REFUTED/PARTIAL).
검증 환경
- 독립 빌드:
native/verify_bin(web/hybrid 설정, 소스 무수정), 소스 fresh 재컴파일
/tmp/앱상주서버.toau(md5 확인, STRICT 0경고).
- 3001줄/288KB 스크롤백 픽스처(원 보고 278KB와 근사 매칭)로
/tmp/터미널상태.psv임시 교체 후
- CrownyAI.app 미기동 확인(시작/종료 시 pgrep 공백), 기존 고아 프로세스(93820/99334, ppid=1)
게이트별 결과
| # | 게이트 | 기준 | 실측 | 판정 | |||||
|---|---|---|---|---|---|---|---|---|---|
| ① | GUI 실키 N=20(3001줄 로드) | p50<10ms | 10.401ms(1회) / 11.373ms(2·3회 합산 n=40, p95 17.6ms) | REFUTED (57.2ms 대비 ~5배 개선은 실재하나 <10ms 미달) | |||||
| ② | 소켓 단독 3001줄 렌더 | p50<6ms | 202KB픽스처 5.788ms / 278KB급 288KB픽스처 6.885ms(n=200) | REFUTED (원 보고 자체 수치 7.2~7.9ms도 이미 6ms 초과) | |||||
| ③ | 캐시 신선도(append) | 반영 확인 | MARKER99 append 후 정확히 반영 | CONFIRMED | |||||
| ④ | 크래시-재기동 이벤트 무유실 | 기대=실측 | 7회 시행 중 3회(43%) 이벤트 손실(1~5/8개) — 원인: sendVectorEvent 재시도는 "재기동을 트리거한 최초 1건"에만 적용, 재기동 진행 중(child listen 준비 전) 도착하는 후속 이벤트는 gAppSrvPort가 이미 낙관적으로 세팅돼 재시도 없이 즉시 드롭 | REFUTED | |||||
| ⑤ | selftest-inputv2 ×3 | 19/19, 고아0 | 3/3 통과, 포트 9801-9820 diff 0 | CONFIRMED | |||||
| ⑥ | 2500 스트레스 | 0에러·0경고·drift<2x | 균형 KEY:BS(실사용 타이핑 패턴) 시 drift 0.94~1.01x, 에러0, [STR]경고0(원 보고와 일치). 단 불균형(4:1) 시 drift 9.16x + [STR] 90% 조기경고 재현 — P0-1과 무관한 별도 코드경로(입력코어 KEY/BS, 원본 무수정 레거시)의 문자열 누적 문제, 신규 이슈로 별도 기록 | CONFIRMED(균형) / 별도 이슈 발견 | |||||
| ⑦ | 계산기·레거시 verb 회귀 | 정상 응답 | 렌더/렌더 | CW | CH/키 | FOCUS/키 | KEY/종료 + 벡터 | 계산기 전부 정상, 오류 0건, 종료 시 클린 셧다운 | CONFIRMED |
핵심 신규 발견 (담당A/B 보고에 없던 것)
- 크래시-재기동 burst 드롭: 재시도 로직이 "재기동을 트리거한 이벤트 1건"에만 적용됨.
justRestarted=NO가 되어 단 1회 시도만 하고 실패 시 재시도 없이 드롭.
원 보고의 "0/24 lost 3/3 trials"는 타이밍이 안 겹친 사례일 뿐, 43%(3/7) 재현.
- 입력필드 무한성장 함정(레거시, 이번 세션 범위 밖): KEY:BS 비율이 한쪽으로 치우치면
_필드값의 O(len) 부분()/글자() 특성 때문에 지연시간이 누적 성장하고, 문자열 핸들도
90% 조기경고 임계치에 도달 — P0-1이 대응한 것과 같은 "문자열 핸들 고갈" 위험군이 스크롤백이
아닌 입력필드 경로로도 재현됨.
- VEC_MISMATCH "+1" 불변식 아님: 배경 렌더 이벤트는 ~500ms 주기로 발생 → 시퀀스가 길수록
관련 파일
/Users/ef/CrownyBrowser/src/앱상주서버.한선(검증 대상, 무수정)/Users/ef/CrownyBrowser/native/crowny-browser.m(검증 대상, 무수정)/private/tmp/claude-501/-Users-ef/2e95e8b6-e663-4b81-9734-9ded4339b18d/scratchpad/p0verify/— 독립 빌드·테스트 스크립트·로그 전체(세션 스크래치패드, 영속 아님)- 계약 SSOT:
/private/tmp/.../scratchpad/벡터직결-계약.md
잔여 이슈 / 다음 조치 제안
- Gate①②: p50 목표 미달(약 4~14% 초과) — ObjC측 소켓/파싱/CG드로우 오버헤드(소켓단독 6.9ms vs
- Gate④: sendVectorEvent 재시도 로직을 "재기동 성공 후 첫 N건"(예: gAppSrvPort 세팅 후
- 입력필드 성장 문제는 별도 P-티켓으로 분리 제안(이번 계약 범위 밖).