fix(mutation-ci): baseline 실패 출력 표면화 + workflow_dispatch 트리거 (#169) - #170
Merged
Conversation
… trigger (#169) baseline이 hosted 러너에서 RED일 때 잡 로그에 남는 것이 verdict 한 줄뿐이라 (run 33663504271 실측) 원인 진단이 불가능했다: - run_suite가 (verdict, output)을 반환하고, baseline/no-op 컨트롤이 GREEN이 아니면 failure_summary(FAIL:/ERROR: 줄 전부 + tail 80줄, bounded)를 stdout에 인쇄한다. 진단 줄은 mutation_report.py의 SURVIVED/stale/hang 정규식과 충돌하지 않음을 테스트로 고정 (fail-closed 판정 불변). - mutation.yml에 workflow_dispatch를 추가해 mutation-weekly(full-matrix) 잡을 스케줄 대기 없이 수동 실행할 수 있다. mutation-pr 잡은 dispatch에 깨어나지 않는다 (base.sha 부재). - plans/i169-mutation-baseline/: wiki-plan 산출물 (analysis/design/tasks). 러너의 실제 실패 집합은 이 변경 랜딩 후 dispatch 실측으로 확정한다 (Task 03). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013i2thbPR32hdh1y6cwzVF9
러너 실측(run 33701577052, failures=26/errors=96)의 원인: tearDown이 os.environ.pop으로 값을 무조건 삭제해, 툴체인이 LNPL_LLVM_BIN으로만 해석되는 GitHub 러너에서 test_backend 이후의 모든 mode-B 테스트가 toolchain unavailable로 죽었다. macOS는 brew 폴백이 가려서 비가시였다. - setUp이 원래 값을 저장, tearDown이 조건부 복원 - 회귀 테스트 2건: 센티널 값 보존 + 미설정 유지 (수리 전 Red 실증) - impl/tests 전체 os.environ 변이 스윕: 미복원 실결함은 이 1곳뿐 (판정 표는 plans/i169-mutation-baseline/runner-evidence.md) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013i2thbPR32hdh1y6cwzVF9
env 오염 수정 후 재-dispatch(run 33702421111)에서 baseline은 게이트를 통과했으나 full matrix가 43분 실행 끝에 timeout-minutes: 45로 취소됐다. 실측 규모는 뮤테이션당 트리 복사 + 전체 스위트 ~85-90초 × 77 ≈ 110분 — 주간 잡은 baseline이 green이어도 완주가 구조적으로 불가능했다. - mutation-weekly timeout-minutes 45→180 (실측 1.5x 마진) - mutation-pr의 20분 예산은 불변 (소스 텍스트 테스트로 핀) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013i2thbPR32hdh1y6cwzVF9
full-matrix 완주 실측(run 33705681024): 73/77 caught, 4건 [stale anchor] — 로컬 대조로 main 코드 드리프트임을 확인(러너 특이 아님). 각 뮤테이션의 의미(테스트하는 규칙)를 보존한 채 앵커만 현재 텍스트로 옮겼다: - interp 가드 참조: caller/input 네임스페이스 분기 삽입 → 함수 꼬리의 일반 bindings 조회 4줄 블록으로 (1723행 유사 코드는 들여쓰기가 달라 첫-매치 안전) - spec result 스코프: money_fields 키워드 인자가 추가된 현재 시그니처로 - OpenAPI 미매핑 타입: if→elif 드리프트 반영, 변이는 빈 스키마 방출로 강화 - lowering 모호성: _check_internal_visibility 경유 반환으로 검증: 로컬 무변이 baseline GREEN 전제 하에 4건 각각 apply_and_run RED(caught), stale 전수 스캔 0건 (.claude/tmp/reanchor-verify.log). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013i2thbPR32hdh1y6cwzVF9
run 33715452170: harness rc 0, MUTATION CHECK: PASS (77/77 caught, no-op control survived), 주간 리포트 healthy 경로 정상. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013i2thbPR32hdh1y6cwzVF9
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.
요약
issue #169의 1단계: hosted 러너에서 mutation baseline이 RED일 때 로그에 verdict 한 줄만 남아(run 33663504271) 원인 진단이 불가능했다.
run_suite→(verdict, output)반환; baseline/no-op 컨트롤 비GREEN 시failure_summary(FAIL:/ERROR: 요약 + tail 80줄, bounded)를 stdout에 인쇄mutation_report.py파서의 SURVIVED/stale/hang 버킷으로 오파싱되지 않음을 테스트로 고정 — 주간 잡 fail-closed 판정 불변mutation.yml에workflow_dispatch추가 (mutation-weekly만 깨움; mutation-pr은 base.sha 부재로 제외)plans/i169-mutation-baseline/포함다음 단계 (이 PR 범위 아님)
랜딩 후 workflow_dispatch로 full-matrix를 실측해 러너의 실제 실패 집합을 확정하고, 그 증거로 원인 수정 PR을 올린다 (#169 수용 기준: baseline green + full-matrix 1회 green).
검증
tests.test_mutation_{diagnostics,tree,scope_select,workflow,report}50 tests OKCloses 없음 — #169는 러너 green 관측 후 닫는다.
🤖 Generated with Claude Code
https://claude.ai/code/session_013i2thbPR32hdh1y6cwzVF9