유스케이스 TDD 16테마 스펙과 접근성 제품 결함 수정

- 지원 티켓 작성 UI 신설(설정)·관리자 해결 노트 입력 신설(Admin): 서버 계약은 있었으나
  웹 진입점이 없던 2결함
- a11y: outline 채널 포커스 링(ui/shell css), 세션바 44px 터치 타깃, 청록 하드코딩
  그라디언트를 테마 토큰으로 교체, 설정 라벨/헤딩/대비·리뷰 44px·모바일 오버플로 수정
- uc-*.spec.ts 16테마 239 시나리오 신규(수집 1109 tests/61 files), 기존 스펙 5종 계약 드리프트 교정
- breakpoint-sweep: widthsFor 솎아내기가 실기기 대표 폭(360/390/1024)을 탈락시키는 테스트 결함 수정
  — keep 시드를 전체 DEVICE_WIDTHS로, 3연폭 예외는 솎아내기 발생 여부 기준으로
- 검증: tsc PASS, 병렬 게이트 1040 passed(데스크톱 밀도 충돌 1건 해소 후 focused 68/68 GREEN),
  직렬 게이트 52/5/4 삼각화 — breakpoint(테스트 결함)·kb(낡은 dev API 재기동)·voice(일시적) 해소,
  교사 재평가 2건은 엔진 구독 한도(resets 3pm)로 skip 후 재검증 대기
- 문서/SSOT: HANDOFF·TODO·대시보드·testing 가이드 동기화, 증거 usecase-tdd-2026-08-18.json,
  SSOT 체커 PASS(59)
This commit is contained in:
Yun Chan 2026-08-18 11:47:58 +09:00
parent 4771b97c3a
commit cf899b7f15
37 changed files with 11989 additions and 67 deletions

View file

@ -1,6 +1,6 @@
# Vignette G0~G8 완료 추진 핸드오프
> Updated: 2026-08-12 KST (G8 증거 종료 · current NAS engine incident · G7 external proof)
> Updated: 2026-08-18 KST (엔진 readiness 장애 수정·재승격 · 유스케이스 TDD 239 · 공개 Web 배포)
> Workspace: `D:\workspace\vignette`
> 이 문서는 다음 에이전트가 **G0~G8 아홉 목표 중 마지막 G7 외부 게이트를 닫기 위한** 실행 기준이다.
@ -36,6 +36,30 @@ G8 배포 source 기준선은 branch `master`, HEAD `61a41d1f08239b5f9e99cfae42a
`4d15d055d74f33f1fa2ff470afbf900d565ab238b19c79df34ca7ba240119d4d`다. 공유 worktree의 후속 변경은 이
배포 source에 포함되지 않으므로 G8 완료 증거와 섞지 않는다.
### 2026-08-18 세션 — 엔진 장애 수정·유스케이스 TDD·재승격
- **공개 엔진 3.5시간 장애(06:30~10:05 KST)**: `reasoning_effort=high` 콜드 프로브가 20초를 넘기면
실패가 성공과 같은 TTL(운영 1800초)로 캐시돼 공개 API가 `engine=false`로 오염됐고, 사용량 한도
소진 구간에는 `Reached maximum budget ($0.5)`로 이어졌다. 워치독은 기본 `/ready`의 캐시 200만 보고
API만 재시작하는 루프에 빠졌다. 수정: `ENGINE_READY_FAILURE_TTL_SECONDS`(기본 30초) 분리 +
`ENGINE_READY_TIMEOUT_SECONDS` 20→45초, 회귀 4건(`engine_gateway/test_ready_cache.py`).
gateway 62/62 · backend 986 passed · ruff clean.
- **운영 경계 기록**: 공개 엔진 `claude -p`는 소유자 Claude 구독을 개발 에이전트 작업과 공유한다.
대량 병렬 에이전트 실행은 공개 서비스의 생성 경로를 굶길 수 있다(이번 장애의 2차 원인).
- **공개 런타임 재승격**: detached-clean `4771b97c…c880`·tree `286723de…c1fa` 루트로 API/게이트웨이/
cloudflared를 교체하고 워치독·부트 task를 같은 루트에 SHA pin 재등록, 명시 실행 `LastTaskResult=0`.
1차 승격은 새 worktree에 gitignored `apps/api/.env`가 없어 fail-closed로 실패했다(약 4분 다운타임).
**다음 승격부터는 시작 전에 이전 루트의 `apps/api/.env`를 새 루트로 복사하라.**
- **유스케이스 TDD 캠페인**: 16테마 `uc-*.spec.ts` 239 시나리오(수집 1109 tests/61 files)를 RED 우선으로
작성했다. 제품 결함 수정 4묶음(설정 지원 티켓 작성 UI 부재, 관리자 해결 노트 입력 부재,
포커스 링 가림, 라벨/헤딩/대비/44px/오버플로 결함)과 기존 스펙 드리프트 교정을 닫았다.
증거: `docs/ops/evidence/usecase-tdd-2026-08-18.json`.
- **직렬 게이트(e2e:single-run) 후속**: 11:10 KST 실행은 52 passed/5 failed/4 skipped. 삼각화 결과
breakpoint-sweep 실패는 `widthsFor` 솎아내기가 실기기 대표 폭을 탈락시키는 테스트 결함(교정 후 passed),
kb-source-packs 500은 수정 커밋 이전에 기동한 낡은 dev API(:8000) 프로세스가 원인(재기동 후 passed),
voice-success·session-persistence 실패는 Claude 구독 세션 한도(resets 3pm)로 엔진 502가 난 환경 결함.
교사 재평가 2건은 엔진 가용 게이트가 skip 처리하며 **15:00 KST 리셋 후 재검증이 열려 있다**.
### 이 문서가 인계된 정확한 중단점
- G8 clean-head execute는 격리 NAS preview만 변경했고 공개 API/DB·물리 마이크는 건드리지 않았다. source HEAD/tree와