크라우니터미널 데몬 배선갭 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 이스케이프는
별도(감사_행이스케이프()). 시각범위·주체 부분일치 필터 지원.
터미널데몬.한선:GET /api/audit에?format=rows(+from/to/actor) 모드 추가.
format 미지정 시 기존 replay 문자열 그대로(회귀 없음).A5 — 슬롯→도구 범용 컴파일러 (핵심)
파싱.한선:도구체인생성(슬롯PSV)신설 — 대상+구간→mes.defect.query, 자료의 PLM/사양→
기계어.한선:기계어_체인실행(체인텍스트, 기수, 노드, 세션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+감사주체=일기, 비워커 대기, 재승인 멱등 무중복),
- 포트 9822 검증 후 정리(테스트 중 무관한 stray 프로세스가 점유하고 있어 회수 후 진행, 검증 종료
관련 파일
/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 스트림),
- A5 도구체인 규칙은 4종(mes.defect.query·plm.spec.read·vision.frame·canvas.doc.publish)만
/api/tools/{name}/invoke 직접호출은
가능하나 슬롯 추론 규칙은 없음.