Skip to content

fix(news): 합성 뉴스가 운영 점수 경로로 들어가는 것을 차단 (ai#22 fail-closed) - #75

Open
choigod1023 wants to merge 1 commit into
devfrom
fix/news-synthetic-fail-closed
Open

fix(news): 합성 뉴스가 운영 점수 경로로 들어가는 것을 차단 (ai#22 fail-closed)#75
choigod1023 wants to merge 1 commit into
devfrom
fix/news-synthetic-fail-closed

Conversation

@choigod1023

Copy link
Copy Markdown
Contributor

data/raw/news/news_history.csv 라는 실데이터 같은 이름의 파일이 사실은
example.test URL 을 가진 합성 96행이었다. 그것이 피처테이블 뉴스 신호 전부
차지한 채 조용히 통과했고, 그 상태로 A/B 를 돌려 "뉴스를 넣으면 WAPE 가
39.052 → 39.394 로 나빠진다" 는 결론을 낼 뻔했다. 실제로는 뉴스 신호를 평가한
적이 없었다.

  • collect_news 의 csv / sample 경로에 _guard_synthetic_news 게이트 추가.
    자리표시자 URL(sample:// test:// example.test example.com localhost)이나
    자리표시자 출처(sample synthetic dummy fixture)가 80% 이상이면 실패한다.
  • 파이프라인 동작 확인이 목적이면 NEWS_ALLOW_SYNTHETIC=true 로 명시한다.
    허용해도 경고를 남겨 산출물 출처가 로그에 드러난다.
  • 임계를 100% 가 아니라 80% 로 둔 이유: 일부 기사에 URL 이 없어 Unknown 인
    경우까지 막으면 실데이터가 걸린다. 회귀 테스트로 고정했다.

테스트 5건. 기본 차단 / 명시 허용 / 실제 URL 통과 / 소수 자리표시자 비차단 /
sample provider 도 동일 게이트.

로컬 파일도 _synthetic_pipeline_smoke.csv 로 개명했다(.gitignore 대상이라
커밋에는 없다). 이름이 실데이터처럼 보이는 것이 문제의 근원이었다.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

검증

실제 문제 파일로 확인:

차단됨: 합성/샘플 뉴스가 운영 점수 경로로 들어오려 한다
        (NEWS_DATA_PATH=data/raw/news/news_history.csv).
        96행 중 100% 가 자리표시자 URL/출처다.

NEWS_ALLOW_SYNTHETIC=true → 허용됨: 96 행 (WARNING 로그 동반)

전체 테스트 234 passed. 실패 3건(test_material_pipeline)은 본 변경 이전부터 있던 로컬 WSL bash 충돌입니다.

관련: #22 완료조건 "provider/cache 미준비 시 합성 sample이 운영 점수에 들어가지 않는 fail-closed 테스트 추가"

🤖 Generated with Claude Code

`data/raw/news/news_history.csv` 라는 실데이터 같은 이름의 파일이 사실은
example.test URL 을 가진 합성 96행이었다. 그것이 피처테이블 뉴스 신호 **전부**를
차지한 채 조용히 통과했고, 그 상태로 A/B 를 돌려 "뉴스를 넣으면 WAPE 가
39.052 → 39.394 로 나빠진다" 는 결론을 낼 뻔했다. 실제로는 뉴스 신호를 평가한
적이 없었다.

- collect_news 의 csv / sample 경로에 _guard_synthetic_news 게이트 추가.
  자리표시자 URL(sample:// test:// example.test example.com localhost)이나
  자리표시자 출처(sample synthetic dummy fixture)가 80% 이상이면 실패한다.
- 파이프라인 동작 확인이 목적이면 NEWS_ALLOW_SYNTHETIC=true 로 명시한다.
  허용해도 경고를 남겨 산출물 출처가 로그에 드러난다.
- 임계를 100% 가 아니라 80% 로 둔 이유: 일부 기사에 URL 이 없어 Unknown 인
  경우까지 막으면 실데이터가 걸린다. 회귀 테스트로 고정했다.

테스트 5건. 기본 차단 / 명시 허용 / 실제 URL 통과 / 소수 자리표시자 비차단 /
sample provider 도 동일 게이트.

로컬 파일도 _synthetic_pipeline_smoke.csv 로 개명했다(.gitignore 대상이라
커밋에는 없다). 이름이 실데이터처럼 보이는 것이 문제의 근원이었다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant