128 lines
13 KiB
Markdown
128 lines
13 KiB
Markdown
# Vignette 할 일
|
|
|
|
> 상태·결정·검증 증거의 SSOT는 [`dev_dashboard.html`](./dev_dashboard.html)이다. 이 문서는 실행할 다음 행동의 인덱스다.
|
|
> 2026-09-07 이전 완료 로그와 세부 이력은 [정리 전 TODO 원문](./archive/project-cleanup-2026-09-07/TODO-before-cleanup.md)에 보존했다. 2026-09-01 배포 당시의 근거는 [NAS 배포 증거](./ops/evidence/nas-prod-deploy-2026-09-01.json)이며, 현재 live 상태를 주장하지 않는다.
|
|
|
|
## 우선 접수 제품 이슈
|
|
|
|
> 원본: [개선관리 워크북](https://docs.google.com/spreadsheets/d/1MNRDfXoIQJbLzIcSRdHnQHREWELbKqV4/edit?gid=351278076#gid=351278076) `개발·기능 이슈` 2026-09-07 수집본, SHA-256 `625281e72067ae2aea402f2fe932b4f593b7905c35f8a9740cf346c7f077c812`. 외부 원본 14건과 로컬 집계(완료 9·기존 gate 2·신규 3)를 분리한다. 원본의 기존 대기와 로컬 DONE 불일치는 동기화 대기이며 원본을 수정하지 않는다.
|
|
|
|
| ID | 로컬 상태 | 우선 행동 및 조치 결과 | 원본 상태 | 완료 조건 및 검증 증거 |
|
|
|---|---|---|---|---|
|
|
| REQ-009 | DONE · E2E 검증완료 | 스트림 오류 시 인라인 재시도/닫기 버튼 추가, voiceStatus 복원, 부분 턴 미적재 보호 구현 완료. | 중요 · 대기 | 단위/Playwright 통과 및 실서버 헤드풀 브라우저 검증. [headful-02](./ops/evidence/headful-02-session-multi-turn.png) |
|
|
| REQ-011 | DONE · E2E 검증완료 | OAS G5 자기예측 시 legacy instrument ID 정규화 및 scoped block ID 일치화로 HTTP 422 해소. 1차 예측 저장 및 잠금 완료. | 일반 · 상태 공란 | 헤드풀 브라우저 리뷰 피드백 탭에서 1차 예측 저장 및 잠금 정상 동작 검증 완료. [headful-04](./ops/evidence/headful-04-review-calibration-locked.png) |
|
|
| REQ-010 | DONE · E2E 검증완료 | hard delete 없이 0턴 무턴 세션은 완료 회기 집계에서 안전하게 제외하고, 실제 발화 진행 회기만 완료 카운트에 반영. | 중요 · 상태 공란 | 헤드풀 브라우저 2턴 완료 시 카운트 증가(+1) 및 0턴 즉시 종료 시 카운트 불변(유지) 검증. [headful-05](./ops/evidence/headful-05-learner-home-after-completed.png), [headful-06](./ops/evidence/headful-06-learner-home-zero-turn-verified.png) |
|
|
| SRC-001 | DONE · 로컬 동기화완료 | 개선관리 워크북 replica의 수식 오류(`#REF!`) 수정 및 개발 상태 집계 범위(15행까지 포함) 보정 완료. | 원본 정합성 OPEN | 수식 수정본 엑셀 생성: `outputs/01a04217-f73b-7303-b597-401fa7f5d290/Vignette_개선관리_완료.xlsx` |
|
|
|
|
## P0 운영·외부 게이트
|
|
|
|
| ID | 다음 행동 | 완료 조건 / 차단 이유 |
|
|
|---|---|---|
|
|
| AVATAR-001 | 아바타 fail-closed 후보를 보존 경계 안에서 검증한다. | 93 objects·52,973 bytes inventory, DB 참조 보존, public fallback·GET/HEAD full decode·digest receipt·실브라우저 확인 뒤에만 승격 판단. 배포는 승인 필요. |
|
|
| REQ-008 | NAS 재부팅 자동복구 smoke를 소유자 승인 뒤 실행한다. | 실제 재부팅 뒤 서비스 자동복구, health·로그인·데이터·이미지와 배포 SHA를 확인. Windows 개발 task 이력은 대체 증거가 아니다. |
|
|
| BACKUP-001 | 백업 운영화를 끝낸다. | 실패 알림, off-host 암호화 복제, 정기 restore drill과 보존 정책을 운영 증거로 남긴다. 첫 sidecar 성공만으로 닫지 않는다. |
|
|
| G8-EXTERNAL | G8 실DB/public 사람 게이트를 실행한다. | 승인·보류·반려 사유와 append-only effect를 실제 DB·공개 경로에서 증명. local fixture는 대체 불가. |
|
|
| G7-EXTERNAL | 동의 기반 외부 음성 종료 게이트를 준비한다. | 장치 선택·명시 동의 후 3,120초 양방향 soak, 3,000초 공통 high-water, 독립 human voice-gain pack, canonical checker exit 0. |
|
|
| ANTHROPIC-001 | `claude_cli`와 Anthropic API live 동일성을 비교한다. | 기관 키를 게이트웨이 호스트에 승인 주입한 뒤 응답·계량·오류 표면화 비교. 키 주입 전에는 실행하지 않는다. |
|
|
| VNET-001 | `vnet.18ka.net` 공개 전환의 외부 설정을 마친다. | DNS, Cloudflare zone 권한, Google redirect URI가 모두 준비된 뒤 live 검증. |
|
|
| 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를 승인한다. |
|
|
|
|
## 외부 거버넌스와 파일럿
|
|
|
|
| ID | 다음 행동 | 완료 조건 / 차단 이유 |
|
|
|---|---|---|
|
|
| C-001 | 적격 외부 임상 검수 패킷을 전달하고 응답을 수집한다. | 사례별 판정·근거·수정 요구·재검토·검토일 30개, 청소년 답변 6개, 승인 10필드와 서명 증거가 hash/version과 일치하고 `review_complete=true`. |
|
|
| GOV-001 | 한신대 데이터/SSO 서면 증거를 수집한다. | SSO claim map, 추가 축어록·미성년 동의, 개인정보 처리방침에 대한 기관/data steward 서면 증거. |
|
|
| L1-001 | 저작권·등재 문서의 스택 설명을 정합화한다. | FastAPI 유지 사유와 계약 우선 Node 전환 계획을 외부 제출 문서에 반영. |
|
|
| P3-001 | 20명 파일럿을 시작한다. | roster, 법무 승인 동의, 회기 완료 증거. |
|
|
| P3-002 | 효과성/KPI를 산출한다. | 3척도 pre/post, SUS, κ/ICC, 환각률을 `kpi_report.json`으로 재현. |
|
|
| P3-003 | 재귀학습 데이터셋 승인과 동의 감사를 끝낸다. | consent·PII·IAA·legal 승인 export 및 withdrawal log 종결. |
|
|
|
|
## 제품·품질 후속
|
|
|
|
| ID | 다음 행동 | 완료 조건 / 차단 이유 |
|
|
|---|---|---|
|
|
| VOICE-001 | s2s 2차 비교 PoC를 수행한다. | 20턴 기준표의 전사·안전·감사·지연 비교 보고서로 채택/폐기 판단. |
|
|
| FASTLOOP-001 | 외부 fallback을 구현한다. | 로컬 우선 분류기, Haiku/Solar fallback, 동의·전송 가드·관측을 테스트한다. |
|
|
| FINETUNE-001 | 재귀학습 fine-tuning 경로를 준비한다. | 동의·데이터셋 gate가 닫힌 뒤 pipeline과 few-shot 자동갱신 범위를 검증한다. |
|
|
| RETENTION-001 | health retention을 적용·검증한다. | raw 90일, rollup 365일, 수동 escalation 정책을 검증한다. |
|
|
| EVALHOOK-001 | fast-loop `eval_hook` 사용 정책을 확정한다. | 주입된 hook의 활성화 조건과 관측 경계를 소유자가 결정한다. |
|
|
| NODE-001 | Node gateway 전환 후보의 계약 범위를 정한다. | live endpoint conformance, `TurnEvaluationPayload` adapter, admin mapper의 작업 패킷과 회귀를 확정한다. |
|
|
| MIGRATION-001 | idempotent DB migration runner 도입 여부를 결정한다. | init SQL과 runner의 역할 경계, 인프라 영향, 소유자 승인을 확정한다. |
|
|
| OPS-001 | 운영 티켓 자동 분류·처리 후속을 설계한다. | 관리자 승인 뒤 이슈/PR/작업 스레드를 생성하는 범위와 audit 경계를 확정한다. |
|
|
| E2E-001 | 전 기능 E2E 후속을 분류한다. | 이번 focused 범위에서 locator 18건을 교정하고 keyboard 1건을 해결했다. `npm run e2e` 전 기능 묶음에서 focused 범위 밖 케이스를 실행하고 실패별 재현·원인·수정 명령을 분류한다. 과거 sweep 실패를 오늘 재현 결함으로 단정하지 않으며, 실API/DB·장치 검증은 fixture 결과와 분리한다. |
|
|
|
|
## 임상 콘텐츠 후속
|
|
|
|
| ID | 다음 행동 | 완료 조건 |
|
|
|---|---|---|
|
|
| CONTENT-001 | 태깅 축어록 4종 활용 gate | 임상팀 확정본과 source별 활용 범위 |
|
|
| CONTENT-002 | C1 사례개념화 루브릭 | 확정 콘텐츠와 AI 추출/채점 calibration |
|
|
| CONTENT-003 | CBT 체인·이론부합 루브릭 | 임상팀 확정본과 검증 기준 |
|
|
| CONTENT-004 | 평가 골든셋 | 승인된 콘텐츠와 calibration evidence |
|
|
| C-001 | 위기개입 프로토콜 임상 승인 | C-001 외부 검수와 같은 서면 승인 gate |
|
|
|
|
## 완료 요약
|
|
|
|
| 범위 | 상태 | 근거 |
|
|
|---|---|---|
|
|
| C-002·C-003·REQ-001~007 | 완료 | 개선관리 완료본은 9 완료·2 검토를 유지한다. C-001과 REQ-008은 별도 게이트다. |
|
|
| NAS A 경로 | 2026-09-01 당시 완료 | NAS `vignette-prod` 배포, migration 20/21/22, OAuth 실계정 새 사례→턴→리뷰 E2E, 첫 일일 backup sidecar 실행. |
|
|
| G0~G6·G8 내부 구현 | 완료 증거 보존 | G7 외부 종료와 G8 실DB/public 사람 게이트는 계속 열린다. |
|
|
| B3·B3-신규 소유자 결정 | 결정 및 기존 구현 완료 | 원문은 [정리 전 백로그 원문](./archive/project-cleanup-2026-09-07/backlog-2026-06-26-before-cleanup.md), 남은 후속만 위에 둔다. |
|
|
| 과거 Windows Compose 패키징 gate | SUPERSEDED | 9/1 NAS docker-compose 배포로 현 production 전환 항목에서 제거했다. 새 secret 주입 과제를 만들지 않는다. |
|
|
| CLEANUP-001 | source 경로·문서·코드 경계 정리 완료 | `tmp/`, `apps/web/tmp/`, legacy `.bak` 4개, attachment·중복 generation 결과를 `outputs/local-history/retained-sources-2026-09-07/`에 가역 보존했다. 84 regular source와 supplementary 4 files, junction 4개의 대조를 마쳤고 영구 삭제는 0건이다. API 공통 outcome/practice/auth/admin/turn-memory/voice 경계와 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·도메인 계약으로 유지한다. |
|
|
| RUNTIME-001 | 현시점 보존 결정 | Windows public-runtime/watchdog scripts는 복구 경로로 유지한다. 이 PC의 두 Scheduled Task가 Disabled라는 읽기 전용 사실은 운영 서버 다운을 뜻하지 않으며, 삭제 승인 대기 작업을 새로 만들지 않는다. |
|
|
| REFACTOR-002 | 완료 | `SessionEvaluationWrite`의 SQL/cache를 repository로, 공통 정규화·마스킹을 persistence values로 분리했다. AST 기존 대조 20+12 차이 0, focused 149, API 전체 1090 passed/1 skipped/1 warning, gateway 71 passed/1 warning, API 타입 체크·Ruff 통과. 기존 선택형 격리 DB `test_admin_usage_postgres.py` 1 skipped는 `VIGNETTE_USAGE_TEST_DATABASE_URL` 미설정이며 새 skip은 없다. |
|
|
| REFACTOR-001 | 완료 | `sessionViewModel`로 표시 모델을 분리하고 `voiceCapture`의 캡처·status 책임은 유지했다. lifecycle setter bag hook은 결합도를 키워 채택하지 않았다. Space retry→pause, empty-audio fixture, `SessionReview.learnerFeedbackEnabled:true` 누락을 교정했고 제품 feedback guard는 유지했다. 최종 UI 두 묶음은 97 passed/1 skipped: `session-mvp`+`uc-session-coach-voice` 58 passed/0 skipped, alliance+admin 39 passed/1 skipped다. skip은 `uc-review-alliance-pulse` 320px desktop 중복 제외이며 mobile은 통과했다. disabled AI feedback privacy focused 1 passed(exit 0)도 유지한다. |
|
|
|
|
<details>
|
|
<summary>Outcome & Alliance OS 완료 ID</summary>
|
|
|
|
### I-0. G0 Measurement Truth Foundation
|
|
|
|
완료 증거는 [대시보드](./dev_dashboard.html)에 보존한다.
|
|
|
|
### I-1. G1 Alliance Core
|
|
|
|
완료 증거는 대시보드에 보존한다.
|
|
|
|
### I-2. G2 Longitudinal Outcome Trajectory
|
|
|
|
완료 증거는 대시보드에 보존한다.
|
|
|
|
### I-3. G3 Rupture & Repair Lab
|
|
|
|
완료 증거는 대시보드에 보존한다.
|
|
|
|
### I-4. G4 Deliberate Practice Engine
|
|
|
|
완료 증거는 대시보드에 보존한다.
|
|
|
|
### I-5. G5 Calibration Mirror & Transfer
|
|
|
|
완료 증거는 대시보드에 보존한다.
|
|
|
|
### I-6. G6 Supervision & Research OS
|
|
|
|
완료 증거는 대시보드에 보존한다.
|
|
|
|
### I-7. G7 Multimodal Alliance
|
|
|
|
내부 완료 증거를 보존한다. 외부 종료는 `G7-EXTERNAL`에서 추적한다.
|
|
|
|
### I-8. G8 Autonomous Content & Continuous Improvement
|
|
|
|
내부 완료 증거를 보존한다. 실DB/public 사람 게이트는 `G8-EXTERNAL`에서 추적한다.
|
|
|
|
**AOS-001** provenance inventory · **AOS-002** measurement schema · **AOS-003** benchmark case schema · **AOS-004** legacy adapter · **AOS-005** structured schema · **AOS-006** session measurement API · **AOS-007** self-assessment lock · **AOS-008** Alliance Pulse UI · **AOS-009** measurement drilldown · **AOS-010** drift/calibration job · **AOS-011** deploy proof manifest · **AOS-012** SSOT/TODO 동기화.
|
|
|
|
</details>
|
|
|
|
## 문서 검증
|
|
|
|
```powershell
|
|
python -X utf8 scripts/check-dev-dashboard-ssot.py --json
|
|
git diff --check
|
|
```
|