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
- Date formatting in mysql2.escape/format is timezone-dependent — avoid comparing date string values in project-matrix fixtures
2466
2468
- createPoolCluster.of("REPLICA*") returns a namespace selector object — exercises pattern matching without TCP
2467
2469
---
2470
+
2471
+
## 2026-03-19 - US-196
2472
+
- What was implemented: Fixed node -e stderr/errors not appearing in interactive shell and kernel.exec. Two bugs: (1) NodeRuntimeDriver didn't emit result.errorMessage as stderr — V8 isolate errors (ReferenceError, SyntaxError, throw) were captured in ExecResult.errorMessage but never forwarded to ctx.onStderr/proc.onStderr. (2) execution.ts error formatting didn't include error class name — isolated-vm preserves err.name but execution.ts only used err.message, so "lskdjf is not defined" appeared instead of "ReferenceError: lskdjf is not defined".
2473
+
- Files changed:
2474
+
- packages/runtime/node/src/driver.ts — emit result.errorMessage as stderr via ctx.onStderr/proc.onStderr after exec returns
2475
+
- packages/secure-exec-node/src/execution.ts — include err.name prefix in errorMessage for non-generic errors (SyntaxError, ReferenceError, etc.)
- isolated-vm preserves err.name (ReferenceError, SyntaxError) but err.message does NOT include the class name prefix — must format as `${err.name}: ${err.message}` explicitly
2479
+
- ExecResult.errorMessage is set when V8 isolate code throws, but NodeRuntimeDriver only emitted stderr in the catch block (for driver-level errors) — result.errorMessage needed separate emission
2480
+
- process.exit errors use a generic Error (name === "Error") so the name prefix logic correctly skips them
2481
+
- Changing execution.ts requires `pnpm run build` (or turbo build) before tests pick up the change — vitest resolves the compiled output, not TypeScript source
2482
+
- The WARN "could not retrieve pid for child process" appears on stderr for all node -e invocations — tests must tolerate it
Copy file name to clipboardExpand all lines: scripts/ralph/prd.json
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -3387,8 +3387,8 @@
3387
3387
"Tests pass"
3388
3388
],
3389
3389
"priority": 196,
3390
-
"passes": false,
3391
-
"notes": "Same root cause as US-195 (stdout/stderr callback wiring) but stderr path. Existing test in error-propagation.test.ts line 39 tests stderr through kernel.exec() — verify it still passes and add interactive shell (PTY) equivalent. NodeRuntimeDriver.ts line 481-496 wraps caught errors as stderr."
3390
+
"passes": true,
3391
+
"notes": "Two bugs fixed: (1) NodeRuntimeDriver didn't emit result.errorMessage as stderr — errors from V8 isolate (ReferenceError, SyntaxError, throw) were returned in ExecResult.errorMessage but never emitted via ctx.onStderr. (2) execution.ts error message didn't include error class name — isolated-vm preserves err.name (ReferenceError, SyntaxError) but execution.ts only used err.message. Fixed by prefixing non-generic error names. Tests added: 4 kernel.exec stderr tests + 4 interactive shell PTY stderr tests."
0 commit comments