정식 승격 상태판과 증거를 동기화
This commit is contained in:
parent
34aff65cb0
commit
be08c0b573
16 changed files with 1160 additions and 63 deletions
38
docs/TODO.md
38
docs/TODO.md
|
|
@ -15,13 +15,16 @@
|
|||
> 이 표는 워크북 ID와 현행 구현을 잇는 얇은 추적표다. 내부 기술 DONE의 focused 증거는
|
||||
> `guides/testing.md`, 상세 계약은 SSOT `dev_dashboard.html`이 소유한다. C-001은 기술 사전검증과 외부
|
||||
> 임상 승인을 분리한다. 검토 패킷과 fail-closed 판정기는 준비됐지만 외부 증거가 없으므로 계속 열린 항목이다.
|
||||
> 완료본은 `outputs/01a04217-f73b-7303-b597-401fa7f5d290/Vignette_개선관리_완료.xlsx`, SHA-256
|
||||
> `c832547f30ae0664e54b302c8e9f62cc157f31022ad158d17803d8cac988d8bd`다. 집계는 **완료 9·검토 2·총 11**이며
|
||||
> 검토는 C-001 적격 외부 임상 검수와 REQ-008 실제 Windows 재부팅뿐이다.
|
||||
|
||||
| ID | 상태 | 현행 경계 |
|
||||
|---|---|---|
|
||||
| C-001 | **OPEN · 외부 GATE** | v2 P1 합성 사례 6건·상태별 canonical 판정기와 109·수단 상세 차단·런타임/carry-over/output `ideation_stage <= 3`·4개 공식 source 기술 사전검증은 완료. 사례별 5필드 30개, 청소년 답변 6개, 검토자·소속·자격·검토일·결정 근거·서면 증거/해시·검토 버전/사례 해시를 포함한 승인 10필드가 있어야 닫는다. 현재 `review_complete=false`; F절/B4에서 추적한다. |
|
||||
| C-002 | **DONE · 내부 기술** | 첫 회기 라포 반영·한 초점 열린 질문 체크리스트, 근거 turn 연결, 이후 회기 not-applicable |
|
||||
| C-003 | **DONE · 내부 기술** | 종료 회기 4건 미만 insufficient, 이후 최다 페르소나 비중 0.75 이상 훈련 집중 주의; 임상·공정성 판정 아님 |
|
||||
| REQ-001 | **READY · 실제 Gmail callback GATE** | provider가 이메일을 검증한 모든 Google 계정은 도메인·사전등록 없이 learner·approved로 즉시 로그인하며 Google 계정 선택기(`prompt=select_account`)를 유지하고 `hd`를 보내지 않는다. Pages production `ef48c0ae…` 승격 뒤 public custom domain은 단일 `Google 계정으로 로그인` CTA 1개·구 선택 버튼 0·dev login 0·console warning/error 0이고 공개 OAuth 시작 E2E 1/1을 통과했다. 실제 Gmail callback과 복구 계정의 관리자 진입·기존 21회기/64턴/평가 6건 확인 전에는 개선관리 상태를 `검토`로 유지한다. |
|
||||
| REQ-001 | **DONE · 운영 수락** | provider가 검증한 모든 Google 계정은 도메인·사전등록 없이 learner·approved로 로그인한다. Pages `0c60261e…`의 단일 Google CTA·공개 Playwright 2건, 기존 Gmail 인증 세션의 로그인 이메일·관리자 진입·온보딩 비전환·복구 데이터 가시성을 확인했고 소유자가 수락했다. 현재 public API 장애는 별도 운영 복구 게이트이며 이미 닫힌 수락 증거를 지우지는 않는다. |
|
||||
| REQ-002 | **DONE · 내부 기술** | admin protocol draft→active→retired, 라이선스 C/D 외부 LLM 금지, evaluator-only RAG·rollback; migration 17 owner-run/readiness-only |
|
||||
| REQ-003 | **DONE · 내부 기술** | 페르소나 주호소가 JSON 키 순서나 surface 상태보다 우선 |
|
||||
| REQ-004 | **DONE · 내부 기술** | learner 현재 설정 AND 세션 snapshot. OFF는 AI 파생 API 403/UI 무요청·혼합 결과 redaction, 사용자 입력·privacy 보존; teacher/admin 유지 |
|
||||
|
|
@ -30,27 +33,40 @@
|
|||
| REQ-007 | **DONE · 내부 기술** | 회기 종료를 평가보다 먼저 영속화해 옛 평가 실패 뒤에도 새 회기 생성·턴 진행 가능 |
|
||||
| REQ-008 | **READY · 실제 재부팅 GATE** | 원본 응답 생성 실패는 기본 엔진+live-client readiness, 구조화 done 없는 SSE EOF의 `client_stream_incomplete` 복원과 공개 P20 실제 응답으로 닫았다. 후속 재부팅 복구는 전역 mutex·단계별 상한·프로세스 트리 종료·전체 다운 즉시복구와 PowerShell 5.1 timed `WaitForExit`의 process handle 선확보를 적용했다. 실제 PS5.1 계약 32 passed, detached-clean `44b7835c…`·tree `06133249…`, 5174 자동복구·HTTP 200, watchdog result 0/failcount 0까지 확인했지만 실제 Windows 재부팅 smoke 전에는 개선관리 상태를 `검토`로 유지한다. PC 비종속 상시 호스트 이전도 별도 운영 게이트다. |
|
||||
|
||||
현재 공개 API/engine/STT/TTS/cloudflared와 Pages production
|
||||
`ef48c0ae-374e-41fc-b6fd-03f69b26e946`의 서비스 소스는 detached-clean `dba9b75a…`·tree `14cd4607…`다. 재부팅 복구용
|
||||
로그온·watchdog 작업도 같은 root·commit·tree·script SHA로 재등록했고,
|
||||
60분 상한·`IgnoreNew`·복구 mutex·전체 다운 즉시복구·PowerShell 5.1 build 종료코드 판정을 고정했다.
|
||||
watchdog의 명시 복구 실행 뒤 웹 5174 HTTP 200, `LastTaskResult=0`, failcount 0과 local/public
|
||||
`status=ok·db=true·engine=true`를 확인했다.
|
||||
새 학습자 라포 헤더와 단일 Google 로그인 번들은 custom domain에 공개됐다. 실제 Gmail callback과 Windows 재부팅 smoke는 별도 게이트다.
|
||||
2026-08-29 최신 read-only 상태에서 정적 public Web과 Pages `0c60261e…`(source `5bf89ff…`)는 유지되지만,
|
||||
local API 8001은 연결 거부, public API는 530이며 Docker daemon이 없어 DB/API는 **OUTAGE**다. task는 old
|
||||
detached `dba9b75a…` runtime을 계속 가리킨다. 과거 `status=ok·db=true·engine=true`와 watchdog result 0은 이전 성공
|
||||
증거이지 현재 GREEN이 아니다. avatar fail-closed 코드와 upload receipt는 아직 후보이고 배포하지 않았다.
|
||||
|
||||
---
|
||||
|
||||
## A. 배포·공개 런타임 게이트 [환경]
|
||||
> 출처: `ops/backlog-2026-06-26.md` B2 · 대시보드 운영 탭 · `ops/tailscale-vnet-runtime-2026-06-27.md` · `ops/public-runtime-watchdog.md` · `HANDOFF.md`
|
||||
> 출처: `ops/backlog-2026-06-26.md` B2 · 대시보드 운영 탭 · `ops/tailscale-vnet-runtime-2026-06-27.md` · `ops/public-runtime-watchdog.md` · `ops/handoff-goal-production-2026-08-29.md`
|
||||
|
||||
- [ ] **public API/DB 복구와 avatar fail-closed 정식 승격** — 허용 source union은 93 objects·52,973 bytes,
|
||||
inventory SHA-256 `9d703126f78d4fc8330408835d76a7d680276240dc578d6fc9ca420c2f25e6aa`다. 실제 decode는 정상 3·실패 90,
|
||||
현 DB 참조는 정상 2·실패 6·missing 0이다. 후보는 손상 bytes/DB reference를 private forensic으로 보존하고
|
||||
public static 응답을 404/fallback으로 막으며 decode-valid 객체만 immutable public cache에 제공한다. 신규 UUID 업로드도
|
||||
URL 기록·현재 참조·GET/HEAD에서 다시 full decode하고, 업로드 뒤 손상은 current invalid/health fallback에 포함한다. 전체 API/Web/
|
||||
PowerShell 회귀, 실제 브라우저 fallback, exact target/total/digest receipt, 후보 SHA와 사용자 배포 승인 전에는 Docker·
|
||||
API/tunnel·task·DB avatar URL·stable upload root를 바꾸지 않는다.
|
||||
현재 Docker engine은 꺼져 있고 public watchdog이 활성이라 daemon 시작 즉시 기존 runtime 복구가 개입할 수 있다. 풀스택 E2E는
|
||||
watchdog 일시 중지·비활성화, 고유 DB/container/volume과 56432/58000/55173 포트, exact cleanup, Docker·watchdog 원상복구를
|
||||
명시 승인받은 뒤 `layout-visual-gate` 15/15와 `session-layout` 8/8을 실행한다.
|
||||
- [ ] **내장 브라우저 G8 사람 게이트 E2E** — 명시적 승인·보류(`keep_quarantine`)·반려(`reject`)와 사유 입력,
|
||||
증거 미충족 승인 차단은 typecheck와 route-fixture desktop/mobile **10/10**을 통과했다. 빠른 3.5초/느린 8초 응답에서도
|
||||
watchdog overlay 0을 확인했다. Codex 내장 브라우저의 격리 local stateful fixture에서도 8.5초 뒤 overlay 0·heading 정상,
|
||||
content `keep_quarantine` 뒤 effect 0, 증거 없는 release 승인 disabled→`reject` 뒤 effect 0, 증거 4종 promote 승인 뒤
|
||||
lifecycle effect 정확히 1을 공동 확인했다. <b>로컬 사람 게이트는 GREEN</b>이지만 실DB append-only 결정과 public proof는
|
||||
아직 없으므로 current 운영 G8 전체를 GREEN으로 올리지 않는다.
|
||||
- [ ] **공개 DB 계정·회기 복구 안정화** — 2026-08-07 18:26 KST owner 승인으로 recovered named volume을
|
||||
공개 `vignette-dev-db:55432`에 전환했다. cutover 기준 users 84/sessions 30/turns 705,
|
||||
Google 계정 16/소유 회기 30, orphan 0, health·engine·OAuth·watchdog가 정상이다. 전환 직전 container와
|
||||
dump, 원본 volume을 보존한다. 남은 것은 사용자가 Google 재로그인한 뒤 본인 과거 회기가 보이는지
|
||||
확인하는 일과 자동 백업 운영화다. 기존 인증 세션은 복사하지 않아 재로그인이 필요하다.
|
||||
2026-08-09 Docker Desktop 중단과 18:02:55 KST Docker Desktop UI의 active DB 직접 stop으로 `db=false`가
|
||||
재발했으나 동일 recovered container/volume만 재기동했고, 현재 owner read-only 집계는 users 356/sessions 193/
|
||||
turns 726, Google users 16/Google-owned sessions 31이며 public db/engine true다. watchdog·로그온 boot는 detached
|
||||
재발했으나 동일 recovered container/volume만 재기동했고, 당시 owner read-only 집계는 users 356/sessions 193/
|
||||
turns 726, Google users 16/Google-owned sessions 31이며 public db/engine true였다. watchdog·로그온 boot는 detached
|
||||
clean release의 Git commit/tree와 watchdog|boot/start SHA가 없으면 mutation 전에 실패하도록 코드로 고정했다.
|
||||
공개 API·cloudflared는 detached-clean `a73bcd24…`·tree `b02b3a1b…`로 fresh 승격했고 receipt
|
||||
`47388d58…9b08`가 passed다. local/public health는 `status=ok·db=true·engine=true`, 공개 OpenAPI 126,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue