9.4 KiB
Vignette 백로그 — 열린 실행 항목
상태와 증거의 SSOT는
docs/dev_dashboard.html, 실행 인덱스는docs/TODO.md다. 2026-09-07 이전 완료 기록과 장문 이력은 정리 전 백로그 원문에 보존했다. 2026-09-01 NAS 배포는 당시 배포 증거로 완료 기록을 남겼으며, 현재 live 상태 주장이나 후속 게이트 완료 선언이 아니다.
제품 이슈 — 최신 워크북 원본과 로컬 재검증
최신 원본: 개선관리 워크북를 2026-09-09 읽기 전용으로 재점검했다. 다운로드 원본 SHA-256
f64bbc859354e8bfdd62bb3393cffd841ca3a0d865983967a149aea7cf569773, 14개 항목은 완료 13·검토 1(C-001)이며 REQ-008~011도 완료다. 항목별 구현 매핑에서 원본 상태와 로컬 재검증을 분리한다. 과거 9 완료·2 검토, 신규 3 대기, 원본#REF!주장은 당시 11개 항목 replica의 역사 기록이며 최신 원본 상태가 아니다. 원본은 수정하지 않는다.
| ID | 원본 사실 | 조치 및 결과 | 완료 조건 | 검증 증거 |
|---|---|---|---|---|
| REQ-009 | 원본 완료. | 스트림 오류 입력 복원·부분 턴 미저장·재시도/닫기·음성 상태 복원을 local browser 재검증으로 수용했다. | 배포 상태 분리. | uc-session-conversation·calibration-transfer route fixture browser 44 passed/0 failed/0 skipped. build·새 public live 검증·배포는 수행하지 않았다. |
| REQ-010 | 원본 완료. | 0턴/client-only 회기가 첫 완료·반복·경험 배지에 포함되던 결함을 기존 완료 집계와 같은 counselor/learner 발화 조건으로 정렬했다. | 배포 상태 분리. | 계약 RED 4건→GREEN 4건, 지정 API 20건, API 전체 1108 passed/1 skipped/1 warning, route fixture browser 44 passed/0 failed/0 skipped. build·새 public live 검증·배포는 수행하지 않았다. |
| REQ-011 | 원본 완료. | 자기예측 저장·잠금을 local browser 재검증으로 수용했다. | 배포 상태 분리. | uc-session-conversation·calibration-transfer route fixture browser 44 passed/0 failed/0 skipped. build·새 public live 검증·배포는 수행하지 않았다. |
| SRC-001 | 역사 replica 수식 보정. | 과거 replica의 #REF!와 15행 집계 범위 보정은 보존한다. |
최신 원본 오류로 오인하지 않는다. | 과거 수정본: 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 결과와 분리한다. |
| CUA-128 | 실제 배포 Computer Use 재검증 | 128 시나리오 카탈로그 생성은 완료했지만 전체 실배포 검증은 미완료다. 일반 학습자 로그인·교차 역할 차단·P4 추천과 허용된 관리자 P16 1개·학습자 P4 1개 회기 종료를 확인했으나 H09·T18은 local 수정 증거 뒤 배포 재검증이 열려 있다. 순수 teacher·OFF 계정, 교수자 쓰기, 모바일과 독립 관찰자 공개 검증이 남아 있다. |
완료 기록 경계
2026-09-01 A 경로의 NAS 배포, migration 20/21/22 적용, OAuth 실계정 회기 E2E와 당시 backup sidecar 첫 실행은 완료 이력이다. 2026-09-08 Forgejo master a0311c59/d9bb5b36의 NAS Production 컨테이너 교체, Cloudflare Pages 배포, 사전 DB 덤프(12MB), 0턴 세션 분리·OAS calibration bounds/lock·composer 복원 TDD(API 1104 passed)는 당시 배포 증거다. 이는 2026-09-09의 새 live 검증이나 현재 작업트리의 배포 상태를 뜻하지 않는다. 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-001은 sessionViewModel 분리와 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