[PR #1859] [MERGED] fix(ci): stage mlsysbook-labs wheel for the WASM browser smoke test #29138

Closed
opened 2026-06-20 13:03:14 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/harvard-edge/cs249r_book/pull/1859
Author: @profvjreddi
Created: 6/15/2026
Status: Merged
Merged: 6/16/2026
Merged by: @profvjreddi

Base: devHead: fix/labs-smoke-wheel-pr


📝 Commits (1)

  • 7a24342 fix(ci): stage mlsysbook-labs wheel for the WASM browser smoke test

📊 Changes

1 file changed (+10 additions, -1 deletions)

View changed files

📝 .github/workflows/labs-validate-dev.yml (+10 -1)

📄 Description

What

The 🔮 Labs · ✅ Validate (Dev) workflow has been failing at the Browser smoke test (real Chromium + Pyodide) step. All four smoke labs boot, then fail with:

❌ browser smoke failed:
  lab_00_introduction:  - [python] BadZipFile: File is not a zip file
  lab_01_introduction:  - [python] BadZipFile: File is not a zip file
  lab_01_ml_intro:      - [python] BadZipFile: File is not a zip file
  lab_05_dist_train:    - [python] BadZipFile: File is not a zip file

Root cause

The labs bootstrap with two micropip installs:

await micropip.install("../../wheels/mlsysim-0.1.2-py3-none-any.whl", ...)
await micropip.install("../../wheels/mlsysbook_labs-0.1.0-py3-none-any.whl", ...)

The WASM smoke job in labs-validate-dev.yml only built and served the mlsysim engine wheel. When the exported lab boots in headless Chromium, micropip 404s on mlsysbook_labs-0.1.0-py3-none-any.whl, gets an HTML error page instead of a zip, and Pyodide raises BadZipFile.

The Node-Pyodide step still passes because it installs only the mlsysim wheel directly via file:// and never runs the lab's own bootstrap — only the real-browser step exercises both wheels, which is exactly the gap it exists to catch.

It surfaced now (last green: 2026-06-07) because the canonical-lab-track work added the mlsysbook_labs micropip line to the smoke labs after that run.

Fix

Build the mlsysbook-labs helper wheel and copy it next to the engine wheel in the smoke wheels dir, mirroring what labs/tools/build_site.sh already does for the production/preview builds.

Scope / risk

  • CI-only. Production and preview (labs/tools/build_site.sh) already build both wheels, so the live labs site is unaffected.
  • Verified locally that python -m build --wheel labs and python -m build --wheel mlsysim produce mlsysbook_labs-0.1.0-py3-none-any.whl and mlsysim-0.1.2-py3-none-any.whl — the exact filenames the labs request.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/harvard-edge/cs249r_book/pull/1859 **Author:** [@profvjreddi](https://github.com/profvjreddi) **Created:** 6/15/2026 **Status:** ✅ Merged **Merged:** 6/16/2026 **Merged by:** [@profvjreddi](https://github.com/profvjreddi) **Base:** `dev` ← **Head:** `fix/labs-smoke-wheel-pr` --- ### 📝 Commits (1) - [`7a24342`](https://github.com/harvard-edge/cs249r_book/commit/7a243420b90f29f8c96d4cbfa9792a2082845feb) fix(ci): stage mlsysbook-labs wheel for the WASM browser smoke test ### 📊 Changes **1 file changed** (+10 additions, -1 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/labs-validate-dev.yml` (+10 -1) </details> ### 📄 Description ## What The `🔮 Labs · ✅ Validate (Dev)` workflow has been failing at the **Browser smoke test (real Chromium + Pyodide)** step. All four smoke labs boot, then fail with: ``` ❌ browser smoke failed: lab_00_introduction: - [python] BadZipFile: File is not a zip file lab_01_introduction: - [python] BadZipFile: File is not a zip file lab_01_ml_intro: - [python] BadZipFile: File is not a zip file lab_05_dist_train: - [python] BadZipFile: File is not a zip file ``` ## Root cause The labs bootstrap with **two** micropip installs: ```python await micropip.install("../../wheels/mlsysim-0.1.2-py3-none-any.whl", ...) await micropip.install("../../wheels/mlsysbook_labs-0.1.0-py3-none-any.whl", ...) ``` The WASM smoke job in `labs-validate-dev.yml` only built and served the **mlsysim** engine wheel. When the exported lab boots in headless Chromium, micropip 404s on `mlsysbook_labs-0.1.0-py3-none-any.whl`, gets an HTML error page instead of a zip, and Pyodide raises `BadZipFile`. The Node-Pyodide step still passes because it installs only the mlsysim wheel directly via `file://` and never runs the lab's own bootstrap — only the real-browser step exercises both wheels, which is exactly the gap it exists to catch. It surfaced now (last green: 2026-06-07) because the canonical-lab-track work added the `mlsysbook_labs` micropip line to the smoke labs after that run. ## Fix Build the `mlsysbook-labs` helper wheel and copy it next to the engine wheel in the smoke wheels dir, mirroring what `labs/tools/build_site.sh` already does for the production/preview builds. ## Scope / risk - **CI-only.** Production and preview (`labs/tools/build_site.sh`) already build both wheels, so the live labs site is unaffected. - Verified locally that `python -m build --wheel labs` and `python -m build --wheel mlsysim` produce `mlsysbook_labs-0.1.0-py3-none-any.whl` and `mlsysim-0.1.2-py3-none-any.whl` — the exact filenames the labs request. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-06-20 13:03:14 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/cs249r_book#29138