Skip to content

Commit bbb4ae7

Browse files
NathanFlurryclaude
andcommitted
chore: update progress for US-065
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 19914e4 commit bbb4ae7

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

scripts/ralph/prd.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,8 +1369,8 @@
13691369
"Tests pass"
13701370
],
13711371
"priority": 70,
1372-
"passes": false,
1373-
"notes": "Spec: docs-internal/specs/v8-context-snapshot.md Phase 7."
1372+
"passes": true,
1373+
"notes": "Added post_restore_script field to Execute IPC message (Rust + TS). Rust session runs it via run_init_script() after bridge fn replacement, before user code. execution-driver.ts sends static IIFE as bridgeCode and composePostRestoreScript() as separate postRestoreScript. Bridge process.ts exposes __runtimeResetProcessState() for mutable state reset (processStartTime, exitCode, exited). Polyfills load lazily via require() — no eager _loadPolyfill calls needed."
13741374
},
13751375
{
13761376
"id": "US-066",

scripts/ralph/progress.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,3 +492,26 @@ Started: Wed Mar 18 06:52:02 PM PDT 2026
492492
- The `from_snapshot` flag is stable for the session lifetime — once set on isolate creation, all subsequent Executes on the same session use the same path
493493
- Pre-existing test failures: `__name` conflict in runtime-driver/node tests, Python tests (PythonRuntime not a constructor), project-matrix tests — all unrelated to this story
494494
---
495+
496+
## 2026-03-19 - US-065
497+
- Wired post-restore init script through IPC for context snapshot support
498+
- Added `post_restore_script` field to Execute IPC message wire format (Rust `ipc_binary.rs` + TS `ipc-binary.ts`)
499+
- Added `run_init_script()` in `execution.rs` — compiles and runs a short script without code caching
500+
- Updated `session.rs` to run post-restore script after bridge fn replacement, before user code (returns error on failure)
501+
- Updated `V8ExecutionOptions` in `session.ts` with optional `postRestoreScript` field
502+
- Updated `runtime.ts` to send `postRestoreScript` in Execute frame
503+
- Split `composeBridgeCode()` into static IIFE only; post-restore script sent separately via `composePostRestore()`
504+
- `composeBridgeCodeForWarmup()` now returns only the static IIFE (snapshot is config-independent)
505+
- Added `__runtimeResetProcessState()` to bridge `process.ts` — resets `_processStartTime`, `_exitCode`, `_exited` closure variables for snapshot restore
506+
- Added `__runtimeResetProcessState` type to `runtime-globals.d.ts`
507+
- `composePostRestoreScript()` now calls `__runtimeResetProcessState()` after `__runtimeApplyConfig()`
508+
- Polyfills load lazily via `require()` — `_loadPolyfill` is a free variable resolved at call time, works after bridge fn replacement
509+
- Files changed: `crates/v8-runtime/src/{execution,ipc_binary,session}.rs`, `packages/secure-exec-core/{src/bridge/process.ts,isolate-runtime/src/common/runtime-globals.d.ts}`, `packages/secure-exec-node/src/execution-driver.ts`, `packages/secure-exec-v8/src/{ipc-binary,runtime,session}.ts`, `packages/secure-exec-v8/test/{ipc-binary,ipc-security}.test.ts`
510+
- **Learnings for future iterations:**
511+
- Bridge `process.ts` uses `(globalThis as Record<string, unknown>)` cast for dynamic global properties — the bridge tsconfig doesn't include `runtime-globals.d.ts`
512+
- The release binary (`target/release/secure-exec-v8`) is used by tests if it exists — must rebuild release after wire format changes
513+
- `_processStartTime` was `const` — changed to `let` to support reset; `_exitCode` and `_exited` already `let`
514+
- Mutable state resets are a no-op on fresh context (per-Execute `Context::new()` clones snapshot) — only matter for snapshot-restored contexts
515+
- `_loadPolyfill` is called lazily inside `require()`, not during bridge IIFE setup — no eager polyfill loading needed in post-restore script
516+
- Wire format change: Execute now has `[bc_len(u32)][bc][prs_len(u32)][prs][user_code(rest)]` — post_restore_script uses u32 length prefix before user_code
517+
---

0 commit comments

Comments
 (0)