vignette/docs/ops/backlog-2026-06-26.md
Yun Chan a0311c5957
Some checks failed
API contract / OpenAPI type drift (push) Failing after 3m27s
회기 무발화 0턴 분리, 자기예측 락 불변식 및 TDD 회귀 검증 완료
2026-09-08 23:28:06 +09:00

9.3 KiB

Vignette 백로그 — 열린 실행 항목

상태와 증거의 SSOT는 docs/dev_dashboard.html, 실행 인덱스는 docs/TODO.md다. 2026-09-07 이전 완료 기록과 장문 이력은 정리 전 백로그 원문에 보존했다. 2026-09-01 NAS 배포는 당시 배포 증거로 완료 기록을 남겼으며, 현재 live 상태 주장이나 후속 게이트 완료 선언이 아니다.

신규 제품 이슈 — 워크북 원본 보존형 접수

원본: 개선관리 워크북 개발·기능 이슈 행 13~15, 2026-09-07 수집 SHA-256 625281e72067ae2aea402f2fe932b4f593b7905c35f8a9740cf346c7f077c812. 원본 14건은 완료 9·기존 gate 2·신규 3으로 로컬 분류한다. 외부 원본의 기존 대기와 로컬 DONE 불일치는 동기화 대기이며, 원본 문서를 이 백로그 작업으로 수정하지 않는다.

ID 원본 사실 조치 및 결과 완료 조건 검증 증거
REQ-009 중요·대기. 상담 중 “엔진 연결 - 내담자 응답을 생성하지 못했습니다. 입력 내용은 복원했습니다.” 뒤 진행 불가. 스트림 중단 오류 시 입력 복원, 부분 턴 미저장 안전 보장, 인라인 재시도 및 닫기 버튼 추가, voiceStatus idle 복원 완료. 입력 복원, 부분 턴 미저장, 동일 회기 재시도 성공 증명. 단위/Playwright 통과 및 실서버 헤드풀 E2E 검증. headful-02
REQ-010 중요·상태 공란. 시작 직후 창닫기 회기가 완료 회기로 카운트될 우려와 잘못 생성한 미완료 회기의 삭제/재시작 요청. 하드 딜리트 없이 0턴 세션은 completed_sessions 집계에서 안전하게 제외하고, 실제 발화 진행 회기만 완료 카운트에 반영. 무턴 중단 제외, 정상 완료 반영, 기존 데이터 보존 검증. 헤드풀 브라우저 2턴 완료 시 +1 및 0턴 즉시 종료 시 유지 검증 완료. headful-05, headful-06
REQ-011 일반·상태 공란. 첫 자기예측 이유 입력 뒤 버튼 오류로 저장·리뷰 완료·다음 회기가 막힘. 워크북 M15의 연구팀 첨부 수집본은 HTTP 422 prediction revision violated provenance or history invariants를 보인다. OAS G5 자기예측 시 legacy instrument ID 정규화 및 scoped block ID 일치화로 HTTP 422 해소. 1차 예측 저장 및 잠금 완료. 정상 저장, 중복 방지, 리뷰 진행·다음 회기 가능, 평가 공개 순서를 함께 증명. 헤드풀 브라우저 리뷰 피드백 탭에서 1차 예측 저장 및 잠금 완료. headful-04
SRC-001 원본 워크북 정합성 OPEN. 요약!B16:B19COUNTIF(#REF!), 개발 상태 집계 범위 I5:I14가 REQ-011 행 15를 놓침. 개선관리 워크북 replica 수식 (#REF! 제거, 범위 $I$5:$I$15, $B$5:$B$15) 보정 완료. 요약 수식·상태 집계가 14건을 반영하고 로컬 분류와 차이를 설명. 수식 수정본 엑셀 생성: outputs/01a04217-f73b-7303-b597-401fa7f5d290/Vignette_개선관리_완료.xlsx

REQ-009 초기 검증 명령:

cd apps/api
py -3.11 -m pytest app/test_session_turn_persistence.py -k 'stream and (incomplete or engine_error or clean_eof)' -q
cd ../web
npx playwright test e2e/uc-session-conversation.spec.ts --grep '스트림 도중 오류|done 없이' --project=chromium-desktop --workers=1

2026-09-07 Python 3.11 source-only 묶음은 test_session_turn_persistence.py, test_calibration_transfer_store.py, test_session_continuity_guard.py에서 78 passed와 PendingDeprecationWarning 1건이었다. 이는 REQ-009~011의 재현·원인 해결·운영 증거가 아니다.

P0 운영 게이트

ID 다음 행동 완료 조건 차단 / 경계
AVATAR-001 fail-closed 후보의 API/Web/브라우저 검증 source union·DB reference 보존, decode-valid 응답, public fallback, digest receipt, 승인 배포 Docker·API·DB avatar URL·upload root 변경은 승인 전 금지
REQ-008 NAS 재부팅 자동복구 smoke 실제 재부팅 뒤 health·로그인·데이터·이미지·SHA 확인 Windows 개발 task는 legacy 참조이며 NAS 운영 증거가 아님
BACKUP-001 백업 실패 알림·off-host 복제·restore drill 실패 경보, 암호화 복제, 복원 주기·보존 정책의 운영 evidence 첫 일일 sidecar 실행은 당시 성공 기록일 뿐
G8-EXTERNAL 실DB/public 사람 게이트 승인·보류·반려와 append-only effect의 실제 public proof local fixture와 route E2E는 대체 불가
G7-EXTERNAL 동의 기반 음성 외부 proof 3,120초 soak, 3,000초 overlap high-water, 독립 human pack, checker exit 0 장치 선택·명시 동의 전 마이크를 열지 않음
ANTHROPIC-001 provider live 동일성 비교 승인 주입한 기관 키로 응답·계량·오류 표면화 비교 credential 취급·주입은 소유자 경계
VNET-001 vnet 공개 전환 DNS·Cloudflare zone 권한·Google redirect URI와 live 검증 현재 NAS ingress를 넓히지 않음
PIPELINE-001 Forgejo 기준 NAS 자동배포 hook 수동 git-container clone·SHA 검증·NAS build/compose 절차를 보존한 자동화와 rollback/approval 경계 현 수동 실증 절차를 우회하지 않음
INGRESS-001 Cloudflare tunnel 제거 지시의 대체 ingress gate NAS ingress 대체 경로의 보안·가용성·OAuth 경계를 검증한 뒤 tunnel retirement 승인 tunnel 제거는 사용자 지시이나 대체 ingress 검증 전 미이행

외부 거버넌스·파일럿

ID 다음 행동 완료 조건
C-001 외부 임상 검수 수집 사례별 검수 30개·청소년 답변 6개·승인 10필드·서명 증거와 canonical checker review_complete=true
GOV-001 한신대 데이터/SSO 서면 증거 SSO claims, 추가 축어록·미성년 동의, privacy 문서의 기관 확인
L1-001 저작권/등재 문서 정합화 FastAPI 현행 사유와 Node 계약 우선 전환 계획의 제출 증거
P3-001 20명 파일럿 운영 roster, consent 법무승인, 회기 완료 증거
P3-002 KPI 측정 SUS·자기효능감·κ/ICC·환각률 보고서
P3-003 재귀학습 승인 export·동의 감사 consent/PII/IAA/legal 승인과 withdrawal log 종결

비차단 제품·정리 후보

ID 다음 행동 완료 조건
VOICE-001 s2s 2차 PoC 20턴 비교 보고서와 채택/폐기 판단
FASTLOOP-001 외부 fallback 동의·전송 가드·관측을 포함한 테스트
FINETUNE-001 재귀학습 fine-tuning pipeline 동의·데이터셋 gate 뒤 pipeline과 few-shot 자동갱신 범위 검증
RETENTION-001 health retention raw 90일 / rollup 365일과 수동 escalation 검증
EVALHOOK-001 fast-loop eval_hook 사용 정책 hook 활성화 조건과 관측 경계의 소유자 결정
NODE-001 Node gateway 전환 후보 endpoint conformance, TurnEvaluationPayload adapter, admin mapper의 작업 패킷과 회귀
MIGRATION-001 idempotent DB migration runner init SQL과 runner의 역할 경계·인프라 영향·소유자 승인
OPS-001 운영 티켓 자동 분류 관리자 승인·audit 경계를 갖춘 구현 패킷
E2E-001 전 기능 E2E 후속 분류 focused 범위의 locator 18건 교정·keyboard 1건 해결 뒤 npm run e2e에서 범위 밖 케이스를 실행하고, 실패별 재현·원인·수정 명령을 분류한다. 과거 sweep 실패를 오늘 결함으로 단정하지 않으며 실API/DB·장치 검증은 fixture 결과와 분리한다.

완료 기록 경계

2026-09-01 A 경로의 NAS 배포, migration 20/21/22 적용, OAuth 실계정 회기 E2E와 당시 backup sidecar 첫 실행은 완료 이력이다. B3 및 B3-신규의 소유자 결정과 완료된 구현도 archive snapshot에 보존한다. CLEANUP-001은 84 regular source와 supplementary 4 files·junction 4개의 대조 뒤 outputs/local-history/retained-sources-2026-09-07/으로 가역 보존 이동을 마쳤고 영구 삭제는 0건이다. RUNTIME-001은 Windows public-runtime/watchdog scripts를 복구 경로로 보존하기로 결정했으며 이 PC의 두 Disabled Scheduled Task는 운영 서버 다운을 뜻하지 않는다. REFACTOR-001sessionViewModel 분리와 voiceCapture 책임 유지를 수용했고, lifecycle setter bag hook은 채택하지 않았다. Space retry→pause와 empty-audio fixture를 교정했으며, learnerFeedbackEnabled:true 누락으로 숨던 review feedback UI는 fixture 보완 뒤 focused login→review 1 passed(exit 0)로 확인했다. 제품 feedback guard는 유지했다. REFACTOR-002는 repository와 persistence values로 평가 저장 경계를 분리했다. 열린 백로그에 완료 이력을 다시 적지 않는다.

확인 명령

python -X utf8 scripts/check-dev-dashboard-ssot.py --json
git diff --check