diff --git a/.agent/notes/counter-poll-audit-core.md b/.agent/notes/counter-poll-audit-core.md index 36d92e83c9..ffbd1c050d 100644 --- a/.agent/notes/counter-poll-audit-core.md +++ b/.agent/notes/counter-poll-audit-core.md @@ -36,7 +36,7 @@ Searched `rivetkit-rust/packages/rivetkit-core/src/` for: - `actor/sleep.rs::wait_for_shutdown_tasks` - Classification: event-driven. - - Uses `AsyncCounter::wait_zero(deadline)` for shutdown tasks and websocket callbacks, plus `prevent_sleep_notify` for the prevent-sleep flag. + - Uses `AsyncCounter::wait_zero(deadline)` for shutdown tasks and websocket callbacks, plus `keep_awake_notify` for the keep-awake flag. - `actor/sleep.rs::wait_for_internal_keep_awake_idle` - Classification: event-driven. diff --git a/.agent/notes/ralph-prd-review-state.json b/.agent/notes/ralph-prd-review-state.json index f10415e733..0455d5a685 100644 --- a/.agent/notes/ralph-prd-review-state.json +++ b/.agent/notes/ralph-prd-review-state.json @@ -436,7 +436,7 @@ "commit": "880e45207", "verdict": "PASS", "medCritIssues": [], - "notes": "Main payoff story. AsyncCounter gained register_zero_notify fan-out (Weak observer pattern). idle_notify is pinged by keep_awake + internal_keep_awake + http_request_counter via register_zero_notify in WorkRegistry::new + lookup_http_request_counter. wait_for_shutdown_tasks composes shutdown_counter + websocket_callback + prevent_sleep_notify via tokio::select!. set_prevent_sleep calls notify_prevent_sleep_changed only on flip. Old AtomicUsize shims removed; can_sleep reads from WorkRegistry. Two deterministic tests use tokio::test(start_paused=true). Grep confirms zero Duration::from_millis(10) remain in sleep.rs. Minor: lookup_http_request_counter re-registers on every miss (bounded by envoy reconfigures, Weak refs prevent leak)." + "notes": "Main payoff story. AsyncCounter gained register_zero_notify fan-out (Weak observer pattern). idle_notify is pinged by keep_awake + internal_keep_awake + http_request_counter via register_zero_notify in WorkRegistry::new + lookup_http_request_counter. wait_for_shutdown_tasks composes shutdown_counter + websocket_callback + idle notification via tokio::select!. keep_awake regions notify when their counters change. Old AtomicUsize shims removed; can_sleep reads from WorkRegistry. Two deterministic tests use tokio::test(start_paused=true). Grep confirms zero Duration::from_millis(10) remain in sleep.rs. Minor: lookup_http_request_counter re-registers on every miss (bounded by envoy reconfigures, Weak refs prevent leak)." }, "US-007": { "commit": "13d606e31", diff --git a/.agent/notes/rivetkit-core-walkthrough.md b/.agent/notes/rivetkit-core-walkthrough.md index a1edde289b..7a845e964d 100644 --- a/.agent/notes/rivetkit-core-walkthrough.md +++ b/.agent/notes/rivetkit-core-walkthrough.md @@ -122,7 +122,7 @@ When an inspector attaches, `inspector_attach_count` increments. Every 50ms, if ## Chapter 8 — Sleep (Two Phases) -Sleep is triggered by the idle timer. When `sleep_deadline` fires, `SleepController::can_sleep` checks: not-ready, `prevent_sleep`, `no_sleep` config, active HTTP, keep-awake regions, non-hibernatable connections, or outstanding WebSocket callbacks all block it. +Sleep is triggered by the idle timer. When `sleep_deadline` fires, `SleepController::can_sleep` checks: not-ready, `keep_awake`, `no_sleep` config, active HTTP, keep-awake regions, non-hibernatable connections, or outstanding WebSocket callbacks all block it. ### Phase 1: SleepGrace diff --git a/.agent/notes/sleep-grace-abort-run-wait.md b/.agent/notes/sleep-grace-abort-run-wait.md index f3a96cd17b..41446fe641 100644 --- a/.agent/notes/sleep-grace-abort-run-wait.md +++ b/.agent/notes/sleep-grace-abort-run-wait.md @@ -28,7 +28,7 @@ Located in `rivetkit-rust/packages/rivetkit-core/src/actor/task.rs`: `mark_destroy_requested` at `actor/context.rs:466` (the destroy path). - `wait_for_sleep_idle_window` polls `ActorContext::can_sleep_state` (`actor/sleep.rs::229-260`). `can_sleep_state` checks ready/started, - `prevent_sleep`, `no_sleep`, `active_http_request_count`, + `keep_awake`, `no_sleep`, `active_http_request_count`, `sleep_keep_awake_count`, `sleep_internal_keep_awake_count`, `pending_disconnect_count`, non-empty conns, and `websocket_callback_count`. **It does NOT check whether the `run_handle` diff --git a/.agent/notes/us120-postfix/run1.log b/.agent/notes/us120-postfix/run1.log index 7db1c85980..c2bd3221f4 100644 --- a/.agent/notes/us120-postfix/run1.log +++ b/.agent/notes/us120-postfix/run1.log @@ -521,133 +521,133 @@ ts=2026-04-22T08:00:31.254Z level=DEBUG target=actor-client msg="disposing clien stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping ts=2026-04-22T08:00:31.254Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:00:31.794Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:00:31.794Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:00:31.794Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:00:31.794Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T08:00:31.794Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:34027/actors?namespace=driver-fc23b949-2c5c-4310-9074-e56305d508f2" ts=2026-04-22T08:00:31.794Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:34027/actors?namespace=driver-fc23b949-2c5c-4310-9074-e56305d508f2" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:00:31.836Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=5jpjcmt8ojwwynvnjw5b5n31elcl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:00:31.836Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=5jpjcmt8ojwwynvnjw5b5n31elcl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:00:31.836Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=5jpjcmt8ojwwynvnjw5b5n31elcl00 ts=2026-04-22T08:00:31.836Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:00:31.836Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:00:31.893Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=5jpjcmt8ojwwynvnjw5b5n31elcl00 -ts=2026-04-22T08:00:31.893Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:00:31.893Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:00:31.893Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:00:31.893Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:00:32.023Z level=INFO target=actor-client msg="structured error passthrough" group=guard code=request_timeout message="Request timed out after 15 seconds." issues=https://github.com/rivet-dev/rivet/issues support=https://rivet.dev/discord version=2.3.0-rc.4 -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:00:33.157Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=5jpjcmt8ojwwynvnjw5b5n31elcl00 ts=2026-04-22T08:00:33.157Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:00:33.157Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:00:33.167Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=5jpjcmt8ojwwynvnjw5b5n31elcl00 -ts=2026-04-22T08:00:33.167Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:00:33.167Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:00:33.167Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:00:33.167Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:00:34.427Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=5jpjcmt8ojwwynvnjw5b5n31elcl00 ts=2026-04-22T08:00:34.427Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:00:34.427Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:00:34.508Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:00:34.508Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:00:35.051Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:00:35.051Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:00:35.051Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:00:35.051Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" ts=2026-04-22T08:00:35.051Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:34027/actors?namespace=driver-6bbbda7f-0d4b-4242-a555-02468925a5e0" ts=2026-04-22T08:00:35.051Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:34027/actors?namespace=driver-6bbbda7f-0d4b-4242-a555-02468925a5e0" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:00:35.093Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=x8sont7cnjq7xjgfq37ylvoen7dl00 name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:00:35.093Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=x8sont7cnjq7xjgfq37ylvoen7dl00 name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:00:35.094Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=x8sont7cnjq7xjgfq37ylvoen7dl00 -ts=2026-04-22T08:00:35.094Z level=DEBUG target=actor-client msg="handling action" name=setDelayPreventSleepDuringShutdown encoding=bare -ts=2026-04-22T08:00:35.094Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayPreventSleepDuringShutdown encoding=bare +ts=2026-04-22T08:00:35.094Z level=DEBUG target=actor-client msg="handling action" name=setDelayKeepAwakeDuringShutdown encoding=bare +ts=2026-04-22T08:00:35.094Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayKeepAwakeDuringShutdown encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:00:35.144Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=x8sont7cnjq7xjgfq37ylvoen7dl00 ts=2026-04-22T08:00:35.144Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T08:00:35.144Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:00:35.571Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=x8sont7cnjq7xjgfq37ylvoen7dl00 ts=2026-04-22T08:00:35.571Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:00:35.571Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:00:35.640Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:00:35.640Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:00:36.193Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:00:36.193Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:00:36.194Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:00:36.194Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T08:00:36.194Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:34027/actors?namespace=driver-972b3826-3428-4117-9826-c926c186f223" ts=2026-04-22T08:00:36.194Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:34027/actors?namespace=driver-972b3826-3428-4117-9826-c926c186f223" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:00:36.252Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xk92pjjm70niyun8fzhswa1rl4cl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:00:36.252Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xk92pjjm70niyun8fzhswa1rl4cl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:00:36.252Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xk92pjjm70niyun8fzhswa1rl4cl00 -ts=2026-04-22T08:00:36.252Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T08:00:36.252Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T08:00:36.252Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T08:00:36.252Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:00:36.325Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xk92pjjm70niyun8fzhswa1rl4cl00 ts=2026-04-22T08:00:36.325Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T08:00:36.325Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:00:36.628Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xk92pjjm70niyun8fzhswa1rl4cl00 ts=2026-04-22T08:00:36.628Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:00:36.628Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:00:37.964Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xk92pjjm70niyun8fzhswa1rl4cl00 ts=2026-04-22T08:00:37.964Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:00:37.964Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:00:37.994Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xk92pjjm70niyun8fzhswa1rl4cl00 -ts=2026-04-22T08:00:37.994Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T08:00:37.994Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T08:00:37.994Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T08:00:37.994Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:00:38.015Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xk92pjjm70niyun8fzhswa1rl4cl00 -ts=2026-04-22T08:00:38.015Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:00:38.015Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:00:38.015Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:00:38.015Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:00:39.282Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xk92pjjm70niyun8fzhswa1rl4cl00 ts=2026-04-22T08:00:39.282Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:00:39.282Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:00:39.353Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:00:39.353Z level=INFO target=test-suite msg="cleaning up test" stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep @@ -854,9 +854,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw websockets keep actor awake 3305ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw fetch requests keep actor awake 3227ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping 3153ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared 3254ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared 1132ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake 3713ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared 3254ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared 1132ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake 3713ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep 1433ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket onmessage handler delays sleep 1273ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep 1417ms @@ -876,9 +876,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep @@ -898,9 +898,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep diff --git a/.agent/notes/us120-postfix/run2.log b/.agent/notes/us120-postfix/run2.log index e2d5de97e1..35ceca1f22 100644 --- a/.agent/notes/us120-postfix/run2.log +++ b/.agent/notes/us120-postfix/run2.log @@ -521,133 +521,133 @@ ts=2026-04-22T08:01:44.955Z level=DEBUG target=actor-client msg="disposing clien stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping ts=2026-04-22T08:01:44.955Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:01:45.495Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:01:45.495Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:01:45.496Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:01:45.496Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T08:01:45.496Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:45883/actors?namespace=driver-3dfa47e1-a0bf-4b2a-ac4b-1d609332852f" ts=2026-04-22T08:01:45.496Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:45883/actors?namespace=driver-3dfa47e1-a0bf-4b2a-ac4b-1d609332852f" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:01:45.525Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=9q1p8szvbht4k2e31e2uyzijmzcl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:01:45.525Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=9q1p8szvbht4k2e31e2uyzijmzcl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:01:45.525Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9q1p8szvbht4k2e31e2uyzijmzcl00 ts=2026-04-22T08:01:45.525Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:01:45.525Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:01:45.589Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9q1p8szvbht4k2e31e2uyzijmzcl00 -ts=2026-04-22T08:01:45.589Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:01:45.589Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:01:45.589Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:01:45.589Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:01:45.617Z level=INFO target=actor-client msg="structured error passthrough" group=guard code=request_timeout message="Request timed out after 15 seconds." issues=https://github.com/rivet-dev/rivet/issues support=https://rivet.dev/discord version=2.3.0-rc.4 -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:01:46.849Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9q1p8szvbht4k2e31e2uyzijmzcl00 ts=2026-04-22T08:01:46.849Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:01:46.849Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:01:46.860Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9q1p8szvbht4k2e31e2uyzijmzcl00 -ts=2026-04-22T08:01:46.860Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:01:46.860Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:01:46.860Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:01:46.860Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:01:48.124Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9q1p8szvbht4k2e31e2uyzijmzcl00 ts=2026-04-22T08:01:48.124Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:01:48.124Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:01:48.200Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:01:48.200Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:01:48.743Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:01:48.743Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:01:48.743Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:01:48.743Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" ts=2026-04-22T08:01:48.743Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:45883/actors?namespace=driver-a4454f9e-c8a0-4a10-9a2b-492ab3038574" ts=2026-04-22T08:01:48.743Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:45883/actors?namespace=driver-a4454f9e-c8a0-4a10-9a2b-492ab3038574" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:01:48.786Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=57oeruvl5c7mpvhbu0qspnzvxzcl00 name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:01:48.786Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=57oeruvl5c7mpvhbu0qspnzvxzcl00 name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:01:48.786Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=57oeruvl5c7mpvhbu0qspnzvxzcl00 -ts=2026-04-22T08:01:48.786Z level=DEBUG target=actor-client msg="handling action" name=setDelayPreventSleepDuringShutdown encoding=bare -ts=2026-04-22T08:01:48.786Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayPreventSleepDuringShutdown encoding=bare +ts=2026-04-22T08:01:48.786Z level=DEBUG target=actor-client msg="handling action" name=setDelayKeepAwakeDuringShutdown encoding=bare +ts=2026-04-22T08:01:48.786Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayKeepAwakeDuringShutdown encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:01:48.837Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=57oeruvl5c7mpvhbu0qspnzvxzcl00 ts=2026-04-22T08:01:48.837Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T08:01:48.837Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:01:49.257Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=57oeruvl5c7mpvhbu0qspnzvxzcl00 ts=2026-04-22T08:01:49.257Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:01:49.257Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:01:49.332Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:01:49.332Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:01:49.873Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:01:49.873Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:01:49.873Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:01:49.873Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T08:01:49.873Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:45883/actors?namespace=driver-e0e37b75-c21c-49fa-b602-a8cec634b0de" ts=2026-04-22T08:01:49.873Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:45883/actors?namespace=driver-e0e37b75-c21c-49fa-b602-a8cec634b0de" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:01:49.902Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=h85izt57rz5d5szcwuc43itq96dl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:01:49.902Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=h85izt57rz5d5szcwuc43itq96dl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:01:49.902Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=h85izt57rz5d5szcwuc43itq96dl00 -ts=2026-04-22T08:01:49.902Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T08:01:49.902Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T08:01:49.902Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T08:01:49.902Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:01:49.968Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=h85izt57rz5d5szcwuc43itq96dl00 ts=2026-04-22T08:01:49.968Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T08:01:49.968Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:01:50.248Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=h85izt57rz5d5szcwuc43itq96dl00 ts=2026-04-22T08:01:50.248Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:01:50.248Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:01:51.571Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=h85izt57rz5d5szcwuc43itq96dl00 ts=2026-04-22T08:01:51.572Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:01:51.572Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:01:51.582Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=h85izt57rz5d5szcwuc43itq96dl00 -ts=2026-04-22T08:01:51.582Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T08:01:51.582Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T08:01:51.582Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T08:01:51.582Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:01:51.591Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=h85izt57rz5d5szcwuc43itq96dl00 -ts=2026-04-22T08:01:51.591Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:01:51.591Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:01:51.591Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:01:51.591Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:01:52.854Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=h85izt57rz5d5szcwuc43itq96dl00 ts=2026-04-22T08:01:52.854Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:01:52.854Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:01:52.929Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:01:52.929Z level=INFO target=test-suite msg="cleaning up test" stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep @@ -854,9 +854,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw websockets keep actor awake 3272ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw fetch requests keep actor awake 3233ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping 3157ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared 3248ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared 1129ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake 3597ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared 3248ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared 1129ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake 3597ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep 1415ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket onmessage handler delays sleep 1261ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep 1429ms @@ -876,9 +876,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep @@ -898,9 +898,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep diff --git a/.agent/notes/us120-postfix/run3.log b/.agent/notes/us120-postfix/run3.log index f877fab0f7..aeb6742066 100644 --- a/.agent/notes/us120-postfix/run3.log +++ b/.agent/notes/us120-postfix/run3.log @@ -524,130 +524,130 @@ ts=2026-04-22T08:03:07.306Z level=DEBUG target=actor-client msg="disposing clien stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping ts=2026-04-22T08:03:07.306Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:03:07.847Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:03:07.847Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:03:07.847Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:03:07.847Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T08:03:07.847Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:33561/actors?namespace=driver-8a523dbd-afff-466a-be02-2f53398814fd" ts=2026-04-22T08:03:07.847Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:33561/actors?namespace=driver-8a523dbd-afff-466a-be02-2f53398814fd" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:03:07.883Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=dpzt12gzrj7bel6nwbvrns8hohcl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:03:07.883Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=dpzt12gzrj7bel6nwbvrns8hohcl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:03:07.883Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dpzt12gzrj7bel6nwbvrns8hohcl00 ts=2026-04-22T08:03:07.883Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:03:07.883Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:03:07.933Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dpzt12gzrj7bel6nwbvrns8hohcl00 -ts=2026-04-22T08:03:07.933Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:03:07.933Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:03:07.933Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:03:07.933Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:03:09.199Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dpzt12gzrj7bel6nwbvrns8hohcl00 ts=2026-04-22T08:03:09.199Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:03:09.200Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:03:09.211Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dpzt12gzrj7bel6nwbvrns8hohcl00 -ts=2026-04-22T08:03:09.211Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:03:09.211Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:03:09.211Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:03:09.211Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:03:10.470Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dpzt12gzrj7bel6nwbvrns8hohcl00 ts=2026-04-22T08:03:10.470Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:03:10.470Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:03:10.544Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:03:10.544Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:03:11.087Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:03:11.087Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:03:11.088Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:03:11.088Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" ts=2026-04-22T08:03:11.088Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:33561/actors?namespace=driver-6d3cc713-29f0-469d-bb74-b097bd3ce320" ts=2026-04-22T08:03:11.088Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:33561/actors?namespace=driver-6d3cc713-29f0-469d-bb74-b097bd3ce320" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:03:11.113Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=tdx0h99o43g04lg1kp0wflwutfal00 name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:03:11.113Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=tdx0h99o43g04lg1kp0wflwutfal00 name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:03:11.113Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tdx0h99o43g04lg1kp0wflwutfal00 -ts=2026-04-22T08:03:11.113Z level=DEBUG target=actor-client msg="handling action" name=setDelayPreventSleepDuringShutdown encoding=bare -ts=2026-04-22T08:03:11.113Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayPreventSleepDuringShutdown encoding=bare +ts=2026-04-22T08:03:11.113Z level=DEBUG target=actor-client msg="handling action" name=setDelayKeepAwakeDuringShutdown encoding=bare +ts=2026-04-22T08:03:11.113Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayKeepAwakeDuringShutdown encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:03:11.177Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tdx0h99o43g04lg1kp0wflwutfal00 ts=2026-04-22T08:03:11.177Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T08:03:11.177Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:03:11.604Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tdx0h99o43g04lg1kp0wflwutfal00 ts=2026-04-22T08:03:11.604Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:03:11.604Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:03:11.681Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:03:11.681Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:03:12.226Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:03:12.226Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:03:12.226Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:03:12.226Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T08:03:12.226Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:33561/actors?namespace=driver-51be4560-93ea-4940-aca6-6c17acc32b63" ts=2026-04-22T08:03:12.226Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:33561/actors?namespace=driver-51be4560-93ea-4940-aca6-6c17acc32b63" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:03:12.268Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=9e0ci45ni12ixfcwjzhbe841h9dl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:03:12.268Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=9e0ci45ni12ixfcwjzhbe841h9dl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:03:12.268Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9e0ci45ni12ixfcwjzhbe841h9dl00 -ts=2026-04-22T08:03:12.268Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T08:03:12.268Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T08:03:12.268Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T08:03:12.268Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:03:12.332Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9e0ci45ni12ixfcwjzhbe841h9dl00 ts=2026-04-22T08:03:12.332Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T08:03:12.332Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:03:12.608Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9e0ci45ni12ixfcwjzhbe841h9dl00 ts=2026-04-22T08:03:12.608Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:03:12.608Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:03:13.931Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9e0ci45ni12ixfcwjzhbe841h9dl00 ts=2026-04-22T08:03:13.931Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:03:13.931Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:03:13.940Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9e0ci45ni12ixfcwjzhbe841h9dl00 -ts=2026-04-22T08:03:13.940Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T08:03:13.940Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T08:03:13.940Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T08:03:13.940Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:03:13.948Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9e0ci45ni12ixfcwjzhbe841h9dl00 -ts=2026-04-22T08:03:13.948Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:03:13.948Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:03:13.948Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:03:13.948Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:03:15.207Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9e0ci45ni12ixfcwjzhbe841h9dl00 ts=2026-04-22T08:03:15.207Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:03:15.207Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:03:15.278Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:03:15.278Z level=INFO target=test-suite msg="cleaning up test" stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep @@ -854,9 +854,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw websockets keep actor awake 3287ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw fetch requests keep actor awake 3221ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping 3240ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared 3239ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared 1136ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake 3597ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared 3239ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared 1136ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake 3597ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep 1418ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket onmessage handler delays sleep 1273ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep 1420ms @@ -876,9 +876,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep @@ -898,9 +898,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep diff --git a/.agent/notes/us120-postfix/run4.log b/.agent/notes/us120-postfix/run4.log index 22bc546551..841ad78f10 100644 --- a/.agent/notes/us120-postfix/run4.log +++ b/.agent/notes/us120-postfix/run4.log @@ -524,130 +524,130 @@ ts=2026-04-22T08:04:20.355Z level=DEBUG target=actor-client msg="disposing clien stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping ts=2026-04-22T08:04:20.355Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:04:20.894Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:04:20.894Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:04:20.895Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:04:20.895Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T08:04:20.895Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:33561/actors?namespace=driver-1ca6d8f7-30f6-4bd0-8eda-3784831f8adb" ts=2026-04-22T08:04:20.895Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:33561/actors?namespace=driver-1ca6d8f7-30f6-4bd0-8eda-3784831f8adb" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:04:20.920Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=10oioj3uhyi63gza50oesadr18dl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:04:20.920Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=10oioj3uhyi63gza50oesadr18dl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:04:20.920Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=10oioj3uhyi63gza50oesadr18dl00 ts=2026-04-22T08:04:20.920Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:04:20.920Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:04:20.985Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=10oioj3uhyi63gza50oesadr18dl00 -ts=2026-04-22T08:04:20.985Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:04:20.985Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:04:20.985Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:04:20.985Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:04:22.244Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=10oioj3uhyi63gza50oesadr18dl00 ts=2026-04-22T08:04:22.244Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:04:22.244Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:04:22.254Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=10oioj3uhyi63gza50oesadr18dl00 -ts=2026-04-22T08:04:22.254Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:04:22.254Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:04:22.254Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:04:22.254Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:04:23.512Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=10oioj3uhyi63gza50oesadr18dl00 ts=2026-04-22T08:04:23.512Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:04:23.513Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:04:23.592Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:04:23.592Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:04:24.131Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:04:24.131Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:04:24.131Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:04:24.131Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" ts=2026-04-22T08:04:24.131Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:33561/actors?namespace=driver-65a216a6-66c3-42f3-abbd-f2d75f9a5938" ts=2026-04-22T08:04:24.131Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:33561/actors?namespace=driver-65a216a6-66c3-42f3-abbd-f2d75f9a5938" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:04:24.157Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=5zlj1y68vpfd5wbzumg8829g4kal00 name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:04:24.157Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=5zlj1y68vpfd5wbzumg8829g4kal00 name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:04:24.157Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=5zlj1y68vpfd5wbzumg8829g4kal00 -ts=2026-04-22T08:04:24.157Z level=DEBUG target=actor-client msg="handling action" name=setDelayPreventSleepDuringShutdown encoding=bare -ts=2026-04-22T08:04:24.157Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayPreventSleepDuringShutdown encoding=bare +ts=2026-04-22T08:04:24.157Z level=DEBUG target=actor-client msg="handling action" name=setDelayKeepAwakeDuringShutdown encoding=bare +ts=2026-04-22T08:04:24.157Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayKeepAwakeDuringShutdown encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:04:24.221Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=5zlj1y68vpfd5wbzumg8829g4kal00 ts=2026-04-22T08:04:24.221Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T08:04:24.221Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:04:24.651Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=5zlj1y68vpfd5wbzumg8829g4kal00 ts=2026-04-22T08:04:24.651Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:04:24.651Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:04:24.728Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:04:24.729Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:04:25.268Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:04:25.268Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:04:25.269Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:04:25.269Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T08:04:25.269Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:33561/actors?namespace=driver-f6157dce-23e0-4368-94cf-6f809224320f" ts=2026-04-22T08:04:25.269Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:33561/actors?namespace=driver-f6157dce-23e0-4368-94cf-6f809224320f" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:04:25.315Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xwipej66qundfmiaeni453xkrkal00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:04:25.315Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xwipej66qundfmiaeni453xkrkal00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:04:25.315Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xwipej66qundfmiaeni453xkrkal00 -ts=2026-04-22T08:04:25.315Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T08:04:25.315Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T08:04:25.315Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T08:04:25.315Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:04:25.365Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xwipej66qundfmiaeni453xkrkal00 ts=2026-04-22T08:04:25.365Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T08:04:25.365Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:04:25.644Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xwipej66qundfmiaeni453xkrkal00 ts=2026-04-22T08:04:25.644Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:04:25.645Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:04:26.976Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xwipej66qundfmiaeni453xkrkal00 ts=2026-04-22T08:04:26.976Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:04:26.976Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:04:26.985Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xwipej66qundfmiaeni453xkrkal00 -ts=2026-04-22T08:04:26.986Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T08:04:26.986Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T08:04:26.986Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T08:04:26.986Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:04:26.994Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xwipej66qundfmiaeni453xkrkal00 -ts=2026-04-22T08:04:26.994Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:04:26.994Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:04:26.994Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:04:26.994Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:04:28.253Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xwipej66qundfmiaeni453xkrkal00 ts=2026-04-22T08:04:28.253Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:04:28.253Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:04:28.333Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:04:28.333Z level=INFO target=test-suite msg="cleaning up test" stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep @@ -854,9 +854,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw websockets keep actor awake 3274ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw fetch requests keep actor awake 3270ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping 3164ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared 3237ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared 1136ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake 3605ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared 3237ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared 1136ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake 3605ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep 1425ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket onmessage handler delays sleep 1297ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep 1570ms @@ -876,9 +876,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep @@ -898,9 +898,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep diff --git a/.agent/notes/us120-postfix/run5.log b/.agent/notes/us120-postfix/run5.log index 5541cd00b6..4276e50ddd 100644 --- a/.agent/notes/us120-postfix/run5.log +++ b/.agent/notes/us120-postfix/run5.log @@ -2005,130 +2005,130 @@ ts=2026-04-22T08:05:16.025Z level=DEBUG target=actor-client msg="disposing clien stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping ts=2026-04-22T08:05:16.025Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:05:16.571Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:05:16.571Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:05:16.571Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:05:16.571Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T08:05:16.571Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:39415/actors?namespace=driver-57d1a338-7994-4f0c-83a2-e5f61618f52a" ts=2026-04-22T08:05:16.571Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:39415/actors?namespace=driver-57d1a338-7994-4f0c-83a2-e5f61618f52a" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T08:05:16.599Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=lfxz028xsztso9ipx72itva39nal00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T08:05:16.599Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=lfxz028xsztso9ipx72itva39nal00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:05:16.599Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=lfxz028xsztso9ipx72itva39nal00 ts=2026-04-22T08:05:16.599Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:05:16.599Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:05:16.665Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=lfxz028xsztso9ipx72itva39nal00 -ts=2026-04-22T08:05:16.665Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:05:16.665Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:05:16.665Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:05:16.665Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:05:17.925Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=lfxz028xsztso9ipx72itva39nal00 ts=2026-04-22T08:05:17.925Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:05:17.925Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:05:17.934Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=lfxz028xsztso9ipx72itva39nal00 -ts=2026-04-22T08:05:17.934Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:05:17.934Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:05:17.934Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:05:17.934Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:05:19.192Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=lfxz028xsztso9ipx72itva39nal00 ts=2026-04-22T08:05:19.192Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:05:19.192Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:05:19.272Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T08:05:19.273Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:05:19.829Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:05:19.829Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:05:19.829Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:05:19.829Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" ts=2026-04-22T08:05:19.829Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:39415/actors?namespace=driver-35466871-d03e-46a2-9b9f-7e790f56efb7" ts=2026-04-22T08:05:19.830Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:39415/actors?namespace=driver-35466871-d03e-46a2-9b9f-7e790f56efb7" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T08:05:19.909Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xkddgouq387s138rvn1iafono8bl00 name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T08:05:19.909Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xkddgouq387s138rvn1iafono8bl00 name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:05:19.909Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xkddgouq387s138rvn1iafono8bl00 -ts=2026-04-22T08:05:19.909Z level=DEBUG target=actor-client msg="handling action" name=setDelayPreventSleepDuringShutdown encoding=bare -ts=2026-04-22T08:05:19.909Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayPreventSleepDuringShutdown encoding=bare +ts=2026-04-22T08:05:19.909Z level=DEBUG target=actor-client msg="handling action" name=setDelayKeepAwakeDuringShutdown encoding=bare +ts=2026-04-22T08:05:19.909Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayKeepAwakeDuringShutdown encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:05:19.977Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xkddgouq387s138rvn1iafono8bl00 ts=2026-04-22T08:05:19.977Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T08:05:19.977Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:05:20.407Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xkddgouq387s138rvn1iafono8bl00 ts=2026-04-22T08:05:20.407Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:05:20.408Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:05:20.542Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T08:05:20.542Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:05:21.135Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:05:21.135Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:05:21.135Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:05:21.135Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T08:05:21.135Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:39415/actors?namespace=driver-71667ba8-7acf-409c-8208-9055b5792937" ts=2026-04-22T08:05:21.135Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:39415/actors?namespace=driver-71667ba8-7acf-409c-8208-9055b5792937" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T08:05:21.172Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=dxh9ieyttgzljbvenrjbzjcsooal00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T08:05:21.172Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=dxh9ieyttgzljbvenrjbzjcsooal00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:05:21.172Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dxh9ieyttgzljbvenrjbzjcsooal00 -ts=2026-04-22T08:05:21.172Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T08:05:21.172Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T08:05:21.172Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T08:05:21.172Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:05:21.224Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dxh9ieyttgzljbvenrjbzjcsooal00 ts=2026-04-22T08:05:21.224Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T08:05:21.224Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:05:21.502Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dxh9ieyttgzljbvenrjbzjcsooal00 ts=2026-04-22T08:05:21.502Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:05:21.503Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:05:22.831Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dxh9ieyttgzljbvenrjbzjcsooal00 ts=2026-04-22T08:05:22.831Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:05:22.831Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:05:22.842Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dxh9ieyttgzljbvenrjbzjcsooal00 -ts=2026-04-22T08:05:22.842Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T08:05:22.842Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T08:05:22.842Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T08:05:22.842Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:05:22.853Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dxh9ieyttgzljbvenrjbzjcsooal00 -ts=2026-04-22T08:05:22.854Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T08:05:22.854Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T08:05:22.854Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T08:05:22.854Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:05:24.111Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=dxh9ieyttgzljbvenrjbzjcsooal00 ts=2026-04-22T08:05:24.111Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T08:05:24.111Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:05:24.188Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T08:05:24.188Z level=INFO target=test-suite msg="cleaning up test" stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep @@ -2332,9 +2332,9 @@ ts=2026-04-22T08:05:32.284Z level=INFO target=test-suite msg="cleaning up test" ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw websockets keep actor awake 3264ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw fetch requests keep actor awake 3227ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping 3153ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared 3248ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared 1276ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake 3638ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared 3248ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared 1276ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake 3638ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep 1472ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket onmessage handler delays sleep 1311ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep 1434ms diff --git a/.agent/notes/us120-repro/run1.log b/.agent/notes/us120-repro/run1.log index 1f93d00760..814a9dd4a8 100644 --- a/.agent/notes/us120-repro/run1.log +++ b/.agent/notes/us120-repro/run1.log @@ -524,130 +524,130 @@ ts=2026-04-22T07:52:22.863Z level=DEBUG target=actor-client msg="disposing clien stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping ts=2026-04-22T07:52:22.863Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:52:23.408Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:52:23.408Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:52:23.408Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:52:23.408Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T07:52:23.408Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:33789/actors?namespace=driver-b6fb907f-ba13-49e8-a08b-1e8abce77d8b" ts=2026-04-22T07:52:23.408Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:33789/actors?namespace=driver-b6fb907f-ba13-49e8-a08b-1e8abce77d8b" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:52:23.441Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=182zxm0cdukvwo2c8spqtwjzsbbl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:52:23.441Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=182zxm0cdukvwo2c8spqtwjzsbbl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:52:23.441Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=182zxm0cdukvwo2c8spqtwjzsbbl00 ts=2026-04-22T07:52:23.441Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:52:23.441Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:52:23.508Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=182zxm0cdukvwo2c8spqtwjzsbbl00 -ts=2026-04-22T07:52:23.509Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:52:23.509Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:52:23.509Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:52:23.509Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:52:24.769Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=182zxm0cdukvwo2c8spqtwjzsbbl00 ts=2026-04-22T07:52:24.769Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:52:24.769Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:52:24.781Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=182zxm0cdukvwo2c8spqtwjzsbbl00 -ts=2026-04-22T07:52:24.781Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:52:24.781Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:52:24.781Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:52:24.781Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:52:26.040Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=182zxm0cdukvwo2c8spqtwjzsbbl00 ts=2026-04-22T07:52:26.041Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:52:26.041Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:52:26.113Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:52:26.113Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:52:26.656Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:52:26.656Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:52:26.656Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:52:26.656Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" ts=2026-04-22T07:52:26.656Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:33789/actors?namespace=driver-706a2f87-49d5-4b53-ac83-52b8dae71e78" ts=2026-04-22T07:52:26.656Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:33789/actors?namespace=driver-706a2f87-49d5-4b53-ac83-52b8dae71e78" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:52:26.692Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=holtdv2blk409nh2we1v7acqaqbl00 name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:52:26.692Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=holtdv2blk409nh2we1v7acqaqbl00 name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:52:26.692Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=holtdv2blk409nh2we1v7acqaqbl00 -ts=2026-04-22T07:52:26.692Z level=DEBUG target=actor-client msg="handling action" name=setDelayPreventSleepDuringShutdown encoding=bare -ts=2026-04-22T07:52:26.692Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayPreventSleepDuringShutdown encoding=bare +ts=2026-04-22T07:52:26.692Z level=DEBUG target=actor-client msg="handling action" name=setDelayKeepAwakeDuringShutdown encoding=bare +ts=2026-04-22T07:52:26.692Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayKeepAwakeDuringShutdown encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:52:26.744Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=holtdv2blk409nh2we1v7acqaqbl00 ts=2026-04-22T07:52:26.744Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T07:52:26.744Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:52:27.169Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=holtdv2blk409nh2we1v7acqaqbl00 ts=2026-04-22T07:52:27.169Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:52:27.169Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:52:27.245Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:52:27.245Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:52:27.790Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:52:27.790Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:52:27.790Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:52:27.790Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T07:52:27.790Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:33789/actors?namespace=driver-d674dfb5-3572-426e-988d-69750c6fdbce" ts=2026-04-22T07:52:27.790Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:33789/actors?namespace=driver-d674dfb5-3572-426e-988d-69750c6fdbce" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:52:27.829Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=tpe6ht03q7poedrvtl9awyp1rhcl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:52:27.829Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=tpe6ht03q7poedrvtl9awyp1rhcl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:52:27.829Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tpe6ht03q7poedrvtl9awyp1rhcl00 -ts=2026-04-22T07:52:27.829Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T07:52:27.829Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T07:52:27.829Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T07:52:27.829Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:52:27.897Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tpe6ht03q7poedrvtl9awyp1rhcl00 ts=2026-04-22T07:52:27.897Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T07:52:27.897Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:52:28.171Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tpe6ht03q7poedrvtl9awyp1rhcl00 ts=2026-04-22T07:52:28.171Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:52:28.171Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:52:29.496Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tpe6ht03q7poedrvtl9awyp1rhcl00 ts=2026-04-22T07:52:29.496Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:52:29.496Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:52:29.508Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tpe6ht03q7poedrvtl9awyp1rhcl00 -ts=2026-04-22T07:52:29.509Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T07:52:29.509Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T07:52:29.509Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T07:52:29.509Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:52:29.517Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tpe6ht03q7poedrvtl9awyp1rhcl00 -ts=2026-04-22T07:52:29.517Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:52:29.517Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:52:29.517Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:52:29.517Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:52:30.777Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tpe6ht03q7poedrvtl9awyp1rhcl00 ts=2026-04-22T07:52:30.777Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:52:30.777Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:52:30.849Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:52:30.849Z level=INFO target=test-suite msg="cleaning up test" stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep @@ -854,9 +854,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw websockets keep actor awake 3264ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw fetch requests keep actor awake 3255ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping 3167ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared 3251ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared 1131ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake 3604ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared 3251ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared 1131ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake 3604ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep 1431ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket onmessage handler delays sleep 1264ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep 1408ms @@ -876,9 +876,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep @@ -898,9 +898,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep diff --git a/.agent/notes/us120-repro/run2.log b/.agent/notes/us120-repro/run2.log index ad027a883e..b01c556abc 100644 --- a/.agent/notes/us120-repro/run2.log +++ b/.agent/notes/us120-repro/run2.log @@ -522,130 +522,130 @@ ts=2026-04-22T07:53:45.023Z level=DEBUG target=actor-client msg="disposing clien stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping ts=2026-04-22T07:53:45.023Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:53:45.591Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:53:45.591Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:53:45.592Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:53:45.592Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T07:53:45.592Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:36225/actors?namespace=driver-e9effa7a-8540-431a-8e15-911096f274cb" ts=2026-04-22T07:53:45.592Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:36225/actors?namespace=driver-e9effa7a-8540-431a-8e15-911096f274cb" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:53:45.681Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xw6446herv0847yeovwlvteem5bl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:53:45.681Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xw6446herv0847yeovwlvteem5bl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:53:45.681Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xw6446herv0847yeovwlvteem5bl00 ts=2026-04-22T07:53:45.682Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:53:45.682Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:53:45.737Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xw6446herv0847yeovwlvteem5bl00 -ts=2026-04-22T07:53:45.738Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:53:45.738Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:53:45.738Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:53:45.738Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:53:46.999Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xw6446herv0847yeovwlvteem5bl00 ts=2026-04-22T07:53:46.999Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:53:46.999Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:53:47.011Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xw6446herv0847yeovwlvteem5bl00 -ts=2026-04-22T07:53:47.011Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:53:47.011Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:53:47.011Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:53:47.011Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:53:48.270Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xw6446herv0847yeovwlvteem5bl00 ts=2026-04-22T07:53:48.270Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:53:48.270Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:53:48.344Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:53:48.345Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:53:48.883Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:53:48.883Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:53:48.883Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:53:48.883Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" ts=2026-04-22T07:53:48.883Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:36225/actors?namespace=driver-2f00f17e-cf47-41af-bbf3-5b96387bd179" ts=2026-04-22T07:53:48.883Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:36225/actors?namespace=driver-2f00f17e-cf47-41af-bbf3-5b96387bd179" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:53:48.907Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xwyt93js2tlehr90xy1phcwj8qbl00 name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:53:48.907Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xwyt93js2tlehr90xy1phcwj8qbl00 name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:53:48.907Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xwyt93js2tlehr90xy1phcwj8qbl00 -ts=2026-04-22T07:53:48.907Z level=DEBUG target=actor-client msg="handling action" name=setDelayPreventSleepDuringShutdown encoding=bare -ts=2026-04-22T07:53:48.907Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayPreventSleepDuringShutdown encoding=bare +ts=2026-04-22T07:53:48.907Z level=DEBUG target=actor-client msg="handling action" name=setDelayKeepAwakeDuringShutdown encoding=bare +ts=2026-04-22T07:53:48.907Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayKeepAwakeDuringShutdown encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:53:48.972Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xwyt93js2tlehr90xy1phcwj8qbl00 ts=2026-04-22T07:53:48.973Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T07:53:48.973Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:53:49.403Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xwyt93js2tlehr90xy1phcwj8qbl00 ts=2026-04-22T07:53:49.403Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:53:49.403Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:53:49.477Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:53:49.477Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:53:50.020Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:53:50.020Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:53:50.020Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:53:50.020Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T07:53:50.020Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:36225/actors?namespace=driver-ce66772f-b28f-48bb-aa5b-f4d9ed6f938b" ts=2026-04-22T07:53:50.020Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:36225/actors?namespace=driver-ce66772f-b28f-48bb-aa5b-f4d9ed6f938b" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:53:50.069Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=539841hbd31pok5gdvt0n2bb83cl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:53:50.069Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=539841hbd31pok5gdvt0n2bb83cl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:53:50.069Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=539841hbd31pok5gdvt0n2bb83cl00 -ts=2026-04-22T07:53:50.069Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T07:53:50.069Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T07:53:50.069Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T07:53:50.069Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:53:50.122Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=539841hbd31pok5gdvt0n2bb83cl00 ts=2026-04-22T07:53:50.122Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T07:53:50.122Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:53:50.398Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=539841hbd31pok5gdvt0n2bb83cl00 ts=2026-04-22T07:53:50.398Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:53:50.398Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:53:51.720Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=539841hbd31pok5gdvt0n2bb83cl00 ts=2026-04-22T07:53:51.720Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:53:51.720Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:53:51.732Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=539841hbd31pok5gdvt0n2bb83cl00 -ts=2026-04-22T07:53:51.732Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T07:53:51.732Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T07:53:51.732Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T07:53:51.732Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:53:51.745Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=539841hbd31pok5gdvt0n2bb83cl00 -ts=2026-04-22T07:53:51.746Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:53:51.746Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:53:51.746Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:53:51.746Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:53:53.010Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=539841hbd31pok5gdvt0n2bb83cl00 ts=2026-04-22T07:53:53.010Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:53:53.010Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:53:53.084Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:53:53.084Z level=INFO target=test-suite msg="cleaning up test" stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep @@ -852,9 +852,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw websockets keep actor awake 3263ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw fetch requests keep actor awake 3244ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping 3162ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared 3321ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared 1132ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake 3608ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared 3321ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared 1132ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake 3608ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep 1424ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket onmessage handler delays sleep 1358ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep 1446ms @@ -874,9 +874,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep @@ -896,9 +896,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep diff --git a/.agent/notes/us120-repro/run3.log b/.agent/notes/us120-repro/run3.log index caaa32e886..bc0f1101bd 100644 --- a/.agent/notes/us120-repro/run3.log +++ b/.agent/notes/us120-repro/run3.log @@ -524,130 +524,130 @@ ts=2026-04-22T07:55:07.543Z level=DEBUG target=actor-client msg="disposing clien stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping ts=2026-04-22T07:55:07.543Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:55:08.089Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:55:08.089Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:55:08.089Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:55:08.089Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T07:55:08.089Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:34217/actors?namespace=driver-e72e2b02-990c-4866-844d-1500336ca0b1" ts=2026-04-22T07:55:08.089Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:34217/actors?namespace=driver-e72e2b02-990c-4866-844d-1500336ca0b1" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:55:08.130Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xktdtt7659fueiok1z6q3u9kq2cl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:55:08.130Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xktdtt7659fueiok1z6q3u9kq2cl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:55:08.130Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xktdtt7659fueiok1z6q3u9kq2cl00 ts=2026-04-22T07:55:08.130Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:55:08.130Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:55:08.192Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xktdtt7659fueiok1z6q3u9kq2cl00 -ts=2026-04-22T07:55:08.192Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:55:08.192Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:55:08.192Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:55:08.192Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:55:09.452Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xktdtt7659fueiok1z6q3u9kq2cl00 ts=2026-04-22T07:55:09.452Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:55:09.452Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:55:09.464Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xktdtt7659fueiok1z6q3u9kq2cl00 -ts=2026-04-22T07:55:09.464Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:55:09.464Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:55:09.464Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:55:09.464Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:55:10.725Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xktdtt7659fueiok1z6q3u9kq2cl00 ts=2026-04-22T07:55:10.725Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:55:10.725Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:55:10.796Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:55:10.797Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:55:11.340Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:55:11.340Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:55:11.340Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:55:11.340Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" ts=2026-04-22T07:55:11.340Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:34217/actors?namespace=driver-69f759a3-4f61-4b95-b175-bcc992b6d8a8" ts=2026-04-22T07:55:11.340Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:34217/actors?namespace=driver-69f759a3-4f61-4b95-b175-bcc992b6d8a8" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:55:11.393Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=pmhnvlkx7dwnzo8yo0ttr0hmnqbl00 name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:55:11.393Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=pmhnvlkx7dwnzo8yo0ttr0hmnqbl00 name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:55:11.394Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=pmhnvlkx7dwnzo8yo0ttr0hmnqbl00 -ts=2026-04-22T07:55:11.394Z level=DEBUG target=actor-client msg="handling action" name=setDelayPreventSleepDuringShutdown encoding=bare -ts=2026-04-22T07:55:11.394Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayPreventSleepDuringShutdown encoding=bare +ts=2026-04-22T07:55:11.394Z level=DEBUG target=actor-client msg="handling action" name=setDelayKeepAwakeDuringShutdown encoding=bare +ts=2026-04-22T07:55:11.394Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayKeepAwakeDuringShutdown encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:55:11.481Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=pmhnvlkx7dwnzo8yo0ttr0hmnqbl00 ts=2026-04-22T07:55:11.481Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T07:55:11.481Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:55:11.902Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=pmhnvlkx7dwnzo8yo0ttr0hmnqbl00 ts=2026-04-22T07:55:11.902Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:55:11.902Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:55:11.977Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:55:11.977Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:55:12.516Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:55:12.516Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:55:12.516Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:55:12.516Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T07:55:12.516Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:34217/actors?namespace=driver-6b87e067-bb64-447f-ba7a-5b13440bd506" ts=2026-04-22T07:55:12.516Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:34217/actors?namespace=driver-6b87e067-bb64-447f-ba7a-5b13440bd506" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:55:12.552Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=9i3lgpqqqic358ji0fpwglp84ocl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:55:12.552Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=9i3lgpqqqic358ji0fpwglp84ocl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:55:12.553Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9i3lgpqqqic358ji0fpwglp84ocl00 -ts=2026-04-22T07:55:12.553Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T07:55:12.553Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T07:55:12.553Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T07:55:12.553Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:55:12.616Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9i3lgpqqqic358ji0fpwglp84ocl00 ts=2026-04-22T07:55:12.616Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T07:55:12.616Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:55:12.881Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9i3lgpqqqic358ji0fpwglp84ocl00 ts=2026-04-22T07:55:12.881Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:55:12.881Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:55:14.212Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9i3lgpqqqic358ji0fpwglp84ocl00 ts=2026-04-22T07:55:14.212Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:55:14.212Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:55:14.223Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9i3lgpqqqic358ji0fpwglp84ocl00 -ts=2026-04-22T07:55:14.223Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T07:55:14.223Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T07:55:14.223Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T07:55:14.223Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:55:14.231Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9i3lgpqqqic358ji0fpwglp84ocl00 -ts=2026-04-22T07:55:14.231Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:55:14.231Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:55:14.231Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:55:14.231Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:55:15.490Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9i3lgpqqqic358ji0fpwglp84ocl00 ts=2026-04-22T07:55:15.490Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:55:15.490Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:55:15.569Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:55:15.569Z level=INFO target=test-suite msg="cleaning up test" stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep @@ -854,9 +854,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw websockets keep actor awake 3273ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw fetch requests keep actor awake 3239ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping 3160ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared 3252ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared 1181ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake 3591ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared 3252ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared 1181ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake 3591ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep 1416ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket onmessage handler delays sleep 1285ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep 1414ms @@ -876,9 +876,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep @@ -898,9 +898,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep diff --git a/.agent/notes/us120-repro/run4.log b/.agent/notes/us120-repro/run4.log index 784b088fc0..57e02c5ddf 100644 --- a/.agent/notes/us120-repro/run4.log +++ b/.agent/notes/us120-repro/run4.log @@ -1836,130 +1836,130 @@ ts=2026-04-22T07:56:30.700Z level=DEBUG target=actor-client msg="disposing clien stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping ts=2026-04-22T07:56:30.700Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:56:31.248Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:56:31.248Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:56:31.248Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:56:31.248Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T07:56:31.248Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:35329/actors?namespace=driver-ef03865d-c9e8-4f87-a669-cf7e4f541d05" ts=2026-04-22T07:56:31.248Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:35329/actors?namespace=driver-ef03865d-c9e8-4f87-a669-cf7e4f541d05" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:56:31.280Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=1oyuzvu8fyrbc2a83yyp9t8t5icl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:56:31.280Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=1oyuzvu8fyrbc2a83yyp9t8t5icl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:56:31.280Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=1oyuzvu8fyrbc2a83yyp9t8t5icl00 ts=2026-04-22T07:56:31.280Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:56:31.280Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:56:31.356Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=1oyuzvu8fyrbc2a83yyp9t8t5icl00 -ts=2026-04-22T07:56:31.356Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:56:31.356Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:56:31.356Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:56:31.356Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:56:32.617Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=1oyuzvu8fyrbc2a83yyp9t8t5icl00 ts=2026-04-22T07:56:32.617Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:56:32.617Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:56:32.628Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=1oyuzvu8fyrbc2a83yyp9t8t5icl00 -ts=2026-04-22T07:56:32.628Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:56:32.628Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:56:32.628Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:56:32.628Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:56:33.888Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=1oyuzvu8fyrbc2a83yyp9t8t5icl00 ts=2026-04-22T07:56:33.888Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:56:33.888Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:56:33.964Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:56:33.964Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:56:34.507Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:56:34.507Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:56:34.507Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:56:34.507Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" ts=2026-04-22T07:56:34.507Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:35329/actors?namespace=driver-fae156bf-dc3b-409b-bf0e-f23c16cd47b0" ts=2026-04-22T07:56:34.507Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:35329/actors?namespace=driver-fae156bf-dc3b-409b-bf0e-f23c16cd47b0" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:56:34.543Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=1shkh1hob38p1hdwyx1frn5dklbl00 name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:56:34.543Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=1shkh1hob38p1hdwyx1frn5dklbl00 name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:56:34.544Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=1shkh1hob38p1hdwyx1frn5dklbl00 -ts=2026-04-22T07:56:34.544Z level=DEBUG target=actor-client msg="handling action" name=setDelayPreventSleepDuringShutdown encoding=bare -ts=2026-04-22T07:56:34.544Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayPreventSleepDuringShutdown encoding=bare +ts=2026-04-22T07:56:34.544Z level=DEBUG target=actor-client msg="handling action" name=setDelayKeepAwakeDuringShutdown encoding=bare +ts=2026-04-22T07:56:34.544Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayKeepAwakeDuringShutdown encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:56:34.596Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=1shkh1hob38p1hdwyx1frn5dklbl00 ts=2026-04-22T07:56:34.596Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T07:56:34.596Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:56:35.012Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=1shkh1hob38p1hdwyx1frn5dklbl00 ts=2026-04-22T07:56:35.012Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:56:35.012Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:56:35.089Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:56:35.089Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:56:36.143Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:56:36.143Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:56:36.143Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:56:36.143Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T07:56:36.143Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:35329/actors?namespace=driver-533a9572-8426-4ff2-98c1-f202775900e5" ts=2026-04-22T07:56:36.143Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:35329/actors?namespace=driver-533a9572-8426-4ff2-98c1-f202775900e5" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:56:36.172Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xcfxfqt4exwpw9j7vo8tz16awhal00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:56:36.172Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=xcfxfqt4exwpw9j7vo8tz16awhal00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:56:36.173Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xcfxfqt4exwpw9j7vo8tz16awhal00 -ts=2026-04-22T07:56:36.173Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T07:56:36.173Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T07:56:36.173Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T07:56:36.173Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:56:36.244Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xcfxfqt4exwpw9j7vo8tz16awhal00 ts=2026-04-22T07:56:36.244Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T07:56:36.244Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:56:36.513Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xcfxfqt4exwpw9j7vo8tz16awhal00 ts=2026-04-22T07:56:36.513Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:56:36.513Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:56:37.841Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xcfxfqt4exwpw9j7vo8tz16awhal00 ts=2026-04-22T07:56:37.841Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:56:37.841Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:56:37.851Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xcfxfqt4exwpw9j7vo8tz16awhal00 -ts=2026-04-22T07:56:37.851Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T07:56:37.851Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T07:56:37.851Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T07:56:37.851Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:56:37.861Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xcfxfqt4exwpw9j7vo8tz16awhal00 -ts=2026-04-22T07:56:37.861Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:56:37.861Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:56:37.861Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:56:37.861Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:56:39.120Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=xcfxfqt4exwpw9j7vo8tz16awhal00 ts=2026-04-22T07:56:39.120Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:56:39.120Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:56:39.192Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:56:39.192Z level=INFO target=test-suite msg="cleaning up test" stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep @@ -2166,9 +2166,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw websockets keep actor awake 3266ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw fetch requests keep actor awake 3338ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping 3201ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared 3264ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared 1125ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake 4103ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared 3264ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared 1125ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake 4103ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep 1413ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket onmessage handler delays sleep 1274ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep 1408ms @@ -2188,9 +2188,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (cbor) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep @@ -2210,9 +2210,9 @@ If this is a long-running test, pass a timeout value as the last argument or con ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw websockets keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > active raw fetch requests keep actor awake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > noSleep option disables sleeping - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep delays shutdown until cleared - ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > preventSleep can be restored during onWake + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake delays shutdown until cleared + ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > keepAwake can be restored during onWake ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket onmessage handler delays sleep ↓ Actor Sleep > static registry > encoding (json) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep diff --git a/.agent/notes/us120-repro/run5.log b/.agent/notes/us120-repro/run5.log index afe477e9fe..80b6592ba9 100644 --- a/.agent/notes/us120-repro/run5.log +++ b/.agent/notes/us120-repro/run5.log @@ -499,130 +499,130 @@ ts=2026-04-22T07:57:25.781Z level=DEBUG target=actor-client msg="disposing clien stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping ts=2026-04-22T07:57:25.781Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:57:26.326Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:57:26.326Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:57:26.326Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:57:26.326Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T07:57:26.326Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:44635/actors?namespace=driver-d6fa59f9-3992-4207-9863-acfbee54dda8" ts=2026-04-22T07:57:26.326Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:44635/actors?namespace=driver-d6fa59f9-3992-4207-9863-acfbee54dda8" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared -ts=2026-04-22T07:57:26.353Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=9adbcuwtzlt2o30jgq6oiw1nlibl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared +ts=2026-04-22T07:57:26.353Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=9adbcuwtzlt2o30jgq6oiw1nlibl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:57:26.353Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9adbcuwtzlt2o30jgq6oiw1nlibl00 ts=2026-04-22T07:57:26.353Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:57:26.353Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:57:26.416Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9adbcuwtzlt2o30jgq6oiw1nlibl00 -ts=2026-04-22T07:57:26.416Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:57:26.416Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:57:26.416Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:57:26.416Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:57:27.676Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9adbcuwtzlt2o30jgq6oiw1nlibl00 ts=2026-04-22T07:57:27.677Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:57:27.677Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:57:27.686Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9adbcuwtzlt2o30jgq6oiw1nlibl00 -ts=2026-04-22T07:57:27.686Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:57:27.686Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:57:27.686Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:57:27.686Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:57:28.946Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=9adbcuwtzlt2o30jgq6oiw1nlibl00 ts=2026-04-22T07:57:28.946Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:57:28.946Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:57:29.021Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared ts=2026-04-22T07:57:29.021Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:57:29.560Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:57:29.560Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:57:29.560Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:57:29.560Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" ts=2026-04-22T07:57:29.560Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:44635/actors?namespace=driver-9a6dca53-533a-4ea9-ae84-556c44ef6d93" ts=2026-04-22T07:57:29.560Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:44635/actors?namespace=driver-9a6dca53-533a-4ea9-ae84-556c44ef6d93" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared -ts=2026-04-22T07:57:29.586Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=tpi9tdwpvp5j94vbmqpu1cescwal00 name=sleepWithPreventSleep key="[\"prevent-sleep-shutdown-delay\"]" created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared +ts=2026-04-22T07:57:29.586Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=tpi9tdwpvp5j94vbmqpu1cescwal00 name=sleepWithKeepAwake key="[\"keep-awake-shutdown-delay\"]" created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:57:29.586Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tpi9tdwpvp5j94vbmqpu1cescwal00 -ts=2026-04-22T07:57:29.586Z level=DEBUG target=actor-client msg="handling action" name=setDelayPreventSleepDuringShutdown encoding=bare -ts=2026-04-22T07:57:29.586Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayPreventSleepDuringShutdown encoding=bare +ts=2026-04-22T07:57:29.586Z level=DEBUG target=actor-client msg="handling action" name=setDelayKeepAwakeDuringShutdown encoding=bare +ts=2026-04-22T07:57:29.586Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setDelayKeepAwakeDuringShutdown encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:57:29.652Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tpi9tdwpvp5j94vbmqpu1cescwal00 ts=2026-04-22T07:57:29.652Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T07:57:29.652Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:57:30.079Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=tpi9tdwpvp5j94vbmqpu1cescwal00 ts=2026-04-22T07:57:30.079Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:57:30.079Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:57:30.153Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared ts=2026-04-22T07:57:30.153Z level=INFO target=test-suite msg="cleaning up test" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:57:30.705Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithPreventSleep key=[] parameters= createInRegion= +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:57:30.705Z level=DEBUG target=actor-client msg="get or create handle to actor" name=sleepWithKeepAwake key=[] parameters= createInRegion= -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:57:30.705Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithPreventSleep key=[] +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:57:30.705Z level=INFO target=engine-client msg="getOrCreateWithKey: getting or creating actor via engine api" name=sleepWithKeepAwake key=[] ts=2026-04-22T07:57:30.705Z level=DEBUG target=engine-client msg="making api call" method=PUT url="http://127.0.0.1:44635/actors?namespace=driver-f4bdd4ff-d358-4476-b4bc-fd89cdf1e7f6" ts=2026-04-22T07:57:30.705Z level=DEBUG target=actor-client msg="sending http request" url="http://127.0.0.1:44635/actors?namespace=driver-f4bdd4ff-d358-4476-b4bc-fd89cdf1e7f6" encoding=json -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake -ts=2026-04-22T07:57:30.787Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=txovupu7a64wtytawekuuqi2oscl00 name=sleepWithPreventSleep key=[] created=true +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake +ts=2026-04-22T07:57:30.787Z level=INFO target=engine-client msg="getOrCreateWithKey: actor ready" actorId=txovupu7a64wtytawekuuqi2oscl00 name=sleepWithKeepAwake key=[] created=true -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:57:30.787Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=txovupu7a64wtytawekuuqi2oscl00 -ts=2026-04-22T07:57:30.787Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T07:57:30.787Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T07:57:30.787Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T07:57:30.787Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:57:30.868Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=txovupu7a64wtytawekuuqi2oscl00 ts=2026-04-22T07:57:30.868Z level=DEBUG target=actor-client msg="handling action" name=triggerSleep encoding=bare ts=2026-04-22T07:57:30.868Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/triggerSleep encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:57:31.152Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=txovupu7a64wtytawekuuqi2oscl00 ts=2026-04-22T07:57:31.152Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:57:31.153Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:57:32.512Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=txovupu7a64wtytawekuuqi2oscl00 ts=2026-04-22T07:57:32.513Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:57:32.513Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:57:32.523Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=txovupu7a64wtytawekuuqi2oscl00 -ts=2026-04-22T07:57:32.523Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleepOnWake encoding=bare -ts=2026-04-22T07:57:32.523Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleepOnWake encoding=bare +ts=2026-04-22T07:57:32.523Z level=DEBUG target=actor-client msg="handling action" name=keepAwakeOnWake encoding=bare +ts=2026-04-22T07:57:32.523Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwakeOnWake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:57:32.531Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=txovupu7a64wtytawekuuqi2oscl00 -ts=2026-04-22T07:57:32.531Z level=DEBUG target=actor-client msg="handling action" name=setPreventSleep encoding=bare -ts=2026-04-22T07:57:32.531Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/setPreventSleep encoding=bare +ts=2026-04-22T07:57:32.531Z level=DEBUG target=actor-client msg="handling action" name=keepAwake encoding=bare +ts=2026-04-22T07:57:32.531Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/keepAwake encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:57:33.790Z level=DEBUG target=actor-client msg="using direct actor gateway target" actorId=txovupu7a64wtytawekuuqi2oscl00 ts=2026-04-22T07:57:33.791Z level=DEBUG target=actor-client msg="handling action" name=getStatus encoding=bare ts=2026-04-22T07:57:33.791Z level=DEBUG target=actor-client msg="sending http request" url=http://actor/action/getStatus encoding=bare -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:57:33.870Z level=DEBUG target=actor-client msg="disposing client" -stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake +stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake ts=2026-04-22T07:57:33.870Z level=INFO target=test-suite msg="cleaning up test" stdout | tests/driver/actor-sleep.test.ts > Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep @@ -826,9 +826,9 @@ ts=2026-04-22T07:57:41.860Z level=INFO target=test-suite msg="cleaning up test" ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw websockets keep actor awake 3267ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > active raw fetch requests keep actor awake 3229ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > noSleep option disables sleeping 3168ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep blocks auto sleep until cleared 3239ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep delays shutdown until cleared 1132ms - ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > preventSleep can be restored during onWake 3719ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake blocks auto sleep until cleared 3239ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake delays shutdown until cleared 1132ms + ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > keepAwake can be restored during onWake 3719ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener message handler delays sleep 1423ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket onmessage handler delays sleep 1289ms ✓ Actor Sleep > static registry > encoding (bare) > Actor Sleep Tests > async websocket addEventListener close handler delays sleep 1421ms diff --git a/.agent/specs/lifecycle-shutdown-unified-drain.md b/.agent/specs/lifecycle-shutdown-unified-drain.md index d9932b6d67..fe17284b0d 100644 --- a/.agent/specs/lifecycle-shutdown-unified-drain.md +++ b/.agent/specs/lifecycle-shutdown-unified-drain.md @@ -62,7 +62,7 @@ All wake sources must route through `reset_sleep_timer`. The existing `AsyncCoun ### 2. Two readiness functions -`can_sleep_state` (`sleep.rs:264-300`) today mixes concerns: readiness flags (`ready`, `started`), activity flags (`prevent_sleep`, `no_sleep`), run state (`run_handler_active_count`), drain counters, conn state. Split into two: +`can_sleep_state` (`sleep.rs:264-300`) today mixes concerns: readiness flags (`ready`, `started`), activity flags (`keep_awake`, `no_sleep`), run state (`run_handler_active_count`), drain counters, conn state. Split into two: **`can_arm_sleep_timer() -> CanSleep`** (async, for `Started` only). Preserves existing `can_sleep_state` semantics. Used to decide whether `sleep_deadline` is armed. @@ -74,7 +74,7 @@ All wake sources must route through `reset_sleep_timer`. The existing `AsyncCoun - `active_http_request_count == 0` - `websocket_callback_count == 0` - `pending_disconnect_count == 0` -- `!prevent_sleep` (honors `lifecycle.mdx:818,746` promise) +- `!keep_awake` (honors `lifecycle.mdx:818,746` promise) Explicitly **not** checked in `can_finalize_sleep`: - `ready` / `started` — flipped to `false` at grace entry (§4); not relevant to drain. @@ -343,7 +343,7 @@ Every site that mutates an input of `can_arm_sleep_timer` or `can_finalize_sleep - All four drain counters' increment/decrement sites. Ensure each decrement-to-zero calls `reset_sleep_timer`. Today `AsyncCounter::register_change_notify(&activity_notify)` (`sleep.rs:615`) covers counter changes via `notify_waiters`; that wiring is replaced per §1 with a callback that invokes `reset_sleep_timer`. - `set_ready`, `set_started` — add `reset_sleep_timer` calls (they currently don't). `transition_to` in `task.rs:2147-2167` will invoke them. -- `notify_prevent_sleep_changed` (`sleep.rs:569`) — add `reset_sleep_timer`. +- Sleep-affecting activity changes call `reset_sleep_timer`. - `conn` add/remove — already call `reset_sleep_timer` (`context.rs:748, :755`). - `handle_run_handle_outcome` — add `reset_sleep_timer` after `self.run_handle = None` (`task.rs:1322`). - `ActorContext::on_state_change` callback completion — new; see 11.2. @@ -377,7 +377,7 @@ Before committing §10's unbounded-channel change, enumerate everything that cur > > The entire window is bounded by `sleepGracePeriod` on sleep or `onDestroyTimeout` on destroy (defaults: 15 seconds each). If it is exceeded, the actor force-aborts any remaining work and proceeds to state save anyway. -- Update options table default for `sleepGracePeriod`: "Default 15000ms. Total graceful shutdown window for hooks, waitUntil, async raw WebSocket handlers, disconnects, and waiting for `preventSleep` to clear." +- Update options table default for `sleepGracePeriod`: "Default 15000ms. Total graceful shutdown window for hooks, waitUntil, async raw WebSocket handlers, disconnects, and waiting for `keepAwake` to clear." ## Invariants (post-change) @@ -397,7 +397,7 @@ Before committing §10's unbounded-channel change, enumerate everything that cur Each step is independently shippable and revertable. Tests must pass before the next step starts. -**Step 1 — Unify signal primitive.** Rewrite `reset_sleep_timer` / `notify_activity_dirty` as notify-only (§1). Delete `LifecycleEvent::ActivityDirty` variant, handler, `drain_activity_dirty`, parallel arm. Add `reset_sleep_timer` calls at `set_ready`/`set_started`/`notify_prevent_sleep_changed`/`handle_run_handle_outcome` (§11.1). Replace `AsyncCounter::register_change_notify` consumer with a callback that calls `reset_sleep_timer`. Existing tests for sleep timer + activity dedup must still pass. +**Step 1 — Unify signal primitive.** Rewrite `reset_sleep_timer` / `notify_activity_dirty` as notify-only (§1). Delete `LifecycleEvent::ActivityDirty` variant, handler, `drain_activity_dirty`, parallel arm. Add `reset_sleep_timer` calls at `set_ready`/`set_started`/`handle_run_handle_outcome` (§11.1). Replace `AsyncCounter::register_change_notify` consumer with a callback that calls `reset_sleep_timer`. Existing tests for sleep timer + activity dedup must still pass. **Step 2 — Split readiness.** Introduce `can_arm_sleep_timer` (rename of `can_sleep_state`) and new `can_finalize_sleep`. Update existing `Started`-state callers. No grace callers yet. Tests unchanged. @@ -429,7 +429,7 @@ Each step is independently shippable and revertable. Tests must pass before the - `core_counter_decrements_on_hook_completion`: verify that the completion callback decrements `core_dispatched_hooks` exactly once per event, and that grace exits via drain path only when counter reaches zero. - `hibernatable_conn_preserved_on_sleep`: hibernatable conn's state is flushed via `pending_hibernation_updates`, `onDisconnect` NOT called. - `hibernatable_conn_fires_ondisconnect_on_destroy`: same conn on destroy fires `onDisconnect`. -- `preventSleep_during_grace_delays_finalize`: `setPreventSleep(true)` in `onSleep` → grace waits until `setPreventSleep(false)` or deadline. +- `keepAwake_during_grace_delays_finalize`: `keepAwake(true)` in `onSleep` → grace waits until `keepAwake(false)` or deadline. - `alarm_does_not_fire_during_grace`: scheduled alarm due during grace does not invoke user alarm handler. - `dispatch_drained_on_grace_entry`: dispatch in inbox at Stop arrival completes as tracked work, not dropped. - `activity_signal_dedup`: 1000 rapid `reset_sleep_timer` calls produce ≤ a few main-loop re-evaluations. diff --git a/.agent/specs/rivetkit-core-event-driven-drains.md b/.agent/specs/rivetkit-core-event-driven-drains.md index 54fc6d4295..d047d1a3d4 100644 --- a/.agent/specs/rivetkit-core-event-driven-drains.md +++ b/.agent/specs/rivetkit-core-event-driven-drains.md @@ -104,7 +104,7 @@ struct WorkRegistry { shutdown_counter: Arc, shutdown_tasks: Mutex>, idle_notify: Notify, // composed: fires when any of keep_awake / internal_keep_awake / http reaches zero - prevent_sleep_notify: Notify, // pinged on every ctx.set_prevent_sleep flip + keep_awake_notify: Notify, // pinged on every ctx.keep_awake flip } impl SleepController { @@ -188,12 +188,12 @@ The aggregate drain requires `keep_awake == 0 && internal_keep_awake == 0 && act Simpler alternative: expose an `AsyncCounter::subscribe(Arc)` that pipes zero-transitions to an external Notify. Both approaches work; pick whichever reads cleanest. -### `prevent_sleep` bool +### `keep_awake` bool Rarely flipped. Two options: 1. `watch::channel` on `ActorContext`, subscribers re-check on every send. -2. Dedicated `prevent_sleep_notify: Notify` pinged on every flip. +2. Dedicated `keep_awake_notify: Notify` pinged on every flip. Either is fine. Recommend (2) for symmetry with the other notify sites. @@ -212,7 +212,7 @@ Audit `ctx.destroy()` at `context.rs:382-389` for consistency — it has no slee | File:line | Function | Action | |-----------|----------|--------| | `actor/sleep.rs:240-258` | `wait_for_sleep_idle_window` | Replace poll loop with `idle_notify`-driven wait (composed over keep_awake, internal_keep_awake, http counters) | -| `actor/sleep.rs:260-281` | `wait_for_shutdown_tasks` | Replace with `shutdown_counter.wait_zero(deadline).await` + `websocket_callback.wait_zero` + `prevent_sleep` notify | +| `actor/sleep.rs:260-281` | `wait_for_shutdown_tasks` | Replace with `shutdown_counter.wait_zero(deadline).await` + `websocket_callback.wait_zero` + `keep_awake` notify | | `actor/sleep.rs:283-303` | `wait_for_internal_keep_awake_idle` | Replace with `internal_keep_awake.wait_zero(deadline)` | | `actor/sleep.rs:305-326` | `wait_for_http_requests_drained` | Replace with `envoy_handle.http_request_counter(...).wait_zero(deadline)` | | `actor/sleep.rs:24-26` | `keep_awake_count`, `internal_keep_awake_count`, `websocket_callback_count` AtomicUsize fields | Replace with `Arc` fields on `WorkRegistry` | diff --git a/.agent/specs/rivetkit-rust-typed-event-loop.md b/.agent/specs/rivetkit-rust-typed-event-loop.md index 8ada598e83..95e227c834 100644 --- a/.agent/specs/rivetkit-rust-typed-event-loop.md +++ b/.agent/specs/rivetkit-rust-typed-event-loop.md @@ -388,8 +388,7 @@ impl Ctx { // Lifecycle signaling (envoy-visible) pub fn sleep(&self); pub fn destroy(&self); - pub fn set_prevent_sleep(&self, enabled: bool); - pub fn prevent_sleep(&self) -> bool; + pub pub fn keep_awake(&self) -> bool; pub fn wait_until(&self, future: impl Future + Send + 'static); // Typed broadcast + connection enumeration diff --git a/.agent/specs/rivetkit-rust.md b/.agent/specs/rivetkit-rust.md index 3c5f69df2c..ac29b5622d 100644 --- a/.agent/specs/rivetkit-rust.md +++ b/.agent/specs/rivetkit-rust.md @@ -136,8 +136,7 @@ impl ActorContext { // Sleep control fn sleep(&self); // Defers to next tick. Does NOT fire abort signal. fn destroy(&self); // Defers to next tick. Fires abort signal immediately. - fn set_prevent_sleep(&self, prevent: bool); - fn prevent_sleep(&self) -> bool; + fn keep_awake(&self) -> bool; // Background work tracking fn wait_until(&self, future: impl Future + Send + 'static); @@ -575,8 +574,7 @@ impl Ctx { fn aborted(&self) -> bool; fn sleep(&self); fn destroy(&self); - fn set_prevent_sleep(&self, prevent: bool); - fn prevent_sleep(&self) -> bool; + fn keep_awake(&self) -> bool; fn wait_until(&self, future: impl Future + Send + 'static); // Typed event broadcast @@ -766,7 +764,7 @@ Note: step 14 is clarification that the abort signal fires at the beginning of ` - No pending disconnect callbacks - No active WebSocket callbacks 7. Call `on_sleep` (with remaining deadline budget). -8. Wait for shutdown tasks: `wait_until` futures, WebSocket callback futures, `prevent_sleep` to clear. +8. Wait for shutdown tasks: `wait_until` futures, WebSocket callback futures, `keep_awake` to clear. 9. Disconnect all non-hibernatable connections. 10. Wait for shutdown tasks again. 11. Save state immediately. Wait for all pending KV/SQLite writes. @@ -793,7 +791,7 @@ Destroy does NOT wait for idle sleep window. ALL must be true: - `ready` AND `started` -- `prevent_sleep` is false +- `keep_awake` is false - `no_sleep` config is false - No active HTTP requests - No active `keep_awake` / `internal_keep_awake` regions @@ -855,7 +853,7 @@ rivetkit-rust/packages/rivetkit-core/ │ ├── lifecycle.rs # Startup + shutdown sequences (sleep + destroy) │ ├── state.rs # State dirty tracking, throttled save, PersistedActor │ ├── vars.rs # Vars (transient, recreated each start) - │ ├── sleep.rs # can_sleep(), auto-sleep timer, prevent_sleep, keep_awake, internal_keep_awake + │ ├── sleep.rs # can_sleep(), auto-sleep timer, keep_awake, keep_awake, internal_keep_awake │ ├── schedule.rs # Schedule API, PersistedScheduleEvent, alarm sync, invoke_action_by_name │ ├── action.rs # Action dispatch, timeout wrapping, on_before_action_response │ ├── connection.rs # ConnHandle, lifecycle hooks, hibernation persistence, subscription tracking diff --git a/.agent/specs/rivetkit-task-architecture.md b/.agent/specs/rivetkit-task-architecture.md index d687a01fcb..c0cdd9bd09 100644 --- a/.agent/specs/rivetkit-task-architecture.md +++ b/.agent/specs/rivetkit-task-architecture.md @@ -357,7 +357,7 @@ The explicit end state is to remove `ActorVars`, `ActorContext::vars`, `ActorCon These TS APIs must be mirrored on `ActorContext` and are load-bearing for existing driver tests. -- `ctx.set_prevent_sleep(enabled: bool)` — toggle the `prevent_sleep` flag observed by `#canSleep` and by the `#waitShutdownTasks` drain loop. While set, the drain loop keeps looping up to the grace deadline even if every tracked counter is zero. +- `ctx.keep_awake(future)` — toggle the `keep_awake` flag observed by `#canSleep` and by the `#waitShutdownTasks` drain loop. While set, the drain loop keeps looping up to the grace deadline even if every tracked counter is zero. - `ctx.keep_awake(future: F) -> impl Future` — enter an external keep-awake region for the duration of `future`. Increments `active_async_regions.keep_awake` on entry and decrements on exit via a guard. User-facing. - `ctx.internal_keep_awake(future: F) -> impl Future` — same pattern but increments `active_async_regions.internal_keep_awake`. Subsystems (queue, websocket) use the thunk form to enter the region before user callback starts, avoiding a race where the sleep timer fires underneath newly scheduled work. - `ctx.cancelled() -> impl Future` and `ctx.is_cancelled() -> bool` — alias the existing `abort_signal()` and `is_cancelled()` surface in `context.rs` (`context.rs:142, 324, 362-367`). Do not remove the existing names; add the new names as aliases to avoid churning callers. @@ -436,7 +436,7 @@ The lifetime task owns the socket loop and invokes open/message/close callbacks. Sleep readiness stays centralized in core. It reads concurrent counters/snapshots matching the TS `#canSleep()` check (`instance/mod.ts:2497-2528` on `feat/sqlite-vfs-v2`): - not started / not ready -- `prevent_sleep` flag +- `keep_awake` flag - no-sleep config - active HTTP requests - user tasks in flight (`active_async_regions.user_task`) @@ -473,7 +473,7 @@ Mirrors `instance/mod.ts:.onStop("sleep")` at `:942-1022` on `feat/sqlite-vfs-v2 6. Wait for the `run` handler to finish with `run_stop_timeout` (default 15s). Done first so `on_sleep` observes `run` already stopped. 7. Compute the shutdown task deadline = `now + effective_sleep_grace_period`. 8. Run `on_sleep` with `on_sleep_timeout`. -9. Drain tracked work until the shutdown task deadline: `preventSleep` flag must be clear AND every tracked counter must hit zero. Any newly-entered `preventSleep` region keeps the drain loop running until deadline. +9. Drain tracked work until the shutdown task deadline: `keepAwake` flag must be clear AND every tracked counter must hit zero. Any newly-entered `keepAwake` region keeps the drain loop running until deadline. 10. Persist hibernatable connections. 11. Disconnect non-hibernatable connections. Hibernatable connections stay attached so they can be re-delivered on wake. 12. Drain tracked work again (this lets WS close callbacks finish). @@ -534,7 +534,7 @@ Tracked work blocks sleep and destroy until it completes or the effective sleep - `wait_until` registrations - `ctx.keep_awake(...)` regions - `ctx.internal_keep_awake(...)` regions -- `prevent_sleep` flag (holds the drain loop open even if all counters are zero) +- `keep_awake` flag (holds the drain loop open even if all counters are zero) - `on_state_change` runner task - State saves - SQLite cleanup diff --git a/docs-internal/engine/sleep-sequence.md b/docs-internal/engine/sleep-sequence.md index 9f9d5c7637..b424803bc5 100644 --- a/docs-internal/engine/sleep-sequence.md +++ b/docs-internal/engine/sleep-sequence.md @@ -16,11 +16,9 @@ Two user-facing primitives in TypeScript. Both accept a `Promise`, never a closu | `c.keepAwake(promise)` | Yes | Yes | Returns the same promise. Use for work the actor must stay up for. | | `c.waitUntil(promise)` | No | Yes | Returns void. Use for best-effort flush/cleanup work that is allowed to complete inside the grace window. | -`c.setPreventSleep(b)` and `c.preventSleep` are deprecated no-ops retained for binary / call-site compatibility. They will be removed in 2.2.0. - ### Why two primitives and not one -`keepAwake` is scoped, non-leaky, and symmetric with `waitUntil`. `setPreventSleep` was a flag that had to be paired by hand; forgetting to clear it wedged the actor awake. A promise-scoped counter cannot leak: when the promise settles (resolve or reject), the counter decrements. +`keepAwake` is scoped, non-leaky, and symmetric with `waitUntil`. A promise-scoped counter cannot leak: when the promise settles (resolve or reject), the counter decrements. ### Why separate `keep_awake` and `internal_keep_awake` in core @@ -33,7 +31,7 @@ Two predicates govern the sleep state machine. Both live on `ActorContext` / `Sl - `can_arm_sleep_timer()` — the idle predicate. Returns `CanSleep::Yes` only when every sleep-affecting counter is zero and the run handler is inactive (or waiting on a queue). Used to start the sleep idle timer. - `can_finalize_sleep()` — the grace predicate. Returns `true` only when every shutdown-affecting counter is zero: `core_dispatched_hooks`, `shutdown_task_count`, `sleep_keep_awake`, `sleep_internal_keep_awake`, `active_http_requests`, `websocket_callbacks`, `pending_disconnects`. Used to advance from `SleepGrace` to `SleepFinalize` (or finalize destroy). -Removing `preventSleep` deleted both predicate branches. Any future sleep-affecting counter must add an entry in each predicate and must call `ActorContext::reset_sleep_timer()` on transitions that change the result. +Any future sleep-affecting counter must add an entry in each predicate and must call `ActorContext::reset_sleep_timer()` on transitions that change the result. ## Grace period and abort signals @@ -61,4 +59,4 @@ When the grace deadline elapses before `can_finalize_sleep()` returns true: ## Test harness parity - Rust integration tests live in `rivetkit-core/tests/modules/sleep.rs` and pin predicate behavior, grace period selection, and `save_final_state` cap. -- TypeScript driver tests in `rivetkit-typescript/packages/rivetkit/tests/driver/actor-sleep*.test.ts` cover abort-signal-at-grace-entry, `keepAwake` holding shutdown, `c.db` writes surviving `onSleep`, and regression coverage for `setPreventSleep` being a no-op. +- TypeScript driver tests in `rivetkit-typescript/packages/rivetkit/tests/driver/actor-sleep*.test.ts` cover abort-signal-at-grace-entry, `keepAwake` holding shutdown, and `c.db` writes surviving `onSleep`. diff --git a/rivetkit-rust/packages/rivetkit-core/CLAUDE.md b/rivetkit-rust/packages/rivetkit-core/CLAUDE.md index 7c072d2b98..5ac3941a25 100644 --- a/rivetkit-rust/packages/rivetkit-core/CLAUDE.md +++ b/rivetkit-rust/packages/rivetkit-core/CLAUDE.md @@ -8,7 +8,6 @@ ## Sleep state invariants - Any mutation that changes a `can_sleep` input must call `ActorContext::reset_sleep_timer()` so the `ActorTask` sleep deadline is re-evaluated. Inputs are: `ready`/`started`, `no_sleep`, `active_http_request_count`, `sleep_keep_awake_count`, `sleep_internal_keep_awake_count`, `pending_disconnect_count`, `conns()`, and `websocket_callback_count`. Missing this call leaves the sleep timer armed against stale state and triggers the `"sleep idle deadline elapsed but actor stayed awake"` warning on the next tick. -- `ActorContext::set_prevent_sleep(...)` / `prevent_sleep()` are deprecated no-ops kept for NAPI bridge compatibility. Use `keep_awake(future)` (holds counter while awaited) or `wait_until(future)` (tracked shutdown task) instead. Do not reintroduce a `prevent_sleep` field, a `CanSleep::PreventSleep` variant, or branches that read it. - Runtime-owned promises that must drain during shutdown should use `ActorContext::register_task(...)`, not public `wait_until(...)`, so metrics and runtime intent stay distinct. Registered tasks must race user work against `shutdown_deadline_token()` so shutdown cannot hang forever. - `ctx.sleep()` and `ctx.destroy()` return `Result<()>`. They error with `ActorLifecycleError::Starting` when called before startup completes and `ActorLifecycleError::Stopping` if the requested flag has already been set this generation (atomic `swap(true, ...)`). Internal idle-timer paths log and suppress the already-requested error. - The grace deadline path (`on_sleep_grace_deadline`) aborts the user `run` handle and cancels `shutdown_deadline_token()`. Foreign-runtime adapters running `onSleep` / `onDestroy` must observe that token via `tokio::select!` so SQLite teardown does not race user cleanup work. diff --git a/rivetkit-rust/packages/rivetkit-core/src/actor/context.rs b/rivetkit-rust/packages/rivetkit-core/src/actor/context.rs index f734ffd33e..0421caab86 100644 --- a/rivetkit-rust/packages/rivetkit-core/src/actor/context.rs +++ b/rivetkit-rust/packages/rivetkit-core/src/actor/context.rs @@ -530,17 +530,6 @@ impl ActorContext { self.0.shutdown_deadline.cancel(); } - /// Deprecated no-op. Use `keep_awake` to hold the actor awake for the - /// duration of a future, or `wait_until` to keep work alive across the - /// sleep grace period. Retained only for NAPI bridge compatibility. - #[deprecated(note = "no-op: use `keep_awake` or `wait_until` instead")] - pub fn set_prevent_sleep(&self, _enabled: bool) {} - - #[deprecated(note = "no-op: always returns false")] - pub fn prevent_sleep(&self) -> bool { - false - } - #[cfg(not(feature = "wasm-runtime"))] pub fn wait_until(&self, future: impl Future + Send + 'static) { if Handle::try_current().is_err() { diff --git a/rivetkit-rust/packages/rivetkit-core/tests/sleep.rs b/rivetkit-rust/packages/rivetkit-core/tests/sleep.rs index dea65ec9df..db1af16052 100644 --- a/rivetkit-rust/packages/rivetkit-core/tests/sleep.rs +++ b/rivetkit-rust/packages/rivetkit-core/tests/sleep.rs @@ -407,34 +407,6 @@ mod moved_tests { assert_eq!(rivet_err.code(), "stopping"); } - // `set_prevent_sleep` is a deprecated no-op kept for NAPI bridge - // compatibility. The exhaustive `CanSleep` match below is a build-time - // guard against reintroducing a `PreventSleep` enum variant. - #[tokio::test(start_paused = true)] - #[allow(deprecated)] - async fn set_prevent_sleep_is_a_deprecated_noop() { - use crate::actor::sleep::CanSleep; - - let ctx = ActorContext::new_for_sleep_tests("actor-prevent-sleep-noop"); - ctx.set_started(true); - - ctx.set_prevent_sleep(true); - match ctx.can_sleep().await { - CanSleep::Yes - | CanSleep::NotReady - | CanSleep::NoSleep - | CanSleep::ActiveHttpRequests - | CanSleep::ActiveKeepAwake - | CanSleep::ActiveInternalKeepAwake - | CanSleep::ActiveRunHandler - | CanSleep::ActiveDisconnectCallbacks - | CanSleep::ActiveConnections - | CanSleep::ActiveWebSocketCallbacks => {} - } - - ctx.set_prevent_sleep(false); - } - #[tokio::test(start_paused = true)] async fn shutdown_deadline_token_aborts_select_awaiting_task() { // Mirrors the NAPI `RunGracefulCleanup` pattern: a task awaits user diff --git a/rivetkit-rust/packages/rivetkit/src/context.rs b/rivetkit-rust/packages/rivetkit/src/context.rs index 7fba6fdcdd..7aa6ecb1ab 100644 --- a/rivetkit-rust/packages/rivetkit/src/context.rs +++ b/rivetkit-rust/packages/rivetkit/src/context.rs @@ -95,18 +95,6 @@ impl Ctx { self.inner.destroy() } - #[deprecated(note = "no-op: use `keep_awake` or `wait_until` instead")] - pub fn set_prevent_sleep(&self, enabled: bool) { - #[allow(deprecated)] - self.inner.set_prevent_sleep(enabled); - } - - #[deprecated(note = "no-op: always returns false")] - pub fn prevent_sleep(&self) -> bool { - #[allow(deprecated)] - self.inner.prevent_sleep() - } - pub fn wait_until(&self, future: impl Future + Send + 'static) { self.inner.wait_until(future); } diff --git a/rivetkit-typescript/artifacts/actor-config.json b/rivetkit-typescript/artifacts/actor-config.json index de6514db51..dbf31c0b10 100644 --- a/rivetkit-typescript/artifacts/actor-config.json +++ b/rivetkit-typescript/artifacts/actor-config.json @@ -130,7 +130,7 @@ "type": "number" }, "sleepGracePeriod": { - "description": "Max time in ms for the graceful sleep window. Covers lifecycle hooks, waitUntil, async raw WebSocket handlers, disconnect callbacks, and waiting for preventSleep to clear after shutdown starts. Default: 15000.", + "description": "Max time in ms for the graceful sleep window. Covers lifecycle hooks, waitUntil, async raw WebSocket handlers, and disconnect callbacks. Default: 15000.", "type": "number" }, "onDestroyTimeout": { @@ -158,7 +158,7 @@ "type": "number" }, "noSleep": { - "description": "Deprecated. If true, the actor will never sleep. Use c.setPreventSleep(true) for bounded idle sleep delays instead. Default: false", + "description": "Deprecated. If true, the actor will never sleep. Use c.keepAwake(promise) to scope keep-awake to a specific operation instead. Default: false", "type": "boolean" }, "sleepTimeout": { @@ -191,4 +191,4 @@ }, "additionalProperties": false, "title": "RivetKit Actor Configuration" -} \ No newline at end of file +} diff --git a/rivetkit-typescript/packages/rivetkit-napi/index.d.ts b/rivetkit-typescript/packages/rivetkit-napi/index.d.ts index e89dc595d3..95af8b0aca 100644 --- a/rivetkit-typescript/packages/rivetkit-napi/index.d.ts +++ b/rivetkit-typescript/packages/rivetkit-napi/index.d.ts @@ -223,8 +223,6 @@ export declare class ActorContext { destroy(): void destroyRequested(): boolean waitForDestroyCompletion(): Promise - setPreventSleep(preventSleep: boolean): void - preventSleep(): boolean aborted(): boolean runHandlerActive(): boolean restartRunHandler(): void diff --git a/rivetkit-typescript/packages/rivetkit-napi/src/actor_context.rs b/rivetkit-typescript/packages/rivetkit-napi/src/actor_context.rs index ac78a60867..e81aaaf0dd 100644 --- a/rivetkit-typescript/packages/rivetkit-napi/src/actor_context.rs +++ b/rivetkit-typescript/packages/rivetkit-napi/src/actor_context.rs @@ -437,18 +437,6 @@ impl ActorContext { self.inner.wait_for_destroy_completion_public().await; } - #[napi] - #[allow(deprecated)] - pub fn set_prevent_sleep(&self, prevent_sleep: bool) { - self.inner.set_prevent_sleep(prevent_sleep); - } - - #[napi] - #[allow(deprecated)] - pub fn prevent_sleep(&self) -> bool { - self.inner.prevent_sleep() - } - #[napi] pub fn aborted(&self) -> bool { self.inner.actor_aborted() diff --git a/rivetkit-typescript/packages/rivetkit/src/actor/config.ts b/rivetkit-typescript/packages/rivetkit/src/actor/config.ts index f82717ec6f..b6bca6b514 100644 --- a/rivetkit-typescript/packages/rivetkit/src/actor/config.ts +++ b/rivetkit-typescript/packages/rivetkit/src/actor/config.ts @@ -325,14 +325,10 @@ export interface ActorContext< readonly abortSignal: AbortSignal; readonly aborted: boolean; readonly request?: Request; - /** @deprecated No-op. Always returns `false`. Use `keepAwake(promise)` or `waitUntil(promise)` instead. Will be removed in 2.2.0. */ - readonly preventSleep: boolean; broadcast(name: string, ...args: any[]): void; saveState(opts?: { immediate?: boolean; maxWait?: number }): Promise; keepAwake(promise: Promise): Promise; waitUntil(promise: Promise): void; - /** @deprecated No-op. Use `keepAwake(promise)` to hold the actor awake for a specific promise. Will be removed in 2.2.0. */ - setPreventSleep(preventSleep: boolean): void; sleep(): void; destroy(): void; client(): ActorClientFor; @@ -884,7 +880,7 @@ const InstanceActorOptionsBaseSchema = z actionTimeout: z.number().positive().default(60_000), connectionLivenessTimeout: z.number().positive().default(2500), connectionLivenessInterval: z.number().positive().default(5000), - /** @deprecated Use `c.keepAwake(promise)` to scope keep-awake to a specific operation, or keep `noSleep` for actors that must stay awake indefinitely. Will be removed in 2.2.0. */ + /** @deprecated Use `c.keepAwake(promise)` to scope keep-awake to a specific operation. Will be removed in 2.2.0. */ noSleep: z.boolean().default(false), sleepTimeout: z.number().positive().default(30_000), maxQueueSize: z.number().positive().default(1000), diff --git a/rivetkit-typescript/packages/rivetkit/src/actor/instance/mod.ts b/rivetkit-typescript/packages/rivetkit/src/actor/instance/mod.ts index 1db2f4f646..14ee5bbf28 100644 --- a/rivetkit-typescript/packages/rivetkit/src/actor/instance/mod.ts +++ b/rivetkit-typescript/packages/rivetkit/src/actor/instance/mod.ts @@ -1,6 +1,5 @@ // TODO(sleep-cleanup): investigate whether ActorInstance / drivers/engine -// path is still needed after native path maturation. preventSleep tracking -// below is retained for legacy driver compatibility but no longer drives core. +// path is still needed after native path maturation. import type { OtlpExportTraceServiceRequestJson } from "@rivetkit/traces"; import { createNoopTraces, @@ -24,7 +23,6 @@ import { } from "@/schemas/actor-persist/versioned"; import { EXTRA_ERROR_LOG } from "@/utils"; import { getRivetExperimentalOtel } from "@/utils/env-vars"; -import { promiseWithResolvers } from "@/utils"; import { type Actions, type ActorConfig, @@ -173,7 +171,6 @@ enum CanSleep { Yes, NotReady, NotStarted, - PreventSleep, ActiveConns, ActiveDisconnectCallbacks, ActiveHonoHttpRequests, @@ -347,7 +344,7 @@ export class ActorInstance< /** * If the actor has fully started. * - * The only purpose of this is to prevent sleeping until started. + * The only purpose of this is to keep the actor awake until started. */ #started = false; #sleepCalled = false; @@ -369,7 +366,6 @@ export class ActorInstance< // MARK: - Background Tasks #backgroundPromises: Promise[] = []; #websocketCallbackPromises: Promise[] = []; - #preventSleepClearedPromise?: ReturnType>; #runPromise?: Promise; #runHandlerActive = false; #activeQueueWaitCount = 0; @@ -381,7 +377,6 @@ export class ActorInstance< internalKeepAwake: 0, websocketCallbacks: 0, }; - #preventSleep = false; // MARK: - Deprecated (kept for compatibility) #schedule!: Schedule; @@ -698,10 +693,6 @@ export class ActorInstance< return this.#abortController.signal; } - get preventSleep(): boolean { - return this.#preventSleep; - } - get actions(): string[] { return Object.keys(this.#config.actions ?? {}); } @@ -1549,10 +1540,6 @@ export class ActorInstance< * * Returns the resolved value and resets the sleep timer on completion. * Errors are propagated to the caller. - * - * @deprecated Use `setPreventSleep(true)` while work is active, or move - * shutdown and flush work to `onSleep` if it can wait until the actor is - * sleeping. */ async keepAwake(promise: Promise): Promise { this.assertNotShutdown(); @@ -1593,21 +1580,6 @@ export class ActorInstance< } } - setPreventSleep(prevent: boolean) { - if (this.#preventSleep === prevent) return; - - this.#preventSleep = prevent; - if (!prevent) { - this.#preventSleepClearedPromise?.resolve(); - this.#preventSleepClearedPromise = undefined; - } - this.#rLog.debug({ - msg: "updated prevent sleep state", - prevent, - }); - this.resetSleepTimer(); - } - beginQueueWait() { this.assertReady(); this.#activeQueueWaitCount++; @@ -2239,8 +2211,7 @@ export class ActorInstance< async #waitShutdownTasks(deadlineTs: number) { while ( this.#backgroundPromises.length > 0 || - this.#websocketCallbackPromises.length > 0 || - this.#preventSleep + this.#websocketCallbackPromises.length > 0 ) { await this.#drainPromiseQueue( this.#backgroundPromises, @@ -2252,7 +2223,6 @@ export class ActorInstance< "websocket callbacks", deadlineTs, ); - await this.#waitForPreventSleepClear(deadlineTs); if (deadlineTs - Date.now() <= 0) { break; @@ -2350,48 +2320,6 @@ export class ActorInstance< } } - async #waitForPreventSleepClear(deadlineTs: number) { - while (this.#preventSleep) { - const remaining = deadlineTs - Date.now(); - if (remaining <= 0) { - this.#rLog.error({ - msg: "timed out waiting for preventSleep to clear during shutdown", - }); - break; - } - - if (!this.#preventSleepClearedPromise) { - this.#preventSleepClearedPromise = promiseWithResolvers( - (reason: unknown) => - this.#rLog.warn({ - msg: "preventSleep clear waiter rejected unexpectedly", - reason: stringifyError(reason), - ...EXTRA_ERROR_LOG, - }), - ); - } - - let timeoutHandle: ReturnType | undefined; - const timedOut = await Promise.race([ - this.#preventSleepClearedPromise.promise.then(() => { - if (timeoutHandle !== undefined) - clearTimeout(timeoutHandle); - return false; - }), - new Promise((resolve) => { - timeoutHandle = setTimeout(() => resolve(true), remaining); - }), - ]); - - if (timedOut) { - this.#rLog.error({ - msg: "timed out waiting for preventSleep to clear during shutdown", - }); - break; - } - } - } - #createTrackedWebSocket(websocket: UniversalWebSocket): TrackedWebSocket { return new TrackedWebSocket(websocket, { onPromise: (eventType, promise) => { @@ -2446,7 +2374,6 @@ export class ActorInstance< #canSleep(): CanSleep { if (!this.#ready) return CanSleep.NotReady; if (!this.#started) return CanSleep.NotReady; - if (this.#preventSleep) return CanSleep.PreventSleep; if (this.#activeHonoHttpRequests > 0) return CanSleep.ActiveHonoHttpRequests; if (this.#activeAsyncRegionCounts.keepAwake > 0) { diff --git a/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/index.ts b/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/index.ts index 8b108f094c..798fc5f80d 100644 --- a/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/index.ts +++ b/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/index.ts @@ -94,29 +94,6 @@ function buildVmOptions(userOptions?: AgentOsOptions): AgentOsOptions { }; } -// --- Prevent-sleep coordination --- - -function syncPreventSleep( - c: AgentOsActionContext, -): void { - const shouldPrevent = - c.vars.activeSessionIds.size > 0 || - c.vars.activeProcesses.size > 0 || - c.vars.activeHooks.size > 0 || - c.vars.activeShells.size > 0; - - c.setPreventSleep(shouldPrevent); - - c.log.info({ - msg: "agent-os prevent sleep sync", - preventSleep: shouldPrevent, - activeSessions: c.vars.activeSessionIds.size, - activeProcesses: c.vars.activeProcesses.size, - activeHooks: c.vars.activeHooks.size, - activeShells: c.vars.activeShells.size, - }); -} - // --- Hook tracking --- function runHook( @@ -130,10 +107,8 @@ function runHook( ) .finally(() => { c.vars.activeHooks.delete(promise); - syncPreventSleep(c); }); c.vars.activeHooks.add(promise); - syncPreventSleep(c); c.waitUntil(promise); } @@ -262,4 +237,4 @@ const processExitToken = event(); const shellDataToken = event(); const cronEventToken = event(); -export { ensureVm, syncPreventSleep, runHook }; +export { ensureVm, runHook }; diff --git a/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/process.ts b/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/process.ts index a64f135b26..bdfb4098d4 100644 --- a/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/process.ts +++ b/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/process.ts @@ -6,7 +6,7 @@ import type { import { isRivetErrorCode } from "@/actor/errors"; import type { AgentOsActorConfig } from "../config"; import type { AgentOsActionContext } from "../types"; -import { ensureVm, syncPreventSleep } from "./index"; +import { ensureVm } from "./index"; // Infer types from AgentOs methods since @secure-exec/core is not a direct dep. type ExecResult = Awaited< @@ -76,14 +76,13 @@ export function buildProcessActions( }); c.vars.activeProcesses.add(pid); - syncPreventSleep(c); c.log.info({ msg: "agent-os process spawned", pid, command, }); - agentOs + const waitPromise = agentOs .waitProcess(pid) .then((exitCode) => { broadcastProcessEvent(c, "processExit", { pid, exitCode }); @@ -98,8 +97,8 @@ export function buildProcessActions( }) .finally(() => { c.vars.activeProcesses.delete(pid); - syncPreventSleep(c); }); + c.waitUntil(waitPromise); return { pid }; }, diff --git a/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/session.ts b/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/session.ts index 8bf1e78b00..afa66790eb 100644 --- a/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/session.ts +++ b/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/session.ts @@ -19,7 +19,7 @@ import type { PromptResult, SessionRecord, } from "../types"; -import { ensureVm, runHook, syncPreventSleep } from "./index"; +import { ensureVm, runHook } from "./index"; // Strip non-serializable values (functions) from agent-os-core responses so // CBOR/BARE encoding doesn't fail. The JsonRpcResponse objects from @@ -229,7 +229,6 @@ export function buildSessionActions( await agentOs.destroySession(sessionId); c.vars.sessions.delete(sessionId); c.vars.activeSessionIds.delete(sessionId); - syncPreventSleep(c); // Clean up persisted session and events from SQLite. await deletePersistedSession(c, sessionId); @@ -253,7 +252,6 @@ export function buildSessionActions( agentOs.closeSession(sessionId); c.vars.sessions.delete(sessionId); c.vars.activeSessionIds.delete(sessionId); - syncPreventSleep(c); // Clean up persisted session and events from SQLite. await deletePersistedSession(c, sessionId); @@ -286,7 +284,6 @@ export function buildPromptActions( } c.vars.activeSessionIds.add(sessionId); - syncPreventSleep(c); c.log.info({ msg: "agent-os prompt turn started", sessionId }); const start = Date.now(); @@ -298,7 +295,6 @@ export function buildPromptActions( }; } finally { c.vars.activeSessionIds.delete(sessionId); - syncPreventSleep(c); c.log.info({ msg: "agent-os prompt turn ended", sessionId, diff --git a/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/shell.ts b/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/shell.ts index c44513ee45..1bc3ae4b20 100644 --- a/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/shell.ts +++ b/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/shell.ts @@ -1,7 +1,7 @@ import type { OpenShellOptions } from "@rivet-dev/agent-os-core"; import type { AgentOsActorConfig } from "../config"; import type { AgentOsActionContext } from "../types"; -import { ensureVm, syncPreventSleep } from "./index"; +import { ensureVm } from "./index"; // Build shell actions for the actor factory. export function buildShellActions( @@ -21,7 +21,6 @@ export function buildShellActions( }); c.vars.activeShells.add(shellId); - syncPreventSleep(c); c.log.info({ msg: "agent-os shell opened", shellId }); return { shellId }; @@ -53,7 +52,6 @@ export function buildShellActions( const agentOs = await ensureVm(c, config); agentOs.closeShell(shellId); c.vars.activeShells.delete(shellId); - syncPreventSleep(c); c.log.info({ msg: "agent-os shell closed", shellId }); }, }; diff --git a/rivetkit-typescript/packages/rivetkit/src/agent-os/index.ts b/rivetkit-typescript/packages/rivetkit/src/agent-os/index.ts index 1fe314005e..e884356c34 100644 --- a/rivetkit-typescript/packages/rivetkit/src/agent-os/index.ts +++ b/rivetkit-typescript/packages/rivetkit/src/agent-os/index.ts @@ -8,7 +8,7 @@ export { // Filesystem actions export { buildFilesystemActions } from "./actor/filesystem"; // Actor factory and VM lifecycle helpers -export { agentOs, ensureVm, runHook, syncPreventSleep } from "./actor/index"; +export { agentOs, ensureVm, runHook } from "./actor/index"; // Preview actions export { buildOnRequestHandler, diff --git a/rivetkit-typescript/packages/rivetkit/src/registry/native.ts b/rivetkit-typescript/packages/rivetkit/src/registry/native.ts index 633bddd9df..5c6a476daf 100644 --- a/rivetkit-typescript/packages/rivetkit/src/registry/native.ts +++ b/rivetkit-typescript/packages/rivetkit/src/registry/native.ts @@ -2903,26 +2903,6 @@ export class ActorContextHandleAdapter { ); } - // Intentionally a no-op. `setPreventSleep` / `preventSleep` are kept on the - // surface for legacy callers but must not gate sleep here. Callers that - // need to keep an actor awake should use `keepAwake(promise)` or - // `waitUntil(promise)` so the native counter machinery in rivetkit-core - // owns the lifecycle. - /** @deprecated Use `keepAwake(promise)` or `waitUntil(promise)` instead. */ - setPreventSleep(_preventSleep: boolean): void { - logger().warn({ - msg: "setPreventSleep is deprecated and is a no-op; use keepAwake(promise) or waitUntil(promise) instead", - }); - } - - /** @deprecated Use `keepAwake(promise)` or `waitUntil(promise)` instead. */ - get preventSleep(): boolean { - logger().warn({ - msg: "preventSleep is deprecated and always returns false; use keepAwake(promise) or waitUntil(promise) instead", - }); - return false; - } - sleep(): void { callNativeSync(() => this.#runtime.actorSleep(this.#ctx)); } diff --git a/rivetkit-typescript/packages/rivetkit/src/workflow/context.ts b/rivetkit-typescript/packages/rivetkit/src/workflow/context.ts index adac7fa055..e858e4bcea 100644 --- a/rivetkit-typescript/packages/rivetkit/src/workflow/context.ts +++ b/rivetkit-typescript/packages/rivetkit/src/workflow/context.ts @@ -523,17 +523,6 @@ export class ActorWorkflowContext< return this.#runCtx.log; } - /** @deprecated No-op. Use `keepAwake(promise)` or `waitUntil(promise)` instead. */ - setPreventSleep(_prevent: boolean): void { - this.#ensureActorAccess("setPreventSleep"); - } - - /** @deprecated No-op. Always returns `false`. */ - get preventSleep(): boolean { - this.#ensureActorAccess("preventSleep"); - return false; - } - /** * Holds the actor awake for the duration of the provided promise. The * actor cannot idle-sleep or finalize the sleep grace period until the diff --git a/scripts/ralph/archive/2026-04-16-feat/sqlite-vfs-v2/prd.json b/scripts/ralph/archive/2026-04-16-feat/sqlite-vfs-v2/prd.json index 78ef2b230c..ea0ef8e806 100644 --- a/scripts/ralph/archive/2026-04-16-feat/sqlite-vfs-v2/prd.json +++ b/scripts/ralph/archive/2026-04-16-feat/sqlite-vfs-v2/prd.json @@ -32,7 +32,7 @@ "State methods: `state() -> Vec`, `set_state(Vec)`, `save_state(SaveStateOpts) -> Result<()>` (async)", "Vars methods: `vars() -> Vec`, `set_vars(Vec)`", "Accessor methods: `kv() -> &Kv`, `sql() -> &SqliteDb`, `schedule() -> &Schedule`, `queue() -> &Queue`", - "Sleep control: `sleep()`, `destroy()`, `set_prevent_sleep(bool)`, `prevent_sleep() -> bool`", + "Sleep control: `sleep()`, `destroy()`, `keep_awake(future)`", "Background work: `wait_until(impl Future + Send + 'static)`", "Actor info: `actor_id() -> &str`, `name() -> &str`, `key() -> &ActorKey`, `region() -> &str`", "Shutdown: `abort_signal() -> &CancellationToken`, `aborted() -> bool`", @@ -43,7 +43,7 @@ ], "priority": 2, "passes": false, - "notes": "See spec 'ActorContext' section. Internal ActorContextInner should hold: state bytes, vars bytes, Arc references to Kv/SqliteDb/Schedule/Queue, CancellationToken for abort, AtomicBool for prevent_sleep, actor metadata (id, name, key, region). Reference envoy-client context at engine/sdks/rust/envoy-client/src/context.rs." + "notes": "See spec 'ActorContext' section. Internal ActorContextInner should hold: state bytes, vars bytes, Arc references to Kv/SqliteDb/Schedule/Queue, CancellationToken for abort, AtomicBool for keep_awake, actor metadata (id, name, key, region). Reference envoy-client context at engine/sdks/rust/envoy-client/src/context.rs." }, { "id": "US-003", @@ -247,9 +247,9 @@ "title": "rivetkit-core: Sleep readiness and auto-sleep timer", "description": "As a developer, I need the can_sleep() check and auto-sleep timer that puts actors to sleep when idle.", "acceptanceCriteria": [ - "Implement can_sleep() in `src/actor/sleep.rs` checking ALL conditions: ready AND started, prevent_sleep is false, no_sleep config is false, no active HTTP requests (from envoy-client counter), no active keep_awake/internal_keep_awake regions, run handler not active (exception: allowed if only blocked on queue wait via active_queue_wait_count), no active connections, no pending disconnect callbacks, no active WebSocket callbacks", + "Implement can_sleep() in `src/actor/sleep.rs` checking ALL conditions: ready AND started, keep_awake is false, no_sleep config is false, no active HTTP requests (from envoy-client counter), no active keep_awake/internal_keep_awake regions, run handler not active (exception: allowed if only blocked on queue wait via active_queue_wait_count), no active connections, no pending disconnect callbacks, no active WebSocket callbacks", "Implement auto-sleep timer: reset on activity, fires sleep when can_sleep() returns true for sleep_timeout duration (default 30s from ActorConfig)", - "prevent_sleep flag with set_prevent_sleep(bool) / prevent_sleep() -> bool", + "keep_awake future-scoped region", "keep_awake and internal_keep_awake region tracking via atomic increment/decrement counters", "wait_until future tracking: store spawned JoinHandles for shutdown task management", "`cargo check -p rivetkit-core` passes" @@ -311,7 +311,7 @@ "Step 5: Calculate shutdown_deadline from effective sleep_grace_period", "Step 6: Wait for idle sleep window with deadline. Idle means: no active HTTP requests, no active keep_awake/internal_keep_awake, no pending disconnect callbacks, no active WebSocket callbacks", "Step 7: Call on_sleep callback (with remaining deadline budget). On error: log, continue shutdown", - "Step 8: Wait for shutdown tasks (wait_until futures, WebSocket callback futures, prevent_sleep to clear)", + "Step 8: Wait for shutdown tasks (wait_until futures, WebSocket callback futures, keep_awake regions to finish)", "Step 9: Disconnect all non-hibernatable connections. Persist hibernatable connections to KV", "Step 10: Wait for shutdown tasks again", "Step 11: Save state immediately. Wait for all pending KV/SQLite writes to complete", @@ -396,7 +396,7 @@ "Ctx.state() -> Arc: returns cached deserialized state. Cache populated on first access by deserializing CBOR bytes from inner.state(). Cache invalidated by set_state", "Ctx.set_state(&A::State): serializes state to CBOR via ciborium, calls inner.set_state(bytes), invalidates cache", "Ctx.vars() -> &A::Vars: returns reference to typed vars", - "Delegate methods to inner ActorContext: kv, sql, schedule, queue, actor_id, name, key, region, abort_signal, aborted, sleep, destroy, set_prevent_sleep, prevent_sleep, wait_until", + "Delegate methods to inner ActorContext: kv, sql, schedule, queue, actor_id, name, key, region, abort_signal, aborted, sleep, destroy, wait_until", "Typed broadcast: fn broadcast(&self, name: &str, event: &E) serializes E to CBOR then calls inner.broadcast", "Typed connections: fn conns(&self) -> Vec> wrapping each inner ConnHandle", "Implement ConnCtx wrapping ConnHandle with PhantomData: id() -> &str, params() -> A::ConnParams (CBOR deserialize), state() -> A::ConnState (CBOR deserialize), set_state(&A::ConnState) (CBOR serialize), is_hibernatable() -> bool, send(name, event), disconnect(reason) -> Result<()>", diff --git a/scripts/ralph/archive/2026-04-19-rivetkit-to-rust/prd.json b/scripts/ralph/archive/2026-04-19-rivetkit-to-rust/prd.json index a8dd9823e6..927d15acdd 100644 --- a/scripts/ralph/archive/2026-04-19-rivetkit-to-rust/prd.json +++ b/scripts/ralph/archive/2026-04-19-rivetkit-to-rust/prd.json @@ -32,7 +32,7 @@ "State methods: `state() -> Vec`, `set_state(Vec)`, `save_state(SaveStateOpts) -> Result<()>` (async)", "Vars methods: `vars() -> Vec`, `set_vars(Vec)`", "Accessor methods: `kv() -> &Kv`, `sql() -> &SqliteDb`, `schedule() -> &Schedule`, `queue() -> &Queue`", - "Sleep control: `sleep()`, `destroy()`, `set_prevent_sleep(bool)`, `prevent_sleep() -> bool`", + "Sleep control: `sleep()`, `destroy()`, `keep_awake(future)`", "Background work: `wait_until(impl Future + Send + 'static)`", "Actor info: `actor_id() -> &str`, `name() -> &str`, `key() -> &ActorKey`, `region() -> &str`", "Shutdown: `abort_signal() -> &CancellationToken`, `aborted() -> bool`", @@ -43,7 +43,7 @@ ], "priority": 2, "passes": true, - "notes": "See spec 'ActorContext' section. Internal ActorContextInner should hold: state bytes, vars bytes, Arc references to Kv/SqliteDb/Schedule/Queue, CancellationToken for abort, AtomicBool for prevent_sleep, actor metadata (id, name, key, region). Reference envoy-client context at engine/sdks/rust/envoy-client/src/context.rs." + "notes": "See spec 'ActorContext' section. Internal ActorContextInner should hold: state bytes, vars bytes, Arc references to Kv/SqliteDb/Schedule/Queue, CancellationToken for abort, AtomicBool for keep_awake, actor metadata (id, name, key, region). Reference envoy-client context at engine/sdks/rust/envoy-client/src/context.rs." }, { "id": "US-003", @@ -247,9 +247,9 @@ "title": "rivetkit-core: Sleep readiness and auto-sleep timer", "description": "As a developer, I need the can_sleep() check and auto-sleep timer that puts actors to sleep when idle.", "acceptanceCriteria": [ - "Implement can_sleep() in `src/actor/sleep.rs` checking ALL conditions: ready AND started, prevent_sleep is false, no_sleep config is false, no active HTTP requests (from envoy-client counter), no active keep_awake/internal_keep_awake regions, run handler not active (exception: allowed if only blocked on queue wait via active_queue_wait_count), no active connections, no pending disconnect callbacks, no active WebSocket callbacks", + "Implement can_sleep() in `src/actor/sleep.rs` checking ALL conditions: ready AND started, keep_awake is false, no_sleep config is false, no active HTTP requests (from envoy-client counter), no active keep_awake/internal_keep_awake regions, run handler not active (exception: allowed if only blocked on queue wait via active_queue_wait_count), no active connections, no pending disconnect callbacks, no active WebSocket callbacks", "Implement auto-sleep timer: reset on activity, fires sleep when can_sleep() returns true for sleep_timeout duration (default 30s from ActorConfig)", - "prevent_sleep flag with set_prevent_sleep(bool) / prevent_sleep() -> bool", + "keep_awake future-scoped region", "keep_awake and internal_keep_awake region tracking via atomic increment/decrement counters", "wait_until future tracking: store spawned JoinHandles for shutdown task management", "`cargo check -p rivetkit-core` passes" @@ -311,7 +311,7 @@ "Step 5: Calculate shutdown_deadline from effective sleep_grace_period", "Step 6: Wait for idle sleep window with deadline. Idle means: no active HTTP requests, no active keep_awake/internal_keep_awake, no pending disconnect callbacks, no active WebSocket callbacks", "Step 7: Call on_sleep callback (with remaining deadline budget). On error: log, continue shutdown", - "Step 8: Wait for shutdown tasks (wait_until futures, WebSocket callback futures, prevent_sleep to clear)", + "Step 8: Wait for shutdown tasks (wait_until futures, WebSocket callback futures, keep_awake regions to finish)", "Step 9: Disconnect all non-hibernatable connections. Persist hibernatable connections to KV", "Step 10: Wait for shutdown tasks again", "Step 11: Save state immediately. Wait for all pending KV/SQLite writes to complete", @@ -396,7 +396,7 @@ "Ctx.state() -> Arc: returns cached deserialized state. Cache populated on first access by deserializing CBOR bytes from inner.state(). Cache invalidated by set_state", "Ctx.set_state(&A::State): serializes state to CBOR via ciborium, calls inner.set_state(bytes), invalidates cache", "Ctx.vars() -> &A::Vars: returns reference to typed vars", - "Delegate methods to inner ActorContext: kv, sql, schedule, queue, actor_id, name, key, region, abort_signal, aborted, sleep, destroy, set_prevent_sleep, prevent_sleep, wait_until", + "Delegate methods to inner ActorContext: kv, sql, schedule, queue, actor_id, name, key, region, abort_signal, aborted, sleep, destroy, wait_until", "Typed broadcast: fn broadcast(&self, name: &str, event: &E) serializes E to CBOR then calls inner.broadcast", "Typed connections: fn conns(&self) -> Vec> wrapping each inner ConnHandle", "Implement ConnCtx wrapping ConnHandle with PhantomData: id() -> &str, params() -> A::ConnParams (CBOR deserialize), state() -> A::ConnState (CBOR deserialize), set_state(&A::ConnState) (CBOR serialize), is_hibernatable() -> bool, send(name, event), disconnect(reason) -> Result<()>", @@ -553,7 +553,7 @@ "Update all imports and references across the codebase (package.json, tsconfig, CLAUDE.md, etc.)", "Expose ActorContext as a #[napi] class with methods: state() -> Buffer, set_state(Buffer), save_state(immediate: bool)", "Expose actor info methods: actor_id() -> String, name() -> String, region() -> String", - "Expose sleep control: sleep(), destroy(), set_prevent_sleep(bool), prevent_sleep() -> bool, aborted() -> bool", + "Expose sleep control: sleep(), destroy(), keep_awake(future), aborted() -> bool", "Expose wait_until that accepts a JS Promise and converts to Rust Future", "pnpm build succeeds for rivetkit-napi package", "`cargo check` passes" diff --git a/scripts/ralph/archive/2026-04-19-rivetkit-to-rust/progress.txt b/scripts/ralph/archive/2026-04-19-rivetkit-to-rust/progress.txt index 465d59ff2b..b924c69650 100644 --- a/scripts/ralph/archive/2026-04-19-rivetkit-to-rust/progress.txt +++ b/scripts/ralph/archive/2026-04-19-rivetkit-to-rust/progress.txt @@ -192,7 +192,7 @@ Started: Thu Apr 16 10:02:08 PM PDT 2026 - Files changed: `/home/nathan/r5/CLAUDE.md`, `/home/nathan/r5/rivetkit-rust/packages/rivetkit-core/src/actor/context.rs`, `/home/nathan/r5/rivetkit-rust/packages/rivetkit-core/src/actor/lifecycle.rs`, `/home/nathan/r5/rivetkit-rust/packages/rivetkit-core/src/actor/schedule.rs`, `/home/nathan/r5/rivetkit-rust/packages/rivetkit-core/src/actor/sleep.rs`, `/home/nathan/r5/rivetkit-rust/packages/rivetkit-core/src/sqlite.rs`, `/home/nathan/r5/scripts/ralph/prd.json`, `/home/nathan/r5/scripts/ralph/progress.txt` - **Learnings for future iterations:** - Patterns discovered: Sleep shutdown now relies on `SleepController` for both tracked `run` task joins and deadline-polled idle/shutdown gates, instead of trying to reuse `can_sleep()` directly. - - Gotchas encountered: The idle sleep window is narrower than `can_sleep()`: it ignores active connections and `prevent_sleep`, so shutdown needs separate wait helpers before and after `on_sleep`. + - Gotchas encountered: The idle sleep window is narrower than `can_sleep()`: it ignores active connections and `keep_awake`, so shutdown needs separate wait helpers before and after `on_sleep`. - Useful context: `sleep_shutdown_waits_for_idle_window_and_persists_state`, `sleep_shutdown_reports_error_when_on_sleep_fails`, and `sleep_shutdown_times_out_run_handler_and_finishes` in `src/actor/lifecycle.rs` are the regression coverage for this story. --- ## 2026-04-16 23:45:35 PDT - US-017 @@ -225,7 +225,7 @@ Started: Thu Apr 16 10:02:08 PM PDT 2026 - **Learnings for future iterations:** - Patterns discovered: Static native actor HTTP traffic does not go through `actor/event.rs` alone; `RegistryDispatcher::handle_fetch` owns the real request lifecycle, including sleep timer cancellation/rearm work after request completion. - Gotchas encountered: Resetting the sleep timer only after a native request finishes is not enough because the old timer can still fire mid-request; cancel it on request start, then rearm once `active_http_request_count` drops to zero. - - Useful context: The reliable targeted validation for this story was `pnpm test driver-test-suite.test.ts -t "rpc calls keep actor awake|preventSleep blocks auto sleep until cleared|preventSleep delays shutdown until cleared|preventSleep can be restored during onWake|run handler can consume from queue|passes connection id into canPublish context|allows and denies queue sends, and ignores undefined queues|ignores incoming queue sends when actor has no queues config|Actor Database Lifecycle Cleanup Tests|scheduled action can use c\\.db|writeFile and readFile round-trip|mkdir and readdir|stat returns file metadata"`, which passed `48` static-runtime tests across bare/cbor/json. + - Useful context: The reliable targeted validation for this story was `pnpm test driver-test-suite.test.ts -t "rpc calls keep actor awake|keepAwake blocks auto sleep until cleared|keepAwake delays shutdown until cleared|keepAwake can be restored during onWake|run handler can consume from queue|passes connection id into canPublish context|allows and denies queue sends, and ignores undefined queues|ignores incoming queue sends when actor has no queues config|Actor Database Lifecycle Cleanup Tests|scheduled action can use c\\.db|writeFile and readFile round-trip|mkdir and readdir|stat returns file metadata"`, which passed `48` static-runtime tests across bare/cbor/json. --- ## 2026-04-17 00:06:24 PDT - US-020 - What was implemented: Replaced the placeholder typed context wrappers with real `Ctx` and `ConnCtx` implementations that cache decoded actor state, carry typed vars, CBOR-serialize state/events/connection payloads, and delegate the core actor controls through to `ActorContext`. diff --git a/scripts/ralph/archive/2026-04-22-rivetkit-core-cleanup-complete/prd.json b/scripts/ralph/archive/2026-04-22-rivetkit-core-cleanup-complete/prd.json index 9bedcf0907..90e45a1125 100644 --- a/scripts/ralph/archive/2026-04-22-rivetkit-core-cleanup-complete/prd.json +++ b/scripts/ralph/archive/2026-04-22-rivetkit-core-cleanup-complete/prd.json @@ -121,13 +121,13 @@ { "id": "US-103", "title": "Restore sleep-grace abort fire + run-handle wait ordering in rivetkit-core", - "description": "As a RivetKit user, I want the sleep-shutdown path to fire the actor abort signal when sleep grace begins and then wait for the `run` handler to actually exit before finalizing. Two independent gaps in the current core violate this ordering and together produce a runtime crash in workflow tests and the `active run handler keeps actor awake past sleep timeout` failure in `rivetkit-typescript/packages/rivetkit/tests/driver/actor-run.test.ts:43-62`. Full writeup: `.agent/notes/sleep-grace-abort-run-wait.md`.\n\nGap 1 -- abort signal never fires on sleep. `rivetkit-rust/packages/rivetkit-core/src/actor/task.rs::shutdown_for_sleep_grace` (~line 1232) cancels the sleep timer, enqueues `BeginSleep`, and polls `wait_for_sleep_idle_window`, but never calls `abort_signal.cancel()`. The only call site for `cancel()` is `mark_destroy_requested` at `actor/context.rs:466` -- i.e. only destroy. User `run` handlers and the workflow engine observe `c.aborted` / `c.abortSignal` to unwind; without the fire they have no signal. The workflow engine's short-sleep path in `packages/workflow-engine/src/context.ts:1491` races `sleep(remaining)` against `waitForEviction()`, where `waitForEviction` is tied to the abort signal; today that race is effectively just the setTimeout because the abort never fires.\n\nGap 2 -- grace idle window doesn't consult the run handler. `ActorContext::can_sleep_state` (`actor/sleep.rs::229-260`) checks ready/started, `prevent_sleep`, `no_sleep`, `active_http_request_count`, `sleep_keep_awake_count`, `sleep_internal_keep_awake_count`, `pending_disconnect_count`, non-empty conns, and `websocket_callback_count`. It does NOT check whether the `run_handle: Option>>` on `ActorTask` (`task.rs:448,1093-1117`) is still alive. The idle window can therefore succeed and `SleepFinalize` can start while the run handler (and any JS promise it awaits) is still live. `ShutdownPhase::AwaitingRunHandle` (`task.rs:1626-1655`) then tokio-aborts the Rust future on timeout, but that does not cancel JS; the JS promise continues past the point where `registry/mod.rs:803` clears `configure_lifecycle_events(None)`.\n\nEnd-to-end failure (workflow `sleeps and resumes between ticks` in `actor-workflow.test.ts:242-253` with `workflowSleepActor`, `sleepTimeout: 50`, `ctx.sleep(\"delay\", 40)`): actor wakes -> workflow step + flush -> workflow enters short-sleep Promise.race([sleep(40), waitForEviction()]) -> actor sleep timer fires, sleep grace begins (abort NOT fired, so waitForEviction never resolves, workflow is just in a setTimeout) -> `can_sleep_state` returns Yes because it doesn't see the run handler -> idle window succeeds -> `SleepFinalize` drains phases -> `AwaitingRunHandle` awaits, times out, tokio-aborts the Rust future -> task joins -> `configure_lifecycle_events(None)` -> JS setTimeout eventually fires, workflow calls `flushStorage()` -> `EngineDriver.batch` -> `Promise.all([kvBatchPut, stateManager.saveState({ immediate: true })])` -> core `request_save_with_revision` finds `lifecycle_event_sender()` returns None -> throws `cannot request actor state save before lifecycle events are configured` -> unhandled promise rejection -> Node runner crashes -> subsequent wakeups hit `no_envoys`, in-flight NAPI replies resolve as `Actor reply channel was dropped without a response`.\n\nThis was surfaced during the 2026-04-22 driver-test-runner pass (`.agent/notes/driver-test-progress.md`). The same pass fixed `#createActorAbortSignal` in `rivetkit-typescript/packages/rivetkit/src/registry/native.ts` (the raw AbortSignal returned from NAPI was being called as if it had `aborted()` / `onCancelled()` methods); that fix unblocked `run handler starts after actor startup`, `run handler ticks continuously`, and `run handler can consume from queue`. I also shipped a narrower swallow of the late-save error in `stateManager.saveState`, which was subsequently reverted as masking-not-fixing; this story replaces that approach with the real ordering restoration.", + "description": "As a RivetKit user, I want the sleep-shutdown path to fire the actor abort signal when sleep grace begins and then wait for the `run` handler to actually exit before finalizing. Two independent gaps in the current core violate this ordering and together produce a runtime crash in workflow tests and the `active run handler keeps actor awake past sleep timeout` failure in `rivetkit-typescript/packages/rivetkit/tests/driver/actor-run.test.ts:43-62`. Full writeup: `.agent/notes/sleep-grace-abort-run-wait.md`.\n\nGap 1 -- abort signal never fires on sleep. `rivetkit-rust/packages/rivetkit-core/src/actor/task.rs::shutdown_for_sleep_grace` (~line 1232) cancels the sleep timer, enqueues `BeginSleep`, and polls `wait_for_sleep_idle_window`, but never calls `abort_signal.cancel()`. The only call site for `cancel()` is `mark_destroy_requested` at `actor/context.rs:466` -- i.e. only destroy. User `run` handlers and the workflow engine observe `c.aborted` / `c.abortSignal` to unwind; without the fire they have no signal. The workflow engine's short-sleep path in `packages/workflow-engine/src/context.ts:1491` races `sleep(remaining)` against `waitForEviction()`, where `waitForEviction` is tied to the abort signal; today that race is effectively just the setTimeout because the abort never fires.\n\nGap 2 -- grace idle window doesn't consult the run handler. `ActorContext::can_sleep_state` (`actor/sleep.rs::229-260`) checks ready/started, `keep_awake`, `no_sleep`, `active_http_request_count`, `sleep_keep_awake_count`, `sleep_internal_keep_awake_count`, `pending_disconnect_count`, non-empty conns, and `websocket_callback_count`. It does NOT check whether the `run_handle: Option>>` on `ActorTask` (`task.rs:448,1093-1117`) is still alive. The idle window can therefore succeed and `SleepFinalize` can start while the run handler (and any JS promise it awaits) is still live. `ShutdownPhase::AwaitingRunHandle` (`task.rs:1626-1655`) then tokio-aborts the Rust future on timeout, but that does not cancel JS; the JS promise continues past the point where `registry/mod.rs:803` clears `configure_lifecycle_events(None)`.\n\nEnd-to-end failure (workflow `sleeps and resumes between ticks` in `actor-workflow.test.ts:242-253` with `workflowSleepActor`, `sleepTimeout: 50`, `ctx.sleep(\"delay\", 40)`): actor wakes -> workflow step + flush -> workflow enters short-sleep Promise.race([sleep(40), waitForEviction()]) -> actor sleep timer fires, sleep grace begins (abort NOT fired, so waitForEviction never resolves, workflow is just in a setTimeout) -> `can_sleep_state` returns Yes because it doesn't see the run handler -> idle window succeeds -> `SleepFinalize` drains phases -> `AwaitingRunHandle` awaits, times out, tokio-aborts the Rust future -> task joins -> `configure_lifecycle_events(None)` -> JS setTimeout eventually fires, workflow calls `flushStorage()` -> `EngineDriver.batch` -> `Promise.all([kvBatchPut, stateManager.saveState({ immediate: true })])` -> core `request_save_with_revision` finds `lifecycle_event_sender()` returns None -> throws `cannot request actor state save before lifecycle events are configured` -> unhandled promise rejection -> Node runner crashes -> subsequent wakeups hit `no_envoys`, in-flight NAPI replies resolve as `Actor reply channel was dropped without a response`.\n\nThis was surfaced during the 2026-04-22 driver-test-runner pass (`.agent/notes/driver-test-progress.md`). The same pass fixed `#createActorAbortSignal` in `rivetkit-typescript/packages/rivetkit/src/registry/native.ts` (the raw AbortSignal returned from NAPI was being called as if it had `aborted()` / `onCancelled()` methods); that fix unblocked `run handler starts after actor startup`, `run handler ticks continuously`, and `run handler can consume from queue`. I also shipped a narrower swallow of the late-save error in `stateManager.saveState`, which was subsequently reverted as masking-not-fixing; this story replaces that approach with the real ordering restoration.", "acceptanceCriteria": [ "Read `.agent/notes/sleep-grace-abort-run-wait.md` in full before coding.", "Read `rivetkit-rust/packages/rivetkit-core/src/actor/task.rs` (`shutdown_for_sleep_grace`, `spawn_run_handle`, `ShutdownPhase::AwaitingRunHandle`, `close_actor_event_channel`), `rivetkit-rust/packages/rivetkit-core/src/actor/sleep.rs` (`CanSleep`, `can_sleep_state`, `wait_for_sleep_idle_window`, `reset_sleep_timer_state`), `rivetkit-rust/packages/rivetkit-core/src/actor/context.rs` (`abort_signal` field, `mark_destroy_requested`), `rivetkit-rust/packages/rivetkit-core/src/registry/mod.rs` (`configure_lifecycle_events` call sites), `rivetkit-rust/packages/rivetkit-core/src/actor/state.rs::request_save_with_revision`, and `rivetkit-typescript/packages/workflow-engine/src/context.ts::executeSleep` before coding.", "Fire the actor abort signal on sleep-grace entry (Gap 1). In `shutdown_for_sleep_grace`, after `request_begin_sleep()` and before the idle-wait, call `self.ctx.0.abort_signal.cancel()` (or extract a small method on `ActorContext` like `cancel_abort_signal_for_sleep()`). The signal must be observable from JS via `c.abortSignal.aborted` / `c.aborted`. Preserve the existing destroy behavior -- destroy already cancels the same token via `mark_destroy_requested`, so destroy-after-sleep must not regress.", "Gate the sleep-idle window on the run handler having actually exited (Gap 2). Add a tracked `run_handler_active` signal to `ActorContextInner` (preferred: `AtomicBool`, or `AtomicUsize` counter if future restarts need it). Set it when `ActorTask::spawn_run_handle` starts the handler; clear it when the handler completes (both clean-exit branches and the `AwaitingRunHandle` abort branch in `task.rs:1626-1655`). Add a new `CanSleep::ActiveRunHandler` variant, checked in `can_sleep_state` alongside the existing gates so `wait_for_sleep_idle_window` blocks until the run handler is done.", - "When the flag clears (run handler exits), re-arm the sleep timer / notify the idle waiter so grace can complete promptly. Reuse the existing sleep-notification path (`reset_sleep_timer_state` / `notify_prevent_sleep_changed` style). Do NOT add a `loop { check; sleep }` polling pattern (repo invariant).", + "When the flag clears (run handler exits), re-arm the sleep timer / notify the idle waiter so grace can complete promptly. Reuse the existing sleep-notification path (`reset_sleep_timer_state` / `reset_sleep_timer_state` style). Do NOT add a `loop { check; sleep }` polling pattern (repo invariant).", "Preserve `AwaitingRunHandle`'s timeout + `run_handle.abort()` backstop for cases where user code refuses to unwind after the abort fires. Log a warning when the backstop fires so it's visible in CI.", "Companion tests that must stay green: `run handler that exits early sleeps instead of destroying` and `run handler that throws error sleeps instead of destroying` (`actor-run.test.ts`) -- the flag must clear when run returns, so these actors do sleep. `actor-sleep.test.ts`, `actor-sleep-db.test.ts`, `actor-lifecycle.test.ts` all green. `actor-destroy.test.ts` -- destroy path still fires abort and tears down cleanly.", "Target tests that must flip from failing/flaky to consistently green: (1) `active run handler keeps actor awake past sleep timeout` in `actor-run.test.ts`; (2) `sleeps and resumes between ticks`, `replays steps and guards state access`, `completed workflows sleep instead of destroying the actor`, `tryStep and try recover terminal workflow failures` in `actor-workflow.test.ts`; (3) as a sanity check, `handles parallel actor lifecycle churn` in `actor-db.test.ts` and `drains many-queue child actors\u2026` in `actor-queue.test.ts` should run clean on the first try (they are suspected to share this root cause).", @@ -1627,7 +1627,7 @@ ], "priority": 1, "passes": true, - "notes": "Implemented `handle_run_handle_outcome -> Option` so self-requested sleep/destroy exits the live loop into `run_shutdown` without waiting for an inbound Stop. Added core self-initiated sleep/destroy tests and TS driver fixtures/tests. Flake validation: new sleep 5/5, new destroy 5/5, existing bare sleep 5/5 after hardening the preventSleep test's idle wait, existing bare lifecycle 5/5, existing bare connection hibernation 5/5. Green gate passed: `cargo build -p rivetkit-core`; `cargo test -p rivetkit-core`; `pnpm --filter @rivetkit/rivetkit-napi build:force`; `pnpm build -F rivetkit`." + "notes": "Implemented `handle_run_handle_outcome -> Option` so self-requested sleep/destroy exits the live loop into `run_shutdown` without waiting for an inbound Stop. Added core self-initiated sleep/destroy tests and TS driver fixtures/tests. Flake validation: new sleep 5/5, new destroy 5/5, existing bare sleep 5/5 after hardening the keepAwake test's idle wait, existing bare lifecycle 5/5, existing bare connection hibernation 5/5. Green gate passed: `cargo build -p rivetkit-core`; `cargo test -p rivetkit-core`; `pnpm --filter @rivetkit/rivetkit-napi build:force`; `pnpm build -F rivetkit`." }, { "id": "US-110", diff --git a/scripts/ralph/archive/2026-04-22-rivetkit-core-cleanup-complete/progress.txt b/scripts/ralph/archive/2026-04-22-rivetkit-core-cleanup-complete/progress.txt index e3211ff36c..b3e8b21d57 100644 --- a/scripts/ralph/archive/2026-04-22-rivetkit-core-cleanup-complete/progress.txt +++ b/scripts/ralph/archive/2026-04-22-rivetkit-core-cleanup-complete/progress.txt @@ -628,7 +628,7 @@ Session: 019db493-6887-75b0-b01c-5f0466e74c2b ## 2026-04-22 09:52:16 PDT - US-047 - Implemented the remaining audit parity fix for native lifecycle callback wiring: public TS `onWake` now maps to the native `onWake` callback, and NAPI invokes it after actor readiness for both fresh starts and wake starts. - Files changed: `rivetkit-typescript/packages/rivetkit/src/registry/native.ts`, `rivetkit-typescript/packages/rivetkit-napi/src/napi_actor_events.rs`, `rivetkit-typescript/packages/rivetkit/tests/native-save-state.test.ts`, `rivetkit-typescript/CLAUDE.md`, `scripts/ralph/prd.json`, `scripts/ralph/progress.txt`. -- Quality checks: `pnpm test tests/native-save-state.test.ts`; `cargo build -p rivetkit-napi`; `pnpm --filter @rivetkit/rivetkit-napi build:force`; `pnpm build -F rivetkit`; targeted `actor-handle` lifecycle test; targeted `actor-sleep` onWake/preventSleep tests; `git diff --check`. Full `pnpm test` was started and stopped after ~25 minutes once unrelated known-red driver failures appeared in `actor-conn`, `actor-inspector`, and `actor-workflow`. +- Quality checks: `pnpm test tests/native-save-state.test.ts`; `cargo build -p rivetkit-napi`; `pnpm --filter @rivetkit/rivetkit-napi build:force`; `pnpm build -F rivetkit`; targeted `actor-handle` lifecycle test; targeted `actor-sleep` onWake/keepAwake tests; `git diff --check`. Full `pnpm test` was started and stopped after ~25 minutes once unrelated known-red driver failures appeared in `actor-conn`, `actor-inspector`, and `actor-workflow`. - **Learnings for future iterations:** - Public actor config has `onWake`, not `onBeforeActorStart`; `onBeforeActorStart` is an internal driver/NAPI startup slot. - NAPI `onWake` must run after `mark_ready_internal()` for both new and restored actors so the literal callback mapping preserves existing user semantics. @@ -1050,7 +1050,7 @@ Session: 019db493-6887-75b0-b01c-5f0466e74c2b ## 2026-04-22 16:17:00 PDT - US-109 - Implemented self-initiated sleep/destroy shutdown by returning `LiveExit::Shutdown` from `handle_run_handle_outcome` when the run handler exits after `ctx.sleep()` or `ctx.destroy()`. - Added core self-initiated sleep/destroy regressions and TS driver fixtures/tests for `run` closures that call `c.sleep()` / `c.destroy()` and return. -- Hardened the existing `preventSleep blocks auto sleep until cleared` driver test by waiting without polling actor actions, since action polling keeps the actor active. +- Hardened the existing `keepAwake blocks auto sleep until cleared` driver test by waiting without polling actor actions, since action polling keeps the actor active. - Files changed: `.agent/notes/shutdown-lifecycle-state-save-review.md`, `rivetkit-rust/packages/rivetkit-core/src/actor/task.rs`, `rivetkit-rust/packages/rivetkit-core/tests/modules/task.rs`, `rivetkit-typescript/packages/rivetkit/fixtures/driver-test-suite/registry-static.ts`, `rivetkit-typescript/packages/rivetkit/fixtures/driver-test-suite/run.ts`, `rivetkit-typescript/packages/rivetkit/tests/driver/actor-lifecycle.test.ts`, `rivetkit-typescript/packages/rivetkit/tests/driver/actor-sleep.test.ts`, `scripts/ralph/prd.json`, `scripts/ralph/progress.txt`. - Quality checks: `cargo test -p rivetkit-core self_initiated_ -- --nocapture`; `cargo build -p rivetkit-core`; `cargo test -p rivetkit-core`; `pnpm --filter @rivetkit/rivetkit-napi build:force`; `pnpm build -F rivetkit`; new sleep driver 5/5; new destroy driver 5/5; existing bare sleep driver 5/5; existing bare lifecycle driver 5/5; existing bare connection hibernation driver 5/5. - **Learnings for future iterations:** diff --git a/website/src/content/docs/actors/lifecycle.mdx b/website/src/content/docs/actors/lifecycle.mdx index 5a496d8b16..ec89fd8d2c 100644 --- a/website/src/content/docs/actors/lifecycle.mdx +++ b/website/src/content/docs/actors/lifecycle.mdx @@ -803,7 +803,7 @@ declare function processTurn(input: string): Promise; ``` -`setPreventSleep(enabled)` is deprecated and now a no-op. Wrap the work you want to keep alive with `c.keepAwake(promise)` instead. +Wrap the work you want to keep alive with `c.keepAwake(promise)`. ### On Sleep Hook diff --git a/website/src/content/docs/agent-os/processes.mdx b/website/src/content/docs/agent-os/processes.mdx index 021ce569ca..2d29160770 100644 --- a/website/src/content/docs/agent-os/processes.mdx +++ b/website/src/content/docs/agent-os/processes.mdx @@ -258,5 +258,5 @@ registry.start(); - Use `exec` for short commands where you need the full output. Use `spawn` for long-running processes where you want streaming output. - Subscribe to `processOutput` and `processExit` **before** calling `spawn` to avoid missing events. - Active processes prevent the actor from sleeping. Stop or kill them when they are no longer needed. -- Active shells also prevent sleep. Close shells when the user disconnects. +- Close active shells when the user disconnects. - Use `allProcesses` and `processTree` for debugging. They show everything running in the VM, including agent processes.