상태판·가이드와 검증 증거를 동기화
Some checks failed
API contract / OpenAPI type drift (push) Failing after 1m17s

This commit is contained in:
Yun Chan 2026-09-01 11:45:27 +09:00
parent d6d9dc5f61
commit ed3252ede0
23 changed files with 197 additions and 29 deletions

View file

@ -0,0 +1,62 @@
{
"$schema": "evidence/v1",
"id": "public-domain-readonly-browser-2026-08-31",
"title": "public 도메인 읽기 전용 브라우저 폐루프 실측 (production, 이 PC와 분리 확인)",
"date": "2026-08-31",
"operator": "agent (read-only, production DB 미접촉)",
"scope": "읽기 전용. 사용자 계정 로그인/회기·턴 생성(production DB mutation) 없음. 배포·설정 변경 없음.",
"targets": {
"public_web": "https://vignette.chanpaca.net/login",
"public_api": "https://api-vignette.chanpaca.net"
},
"method": "Playwright 1.61.1 chromium (desktop 1440x900 / mobile 390x844) + curl/HTTP 실측",
"evidence": {
"playingwright_public_login_spec": {
"spec": "e2e/auth.spec.ts :: keeps the public login screen on real Google OAuth only",
"result": "1 passed (9.1s)",
"verified": [
"GET api-vignette.chanpaca.net/auth/config -> google_oauth_configured=true, dev_login_enabled=false, allowed_email_domains=[]",
"vignette.chanpaca.net/login -> Google 로그인 버튼(.lg-obtn) 1개, dev 로그인 요소 0, 'Google OAuth is not configured' 없음",
"Google 버튼 클릭 -> accounts.google.com 이동, client_id 포함",
"redirect_uri=https%3A%2F%2Fapi-vignette.chanpaca.net%2Fauth%2Fcallback"
]
},
"production_render_probe": {
"desktop_mobile_http": [200, 200],
"has_google_button": true,
"title": "Vignette · 상담 시뮬레이션",
"heading": "실제 계정으로 들어가고, 실제 회기만 남깁니다.",
"has_logo": true,
"has_error_text_fallback": false,
"console_page_errors_beyond_expected_auth": [],
"only_401": {
"request": "GET https://api-vignette.chanpaca.net/auth/me",
"reason": "비로그인 방문자 조회로 반환되는 정상 인증 경계 401 (로그인 페이지가 미인증 상태를 판별해 Google 버튼 표시)"
}
},
"public_api_health_x3": [
"200 status=ok environment=prod db=true engine=true engine_mode=openai"
],
"serving_identity": {
"dns": ["104.21.33.204", "172.67.149.131", "2606:4700:3030::6815:21cc", "2606:4700:3030::ac43:9583"],
"header_server": "cloudflare",
"cf_ray": "a33aa06b4c5ee9e1-LAX",
"conclusion": "이 PC가 아닌 별도 호스트(Cloudflare 뒤)가 서빙. 이 PC에는 cloudflared 프로세스 없음(확인) -> 이 PC와 정식 분리 운영"
},
"this_pc_state": {
"cloudflared_process": "absent",
"local_api_8001_listener": "absent",
"scheduledTasks": { "VignettePublicRuntime": "Disabled", "VignettePublicRuntimeWatchdog": "Disabled" },
"containers": "vignette-dev-db (up, 55432)",
"note": "개발 워크스테이션 (과거 자택 public 호스트 경로의 잔여 상태). 이 PC 로컬 상태는 public 도메인 장애가 아님."
}
},
"conclusion": {
"closed_readonly": "public 도메인(production)은 별도 호스트에서 정상 서빙 중. 실브라우저 로그인 화면·Google OAuth redirect_uri·개발 로그인 차단이 읽기 전용으로 실증됨. 이 PC와 정식 분리 운영이 실측으로 확인됨.",
"open_gate": "실제 Google 계정 로그인 -> 인증 callback -> 관리자/P20 실제 회기·턴 생성(production DB mutation)은 사용자(소유자) 승인과 계정 세션(storageState)이 필요해 여전히 열린 게이트. production DB mutation 없이는 read-only로는 증명 불가."
},
"screen_captures": [
"apps/web/node_modules/.tmp/public-login-desktop.png",
"apps/web/node_modules/.tmp/public-login-mobile.png"
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 709 KiB

After

Width:  |  Height:  |  Size: 403 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 KiB

After

Width:  |  Height:  |  Size: 655 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 760 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 912 KiB

After

Width:  |  Height:  |  Size: 483 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 873 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 527 KiB

After

Width:  |  Height:  |  Size: 362 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 810 KiB

After

Width:  |  Height:  |  Size: 696 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 982 KiB

After

Width:  |  Height:  |  Size: 574 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 944 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 KiB

After

Width:  |  Height:  |  Size: 286 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 631 KiB

After

Width:  |  Height:  |  Size: 396 KiB

Before After
Before After