vignette/docs/ops/backlog-2026-06-26.md
2026-06-27 11:20:24 +09:00

9.3 KiB
Raw Blame History

Vignette 백로그 — 2026-06-26

이 세션(레이아웃 시각 수용 마감 + live 운영 증거 라운드) 이후 남은 항목을 한곳에 모은다. 대시보드(docs/dev_dashboard.html)의 상태와 일치한다. 운영 원칙상 가짜 증거로 DONE 표기하지 않으므로, 실증/외부 의존/소유자 결정이 필요한 항목은 여기서 추적한다.

분류: B1 비차단 폴리시 · B2 환경 제약(증거 생산 불가) · B3 소유자 결정 · B4 외부 거버넌스

B0. 원천문서 갭 분석 (2026-06-26 추가) — 한신대 산학협력 원천문서 5종 정독으로 도출한 "부족한 부분"(critical 3 / high 4 / medium+ 6)은 SSOT 대시보드 docs/dev_dashboard.html "원천문서 갭 분석" 섹션과 상세 docs/ops/source-docs-gap-analysis-2026-06-26.md에서 추적한다. C1 사례개념화 산출물·C2 위기개입 프로토콜·C3 이론모드/CBT가 신규 critical. 이는 아래 B1~B4보다 상위 우선순위 입력이며, 콘텐츠 정의는 임상팀(구훈정·어유경) 소유라 코드는 '편집 가능 구조'만 선제 구축한다.


B1. 비차단 코스메틱 폴리시

  • 공용 셸 사이드바 구분선 전체 높이 — (2026-06-26 처리) .vg-nav border-right(sticky·뷰포트 높이)를 제거하고, .vg-shell__body 컨테이너 배경 하어라인(linear-gradient 1px×100%, --nav-cur로 그리드·구분선 폭 동기화)으로 본문 그리드 전체 높이를 따라가는 세로 구분선을 그린다. 1024 축소폭은 --nav-cur: var(--nav-w-collapsed)로, 720 이하(상단 가로바 전환)는 background-image:none으로 정합. components/shell/shell.css. 검증: npm run typecheck PASS + vite build PASS. 시각 회귀 게이트(gate 7/7 + 포커스 E2E + session-layout 8/8)는 web+api+DB 스택(Docker 미기동·secrets 부재)으로 이 환경 미실행 — 스택 가용 시 1회 시각 확인 권장.
  • 빈상태 컬럼 높이 여백 — session-review 1280 masonry 우측 컬럼, session-prestart 우측 '진행 초점' 컬럼, learner-home 1440 하단 등 데이터 0건 빈상태에서만 두드러지는 컬럼 높이 불균형/여백. 실데이터면 채워진다. (미착수, 의도적) 0건 전용 시각 균형이라 러닝 앱에서의 시각 반복 없이 블라인드 수정 시 악화 위험 → 스택 가용 시 시각 확인하며 처리. 빈상태 전용 균형 레이아웃 채택 자체가 별도 폴리시 결정.
  • learner-home 로딩 스켈레톤 밀도(390) — (2026-06-26 처리) '연습 대상' 로딩 스켈레톤을 빈 div 단일 셰이머에서 실제 카드 구조(마크 박스 + 이름/메타/요약 2줄 플레이스홀더)를 모사하도록 밀도 보강. LearnerHome.tsx (.lh-skel__box/.lh-skel__line*), reduced-motion 분기 동반 갱신. 검증: npm run typecheck PASS + vite build PASS.

검증 기준: 변경 후 npm run typecheck, e2e/layout-visual-gate.spec.ts(7/7), 레이아웃 포커스 E2E(54), e2e/session-layout.spec.ts(8/8) 무회귀. (E2E 게이트는 web+api+DB 스택 필요 — 현재 워크스테이션은 Docker 미기동·API secrets 부재로 미실행. 코드 변경은 typecheck+vite build로 1차 검증함.)


B2. 환경 제약 — 이 워크스테이션에서 증거 생산 불가

  • vnet.18ka.net 공개 live 전환 — 코드/스크립트는 vnet.18ka.net·api-vnet.18ka.net을 허용하도록 갱신 완료. Tailnet 주소 https://alpaca-home.taile93291.ts.net은 로그인까지 검증됨. 공개 vnet은 현재 (1) vnet.18ka.net/api-vnet.18ka.net DNS 부재, (2) cloudflared 현재 인증 컨텍스트가 18ka.net zone이 아니라 chanpaca.net zone에 route dns를 생성, (3) prod API용 Postgres 127.0.0.1:55432 미기동으로 8001 fail-closed, (4) Google Console redirect URI https://api-vnet.18ka.net/auth/callback 등록 필요 때문에 live 완료 아님. 상세: docs/ops/tailscale-vnet-runtime-2026-06-27.md.
  • 공개 Google OAuth 실제 /turn proof — 로그인 가능한 계정으로 storageState 캡처 후 E2E_PUBLIC_AUTH=1 + chromium-public-auth 1회 통과 필요. (소유자 지시로 이번엔 보류.)
  • 음성 캐스케이드 live — 실제 Deepgram STT / OpenAI TTS provider 키, 물리 마이크, 공개 WSS 50분 양방향 실측. provider 키/하드웨어 부재로 미실행(백엔드 계약·UI synthetic 경로는 단위/E2E로 증명됨).
  • claude_cli ↔ Messages API 폴백 동일성ANTHROPIC_API_KEY가 있어야 Messages API 경로를 돌려 동일성 검증 가능. claude_cli 경로는 게이트웨이 probe로 live 실측 완료.
  • 저항엔진 openness 곡선 DB 실증 — fast-loop 평가의 client_state_readapp.turn_client_state 적재 경로는 추가됨. 다만 dev DB 실데이터/다수 실턴(real LLM) 기반 openness 곡선 증거는 아직 필요. 현재는 app.test_state_machine_resistance 단위테스트와 app.test_evaluation_persistence 매핑 테스트로 1차 증명.
  • 마스킹 게이트 운영 외부-send 관측audit.llm_call_log 0행(앱이 payload를 적재하지 않음). 엔진으로 나가는 실제 요청 payload를 캡처해 raw PII 부재를 관측하려면 로깅 경로 또는 프록시 캡처 필요. 현재는 app.test_orchestrator_masking로 generate/stream payload에 phone/email/RRN 부재를 증명.
  • 재부팅 후 watchdog smokewatch-public-runtime.ps1 + Scheduled Task가 재부팅 후 엔진/API/터널을 복구하고 public /turn이 통과하는지 실측. 재부팅 불가로 미실행(parser/ check-only 경로는 확인됨).
  • 상주 엔진풀 RSS 실측 — probe로 TTFT/세션재사용/cost는 live 확인. 프로세스 RSS(메모리)는 별도 OS 계측 항목으로 남김.

B3. 소유자(윤찬) 결정 필요 — 단독 결정 시 월권

결정되면 대시보드 결정 필요 탭과 관련 Phase 항목을 갱신한다.

  • s2s 2차 PoC 채택 여부 — 캐스케이드만 / s2s 2차 PoC 유지. 영향: 음성 아키텍처·전송 비용·로그 보존. 기준표 docs/decisions/voice-s2s-poc.md.
  • 서비스용 페르소나 음성 모델·권리 정책 — (2026-06-27) P1 서연 음성 아트 PoC는 Higgs v3 무참조 synthetic seed 방식으로 생성(docs/voice-art/p1-seoyeon-higgs-v3-20260627/). 실존 인물/성우 reference 사용 금지 확정. VIGNETTE_VOICE_POC_SAMPLE_TTS=true 개발 플래그로 /voice/ws P1 sample TTS provider에 연결했지만, 서비스 배포 전 선택 필요: Higgs 상업 라이선스 확보 / 동의 받은 reference voice만 사용 / 배포 가능한 대체 TTS provider 채택.
  • fast-loop 외부 API 허용 — 로컬 전용 / 외부 Haiku·Solar 폴백 허용. 영향: 데이터주권·레이턴시·장애 대응.
  • 재귀학습 fine-tuning 범위 — few-shot 자동갱신만 / fine-tuning 포함. 영향: 동의서·데이터셋 품질·운영 리스크.
  • 자유연습 기본값 — 기본 ON(+피드백 권장 배지+교수자 토글) / 교수자 승인 후 ON. 영향: 학습자 자율성·평가 품질·안전 정책.
  • 추가 축어록 수급 규모·일정 — 목표 N건/일정 확정. 영향: 평가 타당도·페르소나 다양성·Phase 3 측정력.

B4. 외부 거버넌스 — 한신대/데이터 steward 서면 증거

  • 한신대 데이터/SSO 거버넌스 게이트 — SSO claim mapping, 추가 축어록 수급, 미성년 원본 활용동의, 개인정보 처리방침. 로컬 문서 골격 docs/ops/hanshin-data-governance-gate.md 준비됨, 외부 서면 증거 필요. (소유자 지시로 이번엔 보류.)

Phase 3 파일럿 게이트 (실참여자 필요)

  • 20명 교육용 파일럿 운영 / 효과성·KPI 측정(SUS·자기효능감·κ/ICC·환각률) / 재귀학습 데이터셋 1차 산출 / 개인정보·동의 감사. 문서/checker는 준비됨(docs/phase3/*, scripts/check-phase3-artifacts.py), 실제 evidence는 파일럿 시점.

이번 세션에 닫은 것(참고)

  • 레이아웃 시각 수용: 게이트 7/7 + 적대적 재검수 7/7 accept + 코스메틱 폴리시(공용 셸 1건 제외) — DONE.
  • live 운영 증거: engine config 운영값, 상주 엔진풀 probe(TTFT/cost/세션재사용), Postgres RLS/audit smoke 5 checks PASS, turn cost telemetry(app.turns 13행) — DONE.
  • P1 서연 음성 아트 PoC: Higgs v3 무참조 synthetic seed + 5개 정서/속도 변주(mp3/wav) 생성. 실존 reference voice 미사용. /voice/ws에는 dev-only sample TTS provider로 연결했고 live text_turn smoke에서 p1-sample-poc binary 20 chunks/78,573 bytes 수신 확인. 이 provider는 TTS override만 담당한다(마이크/STT는 OpenAI 키 필요). 프로덕션 탑재는 라이선스/권리 결정 전 금지.
  • 부수: RLS smoke 스크립트 cleanup RLS 컨텍스트 버그 수정, vignette_app(NOBYPASSRLS) dev 역할 프로비저닝.
  • 평가 SSOP 1차: TurnRecord.evaluationapp.feedback_scores/turn_technique/turn_client_state/supervisor_comment로 정규화 적재·복원. 원시 평가 테이블은 evaluator/admin RLS로 제한하고 서버가 evaluator 컨텍스트로 적재한다. app.turns insert는 RETURNING id 확인으로 silent success 제거. deep-loop alternative_utterance 정규화는 후속. 검증: app.test_session_turn_persistence + app.test_evaluation_persistence 14 tests OK.