Conversation
* 공유 인프라를 건드리지 않는 safe-live fault 측정을 연다 신규 Strimzi KafkaConnector CR만 생성하는 내부 safe-injection API와 eval --safe-live 모드를 추가했다 기존 live_eval.py --live 경로는 재사용하지 않고, safe-live는 operations-backend 내부 API를 통해 라벨이 붙은 테스트 connector를 만들고 cleanup residual 0을 확인한다 DB metadata row 생성과 삭제는 금지선에 맞춰 넣지 않았고, 결과에는 합성 pipeline/datasource id와 metadata_persisted=false를 반환한다 Constraint: kubectl exec, 기존 리소스 scale/patch/delete, DB scale-down/exec/INSERT/DELETE 금지 Constraint: PR 생성 금지, 커밋만 생성 Rejected: live_eval.py --live inject_steps 재사용 | 기존 경로가 kubectl exec와 DB exec 기반이라 금지선 위반 Rejected: metadata row 생성 후 cleanup | DB INSERT/DELETE 금지선 위반 Confidence: high Scope-risk: moderate Reversibility: clean Directive: safe-live 경로는 신규 라벨 CR 생성, 기존 CR update 금지, DB metadata mutation 없음, residual 0 cleanup 검증을 유지해야 함 Tested: ./gradlew :services:operations-backend:test --tests com.bifrost.ops.internalops.safeinject.SafeInjectionServiceTest Tested: ./gradlew :services:operations-backend:test --tests com.bifrost.ops.internalops.safeinject.SafeInjectionServiceTest --tests com.bifrost.ops.provisioning.impl.strimzi.StrimziKafkaPipelineProvisionerTest --tests com.bifrost.ops.internalops.controller.InternalControllerTest Tested: uv run --with pytest python -m pytest eval/online/test_live_eval.py -q Tested: uv run --with pytest python -m pytest eval/online -q Tested: python3 -m compileall eval/online/live_eval.py eval/online/safe_live_fault_specs.py eval/online/test_live_eval.py Tested: git diff --cached --check Not-tested: 실제 배포 클러스터 safe-live 실행 및 실제 RCA 모델 결과 * #safeinject residual 집계 조건을 삭제 조건과 일치시켜 residual 0을 airtight로 보장 교차검증 지적: residuals()가 삭제 loop와 달리 safeinject- name prefix 재확인을 빠뜨려 residual 0 정확성이 airtight가 아니었음. 삭제 조건(safe label+run label+prefix+isSafeResource)과 동일하게 prefix 검사를 추가. Tested: SafeInjectionServiceTest 재실행 Confidence: high Scope-risk: narrow
* 구현 기준으로 운영 문서 신뢰도를 회복한다 이슈 #1006 범위에서 FastAPI agent, Spring internal ops, README/infra, eval harness, tool registry 문서를 실제 구현과 커밋된 결과물 기준으로 동기화했다. 문서는 코드가 아니라 현재 동작을 따라가야 하므로 unsupported 수치는 제거하거나 조건을 붙였고, tool과 mutation 설명은 registry, controller, policy gate의 현재 계약에 맞췄다. Constraint: 코드 변경 없이 문서만 실제 구현에 맞춤 Constraint: 출처 없는 정확도와 테스트 수치는 제거하거나 조건부로 표기 Rejected: 문서에 맞춰 구현을 바꾸기 | 이슈 범위가 docsync이고 prompt가 코드를 함부로 바꾸지 말라고 지시 Rejected: 89.6%/367 수치 유지 | 커밋된 재현 산출물과 스크립트 근거가 없음 Confidence: high Scope-risk: moderate Reversibility: clean Directive: 새 성능 수치를 추가할 때는 재현 스크립트와 커밋된 결과물을 함께 갱신할 것 Tested: git diff --check Tested: cd services/ai-service && uv run python scripts/rca_eval_campaign.py Tested: cd services/ai-service && uv run pytest tests/test_approval_header_wiring.py tests/test_tools_registry.py tests/test_supervisor_graph.py tests/test_execution_depth.py tests/test_catalog_docs_consistency.py -q Tested: child lanes verified tool registry 20 tests, eval harness 85 tests, scoped diff checks Not-tested: full Gradle build and frontend build, docs-only change * 잔여 문서 검증 기준을 실제 구현과 맞춘다 무리뷰가 지적한 5개 불일치가 발표·검증 문서의 기준값을 흐리게 만들고 있었다. 코드 변경 없이 문서의 카탈로그 수, 조회 budget, Planner prompt 설명, RCA 평가 산출물 존재 여부, mutation governance header 정책을 현재 구현 기준으로 정리했다. Constraint: 코드 변경 금지, 문서만 수정 Rejected: 평가 스크립트나 정책 코드를 함께 수정 | 요청 범위가 docs-only였고 구현은 이미 근거로 충분함 Confidence: high Scope-risk: narrow Directive: 이 문서의 수치와 header 정책은 catalog count, depth budget, PolicyGuard 구현을 확인한 뒤 갱신할 것 Tested: git diff --check; PYTHONPATH=services/ai-service python3 catalog count assertions Not-tested: 문서 전용 변경이라 애플리케이션 테스트는 실행하지 않음 * 무리뷰가 찾은 카탈로그·Planner 잔여 doc 불일치를 구현과 맞춘다 DSVERIFY2 무리뷰가 7ae0159 이후 추가로 적발한 3건을 구현 기준으로 정정한다. - catalog-incident-root-cause-map: CONNECTOR_TASK_FAILED 후보를 5개에서 구현의 9개(SOURCE_AUTH_EXPIRED·SINK_AUTH_EXPIRED·SOURCE_NETWORK_REACHABILITY· SINK_CONSTRAINT_VIOLATION 포함)로 보정 - catalog-evidence-matrix: SINK_DB_CONNECTION_TIMEOUT을 구현대로 required 1 + supporting 3 + negative 1로 보정(문서는 required 2로 과대 기재) - rca-standards-review: Planner prompt 출력 schema를 실제(tools·reason 두 키)와 맞추고, tool 수 상한은 prompt가 아니라 코드에서 제한함을 명시 Constraint: 문서만 수정, 구현·테스트 코드 불변 Rejected: 구현을 문서에 맞춰 변경 | 문서가 stale, 구현이 정답 Confidence: high Scope-risk: narrow Tested: grep로 구현값(후보 9·evidence 1/3/1·schema 2키) 대조 확인 Not-tested: 전체 빌드(docs-only 변경) * 무리뷰가 인접 섹션에서 찾은 evidence·ReAct doc 불일치를 구현과 맞춘다 DSVERIFY3 무리뷰가 c6c4bfb 정정 인접 섹션에서 추가 적발한 3건을 구현 기준으로 정정한다. - catalog-evidence-matrix SOURCE_NETWORK_REACHABILITY: 구현은 negative 2개 (#962 sink-context 약화 규칙 포함)인데 문서는 1개만 → sink dependency 실패 negative 행 추가 - catalog-evidence-matrix RECENT_IMAGE_DEPLOYMENT_REGRESSION: 두 번째 required를 구현 evidence 명칭(`image version update`)으로 보정(문서는 `이전 image 대비 config/runtime 차이`로 다르게 기재) - rca-standards-review ReAct 조건: 구현 _DEPTH_BUDGET에서 BOUNDED_LOOKUP은 allow_react_loop=false인데 문서는 bounded_lookup에서 ReAct 허용으로 서술 → 허용 depth를 incident/remediation으로 한정, bounded는 off 명시, react_max_steps incident/remediation 6으로 보정(문서 내부 :509 표와도 정합) Constraint: 문서만 수정, 구현·테스트 코드 불변 Rejected: 구현을 문서에 맞춰 변경 | 문서가 stale, 구현이 정답 Confidence: high Scope-risk: narrow Tested: grep로 구현값(negative 2·required image version update·BOUNDED_LOOKUP false) 대조 Not-tested: 전체 빌드(docs-only 변경) * 검토 문서의 닫힌 gap을 현재 구현 상태로 갱신한다 docsync 전수 스캔에서 확인한 10건의 문서-구현 불일치를 구현 기준으로 정정했다. 적용한 정정: 1. RCA full-required confidence 범위를 기본 cap 0.88 기준으로 정정 2. 자동 롤백을 executor 실패/BLOCKED inverse rollback 구현 상태로 정정 3. run reproducibility manifest 저장과 실제 LLM alias 호출 잔존 gap 분리 4. run telemetry schema/collector 구현과 tool/LLM/handoff instrumentation 잔존 gap 분리 5. threshold registry/API 구현과 runtime threshold 연결 잔존 gap 분리 6. gold set/labeling guide/API/feedback 승격 구현과 scheduled eval 잔존 gap 분리 7. online feedback/drift report 구현과 dashboard/자동 재보정 잔존 gap 분리 8. SLI/SLO burn-rate routing 구현과 baseline/fallback 검증 잔존 gap 분리 9. KEDB schema/API/repository/report surface 구현과 자동 누적 잔존 gap 분리 10. depth stage 표와 ReAct 조건을 transitions.py 기준으로 정정 Constraint: 문서를 구현에 맞추는 작업이며 구현 코드와 카탈로그 문서는 수정 금지 Rejected: 닫힌 gap을 단순히 완료 처리 | scan report가 지적한 잔존 gap을 보존해야 함 Confidence: high Scope-risk: narrow Tested: git diff --name-only/stat 확인, stale 문구 rg scan, git status로 단일 문서 변경 확인 Not-tested: 빌드와 테스트는 prompt 지시상 실행하지 않음
#1008) * Preserve RCA accuracy on production read-tool payloads Current develop already contains the bulk RCA accuracy implementation from #993, so this change forward-ports only the production-transfer hardening still missing from the c1 local-loop branch: vendor SQL/Connect error signatures, missing-database task-failure evidence, and source/sink side inference from the specific failed structured payload item. Constraint: PR base must remain develop and deploy surface must exclude local C3 measurement harness files Rejected: Replace whole c1 files on current develop | current develop has newer RCA, retrieval, and catalog work that would be regressed Confidence: high Scope-risk: narrow Directive: Keep this extractor emitting catalog phrases only; do not include raw connector names, credentials, or fixture labels in summaries Tested: AI_LLM_API_KEY= OPENAI_API_KEY= uv run --extra dev pytest tests/test_evidence_signals.py -q Tested: AI_LLM_API_KEY= OPENAI_API_KEY= uv run --extra dev pytest -q * prod payload 숫자 오발화와 side 과잉단정을 제거 배포 게이트는 read-tool payload 전체 flatten 과정에서 bare vendor code가 port/value/count metadata와 충돌하고, role이 없거나 dual-role인 connection failure를 source/extract evidence로 승격한다고 판정했다. Vendor code는 ERROR/SQLSTATE 같은 live error anchor가 있을 때만 잡도록 좁히고, side가 unknown인 network/timeout은 source/sink를 단정하지 않는 neutral evidence로만 emit한다. Constraint: PR #1008 deploy gate requires normal numeric metadata and ambiguous datasource role payloads to avoid side-specific fault evidence Rejected: Drop all numeric scalar flattening | broader behavior change and unrelated evidence loss risk Rejected: Suppress all unknown-side connectivity evidence | would lose recall for real unscoped connection failures Confidence: high Scope-risk: narrow Directive: Do not restore bare numeric vendor-code regexes without metadata false-positive probes Tested: uv run pytest tests/test_evidence_signals.py Tested: AI_LLM_API_KEY= OPENAI_API_KEY= uv run --extra dev pytest -q Tested: gate before/after probe removed numeric false positives and source-biased ambiguous-side evidence Not-tested: Branch-local c3 scripts are absent on feat/rca-accuracy-prod; external borrowed c3 harnesses were run but are not clean branch-local regression evidence * prod 숫자형 lag payload의 CONSUMER_LAG_SPIKE 누락 복구 get_consumer_lag/get_consumer_groups의 prod DTO는 totalLag와 partitions[].lag, group lag를 숫자로만 전달할 수 있어 기존 텍스트 anchor 중심 evidence_signal_summary가 consumer lag 급증 증거를 만들지 못했다. 명시적 lag 필드만 구조적으로 판독해 consumer lag evidence를 추가하고, offset progression 둔화는 기존 텍스트/추세 근거 경로에 그대로 남겼다. Constraint: #957 trend 엄격성 유지 - bare lag 수치만으로 offset progression 둔화를 emit하지 않음 Rejected: 텍스트 lag anchor 완화 | 숫자 vendor code와 side-neutral false-positive guardrail을 되돌릴 위험 Rejected: 모든 lag-like 숫자 필드 일반화 | totalLag, partitions[].lag, group lag 명시 필드만 요구 Confidence: high Scope-risk: narrow Directive: lag recall을 넓힐 때도 consumer lag read-tool의 명시적 lag 필드와 offset progression 근거를 분리할 것 Tested: uv run pytest tests/test_evidence_signals.py -q Tested: uv run pytest tests/test_rca.py::test_consumer_lag_spike_partial_evidence tests/test_rca.py::test_consumer_lag_snapshot_does_not_satisfy_trend_evidence tests/test_rca.py::test_consumer_lag_spike_accepts_live_metric_trend_evidence -q Tested: uv run pytest tests/test_rca_classification_accuracy.py::test_consumer_lag_spike_from_realistic_incident_evidence tests/test_rca_classification_accuracy.py::test_consumer_lag_snapshot_without_trend_stays_unknown -q Tested: uv run pytest tests/test_verifier.py::test_incident_verifier_accepts_live_metric_trend_evidence tests/test_verifier.py::test_incident_verifier_rejects_single_consumer_lag_snapshot_as_trend_evidence -q Tested: uv run pytest -q Tested: uv run python -m compileall -q app tests Tested: git diff --check Not-tested: dedicated lint/typecheck not configured under services/ai-service
* #1012 [docs] README 재작성 — 공개 저장소용 프로젝트 소개·아키텍처·로컬 실행 정비 FP 설계 문서와 실제 코드 기준으로 개요·핵심 기능·아키텍처(mermaid)·기술 스택·디렉터리·로컬 실행·인프라/배포·팀·라이선스를 정리. codex 4라운드 리뷰로 사실성·과장 여부를 검증했다. 비밀값·식별자는 포함하지 않는다. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * #1012 [docs] README 포트폴리오 정비 — 로고·콘솔 스크린샷·발표 자료 링크 추가, Team 제거 히어로/화면 섹션에 실제 콘솔 스크린샷(파이프라인·RCA·조치)을 넣고, 자체 완결형 발표 덱(docs/pitch-deck.html)을 추가해 상단에서 링크. 캡스톤성 Team R&R 표는 제거. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * #1012 [docs] 발표 자료(pitch-deck) 제거 — README 발표 링크·덱 파일 삭제 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
불필요한 문서와 오래된 산출물을 정리하고, 남은 문서를 코드 구현 기준으로 최신화했습니다.
# Conflicts: # docs/design/backend-springboot/server.md # docs/presentation/03-ai-metrics.md # docs/test/agent-검증결과-기준출처-20260622.md # docs/test/agent-운영테스트-인벤토리.md # docs/test/rca-exhaustive-test-20260622.md # docs/test/rca-fault-injection-20260621.md # docs/test/rca-test-campaign-20260622.md # docs/test/시각화-part-a-개선실험.html
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.
Summary
Verification
Notes