diff --git a/IMPACT.md b/IMPACT.md
index 95b5491..4958cde 100644
--- a/IMPACT.md
+++ b/IMPACT.md
@@ -69,6 +69,7 @@ fixearly가 **실제 오픈소스에서 찾아낸 이슈**와 그 결과. 점수
| `채우기만 하고 읽지 않는 Map` | [Babylon.js · 26.1k★](https://github.com/BabylonJS/Babylon.js) | 쓰기만 하는 컬렉션 (set 만 하고 읽는 곳 0 — DFS 는 연결점의 소유 블록을 직접 따라간다) | [#18980](https://github.com/BabylonJS/Babylon.js/pull/18980) | ✅ merged | +1 |
| `채우기만 하고 읽지 않는 Map 3개` | [cherry-studio · 52.4k★](https://github.com/CherryHQ/cherry-studio) | 쓰기만 하는 컬렉션 (set 만 하고 읽는 곳 0 — 생긴 뒤 한 번도 읽힌 적 없다) | [#21363](https://github.com/CherryHQ/cherry-studio/pull/21363) | ⚪ awaiting review | — |
| `검증 에러가 dev 서버를 죽임` | [react-router · 56.6k★](https://github.com/remix-run/react-router) | 버려진 Promise (throw 하는 async 검증을 await 없이 불러 unhandled rejection 으로 프로세스 종료) | [#15591](https://github.com/remix-run/react-router/pull/15591) | ⚪ awaiting review | — |
+| `리팩터 뒤 남은 조상 Set` | [pdf.js · 54k★](https://github.com/mozilla/pdf.js) | 쓰기만 하는 컬렉션 (2021 usehref 리팩터로 소비자 둘이 ancestors 로 바뀐 뒤 남은 Set) | [#22102](https://github.com/mozilla/pdf.js/pull/22102) | ⚪ awaiting review | — |
## 규칙
diff --git a/PR-QUEUE.md b/PR-QUEUE.md
index 716a7c0..f743d04 100644
--- a/PR-QUEUE.md
+++ b/PR-QUEUE.md
@@ -338,13 +338,14 @@ CLA 는 봇 댓글(`@microsoft-github-policy-service agree`)뿐 · 이슈 없는
| PR | 축 | 상태 | 경과 / 외부 머지 중앙값 |
|---|---|---|---|
| [cherry-studio#21363](https://github.com/CherryHQ/cherry-studio/pull/21363) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 오늘 / 보통 1일 |
+| [pdf.js#22102](https://github.com/mozilla/pdf.js/pull/22102) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 오늘 / 보통 1일 |
| [n8n#40311](https://github.com/n8n-io/n8n/pull/40311) | O(n²) | ⚪ 대기 | 1일째 / 보통 2일 |
| [react-router#15591](https://github.com/remix-run/react-router/pull/15591) | 버려진 Promise | ⚪ 대기 | 오늘 / 보통 4일 |
| [strapi#27893](https://github.com/strapi/strapi/pull/27893) | 버려진 Promise | ⚪ 대기 | 5일째 / 보통 3일 |
| [tailwindcss#20525](https://github.com/tailwindlabs/tailwindcss/pull/20525) | 버려진 Promise | ⚪ 대기 | 10일째 / 보통 1일 · 보류 |
-| [astro#18149](https://github.com/withastro/astro/pull/18149) | O(n²) | ⚪ 대기 | 10일째 / 보통 2일 · 보류 |
+| [astro#18149](https://github.com/withastro/astro/pull/18149) | O(n²) | ⚪ 대기 | 10일째 / 보통 3일 · 보류 |
-**열린 것 6건(보류 2건 빼면 4건).** 판정 난 52건 중 머지 27 · 승인 0 · 닫힘 25.
+**열린 것 7건(보류 2건 빼면 5건).** 판정 난 52건 중 머지 27 · 승인 0 · 닫힘 25.
**2026-08-10 준비** — astro 후보를 손검증까지 끝내고 브랜치만 만들어 뒀다(하루 1건이라
@@ -780,11 +781,12 @@ changeset(`astro: patch`)을 같이 넣는다. 브랜치는 `fix/stack-trace-reg
| vscode | 89% | 90% | 0.1일 | 8/9 | 표본 부족 | 판정 경험 있음 · CLA 는 봇 댓글로 서명(@microsoft-github-policy-service agree) · 이슈 연결 권장이지만 정리 PR 은 이슈 없이도 머지 사례(#334095) · 버그 PR 은 메인테이너가 이슈 먼저 요구할 수 있음 |
| cherry-studio | 89% | 87% | 0.2일 | 8/9 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 |
| pnpm | 88% | 62% | 0.3일 | 7/8 | 표본 부족 | 판정 경험 있음 · AI 작성 PR 본문에 agent disclosure 필수 · 전체 저장소 대신 영향 패키지 테스트 실행 |
-| openstatus | 86% | 86% | 1.5일 | 6/7 | 표본 부족 | 판정 경험 있음 |
-| astro | 85% | 88% | 2.2일 | 11/13 | **1차 통과** | 열린 PR 있음 — 저장소당 1건 · 사용자에게 보이는 변화면 changeset 필요 — 내부 전용 변경은 changeset 없이 머지된다(#17430 refactor·#16734 chore 가 changeset 0) · AI 정책 없음 · **포크 PR 워크플로가 승인 게이트가 아니다**(2026-09-13 #17987 제출 직후 CI 가 바로 돌았다 — angular·nx 와 다르다) · **`Test (Smoke)` 는 `smoke/docs` 의존성을 pkg.pr.new 커밋 핀에서 받는다** — 그 빌드가 만료되면 `ERR_PNPM_FETCH_404` 로 죽는다(2026-09-13 #17987 에서 밟음). PR 내용과 무관하다 |
| angular | 85% | 69% | 2.8일 | 11/13 | **1차 통과** | 판정 경험 있음 · CLA 서명 필요 — 2026-09-11 yoominho91 서명 완료(cla/google 통과) |
+| grafana | 84% | 90% | 0.8일 | 21/25 | **1차 통과** | 판정 경험 있음 · 게이트 0 — 2026-06-22 부터 모든 커밋 서명 필수, 미서명 PR 은 닫는다(CONTRIBUTING, 에이전트 작성 PR 포함). CLA assistant 서명도 필요 |
| langfuse | 83% | 88% | 0.2일 | 5/6 | 표본 부족 | 판정 경험 있음 |
-| grafana | 83% | 90% | 0.8일 | 20/24 | **1차 통과** | 판정 경험 있음 · 게이트 0 — 2026-06-22 부터 모든 커밋 서명 필수, 미서명 PR 은 닫는다(CONTRIBUTING, 에이전트 작성 PR 포함). CLA assistant 서명도 필요 |
+| pdf.js | 83% | 82% | 1.0일 | 5/6 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 |
+| openstatus | 83% | 83% | 2.5일 | 5/6 | 표본 부족 | 판정 경험 있음 |
+| astro | 82% | 88% | 2.5일 | 9/11 | **1차 통과** | 열린 PR 있음 — 저장소당 1건 · 사용자에게 보이는 변화면 changeset 필요 — 내부 전용 변경은 changeset 없이 머지된다(#17430 refactor·#16734 chore 가 changeset 0) · AI 정책 없음 · **포크 PR 워크플로가 승인 게이트가 아니다**(2026-09-13 #17987 제출 직후 CI 가 바로 돌았다 — angular·nx 와 다르다) · **`Test (Smoke)` 는 `smoke/docs` 의존성을 pkg.pr.new 커밋 핀에서 받는다** — 그 빌드가 만료되면 `ERR_PNPM_FETCH_404` 로 죽는다(2026-09-13 #17987 에서 밟음). PR 내용과 무관하다 |
| storybook | 82% | 72% | 3.9일 | 9/11 | 1차 통과 · 후순위(느림) | 판정 경험 있음 · 게이트 0 — danger 가 `ci:*`·`qa:*` 라벨을 요구하는데 메인테이너만 붙일 수 있다 (#35829 가 25일째 빨간불이라 접었다) · CONTRIBUTING 'Never let an LLM speak for you': 사람 개입 없는 PR 은 3일 뒤 자동 닫힘 |
| terser | 79% | 72% | 5.5일 | 26/33 | 컷 | — |
| postcss | 78% | 78% | 0.2일 | 28/36 | 컷 | — |
@@ -794,7 +796,7 @@ changeset(`astro: patch`)을 같이 넣는다. 브랜치는 `fix/stack-trace-reg
| immich | 75% | 44% | 1.0일 | 3/4 | 표본 부족 | 판정 경험 있음 · 게이트 0 — `changelog:*` 라벨이 메인테이너 전용 |
| mongoose | 75% | 77% | 2.2일 | 15/20 | 컷 | 판정 경험 있음 |
| react-router | 69% | 80% | 3.6일 | 20/29 | 컷 | 열린 PR 있음 — 저장소당 1건 |
-| twenty | 67% | 71% | 0.7일 | 2/3 | 표본 부족 | 판정 경험 있음 |
+| twenty | 67% | 73% | 0.7일 | 2/3 | 표본 부족 | 판정 경험 있음 |
| next.js | 67% | 75% | 3.9일 | 8/12 | 컷 | 커밋 서명 필수 · 기여 가이드가 사소한 정리 PR 은 닫힐 가능성이 높다고 명시 · PR 템플릿: 외부 기여자 PR 설명은 사람이 직접 써야 함 |
| outline | 67% | 67% | 6.2일 | 2/3 | 표본 부족 | 판정 경험 있음 · AI 정책 없음 · 수락률 38%(3/8)·중앙 5.9일 로 로테이션 컷 |
| nx | 62% | 74% | 0.5일 | 8/13 | 컷 | 판정 경험 있음 · 열린 PR 있음 — 저장소당 1건 · PR 제목을 `scripts/validate-pr-title.js` 가 검증한다 · **포크 PR 의 워크플로는 메인테이너 승인이 있어야 돈다**(2026-09-12 확인: 네 워크플로 전부 `action_required`). 빨간불처럼 보여도 우리 코드가 깬 게 아니다 — 재푸시하면 승인만 다시 걸린다 |
@@ -885,6 +887,8 @@ changeset(`astro: patch`)을 같이 넣는다. 브랜치는 `fix/stack-trace-reg
| redux · zustand | 빈 catch 각 1 | **탈락**(2026-10-07). 다듬어진 라이브러리라 후보 자체가 없다 |
| react-router | floating 3 · O(n²) 3 · 순차 await 2 | **#15591 제출**(floating). `validateSsrFalsePrerenderExports` 가 throw 하는 async 인데 await 없이 불려 dev 서버가 죽는다 — npm 8.4.0 으로 재현, 통합 테스트 수정 전 실패·후 통과. O(n²) 는 matches 수(작음) |
| pixijs · trpc · sequelize | O(n²)·순차 await | **보류**(2026-10-07). pixijs loadDDS 순차 await 는 포맷 감지가 캐시라 첫 호출만 이득. sequelize `belongsToMany.has` 는 targets×결과 isEqual 이차지만 보통 n 이 작다 |
+| pdf.js | 쓰기만 하는 컬렉션 1 · O(n²) 3 · for...in 1 | **#22102 제출**(newAncestors). 11573ddd1(2021-05 usehref) 이 소비자 둘을 ancestors 로 바꾼 뒤 선언만 남았다. evaluator for...in 은 glyphsWidths 가 객체라 정상 |
+| styled-components · alpine · hls.js | O(n²)·빈 catch | **보류**(2026-10-07). alpine mutation 의 removed×added `.contains` 는 큰 리스트 교체에서만 커진다. graphql-js 는 EasyCLA 라 사용자 서명 필요 |
## 게이트 0 에서 막힌 곳
diff --git a/data/repo-avatars.json b/data/repo-avatars.json
index 6998837..a4127dd 100644
--- a/data/repo-avatars.json
+++ b/data/repo-avatars.json
@@ -34,5 +34,6 @@
"orval-labs/orval": "data:image/png;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACAAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APfycDJ6VyupePdGthPBZ3S3V2mEAjUsiseBkjqM4zisr4p6tc2um2OlWztF/aEhWSXOAEGMqT2yWGfYGuLHhlrNpbe1mdpSN4aWEwsdjAEAEn5SSMN3K130MNTdP2tWVl/lu2a04czR0V34w8Z6TbO7QabqAVi7OiOCi+m3IPHrzjvXb+FvEMHibQoNQi2JKwxNCHDGJgSMH8sjPYivHrjUtY0y8D3Ekhcc7JOh9x6fhXc/DTR9pu9fXEKXyhDaoMKrAnLfQ8EDtuNKdCUaHNV5b9JR2flb8b7GtenCKvE6Pxdqmj6TpCza1GzwvIEQJHubcQenpwDzkVH4d0fQpNFFzptqyW94gIdiwk29uScj2xWvqml2es6dLYX0Ilt5RhlPUehB7EVW0HS5dE0uPTTP9oggysEjDD7c8K3YkdMjH0rnUoqno2peujRz82ljyDXJb22Md1f2sjLaXJhQ3ERUTryR1HJGOfqK9a8KoRoUU20oLj98qnqAQMfyqPVvDNt4hubeTVlDw27booEY4J77jxnOBxit1VCqFUAADAA7UV6lOtySUeVxuvLXX+tjWdVuHJ3P/9k=",
"BabylonJS/Babylon.js": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEnElEQVR4nMRXW0yT5x9+vgOWnr62UA/Qv0XFwF8zp8YxmFOcZB5wiMOtM+LmxRy67Q5dluiFmTfExAtDlrhMJsGLMVeH7RYXxqLgFlFwyoBljCFykAmVHi20/fjafl1aAik92XLInqQX7+/3vs/veQ9f3+elfT4f/kuQcxns6u7Id7S3FM2Fg5jNCriNhgxrXfU5Z8cdDQFAkL2+QaEpOy5QrehaUAE86xLZftKeHLupPwGPWzgjSVJuheboBea1Nz4DYJtfATxPjLU2ldr0l8/ydsv/QtOkWArZ3nfBbNkNUJQRwGkAVQC8cxbA9nXnWLQXK92DPa+EJUkKkvw9kBeVghJLQ7MdAMoBNM1KgMdqTrPqaiqcvzUdjnRYk9dshEJThkVp6ujsXi/GWpvqklev/TRpSXpfXAJ4jhPYb+jK7Q3aUz5uImxa9OJ0KN4+AtGLubEmBld3O6xXq+AeHgQompUW7DsvKzxQQQlF41EFjHd1brPVVl7ymp9mhilNFkFWeACygmKATopZ3PT153DcbgiLk1L5iOydjz9kXtr8w3QsuMOTX1vfHPrzaSbnDq5MQLx5B1RnvoRs51vPLe5HSsn7kBbs8x/I6ZjHAww/sqUN1P9SGtyXDh3scE7+FDIgbdMapB48BoF69XOLzpipSIwUTRkkWwthuVqFkeYHsNgA/2ILQ/tGI7E+A8wvbAHLKKIWsnV1w/ygLWrew8jBbimC2TpZPBLCVmAGgZvDk6E+WMyjWJauhlAoDsRZkwm9l2pgaLwVaCvzXkbW0Q8gUqUH2m5uAhaLEazLEeCIhZgCpuByjqO/twtyhRITzffRX3sFPDsxnTe13IP5fhvUJcVILSnCmN0aD20ACV1GNqsJAzr9jOJT8Hk8GKzTJ1Q8YQELgbi2IBKSaECZCpAkYDQDXOytnj8BJAHIUyY/U4KYjKlVwLMxBD61hPkSHbB0Vw4UyqTp4pj8r4JMTiFjf37CAhJeAX7Tq3Blr0PS3RugH/4Bvw5f5lpgezGolMULL8APn4QBt2M/POtykExSIFb9fzY0AcTcAnt9I7h/hqPm+WXLgZXZUfOcYRSjV3QxBcRcAffAEEyVX0GYswFMYQEoqSQm2RS8ThcsP/4M263bgJePX8DivFy98W7LXtYQdB37fHDd+x1sRxckr2+FZGsuCDqybh/Pw97cCvP39fCOO8LyixTykaXbt9UGx8IMiZfjBI+/05X3f6s9xbPhhoRSpoDZuxPCtVmB4y8SS0EQBJw9j2DU6iNuGUHTrLpk3/mVBw9U0OIYhiQYrMmc1nuppsLQGNmSCbIywRTvgkguh+nadTjaOiPyKPNydVlHj3wiUsVpyUJh+6s7p+eLi5X2vyOZUhIESQbugVCIM9SdWcfKylM3bWyMxR+3LR++2VTaW335LGcJt+XBoKUS06r3Dp1eXrTnIkFRc7flwfC4XKKBb7QnH1/Tn+DdMx8mBEW5VXt2X1h1+NCZRQwT95U4q6eZc8SQ8bCq+pyx+Y7G31ZsWN+Q/VHZccmKBX6ahcLS3pHvcbqYJZvzrs+WY04C5gP/BgAA//+cpNe7D6SiLgAAAABJRU5ErkJggg==",
"CherryHQ/cherry-studio": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAEgElEQVR4nLRWy2sTXRQ/596ZTD/T0tIi1FpfVbEUbEM3FV8LRbpRhLpwI3YrlKL+BQoiFEpdVHGjCIILxYULEUQwG221iNJisVojsZHGF8TEPGYyM/eej7lT82hi008+hxCSmbm/3z2/33lcjQYH4W9e7K+iA4D2J4uIln4g/t8ERML78hhQhc9qcdSWSBK5Ui591O+8rovdu53GRiGlLETzhwREksgBcNra8kR5ISyiwOnTdadO6WfOuFQLvqZEAkAQ8RMnAv399sxM6tKl4PHjene3F9n377XAV0HgxQCA9fUAEOjpaRoZ0det84jjcev69Tqs7fJvJCLyxfE1sG7ccN69AwAfXeZy2bExzbIQkZRJ/vurJfBcJbKltIWwpRRSgmmmR0by09PqscxcvQqfP5My3H/HVv5XNXy5REs5QyRaWnhvL29tJduWkQi9epUeG4OhIbGw4L58yThn3d24dSsYhvzyxZme5smkxphWkbhaJbpNxAcGGo4eBc79+3UA7tev6StXMuPjSMQ2baofHtbWry+utG3z3j37/n1A1Bgr5eDnQ6GC7kIpo508+c+RI8DK1GP19XV79piTk9DY2HT+PG9pKdmX9IA6O2UgIGZnOSIrKfIiip+R1NVV199f1S40DN7d3TA0xILB4l0hQAipvgMHD9K2bYJIlu6sFEIQ6QcOFHdmWblw2J6dLeyUAAIdHUVh5ufNp0+FaZLjkOOA62r79ony6it6QCoNjM2bC3d+XrsmJiYQMXDokLZ9uzk5yVpbi+gfPqTOnWNE+b6++sFBTygi1t7u+sn9S6Iykz1mwygGFI8zVUr5x4+tqSk3mVwzMFB46n78yAEYYyIWI8vy97jMueUEqBoAb272/waPHcvcvMmbm4OHD4NhuLGYvbhYeLlu1y7rwQMRjxt793oEiIAov33D3xEgIkd0Z2b0HTuWIEIhvbNTZjKUzcpcTmtrsyIRcBzQdc+9YLDh7Nkfo6N6V5d3UxGIt2+9oEvStBgRB/AIHj0SiUSBU9Fy4Bw1zSuLRCLz8GFhib5hg97TQ0KQ65IQMpWSz57x8gZVIpmKQLcsc3RU/vy5pCkiMIaKQCwuYiSSv33bnpsrcrS3m+EwOY5MJp07d/R83quD6oXmsyFCKmU9eUKMYUuLp4YQyDlrarLCYfj0CYmkphm9vf4SmUi4d+/C8+fw4oWezXrdQsVdLQKFriHqjBnptLh1KzU87Lx+rTU3a2vX8oYGPRRyVR8M7NxZXJLNeu8jGozpFejV5gEiV4ajb9rcHPT1+U/W7N+vb9kCjOklXUjOz2tKW14BXS2CXxzM9wNRTkzIdLrM1VL0Hz/E1NQK6CvNZKaSSjPN3OXLXhZWXvl8bnxct232e/QVh77al9d737zJXLzoxmKlD91oNHPhAn//XmOMrzg3scbRUbnqf6Cjg23c6I3ShQWIRv2EqXR12VVr6CNqfpETyWgUolG/JL2JptKh5uFuFSc7BcQBSI14v2Xh6s6N/+XoqBrAqiDLr79+uv43AAD//y1VRqsr7s/FAAAAAElFTkSuQmCC",
-"remix-run/react-router": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAEeUlEQVR4nIRWzWtdVRA/c85575E2phhE2kC1LdqkaqCLigtBkS4q2IWgG8FPiLhwJaKL1o9F0VX/Ay2VhNRW0j/BhYJQRK2t0bVtLGTRRNNCkt7cMyMzZ87HfTF4L729Oe+9+c38fvPljz75nDFgjDHAT5BbT/JfJp9sv4j4of/4SfmQH56Q6t/SNksUcQyRgpHiUbHXBaghySOhOA8MKEGk/4dhuuBsBoYBiuPplTx/kQyB+McmKjPAHxR61BiU34O6m5nRWx3g25NEUCMUzrEyHfkhSFQkc10AZUdP+cXrO0Sn1F8iBcyEJ8eGBSbIHxBlcmoARAJI/EJiEqAYrp025bgYpTqbKAFoTDGCbF6+A5GqJHsOIucU1WmT07LwkwD4yRpkh1NGKiUAAKbcnQSGRCWngvpoDMobJrEVgIqG+bdWL7CMAVAqsUNSykUiRMSAxmAg1SKyx3VAUGIHAxbEsnMRwAIkgORDJxhSgIABgmmJKBAZlFOUNEUU19TH6LC18MyzT+/ZMxYBjKlahsm5BjmEtbU7i7/9sXJ7hRwHw1QhUk5TSiFbicNaGBkZ+fTMqf5gsD0zd7pC286ev3Dui680CZLOLDIYm6slRjB1ZHJ9Y3N9c7Oq4+FMHQwG/UG/HHj3xsyr31xaWF3523DmkGgeNSAUcoCcZtPy8vKH751y3jnrwEYNVIv0bp6Yfvz1t1+rQVdvr969czcKLgKkNE1FYEUFzs5PPv946rGp/6Wlrj8imp/9GgOKedQYCFlkNknACsg1NnbfI5OP/kdj2OFqmmbx2uLChYUrP1wJoW1DQAxcXRwBwsSBKbbNqQPe9/v93vj4+MFDB5131rqYQusbGz3vZ96dmT463RU2XL54+dLcxY2NzebevaZpmi2+MASTKIJ9+w8DRADrfG/Q750+89ELL56sDc2dm5s/P++ce/Odt15+5SXojotff7p69rOzSzf/2hKA0LZSC1ogbvfY/bEBSj/gHH3/9Aejo6O1idkvZ2/dvNW27S8//rx0Y+nYU8d6/V7+dO/EvhMnn19b+2fx+u9tu8X8RPcFAx6cOGRSfljrd+3edfzEcSfksDRi4rtvv2+aRjsIwP4DD00eOawtPnWJgOHa1etLf96orbPfD+x9WCkCock6570IIDVMUpWpw1v5Rm5RuQ21QS4mB2sAmcmI7KgCxBrHEJygmqoTU2wlHKiURvo02gyS+4V6Q7lVxDQVNuRnBIgBWgaIJ2Xcq7YIJs/uTEVxPPW/iO7ZmlSXidUAqjYAmrws5bHTaRt5bykTJs1jDYL3IiSsnI+hxIYgJACksWlMPRKqiVbNL7M9CE8hZLtVKGJUbqrbP5TZl/afeo8rySMQMQLUTpc1NKb8qRtHZxYAdSnaBpBGv2rA7TruhSq0Lnp615O0Hv95H8j7UGGpXmE8YajYgKQoJDagGpT1FgsGcxydDazSwGgdJDZ0dcgTGKCMxx23a8o7zNCiVwBCUTLFEa1meXPPqEZ9YoqGlup6/eL73wAAAP//MDCs4nZsUIMAAAAASUVORK5CYII="
+"remix-run/react-router": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAEeUlEQVR4nIRWzWtdVRA/c85575E2phhE2kC1LdqkaqCLigtBkS4q2IWgG8FPiLhwJaKL1o9F0VX/Ay2VhNRW0j/BhYJQRK2t0bVtLGTRRNNCkt7cMyMzZ87HfTF4L729Oe+9+c38fvPljz75nDFgjDHAT5BbT/JfJp9sv4j4of/4SfmQH56Q6t/SNksUcQyRgpHiUbHXBaghySOhOA8MKEGk/4dhuuBsBoYBiuPplTx/kQyB+McmKjPAHxR61BiU34O6m5nRWx3g25NEUCMUzrEyHfkhSFQkc10AZUdP+cXrO0Sn1F8iBcyEJ8eGBSbIHxBlcmoARAJI/EJiEqAYrp025bgYpTqbKAFoTDGCbF6+A5GqJHsOIucU1WmT07LwkwD4yRpkh1NGKiUAAKbcnQSGRCWngvpoDMobJrEVgIqG+bdWL7CMAVAqsUNSykUiRMSAxmAg1SKyx3VAUGIHAxbEsnMRwAIkgORDJxhSgIABgmmJKBAZlFOUNEUU19TH6LC18MyzT+/ZMxYBjKlahsm5BjmEtbU7i7/9sXJ7hRwHw1QhUk5TSiFbicNaGBkZ+fTMqf5gsD0zd7pC286ev3Dui680CZLOLDIYm6slRjB1ZHJ9Y3N9c7Oq4+FMHQwG/UG/HHj3xsyr31xaWF3523DmkGgeNSAUcoCcZtPy8vKH751y3jnrwEYNVIv0bp6Yfvz1t1+rQVdvr969czcKLgKkNE1FYEUFzs5PPv946rGp/6Wlrj8imp/9GgOKedQYCFlkNknACsg1NnbfI5OP/kdj2OFqmmbx2uLChYUrP1wJoW1DQAxcXRwBwsSBKbbNqQPe9/v93vj4+MFDB5131rqYQusbGz3vZ96dmT463RU2XL54+dLcxY2NzebevaZpmi2+MASTKIJ9+w8DRADrfG/Q750+89ELL56sDc2dm5s/P++ce/Odt15+5SXojotff7p69rOzSzf/2hKA0LZSC1ogbvfY/bEBSj/gHH3/9Aejo6O1idkvZ2/dvNW27S8//rx0Y+nYU8d6/V7+dO/EvhMnn19b+2fx+u9tu8X8RPcFAx6cOGRSfljrd+3edfzEcSfksDRi4rtvv2+aRjsIwP4DD00eOawtPnWJgOHa1etLf96orbPfD+x9WCkCock6570IIDVMUpWpw1v5Rm5RuQ21QS4mB2sAmcmI7KgCxBrHEJygmqoTU2wlHKiURvo02gyS+4V6Q7lVxDQVNuRnBIgBWgaIJ2Xcq7YIJs/uTEVxPPW/iO7ZmlSXidUAqjYAmrws5bHTaRt5bykTJs1jDYL3IiSsnI+hxIYgJACksWlMPRKqiVbNL7M9CE8hZLtVKGJUbqrbP5TZl/afeo8rySMQMQLUTpc1NKb8qRtHZxYAdSnaBpBGv2rA7TruhSq0Lnp615O0Hv95H8j7UGGpXmE8YajYgKQoJDagGpT1FgsGcxydDazSwGgdJDZ0dcgTGKCMxx23a8o7zNCiVwBCUTLFEa1meXPPqEZ9YoqGlup6/eL73wAAAP//MDCs4nZsUIMAAAAASUVORK5CYII=",
+"mozilla/pdf.js": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAABn0lEQVR4nOyUMU/bQBTH3905PsdOLTdN3aqdKnWp0m6tlEpVl1atYGPhC7CxsiAisvEB+AAMTAys7IyMKANiBAkkFClx5CSWzdl3hwJSFMAONkmEIuU/2e/+9k93/3dPsW0bpik81b/PAXPARKQkLfAS7lRfo66wau27iv8vHyzosWZzq02aIhtAUhR+o9jh/efbirBJ+FWNsSIkKcq8g2Fd/6KdjaK+13u7eDVc5+8Vt2rxz3HUTADkSeU8xA5HYf9VWDj4rQV/9ehLDiQopwx58eeTFkCPGV1tAkD0SemtmOwHBQzkLDJ2utqhTxp83B0MFJZVVtEAQDvwXm27SD79CTEMI3ZBmNhfKiBf6vveoIg8IQzMP5CoTIP/ef4GY1fgtkiMGAAljevoI3F232GHl5YbD9kaYj9p8Edn3ykQIJeRtdYiTsY2HZZUQRTuXclcneXqTJrYXe93kcyP2aYVrVMrpnE+E4BbXD0KRhiQnxh3KoB6EqqbThrnY83+NJ19QHLIoSQXEXZHzZk0SrzJk9LsZzAHvDzgJgAA//9bHIFnsWZ3IAAAAABJRU5ErkJggg=="
}
\ No newline at end of file
diff --git a/data/repo-contributors.json b/data/repo-contributors.json
index d5a2216..bab4c45 100644
--- a/data/repo-contributors.json
+++ b/data/repo-contributors.json
@@ -1,5 +1,5 @@
{
- "generatedAt": "2026-10-07T12:38:36+00:00",
+ "generatedAt": "2026-10-07T12:49:22+00:00",
"method": "GitHub REST contributors?per_page=1&anon=true; last-page count; commit authors, not unique humans",
"repos": {
"Automattic/mongoose": 1088,
@@ -20,6 +20,7 @@
"medusajs/medusa": 586,
"microsoft/vscode": 3258,
"mikro-orm/mikro-orm": 347,
+ "mozilla/pdf.js": 536,
"n8n-io/n8n": 811,
"nocodb/nocodb": 355,
"novuhq/novu": 537,
diff --git a/data/repo-merge-times.json b/data/repo-merge-times.json
index f18b99e..b86e19f 100644
--- a/data/repo-merge-times.json
+++ b/data/repo-merge-times.json
@@ -1,5 +1,5 @@
{
- "generatedAt": "2026-10-07T12:40:05Z",
+ "generatedAt": "2026-10-07T12:50:47Z",
"method": "latest 60 closed PRs; merged non-bot external contributors; medianDays is the one we judge by",
"repos": {
"Automattic/mongoose": {
@@ -169,13 +169,13 @@
},
"grafana/grafana": {
"medianDays": 0.8,
- "averageDays": 9.9,
+ "averageDays": 9.7,
"mergedExternal": 47,
"acceptancePct": 90,
"closedExternal": 52,
- "driveByAcceptancePct": 83,
- "driveByMerged": 20,
- "driveByClosed": 24,
+ "driveByAcceptancePct": 84,
+ "driveByMerged": 21,
+ "driveByClosed": 25,
"sampledClosed": 60
},
"immich-app/immich": {
@@ -255,6 +255,17 @@
"driveByClosed": 8,
"sampledClosed": 60
},
+ "mozilla/pdf.js": {
+ "medianDays": 1.0,
+ "averageDays": 3.0,
+ "mergedExternal": 23,
+ "acceptancePct": 82,
+ "closedExternal": 28,
+ "driveByAcceptancePct": 83,
+ "driveByMerged": 5,
+ "driveByClosed": 6,
+ "sampledClosed": 60
+ },
"n8n-io/n8n": {
"medianDays": 1.5,
"averageDays": 3.9,
@@ -322,14 +333,14 @@
"sampledClosed": 60
},
"openstatusHQ/openstatus": {
- "medianDays": 1.5,
- "averageDays": 2.1,
- "mergedExternal": 6,
- "acceptancePct": 86,
- "closedExternal": 7,
- "driveByAcceptancePct": 86,
- "driveByMerged": 6,
- "driveByClosed": 7,
+ "medianDays": 2.5,
+ "averageDays": 2.4,
+ "mergedExternal": 5,
+ "acceptancePct": 83,
+ "closedExternal": 6,
+ "driveByAcceptancePct": 83,
+ "driveByMerged": 5,
+ "driveByClosed": 6,
"sampledClosed": 60
},
"orval-labs/orval": {
@@ -521,10 +532,10 @@
},
"twentyhq/twenty": {
"medianDays": 0.7,
- "averageDays": 1.1,
- "mergedExternal": 10,
- "acceptancePct": 71,
- "closedExternal": 14,
+ "averageDays": 1.7,
+ "mergedExternal": 11,
+ "acceptancePct": 73,
+ "closedExternal": 15,
"driveByAcceptancePct": 67,
"driveByMerged": 2,
"driveByClosed": 3,
@@ -597,14 +608,14 @@
"sampledClosed": 60
},
"withastro/astro": {
- "medianDays": 2.2,
- "averageDays": 21.8,
- "mergedExternal": 14,
+ "medianDays": 2.5,
+ "averageDays": 20.8,
+ "mergedExternal": 15,
"acceptancePct": 88,
- "closedExternal": 16,
- "driveByAcceptancePct": 85,
- "driveByMerged": 11,
- "driveByClosed": 13,
+ "closedExternal": 17,
+ "driveByAcceptancePct": 82,
+ "driveByMerged": 9,
+ "driveByClosed": 11,
"sampledClosed": 60
},
"yarnpkg/berry": {
diff --git a/impact.json b/impact.json
index 24ce48e..9d5ec2b 100644
--- a/impact.json
+++ b/impact.json
@@ -822,7 +822,17 @@
"pr": 15591,
"status": "waiting",
"createdAt": "2026-10-07T12:38:07Z"
+ },
+ {
+ "title": "리팩터 뒤 남은 조상 Set",
+ "titleEn": "ancestor set left behind after a refactor",
+ "type": "쓰기만 하는 컬렉션 (2021 usehref 리팩터로 소비자 둘이 ancestors 로 바뀐 뒤 남은 Set)",
+ "repo": "mozilla/pdf.js",
+ "repoLabel": "pdf.js · 54k★",
+ "pr": 22102,
+ "status": "waiting",
+ "createdAt": "2026-10-07T12:48:49Z"
}
],
- "generatedAt": "2026-10-07T12:40:59.508Z"
+ "generatedAt": "2026-10-07T12:51:45.498Z"
}
diff --git a/index.html b/index.html
index 0031492..56fd72b 100644
--- a/index.html
+++ b/index.html
@@ -681,12 +681,13 @@
직접 내본다 Submit it ourselves
+
pdf.js 54kMozilla 의 PDF 뷰어 · 기여자 약 536명 Mozilla PDF viewer · ~536 contributors 리팩터 뒤 남은 조상 Set ancestor set left behind after a refactor '26.10 PR 생성 PR opened 오늘 today / 보통 1일 / usually 1d 수락 82% 82% merged PR 머지 · 아직 아무도 안 봄 PR merge · not reviewed yet 릴리즈 · 머지 후 release · after merge
react-router 56.6kReact 라우터 · 기여자 약 1,318명 React router · ~1,318 contributors 검증 에러가 dev 서버를 죽임 export validation error kills the dev server '26.10 PR 생성 PR opened 오늘 today / 보통 4일 / usually 4d 수락 80% 80% merged PR 머지 · 아직 아무도 안 봄 PR merge · not reviewed yet 릴리즈 · 머지 후 release · after merge
cherry-studio 52.4k데스크톱 AI 클라이언트 · 기여자 약 478명 desktop AI client · ~478 contributors 채우기만 하고 읽지 않는 Map 3개 three maps filled but never read '26.10 PR 생성 PR opened 오늘 today / 보통 1일 / usually 1d 수락 87% 87% merged PR 머지 · 아직 아무도 안 봄 PR merge · not reviewed yet 릴리즈 · 머지 후 release · after merge
n8n 206.8k워크플로 자동화 · 기여자 약 811명 workflow automation · ~811 contributors 표현식 unique·차집합이 원시값 배열도 깊은 비교로 이중 순회 expression unique and set operations deep-compare even primitive arrays pairwise '26.10 PR 생성 PR opened 1일째 day 1 / 보통 2일 / usually 2d 수락 76% 76% merged PR 머지 · 아직 아무도 안 봄 PR merge · not reviewed yet 릴리즈 · 머지 후 release · after merge
strapi 73.3k헤드리스 CMS · 기여자 약 1,398명 headless CMS · ~1,398 contributors try/catch 안 릴리즈 정리를 await 안 함 release cleanup not awaited inside its try/catch '26.10 PR 생성 PR opened 5일째 day 5 / 보통 3일 / usually 3d 수락 45% 45% merged PR 머지 · 아직 아무도 안 봄 PR merge · not reviewed yet 릴리즈 · 머지 후 release · after merge
tailwindcss 97.8kCSS 유틸리티 프레임워크 · 기여자 약 376명 utility-first CSS framework · ~376 contributors Vite 입력 CSS 의존성 기록 경합 Vite input stylesheet dependency race '26.9 PR 생성 PR opened 10일째 day 10 / 보통 1일 / usually 1d 수락 65% 65% merged PR 머지 · 보류 PR merge · stalled 릴리즈 · 머지 후 release · after merge
-
astro 63.1k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명 web framework · ~1,245 contributors sitemap 청크 URL 분류 O(n²) quadratic sitemap chunk URL lookups '26.9 PR 생성 PR opened 10일째 day 10 / 보통 2일 / usually 2d 수락 88% 88% merged PR 머지 · 보류 PR merge · stalled 릴리즈 · 머지 후 release · after merge
+
astro 63.1k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명 web framework · ~1,245 contributors sitemap 청크 URL 분류 O(n²) quadratic sitemap chunk URL lookups '26.9 PR 생성 PR opened 10일째 day 10 / 보통 3일 / usually 3d 수락 88% 88% merged PR 머지 · 보류 PR merge · stalled 릴리즈 · 머지 후 release · after merge
Babylon.js 26.1k웹 3D 엔진 · 기여자 약 801명 web 3D engine · ~801 contributors 채우기만 하고 읽지 않는 Map Map that is filled but never read '26.10 PR 생성 PR opened 당일 머지 merged same day / 보통 1일 / usually 1d 수락 82% 82% merged '26.10 PR 머지 #18980 PR merged #18980 릴리즈 대기 awaiting release
mikro-orm 9.2kTypeScript ORM · 기여자 약 347명 TypeScript ORM · ~347 contributors upsertMany 재조회 행을 엔티티마다 전부 비교 upsertMany compares every reloaded row for every entity '26.10 PR 생성 PR opened 당일 머지 merged same day / 보통 1일 / usually 1d 수락 100% 100% merged '26.10 PR 머지 #8393 PR merged #8393 릴리즈 대기 awaiting release
mikro-orm 9.2kTypeScript ORM · 기여자 약 347명 TypeScript ORM · ~347 contributors M:N 소유 측 populate 가 부모마다 자식 전체를 다시 훑고 indexOf 로 정렬 owning-side M:N populate rescans all children per owner and sorts with indexOf '26.10 PR 생성 PR opened 당일 머지 merged same day / 보통 1일 / usually 1d 수락 100% 100% merged '26.10 PR 머지 #8392 PR merged #8392 릴리즈 대기 awaiting release
@@ -698,13 +699,13 @@
직접 내본다 Submit it ourselves
ghost 55.5k퍼블리싱·뉴스레터 · 기여자 약 929명 publishing & newsletters · ~929 contributors 댓글 신고 이메일의 조회 3회 직렬 three sequential lookups for comment report email '26.9 PR 생성 PR opened 머지까지 10일 10d to merge / 보통 1일 / usually 1d 수락 76% 76% merged '26.10 PR 머지 #31019 PR merged #31019 릴리즈 대기 awaiting release
react 250.9kUI 라이브러리 · 컴파일러 · 기여자 약 2,020명 UI library and compiler · ~2,020 contributors React 컴파일러 패스의 쓰기만 하는 컬렉션 write-only collections in React Compiler passes '26.9 PR 생성 PR opened 머지까지 2일 2d to merge / 보통 4일 / usually 4d 수락 15% 15% merged '26.9 PR 머지 #37699 PR merged #37699 '26.9 nightly 배포 · 안정판 대기 nightly shipped · stable pending
angular 101k웹 프레임워크 · 기여자 약 2,686명 web framework · ~2,686 contributors signal 입력 마이그레이션의 쓰기만 하는 Set write-only Set in signal input migration '26.9 PR 생성 PR opened 머지까지 2일 2d to merge / 보통 3일 / usually 3d 수락 69% 69% merged '26.9 PR 머지 #70977 PR merged #70977 '26.9 릴리즈 v22.2.1 released v22.2.1
-
astro 63.1k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명 web framework · ~1,245 contributors 빌드에서 쓰기만 하는 페이지 입력 집합 write-only page input set in the build '26.9 PR 생성 PR opened 머지까지 4일 4d to merge / 보통 2일 / usually 2d 수락 88% 88% merged '26.9 PR 머지 #17987 PR merged #17987 '26.9 릴리즈 astro@7.3.4 released astro@7.3.4
+
astro 63.1k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명 web framework · ~1,245 contributors 빌드에서 쓰기만 하는 페이지 입력 집합 write-only page input set in the build '26.9 PR 생성 PR opened 머지까지 4일 4d to merge / 보통 3일 / usually 3d 수락 88% 88% merged '26.9 PR 머지 #17987 PR merged #17987 '26.9 릴리즈 astro@7.3.4 released astro@7.3.4
angular 101k웹 프레임워크 · 기여자 약 2,686명 web framework · ~2,686 contributors 템플릿 파이프라인의 쓰기만 하는 컬렉션 write-only collections in template pipeline phases '26.9 PR 생성 PR opened 머지까지 5일 5d to merge / 보통 3일 / usually 3d 수락 69% 69% merged '26.9 PR 머지 #70690 PR merged #70690 '26.9 릴리즈 v22.2.0 released v22.2.0
rollup 26.3kJavaScript 모듈 번들러 · 기여자 약 471명 JavaScript module bundler · ~471 contributors watch 재실행 결과를 안 기다림 watcher rerun not awaited '26.9 PR 생성 PR opened 머지까지 9일 9d to merge / 보통 9일 / usually 9d 수락 76% 76% merged '26.9 PR 머지 #6506 PR merged #6506 '26.9 릴리즈 v4.63.3 released v4.63.3
mongoose 27.5kMongoDB ODM · 기여자 약 1,088명 MongoDB object modelling · ~1,088 contributors bulkSave 오류 문서 반복 매칭 bulkSave repeated write-error matching '26.8 PR 생성 PR opened 머지까지 2일 2d to merge / 보통 2일 / usually 2d 수락 77% 77% merged '26.8 PR 머지 #16474 PR merged #16474 '26.8 릴리즈 9.9.4 released 9.9.4
pnpm 36.8kJavaScript 패키지 매니저 · 기여자 약 696명 JavaScript package manager · ~696 contributors 의존성 분할 안 미사용 Set unused linked dependency aliases Set '26.8 PR 생성 PR opened 머지까지 2일 2d to merge / 보통 1일 / usually 1d 수락 62% 62% merged '26.8 PR 머지 #14032 PR merged #14032 '26.8 릴리즈 v11.23.0 released v11.23.0
rollup 26.3kJavaScript 모듈 번들러 · 기여자 약 471명 JavaScript module bundler · ~471 contributors 청크 렌더 안 미사용 Map unused rendered module sources map '26.8 PR 생성 PR opened 당일 머지 merged same day / 보통 9일 / usually 9d 수락 76% 76% merged '26.8 PR 머지 #6482 PR merged #6482 '26.8 릴리즈 v4.63.0 released v4.63.0
-
openstatus 9.2k상태 페이지·업타임 모니터링 · 기여자 약 125명 status pages & uptime monitoring · ~125 contributors 페이지 monitor 검증 뒤 중복 조회 duplicate monitor lookups after page validation '26.8 PR 생성 PR opened 머지까지 10일 10d to merge / 보통 2일 / usually 2d 수락 86% 86% merged '26.8 PR 머지 #2583 PR merged #2583 '26.8 릴리즈 production@07d885a released production@07d885a
+
openstatus 9.2k상태 페이지·업타임 모니터링 · 기여자 약 125명 status pages & uptime monitoring · ~125 contributors 페이지 monitor 검증 뒤 중복 조회 duplicate monitor lookups after page validation '26.8 PR 생성 PR opened 머지까지 10일 10d to merge / 보통 3일 / usually 3d 수락 83% 83% merged '26.8 PR 머지 #2583 PR merged #2583 '26.8 릴리즈 production@07d885a released production@07d885a
ghost 55.5k퍼블리싱·뉴스레터 · 기여자 약 929명 publishing & newsletters · ~929 contributors member 통계 안 미사용 Map unused Map in member count history '26.8 PR 생성 PR opened 머지까지 2일 2d to merge / 보통 1일 / usually 1d 수락 76% 76% merged '26.8 PR 머지 #29831 PR merged #29831 '26.8 릴리즈 v6.57.1 released v6.57.1
vite 83.2k프런트엔드 빌드 도구 · 기여자 약 1,365명 frontend build tool · ~1,365 contributors pure CSS 청크 선형 조회 pure CSS chunk linear lookup '26.7 PR 생성 PR opened 머지까지 2일 2d to merge / 보통 13일 / usually 13d 수락 28% 28% merged '26.8 PR 머지 #23114 PR merged #23114 '26.8 릴리즈 v8.2.1 released v8.2.1
ghost 55.5k퍼블리싱·뉴스레터 · 기여자 약 929명 publishing & newsletters · ~929 contributors growth stats 집계 3회 직렬 growth stats 3 serial aggregates '26.7 PR 생성 PR opened 머지까지 3일 3d to merge / 보통 1일 / usually 1d 수락 76% 76% merged '26.8 PR 머지 #29704 PR merged #29704 '26.8 릴리즈 v6.56.0 released v6.56.0
@@ -715,16 +716,16 @@
직접 내본다 Submit it ourselves
outline 40.8k팀 위키·문서 · 기여자 약 263명 team knowledge base · ~263 contributors markdown import merge O(n²) '26.7 PR 생성 PR opened 머지까지 5일 5d to merge / 보통 6일 / usually 6d 수락 67% 67% merged '26.7 PR 머지 #13117 PR merged #13117 '26.9 릴리즈 v1.10.0 released v1.10.0
medusa 36.6k커머스 백엔드 · 기여자 약 586명 commerce backend · ~586 contributors translations batch match O(n²) '26.7 PR 생성 PR opened 머지까지 10일 10d to merge / 보통 3일 / usually 3d 수락 29% 29% merged '26.8 PR 머지 #16188 PR merged #16188 '26.8 릴리즈 v2.19.0 released v2.19.0
grafana 77.1k관측·대시보드 · 기여자 약 3,142명 observability dashboards · ~3,142 contributors 히트맵 버킷 증분의 쓰기만 하는 Map write-only decimals map in heatmap bucket increments 닫힘 closed 당일 same day / 보통 1일 / usually 1d 수락 90% 90% merged #133985 우리가 접었다 — 게이트 0 을 안 읽었다: 모든 커밋 서명 필수인데 서명 키가 없었다. 브랜치를 되돌리자 GitHub 가 자동으로 닫았다 we closed it — missed gate 0: every commit must be signed and we had no signing key; resetting the branch auto-closed the PR
-
openstatus 9.2k상태 페이지·업타임 모니터링 · 기여자 약 125명 status pages & uptime monitoring · ~125 contributors 알림 목록의 모니터 관계 반복 검색 repeated notification monitor association scans 닫힘 closed 1일 만에 in 1d / 보통 2일 / usually 2d 수락 86% 86% merged #2780 메인테이너가 V1 API 폐기 예정이라고 밝혀 우리가 닫았다 we closed it after the maintainer said the V1 API is deprecated
+
openstatus 9.2k상태 페이지·업타임 모니터링 · 기여자 약 125명 status pages & uptime monitoring · ~125 contributors 알림 목록의 모니터 관계 반복 검색 repeated notification monitor association scans 닫힘 closed 1일 만에 in 1d / 보통 3일 / usually 3d 수락 83% 83% merged #2780 메인테이너가 V1 API 폐기 예정이라고 밝혀 우리가 닫았다 we closed it after the maintainer said the V1 API is deprecated
react 250.9kUI 라이브러리 · 컴파일러 · 기여자 약 2,020명 UI library and compiler · ~2,020 contributors React 컴파일러 패스의 쓰기만 하는 컬렉션 write-only collections in React Compiler passes 닫힘 closed 당일 same day / 보통 4일 / usually 4d 수락 15% 15% merged #37698 잘못된 GitHub 계정(yoominho91)으로 제출해 닫고 irontaek의 #37699로 교체했다 closed after submission from the wrong GitHub account (yoominho91); replaced by irontaek's #37699
eslint 27.6k자바스크립트 린터 · 기여자 약 1,253명 JavaScript linter · ~1,253 contributors no-duplicate-case 이전 case 재스캔 no-duplicate-case rescans earlier cases 닫힘 closed 당일 same day / 보통 3일 / usually 3d 수락 60% 60% merged #21317 AI 보조 PR 은 선행 이슈가 필요하다는 정책(게이트 0, 우리가 안 읽었다) · 메인테이너는 이득도 의심했다 — "린터는 보통 생성 코드를 안 훑는다" their AI policy requires a backing issue for AI-assisted PRs (a gate we had not read), and the maintainer doubted the benefit: linters usually do not run on generated code
vscode 193.6k코드 에디터 · 기여자 약 3,258명 code editor · ~3,258 contributors 툴 피커 안 미사용 Map unused MCP server map in the tools picker 닫힘 closed 11일 만에 in 11d / 보통 1일 / usually 1d 수락 90% 90% merged #334230 우리가 접었다 — 12일째 사람 리뷰 0(반응은 봇뿐), 09-12 핑에도 무응답. 슬롯을 회수했다 we closed it — no human review in 12 days (bots only) and no reply to the 09-12 ping, so we reclaimed the slot
-
openstatus 9.2k상태 페이지·업타임 모니터링 · 기여자 약 125명 status pages & uptime monitoring · ~125 contributors Hono 보안 패치 · 의존성 점검 Hono security patch · dependency audit 닫힘 closed 27일 만에 in 27d / 보통 2일 / usually 2d 수락 86% 86% merged #2620 상위 #2751 의존성 업데이트로 Hono 4.13.8·node-server 2.1.1이 반영돼 보안 목표가 충족됐다. 이 PR은 미병합 upstream #2751 updated Hono to 4.13.8 and node-server to 2.1.1, covering the security goal; this PR was not merged
+
openstatus 9.2k상태 페이지·업타임 모니터링 · 기여자 약 125명 status pages & uptime monitoring · ~125 contributors Hono 보안 패치 · 의존성 점검 Hono security patch · dependency audit 닫힘 closed 27일 만에 in 27d / 보통 3일 / usually 3d 수락 83% 83% merged #2620 상위 #2751 의존성 업데이트로 Hono 4.13.8·node-server 2.1.1이 반영돼 보안 목표가 충족됐다. 이 PR은 미병합 upstream #2751 updated Hono to 4.13.8 and node-server to 2.1.1, covering the security goal; this PR was not merged
budibase 28.3k사내 도구 빌더 · 기여자 약 147명 internal tools builder · ~147 contributors static formula 갱신 enriched row 조회 O(n²) static formula enriched-row lookup O(n²) 닫힘 closed 당일 same day / 보통 1일 / usually 1d 수락 68% 68% merged #19555 게이트 0 — 외부 PR 은 "작성자에게 배정된" 이슈를 참조해야 하는데 배정은 메인테이너만 한다 gate 0 — external PRs must reference an issue assigned to the author, and only maintainers can assign
ghost 55.5k퍼블리싱·뉴스레터 · 기여자 약 929명 publishing & newsletters · ~929 contributors post relation 연결 반복 조회 repeated post lookup while attaching import relations 닫힘 closed 14일 만에 in 14d / 보통 1일 / usually 1d 수락 76% 76% merged #30284 우리가 접었다 — 중앙 1.8일인 곳에서 15일째 사람 반응 0. 09-01 에 핑도 보냈지만 답이 없었다 we closed it — 15 days with zero human response in a repo whose median is 1.8 days, including a ping on Sep 1 that went unanswered
n8n 206.8k워크플로 자동화 · 기여자 약 811명 workflow automation · ~811 contributors credential 삭제 완료 전 명령 종료 credential uninstall exits before deletions finish 닫힘 closed 36일 만에 in 36d / 보통 2일 / usually 2d 수락 76% 76% merged #37047 승인 뒤 merge queue 의 CLA 검사가 PR 을 연 계정(yoominho91)을 미서명으로 잡았다. 같은 커밋으로 irontaek 이 #40103 을 다시 열었다 approved, but the merge queue's CLA check flagged the opening account (yoominho91) as unsigned; reopened as #40103 from irontaek with the same commits
nx 29.4k모노레포 빌드 시스템 · 기여자 약 1,308명 monorepo build system · ~1,308 contributors graph 명령 안 미사용 Map unread task graph cache in the graph command 닫힘 closed 34일 만에 in 34d / 보통 1일 / usually 1d 수락 74% 74% merged #36633 우리가 접었다 — 34일째 사람 리뷰 0(반응은 봇뿐), 09-12 핑에도 무응답. 슬롯을 회수했다 we closed it — no human review in 34 days (bots only) and no reply to the 09-12 ping, so we reclaimed the slot
-
astro 63.1k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명 web framework · ~1,245 contributors 스택 트레이스 절반 유실 printed error stacks lose every other frame 닫힘 closed 24일 만에 in 24d / 보통 2일 / usually 2d 수락 88% 88% merged #17665 우리가 접었다 — 중앙 2일인 곳에서 24일째 사람 반응 0. CI 는 통과 상태였다 we closed it — 24 days with zero human response in a repo whose median is 2 days; CI was green
+
astro 63.1k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명 web framework · ~1,245 contributors 스택 트레이스 절반 유실 printed error stacks lose every other frame 닫힘 closed 24일 만에 in 24d / 보통 3일 / usually 3d 수락 88% 88% merged #17665 우리가 접었다 — 중앙 2일인 곳에서 24일째 사람 반응 0. CI 는 통과 상태였다 we closed it — 24 days with zero human response in a repo whose median is 2 days; CI was green
storybook 91.2kUI 컴포넌트 개발·문서화 · 기여자 약 2,795명 UI component workshop · ~2,795 contributors invalidate() 안 미사용 Set unread invalidated Set in the story index 닫힘 closed 25일 만에 in 25d / 보통 4일 / usually 4d 수락 72% 72% merged #35829 우리가 접었다 — Danger 가 `ci:*`·`qa:*` 라벨에서 막는데 그 라벨은 메인테이너만 붙일 수 있다 (게이트 0) we closed it — Danger blocks on `ci:*` and `qa:*` labels only a maintainer can add, so nothing was actionable from our side
excalidraw 133.6k화이트보드 · 손그림 다이어그램 · 기여자 약 378명 virtual whiteboard · ~378 contributors resize 핸들러 안 미사용 Map unused Map in resize handler 닫힘 closed 34일 만에 in 34d / 보통 1일 / usually 1d 수락 2% 2% merged #11805 우리가 접었다 — 중앙 1일인 곳에서 34일째 사람 반응 0. 이 저장소 외부 PR 수락률 18% we closed it — 34 days with zero human response in a repo whose median is 1 day; external acceptance here is 18%
typeorm 36.7kTypeScript ORM · 기여자 약 1,258명 TypeScript ORM · ~1,258 contributors loadTables 카탈로그 전량 재스캔 loadTables full catalog rescan 닫힘 closed 45일 만에 in 45d / 보통 14일 / usually 14d 수락 31% 31% merged #12746 우리가 접었다 — 46일째 사람 리뷰 0(반응은 봇뿐), 09-12 핑에도 무응답. 슬롯을 회수했다 we closed it — no human review in 46 days (bots only) and no reply to the 09-12 ping, so we reclaimed the slot
@@ -734,8 +735,8 @@
직접 내본다 Submit it ourselves
strapi 73.3k헤드리스 CMS · 기여자 약 1,398명 headless CMS · ~1,398 contributors doc-metadata localization O(n²) 닫힘 closed 16일 만에 in 16d / 보통 3일 / usually 3d 수락 45% 45% merged #27125 우리가 접었다 — 중앙 2일인 곳에서 14일째 아무 반응이 없었다 we closed it — 14 days with no response in a repo whose median is 2 days
payload 45.1k헤드리스 CMS · Next.js · 기여자 약 583명 headless CMS · ~583 contributors dataloader doc placement O(n²) 닫힘 closed 16일 만에 in 16d / 보통 1일 / usually 1d 수락 79% 79% merged #17469 우리가 접었다 — 중앙 4일인 곳에서 14일째 아무 반응이 없었다 we closed it — 14 days with no response in a repo whose median is 4 days
cal.com 48.9k일정 예약 · 기여자 약 981명 scheduling · ~981 contributors lucky-user set rebuild in loop 닫힘 closed 7일 만에 in 7d / 보통 3일 / usually 3d 수락 7% 7% merged #29832 우리가 접었다 — 같은 저장소에 2건이 열려 있어 큰 쪽(#29828)에 리뷰를 몰아줬다 we closed it — two PRs open on one repo; we kept the bigger one (#29828)
-
twenty 58k오픈소스 CRM · 기여자 약 768명 open-source CRM · ~768 contributors nested relations hydration O(n²) 닫힘 closed 당일 same day / 보통 1일 / usually 1d 수락 71% 71% merged #23232 겹친 2건 중 나머지. 사유는 남지 않았다 the other of the overlapping pair; no reason given
-
twenty 58k오픈소스 CRM · 기여자 약 768명 open-source CRM · ~768 contributors view-widget-upsert O(n²) 닫힘 closed 당일 same day / 보통 1일 / usually 1d 수락 71% 71% merged #23231 "redundant with #23232" — 같은 저장소에 겹치는 2건을 냈다 "redundant with #23232" — two overlapping PRs in one repo
+
twenty 58k오픈소스 CRM · 기여자 약 768명 open-source CRM · ~768 contributors nested relations hydration O(n²) 닫힘 closed 당일 same day / 보통 1일 / usually 1d 수락 73% 73% merged #23232 겹친 2건 중 나머지. 사유는 남지 않았다 the other of the overlapping pair; no reason given
+
twenty 58k오픈소스 CRM · 기여자 약 768명 open-source CRM · ~768 contributors view-widget-upsert O(n²) 닫힘 closed 당일 same day / 보통 1일 / usually 1d 수락 73% 73% merged #23231 "redundant with #23232" — 같은 저장소에 겹치는 2건을 냈다 "redundant with #23232" — two overlapping PRs in one repo
cal.com 48.9k일정 예약 · 기여자 약 981명 scheduling · ~981 contributors booking member diff O(n²) 닫힘 closed 15일 만에 in 15d / 보통 3일 / usually 3d 수락 7% 7% merged #29828 우리가 접었다 — 외부 기여자는 `required` 잡이 항상 실패한다 (게이트 0). 이 저장소 수락률 10% we closed it — the `required` job always fails for external contributors; this repository merges 10% of outside PRs
novu 40.1k알림 인프라 · 기여자 약 537명 notification infrastructure · ~537 contributors sync-agent findOne N+1 닫힘 closed 17일 만에 in 17d / 보통 1일 / usually 1d 수락 89% 89% merged #12074 우리가 접었다 — 중앙 1일인 곳에서 15일째 사람 리뷰 0(승인은 봇). 슬롯을 회수했다 we closed it — 15 days in a repo whose median is 1 day, with zero human review (the approval was a bot)
immich 115.7k셀프호스팅 사진 보관 · 기여자 약 1,019명 self-hosted photo library · ~1,019 contributors deleteBulkMetadata N+1 닫힘 closed 15일 만에 in 15d / 보통 1일 / usually 1d 수락 44% 44% merged #30163 우리가 접었다 — `changelog:*` 라벨은 메인테이너만 붙일 수 있어 우리 쪽에서 더 할 게 없었다 (게이트 0) we closed it — the required `changelog:*` label can only be added by a maintainer, so nothing was actionable from our side
@@ -743,8 +744,8 @@
직접 내본다 Submit it ourselves
카드의 기여자 수는 2026-10-07 기준 GitHub 커밋 작성자 집계다. 같은 사람의 여러 계정이나 봇이 각각 포함될 수 있다.
Contributor counts use GitHub commit authors as of 2026-10-07 . Multiple accounts for one person and bots may be counted separately.
-
머지됨 27 · 아무도 안 봄 4 · 보류 2 · 닫힘 25 — 전체 기록은 IMPACT.md . 상태는 GitHub 에서 자동 갱신된다. 기준선은 각 저장소의 최근 닫힌 PR 60건 중 외부 기여자 머지의 중앙값 이다 — 평균은 묵은 몇 건이 통째로 끌고 간다(next.js 는 평균 10.2일인데 중앙값 3.9일). 초록불은 그 안, 빨간불은 초과, 보라불은 +7일을 넘긴 보류 다. 옆의 수락률 은 그 저장소가 최근 닫힌 외부 PR 을 얼마나 머지했는지다 — 늦은 게 우리 것만 밀린 건지, 원래 대부분 거절인 곳인지를 가른다. 보류는 GitHub 에 없는 상태다 — 닫히지도 머지되지도 않은 채 그 저장소의 평소 속도를 크게 지난 것을 우리가 따로 센다.
-
27 merged · 4 nobody has looked · 2 stalled · 25 closed — full log in IMPACT.md , refreshed from GitHub. The baseline is the median of external-contributor merges among each repository's latest 60 closed PRs — a mean gets dragged by a few stale PRs (next.js averages 10.2 days but its median is 3.9). Green is within it; red is over; violet is stalled — past it by 7 days. The percentage next to it is how many recently closed external PRs that repository merged — it separates "ours is being skipped" from "this repo turns most outsiders down". Stalled is not a GitHub state: it is neither merged nor closed, just well past how fast that repository usually moves, and we count it separately.
+
머지됨 27 · 아무도 안 봄 5 · 보류 2 · 닫힘 25 — 전체 기록은 IMPACT.md . 상태는 GitHub 에서 자동 갱신된다. 기준선은 각 저장소의 최근 닫힌 PR 60건 중 외부 기여자 머지의 중앙값 이다 — 평균은 묵은 몇 건이 통째로 끌고 간다(next.js 는 평균 10.2일인데 중앙값 3.9일). 초록불은 그 안, 빨간불은 초과, 보라불은 +7일을 넘긴 보류 다. 옆의 수락률 은 그 저장소가 최근 닫힌 외부 PR 을 얼마나 머지했는지다 — 늦은 게 우리 것만 밀린 건지, 원래 대부분 거절인 곳인지를 가른다. 보류는 GitHub 에 없는 상태다 — 닫히지도 머지되지도 않은 채 그 저장소의 평소 속도를 크게 지난 것을 우리가 따로 센다.
+
27 merged · 5 nobody has looked · 2 stalled · 25 closed — full log in IMPACT.md , refreshed from GitHub. The baseline is the median of external-contributor merges among each repository's latest 60 closed PRs — a mean gets dragged by a few stale PRs (next.js averages 10.2 days but its median is 3.9). Green is within it; red is over; violet is stalled — past it by 7 days. The percentage next to it is how many recently closed external PRs that repository merged — it separates "ours is being skipped" from "this repo turns most outsiders down". Stalled is not a GitHub state: it is neither merged nor closed, just well past how fast that repository usually moves, and we count it separately.
diff --git a/tools/update-impact-cards.py b/tools/update-impact-cards.py
index e282495..5da34f3 100644
--- a/tools/update-impact-cards.py
+++ b/tools/update-impact-cards.py
@@ -298,6 +298,7 @@ def delivery_timeline(f, key, pr_url, age_html):
"BabylonJS/Babylon.js": ("웹 3D 엔진", "web 3D engine"),
"CherryHQ/cherry-studio": ("데스크톱 AI 클라이언트", "desktop AI client"),
"remix-run/react-router": ("React 라우터", "React router"),
+ "mozilla/pdf.js": ("Mozilla 의 PDF 뷰어", "Mozilla PDF viewer"),
"outline/outline": ("팀 위키·문서", "team knowledge base"),
"nocodb/nocodb": ("노코드 DB · Airtable 대안", "no-code database"),
"novuhq/novu": ("알림 인프라", "notification infrastructure"),