Skip to content

Commit 03fae23

Browse files
committed
정리: 브라우저 학습 여정 임시 기록을 종료한다
Web과 Local 학습 여정이 모두 졸업해 살아 있는 attempt 목록과 임시 계획에서 제거했다. commit 기본 경계가 정식 계약과 교차 브라우저 게이트에 남아 해결된 부채 행도 삭제했다. 검증: npm test 3583/3583, Edge와 Chrome browser-control 71/71, 설치 MCP 10/10 GREEN.
1 parent 11c4443 commit 03fae23

5 files changed

Lines changed: 0 additions & 488 deletions

File tree

docs/operations/contractReality.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ It is consulted whenever the engine version moves or a capability changes.
99

1010
| Item | Contract | Actual | Next action |
1111
|---|---|---|---|
12-
| Browser target opening waits for page load instead of establishing control | `browserOpen` creates an allowed target and returns control promptly so the agent can attach, observe readiness, and choose an explicit wait | A measured Local learning page keeps `document.readyState` before `complete` while its application runtime prepares. `browserOpen` polls only for `complete`, so the whole MCP call consumed its 240 second timeout twice and the agent could neither attach nor inspect progress | Make navigation commit the default completion boundary for `browserOpen`, expose an explicit `waitUntil` option for callers that want DOM-ready or load, preserve final-origin authorization at the returned boundary, and prove a never-loading page remains attachable |
1312
| A replay worker keeps a second copy of its own heap | `N` interpreters cost `N` heaps | A replay-booted worker holds `cp0`, a full byte copy of its heap, so a pool of `N` costs `2N` heaps. Two consumers need it: harvest (which only needs the changed page numbers) and drift cleanup (which needs the original bytes). Harvest could run on page hashes at 8 bytes per page instead, but that lowers the fork verdict from byte equality to a 64-bit collision probability, and the reactive path accepting that trade does not make the fork path accept it. The word-wise comparison landed first and cut the time cost of the same scan to about a quarter, so what remains is purely the memory multiple | Decide whether the fork and reactive paths should share one verdict strength. That is a product decision about correctness posture, not a refactor, and it belongs to whoever opens it deliberately |
1413
| The boot snapshot is made on the main thread | Booting a pool does not block the page | `_makeSnapshot` boots a whole extra Pyodide on the main thread and copies the snapshot into a SharedArrayBuffer, so pool creation carries one main-thread long task plus a global engine load. Moving it into a dedicated worker would remove both, but the worker kernel header records a measured fact that forbids assuming it is equivalent: a main kernel and a worker kernel do not replay to the same bytes | Measure first: prove a snapshot made in a worker is byte-identical to one made on the main thread, in `tests/attempts/runtimeParity`. Only then move it |
1514
| The global patch window costs boot concurrency | Two machines boot independently | The default boot always carries a core trust anchor, so it always opens the core-asset cache window, and that window is a single tab-wide chain because it swaps `globalThis.fetch`. Two concurrent `boot()` calls therefore overlap only partially: the browser gate measures 1.59x the single-boot wall clock for two at once (2.0x would be fully serial, 1.0x fully parallel). The window is not removable as-is - it exists because two concurrent global swaps restore each other's patch - so the cost is a property of the fetch-interception design, not a defect to patch away | Either intercept core-asset fetches without a global swap (an engine-level loader hook), or accept the cost and keep it measured. The gate records the ratio on every run so a regression toward 2.0x is visible |

mainPlan/browserOpenCommit/README.md

Lines changed: 0 additions & 38 deletions
This file was deleted.

tests/attempts/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,4 @@ pyproc의 실험 졸업 게이트다. **신규 능력·실험은 `src/` 직행
5252
| [enginePort/](enginePort/) | EngineContract를 non-Pyodide CPython(WASI)이 구현 가능한가 (Pyodide 제거의 실증, D2 관문) | 진행 중 (부팅+계약 코어 6/6 + 반복 실행/값 프로토콜/**완전 시간여행** 12/12) |
5353
| [largeHeapEnvelope/](largeHeapEnvelope/) | 대형 힙에서 OS 프리미티브 비용은 어디서 무너지는가 (Browser Python OS 성능 봉투) | 진행 중 |
5454
| [stateKernel/](stateKernel/) | 내구 상태 3벌(저널·세션 이미지·machine generation)을 이중 구역 커널 하나로 통합할 수 있는가 | 진행 중 |
55-
| [agentBrowserUse/](agentBrowserUse/) | 제품 학습 여정을 관찰과 조작의 닫힌 루프로 수행할 수 있는가 | 졸업 -> `scripts/browserControl/` |
5655
| [Web Machine](../webMachine/) | 서로 다른 guest engine을 같은 browser computer lifecycle/device/image 계약으로 다룰 수 있는가 | 졸업 -> `src/machine` + `tests/webMachine` |

tests/attempts/agentBrowserUse/README.md

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)