Repository navigation
ci: fail the benchmark job on a Devup UI regression and keep a WASM size budget - #746
Merged
Merged
Conversation
…ize budget Refs #683 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.
🚀 New features to boost your workflow:
|
…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>
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>
Main 11790be intentionally emits complete Tailwind v4 font line-height declarations and property registrations, so CI 37758611477 produced 1491 CSS bytes for tailwind-turbo-devup-ui against the former 530-byte baseline. Follow the existing intentional-growth policy using that actual 18-target, three-sample artifact: append each measured seventh control ratio while retaining all six prior entries, regenerate baseline/results and both README benchmark blocks. Keep every gate, threshold formula, workflow step and WASM size budget unchanged; all nine artifact comparisons, provenance/calibration assertions, README renderer check and fresh WASM/root builds pass. Refs #683 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #683 2026-10-15: main #743의 정렬된 쓰기로 보존된 450바이트 컴파일러 캐시는 브라우저 출력이 아니므로 측정에서 제외하고, 이전 #746의 동일한 실제 CSS 494바이트로 전용 writer를 실행해 기준만 보정했습니다. 기존 32바이트 여유(한도 526), 빌드 크기와 시간 규칙, 모든 보정 이력을 유지했습니다. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #683 2026-10-15: main의 #743 결정론적 ABI·상태 초기화, #716 Emotion 처리와 #734/#739 Tailwind 확장 및 #744에 통합된 styled 캡처·렌더링 수정으로 발생한 WASM 증가를 Linux run 38655364885 측정으로 기존 writer를 실행해 반영했습니다. #744와 #746 바이너리는 동일하며 #746 자체의 제품 코드 증가는 0입니다. glue gzip은 기존 7168바이트 예산에서 이미 통과하므로 원래 glue 예산을 그대로 보존했고 WASM 두 필드만 변경했습니다. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Refs #683 2026-10-15: 이전 #746 fac1d7d4의 새 WASM/root 빌드로 측정한 실제 제공 CSS는 devup-ui-single 395바이트(기존 790에는 캐시 사본 포함), vinext-devup-ui 14873바이트(기존 29746에는 서버 사본 포함)입니다. 같은 이름 제한 writer로 이 두 행의 CSS 기준만 보정해 기존 공식의 한도 427/15616을 적용했고, 다른 모든 필드·시간 샘플·전체 빌드 크기 및 7회 보정 이력을 바이트 단위로 보존했습니다. 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>
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>
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 #683 (NXT-21, INF-16, NXT-22, INF-26, INF-17)
main기반 CI 전용 PR입니다. #744의 최신 도구 설정과 기존 두 부모 병합 이력을 유지하며, #788/#768이 병합된 main347baaf9를 실제 두 부모 merge로 통합했습니다. 관리 패키지 배포 코드를 바꾸지 않아 승인된 대로 changepack은 추가하지 않습니다.요약
github.sha)의 첫 번째 부모입니다. 후보는 그 synthetic merge이며 main push는 기존event.before/event.after를 유지합니다.동작
benchmark는 같은 샘플 수3회의 순환 cold build, 같은 실행 Tailwind 대비 시간 비율, 기존 허용치
max(10%, 2 × 보정 비율의 상대 범위), 총 출력 기준×1.01 및 CSS 기준+max(5%,32바이트)를 그대로 사용합니다. 필수 행 누락/샘플 정책 불일치도 실패하며 다른 라이브러리 행과 SemanticBuilder 벤치는 정보용입니다. 승인된 세 total-output bytes 외 시간/보정/허용치/CSS/README 표를 변경하지 않았습니다.독립 읽기 전용
wasm-size작업은 ubuntu-latest/최신 action major/Rust stable/최신 Bun,Node,wasm-pack,wasm-opt를 공유하여 두 정확한 소스를 별도 target/pkg에서 연속 빌드합니다. 각 committed Cargo.lock의 wasm-bindgen ABI와 맞는 CLI만 소스별 빌드 의존성으로 해석하고 같은 ABI는 같은 바이너리를 사용합니다. 누락/오래된 lockfile은cargo metadata --locked에서 실패합니다.네 지표(WASM/glue 각각 raw/gzip)의 허용치는
ceil(baseBytes * 1.01 / 1024) * 1024입니다. 같은 Node gzip(level9) 구현으로 실제 바이트를 측정하고 commit/tree, 도구/파일 SHA-256, 크기/한도/차이를 JSON artifact와 summary에 보존합니다. 기준 빌드 실패를 건너뛰거나 이전 산출물/다른 lockfile로 대체하지 않습니다.새로 생기는 오류
제품 빌드 오류나 스타일링 런타임은 추가하지 않습니다. 기존 benchmark 회귀, 네 WASM/glue 지표의 허용치 초과, 잘못된 commit/첫 부모/lockfile/파일/출처 정보 또는 기준/후보 빌드 실패는 CI 오류입니다. 첫 부모 누락 시 source-resolution FAIL summary/비정상 종료가 발생하며 SHA 환경 변수는 내보내지 않습니다.
남는 한계
기존 시간 허용치 및 WASM1%/1KiB 올림 여유 이내 증가는 통과합니다. 러너 간 절대 시간 비교와 정보용 행에 별도 판정을 추가하지 않았습니다. 의도적인 허용치 변경은 정책 diff와 실제 artifact를 함께 리뷰해야 합니다.
시연 #748은 실제256KiB 비활성 WASM custom section과 기존3초 지연으로 39135955917에서 상대 크기/benchmark 게이트 실패를 입증했고 관리자가 닫았습니다. 크기 측정값을 조작하거나 시연을 제품에 병합하지 않았습니다.
검증
a600650e6bd91b9497b8dbc61fc80936a7870b23의 matching CI39205735701 SUCCESS입니다. benchmark/publish/wasm-size/landing-next-e2e/react-18/vinext-rsc-css-e2e 모두 성공했고 PR의 release/deploy는 의도대로 skip입니다. 실제 merge62427277(부모2db57ddb+main347baaf9) 이력을 유지합니다.실제 WASM 비교
최종 테스트 checkout은
bad3c71b2e8df9ed40d811ced72f2282a5d0f26a이고 부모는 main347baaf9 + heada600650e입니다. 기준이 실제 첫 부모임을 artifact와 GitHub commit/tree API로 대조했습니다. 이 실행에서는 synthetic tree와 head tree가 같음을 확인했지만 이를 다른 실행에 일반화하지 않습니다. 사용자 결정대로 WASM size budget과 first-parent 비교는 그대로 유지했습니다.양쪽 WASM SHA256
d9ca1f4bf796281e2c33f1fd6decbdc6c8eead6763522faadc4817c755e4953c, glue1047831e41251e5e670e799b57c88e55919f2b9dacde98a1651592f4f3cc6d1e로 각각 같습니다. Rust1.99.1/wasm-pack0.15.0/wasm-opt133/Bun1.4.3/Node26.12.0와 동일 ABI0.2.129의 동일 bindgen 바이너리를 기록했습니다.승인된 최신 main 크기 갱신
이전 실행39198559499의 실제3샘플 artifact는 시간/CSS/다른 행이 모두 통과했지만 total-output만 devup-ui71,047,404, devup-ui-single71,033,778, vinext-devup-ui1,248,050으로 예전 기준을 초과했습니다. #768 의존성 업데이트가 병합된 독립 main 기반 #789의 성공 실행39194897926도 같은 행에서71,044,835/71,029,923/1,248,050을 측정했습니다. 관리자 승인으로 세 bytes 필드만 실제39198559499의71,047,404/71,033,778/1,248,050으로 갱신했습니다. 모든 시간/보정/허용치/CSS 필드가 완전히 보존됨을 구조 비교로 검증했으며 최종 새 실행39205735701에서도 모든 행이 통과했습니다. 도구 pin이나 허용치 완화는 없습니다.