Skip to content

test: gate packed release compatibility and isolate compiler state - #767

Draft
owjs3901 wants to merge 32 commits into
mainfrom
test/release-compat
Draft

owjs3901 wants to merge 32 commits into
mainfrom
test/release-compat

Conversation

@owjs3901

@owjs3901 owjs3901 commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Refs #683 (W25: INF-21, PLG-26, INF-03, INF-02, INF-05). #746 위에 쌓은 변경이며 기반은 1936fa36입니다. #744와 #746이 먼저 병합되어야 합니다.

요약

  • 일반 WASM artifact에 내부 테스트용 resetStateForTesting()을 추가하고 sheet, resolver, 설정, 네 map, 사용자 shorthand, 반응형 theme registry 및 imported stylesheet cache를 함께 초기화합니다.
  • Rust의 CSS/extractor/binding 상태를 scope guard로 보관·복원하여 중첩 및 unwind 때 수동 cleanup에 의존하지 않습니다. 기존 serial lock은 유지합니다.
  • Bun 테스트의 전후 cleanup과 Next namespace cache reset을 자동화하며 isolated install 테스트에서 process CWD를 바꾸지 않습니다.
  • Bun의 실제 register/setup이 등록한 callback을 실행하고 handwritten plugin의 coverage 제외를 제거합니다. generated pkg/dist의 scoped metric과 실제 ABI/production 검증은 구분합니다.
  • release consumer는 built package를 tarball로 설치한 뒤 공개 plugin API로 production build를 수행하고 Chromium/Firefox/WebKit의 getComputedStyle로 동작을 검증합니다. class나 CSS 파일명을 단언하지 않습니다.

동작

정적 layout/spacing/color, imported styling module, 반응형 규칙, hover, extends theme, 동적 CSS variable을 확인합니다. 같은 길이의 style/theme 편집 및 prop 제거 후 production 재빌드도 확인하며 dev HMR 전체 coverage라고 주장하지 않습니다. Vite의 잘못된 runtime style 입력은 실제 build가 위치 있는 오류로 거부해야 합니다.

빌드와 브라우저는 순차 실행하며 전체 command process tree의 private memory를 1초마다 측정합니다. 6 GiB 또는 10분을 넘으면 process tree를 중단하고 finding으로 기록합니다. 서버는 임시 port를 사용하고 finally에서 닫습니다. CI에는 versioned Cargo/Bun/browser cache와 30분 timeout, JSON 증거 artifact를 추가합니다.

새로 생기는 오류

애플리케이션의 새 build error는 없습니다. 기존 styles.mjs:1:61: css() cannot use window.name at build time 오류가 production 경로에서도 발생함을 검증합니다. watchdog 중단은 테스트 finding이며 compiler fallback이나 styling runtime을 추가하지 않습니다.

남는 한계

  • 승인된 기반에서 Rsbuild per-file CSS는 build 자체가 성공하나 imported styling module의 색상이 빠집니다: 예상 rgb(19, 87, 155), 실제 검정. #755의 공유 CSS/plugin 작업과 함께 해결·재검증해야 하며 우회나 expected failure를 추가하지 않았습니다.
  • standalone Webpack 및 Next Webpack 양 CSS mode에서 extends theme 색상이 빠집니다: 예상 rgb(23, 57, 91), 실제 검정. 실제 emitted CSS에는 선언을 사용하는 규칙은 있으나 theme 변수 선언이 없음을 확인했습니다. 코디네이터에게 전달했으며 fix(plugin-core): align bundler resolution, roots and WASM diagnostics #755/#752에 이미 수정됐다고 주장하지 않습니다.
  • 새 의존성 없이 설치된 Next가 포함한 Webpack 5.98.0 engine으로 standalone compiler API를 실행합니다. Next build pipeline은 호출하지 않고 CJS Devup plugin을 사용합니다. Next package가 standalone default minifier를 제공하지 않는 toolchain finding 때문에 public production 설정 optimization.minimize:false를 명시하며 독립 설치/다른 Webpack 버전 또는 minifier 호환성 검증이라고 주장하지 않습니다.
  • fixture의 실패 때문에 전체 production acceptance/CI green을 아직 주장하지 않습니다. LSP는 미설치 또는 daemon timeout이며 native compiler 검사와 구분합니다.

검증

  • cargo fmt --all, Rust 1.99 workspace all-target clippy: 통과.
  • cargo test --workspace: 2,179 통과, 실패 0, 새 snapshot 없음.
  • guarded WASM/root package build 및 dist entry 검증: 통과.
  • WASM size budget: raw 5,453,877 / 5,479,424 bytes, gzip 1,953,662 / 1,970,176 bytes; glue도 budget 이내.
  • Vite: 양 CSS mode × 초기/편집 재빌드 × 세 브라우저 통과, 실제 negative build error 통과.
  • Next Turbopack: 양 CSS mode × 초기/편집 재빌드 × 세 브라우저 통과.
  • Rsbuild singleCss: 초기/편집 재빌드 × 세 브라우저 통과. per-file 및 Next Webpack의 실패는 위 finding 그대로 유지합니다.
  • 전체 5-target production matrix는 49개 command, 139.94초, 최대 관측 private memory 1,374,527,488 bytes였습니다. 다섯 style 실패를 그대로 보고했으며 watchdog 중단이나 남은 owned browser/server process는 없었습니다.
  • Bun 전체: 5,516 통과, 실패 0, 89 snapshots, 함수·라인 100%. handwritten Bun plugin도 함수·라인 100%입니다. callback/ABI/Next focused는 43 통과, 실패 0입니다.
  • 다섯 atomic commit을 각 exact-tree 상태로 실제 hook 실행 후 생성했습니다. lint의 기존 React18 호환성/명명 경고 11개는 그대로 두었고 새 code warning을 추가하지 않았습니다.
  • Windows native tarpaulin: 97.81%(14,441/14,765). 새 reset/scope support 파일은 각각 100%입니다. 기존 multiline/closure mapping을 포함하는 로컬 수치를 Linux wide-format 100%로 주장하지 않으며 기존 CI fail-under100은 그대로 유지합니다.
  • Head: f01f04cb75b8c2835f2442d5ad6d0a303a5db3e6. 실제 production QA 다섯 행이 실패하므로 draft이며 release-compatible/merge-ready를 주장하지 않습니다.

CI

첫 run 37657655987은 기존 publish·benchmark·landing-next-e2e·vinext-rsc-css-e2e·react-18 모두 SUCCESS입니다. publish는 Linux Rust 100%(10,569/10,569), Bun 5,516/0·100%, preload 회귀, landing 양 mode 및 Codecov/clean checkout/changepack까지 통과했습니다.

새 release job만 compiler process 종료와 /proc/smaps_rollup read 사이의 ESRCH race로 package build에서 실패했습니다. 첫 run이 fixture 다섯 style 실패까지 실행됐다고 주장하지 않습니다. f01f04cb에서 종료된 process의 ENOENT/ESRCH만 0으로 처리하고 live process의 permission error는 그대로 실패시키며 6 GiB cap을 유지합니다. 회귀는 이전 동작에서 3/4(ESRCH 실패), 수정 후 4/4로 검증했고 package-build JSON 증거도 초기 실패부터 업로드합니다. 실제 local guarded package build는 72.85초/1,924,718,592 private bytes/exit0입니다.

최종 head f01f04cb의 run 37664589766은 FAILURE이며 기존 다섯 job은 다시 전부 SUCCESS입니다. publish는 Rust 100%(10,569/10,569), Bun 5,516/0·100%, preload·양 landing mode·Codecov·clean checkout·changepack을 통과했습니다. 새 release-compat job은 sampler 4/4, guarded package build 157.48초/1,911,885,824 bytes/exit0, browser 설치 및 증거 업로드까지 성공했으며 실제 consumer 단계에서 앞서 보고한 style 실패 다섯 개만 재현했습니다. 다섯 assertion을 skip/expected failure로 바꾸거나 plugin 내부를 수정하지 않습니다.

CI의 consumer matrix는 49 command/104.01초/최대 private 1,315,094,528 bytes, job 전체 6분13초로 30분 timeout 이내였습니다. watchdog memory stop이나 남은 server/browser는 없었습니다. 업로드된 release-package-build.json과 release-results.json에서 finding·실제 command output·시간·memory를 확인할 수 있습니다. #755의 shared CSS/plugin 수정 및 관련 #752 통합 이후 이 동일 fixture를 다시 green으로 검증해야 하므로 merge-ready가 아닙니다.

owjs3901 and others added 30 commits October 1, 2026 21:16
…rations

css(a, b) composing classes whose styles the build knows, bound to css() in the file or exported by another module, merges their atoms per property, selector, breakpoint and layer, conditions included, instead of joining classes whose winner the stylesheet order picked. vanilla-extract style([...]) passes each composed style as its own argument, keeping a style composed again later.

Refs #688

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #688

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…asurable

Refs #688

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…JSX spreads win

Refs #688

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…led order and JSX element className

Refs #688

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #689

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…uate shouldForwardProp at build time

Refs #689

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…ring

Refs #689

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…APIs

Refs #691

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #691

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #691

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #691

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #691

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #691

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…rate the benchmark tables from one result

Refs #683

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…s against

Refs #683

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…ize budget

Refs #683

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…e first CI run of the new policy

Refs #683

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Resolve .github/workflows/publish.yml by retaining both React 18 and main vinext/RSC CSS acceptance jobs as independent siblings. Keep every main job and step byte-equivalent after YAML parsing, preserve #700 published versions with React peer/dev dependency intent, and regenerate lockfile workspace metadata through bun install.

Refs #691, #683

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge #731 head 5644a8a containing main a935315. Resolve .github/workflows/publish.yml by keeping the complete main vinext job and publish validation comment, extending every action SHA/toolchain/cache pin plus timeout30/read-only permissions to vinext. Keep React18 and both CSS modes, original release/deploy needs, #700 published versions and the clean-pkg build script.

Refs #683

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge #744 head 7a81003 containing main a935315. No new manual conflict files: .github/workflows/publish.yml cleanly inherits the hardened vinext/React18 job union and read-only validation with action SHA pins/timeouts. Preserve the calibrated benchmark manifest/baseline/results, regression rules, SemanticBuilder bench and WASM budgets byte-for-byte, plus all main published versions and acceptance steps.

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 #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>
@codecov

codecov Bot commented Oct 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Files with missing lines Coverage Δ
bindings/devup-ui-wasm/src/lib.rs 100.00% <100.00%> (ø)
bindings/devup-ui-wasm/src/state.rs 100.00% <100.00%> (ø)
bindings/devup-ui-wasm/src/state/tests.rs 100.00% <100.00%> (ø)
bun.setup.ts 100.00% <100.00%> (ø)
libs/css/src/atom_hoist.rs 100.00% <ø> (ø)
libs/css/src/class_map.rs 100.00% <ø> (ø)
libs/css/src/debug.rs 100.00% <ø> (ø)
libs/css/src/file_map.rs 100.00% <ø> (ø)
libs/css/src/file_routes.rs 100.00% <ø> (ø)
libs/css/src/lib.rs 100.00% <100.00%> (ø)
... and 26 more

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Refs #683

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant