회기 원장 상태 복원 보강

This commit is contained in:
Yun Chan 2026-08-10 00:52:27 +09:00
parent 13d1c39a33
commit 9a7dd98cb6
7 changed files with 101 additions and 32 deletions

View file

@ -281,8 +281,10 @@ NAS-origin 112건은 전부 실 API/DB 회기가 아니다. release receipt는 `
`scripts/run-periodic-learner-e2e.py --execute`가 전용 disposable engine/DB/API/Web에서만 실행한다.
이 runner는 clean HEAD/tree, 로컬 npipe Docker, loopback 동적 포트, sentinel과 exact cleanup을 강제하며
공개 8001·DB 55432·engine 9099와 NAS를 구조적으로 거부한다. 최초 세 full run은 SSE 응답 body 재읽기,
durable turn 전 종료, 닫히지 않는 SSE의 `response.finished()` 대기를 각각 fail-closed로 검출했고 자원 잔여는 매번 0이었다.
현재 계약은 `GET /sessions/{id}`의 durable turn 2개 poll만 완료 신호로 사용한다. 첫 GREEN receipt 전에는 스케줄 등록하지 않는다.
durable turn 전 종료, 닫히지 않는 SSE의 `response.finished()` 대기를 각각 fail-closed로 검출했다. 4차는 앞선 hang을 제거해
6.3분에 G4 원장 0→1까지 진행한 뒤 full reload가 persisted episode를 UI에 hydrate하지 못하는 제품 결함을 검출했다.
네 실행 모두 보호 runtime 접촉 0·자원 잔여 0이다. 현재 UI는 session+prescription episode를 `현재 원장 상태`로 복원하며
route fixture desktop/mobile 6/6을 통과했다. 첫 GREEN receipt 전에는 full runner를 스케줄 등록하지 않는다.
- **병렬 시나리오**: 166 tests (desktop 83 + mobile 83)
- **`@single-run` 직렬 시나리오**: 49 tests (DB 영속화·세션 MVP·음성 성공경로·인증 시각 테마·회기말 평가 저장·교수자 명시 재평가 저장·교수자 턴 재평가 저장·교수자 UI 평가 재시도·교수자 사용자별 분석·source pack sync·이론모드 저장·동의 철회 후 voice 차단·브라우저 stream PII 마스킹·음성 transcript 저장 실패 UI 표면화 등)