Repository navigation
maintenance(platform): 메모리에만 있던 규칙 4건을 CI 가드로 올린다 — 모듈 담당 파일 대조·KDoc 중첩 주석·Initializer 의 Hilt 접근·KDoc FQN 링크 #1889
Copy link
Copy link
Closed
Labels
area:platformCI·빌드·릴리스·저장소 운영 영역CI·빌드·릴리스·저장소 운영 영역maintenanceCI·빌드·의존성·저장소 운영 유지보수CI·빌드·의존성·저장소 운영 유지보수
Description
작업 유형
maintenance — CI·빌드·의존성·저장소 운영 유지보수
주 담당 모듈
platform — Android 앱·CI·빌드·릴리스·저장소 운영
개요
세션 메모리에만 적혀 있어 사람이 기억해야 지켜지던 규칙 4건을 CI 가드로 올린다. 기준은 셋이다 — 실사고나 실측 근거가 있고, 기계적으로 판정 가능하며, 현재 konsist 13개 규칙·.github/scripts 정책 어디에도 없다.
| # | 규칙 | 근거 | 지금 develop 에서 잡히는 것 | 가드 자리 |
|---|---|---|---|---|
| A | 남의 담당 모듈에 프로덕션 코드 0줄 | 0830 확정 규칙, #1354 실사고 | 열린 PR 60건 중 3건 — #1723(platform 5·core 1, issue-assignee-exempt 라벨 있음), #1858(setting 1), #1629(home 1) |
Repository Quality 스텝 + validate-pr-module-owner.mjs |
| B | KDoc 안에 /* 를 두지 않는다 |
/** 같은 경로 문자열이 주석을 중첩시켜 파일이 통째로 사라지고 Dagger 는 «could not be resolved» 로만 말한다 |
0건 | konsist |
| D | Initializer 안에서 Hilt EntryPoint 를 꺼내지 않는다 |
앱 모듈 androidTest 전멸, 처방은 GlobalApplication.onCreate |
0건 (Initializer 구현 2개: KakaoInitializer·DailyNotificationInitializer) |
konsist |
| F | KDoc [FQN] 링크는 실제 선언을 가리킨다 |
어느 게이트도 안 봐서 0903 에 30건이 쌓였고 패키지 이동마다 다시 쌓인다 | 93개 중 30개 끊김. #1776·#1785·#1881 반영 후 1건(AfternoteFailureReporting.kt → home.AfternoteHomeViewModel) |
Repository Quality 스텝 + verify-kdoc-links.mjs |
A 의 판정 규약
- 대상은 프로덕션 소스만 —
src/main·src/debug·src/release와 모듈build.gradle.kts.src/test·src/androidTest·src/testFixtures·src/screenshotTest는 남의 모듈이라도 무관하다(0830 확정). - 경로 → 모듈 키:
feature/<x>/**→x,core/**→core,app/·build-logic/·konsist/·.github/·루트 gradle →platform.docs/·README는 소유자 없음. 담당은reconcile-issue-metadata.mjs의ASSIGNEE_BY_MODULE그대로 — 지도가 한 곳이다. - 수신자 홈은 refactor(home,receiver): 수신자 홈을 feature:home 으로 옮긴다 (#1462) #1724 가
feature/home/…/receiver/로 옮겨 경로가 곧 담당이 됐다. 예외 표가 필요 없다. - 봇 작성자 면제.
issue-assignee-exempt라벨이 이 가드도 면제한다 — 라벨의 뜻이 「담당자 대조 우회」라 같은 뜻이고, 라벨 하나로 이슈 담당·파일 담당 두 대조를 함께 넘긴다. fix(core-ui,app): 다크 팔레트 확정까지 팔레트·시스템바를 라이트로 잠근다 (#1873) #1723 이 그 예다. - 위 3건 중 refactor(core): 수신자 거절 예외가 서버 원문을 접근자로 열지 않게 한다 (#1855) #1858·fix(receiver): 미구현 내보내기를 성공이 아니라 실패로 닫는다 (#1726) #1629 는 다음 push 에서 red 가 된다. 파일 1건씩이라 라벨을 붙이거나 그 파일을 떼어 인계하는 것 중 작성자가 고른다.
F 의 스캐너
[com.afternote…] 링크를 패키지 → 타입 사슬 → 최상위 callable 순으로 해석한다. 0903 스캔의 오탐 두 종을 미리 막는다 — 확장 함수 수신자를 심볼로 오인하지 않게 마지막 이름만 취하고, 패키지 링크는 접두 탐색 전에 패키지 집합에서 먼저 본다. 끊긴 링크마다 같은 이름의 현재 선언 위치를 후보로 같이 찍어 «이동인가 소멸인가»를 판정할 수 있게 한다. 소멸이면 경로 정정이 아니라 링크를 걷는다.
완료 조건
- 가드 4종이 develop 에서 초록이고, 각각 위반을 심으면 그 가드만 red 가 된다(변이 검증을 PR 본문에 남긴다).
- A 는
issue-assignee-exempt라벨로 통과하는 경로가 있고, 봇 PR 을 막지 않는다. - F 는 잔여 1건을 함께 고쳐 0건으로 들어간다.
자식 이슈
No response
참고
- 넣지 않은 것 두 가지. ①
enableEdgeToEdge↔adjustResize매니페스트 가드 — fix(core-ui,app): 인증 흐름에서 키보드가 하단 CTA 를 덮지 않게 IME inset 을 전달한다 (#1849) #1853 이verify-android-manifest.mjs에IME_RESIZE_REQUIRED_ACTIVITIES로 이미 넣었다(회원가입·인증 흐름에서 키보드가 하단 「다음」 버튼을 덮는다 — IME inset 미전달로 imePadding() 이 무효 #1849). ② androidTest 의Fake*.strict()금지 — 실측 114건/109파일로strict()가 androidTest 의 표준 패턴이고, 함정은 «Hilt 로 심은 strict 페이크를 프로덕션이 runCatching 없이 탄다»는 의미적 조건이라 기계 규칙으로 쓰면 정상 114건이 red 가 된다. - F 는 docs(afternote): 평탄화 이후 끊긴 KDoc 참조 13건 정정 — author.detail 옛 경로 잔재 (#1092 후속) #1775·docs: 해석되지 않는 KDoc FQN 링크 15건 정정 — 전수 스캔으로 찾은 #1775 밖 잔재 #1783·docs(mindrecord,receiver): 끊긴 KDoc 링크 2건 인계 — 담당 모듈이 달라 #1783 에서 분리 #1784 의 링크 수정 PR(docs(afternote): 평탄화 이후 끊긴 KDoc 참조를 고친다 (#1775) #1776·docs: 해석되지 않는 KDoc FQN 링크 15건을 실제 선언 위치로 맞춘다 (#1783) #1785·docs(mindrecord,home): 끊긴 KDoc 링크 2건을 실제 선언 위치로 맞춘다 (#1784) #1881)이 먼저 들어가야 초록이다. 그래서 그 셋에
blocked_by를 건다 — docs(afternote): 평탄화 이후 끊긴 KDoc 참조를 고친다 (#1775) #1776·docs: 해석되지 않는 KDoc FQN 링크 15건을 실제 선언 위치로 맞춘다 (#1783) #1785 는 큐에 있다. - A 의 이슈 단위 담당 대조는 PR 작성자와 대표 Issue 담당자 대조 게이트 도입 #1366 이 도입했다. 이 이슈는 그 옆에 파일 단위 대조를 세우는 것이지 대체가 아니다.
- 이 4건은 0904 CI 자문(release(platform): main 릴리스 게이트 2종이 머지를 못 막는다 — AAB preflight 비필수·mock cleanup 사후 (#849·#684 후속) #1877 계열) 뒤 「메모리 중 GitHub Actions 로 옮길 것」 을 전수 검토한 결과다. 옮기지 않은 나머지(정규식
\d·ErrorReporter 단언·LaunchedEffect 취소·Robolectric 함정)는 패턴 지식이라 규칙화가 안 된다.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:platformCI·빌드·릴리스·저장소 운영 영역CI·빌드·릴리스·저장소 운영 영역maintenanceCI·빌드·의존성·저장소 운영 유지보수CI·빌드·의존성·저장소 운영 유지보수
Activity
style(konsist): 신설 가드 두 파일을 ktlint 형식에 맞춘다 (#1889)
style(konsist): 신설 가드 두 파일을 ktlint 형식에 맞춘다 (#1889)
fix(ci): 모듈 담당 가드가 골든 소스셋을 프로덕션으로 읽지 않게 소스셋 이름으로 판정한다 (#1889)
fix(ci): 모듈 담당 가드가 이관 소급 경계를 함께 읽게 한다 (#1889)
Merge pull request #1890 from Afternote/chore/1889-ci-guards
fix(home): 수신자 홈 부분 실패 회귀를 계약 옆 모듈 테스트로 옮긴다
fix(mindrecord): 추억 공간 상세 왕복 회귀를 계약 옆 모듈 테스트로 옮긴다
fix(mindrecord): 추억 공간 상세 왕복 회귀를 계약 옆 모듈 테스트로 옮긴다
fix(home): 수신자 홈 부분 실패 회귀를 계약 옆 모듈 테스트로 옮긴다