5.7 KiB
Vignette 현행 인수인계
기준일: 2026-09-09 KST 상태·결정의 SSOT는
dev_dashboard.html이다. 이 문서는 다음 실행 순서와 금지 경계만 요약한다. 2026-08-18 이전 상세 기록은 정리 전 HANDOFF 원문에 보존했다.
현재 기준
2026-09-08 Forgejo master a0311c59 (배포 문서 포함 d9bb5b36)를 NAS vignette-prod 및 Cloudflare Pages에 정식 실배포했다. 사전 DB 덤프(/volume1/docker/vignette-prod/backups/pre-deploy-a0311c59-.dump, 12MB) 및 env.nas 백업을 생성한 뒤 NAS 컨테이너(API sha256:8b1ed23d1d24..., Web sha256:5c34139d8b56...)를 교체·기동했다. Cloudflare Pages는 174개 자산을 보존하며 https://vignette.chanpaca.net(미리보기: 2df910db.vignette-b1q.pages.dev)으로 배포 완료했다. 공개 health(https://api-vignette.chanpaca.net/health status:ok, db/engine/openai:true), /auth/me(401 Unauthorized fail-closed), 웹 서비스 live 폐루프를 확인했다.
TDD 기반 회귀 방지 및 핵심 불변식을 확정했다:
- REQ-010: 회기 무발화 0턴 분리 (
LearnerGrowthMetrics.ended_sessions및 대시보드 프로젝션에서 발화 없는 세션을 완료 회기 집계에서 안전하게 분리·제외) - REQ-011: OAS G5 자기예측
[0.0, 1.0]범위 도메인 검증 및 DB 트리거 수준 락 보장/예외 전환 (CalibrationTransferStateError) - REQ-009: 웹 클라이언트 스트림 에러 시 입력문 복원(
setComposeText(text)) 및 로딩 상태(clientReplyPending) 복원 보장
단위/회귀 테스트는 API 전체 1104 passed / 1 skipped / 1 warning, gateway 전체 71 passed / 1 warning, web typecheck 및 build 전건 통과를 달성했다.
증거: NAS 배포 파이프라인, 1차 배포 증거.
남은 실행 항목
- C-001 외부 임상 검수: 외부 검토 입력·서명 증거·canonical checker를 모두 충족할 때까지
review_complete=false를 유지한다. - NAS 재부팅 자동복구 smoke: 실제 재부팅 뒤 자동 복구를 관찰한다. Windows 개발 워크스테이션 task 이력은 이 운영 NAS 게이트를 대체하지 않는다.
- 백업 운영화: 실패 알림, off-host 암호화 복제, 정기 restore drill을 운영 증거로 남긴다.
- 아바타 fail-closed 후보: 원본과 DB 참조를 보존한 채 public fallback·digest receipt·브라우저 검증을 마친 뒤에만 승격 판단한다.
- G7/G8 외부 게이트: G7은 동의 기반 물리 마이크와 독립 voice-gain 증거, G8은 실DB append-only 사람 게이트와 public proof가 남아 있다.
- 신규 제품 이슈: REQ-009, REQ-010, REQ-011은 TDD 불변식 추가 및 헤드풀 브라우저 E2E 검증, 실서버 배포를 완료했다. 외부 원본 워크북과의 최종 동기화만 남아 있다.
세부 ID·차단 이유·완료 조건은 TODO.md와 열린 백로그에 있다.
재개 순서
- OS·셸·현재 Git 상태를 확인하고, dashboard와 이 문서·TODO·backlog를 읽는다.
- 필요한 항목의 배포 증거와 현재 NAS 상태를 read-only로 구분해 확인한다.
- 외부 게이트는 증거 수집만 진행하며, 외부 입력·소유자 승인·비밀값을 추정하거나 생성하지 않는다.
- 코드 또는 문서 변경 뒤에는 범위에 맞는 테스트와 SSOT checker를 실행한다.
2026-09-09 현재 baseline은 Python 3.11 API 전체 1104 passed/1 skipped/1 warning, gateway 전체 71 passed/1 warning이며 API 타입 체크와 web build도 통과했다. API의 1 skipped는 VIGNETTE_USAGE_TEST_DATABASE_URL 미설정 때만 건너뛰는 기존 선택형 격리 DB test_admin_usage_postgres.py이고 새 skip은 없다.
최종 UI 회귀는 session-mvp+uc-session-coach-voice 58 passed/0 skipped(exit 0, 2.6분), alliance+admin 39 passed/1 skipped(exit 0, 1.7분)로 합계 97 passed/1 skipped다. skip은 uc-review-alliance-pulse 320px 테스트의 desktop 중복 실행 제외이며 mobile은 실행·통과했다. session-review의 disabled AI feedback privacy 제어 focused 1 passed(exit 0, 4.4초)도 유지한다. dashboard 10은 별도 검증이다.
같은 날 source-only로 test_session_turn_persistence.py, test_calibration_transfer_store.py, test_session_continuity_guard.py는 78 passed와 PendingDeprecationWarning 1건, web typecheck는 통과했다. 이는 REQ-009~011의 재현·원인 해결·운영 증거가 아니다. 신규 제품 이슈의 현재 열린 상태와 다음 행동은 위 목록 및 TODO.md를 따른다.
승인과 금지 경계
- NAS compose 교체, DB migration 적용, 데이터·업로드 삭제, secret 변경, 원격 push, Pages 배포는 소유자 승인 뒤에만 한다.
- C-001의 외부 검수 입력, G7 물리 마이크 캡처, G8 승인 결정은 자동화나 fixture로 대체하지 않는다.
- 원본 아바타 bytes·DB reference·운영 백업은 보존 우선이다.
CLEANUP-001:outputs/local-history/project-cleanup-2026-09-07.zip(SHA-2566a98d817d856c35654da6a11b74a6387c17adca0be55efda58c06c30b101b1ab)과 manifest는 84 regular source file의 hash 대조 및 4 junction metadata를 보존한다.tmp/,apps/web/tmp/, 추적된 legacy.bak4개, 정리 대상 attachment·중복 generation 결과는outputs/local-history/retained-sources-2026-09-07/로 가역 이동했고 source 경로 정리는 완료했다. 원본 영구 삭제는 0건이며 기존outputs/최종 workbook은 보존한다.
최소 문서 검증
python -X utf8 scripts/check-dev-dashboard-ssot.py --json
git diff --check