- heartbeat loop continues past a raising activity callback instead of silently stopping (matches delegate_task / touch_activity_if_due swallow-and-continue semantics) — one transient error must not drop watchdog protection for the rest of a long job - hard 6h elapsed ceiling so a wedged job under HERMES_CRON_TIMEOUT=0 (unlimited child watchdog) cannot mask the gateway watchdog forever - public get_activity_callback() accessor in tools/environments/base.py instead of importing the private _get_activity_callback cross-module - tests: deterministic heartbeat test (event-gated, no timing sleep), no-callback test now asserts the thread is truly never created, new exception-survival guard; dead started event removed - fix comment: delegate_task heartbeat cadence is 30s, not 10s |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| base.py | ||
| daytona.py | ||
| docker.py | ||
| file_sync.py | ||
| local.py | ||
| managed_modal.py | ||
| modal.py | ||
| modal_utils.py | ||
| singularity.py | ||
| ssh.py | ||
| vercel_sandbox.py | ||