You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/consuming/capabilityMatrix.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@
26
26
| Machine journal | idle commit과 WAL로 crashed tab을 마지막 commit으로 되살린다 |`MachineJournal`| Experimental | OPFS, idle commit 정책, pack/prune 운영, 같은 engine/manifest |[journal probe](../../tests/attempts/pythonMachine/journalProbe.html), [large heap journal probe](../../tests/attempts/largeHeapEnvelope/largeHeapProbe.html)| journal probes, product consumer gate | 장기 blob store는 pack/prune 없이 커질 수 있다. 브라우저 저장소 quota의 영향을 받는다 |
27
27
| Permission jail | Python code의 net, clipboard, home, worker 권한을 제품 manifest와 CSP로 제한한다 |`MachineJail`| Experimental | 제품 permission manifest, jail context CSP, host allowlist, 권한 UI |[jail probe](../../tests/attempts/pythonMachine/jailProbe.html), [product consumer gate](../../tests/browser/productConsumer.mjs), [trust and permissions](trustPermissions.md)|`npm run test:consumer`, jail probes | 같은 parent window에 있는 code의 모든 side channel을 제거하는 sandbox가 아니다. 강한 격리는 opaque origin 설계가 필요하다 |
28
28
| Outbound sockets | Python `socket`, `urllib`, `http.client`이 외부 host:port로 나가게 한다 |`SocketBridge`| Experimental | WS-to-TCP relay, JSPI blocking recv, 제품 relay 운영 |[socket campaign](../../tests/attempts/socketBridge/README.md), [Python socket probe](../../tests/attempts/socketBridge/socketPyProbe.html)| socket bridge probes | inbound socket은 브라우저 보안 벽이다. HTTPS는 relay가 TLS를 처리한다 |
29
-
| Device filesystem | 브라우저 기능을 Python file path로 노출한다 |`DeviceFs`| Experimental | 제품이 허용한 device injection, 브라우저 permission, 명확한 파일 경로 정책 |[device FS probe](../../tests/attempts/pythonMachine/deviceFsProbe.html), [machine campaign](../../tests/attempts/pythonMachine/README.md)| device FS probes | 브라우저와 제품 정책이 허용한 장치만 존재한다 |
29
+
| Device filesystem | 브라우저 기능을 Python file path로 노출한다 |`DeviceFs`| Experimental | 제품이 허용한 device injection, 브라우저 permission, 명확한 파일 경로 정책 |[product consumer gate](../../tests/browser/productConsumer.mjs), [device FS probe](../../tests/attempts/pythonMachine/deviceFsProbe.html), [machine campaign](../../tests/attempts/pythonMachine/README.md)|`npm run test:consumer`, device FS probes | 브라우저와 제품 정책이 허용한 장치만 존재한다 |
30
30
| GPU compute | WebGPU에 f32 array를 올려 GPU-resident linear algebra pipeline을 수행한다 |`GpuCompute`, `GpuArray`, `GpuBridge`| Experimental | WebGPU, windowed browser, 실제 GPU, f32 데이터 경로 |[GPU campaign](../../tests/attempts/gpuCompute/README.md), [GPU tiled probe](../../tests/attempts/gpuCompute/gpuTiledProbe.html), [GPU Python probe](../../tests/attempts/gpuCompute/gpuPythonProbe.html)| GPU probes on real hardware | WGSL은 f64가 없다. headless CI 숫자는 제품 성능 근거가 아니다 |
31
31
| Shared kernel and tab survival | 여러 탭이 한 Python state를 공유하고 leader tab 죽음 뒤 follower가 journal에서 이어받는다 |`SharedKernel`, `KernelElection`| Experimental | SharedWorker, Web Locks, OPFS journal, same-origin asset |[shared kernel probe](../../tests/attempts/pythonMachine/sharedKernelProbe.html), [kernel election probe](../../tests/attempts/pythonMachine/kernelElectionProbe.html)| shared kernel probes, kernel election probes | multi-user server가 아니다. 브라우저 lifecycle과 leader/follower semantics를 제품 UX에 반영해야 한다 |
32
32
| Machine container and jobs | 브라우저 worker 안에 별도 machine kernel을 띄우고 job control을 제공한다 |`MachineContainer`, `JobControl`| Experimental |`crossOriginIsolated`, worker graph, 제품의 process lifecycle 정책 |[machine container probe](../../tests/attempts/pythonMachine/machineContainerProbe.html), [job control probe](../../tests/attempts/pythonMachine/jobControlProbe.html), [pipe and shm probe](../../tests/attempts/pythonMachine/pipeShmProbe.html)| process OS probes | Linux container나 OS scheduler가 아니다. pyproc의 browser-kernel 격리 모델이다 |
Copy file name to clipboardExpand all lines: docs/consuming/contract.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -132,7 +132,7 @@ SRI 속성을 직접 걸 수 없으므로, 이 검증은 spawn 전 preflight다.
132
132
133
133
-`npm test`는 `package.json exports`가 승인된 stable specifier만 노출하는지, 공개 예제가 root API나 subpath export만 소비하는지, `index.d.ts`가 공개 타입 계약을 덮는지 검사한다.
134
134
-`npm run test:consumer`는 repo 상대 import 없이 설치된 `node_modules/pyproc`만 노출한 브라우저 앱에서 설치 패키지 계약을 검증한다.
135
-
- 같은 consumer gate가 `MachineJournal` commit/recover, `MachineJail` 권한 manifest, signed `.pymachine` export/open, trusted public key와 wrong key 거부, signer fingerprint, `/home/web/resume.py`의 SQLite connection 재개설까지 실행한다.
135
+
- 같은 consumer gate가 `DeviceFs` 파일 장치, `MachineJournal` commit/recover, `MachineJail` 권한 manifest, signed `.pymachine` export/open, trusted public key와 wrong key 거부, signer fingerprint, `/home/web/resume.py`의 SQLite connection 재개설까지 실행한다.
136
136
-`pyproc/runtime`은 public Runtime wrapper다. 내부 `runtime.js` core는 엔진 래퍼와 `Runtime.fs`만 담당하고, `runtimeApi.js`는 `src/capabilities/runtimeBindings.js` registry를 설치해 `enableReactive` 같은 opt-in capability factory를 제공한다.
137
137
-`restoreLive` 실행 경계는 기계 검증 대상이다. 경계를 지키면 즉시 복원(재해싱 0), 위반은 자동 감지되어 재해시 경로로 승격된다. 반환값 `rehashed`로 경로를 확인한다.
138
138
@@ -145,6 +145,7 @@ SRI 속성을 직접 걸 수 없으므로, 이 검증은 spawn 전 preflight다.
145
145
| package consumer |`pyproc`, `pyproc/assets`, `pyproc/runtime`|`Runtime`, `PyProc`, `getPyProcAssetManifest`, `verifyPyProcAssetIntegrity`, `registerPyProcServiceWorker`, runtime subpath `boot`/`Runtime`, `pyproc-assets` bin | package exports, stable subpath, `index.d.ts`, npm files, CLI graph copy and SRI manifest |
146
146
| product consumer - asset path |`pyproc`, `pyproc/assets`|`getPyProcAssetManifest`, `verifyPyProcAssetIntegrity`, `registerPyProcServiceWorker`|`/node_modules/pyproc/` 기준 asset manifest, worker graph SRI, 설치된 `pyprocSw.js` registration, bad worker SRI spawn 전 거부 |
| product consumer - device filesystem |`pyproc`|`DeviceFs`, Runtime `enableDeviceFs`| 설치 패키지 Runtime에서 `/dev/productState`와 `/proc/meminfo`를 Python `open()` 파일 계약으로 읽고 쓴다 |
148
149
| product consumer - process OS |`pyproc`|`PyProc`| 설치 패키지 worker graph로 `boot`, `map`, `terminate` 실행, SRI와 ASGI Service Worker prefix 충돌 없음 |
149
150
| product consumer - crash resume |`pyproc`|`bootSession`, `MachineJournal`, Runtime `enableJournal`| 설치 패키지 Session reactive boundary를 `MachineJournal.commit()`으로 남기고 새 Session이 `recover()`로 제품 상태를 복구 |
150
151
| product consumer - product policy |`pyproc`|`MachineJail`| 제품 permission manifest(`net=false`, `clipboard=false`, `home=true`, `workers=false`)와 Python choke point 집행 |
-[productConsumer.mjs](../../tests/browser/productConsumer.mjs)가 설치된 `pyproc`에서 `DeviceFs`를 import하고, `Runtime.enableDeviceFs()`로 `/dev/productState` 사용자 장치와 내장 `/proc/meminfo`를 설치한다.
2620
+
- product consumer gate가 Python `open()`으로 `/dev/productState`를 읽고 쓰며, `os.path.exists()`와 `/proc/meminfo`의 실제 heap/execSeq를 확인한다.
2621
+
-[contract.md](../../docs/consuming/contract.md)의 설치 패키지 consumer gate coverage 표와 계약 검증 설명에 DeviceFs를 연결했다.
2622
+
-[capabilityMatrix.md](../../docs/consuming/capabilityMatrix.md)의 Device filesystem 행을 product consumer gate 실행 표면으로 갱신했다.
2623
+
-`npm test`가 `DeviceFs` coverage 행과 실제 product consumer check 문자열을 함께 감시하게 했다.
0 commit comments