Repository navigation
fix(vite-plugin): make shared class slots order independent - #802
Merged
Merged
Conversation
Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…oundaries Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
… changes Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Codecov Report✅ All modified and coverable lines are covered by tests.
... and 79 files with indirect coverage changes 🚀 New features to boost your workflow:
|
Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #683 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #683 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #683 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #694 (PR B). #803 위에 스택되어 있으며 #803이 먼저 병합되어야 합니다. MAIN SETTLED
78d7c2b2와 #803 head968f0d36의 실제 두 부모 merge를 포함합니다.최신 완료 상태 (2026-10-23)
현재 HEAD는
0fd8679fbc528e62d81e35006bcf2aae1c470783, tree는99fe3d264b19f2d1dd33984d8d0c74a67ddc6320입니다. 자체 CI 39925527829는 첫 시도에 SUCCESS이며, 필수 8개 job과codecov/patch가 모두 성공했습니다. PR 조건상 실행하지 않는 main 전용 release/deploy만 정상 skip입니다. 아래 과거 실패·재현 기록은 경과 보존이며 현재 CI 결과와 구분합니다.스택과 커버리지 보완
968f0d36을 실제 mergee0b90106으로 통합했습니다. 부모는ac26d073과968f0d36두 개이며 test: restore latest Bun coverage and preserve sparse values #803 자체는 변경하지 않았습니다. #803이 먼저 병합되어야 합니다.build-session.ts:10–12와reservation-inputs.ts:90–93만 각 owner seam의 행동 테스트로 커버했습니다. 상속 후 추가 커밋은 두 테스트 파일뿐이며 제품 소스 변경은 없습니다.globalThis별칭 shadow만 잠시 사용하며 실제 live ownership 객체를 지우거나 교체하지 않습니다. cold 초기값, 독립 모듈 평가, 중첩 시 active 출력 보존, 공유 세대 전이와 종료 멱등성, 원래 live 참조·snapshot·descriptor 복원을 단언합니다. 원본 canonical source LCOV에서 실제 initializer 행이 양수가 되는 것도 확인했습니다. preload 변경·가짜 AST·수동 LCOV 병합·coverage-only global reset은 없습니다.최종 로컬 Gate
별도 merge hook 1회는 알려진 #802 소유 1.4.4 RED를 다음 커밋과 분리하기 위해 명시 승인된 공유 Bun 1.4.3으로 실행했으며 당시 root 6,244/Vite 863, 두 표 100/100이었습니다. 최종 테스트 커밋 hook 1회는 공식 SHA 검증한 private 최신 Bun 1.4.4+38afee6c8을 PATH에 두고 실행했습니다. 공유 설치는 1.4.3 그대로이며 버전 고정이나 CI 설정 변경은 없습니다.
최종 두 버전의 원본 LCOV·통과 수치와 정확한 테스트 파일 해시를 staged/committed tree에 연결해 대조한 뒤 정상 fast-forward push를 한 번 수행했습니다. source 128개/정상 artifact 7개, clean index/no MERGE_HEAD를 독립 확인했습니다. 기본 스택 stable Rust workspace test, fmt/clippy, fresh install/WASM/root build와 strict TypeScript 통과, lint 오류 0/기존 경고 20개입니다. LSP 미설치로 clean-LSP 결과는 주장하지 않습니다. 실제 source/published API의 cold 시작·중첩·종료·재시작과 실제 누락/디렉터리 HTML 입력도 별도 driver로 통과했습니다. gate review는 APPROVE/HIGH입니다.
제품 예산은 같은 frozen 기준과 명시적 parser rename으로 302 pure added / 77 removed (<320), raw 399/174 그대로입니다. #803에서 상속한 제품 파일은 그 PR head와 동일함을 확인했고 예산 기준을 바꾸지 않았습니다. 스타일링 런타임, 해시 클래스 이름, 의존성 추가, 커버리지 제외나 threshold 완화는 없습니다. 새로운 소스 빌드 오류 범주는 없습니다.
최신 Linux CI
실제 로그의 Bun은 **1.4.4 (38afee6c8)**입니다. root는 6,245 pass/0 fail, Vite는 867 pass/0 fail/Windows 전용 held-directory 정리 fixture 1 skip이며 두 All files는 모두 100.00/100.00입니다. 같은 fixture는 Windows 로컬에서 포함하여 868개가 통과했습니다. Linux Rust는 **100.00%(16602/16602)**입니다.
publish, benchmark, Next landing, React 18, packed release compatibility, webpack theme, RSC CSS, WASM size job과 Codecov patch가 성공했습니다. Vinext landing per-file/singleCss 모두 71 routes/0 skipped, 각 E2E 190 passed이고 별도 RSC fixture도 각 6 routes/0 skipped입니다. prerender skip 예외나 job 재실행은 사용하지 않았습니다. CI checkout merge ref
b3245563의 부모가 main78d7c2b2와 현재 HEAD이고 실제 tree도99fe3d26으로 동일함을 GitHub commit API와 원본 benchmark artifact에서 확인했습니다.benchmark의 9개 비교 모두 PASS, baseline/threshold 변경과 재실행 0회입니다. 아래는 같은 원본 3-sample artifact의 대표 행이며 서로 다른 run의 절대 시간을 성능 개선으로 해석하지 않습니다.
single-turbo는 기존 기준 1.081x ±10% 이내입니다. row12는 여전히 미검증 0/20이고, main에서 확인한 HEAD preload 순서와 Windows mixed-preload fileMap은 후속 과제로 유지합니다. 이 cold-load unit test를 row12 native qualification이나 과거 FULL 60회/cold build 9회의 새 실행으로 표시하지 않습니다.
이전 구현 및 검증 기록
아래는 각 원래 HEAD에서 얻은 증거와 실패 경과를 그대로 보존한 기록입니다. 현재 완료 상태는 위
0fd8679f및 run39925527829결과가 우선합니다.요약
atomHoist는 물리 모듈 경계 2개이며0은 비활성화합니다.singleCss동작을 유지하고 HMR에서 이미 확정한 이름 이력을 재배치하지 않습니다.?v=개정값을 갱신하며 매 요청 시각이나 Vite가 제거하는 timestamp로 모듈 정체성을 만들지 않습니다.동작
설정 상속 파일과 누락된 후보, 선택/가져온 Tailwind 입력, 실제 모듈 공급자와 해석 메타데이터를 추적합니다. 설정 갱신을 직렬화하고 이미 허용한 비동기 작업이 끝나기 전에 공유 엔진 소유권을 반환하지 않습니다. 중첩 소유 기간에는 캐시를 사용하지 않으며 인스턴스별 엔진 격리를 약속하지 않습니다.
캐시는 전체 변환 ID, 정확한 입력, 최신 물리 입력 정체성, 원래 준비 완료 세션, 실제 예약 current/prepared 개정값, 설정 세대, 공유 엔진 독점 소유 세대를 확인합니다. 세션 교체 이전의 연속 작업도 최신 입력 관측에 반영합니다. 히트도 현재 환경/ID의 의존성을 등록한 뒤 준비 완료를 기다립니다. CSS 스냅샷/RustOutput/쓰기 동작을 저장하거나 재실행하지 않고 실제 누적 시트에서 CSS를 읽으며 빌드에서는 캐시를 우회합니다.
물리 패키지 경계 탐색은 유효한 지배 패키지에서 멈추되 더 가까운 누락 package.json 후보와 실제 진입점 메타데이터는 유지합니다. 디렉터리 생성/삭제는 실제 예약을 무효화하며 JSON/CSS/CJS 전체 허용, 가짜 epoch, 이벤트 억제/재생은 없습니다. outside-native 테스트는 실제 Vite 수명주기와 backend registration observer barrier를 사용합니다. 공개
ready를 경로별 등록 완료로 간주하지 않으며 실제 등록 반환 뒤 관측기 신호만 완료합니다. 네이티브all이벤트와 비동기 HMR 완료도 구분합니다.새로 생기는 오류
새로운 소스 빌드 오류 범주는 없습니다. 기존 위치 정보와 빌드 시점 오류 정책을 유지합니다.
남는 한계
770aaac5의 RED는 exclusive POSIX A=0 대비 mixed native A=0/POSIX A=1이며 code/map/full CSS/classMap 비교는 같았습니다. 렌더링 오류나 지연 개선으로 확대 해석하지 않고 PR B 이후 main 기반 수정 PR로 분리합니다.78d7c2b2의 별도 shimmed cold build 첫 2회에서도 select의 Radio/Checkbox 참조와 실제 HEAD preload 순서가 뒤바뀌었습니다. main은 청크명/manifest도 달라 순수 동일-tag 집합이라고 주장하지 않습니다. 직접 emitter는@vitejs/plugin-rsc@0.5.38/dist/shared-DH8gaClP.js:81의 preload 호출이며 React DOMreact-dom-server.edge.production.js:7330이 삽입 순서로 HEAD에 출력합니다. Vinext/plugin-rsc/React 통합의 기존 비결정성은 main 기반 후속 과제로 기록했고 PR B에 섞지 않았습니다.커버리지 구성
Rust 뒤 root와 Vite 두 Bun lane을 순서대로 실행하며 각각 명시적으로
--coverage를 전달합니다. 각 lane은 새 보고서 디렉터리를 쓰고 Codecov에 두 LCOV를 전달합니다. Bun styling preload가 Vite source 테스트의 엔진 소유권/캐시 전제에 섞이지 않도록 발견 범위를 나누며 source 커버리지 제외는 추가하지 않습니다. main의 globals-first root preload와 pkg/dist 산출물 전용 ignore를 유지하고 공통 matrix globals만 중립 모듈로 분리했습니다.두 설정의
coverageThreshold = { lines = 1.0, functions = 1.0, statements = 1.0 }와 도달 가능한--config설정 검사를 유지합니다. 현재 Bun은 functions/lines를 실제 강제하지만 statements 키는 강제하지 않는 upstream 한계가 있어 statement 100% 수치는 주장하지 않습니다. Changepack은 관리 대상 packages/bindings의 package.json만 포함하며 모두 Patch입니다.검증
fa7aef2da308a891fec2cb690f82100c0f130667, tree39a209efdd09cc9f842a2ebe9c5bb70e0d67c4d4, 부모d57f9c3c와78d7c2b2. 정확한 staged tree의 정상 merge hook 1회 통과. root 6051 pass/0 fail, Vite 849 pass/0 fail, 두 All files functions/lines 모두 100.00/100.00. 로컬 Windows Rust 97.99%(23411/23892)는 Linux CI 100%를 대신하지 않습니다.실제 WASM 출력 예시:
최종 gate review는 APPROVE/HIGH이며 제품/local gate 범위입니다.
fa7aef2da308a891fec2cb690f82100c0f130667를 정상 fast-forward push했고 직후 context는 2026-10-22 07:51:33Z 기준 302.1K로 측정했습니다.격리 이전 CI HEAD는
accb5f80d1f64677d1111b201ccbc7b35c00b79f이며 부모는 위 제품 커밋입니다. 변경은e2e/landing-zero-runtime.spec.ts한 파일뿐입니다. 실제 CI trace의ak-a~ak-f가 기존 한 글자 파일 prefix 가정에서 거부되는 것을 확인하고, 임의의 문자열 길이 완화 대신 27/37 알파벳·정규 ad escape·WASM32 카운터 범위로 인식하게 고쳤습니다. 두>1단언, typography 예외와 독립 runtime 검사는 유지합니다. 같은 실제 출력에서 수정 전 Chromium RED, 수정 후 zero-runtime E2E 6 pass/0 fail, strict TypeScript와 lint 통과. 잘못된 기존 Window cast도 같은 검사 의미로 제거했습니다. 정상 hook은 root 6051/0, Vite 849/0, 두 표 100.00/100.00으로 통과했습니다. 원래 113파일/7artifact 해시는 모두 같고 추가 테스트를 포함한 114/7 custody는 clean입니다. 이 test-only 변경으로 제품 예산이나 60/nine 결과를 바꾸지 않습니다. 정상 push 직후 context는 2026-10-22 08:45:32Z 기준 415.5K입니다.자체 CI 상태 (파서 격리 이전 기록)
첫 자체 run 39743564528의 실제 로그에서 Linux Rust **100.00%(16602/16602)**와 root/Vite All files 100.00/100.00을 확인했습니다. Vinext는 71 routes/0 skipped였습니다. 단일 E2E prefix 검사 실패(189개 나머지 통과)는 위 test-only 수정으로 대응했습니다. benchmark는 두 turbo output-size 비교에서 실패했고 허용된 해당 job 1회 재실행도 실패했습니다. 재실행의 stylex-turbo-devup-ui는 25,590,816B >25,551,940B, collapse는 26,145,281B >26,127,024B였으며 single-turbo 시간 비율도 1.245x로 기준 1.081x+10%를 넘었습니다. 실패를 runner noise로 단정하거나 baseline/threshold를 변경하지 않았고 추가 job 재시도도 하지 않았습니다.
test-only 새 HEAD의 정상 run 39750171304은
publish와 나머지 필수 job이 성공했고 benchmark 비교만 실패했습니다. 새 로그의 Linux Rust는 100.00%(16602/16602), root는 6051 pass/0 fail, Vite는 848 pass/0 fail/Windows 전용 fixture 1 skip이며 두 All files는 100.00/100.00입니다. Windows 로컬에서는 해당 fixture까지 849/0으로 통과했습니다. Vinext per-file/singleCss 모두 71 routes/0 skipped, 각 실제 E2E는 190 pass였습니다. Next landing, React 18, packed release compatibility, webpack theme, RSC CSS, WASM size job도 성공했습니다. main push 전용 release/deploy는 PR 조건에 따라 실행하지 않습니다.새 benchmark의 single-turbo는 6.04s/1.075x로 기준 1.081x+10% 안에 돌아와 별도 runner timing 비교 조건은 성립하지 않습니다. 남은 실패는 stylex-turbo-devup-ui 25,586,352B >25,551,940B와 collapse 26,129,495B >26,127,024B 두 output-size 비교입니다. 따라서 전체 CI 결론은 여전히 failure이며 green으로 표현하지 않습니다. 이후 아래 Vite 전용 parser 격리를 적용했으며, 이 문단은 격리 이전 run의 보존 기록입니다. baseline/threshold는 변경하지 않습니다.
출력 크기 원인 (격리 이전 대조)
허용된 bounded attribution으로 main
78d7c2b2와 현재 PR의 두 fixture를 정상 cold build로 각 1회, 총 4회 빌드했습니다. 매 진입 실제 9GiB 이상 여유 메모리, 직렬 실행, 6GB watchdog, 성공한 소유 프로세스 종료와 원본 복원을 확인했습니다. 로컬.next크기는 stylex 25,248,632→25,542,977B(+294,345B), collapse **25,823,357→26,073,511B(+250,154B)**였습니다. 이는 CI 측정 대체나 로컬 시간 개선 주장이 아닙니다.원본 716파일을 길이/SHA로 확인하고 CSS/JS를 파일별로 비교한 결과 브라우저 CSS/JS, application-server/build-worker chunk와 31개 emitted map은 동일합니다. stylex 증가는 Turbopack persistent cache +294,265B와 경로 metadata +80B, collapse는 cache +249,484B, TypeScript build-info +589B, 경로 metadata +80B, trace +1B입니다. JavaScript 중 크기가 늘어난 것은 절대 경로 설정을 담는
required-server-files.js의 fixture별 +40B이며 사용자 코드 증가는 아닙니다.shared plugin-utils의 HTML physical entry 발견용
htmlReservationEntriesexport가await import('parse5')를 포함하여 Next/Turbopack의 build-tool dependency/cache graph에 parse5를 추가하는 경로를 확인했습니다. 보존한 SST frame을 메모리에서 해제한 실제 기록에도 parser 경로와 해당 export가 나타납니다. parser는 emitted browser/server/build-worker chunk나 map에는 추가되지 않았습니다. 압축 cache delta 전부를 parse5 단독 payload로 배분하는 것은 packing/경로 차이와 분리해 입증하지 못했으므로 그런 수치는 주장하지 않습니다. HTML을 파싱하지 않는 loader/plugin graph에서 이 비용을 제거하도록 parser를 Vite 전용 모듈/의존성 경계로 옮기는 수정이 승인되었습니다. Vite 동작과 출력, 두 lane 커버리지를 보존하는 격리 구현과 검증은 아래 최신 결과로 구분합니다. baseline/threshold 변경이나 CI 통과 주장은 없습니다.Vite 전용 파서 격리 (ac26d07 기록)
파서 격리 당시 HEAD는
ac26d0738e2f253159a21f198280db8f69f6a893, treecd093009ecf429258ead094fae92104fc105d766입니다. HTML을 해석하지 않는 Next/webpack/Rsbuild/Bun의 plugin·loader graph가 shared barrel의htmlReservationEntries를 통해 비동기 parse5 graph를 분석하는 비용이 원인이었습니다. HTML parser를 Vite의 private 모듈로 옮기고 shared export를 제거했으며 기존parse5 ^8.0.1의존성의 소유 패키지만 Vite로 이동했습니다. 새 의존성/버전 고정/스타일링 런타임은 없습니다. 두 공개 모듈 형식 모두 실제await import('parse5')를 유지하며 shared 산출물과 선언 graph에서는 parser가 사라집니다.비-Vite 제품 source/loader 전체에서 value import·reexport·dynamic import를 추적하는 회귀 검사를 먼저 실행해 4개 모두 shared parser 도달로 RED를 확인한 뒤 4/0 GREEN으로 전환했습니다. 기존 HTML 단언과 CJS/ESM 공개 hook 검사는 Vite로 이동했고 실제 parser await 전/후의 native 수명·소유권 단언은 private in-memory emitted-test binding으로 유지했습니다. 제품 test hook, 가짜 epoch/event, 단언 완화는 없습니다. 실제 예약 본문은 import 이외 바이트 동일하며 parser의 유일한 계산 변경은 같은 parseImports 결과의 projection 배열을 루프에 옮긴 것입니다.
frozen 기준 제품 예산은 명시적 parser rename 대응을 적용한 **302 pure added / 77 removed (<320)**입니다. 경로만 비교한 raw 399/174도 숨기지 않습니다. 원래 parser 100 pure lines 중 97개를 보존한 이동이며 새 구현은 3/3입니다. 정상 hook 1회가 정확한 staged tree에서 통과했고 root 6041/0, Vite 863/0, 두 All files 100.00/100.00입니다. Windows Rust 97.99%는 Linux 결과를 대신하지 않습니다. source 116개/정상 artifact 7개 custody, strict TypeScript, lint 0 errors/기존 20 warnings, 실제 native HTML matrix 24 tests와 공개 CJS/ESM/비동기 barrier 검사가 통과했습니다. LSP 미설치 상태는 그대로 명시합니다. 최종 local gate review는 APPROVE/HIGH이며 아직 실행되지 않은 CI를 면제한 것이 아닙니다.
동일한 정상 cold build의 로컬 결과:
원본 1,074파일을 길이/SHA로 대조했고, 브라우저 CSS/JS·application-server/build-worker·map·df CSS 147파일은 main/이전 PR/새 PR 모두 바이트 동일합니다. 남은 main 대비 차이는 stylex -26,221B = cache -26,304 + 경로 metadata 80 + trace 3, collapse +12,338B = cache 11,758 + TypeScript bookkeeping 479 + 경로 metadata 80 + trace 21로 전부 분할했습니다. TypeScript의 추가 선언은 reservation-graph.d.ts 하나이고 HTML 선언은 없습니다. 2,523/2,583개의 보존 Zstd frame에서 실제 parse5 parser-module 경로는 0개입니다. parse5 이름이 남은 fixture별 3개 frame은 node_modules 디렉터리 목록이며 parser module graph라고 주장하지 않습니다. 압축 cache delta를 parser 단독 payload로 배분하거나 전체 dist 동일/새 시간 개선으로 확대하지 않습니다.
이전 자체 CI (ac26d07 기록)
정상 push 후 run 39765794551의 benchmark 9개 비교가 모두 PASS입니다. 같은 gate와 baseline을 그대로 사용했고 재시도하지 않았습니다. 이전 run39750171304의 stylex 25,586,352→25,301,396B, collapse 26,129,495→25,869,977B로 크기 실패가 해소되었습니다.
single-turbo는 기준 1.081x ±10% 이내입니다. Linux Rust는 실제 **100.00%(16602/16602)**이며 benchmark 외 Next landing/React18/release compatibility/RSC CSS/webpack theme/WASM size job도 성공했습니다. 그러나 publish의 root Bun은 6041 pass/0 fail, functions100.00/lines99.76로 커버리지 gate가 실패하여 이 run의 Vite/landing 단계는 실행되지 않았습니다. 따라서 전체 CI는 여전히 failure이며 green으로 표시하지 않습니다. Windows의 정상 hook 두 lane100과 다른 이 Linux 커버리지 차이의 원인을 확인 중이며 threshold/coverage 제외를 바꾸지 않고 해결 후 최신 결과로 갱신합니다. 새 소스 빌드 오류 범주는 없고 row12 미검증0/20 및 기존 main 후속 과제의 범위/표현은 위 기록 그대로입니다.
Bun 1.4.4 최초 전환 검증 (이전 RED)
Bun 1.4.4+38afee6c8이 이번 작업 도중인 2026-10-22 10:11:32Z에 배포되었습니다. 앞서 통과한 정상 로컬 hook은 1.4.3+c6da4a4d3이며 새 CI는
latest인 1.4.4를 사용했습니다. CI merge ref46563068의 실제 tree는 현재 HEAD와 동일하고 부모도 main78d7c2b2와ac26d073이므로 다른 소스를 검사한 결과가 아닙니다.공식 latest Windows binary를 release의 SHA-256과 대조하여 별도 경로에 설치하고, 같은 커밋·source116개·artifact7개를 유지한 채 재현했습니다. 1.4.4에서는 Windows도 root 6041/0, functions100.00/lines99.76, Vite 863/0, functions100.00/lines99.65입니다. root의 10파일 32개 라인과 Vite
reservation-inputs.ts:90–93의 실제DA:0LCOV를 보존했습니다. 따라서 Linux 전용 현상으로 단정하거나 Bun reporter 버그로 확정하지 않습니다. 최신 도구가 드러낸 실제 입력별 테스트 누락과 불가능한 조건을 구분해 확인하는 후속 단위가 필요하며, 아직 수정·100% 통과로 표시하지 않습니다. 이전 버전 고정, 커버리지 제외나 threshold 변경은 하지 않았고 parser 격리 및 benchmark PASS 결과와도 구분합니다.