Repository navigation
fix(wasm): align deterministic atom hoist names - #751
Merged
Merged
Conversation
Refs #694, #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694, #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694, #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694, #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694, #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694, #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…to fix/atom-hoist-names
Refs #694, #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694, #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Contributor
Changepacks@devup-ui/wasm@1.0.83 → 1.0.84 - bindings/devup-ui-wasm/package.jsonPatch
@devup-ui/bun-plugin@1.0.22 → 1.0.23 - packages/bun-plugin/package.jsonPatch
@devup-ui/components@0.1.60 → 0.1.61 - packages/components/package.jsonPatch
@devup-ui/eslint-plugin@1.0.22 → 1.0.23 - packages/eslint-plugin/package.jsonPatch
@devup-ui/next-plugin@1.0.90 → 1.0.91 - packages/next-plugin/package.jsonPatch
@devup-ui/plugin-utils@1.0.17 → 1.0.18 - packages/plugin-utils/package.jsonPatch
@devup-ui/react@1.0.44 → 1.0.45 - packages/react/package.jsonPatch
@devup-ui/reset-css@1.0.31 → 1.0.32 - packages/reset-css/package.jsonPatch
@devup-ui/rsbuild-plugin@1.0.67 → 1.0.68 - packages/rsbuild-plugin/package.jsonPatch
@devup-ui/vite-plugin@1.0.73 → 1.0.74 - packages/vite-plugin/package.jsonPatch
@devup-ui/webpack-plugin@1.0.71 → 1.0.72 - packages/webpack-plugin/package.jsonPatch
|
Codecov Report✅ All modified and coverable lines are covered by tests.
🚀 New features to boost your workflow:
|
This was referenced Oct 4, 2026
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Refs #694; merge updated PR #743 with main a2b74d0 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>
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>
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>
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>
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>
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>
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, #686 (W66). #782 (
fix/order-independent-class-slots) 위에 쌓은 PR이며 #782를 먼저 병합해야 합니다. PR base는main입니다.요약
2026-10-15 사용자 결정에 따라 기존 #751의 긴 hex/content 클래스 이름을 짧은 카운터로 바꿉니다. 해시·콘텐츠·fingerprint 이름이나 스타일링 런타임은 추가하지 않습니다.
atomHoist기본 threshold가 2입니다. 양수 threshold의 기존 최소 2 보정과atomHoist: 0opt-out을 유지합니다. Bun은 기존대로 항상 singleCss이며 새 atom 옵션을 추가하지 않습니다.a,b,c를 사용하여devup-ui.css에 한 번 정의합니다. 한 route 전용 bucket은a-a같은 파일별 이름과 해당 파일 CSS를 유지합니다.singleCss: true에서는 atomHoist가 코드·CSS·계획·adapter ID/import/chunk 정책에 영향을 주지 않습니다.!important충돌, length/shadow token 첫 값, 공유 규칙의updatedBaseStyle, sheet에 저장한 frozen plan을 보존하고 naming cache generation을 2로 올립니다.동작
route reach와 threshold를 첫 scratch/live 추출 전에 설정합니다. #782의 실제 추출기 기반 예약 패스가 같은 물리 inventory를 경로 순서로 처리해 공유·파일별 카운터 슬롯을 미리 예약하며, 실제 변환 순서는 이름을 다시 정하지 않습니다. 내부 원자 identity는 충돌 없이 구분하지만 출력 이름에 identity 내용을 붙이지 않습니다.
keyframes는 기존 파일별 위치를 유지하고 생성 변수는 공유 카운터 이름 공간을 사용합니다. prefix는 한 번만 적용합니다. atom debug 모드도 짧은 카운터이며, atom과 무관한 기존 debug 동작은 유지합니다.
sheet만 복원한 CSS 렌더링은 유지합니다. 추출을 이어 갈 때는 같은 generation의 sheet/class map/file map을 함께 복원합니다. 새 빌드에서 카운터를 완전히 비운 뒤 첫 이름이 다시
a가 되는 것은 정상입니다. 변경된 값이 새 빌드마다 반드시 다른 문자열 이름을 얻는다고 주장하지 않습니다.Adapter 지원 경계
2026-10-16 coordinator 결정에 따라 Vite와 Next Turbopack에는 두 번째 예약 구현을 추가하지 않습니다. Vite의 PR B, Next Turbopack의 #752가 해당 연동을 소유합니다.
atomHoist: 0에서도 동적 color/background 변수의--a/--b가 AB/BA에 따라 바뀌는 원본 재현을 보존했습니다. 이는 통과한 테스트로 바꾸지 않았으며 이 PR에서 수정하거나 숨기지 않습니다. coordinator가 기존 소유 범위로 분류하여 #751을 기다리지 않고 게시하도록 결정했습니다 (msg_2ee7000a2bb8).CSS / JS 바이트
#751의 같은 fixture(8 route, 공유 모듈 32개, 모듈당 공통 원자 80개, route당 전용 원자 25개)를 같은 측정 스크립트로 비교했습니다. header와 import-only CSS 파일을 포함하고 파일별 gzip을 합산했습니다. JS/JSX는 추출 후·bundler/minify 전 코드이며 landing 표는 실제 client JS 산출물입니다. 공유 상수 하나가 바뀌는 새 배포 빌드의 CSS 무효화도 비교합니다.
hex ON 대비 CSS raw 20,122 bytes, 추출 JS/JSX raw 146,168 bytes를 줄이고 참조 누락과 residual은 0입니다. 같은 예약 inventory에 대한 역순 추출의 전체 JS/CSS도 같습니다. CSS 요청 수가 줄었다고 주장하지 않습니다.
landing은 config를 바꾸지 않고 양쪽 모두 같은
bun run build(vinext)로 생성한dist/client의.css/.js만 측정했습니다. 최종 Vite 정책은 OFF이므로 이 앱에서 atom 절감이 있다고 주장하지 않습니다.raw 합계는 같고 gzip의 CSS +1 / JS -10 bytes 차이를 feature 효과나 일반적인 성능 개선으로 해석하지 않습니다. 중간의 예약 없는 Vite ON 후보 측정은 최종 표에 사용하지 않았습니다. 최종 #782 prerequisite 통합 후 같은 command로 다시 측정한 값입니다.
새로 생기는 오류
새로 의도한 소스 빌드 오류는 없습니다. Vite/Next Turbopack에서 예약 전 명시적으로 atomHoist 양수를 요청하면 위 한계를 알리는 경고 한 번이 생깁니다. 기존 위치 포함 오류와 reservation의 실제 transform 진단 경계를 보존합니다. #783 선행의 authoritative production prewarm 읽기/추출 실패 전파도 그대로 유지합니다. 새 의존성·스타일링 런타임·큰 stack 설정은 없습니다.
남는 한계
검증
b2ce080d065962e59770be61b3d8d6b84f10018e. maina6ecc125와 fix(plugins): reserve shared counter slots before extraction #782 초기af54ab8c를 실제 두 부모 merge로 순서대로 통합한 뒤, 공지된 최종 fix(plugins): reserve shared counter slots before extraction #782b019767b를 다시 true-merge했습니다. 마지막 두 부모는046b2a94와b019767b이며 watch 수정9f2ad995, fix(next): deliver complete webpack CSS across compilers and cached builds #78342cb0a4e, #781을 포함합니다. 유일한 constructor 충돌은atomHoist = 2와productionPrewarmFiles를 모두 보존했고, 다섯 Next 위임 테스트는 실제 RED 후 선행의 안정된 production CSS 경로/complete set 계약에 맞췄습니다. 모든 독자 snapshot 변경은 0입니다.cargo fmt --all, Rust 1.99 workspace/all-target Clippy-D warnings, 기본 stack workspace test 통과. 새 WASM와 root build 및 landing의 같은 command build 통과.38891331379는 Linux Rust 100.00%(12,698/12,698) 및 Bun 함수·라인 100%였지만, #782에서 이미 조사하던 native webpack watch AB/BA 두 회귀로 publish만 실패했습니다. 나머지 benchmark/landing-next-e2e/vinext-rsc-css-e2e는 통과했습니다. 테스트를 약화하거나 watch 수정을 복제하지 않고 공지된b019767b의 수정·선행을 통합했습니다.2026-10-18 갱신: 갱신된 선행 #782
6d7937b7505c49b021f6b367b32c7364d165a45d를 두 부모 merge commit74238b2d99b09040f3e1ef55480c3d26defeb10f로 병합했고 main3ca6182f포함과 두 부모를 확인했습니다; 충돌libs/sheet/src/lib.rs는 #751의hoisted/고정 atom plan·짧은 counter 이름·전용/공유 bucket·토큰 첫 값·공유 갱신 판정과 main의order/global 파일·선언 순서·레이어·import/font-face 정렬 배치를 모두 유지했습니다; 순서 있는 global owner는 정렬까지 보존하고 atom plan에서 정렬 후 인접한 동일 선언만 제거해 기존 dedup 계약과 red→blue→red cascade를 함께 보존했습니다(기존 유효 회귀 1개 RED 후 그대로 GREEN, 파일/offset 및 3파일 역순 회귀 4개 추가); 충돌sheet__tests__deserialize.snap은 HEAD baseline에서 테스트로 재생성한 유일한.snap.new를 검토해order: 0과layer_orders: {}추가만 수용했고atom_plan: None/hoisted: false는 유지했습니다; 기본 stack/jobs=2/native 6GiB에서 fmt/clippy·Rust 전체(582 CSS/117 WASM/3,943 extractor/225 sheet 및 통합·doctest)·fresh WASM/root·Bun 6,214개/0 fail/함수·라인 100%가 통과했고, 정식 hook도 12GiB/502.2초/peak 4,258,689,024 bytes로 통과했습니다(Windows Rust 98.02% 19,336/19,726은 Linux CI와 구분); 실제 public WASM의 AB/BA 공유a b c·전용a-a a-b및 코드/CSS/map 동일성·residual0·사용하지 않는 scratch CSS 미게시와 ABC/CBAbody{margin:0;color:red;color:blue;color:red}를 확인했고 독립 Oracle gate가 APPROVE/HIGH/차단 없음으로 검토했습니다; 새 build error·dependency·스타일링 runtime·해시/내용 기반 출력 이름은 없고 기존 Vite/Next Turbopack 예약 미지원 경계/경고는 담당 PR 범위 그대로 유지합니다.; 최종 head74238b2d99b09040f3e1ef55480c3d26defeb10f의 CI 39069211577는 5개 job 전체 SUCCESS이고 Linux Rust 100%(13767/13767), Bun 6214 pass/0 fail/함수·라인 100% 및 별도 preload 9 pass/0 fail을 확인했습니다.2026-10-18 W71b 갱신: 최신 main
f16cd190·a26bb579를 포함한 선행 #782의 검증 완료 커밋01d4fd1c를 실제 두 부모 병합으로 반영했습니다(최종513c19bc); WASM ABI의getUnreservedClassSlotCount·reserveClassSlots내보내기 목록과 실제 예약·계수·상태 복구 테스트 3개를 그대로 포함하며 atomHoist의 짧은 counter 이름과 global 선언 순서를 보존했습니다; 최신 stable Rust 1.99.1 기본 스택의 fmt·Clippy·workspace 테스트, 새 WASM·전체 빌드, ABI 16/16, 정규 전체 훅과 실제 AB/BA 및 ABC/CBA 출력 검증 통과, CI39116170220전체 성공(Linux Rust 13859/13859 100%, Bun 6319 통과·0 실패 및 함수/라인 100%); 새로 생기는 오류 없음, 기존 한계 변경 없음.