Skip to content

[release] develop → main — RCA 진단 정확도 개선(#993) + README·랜딩 UI - #1003

Merged
sebeeeen merged 4 commits into
mainfrom
develop
Jun 22, 2026
Merged

[release] develop → main — RCA 진단 정확도 개선(#993) + README·랜딩 UI#1003
sebeeeen merged 4 commits into
mainfrom
develop

Conversation

@sebeeeen

Copy link
Copy Markdown
Member

배포 내용

develop의 검증 완료 변경을 main으로 릴리스한다.

  1. #993 RCA 진단 정확도 개선: 증거 신호 추출 모듈 신설, 정상 관측이 장애로 승격되는 오탐 차단(schema·config·duplicate·lag·auth·connector 전 계열), 라벨 누설 전 경로 차단, 구분 강화
  2. #999 README 최신화
  3. #996 랜딩 UI 콘솔 캡처 교체

검증

  1. 전체 pytest 719 passed
  2. 독립 교차검증 4라운드 + 배포 게이트 통과(하드코딩·gitops·회귀·롤백)
  3. 신규 env 없음, gitops values 변경 불필요(이미지 재빌드로 반영)

배포·롤백

  1. main 머지 후 Jenkins/Kaniko 이미지 빌드, gitops tag bump, ArgoCD 동기화
  2. 롤백은 이전 이미지 태그로 되돌리기

한계

  1. RCA campaign 100%는 oracle incident-type 기반(floor 65.7~71.4%), 실제 라이브 정확도는 배포 후 재측정으로 확인 필요
  2. ECE는 baseline보다 높아 후속 calibration 과제

hwnnn and others added 4 commits June 22, 2026 16:33
* #996 [chore] 랜딩 서비스 UI 이미지를 실제 콘솔 캡처로 교체

- 로그인 버튼 아래 ConsoleShot 프리뷰를 데모팀 실제 콘솔 캡처로 교체:
  파이프라인 목록(orders-cdc CDC, payments-eda EDA) + AI 채팅에 파이프라인 생성 명령 입력 화면.
- landing-pipelines.png 교체, img width/height를 새 캡처 치수(3360x1840)에 맞춤, alt 갱신.
- 로컬 렌더 검증 완료(랜딩 히어로 정상 표시).

* #996 [chore] 랜딩 이미지를 사용자 제공 콘솔 캡처(브라우저 크롬 크롭)로 교체

- 사용자 제공 화면(demo-team 파이프라인 + AI 채팅 '인시던트 목록 조회' 카드)에서
  상단 브라우저 크롬(URL 바 및 위)을 잘라 서비스 화면만 남김(2032x440).
- landing-pipelines.png 교체, img width/height 2032x440으로 맞춤.
- 로컬 렌더 검증 완료.

* #996 [chore] 랜딩 이미지 윈도우 타이트 크롭 — 검은 여백·브라우저 크롬 제거

- 사용자 제공 화면의 서비스 콘텐츠 bbox(검은 데스크톱 여백 제외)로 타이트 크롭 +
  상단 브라우저 크롬 제거 → 서비스 화면만 edge-to-edge(1920x435).
- 내용: demo-team 파이프라인 + AI 채팅 인시던트 목록 조회 카드.
- img width/height 1920x435로 맞춤. 로컬 렌더 검증 완료.
#999 [docs] README 최신화 — SaaS 형식 프로젝트 소개 + 팀 R&R

- 현행 프로젝트(Bifrost)에 맞게 재작성: 개요·핵심기능·아키텍처·기술스택·빠른시작·
  프로젝트 구조·개발 컨벤션·팀·문서·라이선스.
- 구식/오류 내용 정리: 폐기된 명칭/clone URL, GitHub Flow→develop·main 컨벤션,
  Notion sync 내부 디테일, placeholder owner(A~E), 서비스 포트/실행법 정정.
- 팀 R&R + 각 팀원 GitHub/Email 명시(PM 이성민, PL 정재환).
* Improve RCA accuracy without label leakage

The RCA path was missing catalog-level evidence signals from structured runtime payloads, so live connector-task failures converged on broad symptoms or UNKNOWN even when tool payloads contained the deciding facts. This change extracts redacted evidence signals, tightens scoped auth and deployment matching, broadens catalog mappings, and adds regression tests for metadata leakage, overfit guards, HITL approval pauses, and planner/retrieval contracts.

Constraint: Do not branch on case_id or inject evaluation labels/seed phrases
Constraint: Do not synthesize NO_FAULT from a single normal observation
Rejected: Keep 0.95 confidence for full required matches | overstates calibration and failed honesty review
Rejected: Treat unscoped connector auth as source auth | misranks sink auth failures under CONNECTOR_TASK_FAILED
Confidence: high
Scope-risk: moderate
Directive: Do not add eval seed phrases or gold-label metadata to production evidence catalogs
Tested: uv run --extra dev pytest -q (689 passed)
Tested: uv run python scripts/rca_eval_campaign.py (AC@1/3/5=1.0, ECE=0.1448, abstain=0)
Tested: stable SHA256 7/35 seed split (AC@1/3/5=1.0, abstain=0)
Not-tested: LLM-on live deployment Job

* 교차검증 보류 사유가 재발하지 않도록 RCA 입력을 정화

classifier와 RCA의 rule, semantic, LLM prompt 경로가 같은 control metadata 제거 규칙을 통과하도록 맞췄다

한국어 auth 정상 문구는 원문과 정규화 토큰 양쪽에서 부정으로 처리해 정상 증거가 SOURCE_AUTH_EXPIRED로 커밋되지 않게 했다

seed 표현과 직접 겹치는 catalog 문구는 도메인 일반 표현으로 바꾸고, 0.90 전역 confidence cap은 ECE 재측정 기준 0.88로 낮췄다

캠페인 산출물은 oracle incident-type RCA replay 조건과 seed 내부 replay 한계를 명시해 100% 계열 수치를 무조건 주장하지 않도록 했다

Constraint: 35 seed 캠페인은 accepted root cause에서 incident type을 역매핑하는 RCA replay이며 classifier end-to-end나 unseen production holdout이 아님
Rejected: 0.90 전역 confidence cap 유지 | final ECE 0.1448로 baseline 대비 악화가 컸음
Rejected: 0.82 confidence cap | AC@1 0.9714는 유지했지만 ECE 0.1661로 더 악화됨
Confidence: high
Scope-risk: moderate
Directive: RCA와 classifier에 새 summary 소비 경로를 추가할 때는 app.evidence.metadata.strip_control_metadata를 먼저 적용할 것
Tested: cd services/ai-service && .venv/bin/pytest -q, 696 passed, 354 warnings
Tested: cd services/ai-service && .venv/bin/pytest tests/test_rca.py tests/test_evidence_signals.py tests/test_rca_classification_accuracy.py tests/test_classifier.py -q, 82 passed
Tested: cd services/ai-service && .venv/bin/python scripts/rca_eval_campaign.py, AC@1 0.9714, AC@3 1.0, AC@5 1.0, Avg@5 0.9857, ECE 0.1284
Not-tested: production unseen holdout과 LLM-on live 배포 Job

* #993 잔여 검증 보류 사유를 닫아 머지 판단을 가능하게 한다

재교차검증에서 남은 과적합 표현, 중복 evidence catalog drift, 한국어 부정 회귀 공백을 작은 변경으로 정리했다.

EVIDENCE_RULES는 EVIDENCE_PROFILES에서 파생되도록 바꿔 단일 소스를 유지하고, runtime catalog 문구는 seed 원문에 붙은 표현 대신 더 넓은 도메인 신호로 일반화했다. 한국어 auth 부정은 요청된 무접두어 문구를 그대로 회귀 테스트에 포함했다.

Constraint: ECE는 cap 상향으로 보정하지 말라는 요청을 우선함
Constraint: ai-service pyproject에는 별도 lint 또는 typecheck 도구 정의가 없음
Rejected: default confidence cap 상향 | ECE는 낮출 수 있지만 보수적 grounding 정책과 요청 제약을 침범함
Rejected: seed gold set 문구 수정 | 요청 범위가 runtime catalog 표현 정리였고 평가셋 자체를 흔들 수 있음
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: EVIDENCE_RULES는 EVIDENCE_PROFILES에서 파생되어야 하며 수동 중복 목록을 다시 만들지 말 것
Tested: git diff --check
Tested: uv run --extra dev pytest tests/test_rca.py tests/test_evidence_signals.py tests/test_rca_classification_accuracy.py tests/test_hitl_wiring.py -q
Tested: uv run --extra dev pytest -q
Tested: uv run --extra dev python scripts/rca_eval_campaign.py
Not-tested: production unseen holdout과 classifier 포함 end-to-end 재측정

* 정상 관측이 RCA 장애 확정으로 승격되지 않게 막음

증거 신호 추출이 부정 문구와 정상 상태를 fault 토큰으로 재사용해 schema, config, duplicate, lag, connector 원인을 확정할 수 있었다. 신호 유형별 정상 조각 제거를 도입하고 RCA required evidence 매칭도 같은 부정 경계를 보게 맞췄다.

캠페인 수치는 blocker 수정 뒤 현재 HEAD에서 다시 산출한 oracle incident-type seed replay 값으로 문서를 갱신했다. 100% 값은 production holdout이 아니라 35 seed replay 조건부 수치로만 남긴다.

Constraint: 정상/부정 관측은 fault signal과 required evidence로 승격되면 안 됨
Constraint: campaign 수치는 blocker 수정 후 재실행값만 문서화해야 함
Rejected: ECE cap 또는 threshold 조정 | 실측값을 숨기면 calibration 한계가 문서에 남지 않음
Rejected: auth 전역 negation 유지 | mixed normal auth와 실제 auth fault를 함께 억제함
Confidence: high
Scope-risk: moderate
Directive: 정상 문구를 추가할 때는 signal 추출과 RCA required evidence 매칭 회귀를 함께 추가할 것
Tested: cd services/ai-service && .venv/bin/python -m pytest tests/test_evidence_signals.py tests/test_rca.py
Tested: cd services/ai-service && .venv/bin/python -m pytest tests/test_evidence_signals.py tests/test_rca.py tests/test_rca_classification_accuracy.py
Tested: cd services/ai-service && .venv/bin/python -m pytest
Tested: cd services/ai-service && .venv/bin/python -m compileall -q app tests scripts
Tested: cd services/ai-service && .venv/bin/python scripts/rca_eval_campaign.py
Not-tested: production live fault injection 재실행

* #993 캠페인 계층별 표의 source 행을 재실행 실측값으로 정정

검증 재실행에서 source AC@1·Avg@5가 1.00인데 문서 표만 0.80·0.90으로 stale했음. 실측값과 오답 0건 기록에 일치하도록 정정.

Tested: rca_eval_campaign.py 재실행값(source AC@1 1.0)과 대조
Confidence: high
Scope-risk: narrow
@sebeeeen
sebeeeen merged commit cdd1343 into main Jun 22, 2026
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.

2 participants