Skip to content

Commit 745abd1

Browse files
committed
WebVM S1L 단일 커널 벤치 증거 추가
1 parent e8ecb78 commit 745abd1

7 files changed

Lines changed: 108 additions & 11 deletions

File tree

docs/operations/benchmarking.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ S1은 현재 공개 속도 간판이다. S1L은 외부 후보가 S1의 병렬 wo
5151
| S0 python ready latency | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s0-pyproc-2026-07-15.json) | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s0-webvm-2026-07-15.json) | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s0-jupyterlite-2026-07-15.json) | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s0-marimo-wasm-2026-07-15.json) | 페이지 또는 런타임 시작부터 첫 Python 명령 성공까지. 조건은 각 artifact note를 따른다 |
5252
| S0C python cold ready latency | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s0c-pyproc-2026-07-15.json) | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s0c-webvm-2026-07-15.json) | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s0c-jupyterlite-2026-07-15.json) | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s0c-marimo-wasm-2026-07-15.json) | cold profile/cache-clear 조건. warm S0와 한 표에 섞지 않음 |
5353
| S1 numpy sharded matmul | Speed Lab 반복 봉투 | N/A 가능 | N/A 가능 | N/A 가능 | 병렬 worker 모델이 다르면 single-lane으로 재정의하지 않음 |
54-
| S1L single-kernel numpy latency | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s1l-pyproc-2026-07-15.json) | 측정 필요 | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s1l-jupyterlite-2026-07-15.json) | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s1l-marimo-wasm-2026-07-15.json) | S1 대체가 아니라 별도 single-lane 보조 축 |
54+
| S1L single-kernel numpy latency | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s1l-pyproc-2026-07-15.json) | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s1l-webvm-2026-07-15.json) | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s1l-jupyterlite-2026-07-15.json) | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s1l-marimo-wasm-2026-07-15.json) | S1 대체가 아니라 별도 single-lane 보조 축 |
5555
| S2 process map | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s2-pyproc-2026-07-15.json) | [N/A](../../mainPlan/browser-os-north-star/benchmarks/s2-webvm-na-2026-07-15.json) | [N/A](../../mainPlan/browser-os-north-star/benchmarks/s2-jupyterlite-na-2026-07-15.json) | [N/A](../../mainPlan/browser-os-north-star/benchmarks/s2-marimo-wasm-na-2026-07-15.json) | `PyProc.map` process pool 계약. 같은 API 후보가 없으면 N/A |
5656
| S3 browser server | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s3-pyproc-2026-07-15.json) | [N/A](../../mainPlan/browser-os-north-star/benchmarks/s3-webvm-na-2026-07-15.json) | [N/A](../../mainPlan/browser-os-north-star/benchmarks/s3-jupyterlite-na-2026-07-15.json) | [N/A](../../mainPlan/browser-os-north-star/benchmarks/s3-marimo-wasm-na-2026-07-15.json) | pyproc `VirtualOrigin`/ASGI Service Worker URL contract. 같은 계약 후보가 없으면 N/A |
5757
| S4 machine resume | [측정됨](../../mainPlan/browser-os-north-star/benchmarks/s4-pyproc-2026-07-15.json) | [N/A](../../mainPlan/browser-os-north-star/benchmarks/s4-webvm-na-2026-07-15.json) | [N/A](../../mainPlan/browser-os-north-star/benchmarks/s4-jupyterlite-na-2026-07-15.json) | [N/A](../../mainPlan/browser-os-north-star/benchmarks/s4-marimo-wasm-na-2026-07-15.json) | signed `.pymachine`, trusted open, `resume.py` resource reopen. 같은 계약 후보가 없으면 N/A |

docs/operations/testing.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ S1L single-kernel NumPy latency는 S1을 대체하지 않는 별도 보조 축
139139

140140
```bash
141141
npm run bench:artifact -- --scenario S1L --candidate pyproc --command "<command>" --sample 10067,0 --sample 9633,0 --sample 10073,0 --out .tmp/pyproc-s1l.json
142-
npm run bench:compare -- .tmp/pyproc-s1l.json --out .tmp/s1l-compare.md
142+
npm run bench:artifact -- --scenario S1L --candidate webvm --command "WebVM terminal S1L" --sample 12825,0 --sample 11406,0 --sample 11349,0 --out .tmp/webvm-s1l.json
143+
npm run bench:compare -- .tmp/pyproc-s1l.json .tmp/webvm-s1l.json --out .tmp/s1l-compare.md
143144
```
144145

145146
체크리스트:

mainPlan/browser-os-north-star/03-progress-ledger.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2195,3 +2195,44 @@ NEXT:
21952195
1. WebVM의 S1L 또는 Python shell 단일 계산 latency를 분리할 가치가 있는지 판정한다.
21962196
2. README benchmark 섹션에 S0-S4를 모두 올릴 경우, 숫자보다 계약 차이를 먼저 설명한다.
21972197
3. 다음 구조 강화는 benchmark artifact schema v2 또는 product-facing capability matrix 중 하나로 잡는다.
2198+
2199+
## 2026-07-15 - WebVM S1L single-kernel benchmark 합류
2200+
2201+
완료:
2202+
2203+
- WebVM terminal에서 Python 3.7.3과 NumPy 사용 가능 여부를 확인했다.
2204+
- WebVM을 S1L single-kernel NumPy latency 후보로 측정했다.
2205+
- [s1l-webvm-2026-07-15.json](benchmarks/s1l-webvm-2026-07-15.json)을 생성했다.
2206+
- [s1l-compare-2026-07-15.md](benchmarks/s1l-compare-2026-07-15.md)를 pyproc, WebVM, JupyterLite, marimo WASM 4자 표로 갱신했다.
2207+
- [06-speed-comparison.md](06-speed-comparison.md), [benchmarking.md](../../docs/operations/benchmarking.md), [testing.md](../../docs/operations/testing.md), [externalS1](../../tests/attempts/externalS1/README.md)의 S1L 상태를 갱신했다.
2208+
2209+
실측:
2210+
2211+
- Browser: Edge `150.0.4078.65`.
2212+
- WebVM URL: `https://webvm.io/`.
2213+
- WebVM runtime: Python `3.7.3`, NumPy import 가능.
2214+
- 작업: WebVM terminal에서 1024x1024 f64 NumPy matmul을 `time.perf_counter()`로 측정. 128x128 warmup 뒤 3 samples. NumPy import와 matrix construction은 sample timing에서 제외했다.
2215+
- 유효 sample: 12825ms, 11406ms, 11349ms.
2216+
- checksum은 세 sample 모두 `3.2149321267`로 동일했다.
2217+
- WebVM S1L median: 11406ms, p95 12825ms, min 11349ms, max 12825ms, maxErr 0.
2218+
- artifact 생성 commit: `e8ecb78025d7e8e034ef5bf075f7d41647f2812d`, `worktreeDirty: false`.
2219+
2220+
검증:
2221+
2222+
- WebVM terminal probe: `PY_READY 3.7.3`, `NUMPY_SPEC True`.
2223+
- WebVM S1L run: `PYPROC_S1L_SAMPLE` 3개와 `PYPROC_S1L_DONE` 확인.
2224+
- `npm run bench:artifact -- --scenario S1L --candidate webvm --browser-version 150.0.4078.65 --engine "WebVM/CheerpX Python 3.7.3 NumPy" --source "https://webvm.io/ via playwright-cli" --command "WebVM terminal, Python perf_counter S1L 1024 f64 numpy matmul, 128 warmup, 3 samples" --note "warmed WebVM session; numpy import and matrix construction excluded from sample timings; checksum stayed 3.2149321267 across all samples" --sample 12825,0 --sample 11406,0 --sample 11349,0 --out mainPlan/browser-os-north-star/benchmarks/s1l-webvm-2026-07-15.json` PASS.
2225+
- `npm run bench:compare -- mainPlan/browser-os-north-star/benchmarks/s1l-pyproc-2026-07-15.json mainPlan/browser-os-north-star/benchmarks/s1l-webvm-2026-07-15.json mainPlan/browser-os-north-star/benchmarks/s1l-jupyterlite-2026-07-15.json mainPlan/browser-os-north-star/benchmarks/s1l-marimo-wasm-2026-07-15.json --out mainPlan/browser-os-north-star/benchmarks/s1l-compare-2026-07-15.md` PASS.
2226+
2227+
판정:
2228+
2229+
- WebVM S1L은 측정 가치가 있었다. 단, 이것은 WebVM이 S1을 충족한다는 뜻이 아니다.
2230+
- S1은 여전히 pyproc의 4-worker sharded NumPy matmul 계약이고, WebVM/JupyterLite/marimo WASM은 S1에서는 N/A다.
2231+
- S1L은 single-kernel 보조 축이다. 4자 S1L 결과는 marimo WASM 9355ms, pyproc 10067ms, JupyterLite 10149ms, WebVM 11406ms다.
2232+
- 이로써 S0, S0C, S1L은 4자 실측 표가 닫혔고, S1/S2/S3/S4는 pyproc OS 계약 + 외부 N/A 봉인 구조가 닫혔다.
2233+
2234+
NEXT:
2235+
2236+
1. pyproc의 공개 속도 간판은 S1 병렬 worker pool로 유지한다.
2237+
2. README benchmark 섹션에 S0-S4와 S1L을 올릴 경우 숫자보다 계약 차이를 먼저 설명한다.
2238+
3. 다음 구조 강화는 benchmark artifact schema v2 또는 product-facing capability matrix 중 하나로 잡는다.

mainPlan/browser-os-north-star/06-speed-comparison.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 06. 속도 정면 비교 계약
22

3-
상태: pyproc S0/S1/S2/S3/S4 기준 artifact 기록. S0와 S0C는 pyproc, WebVM, JupyterLite, marimo WASM을 같은 표에 합쳤다. WebVM, JupyterLite, marimo WASM은 같은 S1, S2, S3, S4 계약을 N/A artifact로 봉인. S1L은 pyproc, JupyterLite, marimo WASM을 같은 브라우저에서 측정.
3+
상태: pyproc S0/S1/S2/S3/S4 기준 artifact 기록. S0, S0C, S1L은 pyproc, WebVM, JupyterLite, marimo WASM을 같은 표에 합쳤다. WebVM, JupyterLite, marimo WASM은 같은 S1, S2, S3, S4 계약을 N/A artifact로 봉인.
44

55
## 목표
66

@@ -42,6 +42,7 @@
4242
| 2026-07-15 | S1 pyproc | [s1-pyproc-2026-07-15.json](benchmarks/s1-pyproc-2026-07-15.json) | [s1-compare-2026-07-15.md](benchmarks/s1-compare-2026-07-15.md) | GREEN, `size=1024`, 3 samples, median 3.95x, shard p95 2606ms, maxErr 0 |
4343
| 2026-07-15 | S1 external candidates | [webvm N/A](benchmarks/s1-webvm-na-2026-07-15.json), [jupyterlite N/A](benchmarks/s1-jupyterlite-na-2026-07-15.json), [marimo-wasm N/A](benchmarks/s1-marimo-wasm-na-2026-07-15.json) | [s1-compare-2026-07-15.md](benchmarks/s1-compare-2026-07-15.md) | 같은 4-worker sharded NumPy matmul 계약 없음 |
4444
| 2026-07-15 | S1L pyproc | [s1l-pyproc-2026-07-15.json](benchmarks/s1l-pyproc-2026-07-15.json) | [s1l-compare-2026-07-15.md](benchmarks/s1l-compare-2026-07-15.md) | GREEN, 3 samples, median 10067ms, p95 10073ms, maxErr 0 |
45+
| 2026-07-15 | S1L WebVM | [s1l-webvm-2026-07-15.json](benchmarks/s1l-webvm-2026-07-15.json) | [s1l-compare-2026-07-15.md](benchmarks/s1l-compare-2026-07-15.md) | GREEN, 3 samples, median 11406ms, p95 12825ms, maxErr 0 |
4546
| 2026-07-15 | S1L JupyterLite | [s1l-jupyterlite-2026-07-15.json](benchmarks/s1l-jupyterlite-2026-07-15.json) | [s1l-compare-2026-07-15.md](benchmarks/s1l-compare-2026-07-15.md) | GREEN, 3 samples, median 10149ms, p95 10153ms, maxErr 0 |
4647
| 2026-07-15 | S1L marimo WASM | [s1l-marimo-wasm-2026-07-15.json](benchmarks/s1l-marimo-wasm-2026-07-15.json) | [s1l-compare-2026-07-15.md](benchmarks/s1l-compare-2026-07-15.md) | GREEN, 3 samples, median 9355ms, p95 11424ms, maxErr 0 |
4748
| 2026-07-15 | S2 pyproc | [s2-pyproc-2026-07-15.json](benchmarks/s2-pyproc-2026-07-15.json) | [s2-compare-2026-07-15.md](benchmarks/s2-compare-2026-07-15.md) | GREEN, 3 samples, serial median 73ms, process pool median 43ms, speedup 1.61x, maxErr 0 |
@@ -60,7 +61,7 @@
6061
| S0 python ready latency | [artifact](benchmarks/s0-pyproc-2026-07-15.json) | [artifact](benchmarks/s0-webvm-2026-07-15.json) | [artifact](benchmarks/s0-jupyterlite-2026-07-15.json) | [artifact](benchmarks/s0-marimo-wasm-2026-07-15.json) | pyproc 3471ms, WebVM 3472ms, marimo WASM 8385ms, JupyterLite 12352ms. 조건은 각 artifact note를 따른다 |
6162
| S0C python cold ready latency | [artifact](benchmarks/s0c-pyproc-2026-07-15.json) | [artifact](benchmarks/s0c-webvm-2026-07-15.json) | [artifact](benchmarks/s0c-jupyterlite-2026-07-15.json) | [artifact](benchmarks/s0c-marimo-wasm-2026-07-15.json) | pyproc 3660ms, marimo WASM 10136ms, JupyterLite 11796ms, WebVM 46534ms. cold profile/cache-clear 전용. S0 warm/observed 표와 섞지 않음 |
6263
| S1 numpy sharded matmul | `npm run bench:speed -- --out <path>` | [N/A](benchmarks/s1-webvm-na-2026-07-15.json) | [N/A](benchmarks/s1-jupyterlite-na-2026-07-15.json) | [N/A](benchmarks/s1-marimo-wasm-na-2026-07-15.json) | pyproc만 같은 S1 계약 충족 |
63-
| S1L single-kernel numpy latency | [artifact](benchmarks/s1l-pyproc-2026-07-15.json) | 미측정 | [artifact](benchmarks/s1l-jupyterlite-2026-07-15.json) | [artifact](benchmarks/s1l-marimo-wasm-2026-07-15.json) | WebVM 제외 3자 측정 완료 |
64+
| S1L single-kernel numpy latency | [artifact](benchmarks/s1l-pyproc-2026-07-15.json) | [artifact](benchmarks/s1l-webvm-2026-07-15.json) | [artifact](benchmarks/s1l-jupyterlite-2026-07-15.json) | [artifact](benchmarks/s1l-marimo-wasm-2026-07-15.json) | 4자 측정 완료. S1 대체가 아니라 single-lane 보조 축 |
6465
| S2 process map | [artifact](benchmarks/s2-pyproc-2026-07-15.json) | [N/A](benchmarks/s2-webvm-na-2026-07-15.json) | [N/A](benchmarks/s2-jupyterlite-na-2026-07-15.json) | [N/A](benchmarks/s2-marimo-wasm-na-2026-07-15.json) | pyproc serial 73ms, process pool 43ms, median speedup 1.61x. 외부 후보는 같은 `PyProc.map` process pool API 계약 없음 |
6566
| S3 browser server | [artifact](benchmarks/s3-pyproc-2026-07-15.json) | [N/A](benchmarks/s3-webvm-na-2026-07-15.json) | [N/A](benchmarks/s3-jupyterlite-na-2026-07-15.json) | [N/A](benchmarks/s3-marimo-wasm-na-2026-07-15.json) | pyproc `VirtualOrigin` POST roundtrip median 18ms, p95 18ms. 외부 후보는 같은 pyproc `VirtualOrigin`/ASGI Service Worker URL contract 없음 |
6667
| S4 machine resume | [artifact](benchmarks/s4-pyproc-2026-07-15.json) | [N/A](benchmarks/s4-webvm-na-2026-07-15.json) | [N/A](benchmarks/s4-jupyterlite-na-2026-07-15.json) | [N/A](benchmarks/s4-marimo-wasm-na-2026-07-15.json) | pyproc export 76ms, open 2264ms, image 10.8MB, resume rows 2-2. 외부 후보는 같은 pyproc signed `.pymachine`/trusted open/`resume.py` resource reopen contract 없음 |
@@ -92,7 +93,8 @@ S1L artifact는 S1을 single-lane으로 바꿔치기하지 않기 위한 보조
9293
```bash
9394
npm run bench:artifact -- --scenario S1L --candidate jupyterlite --command "manual single-kernel S1L run" --sample 9844,0 --sample 10149,0 --sample 10153,0 --out .tmp/jupyterlite-s1l.json
9495
npm run bench:artifact -- --scenario S1L --candidate marimo-wasm --command "manual single-kernel S1L run" --sample 11424,0 --sample 9355,0 --sample 9239,0 --out .tmp/marimo-wasm-s1l.json
95-
npm run bench:compare -- .tmp/pyproc-s1l.json .tmp/jupyterlite-s1l.json .tmp/marimo-wasm-s1l.json --out .tmp/s1l-compare.md
96+
npm run bench:artifact -- --scenario S1L --candidate webvm --command "WebVM terminal S1L run" --sample 12825,0 --sample 11406,0 --sample 11349,0 --out .tmp/webvm-s1l.json
97+
npm run bench:compare -- .tmp/pyproc-s1l.json .tmp/webvm-s1l.json .tmp/jupyterlite-s1l.json .tmp/marimo-wasm-s1l.json --out .tmp/s1l-compare.md
9698
```
9799

98100
S2 artifact는 `test:browser``PyProc.map` timing을 paired sample로 승격한다. 같은 process pool에서 같은 함수와 입력을 serial과 parallel로 돌린 wall time만 받는다.
@@ -129,6 +131,6 @@ npm run bench:compare -- .tmp/pyproc-s4.json .tmp/webvm-s4-na.json --out .tmp/s4
129131

130132
## 다음 작업
131133

132-
1. WebVM의 S1L 또는 Python shell 단일 계산 latency를 분리할 가치가 있는지 판정한다.
133-
2. pyproc의 속도 간판은 S1 병렬 worker pool로 유지하고, README 속도 문구는 이 비교 계약을 통과한 숫자만 갱신한다.
134-
3. S0-S4 비교 축을 제품 README에 올릴 경우 숫자보다 계약 차이를 먼저 설명한다.
134+
1. pyproc의 속도 간판은 S1 병렬 worker pool로 유지하고, README 속도 문구는 이 비교 계약을 통과한 숫자만 갱신한다.
135+
2. S0-S4와 S1L 비교 축을 제품 README에 올릴 경우 숫자보다 계약 차이를 먼저 설명한다.
136+
3. 다음 구조 강화는 benchmark artifact schema v2 또는 product-facing capability matrix 중 하나로 잡는다.

mainPlan/browser-os-north-star/benchmarks/s1l-compare-2026-07-15.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
| marimo-wasm | GREEN | 3 | 9355 | 11424 | 9239 | 11424 | 0 | 150.0.4078.65 | 4e30f3a8 | mainPlan/browser-os-north-star/benchmarks/s1l-marimo-wasm-2026-07-15.json |
44
| pyproc | GREEN | 3 | 10067 | 10073 | 9633 | 10073 | 0 | 150.0.4078.65 | 5c867ee8 | mainPlan/browser-os-north-star/benchmarks/s1l-pyproc-2026-07-15.json |
55
| jupyterlite | GREEN | 3 | 10149 | 10153 | 9844 | 10153 | 0 | 150.0.4078.65 | 98934a90 | mainPlan/browser-os-north-star/benchmarks/s1l-jupyterlite-2026-07-15.json |
6+
| webvm | GREEN | 3 | 11406 | 12825 | 11349 | 12825 | 0 | 150.0.4078.65 | e8ecb780 | mainPlan/browser-os-north-star/benchmarks/s1l-webvm-2026-07-15.json |
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{
2+
"schemaVersion": 1,
3+
"scenario": "S1L",
4+
"candidate": "webvm",
5+
"name": "single-kernel numpy matmul latency",
6+
"command": "WebVM terminal, Python perf_counter S1L 1024 f64 numpy matmul, 128 warmup, 3 samples",
7+
"commit": "e8ecb78025d7e8e034ef5bf075f7d41647f2812d",
8+
"worktreeDirty": false,
9+
"startedAt": "2026-07-15T03:07:45.194Z",
10+
"finishedAt": "2026-07-15T03:07:45.195Z",
11+
"browser": {
12+
"path": null,
13+
"version": "150.0.4078.65"
14+
},
15+
"host": {
16+
"platform": "win32",
17+
"release": "10.0.26200",
18+
"cpuModel": "AMD Ryzen 7 8845HS w/ Radeon 780M Graphics ",
19+
"cpuCount": 16,
20+
"totalMemBytes": 33557934080,
21+
"freeMemBytes": 17717940224
22+
},
23+
"engine": {
24+
"name": "WebVM/CheerpX Python 3.7.3 NumPy"
25+
},
26+
"source": "https://webvm.io/ via playwright-cli",
27+
"note": "warmed WebVM session; numpy import and matrix construction excluded from sample timings; checksum stayed 3.2149321267 across all samples",
28+
"ok": true,
29+
"metrics": {
30+
"samples": [
31+
{
32+
"latencyMs": 12825,
33+
"maxErr": 0
34+
},
35+
{
36+
"latencyMs": 11406,
37+
"maxErr": 0
38+
},
39+
{
40+
"latencyMs": 11349,
41+
"maxErr": 0
42+
}
43+
],
44+
"sampleCount": 3,
45+
"medianMs": 11406,
46+
"p95Ms": 12825,
47+
"minMs": 11349,
48+
"maxMs": 12825,
49+
"maxErr": 0
50+
}
51+
}

tests/attempts/externalS1/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@ WebVM, JupyterLite, marimo WASM은 모두 브라우저 안 실행 표면을 제
2626
| 날짜 | probe | 환경 | 핵심 수치 | 결론 | 다음 |
2727
|---|---|---|---|---|---|
2828
| 2026-07-15 | 공식 문서 판정 + `bench:artifact --na` | Edge/Windows, 공식 문서 기반 | pyproc S1 기준 artifact 3.95x, [WebVM N/A](../../../mainPlan/browser-os-north-star/benchmarks/s1-webvm-na-2026-07-15.json), [JupyterLite N/A](../../../mainPlan/browser-os-north-star/benchmarks/s1-jupyterlite-na-2026-07-15.json), [marimo WASM N/A](../../../mainPlan/browser-os-north-star/benchmarks/s1-marimo-wasm-na-2026-07-15.json) | 같은 S1 계약은 pyproc만 충족 | 외부 후보 비교는 S1L 또는 S0로 분리한다 |
29-
| 2026-07-15 | JupyterLite REPL S1L 실측 | Edge/Windows, JupyterLite demo REPL | [JupyterLite S1L](../../../mainPlan/browser-os-north-star/benchmarks/s1l-jupyterlite-2026-07-15.json) median 10149ms, p95 10153ms, maxErr 0 | JupyterLite는 S1은 N/A, S1L은 측정 가능 | marimo WASM은 S1L, WebVM은 S0로 분리한다 |
30-
| 2026-07-15 | marimo playground S1L 실측 | Edge/Windows, marimo.app playground | [marimo WASM S1L](../../../mainPlan/browser-os-north-star/benchmarks/s1l-marimo-wasm-2026-07-15.json) median 9355ms, p95 11424ms, maxErr 0 | marimo WASM은 S1은 N/A, S1L은 측정 가능 | WebVM은 S0로 분리한다 |
29+
| 2026-07-15 | JupyterLite REPL S1L 실측 | Edge/Windows, JupyterLite demo REPL | [JupyterLite S1L](../../../mainPlan/browser-os-north-star/benchmarks/s1l-jupyterlite-2026-07-15.json) median 10149ms, p95 10153ms, maxErr 0 | JupyterLite는 S1은 N/A, S1L은 측정 가능 | marimo WASM과 WebVM으로 S1L을 확장한다 |
30+
| 2026-07-15 | marimo playground S1L 실측 | Edge/Windows, marimo.app playground | [marimo WASM S1L](../../../mainPlan/browser-os-north-star/benchmarks/s1l-marimo-wasm-2026-07-15.json) median 9355ms, p95 11424ms, maxErr 0 | marimo WASM은 S1은 N/A, S1L은 측정 가능 | WebVM S1L 가능 여부를 확인한다 |
31+
| 2026-07-15 | WebVM terminal S1L 실측 | Edge/Windows, WebVM terminal | [WebVM S1L](../../../mainPlan/browser-os-north-star/benchmarks/s1l-webvm-2026-07-15.json) median 11406ms, p95 12825ms, maxErr 0 | WebVM은 S1은 N/A, S1L은 측정 가능 | S1L 4자 비교표를 닫는다 |
3132

3233
## 판정
3334

34-
진행 중. S1은 pyproc의 병렬 worker pool 증거 축으로 유지한다. WebVM, JupyterLite, marimo WASM은 같은 S1을 single-lane이나 boot 비교로 재정의하지 않고 N/A artifact로 봉인했다. JupyterLite와 marimo WASM은 별도 S1L artifact로 측정했으므로, 다음 질문은 WebVM S0다.
35+
완료. S1은 pyproc의 병렬 worker pool 증거 축으로 유지한다. WebVM, JupyterLite, marimo WASM은 같은 S1을 single-lane이나 boot 비교로 재정의하지 않고 N/A artifact로 봉인했다. S1L은 네 후보 모두 별도 single-kernel NumPy latency artifact로 측정했고, S1의 대체 간판이 아니라 보조 축으로 남긴다.

0 commit comments

Comments
 (0)