v2 프로토콜 정본·워커 판정 기록, JEV-002 대시보드·TODO·백로그, 테스트 수집 인벤토리와 아키텍처 가이드를 갱신한다.
This commit is contained in:
parent
293ff7f0ab
commit
b7bd24f016
7 changed files with 319 additions and 4 deletions
|
|
@ -304,6 +304,7 @@
|
|||
<p class="pulse-state"><b>실배포 CUA 128:</b> 카탈로그는 생성됐지만 전체 검증은 미완료다. H09(기록 검색·필터 복귀)는 SHA `1306c524`에서 PASS로 재확인했고 T18(감독·연구 drilldown)은 수정 배포 뒤에도 learner 브라우저만 있어 RED를 종결하지 않았다. 관리자와 일반 학습자 로그인에서 학습자의 `/admin`·`/teach`→`/learn` 차단, P4 추천·R09 잠금·R14 워크시트 보존을 확인했다. 순수 teacher·OFF 계정, 교수자 쓰기, 모바일과 독립 관찰자 공개 검증은 남아 있다.</p>
|
||||
<p class="pulse-state"><b>2026-09-12 비넷 UX 감사:</b> <b>DONE · 로컬 시각 검수 수용</b>. 역할별 메뉴·모바일 라벨, 학습자 정보 위계와 긴 목록, 상담 시작 버튼 겹침, 교수·관리자 표의 넘침, 설정과 약관 배치를 수정했다. 전체 레이아웃 15 passed, 마지막 관리자 폭 보정 후 2 passed, 회기 8 passed, 접근성 44개(38+6) 통과와 직접 이미지 검수를 수용했다. 상세 판정·반려 기록·실제 API와 fixture 증거 경계는 <a href="./ops/ux-audit-2026-09-12.md">감사 기록</a>에 있다. 이후 SHA <code>e8b770e4d9023238bf210b412de75dcb98bfc08e</code>는 Forgejo master에 push했고, 17:55:31 KST 배포 시작 뒤 Pages 공개 배포와 NAS web 전용 교체를 18:06 KST까지 완료했다. API·engine·DB는 유지했다. 인증 내부 UI는 401 세션 만료로 미검증이므로 전체 운영 내부 화면 GREEN이나 전체 기능 출시 완료를 뜻하지 않으며 <a href="./ops/deployment-pipeline.md">배포 현황</a>을 따른다.</p>
|
||||
<p class="pulse-state"><b>JEV-001 가상 내담자 감정 판단:</b> <b>운영 runtime 수용·품질 승격 검증 중</b>. API legacy baseline 1191 passed·1 skipped·0 failed, gateway 82 passed, web typecheck·build·API types 통과와 NAS 합성·인증 브라우저 3턴 runtime, 새로고침 6발화 복원·실제 6발화 review 요약·deep-loop 완료·DB 9축 감정 영속화를 수용했다. 공개 main JS와 health, <code>/sessions</code> CORS preflight는 200이고 Jev가 configured지만, 독립 한국어 품질 평가·성능 우위·정확도·사용자 체감 지연 개선·DONE 주장은 보류한다. 코드 기본값 <code>legacy</code>를 유지하며 SHA <code>969d9e2c3c94b4f3356defbf02bc863e1c8e30e1</code>와 API image를 적용했다. 배포 중 일시 502가 있어 무중단을 주장하지 않으며, 상세 수용/반려와 다음 게이트는 <a href="./decisions/jev-client-affect.md">Jev 결정문</a>을 따른다. 2026-09-23 <a href="./ops/evidence/jev-runtime-verification-2026-09-23.json">runtime 재검증 영수증</a>은 소스 4개 hash 일치·과거 DB/audit 교집합·독립 공유 adapter의 9축 호출을 수용하되, 한국어 품질·전체 지연·품질 승격을 증명하지 않는다.</p>
|
||||
<p class="pulse-state"><b>JEV-002 내담자 평가·표현 v2와 속마음 공개:</b> <b>로컬 구현 수용 · 운영 미배포</b>. v1 점검에서 Jev의 이번 발화 반응이 관성 전이에 눌려 생성 지시에 거의 닿지 않고(공감 반영의 신뢰 0.24→0.41 판단이 전이 뒤 0.27로 지시문에서 누락), 상담자 발화 판정과 느낀 것/드러낸 것의 구분이 없으며 카드의 <code>ccd.coping_strategy</code>가 Jev에 전달되지 않음을 확인했다. 과정연구·감정 평가이론·LLM 가상 내담자·수련 RCT를 원문 대조해 20문항 A(발화 판정)·B(감정)·C(표현) 질문 세트, 감쇠 없는 이번 턴 반응과 비대칭 기분 전이, 개방도 게이트, 속마음 요약(migration 24, AI 경로 차단 RLS)과 회기 중 "속마음 보기"(기본 켜짐)·회기 후 리뷰·관리자 v2 표시를 구현했다. 실 Jev 16/16(판단 p50 231ms·p95 336ms), 실 PostgreSQL RLS 15항목, API 1254 passed·사전 실패 1, gateway 82, web typecheck·build·API types·design SSOT, 실 스택 session-layout 8/8을 수용했다. 실제 파이프라인의 Jev v2 판단(508ms)은 확인했지만 로컬 생성 엔진 <code>claude_cli</code>가 90초 시간 초과(기존 경로도 동일)라 v2 지시가 실제 대사에 미치는 영향은 아직 관측하지 못했다. 한국어 판정 정확도·전문가 보정·운영 배포(migration 24 선적용)가 남으며 상세는 <a href="./decisions/jev-client-affect-v2.md">v2 프로토콜</a>을 따른다.</p>
|
||||
<p class="pulse-state"><b>ADMIN-AFFECT-001 관리자 감정 관측:</b> <b>DONE · 운영 수용</b>. backend trace/API와 격리 PostgreSQL RLS·cascade·원자적 성공·rollback, canonical artifact 기술 6/6, migration 23 운영 적용(RLS 2개 정책·grants·기존 행 0), API commit <code>6ab40ff3</code> health, Pages commit <code>29d5b6c5</code>의 공개 index/AdminAffect JS/CSS·기존 사용자 bundle 200, web focused 16개, dark/mobile/추이/관계 캡처, 인증 CUA의 새로고침 뒤 종료 회기 trace 1개·9축·5단계 분포 복원과 리뷰 평가를 수용했다. NAS web은 image <code>sha256:30cffa81…ec245b8</code>, entry <code>index-hrsPsc6h.js</code>, AdminAffect <code>AdminAffect-CXdULwAE.js</code>로 build·컨테이너 교체 exit 0이며 API·engine·DB 컨테이너는 유지됐다. 실제 1턴 관계 표시는 데이터 부족이고 fixture 5개 이상 관계 계산 검증과 구분한다. watchdog은 공통 root marker 누락을 한 차례 반려한 뒤 보완해 고정 수용했다. 관리자 layout 3개와 session-layout desktop/mobile 각 4개는 통과했지만 전체 layout-visual-gate는 15개 중 1 passed·1 failed·13 not run이다. 720px prestart <code>회기 시작</code> ancestor clip은 baseline <code>d22cd988</code>과 현재 작업트리에서 같아 감정 관측 기능 원인으로 단정하지 않는다. <a href="./ops/evidence/admin-affect-runtime-2026-09-23.json">운영 영수증</a>을 따른다.</p>
|
||||
<p class="pulse-state"><b>G6-PRODUCER-CONFLICT:</b> API 기동 중 기존 background 연구 producer의 <code>SupervisionResearchConflictError</code> 1건을 관측했다. Jev·세션 경로와 분리됐고 이번 배포 diff에 producer·store 변경이 없어 배포 회귀로 단정하지 않는다. 다음은 기존 submission id/content hash의 읽기 전용 대조, idempotency 충돌 해소, 해당 테스트와 실제 cycle 성공이다.</p>
|
||||
<p class="pulse-state"><b>ADMIN-OPENROUTER-001:</b> <b>API/web 복구·배포 수용 · OAuth finish 대기</b>. 관리자 OpenRouter 복구의 SQL 수정은 실제 PostgreSQL 임시 테이블 rollback으로 확인했고 API 1173 passed·1 skipped·0 failed, 웹 정적 검증과 focused 선택 16개도 통과했다. NAS web·Pages 배포, public HTML/entry와 health 200, 이전 자산 174개 추가 보존·수집 실패 0, 공개 관리자 UI의 ready·복구 화면 없음·<code>gpt-5.6-terra</code> 유지를 수용했다. OpenRouter UI는 미연결이며 health의 Jev <code>live_verified=false</code>는 live 검증이 아니다. 남은 조건은 새 사용자 OAuth finish 성공 관측뿐이며, 전체 GREEN은 주장하지 않는다. 상세는 <a href="./ops/evidence/admin-openrouter-recovery-2026-09-22.json">운영 영수증</a>을 따른다.</p>
|
||||
|
|
@ -1041,6 +1042,7 @@
|
|||
<div class="task-row"><div><span class="task-status s-done">DONE</span></div><div><b>프로세스 난립 정리</b><p>운영 확인용 프로세스와 로컬/Tailnet 검증용 dev 프로세스를 의도적으로 분리해 유지한다.</p></div><div><b>산출물</b><p>9099 engine, 8001 prod API, 8000/8010 dev API, 5173 web, cloudflared tunnel 1개</p></div><div><b>검증</b><p><code>Get-NetTCPConnection</code>에서 대상 포트별 listener 확인</p></div></div>
|
||||
<div class="task-row"><div><span class="task-status s-plan">GATE</span></div><div><b>한신대 공문/데이터 거버넌스 게이트 정리</b><p>SSO 클레임, 추가 축어록 수급, 미성년 원본 활용동의, 개인정보 처리방침을 P1 진입 전 외부 의존성으로 명확히 둔다. 로컬 문서 골격은 준비됐지만 한신대/데이터 steward의 written evidence는 아직 필요하다.</p></div><div><b>산출물</b><p><code>docs/ops/hanshin-data-governance-gate.md</code>, 공문 질의 항목, 동의 범위 체크리스트, SSO claim mapping 표</p></div><div><b>검증</b><p>문서 artifact 작성 완료; IRB 게이트가 아니라 데이터/SSO 게이트로 외부 증거 필요 상태 유지</p></div></div>
|
||||
<div class="task-row"><div><span class="task-status s-doing">JEV-001</span></div><div><b>Jev 감정 판단 실증과 기존 내담자 경로 반복 비교</b><p>수용: 신규 artifact 보존 갱신, API legacy baseline 1191 passed/1 skipped/0 failed, engine 82 passed, web typecheck/build/API types 통과, NAS API 배포·공개 JS/CORS preflight, 인증 브라우저 3왕복·6발화와 DB 9축 감정 영속화. 보류: 성능 우위·정확도·품질 승격과 사용자 체감 지연 개선.</p></div><div><b>산출물</b><p>runner/probe·배포 artifact는 <a href="./decisions/jev-client-affect.md">Jev 결정문</a>과 <a href="./ops/evidence/jev-production-deploy-2026-09-22.json">운영 증거</a>에서 관리한다.</p></div><div><b>검증</b><p>새로고침 뒤 6발화 복원, 종료 review의 실제 6발화 요약·deep-loop 완료와 DB 종료 상태를 확인했다. USER-LATENCY는 text display·voice onset·완료 준비의 실제 경로 분리 측정과 안전 검사 유지 최적화가 남는다. 일시 502 관측 때문에 무중단을 주장하지 않는다.</p></div></div>
|
||||
<div class="task-row"><div><span class="task-status s-doing">JEV-002</span></div><div><b>Jev 내담자 평가·표현 v2와 속마음 공개</b><p>수용: P0 가드레일 수단어 오탐("고독"·"다른 방법은") 제거, P1 20문항 질문 세트·반응/기분 분리·생성 지시 v2(1차 반려: noul 응답 필드), P2 migration 24·같은 트랜잭션 저장·세 경로 노출·리뷰(1차 반려: 교수자 cohort 누락·readiness 미등록), P3a 회기·리뷰 속마음 UI(2차 반려: 모바일 스위치 깨짐·컨트롤 바 높이 회귀), P3b 관리자 v2 표시. 보류: 실제 생성 대사 관측, 한국어 판정 정확도·전문가 보정, 운영 배포.</p></div><div><b>산출물</b><p><a href="./decisions/jev-client-affect-v2.md">v2 프로토콜</a>, <code>infra/db/init/24_client_inner_reaction.sql</code>, <code>scratch/jev/v2-appraisal-live.json</code>, <code>scratch/jev/inner-reaction-verify/</code></p></div><div><b>검증</b><p>HEAD <code>bda7ebb9</code> 대조로 full-sweep-session :644·:878·:974와 layout-visual-gate :970을 사전 실패로 분리했다. 보정 관찰: 공감 반영을 <code>a_understood</code>가 "비껴갔다"로 판정한 1건, <code>a_sore_spot</code> 고확률 선택 2/3건.</p></div></div>
|
||||
<div class="task-row"><div><span class="task-status s-doing">ADMIN-OPENROUTER-001</span></div><div><b>관리자 OpenRouter 복구의 웹 검증과 새 OAuth 재시도</b><p>수용: <code>AmbiguousColumnError</code>의 기존 refresh column 참조와 <code>EXCLUDED.extra</code>의 text 캐스트 제거(JSONB 비교)를 수정했고, 실제 PostgreSQL rollback·API 교체·보존 census를 확인했다. 웹 focused 선택 16개와 정적 검증, NAS web·Pages 배포, public entry/health 200과 관리자 UI의 ready·복구 화면 없음은 수용했다. 진행 중: 새 사용자 OAuth finish 성공 관측.</p></div><div><b>산출물</b><p><a href="./ops/evidence/admin-openrouter-recovery-2026-09-22.json">운영 영수증</a></p></div><div><b>검증</b><p>API 1173 passed·1 skipped·0 failed, focused 16 passed, health <code>ok</code>·DB/engine true. API 교체 직후 census에서 133개 테이블 중 130개 동일이며 활동 메타데이터 3개는 변했다. OpenRouter UI 미연결과 Jev <code>live_verified=false</code>는 live 검증이 아니며, OAuth finish 성공은 아직 주장하지 않는다.</p></div></div>
|
||||
<div class="task-row"><div><span class="task-status s-done">DONE</span></div><div><b>ADMIN-AFFECT-001 관리자 감정 관측 trace·그래프 운영 수용</b><p>수용: 완료 내담자 턴 trace의 공개 payload 비노출, API, 격리 PostgreSQL RLS·cascade, 성공·rollback 원자성, canonical artifact 기술 6/6, migration 23 운영 적용(RLS 2개 정책·grants·기존 행 0), API legacy baseline 1191 passed/1 skipped/0 failed와 gateway 82 passed, API 운영 health와 Pages 공개 index/AdminAffect JS/CSS·기존 사용자 bundle 200, 인증 CUA의 trace 1개·9축·5단계 분포와 새로고침 복원, NAS web build·컨테이너 교체 exit 0 및 API·engine·DB 컨테이너 유지.</p></div><div><b>산출물</b><p><a href="./decisions/jev-client-affect.md">Jev 결정문</a>, <a href="./ops/evidence/admin-affect-runtime-2026-09-23.json">운영 영수증</a>, <code>/admin/emotions</code>, <code>/admin/affect/sessions</code></p></div><div><b>검증 경계</b><p>web generate/check API types, typecheck, build, design SSOT와 focused 16개를 통과했고 dark/mobile/추이/관계 캡처 및 실제 리뷰 평가도 수용했다. 실제 1턴 관계 표시는 데이터 부족이며 fixture의 5개 이상 관계 계산 검증과 구분한다. watchdog은 한 차례 반려 뒤 root marker 보완으로 고정 수용했다. 전체 layout-visual-gate는 15개 중 1 passed·1 failed·13 not run이므로 전체 GREEN을 주장하지 않는다.</p></div></div>
|
||||
<div class="task-row"><div><span class="tag info">B1-LAYOUT-720-001</span></div><div><b>720px prestart 시작 버튼 ancestor clipping</b><p>prestart <code>회기 시작</code>의 clip(<code>left=25</code>, <code>right=695</code>)이 baseline <code>d22cd988</code>과 현재 작업트리에서 동일하다. 감정 관측 기능 원인으로 단정하지 않고 cosmetic backlog로 추적한다.</p></div><div><b>다음 행동</b><p>원인을 분리한 뒤 focused browser 재현·수정 검증을 수행한다.</p></div><div><b>검증 경계</b><p>현재 전체 layout-visual-gate는 15개 중 1 passed·1 failed·13 not run이다. 관리자 3개와 session-layout desktop/mobile 각 4개 통과가 전체 gate 통과를 대체하지 않는다.</p></div></div>
|
||||
|
|
@ -1145,7 +1147,7 @@
|
|||
<tbody>
|
||||
<tr><td>Web typecheck</td><td><code>npm run typecheck</code></td><td>Passed</td></tr>
|
||||
<tr><td>Design SSOT / auth visual</td><td><code>npm run check:design-ssot</code> / <code>npx playwright test e2e/auth-visual.spec.ts --project=chromium-single-run --reporter=line</code> / <code>npx playwright test e2e/layout-visual-gate.spec.ts --project=chromium-single-run --reporter=line</code></td><td>SSOT checker passed; login/onboarding light-dark desktop-mobile 1 passed; 14 core screens × 7 widths visual gate 14 passed.</td></tr>
|
||||
<tr><td>Full Playwright E2E baseline</td><td><code>npm run e2e:parallel</code> / <code>npm run e2e:single-run</code> / <code>npm run e2e:list</code></td><td>2026-09-22 <code>check-dev-dashboard-ssot.py</code>의 실제 수집 기준 현재 수집은 <b>1251 tests / 71 files</b>다. 이 숫자는 수집량이며 현 작업트리 전체 GREEN과 동일하지 않다. G8 clean-head release gate는 candidate 112/112와 실제 NAS-origin 112/112를 통과했다. 이전 단일 120/120과 2026-07-15의 fixture desktop/mobile 166/166 + DB/engine/provider 직렬 49/49 = 215/215는 범위가 다른 역사 기준선으로 보존한다.</td></tr>
|
||||
<tr><td>Full Playwright E2E baseline</td><td><code>npm run e2e:parallel</code> / <code>npm run e2e:single-run</code> / <code>npm run e2e:list</code></td><td>2026-09-29 <code>check-dev-dashboard-ssot.py</code>의 실제 수집 기준 현재 수집은 <b>1277 tests / 72 files</b>다. 이 숫자는 수집량이며 현 작업트리 전체 GREEN과 동일하지 않다. G8 clean-head release gate는 candidate 112/112와 실제 NAS-origin 112/112를 통과했다. 이전 단일 120/120과 2026-07-15의 fixture desktop/mobile 166/166 + DB/engine/provider 직렬 49/49 = 215/215는 범위가 다른 역사 기준선으로 보존한다.</td></tr>
|
||||
<tr><td>Refactor governance P1~P8</td><td><code>ruff check app</code> / <code>pytest -q app</code> / <code>pytest -q engine_gateway</code> / <code>npm run typecheck</code> / <code>npm run check:api-types</code> / <code>npm run check:design-ssot</code> / <code>npm run check:dead-code</code> / <code>npm run check:duplication</code> / <code>npm run build</code> / <code>npm audit --audit-level=high</code> / full Playwright</td><td>Backend 400 passed, gateway 29 passed, web gates/build/audit passed, vulnerabilities 0, production duplication 1 clone/15 lines/0.03%, Playwright 215/215 passed. 상세 근거는 <code>archive/project-cleanup-2026-09-07/refactor-governance-2026-07-15.md</code>.</td></tr>
|
||||
<tr><td>API typegen SSOT</td><td><code>npm run check:api-types</code></td><td>Passed; FastAPI OpenAPI → <code>src/lib/api.gen.ts</code> stale check</td></tr>
|
||||
<tr><td>Outcome & Alliance OS G0</td><td><code>py -3.11 -X utf8 -m pytest -p no:cacheprovider apps/api/app/test_measurement_contract.py apps/api/app/test_runtime_schema_ssot.py -q</code> / <code>scripts/check-measurement-ledger.sql</code> / measurement·API contract checks / web typecheck / DB-backed <code>session-persistence</code> focused E2E 3종</td><td>G0 contract/schema 11 passed, 기존 backend 100 passed, auth 39 passed. Python→JSON Schema→TypeScript→PostgreSQL enum·필수필드 계약이 일치하고 8개 deterministic benchmark가 검증됐다. Live PostgreSQL에서 learner/client/evaluator 가시 행 1/1/2, 교차 누수 0, append-only guard 2를 확인했다. 학습자 턴→교수자 대시보드, 워크시트 검수, 종료 deep 평가→durable 리뷰 E2E는 각각 1 passed. G0/AOS-001~004 완료.</td></tr>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue