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

크라우니터미널 1a 세션 스트림 라이브 배선

개요

21화면 중 1e-1.라이브.html 하나만 데몬(:9830)에 실제로 연결돼 있었고 나머지(1a 포함)는 정적 스크린샷이었다. 이번 작업으로 1a(기본 세션 · 다크)를 실제로 작동시켰다 — 자연어 입력 → /api/session/{id}/command 파싱 칩 5종 → /execute 도구 체인 실행 → 출력 스트림 → 쓰기등급 확인 다이얼로그 → 승인/거부 → 감사·예산 실측 표시까지 전체 루프가 실동한다.

무엇을 했는지

  1. 화면/1a.라이브.html 신규 산출 — 정적 1a.html(보존, 무변경)의 마크업·스타일을 그대로
복사하고 하단 <script>만 추가. 신규 색 0(1a.html·1e-1.라이브.html에 이미 있던 hex만 사용, 실측 diff로 확인). - 비동기(사람 상호작용) 경로: fetch 기반 — 세션 부팅, Enter 입력→/command, 실행 버튼→ /execute, 확인 카드 승인/거부→/confirm/reply+/api/tools/{name}/invoke. - 동기(헤드리스 검증 전용) 경로: ?자동=전체|승인|거부 쿼리 — 1e-1.라이브.html과 동일한 이유(didFinishNavigation 캡처 타이밍)로 XHR(false) 사용, 전체 시나리오를 페이지 로드 중 한 콜스택에서 완주. - 계통 바의 "가동 N" 카운트·진행바는 이 데몬이 조회 API를 노출하지 않아 전부 "—"로 정직하게 비웠다(가짜 숫자 금지). 기수 헤더(1·3·9·27·81·243·729·2187·6561)는 3^n 구조 상수라 유지. - 우측 패널의 "위임 트리" 카드를 실측 감사 패널로 대체(GET /api/audit?format=rows). 워크플로우카드·외부위임카드·세션 레일의 다른 세션 항목들은 1차 범위 밖 정적 맥락으로 유지 (명시적으로 disclose).
  1. 한선씨/1a.라이브.한선 신규 동반 파일 — JS의 판정 로직(results[] 항목 → 스트림 행 종류,
슬롯 확정여부 → 칩 색, 도구결과 문자열 → 성공/대기/거부 3상)을 순수 함수로 재현. 라이브1a_* 접두(함수명 숫자 시작 금지 — hanseonc_high 파싱 함정 실측, 1a라이브_는 컴파일 에러). CT_TEST 셀프테스트 19/19 통과.
  1. 한선씨/터미널데몬.한선 수정 — _정적화이트리스트"1a-live", "1a.라이브.html" 별칭
추가. 데몬_UI인덱스HTML()-live 접미 별칭에 "● 라이브" 표를 붙여 정적판과 시각적으로 구분(신규 색 없이 텍스트 표만).

실측 검증

  • STRICT 컴파일: 데몬 0경고, 3회 동일 크기(2883692 bytes) — 결정론적. 동반 1a.라이브.한선
3회 컴파일 동일(313040 bytes).
  • 셀프테스트(CT_DATA_DIR 격리, 운영 데이터 무오염): 계통12·감사15·기계어21·파싱13·데몬30 =
91/91 통과, 0 실패, 3회 재현.
  • curl -o /dev/null -w '%{size}' vs 실제 파일 크기 — byte-identical(59140 bytes, 정적
서빙 마커+파일소켓전송 경로 정상).
  • 헤드리스 캡처(크라우니AI검증.sh dump/shot) — ?자동=전체: 세션ID 실값(S06)·파싱 칩 5종
실값·위임+도구 2종 스트림(시각 포함)·확인 카드(쓰기 등급 · confirm:609) 전부 렌더 확인. ?자동=승인: 승인 → /api/tools/canvas.doc.publish/invokeOK:실행됨까지 완결 확인. ?자동=거부: "거부됨 — 도구 미실행" 정직 표시(성공 날조 없음), invoke 미호출 확인.
  • 감사 원장 대조: GET /api/audit?session=S07&format=rows curl 직접 조회(9행) vs 화면
감사 패널 렌더(9건, 동일 log_id 순서) — 일치.

발견한 버그와 수정 (실측 기반)

부팅완료() 공용 함수가 비동기 fetch()로 예산/감사를 즉시 갱신하도록 돼 있었는데, 이 함수는 동기(자동모드) 경로와도 공유돼 있어 자동모드의 최종 동기 감사조회 결과를, 나중에 도착하는 부팅 시점의 오래된 비동기 응답이 덮어써버리는 레이스가 있었다(첫 캡처에서 감사 패널이 "세션열기" 1~2건만 보이던 원인 — 실측으로 발견, curl 직접 조회로 서버 쪽엔 문제가 없음을 먼저 확인한 뒤 클라이언트 레이스로 좁혔다). 네트워크 호출을 부팅완료()에서 분리해 비동기 경로 전용으로만 옮겨 수정. 재검증 캡처로 9/9행 정합 확인.

관련 파일

  • /Users/ef/crowny-terminal6561/화면/1a.라이브.html (신규)
  • /Users/ef/crowny-terminal6561/화면/1a.html (보존, 무변경 — md5 확인)
  • /Users/ef/crowny-terminal6561/한선씨/1a.라이브.한선 (신규)
  • /Users/ef/crowny-terminal6561/한선씨/터미널데몬.한선 (화이트리스트 + 인덱스 라벨 수정)
  • /Users/ef/crowny-terminal6561/설계/데몬API계약.md (참조, 무변경)

잔여 이슈 (정직 고지)

  • 21화면 중 1a·1e-1 2개만 라이브, 나머지 19개(1b·1c·1d·1e-2·1e-3·1f·2a·2b·2c·2d·2e·2f·2g·
2h·2i·2j 계열)는 여전히 정적 스크린샷.
  • 1a.라이브.html 안에서도 워크플로우카드·외부위임카드·세션 레일의 S01/S03/S09/S11/S14 등
타 세션 항목은 이 데몬이 아직 조회 API를 노출하지 않아 정적 맥락으로 남음(주석으로 명시).
  • 계통 바 "가동 N" 실수치는 계통 상태 조회 GET API가 없어 "—" 그대로 — 후속 범위에서 API
추가 시 배선.
  • SSE(A6) 미구현 — 현재는 요청/응답 기반이라 폴링 자체가 불필요(유휴 시 daemon 폴링 없음).