Repository navigation
Conversation
Sadturtleman
approved these changes
Aug 27, 2026
1hyok
marked this pull request as ready for review
August 27, 2026 12:47
This was referenced Aug 29, 2026
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.
Refs #847
Refs #1063
왜 필요한가
저장소의
sha_pinning_required는 특정 브랜치가 아니라 저장소 전체에 적용된다.develop은 이미 외부 Action을 전부 고정했지만,main에는 12개 워크플로의 부동 참조 30개가 남아 있었다. 이 상태에서 정책을 켜면mainpush 기반 Firebase 릴리스가 시작 단계에서 차단된다.변경
uses:30건을 40자리 commit SHA로 고정한다.actions/upload-artifact의 v4/v7을 포함해 기존 Action major와 워크플로 동작은 유지한다.mainpush도 기존 correlator로 신뢰된 Gradle dependency snapshot을 제출해 이후 main PR의 base 비교가 비지 않게 한다./dev/kvm소유권·읽기·쓰기를 직접 검증하도록develop의 KVM 설정을 backport한다.main의 오래된 계측 fixture 네 곳을 현재 테스트 계약에 맞춘다: receiver saved-state key, daily/diary 초기 조회 횟수, memory month filtering.actions/checkoutactions/setup-javaactions/upload-artifactactions/github-scriptdocker/setup-buildx-actiondocker/build-push-actiondvdandroid/action-android-lint검증
scripts/repository-quality.sh: 18 workflows, 4 shell scripts 통과node --test .github/scripts/*.test.mjs: 98/98 통과git diff --check: 통과./gradlew :app:compileDebugAndroidTestKotlin ktlintCheck: 617 tasks 통과199598ee1a506bc3e3a3b0f7bed0c176eebfb5af의 Managed Device run 33065369934: JUnit XML 81 tests, failures 0, errors 0, skipped 0uses:참조 30줄로 한정하고, dependency-submission 변경은develop에서 검증된 PR #1182의mainpush 트리거와 job 명칭을 재사용한다.🧪 QA Metadata
{ "scope": "ci-only", "exclusionReason": "외부 GitHub Actions 참조, Managed Device runner 설정과 계측 fixture만 변경하며 앱 런타임 코드와 사용자 동작 경계는 변경하지 않습니다.", "androidTest": { "required": false, "reason": "앱 런타임 입력·화면·저장소 호출은 변경하지 않으며, workflow와 계측 fixture가 실제 기기 suite를 온전히 실행하는지는 exact-HEAD Managed Device 81/81 성공으로 검증합니다." }, "evidence": [ { "kind": "test", "ref": "repository-quality and immutable uses inventory", "assertion": "전체 workflow 정적 검증이 통과하고 외부 uses의 부동 참조가 0건이며 main push가 기존 correlator로 dependency snapshot을 제출합니다.", "input": "origin/main의 12개 workflow에 남은 외부 uses 30건과 main dependency base snapshot 누락", "boundary": ".github/workflows와 .github/actions의 모든 외부 uses 참조 및 dependency-submission push 트리거", "observation": "actionlint, shellcheck, node 정책 테스트가 통과하고 미고정 참조가 0건이며 workflow YAML 파싱이 통과했습니다." }, { "kind": "test", "ref": "Android Managed Device run 33065369934", "assertion": "KVM 설정과 main 계측 fixture가 exact PR HEAD의 전체 API 30 suite를 실패·오류·스킵 없이 실행합니다.", "input": "PR HEAD 199598ee1a506bc3e3a3b0f7bed0c176eebfb5af와 pixel2Api30DebugAndroidTest", "boundary": "GitHub-hosted runner의 /dev/kvm, Android emulator, app androidTest JUnit 결과", "observation": "artifact JUnit XML에 tests=81, failures=0, errors=0, skipped=0이 기록됐습니다." } ] }포함 이슈
QA 포인트
main기준 모든 외부 Action 참조가 40자리 commit SHA와 release 주석을 가진다.release-distribution.yml의 checkout·setup-java가 고정 SHA로 실행되고 기존 Firebase 릴리스 로직은 변하지 않는다.mainpush가afternote-gradle-dependency-graphcorrelator로 base snapshot을 제출한다.sha_pinning_required=true를 다시 적용하고 재조회한다.릴리스 경계
이 PR은
main대상이다. 머지하면mainpush에 의해 Firebase App Distribution 릴리스가 실행되므로, 이번 작업에서는 PR 생성과 CI 확인까지만 수행하고 머지는 별도 승인 대상으로 둔다.