diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 29133ad6..8e39b482 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -33,5 +33,14 @@ jobs: uses: codecov/codecov-action@v7 with: files: lcov.info - fail_ci_if_error: true + # This fork has no CODECOV_TOKEN (secrets are not inherited from the + # upstream repo), so every upload is rejected with "Token required - + # not valid tokenless upload". Failing CI on that made `coverage` red + # on all 24 runs since the workflow started reporting, which buries + # real regressions instead of surfacing them. Upload errors are now + # non-fatal; the error text is still printed in this step's log. + # The coverage run itself is the separate "Generate code coverage" + # step above, which still fails the job if the build or tests break. + # Set CODECOV_TOKEN on this fork to make uploads work again. + fail_ci_if_error: false token: ${{ secrets.CODECOV_TOKEN }} diff --git a/REPORT.md b/REPORT.md index 9654adf2..4b23d58d 100644 --- a/REPORT.md +++ b/REPORT.md @@ -1,5 +1,20 @@ # REPORT +## [2026-08-17] `coverage` 상시 red 해소 (rustjava-coverage-workflow-codecov-token-red) +- 무엇을: `.github/workflows/coverage.yml` 의 `fail_ci_if_error` 를 `true` → **`false`** 로 내리고 + 이유·복구법을 주석으로 박았다. **변경 파일 1개**(워크플로) + 문서 2개. +- 왜: `coverage` 는 **보고를 시작한 이래 24/24 전건 red** 였다(2026-07-22~08-17). 근인은 단 하나 — + ★**이 저장소는 fork 라 upstream 의 시크릿을 상속하지 않는다.** `gh secret list` 는 **빈 목록**이고 + `secrets.CODECOV_TOKEN` 이 빈 문자열로 전개돼 업로더가 `Token length: 0` → + `{"message":"Token required - not valid tokenless upload"}` 로 죽었다. `fail_ci_if_error: true` 가 + 그 업로드 실패를 job 실패로 승격시켜 왔다. ★**상수 red 는 신호가 아니다** — 진짜 회귀가 섞여도 안 보이고, + 실제로 upstream 동기 매 회차가 「선재 인프라라 머지 차단 아님」이라는 **특례 문구를 손으로** 달아야 했다. +- 사용자 영향: 없음(코드 무변경). CI 신호만 회복된다. ★**빌드 검사는 약해지지 않는다** — + `Generate code coverage` 는 별도 `run:` 스텝이고 `continue-on-error` 가 없어 빌드/테스트가 깨지면 + 여전히 job 이 red 다. 비치명이 된 것은 **codecov.io 로의 «발행»뿐**이고 그 오류 문구는 스텝 로그에 그대로 남는다. +- 후속 추천: `CODECOV_TOKEN` 을 이 fork 에 등재하면 업로드까지 복구된다 — ★**human-step**(시크릿 발급·등재는 + 사람 몫). 등재 전까지는 codecov.io 에 데이터가 쌓이지 않는다(단, 토큰이 없던 지금까지도 쌓인 적이 없다). + ## [2026-08-17] upstream 동기 S1 — 컷 `1f356ae` 머지 (rustjava-upstream-sync-s1-tracing-cut-1f356ae) - 무엇을: upstream `1f356ae`(#173~#179 · 5커밋)를 머지했다. 충돌 **2** 해소 — `lang.rs` 는 **양쪽 병합**(우리 `class_format_error` + upstream 의 Java 1.2 wrapper 9종), diff --git a/STATE.md b/STATE.md index ebf539ad..59cb1497 100644 --- a/STATE.md +++ b/STATE.md @@ -1,10 +1,14 @@ # STATE ## 진행중 -- [rustjava-upstream-sync-s1-tracing-cut-1f356ae] upstream 컷 `1f356ae` 머지 완료(충돌 2 해소 · - tracing 축). green 전건 rc=0 · 169 passed. **PR 대기 — 게이트③ 미착지.** +- [rustjava-coverage-workflow-codecov-token-red] `coverage` 상시 red 해소 — + `fail_ci_if_error: false`. ★**실증: 착지 전 브랜치에서 «이 저장소 최초의 green coverage»** + (25번째 run, 앞선 24건 전부 red). **PR 대기 — 게이트③ 미착지.** ## 완료 +- [rustjava-upstream-sync-s1-tracing-cut-1f356ae] upstream 컷 `1f356ae` 머지(충돌 2 해소 · tracing 축 · + `System.setProperty` 서술자 파손 1건 추가 처리). ★게이트③ 완료: PR #11 스쿼시 머지 → + main `6bfe97c`(2026-08-17). ※원격 브랜치는 repo 설정 `deleteBranchOnMerge=true` 로 자동 삭제됨. - [rustjava-runtime-time-todo-impl] RuntimeImpl 시간 API `todo!()` 3건 제거(now/sleep/yield) + test_utils `r#yield` 구현 + tokio `time` 피처 추가 + 회귀 잠금 픽스처(`test_data/TimeApi`). ★게이트③ 완료: PR #2 스쿼시 머지 → main `13ab950`(2026-07-23), 브랜치 정리 완료.