51 lines
5.5 KiB
Markdown
51 lines
5.5 KiB
Markdown
# Vignette 현행 인수인계
|
|
|
|
> 기준일: 2026-09-07 KST
|
|
> 상태·결정의 SSOT는 [`dev_dashboard.html`](./dev_dashboard.html)이다. 이 문서는 다음 실행 순서와 금지 경계만 요약한다.
|
|
> 2026-08-18 이전 상세 기록은 [정리 전 HANDOFF 원문](./archive/project-cleanup-2026-09-07/HANDOFF-before-cleanup.md)에 보존했다.
|
|
|
|
## 현재 기준
|
|
|
|
2026-09-01 당시 Forgejo master `dce85620`을 NAS `vignette-prod`에 배포했다. migration 20/21/22를 온라인 적용했고, 공개 health·OpenAPI·`/auth/me`·dev-login 경계와 소유자 실계정의 새 사례→턴→리뷰 폐루프를 확인했다. 일일 검증형 DB 백업 sidecar의 첫 실행도 그날 성공했다. 이는 당시 증거이며 오늘의 live 상태를 뜻하지 않는다.
|
|
|
|
증거: [NAS 배포 증거](./ops/evidence/nas-prod-deploy-2026-09-01.json).
|
|
|
|
파일 위생·문서 통합·수용된 코드 경계 정리·리뷰 수정은 이번 차수에서 완료했다. API는 outcome repository 공통값·practice competency 분류·인증/admin projection·text/voice 공통 turn memory·voice metadata 경계를, web은 focus trap·동맹 scale/잠긴 점수·승인 제출 제어 경계를 정리했다. `Knip` dead-code, measurement contract, typecheck/build, Ruff와 API 전체 1090 passed/1 skipped/1 warning, gateway 전체 71 passed/1 warning이 통과했다. 중복은 17 clone/294줄에서 3 clone/48줄·265 tokens(0.04%)로 감소했다. orchestrator retry는 임상 검수 exact-HEAD 원본 고정 경계로, voice abort와 repository query는 서로 다른 lifecycle·도메인 계약으로 유지한다. REQ-009~011, 전 기능·실환경 QA, 외부 운영·임상 게이트는 열린 상태를 유지한다.
|
|
|
|
## 남은 실행 항목
|
|
|
|
1. C-001 외부 임상 검수: 외부 검토 입력·서명 증거·canonical checker를 모두 충족할 때까지 `review_complete=false`를 유지한다.
|
|
2. NAS 재부팅 자동복구 smoke: 실제 재부팅 뒤 자동 복구를 관찰한다. Windows 개발 워크스테이션 task 이력은 이 운영 NAS 게이트를 대체하지 않는다.
|
|
3. 백업 운영화: 실패 알림, off-host 암호화 복제, 정기 restore drill을 운영 증거로 남긴다.
|
|
4. 아바타 fail-closed 후보: 원본과 DB 참조를 보존한 채 public fallback·digest receipt·브라우저 검증을 마친 뒤에만 승격 판단한다.
|
|
5. G7/G8 외부 게이트: G7은 동의 기반 물리 마이크와 독립 voice-gain 증거, G8은 실DB append-only 사람 게이트와 public proof가 남아 있다.
|
|
6. 신규 제품 이슈: REQ-009와 REQ-011을 재현·원인 분류한 뒤 REQ-010의 회기 count/취소 정책을 확정한다. 원문 워크북 상태는 `TODO.md`의 로컬 상태와 분리해 보존한다.
|
|
|
|
세부 ID·차단 이유·완료 조건은 [`TODO.md`](./TODO.md)와 [열린 백로그](./ops/backlog-2026-06-26.md)에 있다.
|
|
|
|
## 재개 순서
|
|
|
|
1. OS·셸·현재 Git 상태를 확인하고, dashboard와 이 문서·TODO·backlog를 읽는다.
|
|
2. 필요한 항목의 2026-09-01 증거와 현재 NAS 상태를 read-only로 구분해 확인한다.
|
|
3. 외부 게이트는 증거 수집만 진행하며, 외부 입력·소유자 승인·비밀값을 추정하거나 생성하지 않는다.
|
|
4. 코드 또는 문서 변경 뒤에는 범위에 맞는 테스트와 SSOT checker를 실행한다.
|
|
|
|
2026-09-07 현재 baseline은 Python 3.11 API 전체 1090 passed/1 skipped/1 warning, gateway 전체 71 passed/1 warning이며 API 타입 체크와 Ruff도 통과했다. 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`](./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-256 `6a98d817d856c35654da6a11b74a6387c17adca0be55efda58c06c30b101b1ab`)과 manifest는 84 regular source file의 hash 대조 및 4 junction metadata를 보존한다. `tmp/`, `apps/web/tmp/`, 추적된 legacy `.bak` 4개, 정리 대상 attachment·중복 generation 결과는 `outputs/local-history/retained-sources-2026-09-07/`로 가역 이동했고 source 경로 정리는 완료했다. 원본 영구 삭제는 0건이며 기존 `outputs/` 최종 workbook은 보존한다.
|
|
|
|
## 최소 문서 검증
|
|
|
|
```powershell
|
|
python -X utf8 scripts/check-dev-dashboard-ssot.py --json
|
|
git diff --check
|
|
```
|