Repository navigation
test(release): hold the seven-day release gap and the no-auto-merge rule - #912
Merged
Merged
Conversation
Prove the on-demand release window refuses a release six days after the last final release and allows it on the seventh, counted in KST, using the real v0.9.0 timestamp. Run release.yml's own critical-patch reader to show v0.10.0 passed three days after v0.9.0 because PR #830 declared Critical-Patch: #821. Add a gate that fails when any workflow merges, auto-merges or approves a pull request. Update POLICY and compatibility.md for the release-please flow. Refs #895 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7 tasks
yeongseon
added a commit
that referenced
this pull request
Oct 12, 2026
… picking a bump (#926) ## 무엇 `docs/governance/POLICY.md` 2.1.3 의 릴리스 절차 문단에서 남은 틀린 문장 하나를 고칩니다. 원래 이슈가 가리킨 "263행 부근" 문단(사람이 prepare 의 `bump` 를 고른다)은 #912 에서 이미 release-please 절차로 바뀌었고, 지금은 355–362행에 있습니다. 그 끝 문장이 "kpubdata-builder·kpubdata-studio 는 prepare 의 `bump` 를 사람이 고른다" 고 적고 있었는데, Studio 의 `release.yml` prepare 에는 `bump` 입력이 없고 Builder 의 최신 릴리스 태그를 읽어 같은 버전을 씁니다. 2026-10-12 소유자 결정(같은 버전 정책, ADR 0004)대로 Studio 는 release-please 를 두지 않고 Builder 태그를 따른다고 고쳤습니다. `AGENTS.md`, `docs/compatibility.md` 5.1 과 같은 내용입니다. ## 확인한 것 (코드 변경 없음) - **7일 간격**: `tests/unit/scripts/test_release_window.py` 가 6일째 거부·7일째 허용, 서울 시간 자정 경계, `release.yml` 의 두 경로가 태그 전에 창 검사를 거치는지, 그리고 `Critical-Patch:` 줄이 없는 release PR 이 간격 안에서 거부되는지를 확인합니다(#912). 막는 것은 병합이 아니라 태그입니다. - **v0.10.0**: v0.9.0 게시 2026-10-06T02:43:55Z, v0.10.0 게시 2026-10-09T01:44:46Z. PR #830 본문에 `Critical-Patch: #821`, 릴리스 run 37871181656 의 "Gate, tag and release" 잡 로그에 `##[notice]release allowed: critical patch for #821, outside the on-demand rule`. 검사가 뚫린 것이 아니라 critical patch 로 선언된 것입니다. - **Dependabot 자동 병합**: `git ls-files .github`(31개 파일)에 자동 병합·병합·승인을 하는 워크플로가 없고, `allow_auto_merge=false`, 저장소 ruleset 0개. 브랜치 보호의 필수 체크는 `CI gate`, `R3 review`, `PR title`, 승인 수 0, 관리자에게도 적용. `tests/unit/test_no_workflow_merges.py` 가 `.github/` 의 어떤 파일도 PR 을 병합·자동 병합·승인하지 못하게 막고, 그 검사가 실패하는 경우도 테스트합니다. 우회 경로가 없어서 고칠 것이 없습니다. ## 검증 - ruff check: All checks passed / ruff format --check: 435 files already formatted / mypy src: no issues in 70 source files - check_english_comments: no Korean comments / check_plain_codes: 108 files, no bare code / mkdocs build --strict: built - pytest: 3406 passed, 2 failed — `tests/unit/scripts/test_build_dataset_verifier.py` 의 두 테스트는 변경 전 `main`(212b707)에서도 로컬에서 똑같이 실패하고, `main` CI 에서는 통과합니다. 이 PR 과 무관한 로컬 환경 문제입니다. 이 문서를 바꾸는 변경은 원래 작성자가 아닌 사람의 승인이 필요한 변경(R3)으로 취급되지만, 소유자가 2026-10-11 에 일반 PR 의 리뷰 수준을 R2 로 낮추도록 승인했습니다. Scope exception: NO Existing flow or risk: the release procedure text in POLICY 2.1.3 contradicted Studio's actual release.yml (no bump input). Refs #895 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
#895 중 kpubdata 저장소에서 할 수 있는 부분입니다. Builder·Studio 쪽 작업과 토큰 방식 결정은 남아 있어 이슈는 열어 둡니다.
바뀐 것
tests/unit/scripts/test_release_window.py): 간격 규칙은 이미scripts/release_window.py로 분리돼 있어 새 스크립트는 만들지 않았습니다. 실제 v0.9.0 게시 시각(2026-10-06T02:43:55Z)으로 6일째(10/12)는 거부, 7일째(10/13)는 허용, 그리고 UTC 로는 6일이지만 서울 시간으로 7일째인 순간(10/12 15:00 UTC)은 허용되는지 확인합니다.release.yml의 prepare 와 release 두 경로가 태그·버전을 쓰기 전에 on-demand 창 검사를 거치는지도 확인합니다.Critical-Patch: #821줄이 있었고, 릴리스 실행 로그에release allowed: critical patch for #821, outside the on-demand rule이 남아 있습니다. 테스트가release.yml의Read a critical-patch declaration스크립트를 그대로 실행해, 그 줄이 있으면 통과하고 없으면 10/09 에 거부된다는 것을 보입니다.tests/unit/test_no_workflow_merges.py): 세 저장소 어디에도 Dependabot 자동 병합 워크플로는 없고 저장소 자동 병합 설정도 꺼져 있습니다. 브랜치 보호는 승인 수를 요구하지 않으므로(무거운 변경 리뷰 라벨이 붙은 PR 만 승인 필요) 자동 병합은 필수 체크는 지켜도 사람을 건너뜁니다. 그래서.github/의 어떤 파일도 PR 을 병합·자동 병합·승인하지 못하게 막고, 그런 워크플로를 실제로 잡아내는 테스트를 함께 둡니다.POLICY.md2.1.3 의 "버전은 prepare 의bump를 사람이 고른다" 를 release-please 절차로 고쳤습니다.docs/compatibility.md5.1 에 v0.10.0 경위와 자동 병합 금지를 적었고,RELEASE_POLICY.md의 절차 1단계를 맞췄습니다.확인
릴리스·태그는 하지 않았고 #890 도 병합하지 않았습니다.
Refs #895
🤖 Generated with Claude Code