← 목록
기타 2026-07-29 5KB 읽기 5분

크라우니터미널 데몬 배선갭 A1→A2→A5 수리

개요

crowny-terminal 앱(/Users/ef/crowny-terminal/앱/한선씨/)의 데몬 배선갭 목록 (앱/설계/배선갭목록.md) 중 A1(증설 자동승인 트리거 시점), A2(감사 조회 구조화 응답), A5(슬롯→도구 범용 컴파일러) 3건을 순차 수리. 회귀 기준선(계통10·감사10·기계어15·파싱9· 데몬14=58/58, STRICT 경고 0)을 깨지 않고 신규 테스트를 더해 84/84로 확장.

무엇을 했는지

A1 — 증설 자동승인 트리거 시점

  • 계통.한선: 자동승인 규칙(워커기수 && 예상비용<=100 && 사용률<60%)을 계통_자동승인판정()
헬퍼로 추출(규칙 자체는 안 바꿈). 계통증설요청() 처리 말미에서 이 규칙을 즉시 평가 — 해당하면 그 자리에서 상태=승인·주체=일기로 기록 + 감사기록()까지 완료.
  • 계통증설승인()은 이미 승인된 요청 재호출 시 상태전이 없이 코드 2(멱등) 반환하도록 수리.
  • 계통.한선감사.한선을 새로 가져오게 됨(감사기록() 사용 위해) — hanseonc_high의
already_imported() 파일 단위 dedup 덕에 다른 파일의 기존 가져오기 "감사.한선"과 충돌 없음.
  • 기계어.한선: 세션컨텍스트설정()계통_세션컨텍스트설정()도 함께 호출하도록 확장(자동승인
감사기록의 세션 태깅용, 후방참조만 사용해 전방참조 함정 회피). 계통증설승인 디스패치에서 반환코드 2를 조기 반환 처리해 공통 감사 트레일러를 건너뛰어 중복 레코드 방지.
  • 터미널데몬.한선: POST /api/capacity/expand-request 응답에 request/auto/tier/qty/
cost/status 필드 추가.

A2 — 감사 조회 구조화 응답

  • 감사.한선: 감사재생행(세션, 시작초, 끝초, 주체필터) 신설 — 저장 포맷(이미 7필드 PSV)을
JSON 배열로 구조화. 내부 구분자 는 실제 |로 복원(감사_행값()), JSON 이스케이프는 별도(감사_행이스케이프()). 시각범위·주체 부분일치 필터 지원.
  • 터미널데몬.한선: GET /api/audit?format=rows(+from/to/actor) 모드 추가.
format 미지정 시 기존 replay 문자열 그대로(회귀 없음).

A5 — 슬롯→도구 범용 컴파일러 (핵심)

  • 파싱.한선: 도구체인생성(슬롯PSV) 신설 — 대상+구간→mes.defect.query, 자료의 PLM/사양→
plm.spec.read, 위치의 카메라/검사기→vision.frame, 산출물의 보고서/문서→canvas.doc.publish, 위임 확정 시 위임 스텝을 맨 앞에 배치. 부작용 0(명령실행/감사기록 호출 없음 — 문서16 §6 원칙).
  • 기계어.한선: 기계어_체인실행(체인텍스트, 기수, 노드, 세션ID) 신설 — 체인 스텝을 순서대로
돌리며, 쓰기·물리 등급 도구를 만나면 확인요청을 발행하고 그 자리에서 멈춘다(제품 핵심 안전규칙). 읽기 등급만 있는 체인은 끝까지 실행. 미등재 도구는 기계어_도구등급()의 "미등록" 판정으로 자동 차단(화이트리스트가 곧 도구등급 레지스트리 자체). 명령실행() 정의 뒤에 배치해 전방참조 함정 회피.
  • 터미널데몬.한선: /api/session/{id}/execute 응답을 results(배열) + pending_confirm으로
교체(기존 단일 "도구호출" 필드는 제거 — 하위호환 아님, 계약 문서에 명시).

검증

  • STRICT 컴파일 5파일 전부 경고 0.
  • 셀프테스트 3회 연속(같은 CT_DATA_DIR) 동일 결과: 감사14·계통12·기계어21·파싱13·데몬24 = 84/84.
  • 실기동 curl 종단검증: A1(워커 즉시 auto=1+감사주체=일기, 비워커 대기, 재승인 멱등 무중복),
A2(rows 7필드, replay 회귀, actor/시각 필터), A5(1a 문장→mes.defect.query+plm.spec.read 실행 →canvas.doc.publish에서 confirm 발행+정지→승인→재호출까지 전 구간 실측).
  • 포트 9822 검증 후 정리(테스트 중 무관한 stray 프로세스가 점유하고 있어 회수 후 진행, 검증 종료
후 데몬 kill·포트 해제 확인).

관련 파일

  • /Users/ef/crowny-terminal/앱/한선씨/계통.한선
  • /Users/ef/crowny-terminal/앱/한선씨/감사.한선
  • /Users/ef/crowny-terminal/앱/한선씨/기계어.한선
  • /Users/ef/crowny-terminal/앱/한선씨/파싱.한선
  • /Users/ef/crowny-terminal/앱/한선씨/터미널데몬.한선
  • /Users/ef/crowny-terminal/앱/설계/데몬API계약.md (v1.1로 갱신)
  • /Users/ef/crowny-terminal/앱/설계/배선갭목록.md (SSOT, 미수정 — A1/A2/A5 완료는 이 문서로 기록)

잔여 이슈

  • A3(files.read 도구 미구현), A4(nexus.signage.push 미구현, 저우선), A6(SSE 스트림),
A7(브라우저뷰·비저닝 프레임 라우트), A8(위치 트리 실데이터), A9(세션 예산/상태 재기동 미복원 — 세션.psv 자체가 CT_DATA_DIR 격리 안 받는 하드코딩 경로인 것도 이번에 발견해 계약 문서에 명시), A10(저널 무한 성장/회전) — 전부 미착수.
  • A5 도구체인 규칙은 4종(mes.defect.query·plm.spec.read·vision.frame·canvas.doc.publish)만
다룬다. 나머지 8종(erp.·iot.·external.* 등)은 /api/tools/{name}/invoke 직접호출은 가능하나 슬롯 추론 규칙은 없음.