Repository navigation
Conversation
…nd StyleX imports The generated stylesheet always resolved to an empty module, so Bun.build dropped every style, and the pre-parse gate only accepted import declarations of @devup-ui/react, so files using the alias packages, StyleX, subpaths or re-exports ran the runtime stubs. DevupUI() now serves the complete sheet to the CSS loader after defer(), and the gate reads the real imports with Bun.Transpiler.scanImports. Refs #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
… built stylesheets A stylesheet module is built on its first import, and the shared base is read from disk past the plugin, so styles extracted later were missing from webpack and Rsbuild output; Rsbuild also served a module-wide string kept only when it grew. The files the entries reach are now extracted before the build, the base on disk is kept current, and a compilation whose stylesheets changed is run once more, writing only the complete result. Rsbuild serves each stylesheet from the current sheet. Refs #686 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…into feat/deterministic-numbering # Conflicts: # packages/next-plugin/src/loader.ts
…inistic-numbering
…ing order 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>
… forwarding alone Refs #694 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>
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>
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>
…tion Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…e order Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Preserve whole styled argument creation-time evaluation and qualify the inherited naming/extractor coverage union, including sticky getCss proof. Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…l Linux branches Cover final Linux semantic branches and reject unsupported css/styled argument spreads without executing iterators. Preserve optional producer coordinates and source-order literal-array composition. The approved invalid-object-to-literal-array fixture correction changes whole-source identity in an unnumbered file (decisions 5 and 17): only two g classes and two g variables change in one reviewed snapshot, with entire-body forward/inverse proof; styles and JavaScript evaluation are identical. Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Merge main history while preserving this PR implementation. No manual conflict resolutions.
Merge main history while preserving this PR implementation. No manual conflict resolutions.
…tion Refs #694 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694, #695, #685 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>
…estone Refs #694, #695, #685 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, #695, #685 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Reconcile counter_kernel::rejection_tests::unnumbered_site_is_rejected_when_genuine_parent_is_attached_outside_fixture with W42 type-graph preflight before SiteScope; preserve all assertions and prove no preflight class reservations. Refs #694, #695, #685 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694, #695, #685 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, #695, #685 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #694, #695, #685 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>
Preserve the existing wrapper branch in capture_styles and use equivalent Option extend at both visitors; qualify genuine CSS parser descriptors and presence-sensitive API fallbacks without claiming public visitor reachability. Refs #694, #695, #685 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
|
Merge exactly c021e2b from #764, keeping the canonical counter kernel dormant. Resolve the sheet dynamic insertion conflict by preserving W42 dy.effective_value for var/calc conversion and one important suffix, while retaining the incoming raw insert_property owned fields, placement and reset bookkeeping. Preserve all existing assertions and snapshots. Refs #694, #695, #685 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>
Merge exactly #764 U2 7cdd0b3 with dormant strict cache 6 export and admission. Retain W42 dynamic effective_value conversion, conditional declaration classes and source-faithful evaluation. Preserve all existing assertions and snapshots. Refs #694, #695, #685 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>
Merge exactly #764 U3 4ef37bc with dormant binding companion and session restore plus coverage repair. Retain W42 dynamic effective_value conversion, conditional declaration classes and source-faithful evaluation. Preserve all existing assertions and snapshots. Refs #694, #695, #685 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>
Merge exactly #764 41018b9 with dormant compiler receipts and operand-origin boundaries. Preserve W42 conversion, presence and source-faithful capture in the three conflict resolutions. Adapt seven dormant IR expectations with raw producer, creation ancestry, exact receipt, runtime and rollback proofs; isolate two whole native fixtures under reentrant admission without changing production or snapshots. Refs #694, #695, #685 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Exercise the real Counter parser and sealed consumer with an early StyleX parameter followed by an unrelated static css() demand. Preserve dynamic-only receipt ownership, raw source/site and exact generated JavaScript, covering the canonical after-operand comparison without production changes. Isolate the approved operand-diagnostics native fixture with a reentrant admission lease while retaining every assertion. Refs #694, #695, #685 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, #695, #685. #764 위에 쌓은 PR이며 #764를 먼저 병합해야 합니다. CI 실행을 위해 GitHub base는 main이고, #764가 병합되기 전까지 diff에는 #764의 변경도 포함됩니다. 이 PR은 초안으로 유지하며 #764의 명시적인 준비 완료 지시 전에는 ready로 바꾸지 않습니다.
요약
a && b에서a = 0이면 이제p={0}과 똑같이 padding 0을 적용합니다. 이전의 "falsy controller는 무조건 스타일 없음" 관례를 JavaScript의 실제 반환값 의미로 바꾸는 동작 변경입니다.p={4}는 16px,w={100}은 400px, 시간 속성의 200은 200ms, opacity의 0.5는 0.5입니다.dcc7d906병합에서 동적 identity가 기존 lowering 정보를 놓치지 않도록conversion과presence를Identity/CounterIdentity및 독립 reference의 마지막 필드로 추가합니다. Eq/Hash/Ord는 조건 없이 derived 필드로 처리하며, 기존 trace·순서·set assertion과 스냅샷은 그대로 유지합니다. metadata만 다른 세 선언은 분리되고 동일 선언의 복제본은 공유하는 회귀를 두 정책에서 확인합니다.71ca61bcfixture를 W42의 source-type graph preflight에 맞춥니다. 타입 그래프 resolver는SiteScope전에 호출되므로 진짜 Counter parent를 실제 scopedat_role까지 보존합니다. 기존 site·policy·typed-error·allocator assertion은 그대로 두고, unsited preflight가 이름 슬롯을 할당하지 않고 candidate가 output으로 전달되지 않는 추가 관찰을 확인합니다. production scope 타이밍이나 resolver 호출 횟수 계약은 변경하지 않습니다.counter_fixture_rejection_tests::unnumbered_site_rejects_when_public_at_role_runs_in_ordinary_resolver_scope와cfbd5e06의counter_kernel::rejection_tests::unnumbered_site_is_rejected_when_genuine_parent_is_attached_outside_fixture두 테스트에만 적용됩니다. 모든 기존 assertion은 그대로 유지합니다.Evaluatedfallback을assignment_owner::capture_styles로 그대로 분리합니다. 두 visitor의Vec::extend(Option)은 기존 optional push와 동등한 관용구이며, composition·capture 순서·outer guard·writeback을 바꾸지 않습니다. 모든 기존 assertion과 스냅샷을 유지합니다.c021e2b3와의 sheet 삽입 충돌은 승인된 그대로 W42의dy.effective_value()와 #764의 rawinsert_property·ownedStyleSheetProperty필드를 함께 유지하여 해결합니다.var/calc단위 변환과 단 한 번의!important, placement·own-element reset bookkeeping을 유지하며 생성된 선언을 authored literal evidence로 오인하지 않습니다. canonical counter 상태는 여전히 dormant이고 일반 Current 경로는 활성화하지 않습니다.40e1aef3와 coverage 보완7cdd0b3c를 지정된 그대로 true two-parent merge로 반영합니다. strict cache 6의 Rust export/admission API는 dormant 상태이며 일반 WASM cache 4·Current naming 경로는 바꾸지 않습니다. 이번 병합에는 source conflict·추가 preflight fixture 조정·기존 assertion 또는 스냅샷 변경이 없습니다.f3c2d33a와 coverage 보완4ef37bc3를 정확한 true two-parent merge로 반영합니다. Rust-only cache 6 companion/session restore·owned LiveCheckpoint·prospective Output seam은 dormant이며 public WASM은 cache 4·Current를 유지합니다. 기존 assertion·스냅샷이나 추가 fixture 조정 없이 검증했습니다.41018b9c9ee192b91d5078a42438ba70248cb0e7까지 다섯 커밋(f6b6aa35,6a646370,970247a9,e8e0b18a,41018b9c)을 true two-parent merge로 반영합니다. dormant Counter compiler receipt·operand-origin 분리와 canonical module include를 유지하며, public Current·cache 4는 활성화 변경 없이 그대로입니다.assignment_capture의 새 creation projection 분리에는 W42 conversion tuple·단회 생성 시점 평가를 이어 붙이고,assignment_value는 W42 normalization·raw/presence capture와 Counter scope/rewrite journal을 함께 유지합니다.gen_class_name은 원본 operand의 Counter receipt/order 이름을 얻은 뒤 captured raw 값의 presence 조건을 적용합니다. inline variable도 원본 invocation/scope association과 conversion을 유지하며 Current48 전체 출력으로 ordinary 경로 불변성을 확인합니다.동작
1. Falsy Controller
JSX, 지원되는
jsx/jsxsfactory,css()에서 같은 의미를 적용합니다. controller와 선택된 오른쪽 값은 원본의 순서 및 횟수대로 평가하며, falsy일 때 오른쪽은 실행하지 않습니다.0,-0false,null,undefined,'',NaN2. 동적 Scaled 값
빌드가 source AST와 로컬/모듈의 명시적 annotation으로 숫자를 증명하면 CSS에
calc(var(--site) * 4px)를 쓰고 변수에는 raw number를 둡니다. 시간 속성은1ms, 단위 없는 속성은 원래 값을 유지합니다. TypeScript checker나 새로운 의존성은 없습니다.숫자가 될 수 없는 문자열(
auto, 단위가 붙는 문자열/union/template)은 그대로 전달합니다. 일반string은'4'일 수도 있으므로 static 경로와 공유하는 float grammar를 검사하는 인라인 변환을 적용합니다.string | number,any,unknown, 증명되지 않는 값은 number-or-numeric-string 변환을 적용합니다. 공백을 임의 trim하거나 JSNumber()의 hex/coercion 규칙으로 넓히지 않습니다.p={n:number}, n=4padding:var(--site)/ 4padding:calc(var(--site) * 4px)/ 4padding:var(--site)/ np={n:string}, n='4'padding:var(--site)/ '4'padding:var(--site)/ '16px'p={n}, n=4 또는 '4'padding:var(--site)/ npadding:var(--site)/ '16px'p={[n,null,n*2]}_hover={{p:n}}opacity={n}, n=0.5transitionDuration={n}, n=200calc(... * 1ms)또는 '200ms'숫자의 정적 CSS가 해당 속성에 유효하지 않으면 리터럴 동등성의 예외입니다. 예를 들어 앞선
padding: 7px규칙이 있을 때 정적p={-0.5}의padding: -2px는 파싱 시 버려져 7px이 남지만, 동적 변수 경로는 computed 단계에서 0px이 됩니다. 숫자로 증명된calc()경로는 음수 width를 0, overflow를 엔진 최댓값으로 clamp하고, invalid한 치환 값은 앞선 선언 대신 속성의 initial/inherited 값으로 계산됩니다. 음수 margin처럼 유효한 값은 그대로 동등하며, 숫자 유효성 클래스 정책이나 런타임 유효성 검사는 추가하지 않습니다.custom shorthand가 서로 다른 단위를 소비하면 canonical target 순서로 그룹을 미리 계획합니다. 한 그룹만 있으면 기존 sparse role 이름을 그대로 유지하고, 여러 그룹이면
group * 256 + responsiveLevel의 disjoint 추가 역할을 사용합니다. 역할은 타입 증명이나 resolver 결과와 무관합니다.mixedScale: ['padding','opacity','animation-duration'], x=0.5는 각각 2px / 0.5 / 0.5ms이며 값은 한 번만 평가됩니다. #764의 D9 파일 번호, received-source offset, 개행/BOM 정규화와 own-element reset 계약은 유지합니다.3. Absent 값의 Conditional Class
main과 published WASM 1.0.83에서
<Box className="base" p={null}/>는 dynamic class를 유지했습니다. React가 변수를 직렬화하지 않으면padding:var(--site)는 computed-value 단계에서 invalid가 되어,.base{padding:11px}가 있어도 0px을 만들었습니다. 이번 변경은 같은 raw capture를 클래스 조건과 inline variable이 공유하여 dynamic class를 제외합니다. 결과는 실제<Box className="base"/>의 11px입니다.ordinary prop에서는 null, undefined, 두 boolean, exact empty string, numeric NaN/Infinity를 스타일 없음으로 처리하고 0/-0은 보존합니다. 문자열 'NaN'/'Infinity'나 공백 문자열을 새로운 garbage filter로 제외하지 않습니다. custom-property의 empty string은 ordinary empty와 구분합니다. Responsive 슬롯, selector, 논리 조건과 styled object의 creation-time capture에도 같은 정책을 적용합니다. absent 결과라도 원본의 call/getter/throw는 삭제하거나 render 시점으로 이동하지 않습니다.
사용자 결정 A에 따라 absent 요소에는 해당 사이트의 dynamic class와 own-element reset이 모두 없습니다. 따라서 부모의 generated custom property는 상속될 수 있지만 해당 요소의 자기 선언은 이를 읽지 않아 실제 prop 생략 요소와 같은 computed style을 유지합니다. 이는 #764의 unconditional reset 계약을 absent 요소에만 한정해 정정합니다. class가 적용되는 present 요소의 reset, 서로 다른 사이트 중첩 및 pseudo-element/descendant의 reset 위치는 그대로 유지합니다. 부모의
selectors={{ '& .child': { p: pad } }}규칙은 같은 사이트의 absent 중첩 요소 안에 있는.child에도 일반 정적 CSS와 동일하게 도달하는 것이 의도한 결과입니다. 기존 responsive/hover absent-reset 검증은 absent site class 없음·실제 생략 prop의 padding·상속된 변수 값을 함께 확인하도록 강화하며, present 값 assertion은 유지합니다.런타임 예외
사용자가 승인한 범위는 (1) ambiguous scaled 값 및 numeric-capable string의 인라인 단위 변환, (2) captured raw 값에 따른 선언 클래스 선택입니다. 둘 다 기존 source-faithful lowering 안에서 원본 값을 한 번 평가하며 import/helper/state/effect/provider를 생성하지 않습니다. 일반 CSS-text interpolation과 aggregate StyleX namespace에는 ordinary prop presence 정책을 자동 확대하지 않습니다.
새로 생기는 오류
의도한 새 사용자 빌드 오류는 없습니다. 기존 오류의 위치/코드/이유 출력과 static-only API 제한은 유지합니다. 같은 received-source offset/role에 서로 다른 assignment를 넣는 내부 충돌 검사는 #764의 기존 오류 계약입니다.
남는 한계
&&및 no-style primitive입니다. 숫자의 invalid CSS와 overflow는 위의 브라우저 규칙을 따릅니다. BigInt(0n 포함), 임의 객체/함수/symbol/boxed primitive는 지원하는 스타일 입력이 아닙니다.jsxDEV/react/jsx-dev-runtime/React.createElement는 다릅니다. 이 PR은 현재 visitor가 지원하지 않는 API를 새로 지원하지 않습니다.extend변경은 동등한 관용구일 뿐 도달 가능성 증명이 아닙니다. 새 CSS-parser descriptor 및 ordinary presence/array 회귀는 genuine helper/API seam 검증이며 공개 visitor regression으로 집계하지 않습니다.검증
최종 HEAD는
50ea04dc4edca9c328624ba2fe29db9f881de028이며 #764 base41018b9c까지 병합한 뒤 테스트 전용 후속 커밋으로 push했습니다. 최신 CI38249181268는 publish·landing-next-e2e·vinext-rsc-css-e2e·benchmark 네 job 모두 success입니다. publish 원본 로그에서 실제 Linux Rust15932/15932 = 100.00%, 빈 미커버 목록과 Bun 5,594건·함수/라인 100%를 확인했습니다. 직전f3b3a8db의 99.99% 한 줄 gap은 아래 실제 parser 회귀로 닫혔으며, PR은 명시적인 #764 준비 완료 지시 전까지 draft로 유지합니다.실제 public WASM을 새로 빌드한 W42h 트리에서 identity·type-graph preflight·승인된 dormant fixture 조정과 아래 실제 association 회귀까지 확인했습니다. 논리적 base는 지정된 #764
41018b9c9ee192b91d5078a42438ba70248cb0e7이며 Counter milestone을 활성화하지 않습니다.git log 41018b9c..HEAD로 확인한 이 PR 고유 커밋은67809a08,07f49e34,39cbe810,abcc61a9,fb655bbe,2efb47c5,e86deabf,02e8033e,268dbdf7,90d44885,e1d852be,b4eff700,bfecec9a, 이번 지정 병합f3b3a8db, 테스트 전용 coverage 후속50ea04dc입니다. GitHub diff의 #764 부분과 이 15개 고유 커밋을 구분합니다.첫 push는
abcc61a99a869ae453d7a3fd49bbaa65a432486d입니다. 실제 merge 부모는 정확히39cbe810과dcc7d906이며, CI unset·우회 없는 실제 pre-commit 훅이 lint/native 4,633건/Bun 5,594건을 다시 실행해 통과했습니다. Job Object kernel peak는 3,966,754,816 bytes로 12GB 제한 이내였습니다. 일반 포맷 Windows 훅 coverage20078/20431 = 98.27%는 Linux 100% 증거가 아닙니다. 이 draft의 Linux CI는 생성 후 확인합니다.두 번째 push는
fb655bbeeb26afcae86a884d2226ec93b2581cab이며 정확한 부모는abcc61a9와71ca61bc입니다. 승인된 fixture 조정을 포함한 실제 훅은 native 4,659건/Bun 5,594건/100%/lint를 통과했고, kernel peak 3,867,639,808 bytes로 12GB 이내였습니다. 첫 Linux CI37937097870은 publish coverage14059/14067 = 99.94%의 8라인과 Next의 기존 absent-reset assertion 8건 때문에 실패했습니다. benchmark와 vinext RSC는 통과했으며, 실패를 outage나 green으로 표시하지 않습니다. 후속 사용자 결정과 의미 있는 회귀로 해결할 예정입니다.세 번째 push는
2efb47c5308d9530656399f8c282c0195d6882b1이며 정확한 부모는fb655bbe와cfbd5e06입니다. 실제 훅은 native 4,727건/Bun 5,594건/100%/lint를 통과했고 kernel peak는 4,127,842,304 bytes였습니다. workspace 검증에는 새 sheet doctest 10건도 모두 포함합니다. 첫 doctest 동시 컴파일은 6GB watchdog을 초과해 중단됐으므로 green으로 집계하지 않습니다. 동일 전체 Rust 게이트를 jobs 2와--test-threads=2로 재실행해 kernel peak 2,906,767,360 bytes, 중단 없이 통과했습니다.사용자 결정 A 단위는
e86deabf96b5a59374a6b795298b9de4a72e8283로 push했습니다. production 변경 없이 강화된 테스트와 docs 한 문장만 포함하며, 실제 Chromium 44건·CI unset 실제 훅 native 4,727건/Bun 5,594건/100%/lint가 통과했습니다. 훅 kernel peak 4,031,549,440 bytes로 12GB 이내입니다.37972532158의 실패는 기존 absent-reset expectation과 같은 Linux gap 8라인(14503/14511 = 99.94%)이며, 이 단위 이후에도 커버리지 보완은 남아 있습니다.37975216323에서 Next e2e·vinext RSC·benchmark는 모두 통과하여 사용자 결정 A의 실제 Next 빌드 검증도 green입니다. publish는 동일한 coverage 8라인 때문에 실패했습니다. 이후 평가 payload 회귀 5건(02e8033e)과 source proof 회귀 7건(268dbdf7)을 별도 exact-tree 실제 훅으로 push했습니다. 실제 getter 한 번 평가·raw/class/inline 변환과 parser가 만든 receiver type name·cooked 값 없는 tagged template·primitive/object intersection을 확인합니다. receiver/template는 명시적인 helper/API seam 검증이며 공개 adapter의 도달 가능성이라고 과장하지 않습니다. 두 훅은 각각 native 4,732/4,739건과 Bun 5,594건/100%/lint를 통과했습니다. W42d 종료 시에는 scalar 함수 분리안이 승인 대기였으나, W42e에서 그대로 승인되어 위의 behavior-preserving seam과 genuine CSS-parser/API 회귀 15건을 적용했습니다.W42d의 HEAD
268dbdf7f6c45009f12dca4e8a434795e7b33780에서 CI37987873005는 Next e2e·vinext RSC·benchmark success, publish만 Linux Rust coverage14512/14516 = 99.97%로 실패했습니다. 남은 정확한 4라인은 CI-wide format의extract_style_from_expression.rs:182-183,visit.rs:1304,1677이며, native 테스트·스냅샷 실패나 Codecov outage가 아닙니다. W42e 후속 push의 실제 Linux 결과로만 해결 여부를 판단하며, 확인 전에는 100%/전체 CI green으로 표시하지 않습니다. #764 준비 완료 지시 전까지 draft는 유지합니다.승인된 scalar seam 단위는
90d44885c322107651376f16243b8645c7d0af97로 push했습니다(부모268dbdf7). CSS parser가 실제로 만든 presence-free Dynamic과 원본 interpolation AST를 사용해 direct scalar·whole conditional·array fallback을 검증하고, 실제 ordinary extraction의 presence·변환·raw capture·getter 순서와 대비합니다. 새 테스트 15건은 작은 두 모듈로 분리했으며 기존 assertion과 스냅샷은 그대로입니다. 최종 fmt/Rust 1.99 clippy/native 4,754건 및 sheet doctest 10건, 새 WASM/root build, Bun 5,594건/100%/lint, 3엔진 3,816 비교·finite 576행, client 120 assertion/126관찰 및 Chromium 결정 A 44건이 모두 통과했습니다. CI unset·우회 없는 실제 훅은 같은 전체 파일 트리를 다시 통과했으며 Job Object kernel peak 4,158,337,024 bytes로 12GB 이내입니다. 일반 Windows 훅 coverage20810/21177 = 98.27%는 Linux 100% 증거로 사용하지 않습니다.scalar 단위의 CI
38008915697는 네 job 모두 success이며 Linux Rust coverage14533/14533 = 100.00%입니다. 그 후 지정된 U1c021e2b3를 true two-parent mergee1d852bea03cde80c8f4e8bd10307750d5406dc7로 push했습니다(정확한 부모90d44885,c021e2b3). 위 sheet 충돌 해소 외에는 추가 fixture/assertion/snapshot 변경 없이 native 4,799건·doctest 10건과 모든 위 feature/browser 게이트가 통과했습니다. 기존 important full-pipeline/정확한 replay 회귀를 유지하고, 새 public WASM의 background·padding을 두 CSS 모드에서 확인하여!important가 각각 정확히 한 번임을 검증했습니다. U1의 단 한 번의 CI unset 실제 훅은 native 4,799건/Bun 5,594건/100%/lint를 통과했으며 kernel peak는 4,023,951,360 bytes였습니다. 일반 Windows coverage21045/21401 = 98.34%는 Linux 100%로 표시하지 않습니다. 병합 HEAD의 CI38011596726에서 실제 Linux14660/14660 = 100.00%와 네 job success를 확인했으며 남은 coverage gap은 없습니다.지정된 U2의 true two-parent merge는
b4eff700f48a4af90427afb4897d2d3ce2d48676이며 정확한 부모는e1d852bea03cde80c8f4e8bd10307750d5406dc7와7cdd0b3ca6fb5e92f2451f2076b3f73728b2a0e0입니다. 34개 incoming whole-file의 qualified tree는b5f72d133110034b6f6f22561e6823ba3d94e41b이며 conflict·fixture/assertion/snapshot 수정 없이 native 4,986건·sheet doctest 15건, Rust 1.99 clippy/fmt, fresh public WASM/root build, Bun 5,594건/100%/lint 및 위 실제 browser 게이트를 모두 다시 통과했습니다. 단 한 번의 CI unset·우회 없는 실제 pre-commit 훅도 동일 트리의 lint/native/Bun을 통과했고, Job Object kernel peak는 4,048,093,184 bytes로 12GB 이내이며 이번 W42f에는 새 memory cap stop이 없습니다. 일반 Windows 훅 coverage21782/22148 = 98.35%는 Linux 100%로 표시하지 않으며 새 HEAD의 CI38022288140에서 실제 Linux15158/15158 = 100.00%와 네 job success를 별도로 확인했습니다. site bytes도 다시 측정하여 표의 값이 동일함을 확인했습니다.지정된 U3 병합
bfecec9a7cd61a9a1ffb7cfd328caa88073f7892의 정확한 부모는b4eff700f48a4af90427afb4897d2d3ce2d48676와4ef37bc3629c0df59143f8474e5efb6aa80e4428입니다. 22개 incoming whole-file의 qualified tree는9cf08db1211f2e21b203ee83151ad2d12afdeb80이며 source conflict·fixture 조정·기존 assertion/snapshot 수정 없이 native 5,088건·sheet doctest 19건과 위 모든 feature/browser 게이트를 통과했습니다. 단 한 번의 CI unset·우회 없는 실제 pre-commit 훅은 동일 트리의 lint/native/Bun을 통과했고, Job Object private peak 3,758,034,944 bytes·kernel peak 3,971,461,120 bytes로 12GB 이내였습니다. 일반 Windows coverage21945/22297 = 98.42%는 Linux 100% 증거가 아니며 새 HEAD의 CI38036777104에서 실제 Linux15293/15293 = 100.00%와 네 job success를 별도로 확인했습니다. W42g에는 새 cap stop이 없고 site bytes는 표와 동일합니다.이번 지정 병합
f3b3a8db6ee075f8157250764dd31543558a7b16의 정확한 부모는bfecec9a7cd61a9a1ffb7cfd328caa88073f7892와41018b9c9ee192b91d5078a42438ba70248cb0e7입니다. 29개 whole-file의 qualified tree는b4bb3f045b5b6ed3bf7900885ae218133ebd1edb입니다. 처음 native 7건이 실패했을 때 diff를 전달하고 중단했으며, 아래 테스트 전용 조정만 명시적으로 승인받았습니다. 이후 production 수정이나 스냅샷 변경 없이 전체 native 5,128건·doctest 19건과 모든 로컬 게이트가 통과했습니다. 단 한 번의 CI unset 실제 훅도 이 정확한 트리에서 native/Bun/100%/lint를 통과했고 private peak 3,826,954,240 bytes·kernel peak 4,210,982,912 bytes로 12GB 이내였습니다. Windows coverage22627/22985 = 98.44%는 Linux 100%가 아니며 실제 Linux CI38240919795의 한 줄 gap은 위와 같이 별도 보완합니다.승인된 Dormant 테스트 7건 조정
no_site_variable_uses_actual_acquired_receipts_or_rejects_ambiguitycase 2·3conversion.inline(raw)이므로 raw identifier 기대값만 변경합니다. 원본 producer identifier·variable 이름·실제 receipt linkage·ambiguity 거부·consumer·정확한 rollback은 유지하고 추가 검증합니다.styled_none_reuses_creation_context_and_reads_once_before_two_renders__devupStyled대신 scoped__devupValue를 공유합니다.state.size원본·site·creation/leaf ancestry·invocation·route·sole receipt를 검증하며 실제[1,1,true]는 그대로입니다.sealing_rejects_a_real_variable_when_its_finalized_association_is_lostparser_class_and_inline_projections_produce_onceparser_rejects_configuration_corruption_when_projection_demands_a_namecase 1abandoned_retry_restores_maps_and_receipts_before_clean_continuation후속 production 변경은 없습니다. metadata-coarse
compiler_request::same및 raw Counter scaled producer/replay는 activation 전 #764가 맡아 보완할 사항이며, 코디네이터가 전달했습니다. 현재 public Current·cache 4의 성공 검증과 향후 Counter readiness를 혼동하지 않습니다.Current48은 지정 runner의 하드코딩된 root 한 줄만 승인받아
process.cwd()로 변경한 개인 복사본입니다.bfecec9a를 Git archive로 별도 export하여 fresh WASM/root 빌드로 만든 #772 기준과 새 병합 트리를 비교했습니다. seeded/비seeded·canonical collapse·ordinary/singleCss/atomHoist·debug·prefix 조합의 48행 모두 JS·map·CSS·sheet/class/file cache가 byte-identical입니다. #764의 기존 baseline을 재사용하지 않았고 site-byte 표도 다시 측정하여 동일함을 확인했습니다.Coverage 후속 커밋
50ea04dc4edca9c328624ba2fe29db9f881de028은 부모f3b3a8db인 일반 테스트 전용 커밋이며 tree는601b267fca67c70f27f7ffb5ee2655124f44d939입니다.compiler_associations는 canonicalinclude!(concat!(...))소스이므로 CI의 wide cargo fmt가 이 파일을 직접 변환하지 않으며, gap 214는 원래 소스의 after-operand 비교입니다.새
early_stylex_variable_keeps_its_receipt_when_unrelated_css_demands_a_name는 실제 Counter parser·sealed consumer에서 StyleX parameter의 early 변수 등록 뒤 무관한 staticcss()요청을 처리합니다. 동일 invocation·root scope에서 before/after 모두 불일치하는 실제 요청이 있으며, 변수에는 dynamic receipt만 남고 static receipt는 섞이지 않는지 검증합니다. 원본 identifier·D9 site·정확한 emission/operand/naming linkage와 실제 JS의 class·variable key·red값까지 확인합니다. 임의 journal/frame/producer를 만들어 라인을 건드리는 테스트가 아니며, production 변경·line exclusion은 없습니다.후속 전체 테스트에서
operand_diagnostics_keep_location_when_real_parser_operands_are_transport_errors의 전후 map 비교가 같은 비직렬call-proof.css.tswriter와 간섭한 것을 발견해 다시 중단·보고했습니다. 명시적으로 승인받아 이 세 번째 테스트의 전체 narrative에 같은 reentrant admission lease만 적용했습니다. 기존 6개 error/location/transport 및 distinctness·정확한 rollback assertion은 모두 유지합니다. 기존 두 lease와 함께 #764에 전달했으며, 추가로 동일 누수 때문에 조정한 다른 테스트는 없습니다.이 후속 트리에서 fmt/Rust 1.99 clippy/native 5,129건·doctest 19건, fresh WASM/root, Bun 5,594/100%/lint와 위 Current48·모든 browser/client/finite/결정 A/important/byte 게이트를 다시 통과했습니다. 이 일반 커밋의 단 한 번의 CI unset 실제 12GB 훅도 같은 tree를 통과했고 private peak 3,805,933,568 bytes·kernel peak 4,097,294,336 bytes, 중단 없음입니다. Windows
22631/22985 = 98.46%를 Linux 100%로 사용하지 않았고, 최신38249181268publish job114810727940의 실제 Linux15932/15932 = 100.00%와 네 job success를 별도로 확인했습니다. 따라서 W42h에서 훅은 지정 병합 1회와 명시된 후속 커밋 1회이며, 같은 커밋의 재시도나 우회는 없습니다.-D warnings50ea04dcCI38249181268:15932/15932 = 100.00%, uncovered line 없음, 네 job successnull -> 4 -> undefined -> false -> '' -> 4 -> null, 6 surface × 3엔진, 126 관찰 중 120 assertion 통과bfecec9afresh-build baseline과 48행 전체 byte-identicalclient 검증의 active numeric color 6관찰은 assertion 대상이 아니며, 이를 통과한 active-color 검증이라고 집계하지 않습니다. 숫자와 숫자 문자열, 고정 단위 문자열, 모든 9개 compile-time component, responsive·selector·jsx factory·
css()의 falsy 0 및 모든 ordinary no-style primitive를 포함했습니다. mixedScale의 실제 computed 값은 padding2px, opacity0.5, animation duration0.0005s입니다.Windows의 CI-wide-format Rust tarpaulin은 병합 전 트리에서
12878/12905 = 99.7908%이고, 이미 실행된 일부 Windows line mapping도 zero-hit으로 남았습니다. 이를 100%라고 주장하지 않습니다. 코디네이터 승인 절차대로 실제 hook을 CI unset 상태에서 실행하고, push 후 Linux CI의--fail-under 100을 최종 권위로 확인합니다. LSP는 Rust daemon timeout 및 설치되지 않은 TS/biome 때문에 clean 결과를 얻지 못했으며, 위 compiler·lint·실행 결과와 구분합니다.실제 Proven-Number Output
다음은 byte fixture의 실제 WASM 출력이며 이름을 짧게 바꾸거나 생략하지 않았습니다.
n은 한 번 읽고 같은 captured raw 값을 class 및 variable이 공유합니다.사이트별 Bytes
UTF-8 emitted compiler JSX/TS source와 CSS를 각각 gzip level 9로 측정했습니다. minified production bundle이나 전체 사이트의 압축률이 아닙니다. before는 보존한 numeric-only WIP artifact이며 clean #764 baseline이나 absent-only 비용이 아닙니다. 특히 before의 proven-number CSS는 var였으므로 calc로 변경된 CSS 증가도 포함합니다. 현재 absolute 크기와 이 두 정확한 artifact 사이의 delta만 해석해야 합니다.
빌드·테스트는
CARGO_BUILD_JOBS=2, 하나의 실행 슬롯으로 진행했습니다. Git/sh/MSYS descendants를 kernel Job Object에 포함하는 watchdog으로 merge hook과 이후 명령을 제한하고, 1초 private-memory 합계와 kernel PeakJobMemoryUsed를 별도로 기록합니다. fixture 6GB / real app 및 hook 12GB 제한을 지킵니다. 위에 기록한 doctest 동시 컴파일의 실제 cap stop 1건 외에는 중단 없으며, 실패 명령은 통과 검증으로 대체 집계하지 않습니다.