Cloudflare changed Durable Object lifecycle behavior on June 19, 2026: active outbound TCP connections created with connect() and outbound WebSockets now keep a Durable Object alive until the connection closes, up to 15 minutes. This may remove one of the main objections to using Durable Objects for long-running App Writer or agent orchestration, especially for streamed model/tool sessions. We should evaluate whether Lantern's App Writer run/session coordinator should move any orchestration state into a Durable Object, while keeping generated learning apps away from DO bindings, raw outbound access, LMS credentials, and direct storage. The evaluation should compare the current runner with a DO-backed run coordinator, confirm whether our model/provider calls use plain fetch streaming versus outbound WebSocket/TCP paths, account for the 15-minute keepalive limit and duration charges, and identify what state must be persisted incrementally so restarts/deploys do not lose generation progress. This is an architecture evaluation issue, not approval to change the governed runtime boundary.
Cloudflare changed Durable Object lifecycle behavior on June 19, 2026: active outbound TCP connections created with connect() and outbound WebSockets now keep a Durable Object alive until the connection closes, up to 15 minutes. This may remove one of the main objections to using Durable Objects for long-running App Writer or agent orchestration, especially for streamed model/tool sessions. We should evaluate whether Lantern's App Writer run/session coordinator should move any orchestration state into a Durable Object, while keeping generated learning apps away from DO bindings, raw outbound access, LMS credentials, and direct storage. The evaluation should compare the current runner with a DO-backed run coordinator, confirm whether our model/provider calls use plain fetch streaming versus outbound WebSocket/TCP paths, account for the 15-minute keepalive limit and duration charges, and identify what state must be persisted incrementally so restarts/deploys do not lose generation progress. This is an architecture evaluation issue, not approval to change the governed runtime boundary.