crowny-terminald 종단 검증 결함 4건 수리
개요
메인 세션이 curl 종단 실측으로 적발한 crowny-terminald(:9822) 결함 4건 + 우선순위 추가 2건(⑤⑥)을 수리했다. 대상은 /Users/ef/crowny-terminal/앱/한선씨/ 5개 파일(터미널데몬·기계어·감사·계통·파싱). STRICT 컴파일 0경고, 셀프테스트 36/36 → 51/51(신규 15건 추가, 회귀 0건) 유지.
무엇을 했는지
결함① [치명] 물리 제어 확인 경로가 HTTP에 없었다
터미널데몬.한선에POST /api/confirm/request,POST /api/confirm/reply라우트 신설.kind는 물리|쓰기만 허용(400 가드).확인응답은 기계어.한선이 이미 "주체=사람만" 검증(포함하나(주체,"사람")!=1 → E-권한 → 라우트가 403 매핑).- 원격(X-Forwarded-For)에서도 확인요청/확인응답은 허용(문서13 §1 "지시·승인·관전"), 물리 실행 자체 403은 기존
/api/tools/{name}/invoke라우트에서만 유지. - curl 실측: 확인요청 → 기수주체 확인응답 시도(403 거부) → 사람주체 확인응답(승인) → 물리 도구호출(OK:실행됨) 전 과정 확인.
결함② 감사재생에 내부 구분자(ᆭ) 노출
감사.한선에감사_보기(s)추가(전체치환(s,"ᆭ"," · ")). 저장 포맷(append-only 원장)은 불변,감사재생()출력 계층에서만 적용.
결함③ 예산 API가 내부 정수 그대로 노출
감사.한선에감사_콤마()(천단위 콤마, % 연산자 없이 그룹카운트로 — 균형나머지 함정 회피),감사_예산JSON블록(),예산JSON(세션)추가./api/budget응답:{"session_id":..,"session":{limit_raw,limit:"80.00",spent_raw,spent,won:"₩0 / ₩80,000"},"day":{...},"policy":0}.
결함④ 도구호출 등 세션 미태깅
기계어.한선에세션컨텍스트설정()/조회()+_현재세션컨텍스트전역 추가.명령실행()공통 꼬리에서세션로그=="-"&& 컨텍스트 있으면 주입.터미널데몬.한선의/execute,/api/tools/{name}/invoke,/api/capacity/expand-*,/api/external-delegate,/api/confirm/*라우트가 body의 선택적"session"필드로 컨텍스트를 걸고 처리 후 해제(단일 TCP 연결 순차 처리라 안전).
결함⑤ 재기동 복원(추가 수리)
계통.한선:계통_가동설정()이 절대치 스냅샷을계통가동.psv에 append,계통_복원()이 재생(텔레스코핑 합으로 중간 스냅샷 개수 무관하게 최종 정확).기계어.한선:확인.psv저널 +기계어_확인복원()(카운터 최댓값도 복원).데몬_메인()이 기동 시 두 복원 함수를 호출. curl 실측: 데몬 kill → 저널에 수동 라인 주입(이전 프로세스 흉내) → 재기동 → 로그에 "계통가동 복원 1건, 확인DB 복원 2건" → confirm:1로 재승인 없이 물리 도구 재호출 성공(OK:실행됨)으로 기능 증명.
결함⑥ 일 예산 날짜 키(추가 수리)
감사.한선: 전역 스칼라_일소비→ 날짜별 DB(_일소비DB)로 교체. 날짜는날짜.한선의오늘()(체계("date +%Y-%m-%d") 경유, 에포크 수동 산술 아님)을 600초 캐시로 감쌌다(감사_오늘날짜()).
검증 결과 요약
- STRICT 컴파일(전 5파일): 0 경고.
- 셀프테스트: 계통10·감사10·기계어11·파싱9·데몬11 = 51/51 통과(기존 36건 회귀 0, 신규 15건).
- curl 종단(포트 9822, 데이터 클린 상태 시작): 422→200 확정 플로우, 물리 확인 다이얼로그 전체 플로우, 기수주체 확인응답 거부(403), 원격 물리 호출 차단(403), 감사재생 세션태깅+구분자 미노출, 예산 CRW+₩ 병기, 재기동 복원 전부 실측 통과. 종료 후 포트 9822 해제 확인.
관련 파일
/Users/ef/crowny-terminal/앱/한선씨/터미널데몬.한선/Users/ef/crowny-terminal/앱/한선씨/기계어.한선/Users/ef/crowny-terminal/앱/한선씨/감사.한선/Users/ef/crowny-terminal/앱/한선씨/계통.한선/Users/ef/crowny-terminal/앱/한선씨/파싱.한선(무변경 — 회귀 확인만)- 명세(읽기전용):
/Users/ef/Downloads/크라우니터미널 패키지/문서/13,14,16-*.md
잔여 이슈 (정직 목록)
- SSE 스트림(
GET /세션/{id}/스트림) 미구현 — UI는 여전히 폴링 전제. - 브라우저뷰(
/브라우저뷰/열기), 비저닝프레임(/비저닝/프레임) 라우트 미구현. /계통/배치(계통배치 명령) 자체가 HTTP로 노출돼 있지 않음 — 1차 범위 한계로, 결함⑤ 검증에서 계통가동 저널을 수동 주입해 우회 증명. 실사용 시 이 라우트 신설 필요.- 위치 트리(
/api/location/tree)는 정적 데모 데이터. - 도구별 하한(문서13 §6 "읽기 등급 도구별 하한")은 코드 미구현.
- 확인 응답 원격 승인 자체는 허용 상태지만, 원격 여부를 감사 레코드에 별도 표시하지 않음.
- 확인.psv/계통가동.psv 모두 append-only 무한성장 — 대규모 장기가동 시 §"문자열 65535B 캡" 함정 적용 대상(현재 스코프에서 미대응, 운영 전 샤딩 필요).