|
1 | | -# 백로그 1차 분류표 |
| 1 | +# 백로그 분류표 |
2 | 2 |
|
3 | | -이 문서는 2026-03-20 기준으로 열려 있는 GitHub PR 1개, 이슈 34개를 유지보수 재가동 관점에서 다시 묶은 결과다. |
| 3 | +이 문서는 2026-03-21 기준으로 열려 있는 GitHub 이슈 30개를 유지보수 재가동 관점에서 다시 묶은 결과다. |
4 | 4 | 상태 이름은 `docs/maintenance/issue-triage.md`의 공통 분류를 따른다. |
5 | 5 |
|
6 | 6 | ## 요약 |
7 | 7 |
|
8 | 8 | | 항목 | 수량 | 판단 | |
9 | 9 | | --- | --- | --- | |
10 | | -| 오픈 PR | 1 | 오래된 자동 bump PR과 `#728`에 흡수된 PR은 정리했고, `#726`도 현재 릴리스 워크플로에 superseded 되었다 | |
11 | | -| 오픈 이슈 | 34 | 표면상 34개지만, 실제 활성 작업 묶음은 대략 10~15개 수준이고, 일부는 `future-scope` 라벨로만 추적한다 | |
12 | | -| 즉시 닫기/대체 가능 후보 | 감소 | SWF 중복 이슈와 구형 Android 지원 이슈까지 포함해 일부 정리했다 | |
13 | | -| 즉시 구현 후보 | 소수 | 릴리스 파이프라인, storage 정책 마감, crash 재현 클러스터가 우선이다 | |
14 | | - |
15 | | -## 오픈 PR 분류 |
16 | | - |
17 | | -| PR | 제목 | 제안 상태 | 판단 | 다음 액션 | |
18 | | -| --- | --- | --- | --- | --- | |
19 | | -| `#728` | Codex/maintenance baseline | 진행 중 | 현재 유지보수 기준선 PR이다 | 리뷰 반영 후 병합 기준으로 사용 | |
| 10 | +| 오픈 PR | 0 | 유지보수 기준선 PR `#728`은 이미 `master`에 병합되었다 | |
| 11 | +| 오픈 이슈 | 30 | 표면상 30개지만, 실제 활성 작업 묶음은 대략 10개 안팎이고 일부는 `future-scope`로만 추적한다 | |
| 12 | +| 즉시 닫기/대체 가능 후보 | 완료 | `#728`로 직접 커버된 이슈 8건은 병합 직후 정리했다 | |
| 13 | +| 즉시 구현 후보 | 소수 | 릴리스 운영, storage 정책 마감, large-file / `.so` 재현 클러스터가 우선이다 | |
20 | 14 |
|
21 | 15 | ## 최근 정리 완료 |
22 | 16 |
|
23 | 17 | | 항목 | 처리 | 이유 | |
24 | 18 | | --- | --- | --- | |
| 19 | +| PR `#728` | 병합 | 유지보수 기준선, SAF 전환, release/preview workflow, instrumentation merge gate, 여러 crash/UX 완화를 `master`에 반영 | |
25 | 20 | | PR `#723`, `#724`, `#725`, `#726`, `#727` | 닫음 | `#728`에 흡수되었거나 현재 release/preview workflow로 대체됨 | |
26 | 21 | | PR `#704`, `#701`, `#699`, `#695`, `#693`, `#692`, `#677`, `#637`, `#615`, `#565` | 닫음 | 오래된 자동 bump/alpha 제안으로 현재 유지보수 기준선보다 뒤처짐 | |
27 | 22 | | 이슈 `#112` | 닫음 | SWF 요청은 `#721`로 통합 | |
|
30 | 25 | | 이슈 `#376`, `#490` | 닫음 | crash stack이 가리키던 예전 binary fragment/ViewPager2 UI는 현재 Compose 탭으로 대체되었고, 남아 있던 죽은 layout과 의존성도 제거함 | |
31 | 26 | | 이슈 `#438` | 닫음 | chooser 정렬이 empty label을 안전하게 처리하도록 이미 maintenance 브랜치에서 수정됨 | |
32 | 27 | | 이슈 `#672` | 닫음 | crash stack이 가리키던 `ProjectOverviewFragment` binding 경로는 현재 Compose 기반 overview 화면으로 대체되어 더 이상 활성 코드 경로가 아님 | |
33 | | -| 이슈 `#717`, `#710`, `#582`, `#158` | 닫음 | 현재 유지보수 스코프를 넘는 요청이거나 내용이 너무 약해 baseline 유지보수 백로그로 가져가기 어려움 | |
| 28 | +| 이슈 `#720`, `#670`, `#396`, `#348`, `#160`, `#159`, `#129`, `#123` | 닫음 | `#728`에 포함된 변경이 `master`에 병합되어 post-merge 정리 완료 | |
34 | 29 | | 이슈 `#162`, `#529`, `#706`, `#491` | reopen + `future-scope` | 지금 당장 하지는 않지만 나중에 다시 볼 수 있는 장기 기능 요청으로 분리 추적 | |
| 30 | +| 이슈 `#717`, `#710`, `#582`, `#158` | reopen + `future-scope` | 현재 baseline 유지보수 범위는 아니지만 장기 검토 대상으로는 남겨둠 | |
35 | 31 |
|
36 | 32 | ## 오픈 이슈 클러스터 |
37 | 33 |
|
38 | 34 | | 작업 묶음 | 관련 이슈 | 제안 상태 | 판단 | 다음 액션 | |
39 | 35 | | --- | --- | --- | --- | --- | |
40 | | -| 기준선 PR로 이미 다루는 이슈 | `#670`, `#396`, `#348` | `covered-by-open-pr` | 현재 `#728`에서 이미 수정됨 | `#728` 병합 후 정리 | |
41 | 36 | | 최신 Android storage 정책 | `#95` | `planned-fast-follow` | 핵심 유지보수 항목이며 이미 SAF 전환을 시작했다 | 앱 전체 import/open 경로를 SAF 중심으로 계속 이관 | |
42 | 37 | | 릴리스 산출물 부재 | `#719` | `planned-fast-follow` | 코드 문제보다 릴리스 파이프라인 문제다 | CI artifact, preview prerelease, formal release 흐름으로 운영 정리 | |
43 | 38 | | 대용량/메모리/RecyclerView 크래시 | `#219`, `#235`, `#442`, `#523` | `planned-fast-follow` | `#728`에서 큰 파일 byte cache 제한과 문자열 검색 결과 상한/stable key를 먼저 넣었다 | `#728` 병합 후 실제 150MB 파일과 긴 문자열 리스트로 재검증하고 나머지 OOM 경로를 분리 | |
44 | | -| 회전/상태 복원 크래시 | `#160` | `covered-by-open-pr` | `#728`에서 Activity 재생성 시 외부 import intent 재처리를 막는 1차 가드를 넣었다 | `#728` 병합 후 실제 회전 회귀를 확인하고 정리 | |
45 | | -| `.so`/ELF/autosetup | `#514`, `#543`, `#576`, `#137` | `covered-by-open-pr` | `#728`에서 64-bit ELF machine type 매핑과 override autosetup 재적용 경로를 먼저 수정했다 | `#728` 병합 후 실제 `.so` 샘플로 재검증하고 남는 parser 문제만 분리 | |
46 | | -| 구형 Android archive 감지 크래시 | `#507`, `#508` | `covered-by-open-pr` | `#728`에서 archive 확장자 fast path와 `NoClassDefFoundError` 방어를 넣어 구형 Android의 Commons Compress 감지 크래시 경로를 우회했다 | `#728` 병합 후 Android 6~7 계열에서 archive chooser와 open 경로를 재확인하고 정리 | |
47 | | -| project-relative path assertion 크래시 | `#512` | `covered-by-open-pr` | `#728`에서 drawer/tab 경로가 project 바깥 항목을 열려다 `getRelPath()` 예외로 죽지 않도록 null-safe guard를 넣었다 | `#728` 병합 후 stale project/drawer entry에서 실패 메시지로만 처리되는지 확인하고 정리 | |
| 39 | +| `.so`/ELF/autosetup | `#514`, `#543`, `#576`, `#137` | `planned-fast-follow` | `#728`에서 64-bit ELF machine type 매핑과 override autosetup 재적용 경로를 먼저 수정했다 | 실제 `.so` 샘플로 재검증하고 남는 parser 문제만 분리 | |
| 40 | +| 구형 Android archive 감지 크래시 | `#507`, `#508` | `planned-fast-follow` | `#728`에서 archive 확장자 fast path와 `NoClassDefFoundError` 방어를 넣어 구형 Android의 Commons Compress 감지 크래시 경로를 우회했다 | Android 6~7 계열에서 archive chooser와 open 경로를 재확인하고 정리 | |
| 41 | +| project-relative path assertion 크래시 | `#512` | `planned-fast-follow` | `#728`에서 drawer/tab 경로가 project 바깥 항목을 열려다 `getRelPath()` 예외로 죽지 않도록 null-safe guard를 넣었다 | stale project/drawer entry에서 실패 메시지로만 처리되는지 확인하고 정리 | |
48 | 42 | | crash report 저신호 묶음 | `#716` | `needs-repro` | 본문에 구체적인 stack trace가 없고 현재 정보만으로는 코드 경계를 특정하기 어렵다 | 최신 preview build 기준 재현 단계와 대상 파일을 다시 받아야 한다 | |
49 | 43 | | SWF 요청 | `#721` | `planned-fast-follow` | 모바일 SWF 확장/디컴파일 요구는 남아 있지만 추적 스레드는 하나로 줄었다 | 기준선 병합 후 포맷 확장 우선순위에서 다시 평가 | |
50 | | -| 포맷 확장 요청 | `#120`, `#116`, `#124`, `#129` | `planned-fast-follow` | `#129`는 `#728`에서 generic archive extraction으로 먼저 흡수했고, 나머지는 기준선 복구 후가 맞다 | `#129`는 `#728` 병합 후 정리하고 나머지는 포맷별 난이도와 수요를 다시 평가 | |
51 | | -| export/저장 유틸 | `#123`, `#159`, `#720` | `covered-by-open-pr` | `#728`에서 project ZIP export, detail `.txt` 저장, import 파일명 정규화/테스트를 함께 정리했다 | `#728` 병합 후 실제 기기에서 export/save 동작 확인하고 정리 | |
| 44 | +| 포맷 확장 요청 | `#120`, `#116`, `#124` | `planned-fast-follow` | 기준선 복구 이후에 다시 잡는 편이 맞다 | 포맷별 난이도와 수요를 다시 평가 | |
52 | 45 | | 장기 기능 요청 | `#162`, `#529`, `#706`, `#491` | `future-scope` | 현재 유지보수 baseline을 넘지만 나중에 다시 볼 가치가 있는 기능 요청이다 | 열린 상태로 두고 `future-scope` 라벨로만 추적 | |
53 | | -| 모호한 기능 요청 | `#596`, `#532`, `#425` | `obsolete-or-policy-invalid` | 일부는 여전히 수요는 있지만 설명이 짧고 구현 범위가 불명확하다 | baseline 병합 후 export/search UX 개선 트랙으로 흡수할지 다시 판단 | |
| 46 | +| 장기 검토 기능 요청 | `#717`, `#710`, `#582`, `#158` | `future-scope` | 지금 유지보수 baseline 범위는 아니지만 future backlog로 남겨두기로 했다 | 열린 상태로 두고 `future-scope`로만 추적 | |
| 47 | +| 모호한 기능 요청 | `#596`, `#532`, `#425` | `planned-fast-follow` | 일부는 수요가 있지만 설명이 짧고 구현 범위가 불명확하다 | export/search UX 개선 트랙으로 흡수할지 다시 판단 | |
54 | 48 | | 하이라이터 개선 | `#97` | `planned-fast-follow` | 품질 개선 항목으로는 타당하다 | 기준선 복구 후 UI/텍스트 렌더링 개선 트랙으로 이동 | |
55 | 49 |
|
56 | 50 | ## 실제 우선순위 |
57 | 51 |
|
58 | 52 | | 우선순위 | 항목 | 근거 | |
59 | 53 | | --- | --- | --- | |
60 | | -| 1 | `#728` 병합 가능 수준까지 정리 | 현재 기준선 PR이 병목이다 | |
61 | | -| 2 | `#719` preview/release 운영 정리 | 최신 빌드를 배포할 수 있어야 이슈 종료도 설득력이 생긴다 | |
62 | | -| 3 | `#95` storage 정책 마감 | 최신 Android 대응의 핵심이다 | |
63 | | -| 4 | 메모리/회전 crash 클러스터 재현 | 오래된 crash report를 실질 작업 묶음으로 줄일 수 있다 | |
64 | | -| 5 | 포맷 확장 요청 재정렬 | 실제 유지보수 범위와 별도 연구 과제를 나눠야 한다 | |
| 54 | +| 1 | `#719` preview/release 운영 정리 | 최신 빌드를 배포할 수 있어야 이슈 종료도 설득력이 생긴다 | |
| 55 | +| 2 | `#95` storage 정책 마감 | 최신 Android 대응의 핵심이다 | |
| 56 | +| 3 | large-file / `.so` 재현 클러스터 정리 | 오래된 crash report와 parser 관련 이슈를 실질 작업 묶음으로 줄일 수 있다 | |
| 57 | +| 4 | 포맷 확장 요청 재정렬 | 실제 유지보수 범위와 별도 연구 과제를 나눠야 한다 | |
65 | 58 |
|
66 | 59 | ## 닫기 전 체크 규칙 |
67 | 60 |
|
68 | 61 | | 상황 | 원칙 | |
69 | 62 | | --- | --- | |
70 | | -| 이미 `#728`에 포함된 이슈/PR | `#728` 병합 후 superseded로 정리 | |
| 63 | +| 이미 `master`에 병합된 유지보수 기준선으로 커버된 이슈/PR | 병합 직후 닫고 관련 PR을 근거로 남긴다 | |
71 | 64 | | 오래된 dependabot PR | 그대로 병합하지 않고 새 업그레이드 작업으로 대체 | |
72 | 65 | | crash report | 재현 정보가 없으면 `needs-repro` 코멘트를 먼저 남긴다 | |
73 | 66 | | 기능 요청 | 유지보수 핵심 범위와 별도 제품 수준 요청을 분리한다 | |
0 commit comments