diff --git a/IMPACT.md b/IMPACT.md index 4c8ebe5..7a28250 100644 --- a/IMPACT.md +++ b/IMPACT.md @@ -11,7 +11,7 @@ fixearly가 **실제 오픈소스에서 찾아낸 이슈**와 그 결과. 점수 | 발견 | repo | 유형 | PR | 상태 | 점수 | |------|------|------|----|------|------| -| `deleteBulkMetadata N+1` | [immich · 115.9k★](https://github.com/immich-app/immich) | N+1 (루프 안 순차 DELETE, item당 왕복 1회) | [#30163](https://github.com/immich-app/immich/pull/30163) | ❌ closed | — | +| `deleteBulkMetadata N+1` | [immich · 116k★](https://github.com/immich-app/immich) | N+1 (루프 안 순차 DELETE, item당 왕복 1회) | [#30163](https://github.com/immich-app/immich/pull/30163) | ❌ closed | — | | `sync-agent findOne N+1` | [novu · 40.1k★](https://github.com/novuhq/novu) | N+1 (for 루프 안 findOne, 소스 통합당 쿼리 1회) | [#12074](https://github.com/novuhq/novu/pull/12074) | ❌ closed | — | | `booking member diff O(n²)` | [cal.com · 48.9k★](https://github.com/calcom/cal.diy) | O(n²) 배열 조회 (루프 안 .some() 선형스캔 4회 → Set) | [#29828](https://github.com/calcom/cal.diy/pull/29828) | ❌ closed | — | | `view-widget-upsert O(n²)` | [twenty · 58.2k★](https://github.com/twentyhq/twenty) | O(n²) 배열 조회 (4개 루프서 .find() 키조회 → Map) | [#23231](https://github.com/twentyhq/twenty/pull/23231) | ❌ closed | — | @@ -36,7 +36,7 @@ fixearly가 **실제 오픈소스에서 찾아낸 이슈**와 그 결과. 점수 | `resize 핸들러 안 미사용 Map` | [excalidraw · 133.6k★](https://github.com/excalidraw/excalidraw) | 쓰기만 하는 컬렉션 (포인터 이동마다 채우고 아무도 안 읽음 — 삭제) | [#11805](https://github.com/excalidraw/excalidraw/pull/11805) | ❌ closed | — | | `member 통계 안 미사용 Map` | [ghost · 55.5k★](https://github.com/TryGhost/Ghost) | 쓰기만 하는 컬렉션 (날짜별 Map 을 채우고 아무도 안 읽음 — 삭제) | [#29831](https://github.com/TryGhost/Ghost/pull/29831) | ✅ merged | +1 | | `invalidate() 안 미사용 Set` | [storybook · 91.2k★](https://github.com/storybookjs/storybook) | 쓰기만 하는 컬렉션 (파일 변경마다 채우고 아무도 안 읽음 — 소비자는 2022-11 에 이미 삭제됨) | [#35829](https://github.com/storybookjs/storybook/pull/35829) | ❌ closed | — | -| `스택 트레이스 절반 유실` | [astro · 63.1k★](https://github.com/withastro/astro) | 전역 정규식 상태 (/g 정규식을 filter 안에서 .test() — lastIndex 가 새어 프레임이 하나 걸러 사라진다) | [#17665](https://github.com/withastro/astro/pull/17665) | ❌ closed | — | +| `스택 트레이스 절반 유실` | [astro · 63.2k★](https://github.com/withastro/astro) | 전역 정규식 상태 (/g 정규식을 filter 안에서 .test() — lastIndex 가 새어 프레임이 하나 걸러 사라진다) | [#17665](https://github.com/withastro/astro/pull/17665) | ❌ closed | — | | `graph 명령 안 미사용 Map` | [nx · 29.4k★](https://github.com/nrwl/nx) | 쓰기만 하는 컬렉션 (선언과 .clear() 만 남았다 — 읽기·쓰기는 #32418 에서 사라졌다) | [#36633](https://github.com/nrwl/nx/pull/36633) | ❌ closed | — | | `페이지 monitor 검증 뒤 중복 조회` | [openstatus · 9.2k★](https://github.com/openstatusHQ/openstatus) | N+1 (페이지 생성·수정에서 일괄 검증한 monitor를 루프마다 재조회 — Map 재사용) | [#2583](https://github.com/openstatusHQ/openstatus/pull/2583) | ✅ merged | +1 | | `Hono 보안 패치 · 의존성 점검` | [openstatus · 9.2k★](https://github.com/openstatusHQ/openstatus) | 보안 점검 (취약 Hono 직접·전이 의존성 업데이트) | [#2620](https://github.com/openstatusHQ/openstatus/pull/2620) | ❌ closed | — | @@ -50,13 +50,13 @@ fixearly가 **실제 오픈소스에서 찾아낸 이슈**와 그 결과. 점수 | `툴 피커 안 미사용 Map` | [vscode · 193.5k★](https://github.com/microsoft/vscode) | 쓰기만 하는 컬렉션 (MCP 툴마다 .set(), 읽기 없음 — #249448 이후 15개월째 · 삭제) | [#334230](https://github.com/microsoft/vscode/pull/334230) | ❌ closed | — | | `no-duplicate-case 이전 case 재스캔` | [eslint · 27.6k★](https://github.com/eslint/eslint) | O(n²) (case 마다 이전 case 전량 비교, 비교마다 토큰 전수 — 토큰 키 Set 으로 O(n)) | [#21317](https://github.com/eslint/eslint/pull/21317) | ❌ closed | — | | `템플릿 파이프라인의 쓰기만 하는 컬렉션` | [angular · 101k★](https://github.com/angular/angular) | 쓰기만 하는 컬렉션 (allocateSlots 의 slotMap, generateTemporaries 의 released — 채우기만 하고 읽지 않음, slotMap 은 주석이 '다음 순회에서 쓴다'고 잘못 설명) | [#70690](https://github.com/angular/angular/pull/70690) | ✅ merged | +1 | -| `빌드에서 쓰기만 하는 페이지 입력 집합` | [astro · 63.1k★](https://github.com/withastro/astro) | 쓰기만 하는 컬렉션 (viteBuild 가 pageInput 을 채우기만 하고 읽지 않는다 — 소비자 ssrBuild 인자가 #14306 Environment API 에서 사라졌다) | [#17987](https://github.com/withastro/astro/pull/17987) | ✅ merged | +1 | +| `빌드에서 쓰기만 하는 페이지 입력 집합` | [astro · 63.2k★](https://github.com/withastro/astro) | 쓰기만 하는 컬렉션 (viteBuild 가 pageInput 을 채우기만 하고 읽지 않는다 — 소비자 ssrBuild 인자가 #14306 Environment API 에서 사라졌다) | [#17987](https://github.com/withastro/astro/pull/17987) | ✅ merged | +1 | | `signal 입력 마이그레이션의 쓰기만 하는 Set` | [angular · 101k★](https://github.com/angular/angular) | 쓰기만 하는 컬렉션 (filterInputsViaConfig 의 skippedInputs 는 추가만 하고 읽지 않음 — 기존 markFieldIncompatible 는 그대로 유지) | [#70977](https://github.com/angular/angular/pull/70977) | ✅ merged | +1 | | `::ng-deep 감지 정규식 lastIndex 누수` | [angular · 101k★](https://github.com/angular/angular) | 전역 정규식 상태 (/g 정규식을 .test() 해 lastIndex 가 다음 규칙·스타일시트로 새어 ::ng-deep 를 놓침 → 비전역 사본) | [#71119](https://github.com/angular/angular/pull/71119) | ✅ merged | +1 | | `React 컴파일러 패스의 쓰기만 하는 컬렉션` | [react · 250.8k★](https://github.com/facebook/react) | 쓰기만 하는 컬렉션 (propagateNonNull 의 terminalPreds Set · alignReactiveScopesToBlockScopesHIR 의 placeScopes Map — 기록만 하고 읽지 않음) | [#37698](https://github.com/react/react/pull/37698) | ❌ closed | — | | `React 컴파일러 패스의 쓰기만 하는 컬렉션` | [react · 250.8k★](https://github.com/facebook/react) | 쓰기만 하는 컬렉션 (propagateNonNull 의 terminalPreds Set · alignReactiveScopesToBlockScopesHIR 의 placeScopes Map — 기록만 하고 읽지 않음) | [#37699](https://github.com/react/react/pull/37699) | ✅ merged | +1 | | `댓글 신고 이메일의 조회 3회 직렬` | [ghost · 55.5k★](https://github.com/TryGhost/Ghost) | 독립 순차 await (신고 API 가 기다리는 post·member·owner 조회 3개를 병렬 시작) | [#31019](https://github.com/TryGhost/Ghost/pull/31019) | ✅ merged | +1 | -| `sitemap 청크 URL 분류 O(n²)` | [astro · 63.1k★](https://github.com/withastro/astro) | O(n²) (청크별 배열 복사와 URL 포함 검사 → Set) | [#18149](https://github.com/withastro/astro/pull/18149) | ⚪ awaiting review | — | +| `sitemap 청크 URL 분류 O(n²)` | [astro · 63.2k★](https://github.com/withastro/astro) | O(n²) (청크별 배열 복사와 URL 포함 검사 → Set) | [#18149](https://github.com/withastro/astro/pull/18149) | ⚪ awaiting review | — | | `Vite 입력 CSS 의존성 기록 경합` | [tailwindcss · 97.8k★](https://github.com/tailwindlabs/tailwindcss) | 버려진 Promise (입력 CSS 파일 시각 기록을 기다리지 않아 재빌드 누락) | [#20525](https://github.com/tailwindlabs/tailwindcss/pull/20525) | ⚪ awaiting review | — | | `ES 청크 재내보내기 이름 반복 검색` | [rollup · 26.3k★](https://github.com/rollup/rollup) | O(n²) 배열 조회 (재내보내기마다 렌더된 export 배열 탐색 → Set) | [#6534](https://github.com/rollup/rollup/pull/6534) | ✅ merged | +1 | | `알림 목록의 모니터 관계 반복 검색` | [openstatus · 9.2k★](https://github.com/openstatusHQ/openstatus) | O(n²) 배열 조회 (알림마다 전체 모니터 관계 재검색 → Map 그룹화) | [#2780](https://github.com/openstatusHQ/openstatus/pull/2780) | ❌ closed | — | @@ -66,7 +66,7 @@ fixearly가 **실제 오픈소스에서 찾아낸 이슈**와 그 결과. 점수 | `M:N 소유 측 populate 가 부모마다 자식 전체를 다시 훑고 indexOf 로 정렬` | [mikro-orm · 9.2k★](https://github.com/mikro-orm/mikro-orm) | O(n²) 배열 조회 (부모 × 자식 filter + indexOf 정렬 — 자식 위치를 Map 으로 한 번 색인) | [#8392](https://github.com/mikro-orm/mikro-orm/pull/8392) | ✅ merged | +1 | | `upsertMany 재조회 행을 엔티티마다 전부 비교` | [mikro-orm · 9.2k★](https://github.com/mikro-orm/mikro-orm) | O(n²) 배열 조회 (배치 × 재조회 행 comparator.matching — 엄격 비교 키 값으로 행을 한 번 묶어 같은 묶음만 비교) | [#8393](https://github.com/mikro-orm/mikro-orm/pull/8393) | ✅ merged | +1 | | `표현식 unique·차집합이 원시값 배열도 깊은 비교로 이중 순회` | [n8n · 206.9k★](https://github.com/n8n-io/n8n) | O(n²) 배열 조회 (lodash isEqual 쌍 비교 — 원시값만 있으면 Set 이 같은 답을 낸다) | [#40311](https://github.com/n8n-io/n8n/pull/40311) | ⚪ awaiting review | — | -| `채우기만 하고 읽지 않는 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` | [Babylon.js · 26.2k★](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.5k★](https://github.com/CherryHQ/cherry-studio) | 쓰기만 하는 컬렉션 (set 만 하고 읽는 곳 0 — 생긴 뒤 한 번도 읽힌 적 없다) | [#21363](https://github.com/CherryHQ/cherry-studio/pull/21363) | ✅ merged | +1 | | `검증 에러가 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 | — | @@ -77,13 +77,13 @@ fixearly가 **실제 오픈소스에서 찾아낸 이슈**와 그 결과. 점수 | `실패 테스트 재실행이 추출 테스트마다 전부 다시 직렬화` | [promptfoo · 25.9k★](https://github.com/promptfoo/promptfoo) | O(n²) 배열 조회 (extractedTests.some(JSON.stringify(...)) — 미매칭 결과 5,000건에서 4.2초 → 21ms) | [#11464](https://github.com/promptfoo/promptfoo/pull/11464) | ✅ merged | +1 | | `모델 변경 후 QA 재학습이 옛 모델로 돈다` | [FastGPT · 29.8k★](https://github.com/labring/FastGPT) | 버려진 Promise (updateTraining 을 await 없이 트랜잭션 커밋 전에 호출 — 워커가 옛 에이전트 모델로 작업을 집고 실패는 사라진다) | [#7918](https://github.com/labring/FastGPT/pull/7918) | ❌ closed | — | | `SCAM 변환이 spec 의 declarations 를 못 지운다` | [nx · 29.4k★](https://github.com/nrwl/nx) | 버린 반환값 (spec.replace(/declarations: \[.+/, '') 결과를 대입 안 함 — standalone 컴포넌트가 declarations 에 남아 테스트가 깨진다) | [#37332](https://github.com/nrwl/nx/pull/37332) | ⚪ awaiting review | — | -| `설정 검색이 중첩 속성을 못 찾는다` | [jupyterlab · 15.3k★](https://github.com/jupyterlab/jupyterlab) | 버린 반환값 (acc.concat(재귀 결과) 를 대입 안 함 — 객체 설정 안의 속성 이름·제목이 검색에서 빠진다) | [#20008](https://github.com/jupyterlab/jupyterlab/pull/20008) | ✅ merged | +1 | +| `설정 검색이 중첩 속성을 못 찾는다` | [jupyterlab · 15.4k★](https://github.com/jupyterlab/jupyterlab) | 버린 반환값 (acc.concat(재귀 결과) 를 대입 안 함 — 객체 설정 안의 속성 이름·제목이 검색에서 빠진다) | [#20008](https://github.com/jupyterlab/jupyterlab/pull/20008) | ✅ merged | +1 | | `clang-query 도구 옵션이 compile_flags.txt 에 안 들어간다` | [compiler-explorer · 19.1k★](https://github.com/compiler-explorer/compiler-explorer) | 버린 반환값 (compileFlags.concat(this.tool.options) 결과를 대입 안 함 — TS 전환 때 push 가 concat 으로 바뀐 회귀) | [#9241](https://github.com/compiler-explorer/compiler-explorer/pull/9241) | ⚪ awaiting review | — | | `RAG 색인 상태 Map 쓰기만 함` | [readest · 25k★](https://github.com/readest/readest) | 쓰기만 하는 컬렉션 (ragService 의 indexingStates Map · IndexingState 객체 — 기록만 하고 읽지 않음) | [#6687](https://github.com/readest/readest/pull/6687) | ✅ merged | +1 | | `PKI 동기화 3곳의 외부 ID Map 쓰기만 함` | [infisical · 29.7k★](https://github.com/Infisical/infisical) | 쓰기만 하는 컬렉션 (ACM·Secrets Manager·Azure Key Vault 동기화의 syncRecordsByExternalId — 채우기만 하고 읽지 않음, Chef 만 씀) | [#8536](https://github.com/Infisical/infisical/pull/8536) | ⚪ awaiting review | — | | `채우기만 하고 읽지 않는 Map 3개` | [super-productivity · 22.7k★](https://github.com/super-productivity/super-productivity) | 쓰기만 하는 컬렉션 (op-log 검증 projectTaskMap · sync-md mdById · doc-mode lastWrittenTitles — 주석은 echo 판별용이라는데 읽는 곳 0) | [#10607](https://github.com/super-productivity/super-productivity/pull/10607) | ✅ merged | +1 | | `보내는 쪽이 사라진 구독 스트림` | [cline · 70.1k★](https://github.com/cline/cline) | 쓰기만 하는 컬렉션 (activeRelinquishControlSubscriptions — 유일한 송신 함수가 지워져 add/delete 만 남음 · 웹뷰 콜백도 못 울림) | [#14974](https://github.com/cline/cline/pull/14974) | ✅ merged | +1 | -| `인스펙터 v2 애니메이션 창이 자식 애니메이션을 버림` | [Babylon.js · 26.1k★](https://github.com/BabylonJS/Babylon.js) | 버린 반환값 (animations.concat(자식 애니메이션) 를 대입 안 함 — 자식에만 애니메이션이 있으면 'No Animations') | [#18990](https://github.com/BabylonJS/Babylon.js/pull/18990) | 🟠 changes requested | — | +| `인스펙터 v2 애니메이션 창이 자식 애니메이션을 버림` | [Babylon.js · 26.2k★](https://github.com/BabylonJS/Babylon.js) | 버린 반환값 (animations.concat(자식 애니메이션) 를 대입 안 함 — 자식에만 애니메이션이 있으면 'No Animations') | [#18990](https://github.com/BabylonJS/Babylon.js/pull/18990) | 🔵 approved · 머지 대기 | — | | `output 마이그레이션 ID 의 .d.ts 정규화 결과를 버림` | [angular · 101k★](https://github.com/angular/angular) | 버린 반환값 (id.replace(/\.d\.ts$/, '.ts') 결과 미대입 — 형제 마이그레이션 둘은 대입) | [#71267](https://github.com/angular/angular/pull/71267) | 🔵 approved · 머지 대기 | — | | `댓글 스레드 그래프의 깊이 Map 쓰기만 함` | [ghost · 55.5k★](https://github.com/TryGhost/Ghost) | 쓰기만 하는 컬렉션 (buildThreadGraph 의 depthById — 깊이는 reply.depth 로 이미 읽힌다) | [#31677](https://github.com/TryGhost/Ghost/pull/31677) | ⚪ awaiting review | — | | `ER 다이어그램·dagre 그래프의 쓰기만 하는 Map` | [mermaid · 90.6k★](https://github.com/mermaid-js/mermaid) | 쓰기만 하는 컬렉션 (ErDB.getData 의 subGraphDB — flowDb 에서 복사, parentDB 만 읽힘 · mermaid-graphlib 의 parents — set·clear 만) | [#8413](https://github.com/mermaid-js/mermaid/pull/8413) | ⚪ awaiting review | — | @@ -95,6 +95,7 @@ fixearly가 **실제 오픈소스에서 찾아낸 이슈**와 그 결과. 점수 | `jdbc: 접두사를 떼는 줄이 아무것도 안 함` | [nocodb · 65.2k★](https://github.com/nocodb/nocodb) | 버린 반환값 (jdbcToXcConfig·jdbcToXcUrl 의 url.replace(/^jdbc:/, '') — jdbc:mysql://… 가 driver jdbc·host mysql 로 파싱됨) | [#14812](https://github.com/nocodb/nocodb/pull/14812) | ⚪ awaiting review | — | | `모델 정보 창의 Base Model 행이 파일이 없으면 사라짐` | [rgthree-comfy · 3.6k★](https://github.com/rgthree/rgthree-comfy) | 같은 식 두 번 비교 (dialog_info 의 !info.baseModelFile && !info.baseModelFile — baseModel 이었어야) | [#790](https://github.com/rgthree/rgthree-comfy/pull/790) | ⚪ awaiting review | — | | `Route53 기존 레코드를 못 찾고 매번 CREATE 를 보냄` | [serverless · 46.9k★](https://github.com/serverless/serverless) | return 없는 콜백 (createRecordIfNotExists 의 ResourceRecordSets.find — 블록 본문이 값을 안 돌려줘 existingRecord 가 늘 undefined) | [#13947](https://github.com/serverless/serverless/pull/13947) | ⚪ awaiting review | — | +| `벤치마크가 잘못된 type 을 받아도 실패하지 않고 엉뚱한 값을 잼` | [Node.js · 122.3k★](https://github.com/nodejs/node) | 버린 반환값 (fs·webstorage 벤치마크 21곳 default 분기의 new Error('Invalid type') — throw 가 빠져 아무 일도 안 함) | [#66647](https://github.com/nodejs/node/pull/66647) | ⚪ awaiting review | — | ## 규칙 diff --git a/PR-QUEUE.md b/PR-QUEUE.md index b793076..8294ac9 100644 --- a/PR-QUEUE.md +++ b/PR-QUEUE.md @@ -53,6 +53,7 @@ | [angular#70690](https://github.com/angular/angular/pull/70690) | 머지 | — | | [angular#70977](https://github.com/angular/angular/pull/70977) | 머지 | — | | [angular#71119](https://github.com/angular/angular/pull/71119) | 머지 | — | +| [Babylon.js#18990](https://github.com/BabylonJS/Babylon.js/pull/18990) | 승인 | — | | [angular#71267](https://github.com/angular/angular/pull/71267) | 승인 | — | | [openstatus#2620](https://github.com/openstatusHQ/openstatus/pull/2620) | 닫힘 | 상위 #2751 의존성 업데이트로 Hono 4.13.8·node-server 2.1.1이 반영돼 보안 목표가 충족됐다. 이 PR은 미병합 | | [openstatus#2780](https://github.com/openstatusHQ/openstatus/pull/2780) | 닫힘 | 메인테이너가 V1 API 폐기 예정이라고 밝혀 우리가 닫았다 | @@ -348,30 +349,31 @@ CLA 는 봇 댓글(`@microsoft-github-policy-service agree`)뿐 · 이슈 없는 | PR | 축 | 상태 | 경과 / 외부 머지 중앙값 | |---|---|---|---| -| [angular#71267](https://github.com/angular/angular/pull/71267) | 버린 반환값 | 🔵 승인 · 머지 대기 | 오늘 / 보통 2일 | -| [Babylon.js#18990](https://github.com/BabylonJS/Babylon.js/pull/18990) | 버린 반환값 | 🟠 변경 요청 | 오늘 / 보통 1일 | -| [vscode#340771](https://github.com/microsoft/vscode/pull/340771) | return 없는 콜백 | 🟢 리뷰 진행 | 오늘 / 보통 1일 | +| [Babylon.js#18990](https://github.com/BabylonJS/Babylon.js/pull/18990) | 버린 반환값 | 🔵 승인 · 머지 대기 | 1일째 / 보통 1일 | +| [angular#71267](https://github.com/angular/angular/pull/71267) | 버린 반환값 | 🔵 승인 · 머지 대기 | 1일째 / 보통 2일 | +| [vscode#340771](https://github.com/microsoft/vscode/pull/340771) | return 없는 콜백 | 🟢 리뷰 진행 | 1일째 / 보통 1일 | | [infisical#8536](https://github.com/Infisical/infisical/pull/8536) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 1일째 / 보통 1일 | -| [insomnia#10575](https://github.com/Kong/insomnia/pull/10575) | forEach 안 await | ⚪ 대기 | 2일째 / 보통 2일 | +| [insomnia#10575](https://github.com/Kong/insomnia/pull/10575) | forEach 안 await | ⚪ 대기 | 3일째 / 보통 2일 | | [Trilium#11949](https://github.com/TriliumNext/Trilium/pull/11949) | 버려진 Promise | ⚪ 대기 | 2일째 / 보통 1일 | -| [ghost#31677](https://github.com/TryGhost/Ghost/pull/31677) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 오늘 / 보통 1일 | -| [compiler-explorer#9241](https://github.com/compiler-explorer/compiler-explorer/pull/9241) | 버린 반환값 | ⚪ 대기 | 1일째 / 보통 1일 | -| [cytoscape.js#3527](https://github.com/cytoscape/cytoscape.js/pull/3527) | O(n²) | ⚪ 대기 | 2일째 / 보통 6일 | -| [mermaid#8413](https://github.com/mermaid-js/mermaid/pull/8413) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 오늘 / 보통 6일 | -| [pdf.js#22102](https://github.com/mozilla/pdf.js/pull/22102) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 2일째 / 보통 1일 | -| [n8n#40311](https://github.com/n8n-io/n8n/pull/40311) | O(n²) | ⚪ 대기 | 4일째 / 보통 1일 | -| [nocodb#14812](https://github.com/nocodb/nocodb/pull/14812) | 버린 반환값 | ⚪ 대기 | 오늘 | +| [ghost#31677](https://github.com/TryGhost/Ghost/pull/31677) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 1일째 / 보통 1일 | +| [compiler-explorer#9241](https://github.com/compiler-explorer/compiler-explorer/pull/9241) | 버린 반환값 | ⚪ 대기 | 2일째 / 보통 1일 | +| [cytoscape.js#3527](https://github.com/cytoscape/cytoscape.js/pull/3527) | O(n²) | ⚪ 대기 | 3일째 / 보통 6일 | +| [mermaid#8413](https://github.com/mermaid-js/mermaid/pull/8413) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 1일째 / 보통 6일 | +| [pdf.js#22102](https://github.com/mozilla/pdf.js/pull/22102) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 3일째 / 보통 1일 | +| [n8n#40311](https://github.com/n8n-io/n8n/pull/40311) | O(n²) | ⚪ 대기 | 5일째 / 보통 1일 | +| [nocodb#14812](https://github.com/nocodb/nocodb/pull/14812) | 버린 반환값 | ⚪ 대기 | 1일째 | +| [Node.js#66647](https://github.com/nodejs/node/pull/66647) | 버린 반환값 | ⚪ 대기 | 오늘 / 보통 2일 | | [nx#37332](https://github.com/nrwl/nx/pull/37332) | 버린 반환값 | ⚪ 대기 | 2일째 / 보통 1일 | -| [opensumi#4776](https://github.com/opensumi/core/pull/4776) | 버린 반환값 | ⚪ 대기 | 오늘 / 보통 4일 | -| [react-router#15591](https://github.com/remix-run/react-router/pull/15591) | 버려진 Promise | ⚪ 대기 | 2일째 / 보통 4일 | +| [opensumi#4776](https://github.com/opensumi/core/pull/4776) | 버린 반환값 | ⚪ 대기 | 1일째 / 보통 4일 | +| [react-router#15591](https://github.com/remix-run/react-router/pull/15591) | 버려진 Promise | ⚪ 대기 | 3일째 / 보통 4일 | | [rgthree-comfy#790](https://github.com/rgthree/rgthree-comfy/pull/790) | 같은 식 두 번 비교 | ⚪ 대기 | 오늘 / 보통 4일 | | [serverless#13947](https://github.com/serverless/serverless/pull/13947) | return 없는 콜백 | ⚪ 대기 | 오늘 / 보통 1일 | -| [strapi#27893](https://github.com/strapi/strapi/pull/27893) | 버려진 Promise | ⚪ 대기 | 8일째 / 보통 6일 | -| [tailwindcss#20525](https://github.com/tailwindlabs/tailwindcss/pull/20525) | 버려진 Promise | ⚪ 대기 | 12일째 / 보통 1일 · 보류 | -| [affine#15692](https://github.com/toeverything/AFFiNE/pull/15692) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 오늘 / 보통 6일 | -| [astro#18149](https://github.com/withastro/astro/pull/18149) | O(n²) | ⚪ 대기 | 12일째 / 보통 1일 · 보류 | +| [strapi#27893](https://github.com/strapi/strapi/pull/27893) | 버려진 Promise | ⚪ 대기 | 9일째 / 보통 6일 | +| [tailwindcss#20525](https://github.com/tailwindlabs/tailwindcss/pull/20525) | 버려진 Promise | ⚪ 대기 | 13일째 / 보통 1일 · 보류 | +| [affine#15692](https://github.com/toeverything/AFFiNE/pull/15692) | 쓰기만 하는 컬렉션 | ⚪ 대기 | 1일째 / 보통 6일 | +| [astro#18149](https://github.com/withastro/astro/pull/18149) | O(n²) | ⚪ 대기 | 13일째 / 보통 1일 · 보류 | -**열린 것 22건(보류 2건 빼면 20건).** 판정 난 63건 중 머지 36 · 승인 1 · 닫힘 26. +**열린 것 23건(보류 2건 빼면 21건).** 판정 난 64건 중 머지 36 · 승인 2 · 닫힘 26. **2026-08-10 준비** — astro 후보를 손검증까지 끝내고 브랜치만 만들어 뒀다(하루 1건이라 @@ -798,81 +800,81 @@ changeset(`astro: patch`)을 같이 넣는다. 브랜치는 `fix/stack-trace-reg | 저장소 | 지나가는 기여자 수락률 | 전체 외부 | 중앙 | 지나가는 머지 | 판정 | 메모 | |---|---|---|---|---|---|---| -| Ghost | 100% | 95% | 0.0일 | 5/5 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 | -| orval | 100% | 96% | 0.1일 | 10/10 | **1차 통과** | 판정 경험 있음 | -| pnpm | 100% | 100% | 0.1일 | 6/6 | 표본 부족 | 판정 경험 있음 · AI 작성 PR 본문에 agent disclosure 필수 · 전체 저장소 대신 영향 패키지 테스트 실행 | -| mikro-orm | 100% | 100% | 0.2일 | 14/14 | **1차 통과** | 판정 경험 있음 | +| orval | 100% | 96% | 0.1일 | 9/9 | 표본 부족 | 판정 경험 있음 | +| mikro-orm | 100% | 94% | 0.2일 | 12/12 | **1차 통과** | 판정 경험 있음 | | novu | 100% | 94% | 0.2일 | 3/3 | 표본 부족 | 판정 경험 있음 | | mattermost | 100% | 98% | 0.7일 | 9/9 | 표본 부족 | — | | pdf.js | 100% | 85% | 0.7일 | 3/3 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 | | n8n | 100% | 90% | 1.0일 | 22/22 | **1차 통과** | 열린 PR 있음 — 저장소당 1건 | -| cherry-studio | 100% | 94% | 1.2일 | 11/11 | **1차 통과** | 판정 경험 있음 | | compromise | 100% | 90% | 1.5일 | 11/11 | **1차 통과** | — | | Babylon.js | 96% | 83% | 0.9일 | 23/24 | **1차 통과** | 열린 PR 있음 — 저장소당 1건 | | react-hook-form | 94% | 88% | 0.1일 | 16/17 | **1차 통과** | — | -| compiler-explorer | 92% | 94% | 0.6일 | 11/12 | **1차 통과** | 열린 PR 있음 — 저장소당 1건 | | storybook | 92% | 84% | 6.2일 | 11/12 | 1차 통과 · 후순위(느림) | 판정 경험 있음 · 게이트 0 — danger 가 `ci:*`·`qa:*` 라벨을 요구하는데 메인테이너만 붙일 수 있다 (#35829 가 25일째 빨간불이라 접었다) · CONTRIBUTING 'Never let an LLM speak for you': 사람 개입 없는 PR 은 3일 뒤 자동 닫힘 | -| insomnia | 89% | 98% | 1.7일 | 8/9 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 | +| super-productivity | 91% | 91% | 2.5일 | 10/11 | **1차 통과** | 판정 경험 있음 | +| cherry-studio | 90% | 88% | 0.9일 | 9/10 | **1차 통과** | 판정 경험 있음 | +| compiler-explorer | 89% | 92% | 0.7일 | 8/9 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 | | openstatus | 88% | 88% | 3.8일 | 7/8 | 표본 부족 | 판정 경험 있음 | -| rollup | 88% | 88% | 6.4일 | 14/16 | 1차 통과 · 후순위(느림) | 판정 경험 있음 · 코드 변경은 테스트 필수 · 내부 API 단위 테스트 대신 전체 산출물 테스트로 검증 · 첫 외부 기여자 CI 는 메인테이너 워크플로 승인 필요 · Vercel 배포도 Rollup 팀원 승인 필요 | +| rollup | 88% | 88% | 9.1일 | 15/17 | 1차 통과 · 후순위(느림) | 판정 경험 있음 · 코드 변경은 테스트 필수 · 내부 API 단위 테스트 대신 전체 산출물 테스트로 검증 · 첫 외부 기여자 CI 는 메인테이너 워크플로 승인 필요 · Vercel 배포도 Rollup 팀원 승인 필요 | +| promptfoo | 86% | 91% | 0.6일 | 12/14 | **1차 통과** | 판정 경험 있음 | | tegaki | 83% | 83% | 0.5일 | 10/12 | **1차 통과** | 판정 경험 있음 | -| infisical | 83% | 81% | 1.4일 | 5/6 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 | | cytoscape.js | 83% | 88% | 6.3일 | 10/12 | 1차 통과 · 후순위(느림) | 열린 PR 있음 — 저장소당 1건 | | babel | 82% | 70% | 0.8일 | 9/11 | **1차 통과** | 게이트 0 — AI_POLICY.md: LLM 이 쓴 PR 설명 금지(본인이 직접 써야 함), LLM 산문은 앞에 명시 표기. 어기면 조직 차단까지. 설명을 사람이 쓰지 않는 한 내지 않는다 | | readest | 82% | 85% | 0.9일 | 14/17 | **1차 통과** | 판정 경험 있음 | +| insomnia | 82% | 95% | 1.6일 | 9/11 | **1차 통과** | 열린 PR 있음 — 저장소당 1건 | | nx | 80% | 85% | 0.7일 | 4/5 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 · 열린 PR 있음 — 저장소당 1건 · PR 제목을 `scripts/validate-pr-title.js` 가 검증한다 · **포크 PR 의 워크플로는 메인테이너 승인이 있어야 돈다**(2026-09-12 확인: 네 워크플로 전부 `action_required`). 빨간불처럼 보여도 우리 코드가 깬 게 아니다 — 재푸시하면 승인만 다시 걸린다 | -| next.js | 80% | 73% | 1.1일 | 4/5 | 표본 부족 | 커밋 서명 필수 · 기여 가이드가 사소한 정리 PR 은 닫힐 가능성이 높다고 명시 · PR 템플릿: 외부 기여자 PR 설명은 사람이 직접 써야 함 | | Burn-My-Windows | 80% | 82% | 2.7일 | 8/10 | **1차 통과** | 판정 경험 있음 | -| grafana | 79% | 81% | 0.7일 | 27/34 | 컷 | 판정 경험 있음 · 게이트 0 — 2026-06-22 부터 모든 커밋 서명 필수, 미서명 PR 은 닫는다(CONTRIBUTING, 에이전트 작성 PR 포함). CLA assistant 서명도 필요 | | supabase | 79% | 64% | 0.9일 | 19/24 | 컷 | — | -| super-productivity | 79% | 82% | 2.3일 | 11/14 | 컷 | 판정 경험 있음 | | terser | 79% | 72% | 5.5일 | 26/33 | 컷 | — | | kiss-translator | 78% | 82% | 1.4일 | 14/18 | 컷 | — | | mongoose | 76% | 78% | 2.6일 | 16/21 | 컷 | 판정 경험 있음 | | postcss | 75% | 76% | 0.2일 | 27/36 | 컷 | — | +| grafana | 75% | 80% | 0.3일 | 24/32 | 컷 | 판정 경험 있음 · 게이트 0 — 2026-06-22 부터 모든 커밋 서명 필수, 미서명 PR 은 닫는다(CONTRIBUTING, 에이전트 작성 PR 포함). CLA assistant 서명도 필요 | | payload | 75% | 88% | 1.0일 | 6/8 | 표본 부족 | 판정 경험 있음 | | core | 75% | 71% | 3.9일 | 6/8 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 | | nest | 75% | 86% | 4.3일 | 9/12 | 컷 | — | -| promptfoo | 74% | 83% | 6.3일 | 14/19 | 컷 | 판정 경험 있음 | | TypeScript | 71% | 68% | 1.6일 | 5/7 | 표본 부족 | 게이트 0 — CONTRIBUTING '자율 코딩 에이전트 안내': **큐·대량 워크플로로 PR 을 열지 마라**(이슈·검색결과를 훑어 도는 방식). 어기면 계정 차단. 특정 사람이 그 건을 직접 고르고 리뷰까지 본인이 끌고 갈 때만 허용하고, 지시가 충돌하면 '운영자에게 이 문단을 보여주고 멈추라'고 적혀 있다. AI 보조 자체는 PR 본문에 밝히면 허용(밝히지 않으면 리뷰 없이 닫힘) · 자동 생성 댓글 금지 | -| cline | 69% | 72% | 0.5일 | 9/13 | 컷 | 판정 경험 있음 | +| cline | 69% | 72% | 0.4일 | 9/13 | 컷 | 판정 경험 있음 | | tabby | 69% | 78% | 8.1일 | 9/13 | 컷 | — | -| vscode | 67% | 95% | 0.1일 | 2/3 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 · CLA 는 봇 댓글로 서명(@microsoft-github-policy-service agree) · 이슈 연결 권장이지만 정리 PR 은 이슈 없이도 머지 사례(#334095) · 버그 PR 은 메인테이너가 이슈 먼저 요구할 수 있음 | | serverless | 67% | 92% | 0.1일 | 6/9 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 | -| immich | 67% | 57% | 0.3일 | 12/18 | 컷 | 판정 경험 있음 · 게이트 0 — `changelog:*` 라벨이 메인테이너 전용 | +| FastGPT | 67% | 65% | 3.7일 | 10/15 | 컷 | 판정 경험 있음 | | react-router | 63% | 73% | 4.0일 | 19/30 | 컷 | 열린 PR 있음 — 저장소당 1건 | -| twenty | 62% | 68% | 3.0일 | 10/16 | 컷 | 판정 경험 있음 | -| angular | 61% | 82% | 2.2일 | 11/18 | 컷 | 열린 PR 있음 — 저장소당 1건 · CLA 서명 필요 — 2026-09-11 yoominho91 서명 완료(cla/google 통과) | -| FastGPT | 60% | 62% | 2.8일 | 9/15 | 컷 | 판정 경험 있음 | +| infisical | 62% | 77% | 1.3일 | 5/8 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 | | svelte | 58% | 53% | 1.5일 | 15/26 | 컷 | — | -| marktext | 57% | 57% | 0.8일 | 8/14 | 컷 | — | +| eslint | 58% | 64% | 3.1일 | 18/31 | 컷 | 판정 경험 있음 · 게이트 0 — AI 보조 PR 은 **선행 이슈**가 있어야 받는다(eslint.org/docs/latest/contribute/ai-policy). PR 템플릿의 AI 체크박스를 정직하게 체크하면 이 정책이 적용된다 | +| marktext | 57% | 57% | 0.7일 | 8/14 | 컷 | — | | mermaid | 57% | 62% | 6.1일 | 12/21 | 컷 | 열린 PR 있음 — 저장소당 1건 | | berry | 57% | 57% | 11.6일 | 27/47 | 컷 | — | | v86 | 56% | 70% | 2.0일 | 14/25 | 컷 | — | -| eslint | 56% | 63% | 2.8일 | 18/32 | 컷 | 판정 경험 있음 · 게이트 0 — AI 보조 PR 은 **선행 이슈**가 있어야 받는다(eslint.org/docs/latest/contribute/ai-policy). PR 템플릿의 AI 체크박스를 정직하게 체크하면 이 정책이 적용된다 | +| angular | 56% | 80% | 2.2일 | 9/16 | 컷 | 열린 PR 있음 — 저장소당 1건 · CLA 서명 필요 — 2026-09-11 yoominho91 서명 완료(cla/google 통과) | +| immich | 55% | 48% | 0.3일 | 11/20 | 컷 | 판정 경험 있음 · 게이트 0 — `changelog:*` 라벨이 메인테이너 전용 | | tailwindcss | 55% | 65% | 0.5일 | 16/29 | 컷 | 열린 PR 있음 — 저장소당 1건 | | jupyterlab | 55% | 81% | 0.6일 | 6/11 | 컷 | 판정 경험 있음 | | jest | 54% | 54% | 7.1일 | 13/24 | 컷 | — | | cesium | 53% | 71% | 1.5일 | 8/15 | 컷 | — | | turborepo | 50% | 91% | 0.2일 | 5/10 | 컷 | 판정 경험 있음 | +| next.js | 50% | 67% | 1.1일 | 3/6 | 표본 부족 | 커밋 서명 필수 · 기여 가이드가 사소한 정리 PR 은 닫힐 가능성이 높다고 명시 · PR 템플릿: 외부 기여자 PR 설명은 사람이 직접 써야 함 | +| twenty | 50% | 30% | 1.3일 | 6/12 | 컷 | 판정 경험 있음 | | rgthree-comfy | 50% | 49% | 3.9일 | 15/30 | 컷 | 열린 PR 있음 — 저장소당 1건 | -| AFFiNE | 48% | 48% | 5.7일 | 11/23 | 컷 | 열린 PR 있음 — 저장소당 1건 | +| AFFiNE | 50% | 50% | 5.7일 | 11/22 | 컷 | 열린 PR 있음 — 저장소당 1건 | | typebot.io | 47% | 29% | 13.3일 | 7/15 | 컷 | 판정 경험 있음 | -| medusa | 46% | 41% | 5.2일 | 11/24 | 컷 | 판정 경험 있음 · 게이트 0 — CONTRIBUTING 'Issues before PRs': 작업 전에 이슈가 먼저 있어야 한다 · PR 대상 브랜치는 main 이 아니라 `develop` · 브랜치 이름 접두사가 PR 라벨을 정한다(CLAUDE.md) · PR 템플릿이 What/Why/How/Testing + 사용 예제를 요구한다 · AI 정책은 없다 | +| pnpm | 45% | 45% | 0.1일 | 9/20 | 컷 | 판정 경험 있음 · AI 작성 PR 본문에 agent disclosure 필수 · 전체 저장소 대신 영향 패키지 테스트 실행 | | parcel | 45% | 45% | 6.6일 | 9/20 | 컷 | — | -| outline | 43% | 43% | 7.0일 | 3/7 | 표본 부족 | 판정 경험 있음 · AI 정책 없음 · 수락률 38%(3/8)·중앙 5.9일 로 로테이션 컷 | | directus | 41% | 45% | 5.2일 | 12/29 | 컷 | 판정 경험 있음 | +| medusa | 41% | 41% | 5.2일 | 11/27 | 컷 | 판정 경험 있음 · 게이트 0 — CONTRIBUTING 'Issues before PRs': 작업 전에 이슈가 먼저 있어야 한다 · PR 대상 브랜치는 main 이 아니라 `develop` · 브랜치 이름 접두사가 PR 라벨을 정한다(CLAUDE.md) · PR 템플릿이 What/Why/How/Testing + 사용 예제를 요구한다 · AI 정책은 없다 | +| vscode | 40% | 86% | 0.1일 | 2/5 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 · CLA 는 봇 댓글로 서명(@microsoft-github-policy-service agree) · 이슈 연결 권장이지만 정리 PR 은 이슈 없이도 머지 사례(#334095) · 버그 PR 은 메인테이너가 이슈 먼저 요구할 수 있음 | | langfuse | 40% | 87% | 0.3일 | 2/5 | 표본 부족 | 판정 경험 있음 | | astro | 40% | 77% | 1.1일 | 2/5 | 표본 부족 | 열린 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 내용과 무관하다 | +| node | 38% | 46% | 2.0일 | 6/16 | 컷 | 열린 PR 있음 — 저장소당 1건 | +| outline | 38% | 38% | 7.0일 | 3/8 | 표본 부족 | 판정 경험 있음 · AI 정책 없음 · 수락률 38%(3/8)·중앙 5.9일 로 로테이션 컷 | +| prettier | 36% | 26% | 0.8일 | 5/14 | 컷 | — | +| vite | 35% | 35% | 3.4일 | 11/31 | 컷 | 판정 경험 있음 · 게이트 0 — CONTRIBUTING 'AI Policy': 댓글·이슈·PR 설명은 본인 말로 써야 함(LLM 이 대신 말하지 말 것). 어기면 바로 닫을 수 있음 | | strapi | 35% | 45% | 6.0일 | 7/20 | 컷 | 열린 PR 있음 — 저장소당 1건 | -| vite | 32% | 32% | 3.9일 | 10/31 | 컷 | 판정 경험 있음 · 게이트 0 — CONTRIBUTING 'AI Policy': 댓글·이슈·PR 설명은 본인 말로 써야 함(LLM 이 대신 말하지 말 것). 어기면 바로 닫을 수 있음 | -| typeorm | 32% | 42% | 17.3일 | 10/31 | 컷 | 판정 경험 있음 | -| prettier | 31% | 23% | 9.0일 | 4/13 | 컷 | — | | cli | 28% | 43% | 4.3일 | 7/25 | 컷 | — | | acorn | 26% | 53% | 0.8일 | 9/35 | 컷 | 게이트 0 — CONTRIBUTING: AI 언어모델이 (일부라도) 쓴 코드는 받지 않는다 | +| typeorm | 26% | 40% | 15.0일 | 7/27 | 컷 | 판정 경험 있음 | | budibase | 25% | 65% | 0.8일 | 2/8 | 표본 부족 | 판정 경험 있음 · 게이트 0 — 외부 PR 은 '작성자에게 배정된' 이슈를 참조해야 하는데 배정은 메인테이너만 한다 (#19555 가 이 봇 체크로 당일 닫혔다) | | vitest | 24% | 21% | 0.5일 | 5/21 | 컷 | 게이트 0 — CONTRIBUTING 'AI Contributions': 실제 사람이 공식 템플릿으로 열고 AI 도구를 밝혀야 함. 사람 개입 없는 PR 은 'maybe automated' 라벨 후 1일 뒤 자동 닫힘, 답글도 LLM 이 쓴 게 아니어야 함 | -| react | 20% | 14% | 4.4일 | 6/30 | 컷 | 판정 경험 있음 · 후보가 `/* DISABLED */` 주석 건이라 PR 보다 이슈가 맞다 | +| react | 20% | 13% | 4.4일 | 6/30 | 컷 | 판정 경험 있음 · 후보가 `/* DISABLED */` 주석 건이라 PR 보다 이슈가 맞다 | | core | 17% | 65% | 0.5일 | 1/6 | 표본 부족 | — | | cal.diy | 10% | 7% | 2.5일 | 4/42 | 컷 | 판정 경험 있음 · 게이트 0 — 외부 PR 에서 `required` 잡이 항상 실패 | | drizzle-orm | 10% | 8% | 5.7일 | 4/40 | 컷 | drizzle-kit 의 snapshotsDiffer 는 beta(v1 재작성)에서 사라졌다 — main 쪽 수정은 곧 버려질 코드 | @@ -880,6 +882,7 @@ changeset(`astro: patch`)을 같이 넣는다. 브랜치는 `fix/stack-trace-reg | excalidraw | 0% | 0% | 표본 없음 | 0/53 | 컷 | 판정 경험 있음 | | nocodb | 0% | 0% | 표본 없음 | 0/2 | 표본 부족 | 열린 PR 있음 — 저장소당 1건 | | Trilium | —% | 100% | 0.0일 | 0/0 | 표본 없음 | 열린 PR 있음 — 저장소당 1건 | +| Ghost | —% | 91% | 0.0일 | 0/0 | 표본 없음 | 열린 PR 있음 — 저장소당 1건 | | webpack | —% | —% | 표본 없음 | 0/0 | 표본 없음 | 게이트 0 — AGENTS.md 가 PR 본문 양식(Use of AI 섹션 필수, governance AI_POLICY: human-in-the-loop·질문에 답할 수 있어야 함)과 Co-authored-by 금지, 커밋 author 는 사람만을 REQUIRED 로 둔다 | diff --git a/data/repo-avatars.json b/data/repo-avatars.json index 634468d..3864509 100644 --- a/data/repo-avatars.json +++ b/data/repo-avatars.json @@ -54,5 +54,6 @@ "Schneegans/Burn-My-Windows": "data:image/png;base64,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", "gkurt/tegaki": "data:image/png;base64,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", "rgthree/rgthree-comfy": "data:image/png;base64,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", -"serverless/serverless": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAABOUlEQVR4nGJioDEYtWDUglEL6GABCy6J2aaGSUrycO7///81t+25/eWrACvrM38PdmZmZMWPv31T2LwLqznE+uDs+w+3v3xlYGDwkhRHMx0/wOmDPS9fffnzB87d/eIVhPHn//9Jt+6iKf7w6xfxVlIZ4PSBl6S4vgA/hH3u/YedYB/4Skno8PNhKv70+/fUO/dJsyBQRgoeyQknz0IY/Ya6ijzcmIoff/uGywLCkfz3//8dz18yMDDo8PNiNR0/YMQlIcDKysXCDLHg5Y+fDAwMnMxMgmxsuBwBUTMAAGccxCvI2YgKf/r9u/jCFQYGBmVurgotdVyK3/36VX7xKmkW2IgKJynJr338FMKNVZBDztho4PG3b7gsIBDJ2569hDAi5GXwqxwwMPSL61ELRi0YAhYAAgAA//9MC2WR1XAhXAAAAABJRU5ErkJggg==" +"serverless/serverless": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAABOUlEQVR4nGJioDEYtWDUglEL6GABCy6J2aaGSUrycO7///81t+25/eWrACvrM38PdmZmZMWPv31T2LwLqznE+uDs+w+3v3xlYGDwkhRHMx0/wOmDPS9fffnzB87d/eIVhPHn//9Jt+6iKf7w6xfxVlIZ4PSBl6S4vgA/hH3u/YedYB/4Skno8PNhKv70+/fUO/dJsyBQRgoeyQknz0IY/Ya6ijzcmIoff/uGywLCkfz3//8dz18yMDDo8PNiNR0/YMQlIcDKysXCDLHg5Y+fDAwMnMxMgmxsuBwBUTMAAGccxCvI2YgKf/r9u/jCFQYGBmVurgotdVyK3/36VX7xKmkW2IgKJynJr338FMKNVZBDztho4PG3b7gsIBDJ2569hDAi5GXwqxwwMPSL61ELRi0YAhYAAgAA//9MC2WR1XAhXAAAAABJRU5ErkJggg==", +"nodejs/node": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEgElEQVR4nLSXXUwcVRTHz70z+wFlWZBKkQZqgZS2PhCQ+kn1UQ2NUZ+0TUyq9c2QWGuML9a+1IRorDH1wcYXfdCgaSRpU2PS2Gh8ajQlAUFYQWBblo9dlv2euV/m3plZWHYXFxhPMnOG4d45v/s/Z87e0WAHpnmx9+gLB9/qO9c11Ni19/nUYvavbDQX3smz0HYntDza+GzvmcOfVdf5OzgDoJRDOsEgMrL89Z9DU+dyq8bS/wJwX1vgSO/rnYNNDzWcEByAMwESgHEBRoYDMQUIyhLTN+cuhm7MXmImN1wB8Ab0QO+rh853Ptc6AAI8KvAmAEYF5NJcjccaAiOZmxn7NjRw9/bitR0DYB1pR/pbT3ef7Ljgr/U2C+EELQaQnhgMiAmAsQUh/cpk/MfRocl34jPJ0W0BNHc1PPbkwNHL9S2BHiEESMn/C4AzDkZWWPAYAdYAEAZACOjsr/cuj34XOm8mydqWAIH91S2Pnzl8se1400kBgK3AFQJwAdTkQImtAkaANBsGA5hZEpkYnvkg9NP8l4IJWgTQ/Ur7m4+cPjSo6bhKBcsHrhyAU6GK0VIBANmpUDC2T0XSI79dGnkpEU5Py3GqD2h+bc8Tb3ffCtR7fA6QyJ/WvYTY8uDrHiFrfdIjZHl58tZ4mgjCwaU7K8MKVJ00XB2NmDolvFytVGzIimxDbVDR/juToqD59VpnPHYupIxLYXPXAGDnNa/GBmVk2jIpVjAWb5y2ukQhl2WuQAgVsXD16SRV1/nUFgDYN91SIV/ItgqUCDByxSnGhbMAkjGm8uSGybQ6NZDNsJJtBxdEty0ya1oS7haA2/2BcKDy9VTyowKQdQDsJMfq68mYOyowKX12k/TFNSBA6BxAHgqEw/Jdl1SwG1c5swCkIjpXEEJnAJoAYgiIL7mhArIEL7OW9RR4mH1wENzK08qCqX5q3YAAURpiHcBJAUeAhHVbVnEsQlwAsK0ERD4F+Row9IIB8WUKxNx9iy639cgXoaoBQwfEN7UGAbByz2UVigGs1xAlvSXnpOIMcmk3WjQqUkIBcCrSsOY1ndyXsqiLtWCmSdy5VvsBQQUhMT4XfDB4HOtadalJspP5qjDoHlTRfmDzPUf6xHzi59Bw6CzN0rU8gLRUODUS+X3hiqfWE9zTVNNj7WEKTXa0QL2mZNwugJkw56euTb0RGg696wQvAJDGTZ6LjkWvx6Ziw9X7qjr8QX9bwf9lj9IReP24YgBmsNTcL+EPx78ZP5WcS97ZvKgtvwsaH77/xbZn2j/xBXwH8sQ6wAMHfUrSUntCxsD2AhZHo99PXJ08m13OzZeLseW3YXohM7Fwe+ELgUUu0Bw4hjXsk6uT2LIeyimQiKT+GPlq/NT0jX8GaYYmtopR8aeZf6+vuf1Ex8cNnQ0vY4Rg3wEvSL9RASNFYuM/TL83c3P+iuDluv8OARyr76x7qq2//aPG9tpjdQ0e69OMCDJ9K/z52NW/L5hrZHW7z9y+YUD7+5pf6/+0L/T0+z3Xg601nTt91L8BAAD//+SmJxGCA1CJAAAAAElFTkSuQmCC" } \ No newline at end of file diff --git a/data/repo-contributors.json b/data/repo-contributors.json index 84989be..58bcc02 100644 --- a/data/repo-contributors.json +++ b/data/repo-contributors.json @@ -1,11 +1,11 @@ { - "generatedAt": "2026-10-10T08:41:24+00:00", + "generatedAt": "2026-10-10T18:28:58+00:00", "method": "GitHub REST contributors?per_page=1&anon=true; last-page count; commit authors, not unique humans", "repos": { "Automattic/mongoose": 1090, "BabylonJS/Babylon.js": 804, "Budibase/budibase": 148, - "CherryHQ/cherry-studio": 482, + "CherryHQ/cherry-studio": 483, "Infisical/infisical": 286, "Kong/insomnia": 366, "Schneegans/Burn-My-Windows": 124, @@ -18,14 +18,14 @@ "compiler-explorer/compiler-explorer": 702, "cytoscape/cytoscape.js": 170, "directus/directus": 589, - "eslint/eslint": 1253, + "eslint/eslint": 1254, "excalidraw/excalidraw": 378, "facebook/react": 2020, "gkurt/tegaki": 11, "grafana/grafana": 3142, "immich-app/immich": 1025, "jupyterlab/jupyterlab": 739, - "labring/FastGPT": 196, + "labring/FastGPT": 197, "langfuse/langfuse": 221, "medusajs/medusa": 589, "mermaid-js/mermaid": 855, @@ -34,6 +34,7 @@ "mozilla/pdf.js": 536, "n8n-io/n8n": 812, "nocodb/nocodb": 355, + "nodejs/node": 4523, "novuhq/novu": 536, "nrwl/nx": 1310, "openstatusHQ/openstatus": 126, @@ -41,16 +42,16 @@ "orval-labs/orval": 406, "outline/outline": 265, "payloadcms/payload": 587, - "pnpm/pnpm": 698, + "pnpm/pnpm": 700, "promptfoo/promptfoo": 387, "readest/readest": 137, "remix-run/react-router": 1320, "rgthree/rgthree-comfy": 21, - "rollup/rollup": 473, + "rollup/rollup": 474, "serverless/serverless": 1246, "storybookjs/storybook": 2801, "strapi/strapi": 1398, - "super-productivity/super-productivity": 531, + "super-productivity/super-productivity": 534, "tailwindlabs/tailwindcss": 377, "toeverything/AFFiNE": 270, "twentyhq/twenty": 774, diff --git a/data/repo-merge-times.json b/data/repo-merge-times.json index 1c46df8..1f1d260 100644 --- a/data/repo-merge-times.json +++ b/data/repo-merge-times.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-10-10T08:43:25Z", + "generatedAt": "2026-10-10T18:30:59Z", "method": "latest 60 closed PRs; merged non-bot external contributors; medianDays is the one we judge by", "repos": { "Automattic/mongoose": { @@ -47,14 +47,14 @@ "sampledClosed": 60 }, "CherryHQ/cherry-studio": { - "medianDays": 1.2, - "averageDays": 1.4, - "mergedExternal": 15, - "acceptancePct": 94, + "medianDays": 0.9, + "averageDays": 1.2, + "mergedExternal": 14, + "acceptancePct": 88, "closedExternal": 16, - "driveByAcceptancePct": 100, - "driveByMerged": 11, - "driveByClosed": 11, + "driveByAcceptancePct": 90, + "driveByMerged": 9, + "driveByClosed": 10, "sampledClosed": 60 }, "Eugeny/tabby": { @@ -69,25 +69,25 @@ "sampledClosed": 60 }, "Infisical/infisical": { - "medianDays": 1.4, + "medianDays": 1.3, "averageDays": 3.7, - "mergedExternal": 42, - "acceptancePct": 81, - "closedExternal": 52, - "driveByAcceptancePct": 83, + "mergedExternal": 41, + "acceptancePct": 77, + "closedExternal": 53, + "driveByAcceptancePct": 62, "driveByMerged": 5, - "driveByClosed": 6, + "driveByClosed": 8, "sampledClosed": 60 }, "Kong/insomnia": { - "medianDays": 1.7, - "averageDays": 7.9, - "mergedExternal": 41, - "acceptancePct": 98, - "closedExternal": 42, - "driveByAcceptancePct": 89, - "driveByMerged": 8, - "driveByClosed": 9, + "medianDays": 1.6, + "averageDays": 7.7, + "mergedExternal": 42, + "acceptancePct": 95, + "closedExternal": 44, + "driveByAcceptancePct": 82, + "driveByMerged": 9, + "driveByClosed": 11, "sampledClosed": 60 }, "Schneegans/Burn-My-Windows": { @@ -103,10 +103,10 @@ }, "TriliumNext/Trilium": { "medianDays": 0.0, - "averageDays": 0.1, - "mergedExternal": 20, + "averageDays": 0.2, + "mergedExternal": 21, "acceptancePct": 100, - "closedExternal": 20, + "closedExternal": 21, "driveByAcceptancePct": null, "driveByMerged": 0, "driveByClosed": 0, @@ -115,12 +115,12 @@ "TryGhost/Ghost": { "medianDays": 0.0, "averageDays": 0.2, - "mergedExternal": 42, - "acceptancePct": 95, - "closedExternal": 44, - "driveByAcceptancePct": 100, - "driveByMerged": 5, - "driveByClosed": 5, + "mergedExternal": 43, + "acceptancePct": 91, + "closedExternal": 47, + "driveByAcceptancePct": null, + "driveByMerged": 0, + "driveByClosed": 0, "sampledClosed": 60 }, "acornjs/acorn": { @@ -138,11 +138,11 @@ "medianDays": 2.2, "averageDays": 9.7, "mergedExternal": 40, - "acceptancePct": 82, - "closedExternal": 49, - "driveByAcceptancePct": 61, - "driveByMerged": 11, - "driveByClosed": 18, + "acceptancePct": 80, + "closedExternal": 50, + "driveByAcceptancePct": 56, + "driveByMerged": 9, + "driveByClosed": 16, "sampledClosed": 60 }, "babel/babel": { @@ -179,25 +179,25 @@ "sampledClosed": 60 }, "cline/cline": { - "medianDays": 0.5, - "averageDays": 3.8, - "mergedExternal": 39, + "medianDays": 0.4, + "averageDays": 3.3, + "mergedExternal": 38, "acceptancePct": 72, - "closedExternal": 54, + "closedExternal": 53, "driveByAcceptancePct": 69, "driveByMerged": 9, "driveByClosed": 13, "sampledClosed": 60 }, "compiler-explorer/compiler-explorer": { - "medianDays": 0.6, - "averageDays": 2.8, - "mergedExternal": 16, - "acceptancePct": 94, - "closedExternal": 17, - "driveByAcceptancePct": 92, - "driveByMerged": 11, - "driveByClosed": 12, + "medianDays": 0.7, + "averageDays": 3.8, + "mergedExternal": 11, + "acceptancePct": 92, + "closedExternal": 12, + "driveByAcceptancePct": 89, + "driveByMerged": 8, + "driveByClosed": 9, "sampledClosed": 60 }, "copy/v86": { @@ -245,14 +245,14 @@ "sampledClosed": 60 }, "eslint/eslint": { - "medianDays": 2.8, - "averageDays": 6.3, + "medianDays": 3.1, + "averageDays": 8.0, "mergedExternal": 29, - "acceptancePct": 63, - "closedExternal": 46, - "driveByAcceptancePct": 56, + "acceptancePct": 64, + "closedExternal": 45, + "driveByAcceptancePct": 58, "driveByMerged": 18, - "driveByClosed": 32, + "driveByClosed": 31, "sampledClosed": 60 }, "excalidraw/excalidraw": { @@ -270,8 +270,8 @@ "medianDays": 4.4, "averageDays": 5.5, "mergedExternal": 6, - "acceptancePct": 14, - "closedExternal": 44, + "acceptancePct": 13, + "closedExternal": 45, "driveByAcceptancePct": 20, "driveByMerged": 6, "driveByClosed": 30, @@ -300,25 +300,25 @@ "sampledClosed": 60 }, "grafana/grafana": { - "medianDays": 0.7, - "averageDays": 2.1, - "mergedExternal": 44, - "acceptancePct": 81, + "medianDays": 0.3, + "averageDays": 2.0, + "mergedExternal": 43, + "acceptancePct": 80, "closedExternal": 54, - "driveByAcceptancePct": 79, - "driveByMerged": 27, - "driveByClosed": 34, + "driveByAcceptancePct": 75, + "driveByMerged": 24, + "driveByClosed": 32, "sampledClosed": 60 }, "immich-app/immich": { "medianDays": 0.3, - "averageDays": 6.4, - "mergedExternal": 12, - "acceptancePct": 57, - "closedExternal": 21, - "driveByAcceptancePct": 67, - "driveByMerged": 12, - "driveByClosed": 18, + "averageDays": 3.4, + "mergedExternal": 11, + "acceptancePct": 48, + "closedExternal": 23, + "driveByAcceptancePct": 55, + "driveByMerged": 11, + "driveByClosed": 20, "sampledClosed": 60 }, "jestjs/jest": { @@ -344,19 +344,19 @@ "sampledClosed": 60 }, "labring/FastGPT": { - "medianDays": 2.8, - "averageDays": 4.3, - "mergedExternal": 16, - "acceptancePct": 62, + "medianDays": 3.7, + "averageDays": 4.8, + "mergedExternal": 17, + "acceptancePct": 65, "closedExternal": 26, - "driveByAcceptancePct": 60, - "driveByMerged": 9, + "driveByAcceptancePct": 67, + "driveByMerged": 10, "driveByClosed": 15, "sampledClosed": 60 }, "langfuse/langfuse": { "medianDays": 0.3, - "averageDays": 0.8, + "averageDays": 0.7, "mergedExternal": 41, "acceptancePct": 87, "closedExternal": 47, @@ -366,8 +366,8 @@ "sampledClosed": 60 }, "marktext/marktext": { - "medianDays": 0.8, - "averageDays": 2.7, + "medianDays": 0.7, + "averageDays": 2.6, "mergedExternal": 13, "acceptancePct": 57, "closedExternal": 23, @@ -393,9 +393,9 @@ "mergedExternal": 11, "acceptancePct": 41, "closedExternal": 27, - "driveByAcceptancePct": 46, + "driveByAcceptancePct": 41, "driveByMerged": 11, - "driveByClosed": 24, + "driveByClosed": 27, "sampledClosed": 60 }, "mermaid-js/mermaid": { @@ -424,22 +424,22 @@ "medianDays": 0.1, "averageDays": 0.5, "mergedExternal": 19, - "acceptancePct": 95, - "closedExternal": 20, - "driveByAcceptancePct": 67, + "acceptancePct": 86, + "closedExternal": 22, + "driveByAcceptancePct": 40, "driveByMerged": 2, - "driveByClosed": 3, + "driveByClosed": 5, "sampledClosed": 60 }, "mikro-orm/mikro-orm": { "medianDays": 0.2, "averageDays": 0.3, "mergedExternal": 17, - "acceptancePct": 100, - "closedExternal": 17, + "acceptancePct": 94, + "closedExternal": 18, "driveByAcceptancePct": 100, - "driveByMerged": 14, - "driveByClosed": 14, + "driveByMerged": 12, + "driveByClosed": 12, "sampledClosed": 60 }, "mozilla/pdf.js": { @@ -486,6 +486,17 @@ "driveByClosed": 2, "sampledClosed": 60 }, + "nodejs/node": { + "medianDays": 2.0, + "averageDays": 2.9, + "mergedExternal": 12, + "acceptancePct": 46, + "closedExternal": 26, + "driveByAcceptancePct": 38, + "driveByMerged": 6, + "driveByClosed": 16, + "sampledClosed": 60 + }, "novuhq/novu": { "medianDays": 0.2, "averageDays": 3.8, @@ -543,24 +554,24 @@ }, "orval-labs/orval": { "medianDays": 0.1, - "averageDays": 1.8, - "mergedExternal": 23, + "averageDays": 1.5, + "mergedExternal": 24, "acceptancePct": 96, - "closedExternal": 24, + "closedExternal": 25, "driveByAcceptancePct": 100, - "driveByMerged": 10, - "driveByClosed": 10, + "driveByMerged": 9, + "driveByClosed": 9, "sampledClosed": 60 }, "outline/outline": { "medianDays": 7.0, "averageDays": 8.5, "mergedExternal": 3, - "acceptancePct": 43, - "closedExternal": 7, - "driveByAcceptancePct": 43, + "acceptancePct": 38, + "closedExternal": 8, + "driveByAcceptancePct": 38, "driveByMerged": 3, - "driveByClosed": 7, + "driveByClosed": 8, "sampledClosed": 60 }, "parcel-bundler/parcel": { @@ -587,13 +598,13 @@ }, "pnpm/pnpm": { "medianDays": 0.1, - "averageDays": 1.4, - "mergedExternal": 11, - "acceptancePct": 100, - "closedExternal": 11, - "driveByAcceptancePct": 100, - "driveByMerged": 6, - "driveByClosed": 6, + "averageDays": 110.5, + "mergedExternal": 9, + "acceptancePct": 45, + "closedExternal": 20, + "driveByAcceptancePct": 45, + "driveByMerged": 9, + "driveByClosed": 20, "sampledClosed": 60 }, "postcss/postcss": { @@ -608,14 +619,14 @@ "sampledClosed": 60 }, "prettier/prettier": { - "medianDays": 9.0, - "averageDays": 10.4, - "mergedExternal": 6, - "acceptancePct": 23, - "closedExternal": 26, - "driveByAcceptancePct": 31, - "driveByMerged": 4, - "driveByClosed": 13, + "medianDays": 0.8, + "averageDays": 8.0, + "mergedExternal": 7, + "acceptancePct": 26, + "closedExternal": 27, + "driveByAcceptancePct": 36, + "driveByMerged": 5, + "driveByClosed": 14, "sampledClosed": 60 }, "prisma/prisma": { @@ -630,14 +641,14 @@ "sampledClosed": 60 }, "promptfoo/promptfoo": { - "medianDays": 6.3, - "averageDays": 26.4, - "mergedExternal": 44, - "acceptancePct": 83, + "medianDays": 0.6, + "averageDays": 17.6, + "mergedExternal": 48, + "acceptancePct": 91, "closedExternal": 53, - "driveByAcceptancePct": 74, - "driveByMerged": 14, - "driveByClosed": 19, + "driveByAcceptancePct": 86, + "driveByMerged": 12, + "driveByClosed": 14, "sampledClosed": 60 }, "react-hook-form/react-hook-form": { @@ -685,14 +696,14 @@ "sampledClosed": 45 }, "rollup/rollup": { - "medianDays": 6.4, - "averageDays": 13.8, - "mergedExternal": 14, + "medianDays": 9.1, + "averageDays": 14.6, + "mergedExternal": 15, "acceptancePct": 88, - "closedExternal": 16, + "closedExternal": 17, "driveByAcceptancePct": 88, - "driveByMerged": 14, - "driveByClosed": 16, + "driveByMerged": 15, + "driveByClosed": 17, "sampledClosed": 60 }, "serverless/serverless": { @@ -751,14 +762,14 @@ "sampledClosed": 60 }, "super-productivity/super-productivity": { - "medianDays": 2.3, + "medianDays": 2.5, "averageDays": 6.8, - "mergedExternal": 14, - "acceptancePct": 82, - "closedExternal": 17, - "driveByAcceptancePct": 79, - "driveByMerged": 11, - "driveByClosed": 14, + "mergedExternal": 10, + "acceptancePct": 91, + "closedExternal": 11, + "driveByAcceptancePct": 91, + "driveByMerged": 10, + "driveByClosed": 11, "sampledClosed": 60 }, "sveltejs/svelte": { @@ -798,44 +809,44 @@ "medianDays": 5.7, "averageDays": 9.5, "mergedExternal": 11, - "acceptancePct": 48, - "closedExternal": 23, - "driveByAcceptancePct": 48, + "acceptancePct": 50, + "closedExternal": 22, + "driveByAcceptancePct": 50, "driveByMerged": 11, - "driveByClosed": 23, + "driveByClosed": 22, "sampledClosed": 60 }, "twentyhq/twenty": { - "medianDays": 3.0, - "averageDays": 4.1, - "mergedExternal": 15, - "acceptancePct": 68, - "closedExternal": 22, - "driveByAcceptancePct": 62, - "driveByMerged": 10, - "driveByClosed": 16, + "medianDays": 1.3, + "averageDays": 3.4, + "mergedExternal": 7, + "acceptancePct": 30, + "closedExternal": 23, + "driveByAcceptancePct": 50, + "driveByMerged": 6, + "driveByClosed": 12, "sampledClosed": 60 }, "typeorm/typeorm": { - "medianDays": 17.3, - "averageDays": 23.6, - "mergedExternal": 15, - "acceptancePct": 42, - "closedExternal": 36, - "driveByAcceptancePct": 32, - "driveByMerged": 10, - "driveByClosed": 31, + "medianDays": 15.0, + "averageDays": 22.8, + "mergedExternal": 14, + "acceptancePct": 40, + "closedExternal": 35, + "driveByAcceptancePct": 26, + "driveByMerged": 7, + "driveByClosed": 27, "sampledClosed": 60 }, "vercel/next.js": { "medianDays": 1.1, - "averageDays": 7.4, - "mergedExternal": 19, - "acceptancePct": 73, - "closedExternal": 26, - "driveByAcceptancePct": 80, - "driveByMerged": 4, - "driveByClosed": 5, + "averageDays": 7.8, + "mergedExternal": 18, + "acceptancePct": 67, + "closedExternal": 27, + "driveByAcceptancePct": 50, + "driveByMerged": 3, + "driveByClosed": 6, "sampledClosed": 60 }, "vercel/turborepo": { @@ -850,13 +861,13 @@ "sampledClosed": 60 }, "vitejs/vite": { - "medianDays": 3.9, - "averageDays": 6.1, - "mergedExternal": 10, - "acceptancePct": 32, + "medianDays": 3.4, + "averageDays": 5.5, + "mergedExternal": 11, + "acceptancePct": 35, "closedExternal": 31, - "driveByAcceptancePct": 32, - "driveByMerged": 10, + "driveByAcceptancePct": 35, + "driveByMerged": 11, "driveByClosed": 31, "sampledClosed": 60 }, diff --git a/impact.json b/impact.json index 65a192d..97a6c6d 100644 --- a/impact.json +++ b/impact.json @@ -4,7 +4,7 @@ "title": "deleteBulkMetadata N+1", "type": "N+1 (루프 안 순차 DELETE, item당 왕복 1회)", "repo": "immich-app/immich", - "repoLabel": "immich · 115.9k★", + "repoLabel": "immich · 116k★", "pr": 30163, "createdAt": "2026-07-23T15:26:09Z", "status": "closed", @@ -363,7 +363,7 @@ "titleEn": "printed error stacks lose every other frame", "type": "전역 정규식 상태 (/g 정규식을 filter 안에서 .test() — lastIndex 가 새어 프레임이 하나 걸러 사라진다)", "repo": "withastro/astro", - "repoLabel": "astro · 63.1k★", + "repoLabel": "astro · 63.2k★", "pr": 17665, "createdAt": "2026-08-11T12:35:43Z", "status": "closed", @@ -573,7 +573,7 @@ "titleEn": "write-only page input set in the build", "type": "쓰기만 하는 컬렉션 (viteBuild 가 pageInput 을 채우기만 하고 읽지 않는다 — 소비자 ssrBuild 인자가 #14306 Environment API 에서 사라졌다)", "repo": "withastro/astro", - "repoLabel": "astro · 63.1k★", + "repoLabel": "astro · 63.2k★", "pr": 17987, "createdAt": "2026-09-13T04:00:19Z", "status": "merged", @@ -673,7 +673,7 @@ "titleEn": "quadratic sitemap chunk URL lookups", "type": "O(n²) (청크별 배열 복사와 URL 포함 검사 → Set)", "repo": "withastro/astro", - "repoLabel": "astro · 63.1k★", + "repoLabel": "astro · 63.2k★", "pr": 18149, "createdAt": "2026-09-27T10:21:18Z", "status": "waiting" @@ -815,7 +815,7 @@ "titleEn": "Map that is filled but never read", "type": "쓰기만 하는 컬렉션 (set 만 하고 읽는 곳 0 — DFS 는 연결점의 소유 블록을 직접 따라간다)", "repo": "BabylonJS/Babylon.js", - "repoLabel": "Babylon.js · 26.1k★", + "repoLabel": "Babylon.js · 26.2k★", "pr": 18980, "status": "merged", "createdAt": "2026-10-07T04:59:27Z", @@ -955,7 +955,7 @@ "titleEn": "settings search drops properties nested in object settings", "type": "버린 반환값 (acc.concat(재귀 결과) 를 대입 안 함 — 객체 설정 안의 속성 이름·제목이 검색에서 빠진다)", "repo": "jupyterlab/jupyterlab", - "repoLabel": "jupyterlab · 15.3k★", + "repoLabel": "jupyterlab · 15.4k★", "pr": 20008, "status": "merged", "createdAt": "2026-10-08T08:42:59Z", @@ -1031,10 +1031,13 @@ "titleEn": "inspector v2 Animations pane drops child animatables' animations", "type": "버린 반환값 (animations.concat(자식 애니메이션) 를 대입 안 함 — 자식에만 애니메이션이 있으면 'No Animations')", "repo": "BabylonJS/Babylon.js", - "repoLabel": "Babylon.js · 26.1k★", + "repoLabel": "Babylon.js · 26.2k★", "pr": 18990, "createdAt": "2026-10-09T11:42:12Z", - "status": "changes" + "status": "approved", + "approvedBy": [ + "Popov72" + ] }, { "title": "output 마이그레이션 ID 의 .d.ts 정규화 결과를 버림", @@ -1157,7 +1160,17 @@ "pr": 13947, "createdAt": "2026-10-10T08:40:23Z", "status": "waiting" + }, + { + "title": "벤치마크가 잘못된 type 을 받아도 실패하지 않고 엉뚱한 값을 잼", + "titleEn": "Benchmarks silently measure an undefined path for an invalid type", + "type": "버린 반환값 (fs·webstorage 벤치마크 21곳 default 분기의 new Error('Invalid type') — throw 가 빠져 아무 일도 안 함)", + "repo": "nodejs/node", + "repoLabel": "Node.js · 122.3k★", + "pr": 66647, + "createdAt": "2026-10-10T18:27:04Z", + "status": "waiting" } ], - "generatedAt": "2026-10-10T08:45:02.601Z" + "generatedAt": "2026-10-10T18:32:44.552Z" } diff --git a/index.html b/index.html index 1757a17..5622578 100644 --- a/index.html +++ b/index.html @@ -594,7 +594,7 @@

Rules strangers merged.
The lines to fix in yours.

-
1배운다 · 고칠 규칙Learn · fix rules62고친다 · PRFix · PRs843판정 · 머지Verdict · merged364다진다 · 오탐 가드Sharpen · FP guards45
36PR 머지됨PRs merged규칙 6개가 찾아냄found by 6 rules

쓰기만 하는 컬렉션 15O(n²) 조회 12불필요한 순차 I/O 4버려진 Promise 2버린 반환값 2전역 정규식 상태 1Write-only collection 15O(n²) lookup 12Needless sequential I/O 4Floating promise 2Discarded pure call 2Stateful /g regex 1남의 저장소에서 머지된 PR 과 남의 코드에서 고칠 규칙을 뽑고, 그 규칙으로 다른 저장소를 고쳐 PR 을 낸다. 머지·거절이 다시 규칙을 다듬는다 — 규칙 6개 중 6개가 머지로 검증 · 저장소 26곳 · 거절 26 · 대기 22. Fix rules come from PRs strangers merged and from strangers' code; we apply them to other repos as PRs, and merges and rejections sharpen them again — 6 of 6 rules verified by a merge · 26 projects · closed 26 · open 22. 전체 기록 →Full record →

+
1배운다 · 고칠 규칙Learn · fix rules62고친다 · PRFix · PRs853판정 · 머지Verdict · merged364다진다 · 오탐 가드Sharpen · FP guards45
36PR 머지됨PRs merged규칙 6개가 찾아냄found by 6 rules

쓰기만 하는 컬렉션 15O(n²) 조회 12불필요한 순차 I/O 4버려진 Promise 2버린 반환값 2전역 정규식 상태 1Write-only collection 15O(n²) lookup 12Needless sequential I/O 4Floating promise 2Discarded pure call 2Stateful /g regex 1남의 저장소에서 머지된 PR 과 남의 코드에서 고칠 규칙을 뽑고, 그 규칙으로 다른 저장소를 고쳐 PR 을 낸다. 머지·거절이 다시 규칙을 다듬는다 — 규칙 6개 중 6개가 머지로 검증 · 저장소 26곳 · 거절 26 · 대기 23. Fix rules come from PRs strangers merged and from strangers' code; we apply them to other repos as PRs, and merges and rejections sharpen them again — 6 of 6 rules verified by a merge · 26 projects · closed 26 · open 23. 전체 기록 →Full record →

@@ -650,96 +650,97 @@

직접 내본다

Submit it ourselves

-
angular101k웹 프레임워크 · 기여자 약 2,688명web framework · ~2,688 contributorsoutput 마이그레이션 ID 의 .d.ts 정규화 결과를 버림output migration drops its .d.ts → .ts ID normalizationPR 생성PR opened오늘today / 보통 2일 / usually 2d수락 82%82% mergedPR 머지 · 진행 중 · 승인 · 머지 대기PR merge · in progress · approved · awaiting merge릴리즈 · 머지 후release · after merge
+
angular101k웹 프레임워크 · 기여자 약 2,688명web framework · ~2,688 contributorsoutput 마이그레이션 ID 의 .d.ts 정규화 결과를 버림output migration drops its .d.ts → .ts ID normalizationPR 생성PR opened1일째day 1 / 보통 2일 / usually 2d수락 80%80% mergedPR 머지 · 진행 중 · 승인 · 머지 대기PR merge · in progress · approved · awaiting merge릴리즈 · 머지 후release · after merge
+
Babylon.js26.2k웹 3D 엔진 · 기여자 약 804명web 3D engine · ~804 contributors인스펙터 v2 애니메이션 창이 자식 애니메이션을 버림inspector v2 Animations pane drops child animatables' animationsPR 생성PR opened1일째day 1 / 보통 1일 / usually 1d수락 83%83% mergedPR 머지 · 진행 중 · 승인 · 머지 대기PR merge · in progress · approved · awaiting merge릴리즈 · 머지 후release · after merge
+
Node.js122.3kJavaScript 런타임 · 기여자 약 4,523명JavaScript runtime · ~4,523 contributors벤치마크가 잘못된 type 을 받아도 실패하지 않고 엉뚱한 값을 잼Benchmarks silently measure an undefined path for an invalid typePR 생성PR opened오늘today / 보통 2일 / usually 2d수락 46%46% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
serverless46.9k서버리스 배포 프레임워크 · 기여자 약 1,246명serverless deployment framework · ~1,246 contributorsRoute53 기존 레코드를 못 찾고 매번 CREATE 를 보냄Route53 helper never finds the existing record and always sends CREATEPR 생성PR opened오늘today / 보통 1일 / usually 1d수락 92%92% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
rgthree-comfy3.6kComfyUI 노드 모음 · 기여자 약 21명ComfyUI custom nodes · ~21 contributors모델 정보 창의 Base Model 행이 파일이 없으면 사라짐model info dialog hides the Base Model row when there is no base model filePR 생성PR opened오늘today / 보통 4일 / usually 4d수락 49%49% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
nocodb65.2k노코드 DB · Airtable 대안 · 기여자 약 355명no-code database · ~355 contributorsjdbc: 접두사를 떼는 줄이 아무것도 안 함the line that strips the jdbc: prefix does nothingPR 생성PR opened오늘todayPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
vscode193.5k코드 에디터 · 기여자 약 3,263명code editor · ~3,263 contributors원격 확장 초기화가 설치를 안 기다리고 pre-release 를 엉뚱한 확장에서 가져옴remote extension init skips awaiting installs and reads pre-release from the wrong extensionPR 생성PR opened오늘today / 보통 1일 / usually 1d수락 95%95% mergedPR 머지 · 리뷰 진행 중PR merge · in review릴리즈 · 머지 후release · after merge
-
opensumi3.7kIDE 프레임워크 · 기여자 약 115명IDE framework · ~115 contributors키맵 검색에서 연속 키 사이 공백이 사라짐chord keybindings lose their space in keymap searchPR 생성PR opened오늘today / 보통 4일 / usually 4d수락 71%71% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
affine73.4k노트·화이트보드 워크스페이스 · 기여자 약 270명notes & whiteboard workspace · ~270 contributorsAI 마크다운 diff 의 쓰기만 하는 Setwrite-only set in the AI markdown diffPR 생성PR opened오늘today / 보통 6일 / usually 6d수락 48%48% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
mermaid90.6k텍스트로 그리는 다이어그램 · 기여자 약 855명diagrams from text · ~855 contributorsER 다이어그램·dagre 그래프의 쓰기만 하는 Mapwrite-only maps in ER diagram data and dagre graphlibPR 생성PR opened오늘today / 보통 6일 / usually 6d수락 62%62% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributors댓글 스레드 그래프의 깊이 Map 쓰기만 함write-only depth map in the comment thread graphPR 생성PR opened오늘today / 보통 1일 / usually 1d수락 95%95% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
Babylon.js26.1k웹 3D 엔진 · 기여자 약 804명web 3D engine · ~804 contributors인스펙터 v2 애니메이션 창이 자식 애니메이션을 버림inspector v2 Animations pane drops child animatables' animationsPR 생성PR opened오늘today / 보통 1일 / usually 1d수락 83%83% mergedPR 머지 · 변경 요청 대응 중PR merge · changes requested릴리즈 · 머지 후release · after merge
-
infisical29.7k시크릿·인증서 관리 플랫폼 · 기여자 약 286명secrets and certificate management platform · ~286 contributorsPKI 동기화 3곳의 외부 ID Map 쓰기만 함write-only external-id map in three PKI syncsPR 생성PR opened1일째day 1 / 보통 1일 / usually 1d수락 81%81% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
compiler-explorer19.1kgodbolt 컴파일러 탐색기 · 기여자 약 702명godbolt compiler explorer · ~702 contributorsclang-query 도구 옵션이 compile_flags.txt 에 안 들어간다clang-query tool options never reach compile_flags.txtPR 생성PR opened1일째day 1 / 보통 1일 / usually 1d수락 94%94% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
nocodb65.2k노코드 DB · Airtable 대안 · 기여자 약 355명no-code database · ~355 contributorsjdbc: 접두사를 떼는 줄이 아무것도 안 함the line that strips the jdbc: prefix does nothingPR 생성PR opened1일째day 1PR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
vscode193.5k코드 에디터 · 기여자 약 3,263명code editor · ~3,263 contributors원격 확장 초기화가 설치를 안 기다리고 pre-release 를 엉뚱한 확장에서 가져옴remote extension init skips awaiting installs and reads pre-release from the wrong extensionPR 생성PR opened1일째day 1 / 보통 1일 / usually 1d수락 86%86% mergedPR 머지 · 리뷰 진행 중PR merge · in review릴리즈 · 머지 후release · after merge
+
opensumi3.7kIDE 프레임워크 · 기여자 약 115명IDE framework · ~115 contributors키맵 검색에서 연속 키 사이 공백이 사라짐chord keybindings lose their space in keymap searchPR 생성PR opened1일째day 1 / 보통 4일 / usually 4d수락 71%71% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
affine73.4k노트·화이트보드 워크스페이스 · 기여자 약 270명notes & whiteboard workspace · ~270 contributorsAI 마크다운 diff 의 쓰기만 하는 Setwrite-only set in the AI markdown diffPR 생성PR opened1일째day 1 / 보통 6일 / usually 6d수락 50%50% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
mermaid90.6k텍스트로 그리는 다이어그램 · 기여자 약 855명diagrams from text · ~855 contributorsER 다이어그램·dagre 그래프의 쓰기만 하는 Mapwrite-only maps in ER diagram data and dagre graphlibPR 생성PR opened1일째day 1 / 보통 6일 / usually 6d수락 62%62% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributors댓글 스레드 그래프의 깊이 Map 쓰기만 함write-only depth map in the comment thread graphPR 생성PR opened1일째day 1 / 보통 1일 / usually 1d수락 91%91% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
infisical29.7k시크릿·인증서 관리 플랫폼 · 기여자 약 286명secrets and certificate management platform · ~286 contributorsPKI 동기화 3곳의 외부 ID Map 쓰기만 함write-only external-id map in three PKI syncsPR 생성PR opened1일째day 1 / 보통 1일 / usually 1d수락 77%77% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
compiler-explorer19.1kgodbolt 컴파일러 탐색기 · 기여자 약 702명godbolt compiler explorer · ~702 contributorsclang-query 도구 옵션이 compile_flags.txt 에 안 들어간다clang-query tool options never reach compile_flags.txtPR 생성PR opened2일째day 2 / 보통 1일 / usually 1d수락 92%92% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
nx29.4k모노레포 빌드 시스템 · 기여자 약 1,310명monorepo build system · ~1,310 contributorsSCAM 변환이 spec 의 declarations 를 못 지운다scam-to-standalone leaves the component in spec declarationsPR 생성PR opened2일째day 2 / 보통 1일 / usually 1d수락 85%85% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
Trilium38.3k계층형 개인 지식 노트 · 기여자 약 468명hierarchical personal knowledge base · ~468 contributors불리언 라벨 저장을 기다리지 않음boolean label toggle resolves before the writePR 생성PR opened2일째day 2 / 보통 1일 / usually 1d수락 100%100% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
insomnia40kAPI 클라이언트 · 기여자 약 366명API client · ~366 contributors백업 복원이 복사가 끝나기 전에 앱을 재시작backup restore relaunches before the copies finishPR 생성PR opened2일째day 2 / 보통 2일 / usually 2d수락 98%98% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
cytoscape.js11.2k그래프 시각화·분석 라이브러리 · 기여자 약 170명graph visualization and analysis library · ~170 contributorscose 레이아웃이 간선마다 노드 전체를 훑음cose layout scans every node for every edgePR 생성PR opened2일째day 2 / 보통 6일 / usually 6d수락 88%88% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
pdf.js54kMozilla 의 PDF 뷰어 · 기여자 약 536명Mozilla PDF viewer · ~536 contributors리팩터 뒤 남은 조상 Setancestor set left behind after a refactorPR 생성PR opened2일째day 2 / 보통 1일 / usually 1d수락 85%85% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
react-router56.6kReact 라우터 · 기여자 약 1,320명React router · ~1,320 contributors검증 에러가 dev 서버를 죽임export validation error kills the dev serverPR 생성PR opened2일째day 2 / 보통 4일 / usually 4d수락 73%73% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
n8n206.9k워크플로 자동화 · 기여자 약 812명workflow automation · ~812 contributors표현식 unique·차집합이 원시값 배열도 깊은 비교로 이중 순회expression unique and set operations deep-compare even primitive arrays pairwisePR 생성PR opened4일째day 4 / 보통 1일 / usually 1d수락 90%90% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
strapi73.3k헤드리스 CMS · 기여자 약 1,398명headless CMS · ~1,398 contributorstry/catch 안 릴리즈 정리를 await 안 함release cleanup not awaited inside its try/catchPR 생성PR opened8일째day 8 / 보통 6일 / usually 6d수락 45%45% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
-
tailwindcss97.8kCSS 유틸리티 프레임워크 · 기여자 약 377명utility-first CSS framework · ~377 contributorsVite 입력 CSS 의존성 기록 경합Vite input stylesheet dependency racePR 생성PR opened12일째day 12 / 보통 1일 / usually 1d수락 65%65% mergedPR 머지 · 보류PR merge · stalled릴리즈 · 머지 후release · after merge
-
astro63.1k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명web framework · ~1,245 contributorssitemap 청크 URL 분류 O(n²)quadratic sitemap chunk URL lookupsPR 생성PR opened12일째day 12 / 보통 1일 / usually 1d수락 77%77% mergedPR 머지 · 보류PR merge · stalled릴리즈 · 머지 후release · after merge
+
Trilium38.3k계층형 개인 지식 노트 · 기여자 약 468명hierarchical personal knowledge base · ~468 contributors불리언 라벨 저장을 기다리지 않음boolean label toggle resolves before the writePR 생성PR opened2일째day 2 / 보통 1일 / usually 1d수락 100%100% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
insomnia40kAPI 클라이언트 · 기여자 약 366명API client · ~366 contributors백업 복원이 복사가 끝나기 전에 앱을 재시작backup restore relaunches before the copies finishPR 생성PR opened3일째day 3 / 보통 2일 / usually 2d수락 95%95% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
cytoscape.js11.2k그래프 시각화·분석 라이브러리 · 기여자 약 170명graph visualization and analysis library · ~170 contributorscose 레이아웃이 간선마다 노드 전체를 훑음cose layout scans every node for every edgePR 생성PR opened3일째day 3 / 보통 6일 / usually 6d수락 88%88% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
pdf.js54kMozilla 의 PDF 뷰어 · 기여자 약 536명Mozilla PDF viewer · ~536 contributors리팩터 뒤 남은 조상 Setancestor set left behind after a refactorPR 생성PR opened3일째day 3 / 보통 1일 / usually 1d수락 85%85% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
react-router56.6kReact 라우터 · 기여자 약 1,320명React router · ~1,320 contributors검증 에러가 dev 서버를 죽임export validation error kills the dev serverPR 생성PR opened3일째day 3 / 보통 4일 / usually 4d수락 73%73% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
n8n206.9k워크플로 자동화 · 기여자 약 812명workflow automation · ~812 contributors표현식 unique·차집합이 원시값 배열도 깊은 비교로 이중 순회expression unique and set operations deep-compare even primitive arrays pairwisePR 생성PR opened5일째day 5 / 보통 1일 / usually 1d수락 90%90% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
strapi73.3k헤드리스 CMS · 기여자 약 1,398명headless CMS · ~1,398 contributorstry/catch 안 릴리즈 정리를 await 안 함release cleanup not awaited inside its try/catchPR 생성PR opened9일째day 9 / 보통 6일 / usually 6d수락 45%45% mergedPR 머지 · 아직 아무도 안 봄PR merge · not reviewed yet릴리즈 · 머지 후release · after merge
+
tailwindcss97.8kCSS 유틸리티 프레임워크 · 기여자 약 377명utility-first CSS framework · ~377 contributorsVite 입력 CSS 의존성 기록 경합Vite input stylesheet dependency racePR 생성PR opened13일째day 13 / 보통 1일 / usually 1d수락 65%65% mergedPR 머지 · 보류PR merge · stalled릴리즈 · 머지 후release · after merge
+
astro63.2k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명web framework · ~1,245 contributorssitemap 청크 URL 분류 O(n²)quadratic sitemap chunk URL lookupsPR 생성PR opened13일째day 13 / 보통 1일 / usually 1d수락 77%77% mergedPR 머지 · 보류PR merge · stalled릴리즈 · 머지 후release · after merge
tegaki3.1k손글씨 애니메이션 렌더러 · 기여자 약 11명animated handwriting renderer · ~11 contributors손글씨 획 생성기의 쓰기만 하는 Map·Setwrite-only map and set in the handwriting stroke generatorPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 83%83% mergedPR 머지 #77PR merged #77릴리즈 대기awaiting release
burn-my-windows3.1kGNOME 창 열고 닫기 효과 · 기여자 약 124명GNOME window open/close effects · ~124 contributorsv26 설정 이전에서 flame·claw 키 이름 변경이 버려짐flame/claw key renames dropped when migrating v26 settingsPR 생성PR opened당일 머지merged same day / 보통 3일 / usually 3d수락 82%82% mergedPR 머지 #583PR merged #583릴리즈 대기awaiting release
-
cline70.1kVS Code 코딩 에이전트 · 기여자 약 343명coding agent for VS Code · ~343 contributors보내는 쪽이 사라진 구독 스트림subscription stream whose sender is gonePR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 72%72% mergedPR 머지 #14974PR merged #14974릴리즈 대기awaiting release
-
super-productivity22.7k할 일·시간 기록 앱 · 기여자 약 531명todo and time-tracking app · ~531 contributors채우기만 하고 읽지 않는 Map 3개three maps filled but never readPR 생성PR opened당일 머지merged same day / 보통 2일 / usually 2d수락 82%82% mergedPR 머지 #10607PR merged #10607릴리즈 대기awaiting release
+
cline70.1kVS Code 코딩 에이전트 · 기여자 약 343명coding agent for VS Code · ~343 contributors보내는 쪽이 사라진 구독 스트림subscription stream whose sender is gonePR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 72%72% mergedPR 머지 #14974PR merged #14974릴리즈 대기awaiting release
+
super-productivity22.7k할 일·시간 기록 앱 · 기여자 약 534명todo and time-tracking app · ~534 contributors채우기만 하고 읽지 않는 Map 3개three maps filled but never readPR 생성PR opened당일 머지merged same day / 보통 3일 / usually 3d수락 91%91% mergedPR 머지 #10607PR merged #10607릴리즈 대기awaiting release
readest25k전자책 리더 앱 · 기여자 약 137명ebook reader app · ~137 contributorsRAG 색인 상태 Map 쓰기만 함write-only indexing state map in RAG servicePR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 85%85% mergedPR 머지 #6687PR merged #6687릴리즈 대기awaiting release
-
jupyterlab15.3kJupyter 노트북 IDE · 기여자 약 739명Jupyter notebook IDE · ~739 contributors설정 검색이 중첩 속성을 못 찾는다settings search drops properties nested in object settingsPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 81%81% mergedPR 머지 #20008PR merged #20008릴리즈 대기awaiting release
-
promptfoo25.9kLLM 앱 평가·레드팀 도구 · 기여자 약 387명LLM eval and red-teaming tool · ~387 contributors실패 테스트 재실행이 추출 테스트마다 전부 다시 직렬화filter-failing re-serializes every extracted test per resultPR 생성PR opened당일 머지merged same day / 보통 6일 / usually 6d수락 83%83% mergedPR 머지 #11464PR merged #11464릴리즈 0.124.1released 0.124.1
+
jupyterlab15.4kJupyter 노트북 IDE · 기여자 약 739명Jupyter notebook IDE · ~739 contributors설정 검색이 중첩 속성을 못 찾는다settings search drops properties nested in object settingsPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 81%81% mergedPR 머지 #20008PR merged #20008릴리즈 대기awaiting release
+
promptfoo25.9kLLM 앱 평가·레드팀 도구 · 기여자 약 387명LLM eval and red-teaming tool · ~387 contributors실패 테스트 재실행이 추출 테스트마다 전부 다시 직렬화filter-failing re-serializes every extracted test per resultPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 91%91% mergedPR 머지 #11464PR merged #11464릴리즈 0.124.1released 0.124.1
turborepo31.2kVercel 의 모노레포 빌드 도구 · 기여자 약 719명Vercel monorepo build tool · ~719 contributors중복 검사 Set 을 안 읽어 codemod 가 중복 이름을 만듦unchecked name set lets a codemod write duplicate package namesPR 생성PR opened머지까지 1일1d to merge / 보통 1일 / usually 1d수락 91%91% mergedPR 머지 #14433PR merged #14433프리릴리즈 v2.11.8-canary.2 · 안정판 대기prerelease v2.11.8-canary.2 · stable pending
-
cherry-studio52.5k데스크톱 AI 클라이언트 · 기여자 약 482명desktop AI client · ~482 contributors채우기만 하고 읽지 않는 Map 3개three maps filled but never readPR 생성PR opened머지까지 1일1d to merge / 보통 1일 / usually 1d수락 94%94% mergedPR 머지 #21363PR merged #21363릴리즈 대기awaiting release
-
Babylon.js26.1k웹 3D 엔진 · 기여자 약 804명web 3D engine · ~804 contributors채우기만 하고 읽지 않는 MapMap that is filled but never readPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 83%83% mergedPR 머지 #18980PR merged #18980릴리즈 9.30.0released 9.30.0
-
mikro-orm9.2kTypeScript ORM · 기여자 약 351명TypeScript ORM · ~351 contributorsupsertMany 재조회 행을 엔티티마다 전부 비교upsertMany compares every reloaded row for every entityPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 100%100% mergedPR 머지 #8393PR merged #8393릴리즈 v7.2.4released v7.2.4
-
mikro-orm9.2kTypeScript ORM · 기여자 약 351명TypeScript ORM · ~351 contributorsM:N 소유 측 populate 가 부모마다 자식 전체를 다시 훑고 indexOf 로 정렬owning-side M:N populate rescans all children per owner and sorts with indexOfPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 100%100% mergedPR 머지 #8392PR merged #8392릴리즈 v7.2.4released v7.2.4
-
orval6.5kOpenAPI 클라이언트 생성기 · 기여자 약 406명OpenAPI client generator · ~406 contributors읽지 않는 Set 이 리팩터 뒤에 남음write-only Set left behind after a refactorPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 96%96% mergedPR 머지 #4254PR merged #4254릴리즈 v8.41.0released v8.41.0
-
mikro-orm9.2kTypeScript ORM · 기여자 약 351명TypeScript ORM · ~351 contributorsM:N 역방향 populate 가 부모마다 자식 전체를 다시 훑음inverse M:N populate rescans all children per ownerPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 100%100% mergedPR 머지 #8391PR merged #8391릴리즈 v7.2.4released v7.2.4
-
angular101k웹 프레임워크 · 기여자 약 2,688명web framework · ~2,688 contributors::ng-deep 감지 정규식 lastIndex 누수::ng-deep detection leaks regex lastIndexPR 생성PR opened머지까지 5일5d to merge / 보통 2일 / usually 2d수락 82%82% mergedPR 머지 #71119PR merged #71119프리릴리즈 v22.3.0-next.1 · 안정판 대기prerelease v22.3.0-next.1 · stable pending
+
cherry-studio52.5k데스크톱 AI 클라이언트 · 기여자 약 483명desktop AI client · ~483 contributors채우기만 하고 읽지 않는 Map 3개three maps filled but never readPR 생성PR opened머지까지 1일1d to merge / 보통 1일 / usually 1d수락 88%88% mergedPR 머지 #21363PR merged #21363릴리즈 대기awaiting release
+
Babylon.js26.2k웹 3D 엔진 · 기여자 약 804명web 3D engine · ~804 contributors채우기만 하고 읽지 않는 MapMap that is filled but never readPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 83%83% mergedPR 머지 #18980PR merged #18980릴리즈 9.30.0released 9.30.0
+
mikro-orm9.2kTypeScript ORM · 기여자 약 351명TypeScript ORM · ~351 contributorsupsertMany 재조회 행을 엔티티마다 전부 비교upsertMany compares every reloaded row for every entityPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 94%94% mergedPR 머지 #8393PR merged #8393릴리즈 v7.2.4released v7.2.4
+
mikro-orm9.2kTypeScript ORM · 기여자 약 351명TypeScript ORM · ~351 contributorsM:N 소유 측 populate 가 부모마다 자식 전체를 다시 훑고 indexOf 로 정렬owning-side M:N populate rescans all children per owner and sorts with indexOfPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 94%94% mergedPR 머지 #8392PR merged #8392릴리즈 v7.2.4released v7.2.4
+
orval6.5kOpenAPI 클라이언트 생성기 · 기여자 약 406명OpenAPI client generator · ~406 contributors읽지 않는 Set 이 리팩터 뒤에 남음write-only Set left behind after a refactorPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 96%96% mergedPR 머지 #4254PR merged #4254릴리즈 v8.41.0released v8.41.0
+
mikro-orm9.2kTypeScript ORM · 기여자 약 351명TypeScript ORM · ~351 contributorsM:N 역방향 populate 가 부모마다 자식 전체를 다시 훑음inverse M:N populate rescans all children per ownerPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 94%94% mergedPR 머지 #8391PR merged #8391릴리즈 v7.2.4released v7.2.4
+
angular101k웹 프레임워크 · 기여자 약 2,688명web framework · ~2,688 contributors::ng-deep 감지 정규식 lastIndex 누수::ng-deep detection leaks regex lastIndexPR 생성PR opened머지까지 5일5d to merge / 보통 2일 / usually 2d수락 80%80% mergedPR 머지 #71119PR merged #71119프리릴리즈 v22.3.0-next.1 · 안정판 대기prerelease v22.3.0-next.1 · stable pending
n8n206.9k워크플로 자동화 · 기여자 약 812명workflow automation · ~812 contributorscredential 삭제 완료 전 명령 종료credential uninstall exits before deletions finishPR 생성PR opened당일 머지merged same day / 보통 1일 / usually 1d수락 90%90% mergedPR 머지 #40103PR merged #40103릴리즈 대기awaiting release
-
rollup26.3kJavaScript 모듈 번들러 · 기여자 약 473명JavaScript module bundler · ~473 contributorsES 청크 재내보내기 이름 반복 검색repeated ES chunk reexport name scansPR 생성PR opened머지까지 9일9d to merge / 보통 6일 / usually 6d수락 88%88% mergedPR 머지 #6534PR merged #6534릴리즈 v4.64.1released v4.64.1
-
ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributors댓글 신고 이메일의 조회 3회 직렬three sequential lookups for comment report emailPR 생성PR opened머지까지 10일10d to merge / 보통 1일 / usually 1d수락 95%95% mergedPR 머지 #31019PR merged #31019릴리즈 v6.69.0released v6.69.0
-
react250.8kUI 라이브러리 · 컴파일러 · 기여자 약 2,020명UI library and compiler · ~2,020 contributorsReact 컴파일러 패스의 쓰기만 하는 컬렉션write-only collections in React Compiler passesPR 생성PR opened머지까지 2일2d to merge / 보통 4일 / usually 4d수락 14%14% mergedPR 머지 #37699PR merged #37699nightly 배포 · 안정판 대기nightly shipped · stable pending
-
angular101k웹 프레임워크 · 기여자 약 2,688명web framework · ~2,688 contributorssignal 입력 마이그레이션의 쓰기만 하는 Setwrite-only Set in signal input migrationPR 생성PR opened머지까지 2일2d to merge / 보통 2일 / usually 2d수락 82%82% mergedPR 머지 #70977PR merged #70977릴리즈 v22.2.1released v22.2.1
-
astro63.1k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명web framework · ~1,245 contributors빌드에서 쓰기만 하는 페이지 입력 집합write-only page input set in the buildPR 생성PR opened머지까지 4일4d to merge / 보통 1일 / usually 1d수락 77%77% mergedPR 머지 #17987PR merged #17987릴리즈 astro@7.3.4released astro@7.3.4
-
angular101k웹 프레임워크 · 기여자 약 2,688명web framework · ~2,688 contributors템플릿 파이프라인의 쓰기만 하는 컬렉션write-only collections in template pipeline phasesPR 생성PR opened머지까지 5일5d to merge / 보통 2일 / usually 2d수락 82%82% mergedPR 머지 #70690PR merged #70690릴리즈 v22.2.0released v22.2.0
-
rollup26.3kJavaScript 모듈 번들러 · 기여자 약 473명JavaScript module bundler · ~473 contributorswatch 재실행 결과를 안 기다림watcher rerun not awaitedPR 생성PR opened머지까지 9일9d to merge / 보통 6일 / usually 6d수락 88%88% mergedPR 머지 #6506PR merged #6506릴리즈 v4.63.3released v4.63.3
+
rollup26.3kJavaScript 모듈 번들러 · 기여자 약 474명JavaScript module bundler · ~474 contributorsES 청크 재내보내기 이름 반복 검색repeated ES chunk reexport name scansPR 생성PR opened머지까지 9일9d to merge / 보통 9일 / usually 9d수락 88%88% mergedPR 머지 #6534PR merged #6534릴리즈 v4.64.1released v4.64.1
+
ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributors댓글 신고 이메일의 조회 3회 직렬three sequential lookups for comment report emailPR 생성PR opened머지까지 10일10d to merge / 보통 1일 / usually 1d수락 91%91% mergedPR 머지 #31019PR merged #31019릴리즈 v6.69.0released v6.69.0
+
react250.8kUI 라이브러리 · 컴파일러 · 기여자 약 2,020명UI library and compiler · ~2,020 contributorsReact 컴파일러 패스의 쓰기만 하는 컬렉션write-only collections in React Compiler passesPR 생성PR opened머지까지 2일2d to merge / 보통 4일 / usually 4d수락 13%13% mergedPR 머지 #37699PR merged #37699nightly 배포 · 안정판 대기nightly shipped · stable pending
+
angular101k웹 프레임워크 · 기여자 약 2,688명web framework · ~2,688 contributorssignal 입력 마이그레이션의 쓰기만 하는 Setwrite-only Set in signal input migrationPR 생성PR opened머지까지 2일2d to merge / 보통 2일 / usually 2d수락 80%80% mergedPR 머지 #70977PR merged #70977릴리즈 v22.2.1released v22.2.1
+
astro63.2k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명web framework · ~1,245 contributors빌드에서 쓰기만 하는 페이지 입력 집합write-only page input set in the buildPR 생성PR opened머지까지 4일4d to merge / 보통 1일 / usually 1d수락 77%77% mergedPR 머지 #17987PR merged #17987릴리즈 astro@7.3.4released astro@7.3.4
+
angular101k웹 프레임워크 · 기여자 약 2,688명web framework · ~2,688 contributors템플릿 파이프라인의 쓰기만 하는 컬렉션write-only collections in template pipeline phasesPR 생성PR opened머지까지 5일5d to merge / 보통 2일 / usually 2d수락 80%80% mergedPR 머지 #70690PR merged #70690릴리즈 v22.2.0released v22.2.0
+
rollup26.3kJavaScript 모듈 번들러 · 기여자 약 474명JavaScript module bundler · ~474 contributorswatch 재실행 결과를 안 기다림watcher rerun not awaitedPR 생성PR opened머지까지 9일9d to merge / 보통 9일 / usually 9d수락 88%88% mergedPR 머지 #6506PR merged #6506릴리즈 v4.63.3released v4.63.3
mongoose27.5kMongoDB ODM · 기여자 약 1,090명MongoDB object modelling · ~1,090 contributorsbulkSave 오류 문서 반복 매칭bulkSave repeated write-error matchingPR 생성PR opened머지까지 2일2d to merge / 보통 3일 / usually 3d수락 78%78% mergedPR 머지 #16474PR merged #16474릴리즈 9.9.4released 9.9.4
-
pnpm36.8kJavaScript 패키지 매니저 · 기여자 약 698명JavaScript package manager · ~698 contributors의존성 분할 안 미사용 Setunused linked dependency aliases SetPR 생성PR opened머지까지 2일2d to merge / 보통 1일 / usually 1d수락 100%100% mergedPR 머지 #14032PR merged #14032릴리즈 v11.23.0released v11.23.0
-
rollup26.3kJavaScript 모듈 번들러 · 기여자 약 473명JavaScript module bundler · ~473 contributors청크 렌더 안 미사용 Mapunused rendered module sources mapPR 생성PR opened당일 머지merged same day / 보통 6일 / usually 6d수락 88%88% mergedPR 머지 #6482PR merged #6482릴리즈 v4.63.0released v4.63.0
+
pnpm36.8kJavaScript 패키지 매니저 · 기여자 약 700명JavaScript package manager · ~700 contributors의존성 분할 안 미사용 Setunused linked dependency aliases SetPR 생성PR opened머지까지 2일2d to merge / 보통 1일 / usually 1d수락 45%45% mergedPR 머지 #14032PR merged #14032릴리즈 v11.23.0released v11.23.0
+
rollup26.3kJavaScript 모듈 번들러 · 기여자 약 474명JavaScript module bundler · ~474 contributors청크 렌더 안 미사용 Mapunused rendered module sources mapPR 생성PR opened당일 머지merged same day / 보통 9일 / usually 9d수락 88%88% mergedPR 머지 #6482PR merged #6482릴리즈 v4.63.0released v4.63.0
openstatus9.2k상태 페이지·업타임 모니터링 · 기여자 약 126명status pages & uptime monitoring · ~126 contributors페이지 monitor 검증 뒤 중복 조회duplicate monitor lookups after page validationPR 생성PR opened머지까지 10일10d to merge / 보통 4일 / usually 4d수락 88%88% mergedPR 머지 #2583PR merged #2583릴리즈 production@07d885areleased production@07d885a
-
ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributorsmember 통계 안 미사용 Mapunused Map in member count historyPR 생성PR opened머지까지 2일2d to merge / 보통 1일 / usually 1d수락 95%95% mergedPR 머지 #29831PR merged #29831릴리즈 v6.57.1released v6.57.1
-
vite83.3k프런트엔드 빌드 도구 · 기여자 약 1,373명frontend build tool · ~1,373 contributorspure CSS 청크 선형 조회pure CSS chunk linear lookupPR 생성PR opened머지까지 2일2d to merge / 보통 4일 / usually 4d수락 32%32% mergedPR 머지 #23114PR merged #23114릴리즈 v8.2.1released v8.2.1
-
ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributorsgrowth stats 집계 3회 직렬growth stats 3 serial aggregatesPR 생성PR opened머지까지 3일3d to merge / 보통 1일 / usually 1d수락 95%95% mergedPR 머지 #29704PR merged #29704릴리즈 v6.56.0released v6.56.0
+
ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributorsmember 통계 안 미사용 Mapunused Map in member count historyPR 생성PR opened머지까지 2일2d to merge / 보통 1일 / usually 1d수락 91%91% mergedPR 머지 #29831PR merged #29831릴리즈 v6.57.1released v6.57.1
+
vite83.3k프런트엔드 빌드 도구 · 기여자 약 1,373명frontend build tool · ~1,373 contributorspure CSS 청크 선형 조회pure CSS chunk linear lookupPR 생성PR opened머지까지 2일2d to merge / 보통 3일 / usually 3d수락 35%35% mergedPR 머지 #23114PR merged #23114릴리즈 v8.2.1released v8.2.1
+
ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributorsgrowth stats 집계 3회 직렬growth stats 3 serial aggregatesPR 생성PR opened머지까지 3일3d to merge / 보통 1일 / usually 1d수락 91%91% mergedPR 머지 #29704PR merged #29704릴리즈 v6.56.0released v6.56.0
typebot10.5k챗봇 빌더 · 기여자 약 91명chatbot builder · ~91 contributorsin-depth analytics 순차 awaitin-depth analytics serial awaitsPR 생성PR opened머지까지 20일20d to merge / 보통 13일 / usually 13d수락 29%29% mergedPR 머지 #2572PR merged #2572릴리즈 v3.18.0released v3.18.0
medusa36.7k커머스 백엔드 · 기여자 약 589명commerce backend · ~589 contributorscart variant lookup O(n²)PR 생성PR opened머지까지 6일6d to merge / 보통 5일 / usually 5d수락 41%41% mergedPR 머지 #16233PR merged #16233릴리즈 v2.19.0released v2.19.0
nocodb65.2k노코드 DB · Airtable 대안 · 기여자 약 355명no-code database · ~355 contributorsuser field validation O(n²)PR 생성PR opened머지까지 6일6d to mergePR 머지 #14309PR merged #14309릴리즈 2026.08.0released 2026.08.0
n8n206.9k워크플로 자동화 · 기여자 약 812명workflow automation · ~812 contributorsresource-mapper schema validation O(n²)PR 생성PR opened머지까지 7일7d to merge / 보통 1일 / usually 1d수락 90%90% mergedPR 머지 #34899PR merged #34899릴리즈 n8n@2.34.4released n8n@2.34.4
-
outline40.9k팀 위키·문서 · 기여자 약 265명team knowledge base · ~265 contributorsmarkdown import merge O(n²)PR 생성PR opened머지까지 5일5d to merge / 보통 7일 / usually 7d수락 43%43% mergedPR 머지 #13117PR merged #13117릴리즈 v1.10.0released v1.10.0
+
outline40.9k팀 위키·문서 · 기여자 약 265명team knowledge base · ~265 contributorsmarkdown import merge O(n²)PR 생성PR opened머지까지 5일5d to merge / 보통 7일 / usually 7d수락 38%38% mergedPR 머지 #13117PR merged #13117릴리즈 v1.10.0released v1.10.0
medusa36.7k커머스 백엔드 · 기여자 약 589명commerce backend · ~589 contributorstranslations batch match O(n²)PR 생성PR opened머지까지 10일10d to merge / 보통 5일 / usually 5d수락 41%41% mergedPR 머지 #16188PR merged #16188릴리즈 v2.19.0released v2.19.0
- FastGPT29.8kAI 에이전트·지식베이스 빌더 · 기여자 약 196명AI agent and knowledge base builder · ~196 contributors모델 변경 후 QA 재학습이 옛 모델로 돈다QA jobs released before the new agent model is saved닫힘closed1일 만에in 1d / 보통 3일 / usually 3d수락 62%62% merged#7918메인테이너: catch-all 이라 await 없이도 기대대로 동작한다 · 새 버전에서 이 자동 갱신·재시도 자체를 없앴다maintainer: it is a catch-all that works as intended without awaiting, and the new version removes this auto refresh/retry entirely - grafana77.2k관측·대시보드 · 기여자 약 3,142명observability dashboards · ~3,142 contributors히트맵 버킷 증분의 쓰기만 하는 Mapwrite-only decimals map in heatmap bucket increments닫힘closed당일same day / 보통 1일 / usually 1d수락 81%81% 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 + FastGPT29.8kAI 에이전트·지식베이스 빌더 · 기여자 약 197명AI agent and knowledge base builder · ~197 contributors모델 변경 후 QA 재학습이 옛 모델로 돈다QA jobs released before the new agent model is saved닫힘closed1일 만에in 1d / 보통 4일 / usually 4d수락 65%65% merged#7918메인테이너: catch-all 이라 await 없이도 기대대로 동작한다 · 새 버전에서 이 자동 갱신·재시도 자체를 없앴다maintainer: it is a catch-all that works as intended without awaiting, and the new version removes this auto refresh/retry entirely + grafana77.2k관측·대시보드 · 기여자 약 3,142명observability dashboards · ~3,142 contributors히트맵 버킷 증분의 쓰기만 하는 Mapwrite-only decimals map in heatmap bucket increments닫힘closed당일same day / 보통 1일 / usually 1d수락 80%80% 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 openstatus9.2k상태 페이지·업타임 모니터링 · 기여자 약 126명status pages & uptime monitoring · ~126 contributors알림 목록의 모니터 관계 반복 검색repeated notification monitor association scans닫힘closed1일 만에in 1d / 보통 4일 / usually 4d수락 88%88% merged#2780메인테이너가 V1 API 폐기 예정이라고 밝혀 우리가 닫았다we closed it after the maintainer said the V1 API is deprecated - react250.8kUI 라이브러리 · 컴파일러 · 기여자 약 2,020명UI library and compiler · ~2,020 contributorsReact 컴파일러 패스의 쓰기만 하는 컬렉션write-only collections in React Compiler passes닫힘closed당일same day / 보통 4일 / usually 4d수락 14%14% merged#37698잘못된 GitHub 계정(yoominho91)으로 제출해 닫고 irontaek의 #37699로 교체했다closed after submission from the wrong GitHub account (yoominho91); replaced by irontaek's #37699 - eslint27.6k자바스크립트 린터 · 기여자 약 1,253명JavaScript linter · ~1,253 contributorsno-duplicate-case 이전 case 재스캔no-duplicate-case rescans earlier cases닫힘closed당일same day / 보통 3일 / usually 3d수락 63%63% merged#21317AI 보조 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 - vscode193.5k코드 에디터 · 기여자 약 3,263명code editor · ~3,263 contributors툴 피커 안 미사용 Mapunused MCP server map in the tools picker닫힘closed11일 만에in 11d / 보통 1일 / usually 1d수락 95%95% 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 + react250.8kUI 라이브러리 · 컴파일러 · 기여자 약 2,020명UI library and compiler · ~2,020 contributorsReact 컴파일러 패스의 쓰기만 하는 컬렉션write-only collections in React Compiler passes닫힘closed당일same day / 보통 4일 / usually 4d수락 13%13% merged#37698잘못된 GitHub 계정(yoominho91)으로 제출해 닫고 irontaek의 #37699로 교체했다closed after submission from the wrong GitHub account (yoominho91); replaced by irontaek's #37699 + eslint27.6k자바스크립트 린터 · 기여자 약 1,254명JavaScript linter · ~1,254 contributorsno-duplicate-case 이전 case 재스캔no-duplicate-case rescans earlier cases닫힘closed당일same day / 보통 3일 / usually 3d수락 64%64% merged#21317AI 보조 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 + vscode193.5k코드 에디터 · 기여자 약 3,263명code editor · ~3,263 contributors툴 피커 안 미사용 Mapunused MCP server map in the tools picker닫힘closed11일 만에in 11d / 보통 1일 / usually 1d수락 86%86% 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 openstatus9.2k상태 페이지·업타임 모니터링 · 기여자 약 126명status pages & uptime monitoring · ~126 contributorsHono 보안 패치 · 의존성 점검Hono security patch · dependency audit닫힘closed27일 만에in 27d / 보통 4일 / usually 4d수락 88%88% 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 budibase28.3k사내 도구 빌더 · 기여자 약 148명internal tools builder · ~148 contributorsstatic formula 갱신 enriched row 조회 O(n²)static formula enriched-row lookup O(n²)닫힘closed당일same day / 보통 1일 / usually 1d수락 65%65% merged#19555게이트 0 — 외부 PR 은 "작성자에게 배정된" 이슈를 참조해야 하는데 배정은 메인테이너만 한다gate 0 — external PRs must reference an issue assigned to the author, and only maintainers can assign - ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributorspost relation 연결 반복 조회repeated post lookup while attaching import relations닫힘closed14일 만에in 14d / 보통 1일 / usually 1d수락 95%95% 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 + ghost55.5k퍼블리싱·뉴스레터 · 기여자 약 931명publishing & newsletters · ~931 contributorspost relation 연결 반복 조회repeated post lookup while attaching import relations닫힘closed14일 만에in 14d / 보통 1일 / usually 1d수락 91%91% 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 n8n206.9k워크플로 자동화 · 기여자 약 812명workflow automation · ~812 contributorscredential 삭제 완료 전 명령 종료credential uninstall exits before deletions finish닫힘closed36일 만에in 36d / 보통 1일 / usually 1d수락 90%90% 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 nx29.4k모노레포 빌드 시스템 · 기여자 약 1,310명monorepo build system · ~1,310 contributorsgraph 명령 안 미사용 Mapunread task graph cache in the graph command닫힘closed34일 만에in 34d / 보통 1일 / usually 1d수락 85%85% 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 - astro63.1k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명web framework · ~1,245 contributors스택 트레이스 절반 유실printed error stacks lose every other frame닫힘closed24일 만에in 24d / 보통 1일 / usually 1d수락 77%77% 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 + astro63.2k웹 프레임워크 · 콘텐츠 사이트 · 기여자 약 1,245명web framework · ~1,245 contributors스택 트레이스 절반 유실printed error stacks lose every other frame닫힘closed24일 만에in 24d / 보통 1일 / usually 1d수락 77%77% 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 storybook91.2kUI 컴포넌트 개발·문서화 · 기여자 약 2,801명UI component workshop · ~2,801 contributorsinvalidate() 안 미사용 Setunread invalidated Set in the story index닫힘closed25일 만에in 25d / 보통 6일 / usually 6d수락 84%84% 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 excalidraw133.6k화이트보드 · 손그림 다이어그램 · 기여자 약 378명virtual whiteboard · ~378 contributorsresize 핸들러 안 미사용 Mapunused Map in resize handler닫힘closed34일 만에in 34d#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% - typeorm36.7kTypeScript ORM · 기여자 약 1,258명TypeScript ORM · ~1,258 contributorsloadTables 카탈로그 전량 재스캔loadTables full catalog rescan닫힘closed45일 만에in 45d / 보통 17일 / usually 17d수락 42%42% 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 + typeorm36.7kTypeScript ORM · 기여자 약 1,258명TypeScript ORM · ~1,258 contributorsloadTables 카탈로그 전량 재스캔loadTables full catalog rescan닫힘closed45일 만에in 45d / 보통 15일 / usually 15d수락 40%40% 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 langfuse35.6kLLM 관측·평가 · 기여자 약 221명LLM observability · ~221 contributorseval dataset item 반복 조회eval dataset item re-read닫힘closed37일 만에in 37d / 보통 1일 / usually 1d수락 87%87% merged#15585우리가 접었다 — 중앙 0.6일인 곳에서 37일째 사람 반응 0(붙은 건 CLA 봇뿐)we closed it — 37 days with zero human response in a repo whose median is 0.6 days budibase28.3k사내 도구 빌더 · 기여자 약 148명internal tools builder · ~148 contributorsExternalRequest field lookup O(n²)닫힘closed3일 만에in 3d / 보통 1일 / usually 1d수락 65%65% merged#19320사유 없이 닫힘. 요청받지 않은 최적화는 그냥 거절될 수 있다closed with no reason; unsolicited optimizations can simply be declined directus38.4k데이터 백엔드 · 기여자 약 589명data backend · ~589 contributorsparse-fields dedup O(n²)닫힘closed5일 만에in 5d / 보통 5일 / usually 5d수락 45%45% merged#27978"이 엣지 케이스의 성능 이득은 churn 을 정당화하지 못한다 — 더 큰 최적화 기회가 있다""performance gains for this edge case don't justify the churn … larger optimization opportunities" strapi73.3k헤드리스 CMS · 기여자 약 1,398명headless CMS · ~1,398 contributorsdoc-metadata localization O(n²)닫힘closed16일 만에in 16d / 보통 6일 / usually 6d수락 45%45% merged#27125우리가 접었다 — 중앙 2일인 곳에서 14일째 아무 반응이 없었다we closed it — 14 days with no response in a repo whose median is 2 days payload45.2k헤드리스 CMS · Next.js · 기여자 약 587명headless CMS · ~587 contributorsdataloader doc placement O(n²)닫힘closed16일 만에in 16d / 보통 1일 / usually 1d수락 88%88% merged#17469우리가 접었다 — 중앙 4일인 곳에서 14일째 아무 반응이 없었다we closed it — 14 days with no response in a repo whose median is 4 days cal.com48.9k일정 예약 · 기여자 약 981명scheduling · ~981 contributorslucky-user set rebuild in loop닫힘closed7일 만에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) - twenty58.2k오픈소스 CRM · 기여자 약 774명open-source CRM · ~774 contributorsnested relations hydration O(n²)닫힘closed당일same day / 보통 3일 / usually 3d수락 68%68% merged#23232겹친 2건 중 나머지. 사유는 남지 않았다the other of the overlapping pair; no reason given - twenty58.2k오픈소스 CRM · 기여자 약 774명open-source CRM · ~774 contributorsview-widget-upsert O(n²)닫힘closed당일same day / 보통 3일 / usually 3d수락 68%68% merged#23231"redundant with #23232" — 같은 저장소에 겹치는 2건을 냈다"redundant with #23232" — two overlapping PRs in one repo + twenty58.2k오픈소스 CRM · 기여자 약 774명open-source CRM · ~774 contributorsnested relations hydration O(n²)닫힘closed당일same day / 보통 1일 / usually 1d수락 30%30% merged#23232겹친 2건 중 나머지. 사유는 남지 않았다the other of the overlapping pair; no reason given + twenty58.2k오픈소스 CRM · 기여자 약 774명open-source CRM · ~774 contributorsview-widget-upsert O(n²)닫힘closed당일same day / 보통 1일 / usually 1d수락 30%30% merged#23231"redundant with #23232" — 같은 저장소에 겹치는 2건을 냈다"redundant with #23232" — two overlapping PRs in one repo cal.com48.9k일정 예약 · 기여자 약 981명scheduling · ~981 contributorsbooking member diff O(n²)닫힘closed15일 만에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 novu40.1k알림 인프라 · 기여자 약 536명notification infrastructure · ~536 contributorssync-agent findOne N+1닫힘closed17일 만에in 17d / 보통 1일 / usually 1d수락 94%94% 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) - immich115.9k셀프호스팅 사진 보관 · 기여자 약 1,025명self-hosted photo library · ~1,025 contributorsdeleteBulkMetadata N+1닫힘closed15일 만에in 15d / 보통 1일 / usually 1d수락 57%57% 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 + immich116k셀프호스팅 사진 보관 · 기여자 약 1,025명self-hosted photo library · ~1,025 contributorsdeleteBulkMetadata N+1닫힘closed15일 만에in 15d / 보통 1일 / usually 1d수락 48%48% 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

카드의 기여자 수는 기준 GitHub 커밋 작성자 집계다. 같은 사람의 여러 계정이나 봇이 각각 포함될 수 있다.

Contributor counts use GitHub commit authors as of . Multiple accounts for one person and bots may be counted separately.

-

머지됨 36 · 승인 · 머지 대기 1 · 변경 요청 1 · 리뷰 진행 1 · 아무도 안 봄 17 · 보류 2 · 닫힘 26 — 전체 기록은 IMPACT.md. 상태는 GitHub 에서 자동 갱신된다. 기준선은 각 저장소의 최근 닫힌 PR 60건 중 외부 기여자 머지의 중앙값이다 — 평균은 묵은 몇 건이 통째로 끌고 간다(next.js 는 평균 7.4일인데 중앙값 1.1일). 초록불은 그 안, 빨간불은 초과, 보라불은 +7일을 넘긴 보류다. 옆의 수락률은 그 저장소가 최근 닫힌 외부 PR 을 얼마나 머지했는지다 — 늦은 게 우리 것만 밀린 건지, 원래 대부분 거절인 곳인지를 가른다. 보류는 GitHub 에 없는 상태다 — 닫히지도 머지되지도 않은 채 그 저장소의 평소 속도를 크게 지난 것을 우리가 따로 센다.

-

36 merged · 1 approved · 1 changes requested · 1 in review · 17 nobody has looked · 2 stalled · 26 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 7.4 days but its median is 1.1). 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.

+

머지됨 36 · 승인 · 머지 대기 2 · 리뷰 진행 1 · 아무도 안 봄 18 · 보류 2 · 닫힘 26 — 전체 기록은 IMPACT.md. 상태는 GitHub 에서 자동 갱신된다. 기준선은 각 저장소의 최근 닫힌 PR 60건 중 외부 기여자 머지의 중앙값이다 — 평균은 묵은 몇 건이 통째로 끌고 간다(next.js 는 평균 7.8일인데 중앙값 1.1일). 초록불은 그 안, 빨간불은 초과, 보라불은 +7일을 넘긴 보류다. 옆의 수락률은 그 저장소가 최근 닫힌 외부 PR 을 얼마나 머지했는지다 — 늦은 게 우리 것만 밀린 건지, 원래 대부분 거절인 곳인지를 가른다. 보류는 GitHub 에 없는 상태다 — 닫히지도 머지되지도 않은 채 그 저장소의 평소 속도를 크게 지난 것을 우리가 따로 센다.

+

36 merged · 2 approved · 1 in review · 18 nobody has looked · 2 stalled · 26 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 7.8 days but its median is 1.1). 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.

@@ -777,7 +778,7 @@

점수를 만드는 축 6개, 짚어주는 결함 24종.

Six axes make the score. Twenty-four diagnostics point at fixes.

감점 비중은 인지 복잡도 37 · 함수 길이 23 · 중복 9 · 파일 크기 8 · 순차 I/O 5 · O(n²) 5(캡 기준, 합 87). 나머지 24종은 등급을 건드리지 않고 파일·줄만 짚는다.

Caps by axis: complexity 37, function length 23, duplication 9, file size 8, sequential I/O 5, O(n²) 5 — 87 total. The other twenty-four never touch the grade; they name the file and line.

-
규칙 10개6개가 남의 저장소에 머지됨 · 36건10 rules6 merged upstream · 36 PRs
쓰기만 하는 컬렉션Write-only collection진단diagnostic머지 15건15 merged

채우기만 하고 아무도 읽지 않는 Set·Map·배열. 소비하던 코드가 리팩터로 사라진 흔적이라 지워도 동작이 같고, 매번 채우는 비용만 사라진다. knip 은 .add 도 "사용"으로 봐서 못 잡는다.A Set, Map, or array that is filled but never read — what a refactor left behind. Removing it changes nothing but the cost of filling it. knip misses it because .add counts as a use.

O(n²) 조회O(n²) lookup채점 06scored 06머지 12건12 merged

행마다 다른 배열을 .find·.some·.includes 로 처음부터 훑는 자리. 한 번 Map·Set 으로 색인해두면 조회가 O(1)이 된다 — 데이터가 커질수록 차이가 제곱으로 벌어진다.Each row rescans another array with .find/.some/.includes. Index it once into a Map/Set and each lookup is O(1) — the gap grows with the square of the data.

테스트·프론트 구역, 정적 외곽, n 이 잘린 자리는 세지 않고 3곳 미만은 면제. 10k줄당 유예 1.0, 캡 5 — 판정 난 초기 PR 6건 중 4건이 닫혀서, 오탐이 등급을 뒤집지 않게 낮게 잡았다.Test/frontend zones, static outers, and capped-n sites are excluded; under three sites is free. Free below 1.0 per 10k lines, capped at 5 — four of the first six decided PRs were closed, so a false positive must not flip a grade.

불필요한 순차 I/ONeedless sequential I/O채점 05scored 05머지 4건4 merged

루프 한 바퀴마다 DB·네트워크를 부르는 N+1, 그리고 서로의 결과를 쓰지 않는 await 를 줄 세우는 것. IN (...) 한 번이나 Promise.all 로 묶으면 왕복이 셈으로 줄어든다.A DB or network call per loop pass (N+1), and awaits that never use each other's result queued one by one. One IN (...) or a Promise.all cuts the round trips — provable by counting.

같은 결함이라 한 축. 37곳 재측정에서 기존 점수와 rho=−0.18 로 독립이고 11곳(30%)에서 발동한다. 3곳 미만은 안 센다(재시도·커서 페이지네이션은 순차가 맞다). 유예 3.0/1000파일, 캡 5.One defect, one axis. Across 37 re-measured repos it is independent of the score (rho=−0.18) and fires in 11 (30%). Under three sites is ignored — retries and cursor pagination are meant to be serial. Free below 3.0 per 1,000 files, capped at 5.

버려진 PromiseFloating promise진단diagnostic머지 2건2 merged

async 함수를 await 없이 부르고 결과를 버린다. 실패해도 아무도 모르고, 호출한 쪽은 끝나기 전에 다음 단계로 넘어간다.An async call with no await and nothing holding the result. Failures vanish, and the caller moves on before it finishes.

버린 반환값Discarded pure call진단diagnostic머지 2건2 merged

s.replace(…)·arr.concat(…) 를 부르고 결과를 대입하지 않는다. 문자열은 불변이라 그 줄은 아무것도 안 한다 — 지우려던 줄이 남고, 붙이려던 말이 빠진다.Calls s.replace(…) or arr.concat(…) and drops the result. Strings are immutable, so the line does nothing — what it meant to remove stays, what it meant to append is lost.

전역 정규식 상태Stateful /g regex진단diagnostic머지 1건1 merged

/g 정규식을 공유한 채 루프에서 .test() 하면 lastIndex 가 다음 호출로 새어, 같은 입력에 참·거짓이 번갈아 나온다. 성능이 아니라 조용히 틀린 답이다.A shared /g regex used with .test() in a loop leaks lastIndex into the next call, so the same input flips between true and false. Not slow — silently wrong.

함수 길이Function length채점 01scored 01

한 번에 읽어야 하는 양. 중첩 함수·주석을 뺀 자기 코드 줄 기준, 40줄 초과(JSX 60줄) 비율. 파일을 쪼개도 안 변한다 — 그래서 조작이 안 된다.How much you must read at once — a function's own code lines, nested functions and comments removed. Splitting files doesn't move it, so it can't be gamed.

인지 복잡도Cognitive complexity채점 02scored 02

함수를 머리로 따라가는 부담. SonarSource S3776 스펙과 정본값까지 일치 검증.How hard a function is to follow. Matches SonarSource S3776, verified to canonical values.

중복Duplication채점 03scored 03

토큰 단위 복사·붙여넣기 밀도. 74개 실측에서 점수와 상관 −0.11이라 비중을 16→9로 줄였다 — 대부분에겐 0점, 소수에게만 큰 항목이다.Token-level copy-paste density. Correlates −0.11 with score across 74 repos, so its cap was cut 16 → 9: zero for most, heavy for a few.

파일 크기File size채점 04scored 04

평균 줄 수 + 대형 파일 비중. 보조 항으로 강등(27→8) — 같은 코드를 6파일로 쪼개기만 해도 옛 공식은 +27점을 줬다. 함수 길이와 상관 +0.16이라 버리진 않았다.Average lines + oversized-file share, demoted to a minor term (27 → 8): splitting identical code into six files used to gain +27. Kept, because it correlates only +0.16 with function length.

+
규칙 10개6개가 남의 저장소에 머지됨 · 36건10 rules6 merged upstream · 36 PRs
쓰기만 하는 컬렉션Write-only collection진단diagnostic머지 15건15 merged

채우기만 하고 아무도 읽지 않는 Set·Map·배열. 소비하던 코드가 리팩터로 사라진 흔적이라 지워도 동작이 같고, 매번 채우는 비용만 사라진다. knip 은 .add 도 "사용"으로 봐서 못 잡는다.A Set, Map, or array that is filled but never read — what a refactor left behind. Removing it changes nothing but the cost of filling it. knip misses it because .add counts as a use.

O(n²) 조회O(n²) lookup채점 06scored 06머지 12건12 merged

행마다 다른 배열을 .find·.some·.includes 로 처음부터 훑는 자리. 한 번 Map·Set 으로 색인해두면 조회가 O(1)이 된다 — 데이터가 커질수록 차이가 제곱으로 벌어진다.Each row rescans another array with .find/.some/.includes. Index it once into a Map/Set and each lookup is O(1) — the gap grows with the square of the data.

테스트·프론트 구역, 정적 외곽, n 이 잘린 자리는 세지 않고 3곳 미만은 면제. 10k줄당 유예 1.0, 캡 5 — 판정 난 초기 PR 6건 중 4건이 닫혀서, 오탐이 등급을 뒤집지 않게 낮게 잡았다.Test/frontend zones, static outers, and capped-n sites are excluded; under three sites is free. Free below 1.0 per 10k lines, capped at 5 — four of the first six decided PRs were closed, so a false positive must not flip a grade.

불필요한 순차 I/ONeedless sequential I/O채점 05scored 05머지 4건4 merged

루프 한 바퀴마다 DB·네트워크를 부르는 N+1, 그리고 서로의 결과를 쓰지 않는 await 를 줄 세우는 것. IN (...) 한 번이나 Promise.all 로 묶으면 왕복이 셈으로 줄어든다.A DB or network call per loop pass (N+1), and awaits that never use each other's result queued one by one. One IN (...) or a Promise.all cuts the round trips — provable by counting.

같은 결함이라 한 축. 37곳 재측정에서 기존 점수와 rho=−0.18 로 독립이고 11곳(30%)에서 발동한다. 3곳 미만은 안 센다(재시도·커서 페이지네이션은 순차가 맞다). 유예 3.0/1000파일, 캡 5.One defect, one axis. Across 37 re-measured repos it is independent of the score (rho=−0.18) and fires in 11 (30%). Under three sites is ignored — retries and cursor pagination are meant to be serial. Free below 3.0 per 1,000 files, capped at 5.

버려진 PromiseFloating promise진단diagnostic머지 2건2 merged

async 함수를 await 없이 부르고 결과를 버린다. 실패해도 아무도 모르고, 호출한 쪽은 끝나기 전에 다음 단계로 넘어간다.An async call with no await and nothing holding the result. Failures vanish, and the caller moves on before it finishes.

버린 반환값Discarded pure call진단diagnostic머지 2건2 merged

s.replace(…)·arr.concat(…) 를 부르고 결과를 대입하지 않는다. 문자열은 불변이라 그 줄은 아무것도 안 한다 — 지우려던 줄이 남고, 붙이려던 말이 빠진다.Calls s.replace(…) or arr.concat(…) and drops the result. Strings are immutable, so the line does nothing — what it meant to remove stays, what it meant to append is lost.

전역 정규식 상태Stateful /g regex진단diagnostic머지 1건1 merged

/g 정규식을 공유한 채 루프에서 .test() 하면 lastIndex 가 다음 호출로 새어, 같은 입력에 참·거짓이 번갈아 나온다. 성능이 아니라 조용히 틀린 답이다.A shared /g regex used with .test() in a loop leaks lastIndex into the next call, so the same input flips between true and false. Not slow — silently wrong.

함수 길이Function length채점 01scored 01

한 번에 읽어야 하는 양. 중첩 함수·주석을 뺀 자기 코드 줄 기준, 40줄 초과(JSX 60줄) 비율. 파일을 쪼개도 안 변한다 — 그래서 조작이 안 된다.How much you must read at once — a function's own code lines, nested functions and comments removed. Splitting files doesn't move it, so it can't be gamed.

인지 복잡도Cognitive complexity채점 02scored 02

함수를 머리로 따라가는 부담. SonarSource S3776 스펙과 정본값까지 일치 검증.How hard a function is to follow. Matches SonarSource S3776, verified to canonical values.

중복Duplication채점 03scored 03

토큰 단위 복사·붙여넣기 밀도. 74개 실측에서 점수와 상관 −0.11이라 비중을 16→9로 줄였다 — 대부분에겐 0점, 소수에게만 큰 항목이다.Token-level copy-paste density. Correlates −0.11 with score across 74 repos, so its cap was cut 16 → 9: zero for most, heavy for a few.

파일 크기File size채점 04scored 04

평균 줄 수 + 대형 파일 비중. 보조 항으로 강등(27→8) — 같은 코드를 6파일로 쪼개기만 해도 옛 공식은 +27점을 줬다. 함수 길이와 상관 +0.16이라 버리진 않았다.Average lines + oversized-file share, demoted to a minor term (27 → 8): splitting identical code into six files used to gain +27. Kept, because it correlates only +0.16 with function length.

성능 7performance · 7 정확성 버그 9correctness · 9 diff --git a/tools/update-impact-cards.py b/tools/update-impact-cards.py index 808469d..42bf8f2 100644 --- a/tools/update-impact-cards.py +++ b/tools/update-impact-cards.py @@ -337,6 +337,7 @@ def delivery_timeline(f, key, pr_url, age_html): "gkurt/tegaki": ("손글씨 애니메이션 렌더러", "animated handwriting renderer"), "rgthree/rgthree-comfy": ("ComfyUI 노드 모음", "ComfyUI custom nodes"), "serverless/serverless": ("서버리스 배포 프레임워크", "serverless deployment framework"), + "nodejs/node": ("JavaScript 런타임", "JavaScript runtime"), "twentyhq/twenty": ("오픈소스 CRM", "open-source CRM"), "directus/directus": ("데이터 백엔드", "data backend"), "Budibase/budibase": ("사내 도구 빌더", "internal tools builder"),