feat(runpod): V63 실행 프로필 및 평가 자료 추가 - #4
Closed
spark142857142857 wants to merge 22 commits into
Closed
spark142857142857 wants to merge 22 commits into
spark142857142857 wants to merge 22 commits into
Conversation
Add trim_v10 on the committed V3 guards and support path while keeping baseline as the default. Exclude the uncommitted V4-V9 experiments. Preserve the 600-result evaluation and blank blinded review packets, including the mixed latency results and known regressions. Verify the isolated source with 149 tests and 48 equivalent request/response contracts.
Add guarded100 results, stage traces, open content issues, and blank review packets. Preserve evidence bytes and SHA-256 values; do not enable the experimental runtime profile.
Retain the development98/100 result alongside the additional60 comparison showing three regressions. Include original responses and nonblind review explaining why V25 was not selected.
Preserve the historical97/100 result and the frozen-source excerpt showing the non-JSON recheck. Mark the experiment noncompliant and unadopted. Include original results and blank review packets.
Record strict-JSON98/100 validation, the latency tradeoff, preserved known60 responses, and the post-freeze12-case diagnostic. Separate action agreement from content safety and independent review.
Follow the V3 report structure with clear Korean spacing, result tables, separated findings and limits, and linked artifacts. Rewrite the supporting review guidance and refresh document hashes while preserving all raw evaluation evidence.
Follow the V3 report structure with clear Korean spacing, result tables, separated findings and limits, and linked artifacts. Rewrite the supporting review guidance and refresh document hashes while preserving all raw evaluation evidence.
Follow the V3 report structure with clear Korean spacing, result tables, separated findings and limits, and linked artifacts. Rewrite the supporting review guidance and refresh document hashes while preserving all raw evaluation evidence.
Follow the V3 report structure with clear Korean spacing, result tables, separated findings and limits, and linked artifacts. Rewrite the supporting review guidance and refresh document hashes while preserving all raw evaluation evidence.
There was a problem hiding this comment.
🟢 Approval recommended
실행 프로필/메시지/서비스 분리가 테스트(계약/trace/quality_experiment 전달)로 뒷받침되고, 변경이 기본값(baseline) 및 제품 API 자동 적용을 건드리지 않도록 제한돼 있습니다.
Pull request overview
Runpod 평가 런타임에서 V10·V16·V25·V50·V63(legacy_harm_v63) 선택 실행 프로필을 재현 가능하게 정리하고, V63 관련 검토/재현 문서 및 평가 근거(artifacts)를 추가합니다. 또한 모델 호출 흐름을 profiles.py(설정) / messages.py(프롬프트 구성) / service.py(호출·판정·fallback)로 분리하고, 단계별 trace(옵션)를 실험/평가 도구로 전달·검증할 수 있게 합니다.
Changes:
- 선택 프로필(12개) 구성을
profiles.py로 명시화하고, 메시지 구성(messages.py)과 서비스 라우팅(service.py)을 분리 --trace-stages옵션을 quality_experiment까지 전달하고, stage trace 증거(stage-traces.jsonl) 무결성/쌍/턴 검증 추가- V63 검토/실행 안내 및 버전별 평가 자료(artifacts) 추가, artifacts는 Ruff 린트 대상에서 제외
File summaries
| File | Description |
|---|---|
| README.md | V63 공개/실행 안내 링크 및 최신 측정 요약 추가, --trace-stages 설명 보강 |
| runpod/V63_REVIEW.md | V63 코드 검토 포인트/흐름/한계 및 근거 링크 정리 |
| runpod/pyproject.toml | Ruff에서 **/artifacts/** 제외(증거용 산출물 린트 비대상) |
| runpod/operations/quality_experiment.py | --trace-stages 전달 및 stage trace 증거 검증(verify_stage_traces) 추가 |
| runpod/inference/trace.py | 프롬프트/답변 비저장 원칙의 단계별 측정(시간/토큰/상태) 구조 추가 |
| runpod/inference/telemetry.py | ContextVar 기반(요청 스코프) 토큰/길이/finish_reason 기록 유틸 추가 |
| runpod/inference/provider.py | 모델 응답에서 usage/finish_reason 기반 메트릭 기록 훅 추가 |
| runpod/inference/profiles.py | 공개 프로필 12개를 명시적 ProfileSpec으로 정의(상속 관계 포함) |
| runpod/inference/messages.py | 입력/재검사/생성/출력검사 메시지 구성 로직 분리 및 고정 계약 보존 |
| runpod/inference/service.py | 모델 호출 순서/판정 적용/fallback/오류 단계 및 trace 연동 정리(분리된 메시지/프로필 사용) |
| runpod/inference/legacy_profiles.py | V50 비JSON 재검사 규약을 과거 재현용으로 분리 |
| runpod/inference/behavior.py | BehaviorProfile Literal 확장 및 TRIM_V10 지침 추가 |
| runpod/inference/selected_profiles.py | 선택 후보 고정 예시 그룹(의미별 이름) 및 메시지 생성 유틸 추가 |
| runpod/tests/test_selected_profiles.py | 선택 프로필 라우팅/오류 계약 해시 고정 및 baseline 기본값 보존 테스트 추가 |
| runpod/tests/selected_contract_helpers.py | 선택 프로필 계약 테스트용 케이스/모의 Provider/trace snapshot 헬퍼 추가 |
| runpod/tests/test_quality_experiment.py | trace_stages 전달 검증 테스트 추가 |
| runpod/tests/test_behavior_v10.py | V10이 V3 라우팅/가드 계약을 유지하는 요청-계약 테스트 추가 |
| runpod/artifacts/README.md | 버전별 주요 후보 비교 표 및 근거/한계 설명 추가 |
| runpod/artifacts/phase3-v63-relationship-diagnostic-20260918/verification.json | 관계 유형 진단 검증 요약(시나리오/턴/해시 검증) 추가 |
| runpod/artifacts/phase3-v63-relationship-diagnostic-20260918/summary.json | 관계 유형 진단 집계 결과 추가 |
| runpod/artifacts/phase3-v63-relationship-diagnostic-20260918/source.py | 관계 유형 진단 동결 드라이버(런타임 변경 없음) 추가 |
| runpod/artifacts/phase3-v63-relationship-diagnostic-20260918/receipt.json | 진단 소스/데이터/런타임 파일 해시 영수증 추가 |
| runpod/artifacts/phase3-v63-relationship-diagnostic-20260918/PLAN.md | 관계 유형 진단 실행 전 고정 계획 문서 추가 |
| runpod/artifacts/phase3-v63-relationship-diagnostic-20260918/driver.log | 진단 실행 로그 추가 |
| runpod/artifacts/phase3-v63-relationship-diagnostic-20260918/backup-receipt.json | 최종 zip 백업 경로/해시 영수증 추가 |
| runpod/artifacts/phase3-v63-relationship-diagnostic-20260918/.gitattributes | 증거 바이트(특히 CRLF) 보존 규칙 추가 |
| runpod/artifacts/phase3-v63-full-20260918/verification.json | V63 full 평가 검증 요약 추가 |
| runpod/artifacts/phase3-v63-full-20260918/shadow-input/verification.json | 입력 경계 진단 검증 결과 추가 |
| runpod/artifacts/phase3-v63-full-20260918/shadow-input/README.md | 입력 경계 진단 설명 문서 추가 |
| runpod/artifacts/phase3-v63-full-20260918/shadow-input/diagnostic-receipt.json | 입력 진단 산출물 해시 영수증 추가 |
| runpod/artifacts/phase3-v63-full-20260918/review/README.md | V63 검수 자료(평가표 미작성) 안내 추가 |
| runpod/artifacts/phase3-v63-full-20260918/results/summary.json | V63 결과 요약(모드/연령별) 추가 |
| runpod/artifacts/phase3-v63-full-20260918/results/policy.json | 평가에 사용된 정책 JSON 스냅샷 추가 |
| runpod/artifacts/phase3-v63-full-20260918/results/gpu-environment.json | GPU/서빙 커맨드 환경 기록 추가 |
| runpod/artifacts/phase3-v63-full-20260918/REPRODUCE.md | V63 재현 실행 안내 추가 |
| runpod/artifacts/phase3-v63-full-20260918/protocol-verification.json | 프로토콜/요청 해시 검증 요약 추가 |
| runpod/artifacts/phase3-v63-full-20260918/full-verification.json | full100 비교 검증 결과 추가 |
| runpod/artifacts/phase3-v63-full-20260918/content-review.md | V63 비블라인드 내용 검토 요약 추가 |
| runpod/artifacts/phase3-v63-full-20260918/content-review.json | 내용 검토 메타/진술 JSON 추가 |
| runpod/artifacts/phase3-v63-full-20260918/.gitattributes | 평가 바이트 보존 규칙 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/verification.json | baseline 대비 p95 비율 검증 결과 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/legacy_harm_v63/20260918T054500Z-kanana-bfd25804/summary.json | warmup(V63) 요약 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/legacy_harm_v63/20260918T054500Z-kanana-bfd25804/stage-traces.jsonl | warmup(V63) stage trace 원본 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/legacy_harm_v63/20260918T054500Z-kanana-bfd25804/review.csv | warmup(V63) 빈 검수표 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/legacy_harm_v63/20260918T054500Z-kanana-bfd25804/results.jsonl | warmup(V63) 결과 원본 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/legacy_harm_v63/20260918T054500Z-kanana-bfd25804/policy.json | warmup(V63) 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/legacy_harm_v63/20260918T054500Z-kanana-bfd25804/metadata.json | warmup(V63) 메타데이터 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/legacy_harm_v63/20260918T054500Z-kanana-bfd25804/dataset.jsonl | warmup(V63) 데이터 스냅샷 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/baseline/20260918T054454Z-kanana-066ebf7f/summary.json | warmup(baseline) 요약 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/baseline/20260918T054454Z-kanana-066ebf7f/stage-traces.jsonl | warmup(baseline) stage trace 원본 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/baseline/20260918T054454Z-kanana-066ebf7f/review.csv | warmup(baseline) 빈 검수표 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/baseline/20260918T054454Z-kanana-066ebf7f/results.jsonl | warmup(baseline) 결과 원본 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/baseline/20260918T054454Z-kanana-066ebf7f/policy.json | warmup(baseline) 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/baseline/20260918T054454Z-kanana-066ebf7f/metadata.json | warmup(baseline) 메타데이터 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/warmup/baseline/20260918T054454Z-kanana-066ebf7f/dataset.jsonl | warmup(baseline) 데이터 스냅샷 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/receipt.json | baseline ratio 실행 영수증 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/gpu-environment.json | baseline ratio GPU 환경 기록 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/full100/legacy_harm_v63/20260918T054737Z-kanana-d2ffa3cd/summary.json | full100(V63) 요약 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/full100/legacy_harm_v63/20260918T054737Z-kanana-d2ffa3cd/policy.json | full100(V63) 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/full100/baseline/20260918T054506Z-kanana-f09945af/summary.json | full100(baseline) 요약 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/full100/baseline/20260918T054506Z-kanana-f09945af/policy.json | full100(baseline) 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/driver.py | baseline ratio 실행 드라이버(검증 포함) 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/attempt01/state.json | 1차 시도 실패 상태 기록 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/attempt01/receipt.json | 1차 시도 영수증 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/attempt01/driver.py | 1차 시도 드라이버 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results/attempt01/driver.log | 1차 시도 실패 로그(pip 없음) 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/results-receipt.json | results zip 최종 영수증 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/receipt.json | 상위 영수증 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/legacy_harm_v63-stage-totals.json | V63 단계별 누적 시간/토큰 합계 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/baseline-stage-totals.json | baseline 단계별 누적 시간/토큰 합계 추가 |
| runpod/artifacts/phase3-v63-baseline-ratio-20260918/.gitattributes | 증거 바이트 보존 규칙 추가 |
| runpod/artifacts/phase3-v50-full-20260918/verification.json | V50 평가 검증 요약 추가 |
| runpod/artifacts/phase3-v50-full-20260918/review/README.md | V50 검수 자료 안내 추가 |
| runpod/artifacts/phase3-v50-full-20260918/results/summary.json | V50 결과 요약 추가 |
| runpod/artifacts/phase3-v50-full-20260918/results/policy.json | V50 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v50-full-20260918/results/gpu-environment.json | V50 GPU 환경 기록 추가 |
| runpod/artifacts/phase3-v50-full-20260918/REPRODUCE.md | V50 재현 안내(비JSON 재검사 실험임을 명시) 추가 |
| runpod/artifacts/phase3-v50-full-20260918/PROTOCOL_AUDIT.md | V50 비JSON 재검사 규약 위반 근거 문서 추가 |
| runpod/artifacts/phase3-v50-full-20260918/full100/harm_audit_v50/20260918T025438Z-kanana-833527d6/summary.json | V50 full100 요약 추가 |
| runpod/artifacts/phase3-v50-full-20260918/full100/harm_audit_v50/20260918T025438Z-kanana-833527d6/policy.json | V50 full100 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v50-full-20260918/full-verification.json | V50 full 검증 결과 추가 |
| runpod/artifacts/phase3-v50-full-20260918/content-review.json | V50 내용 검토 메타 JSON 추가 |
| runpod/artifacts/phase3-v50-full-20260918/.gitattributes | 평가 바이트 보존 규칙 추가 |
| runpod/artifacts/phase3-v25-full-20260918/verification.json | V25 평가 검증 요약 추가 |
| runpod/artifacts/phase3-v25-full-20260918/review/README.md | V25 검수 자료 안내 추가 |
| runpod/artifacts/phase3-v25-full-20260918/results/summary.json | V25 결과 요약 추가 |
| runpod/artifacts/phase3-v25-full-20260918/results/policy.json | V25 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v25-full-20260918/results/gpu-environment.json | V25 GPU 환경 기록 추가 |
| runpod/artifacts/phase3-v25-full-20260918/REPRODUCE.md | V25 재현 안내 추가 |
| runpod/artifacts/phase3-v25-full-20260918/generalization60/results/summary.json | V25 추가 60문항 결과 요약 추가 |
| runpod/artifacts/phase3-v25-full-20260918/generalization60/results/policy.json | V25 추가 60문항 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v25-full-20260918/generalization60/results/gpu-environment.json | V25 추가 60문항 GPU 환경 기록 추가 |
| runpod/artifacts/phase3-v25-full-20260918/generalization60/README.md | V25 추가 60문항 해석/한계 문서 추가 |
| runpod/artifacts/phase3-v25-full-20260918/full100/boundary_v25/20260918T001747Z-kanana-0c7e4287/summary.json | V25 full100 요약 추가 |
| runpod/artifacts/phase3-v25-full-20260918/full100/boundary_v25/20260918T001747Z-kanana-0c7e4287/policy.json | V25 full100 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v25-full-20260918/full100-verification.json | V25 full100 검증 요약 추가 |
| runpod/artifacts/phase3-v25-full-20260918/.gitattributes | 평가 바이트 보존 규칙 추가 |
| runpod/artifacts/phase3-v16-full-20260918/verification.json | V16 평가 검증 요약 추가 |
| runpod/artifacts/phase3-v16-full-20260918/review/README.md | V16 검수 자료 안내 추가 |
| runpod/artifacts/phase3-v16-full-20260918/results/summary.json | V16 결과 요약 추가 |
| runpod/artifacts/phase3-v16-full-20260918/results/policy.json | V16 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v16-full-20260918/results/output-diagnostic/metadata.json | 출력 진단 메타데이터 추가 |
| runpod/artifacts/phase3-v16-full-20260918/results/gpu-environment.json | V16 GPU 환경 기록 추가 |
| runpod/artifacts/phase3-v16-full-20260918/REPRODUCE.md | V16 재현 안내 추가 |
| runpod/artifacts/phase3-v16-full-20260918/full100/output_v16/20260917T232318Z-kanana-aa95fd77/summary.json | V16 full100 요약 추가 |
| runpod/artifacts/phase3-v16-full-20260918/full100/output_v16/20260917T232318Z-kanana-aa95fd77/policy.json | V16 full100 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v16-full-20260918/full100-verification.json | V16 full100 검증 요약 추가 |
| runpod/artifacts/phase3-v16-full-20260918/content-open-issues.md | V16 내용 미해결 이슈 기록 추가 |
| runpod/artifacts/phase3-v16-full-20260918/.gitattributes | 평가 바이트 보존 규칙 추가 |
| runpod/artifacts/phase3-v10-full-20260917/review/README.md | V10 전체 평가 검수 자료 안내 추가 |
| runpod/artifacts/phase3-v10-full-20260917/gpu/gpu-environment.json | V10 GPU 환경 기록 추가 |
| runpod/artifacts/phase3-v10-full-20260917/evidence/state.json | V10 실행 상태 기록 추가 |
| runpod/artifacts/phase3-v10-full-20260917/evidence/restart-failure.json | 재시작 실패 근거 추가 |
| runpod/artifacts/phase3-v10-full-20260917/evidence/pods-after.json | pods 스냅샷 추가 |
| runpod/artifacts/phase3-v10-full-20260917/evidence/pod-session.json | pod 세션 기록 추가 |
| runpod/artifacts/phase3-v10-full-20260917/evidence/model-download.json | 모델 스냅샷/해시 기록 추가 |
| runpod/artifacts/phase3-v10-full-20260917/evidence/inventory-delta.json | inventory delta 기록 추가 |
| runpod/artifacts/phase3-v10-full-20260917/evidence/backup-receipt.json | 백업 영수증 추가 |
| runpod/artifacts/phase3-v10-full-20260917/comparison/trim_v10/20260917T150613Z-kanana-5b9ad1c0/summary.json | trim_v10 비교 요약 추가 |
| runpod/artifacts/phase3-v10-full-20260917/comparison/trim_v10/20260917T150613Z-kanana-5b9ad1c0/policy.json | trim_v10 비교 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v10-full-20260917/comparison/safety_v3/20260917T145751Z-kanana-8a022fbd/summary.json | safety_v3 비교 요약 추가 |
| runpod/artifacts/phase3-v10-full-20260917/comparison/safety_v3/20260917T145751Z-kanana-8a022fbd/policy.json | safety_v3 비교 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v10-full-20260917/comparison/experiment.json | 비교 실험 manifest 추가 |
| runpod/artifacts/phase3-v10-full-20260917/comparison/baseline/20260917T145109Z-kanana-58988a9c/summary.json | baseline 비교 요약 추가 |
| runpod/artifacts/phase3-v10-full-20260917/comparison/baseline/20260917T145109Z-kanana-58988a9c/policy.json | baseline 비교 정책 스냅샷 추가 |
| runpod/artifacts/phase3-v10-full-20260917/commit-isolation.json | 격리/동등성 검증 기록 추가 |
| runpod/artifacts/phase3-v10-full-20260917/.gitattributes | 증거 바이트 보존 규칙 추가 |
| runpod/artifacts/phase3-stage-diagnosis-20260917/safety_v3-run/summary.json | 단계별 진단(safety_v3) 요약 추가 |
| runpod/artifacts/phase3-stage-diagnosis-20260917/safety_v3-run/policy.json | 단계별 진단 정책 스냅샷 추가 |
| runpod/artifacts/phase3-stage-diagnosis-20260917/repeatability/summary.json | 반복성 진단 요약 추가 |
| runpod/artifacts/phase3-stage-diagnosis-20260917/repeatability/launch-record.json | 반복성 진단 실행 환경 기록 추가 |
| runpod/artifacts/phase3-stage-diagnosis-20260917/output-replay/source/policy.json | output replay용 정책 스냅샷 추가 |
| runpod/artifacts/phase3-stage-diagnosis-20260917/output-replay-source/source/policy.json | output replay source 정책 스냅샷 추가 |
| runpod/artifacts/phase3-stage-diagnosis-20260917/gpu/gpu-environment.json | 단계별 진단 GPU 환경 기록 추가 |
| runpod/artifacts/phase3-stage-diagnosis-20260917/experiment.json | 단계별 진단 experiment manifest 추가 |
| runpod/artifacts/phase3-stage-diagnosis-20260917/baseline-run/summary.json | 단계별 진단(baseline) 요약 추가 |
| runpod/artifacts/phase3-stage-diagnosis-20260917/baseline-run/policy.json | 단계별 진단(baseline) 정책 스냅샷 추가 |
Review details
- Files reviewed: 81/310 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
변경
profiles.py/messages.py/service.py→ 버전 설정 / 메시지 구성 / 모델 호출 흐름 분리legacy_profiles.py로 분리main반영, 서비스 기본값baseline유지, 제품 API 자동 적용 없음흐름
입력 검사 →
allow시 JSON 재검사 → 일반·지원 답변 생성 → 출력 검사 → 응답redirect·clarify판정 → 기존 안내문 반환 / 출력 차단 → 안전 안내문 반환확인
078·097