A Recursion Killed Mid-Flight Resumes From an Interval Snapshot and Delivers Its Result

Claim

In the eOS-Harness recursion domain running against DGD 1.7.9 plus eOSContinuum/eOS-kernellib, a recursive task in flight when the runtime process is killed with SIGKILL -- no shutdown, no orchestrated dump -- completes after a restore from the most recent interval snapshot and delivers its result to an external harness that holds no loop state of its own. The recursion's frame tree, its context object, and the pending call_out that represents the not-yet-run child step all ride the snapshot; after restore the surviving call_out fires with its remaining delay, the child computes, the parent's continuation closes the root frame, and the reconnecting harness reads the result from the frame tree rather than replaying any history. The snapshot that carried the state was written by a runtime-side interval cadence, not by any action taken in anticipation of the kill.

Grounds

This is an Empirical Observation. The grounds are a kill-and-restore drill run 2026-08-09 against a staged private instance (telnet 38023, binary 38080), plus the interval-cadence measurements taken on the same instance.

Setup:

The drill sequence:

  1. Harness submits the task; the root frame opens and the slow child step is scheduled.
  2. kill -9 is delivered to the DGD process at 00:15:16, with the child step pending. The last interval dump had fired at 00:15:08; nothing about the kill was anticipated.
  3. The runtime is restarted against the interval snapshot (** State restored.).
  4. The pending child call_out fires with its remaining delay, computes the answer into the shared context, and advance() closes the child; the parent's default continuation closes the root with children: 42.
  5. The harness, which had logged two Connection refused reconnect attempts during the downtime, reconnects, reads the closed root's result from the frame tree, and exits 0.

Post-restore cadence check: query_dumps() = 11 and query_interval() = 15 after the restore -- the armed interval loop itself rode the snapshot and resumed dumping with no re-arming, so the next kill would be covered by the same mechanism.

Replay guard: a separately exercised guard refuses advance() on a frame that is no longer open (logged as advance REFUSED ... result dropped), so terminal-path replays -- possible when an external caller retries across a restore boundary -- cannot double-apply a result. The drill's delivered result was unchanged by a deliberately replayed advance.

What the evidence establishes:

What the evidence does not establish:

What Would Revise It

Sources

Relations