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 시나리오 카탈로그 생성은 완료했지만 전체 실배포 검증은 미완료다. SHA 1306c524에서 H09와 일반 학습자 로그인·교차 역할 차단·P4 추천·R09 잠금·R14 워크시트 보존을 재확인했지만, T18은 learner 브라우저만 있어 기존 RED를 종결하지 않았다. 순수 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