You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,6 +40,7 @@ The result is not a magical mind meld. It is a practical workflow: the agents on
40
40
- Stale Claude frontend attachments are probed and evicted instead of blocking a new Claude session indefinitely.
41
41
- Codex turns have a watchdog fallback, and the viewer/status model now distinguishes idle, busy, stale, and offline agent states.
42
42
- Codex resume/fork argument handling, active thread tracking, and app-server port cleanup are more robust, including LISTEN-only and Windows-aware process checks.
43
+
- Reliability guards now bound backup-agent timeout cleanup, daemon shutdown steps, and long-running Codex turns with visible ledger/status telemetry.
43
44
- The browser viewer remains the **Command Deck**: a read-only, color-coded, latest-first dashboard with clear history controls, task lanes, artifacts, policy state, and connection health.
44
45
45
46
## What It Helps With
@@ -724,7 +725,7 @@ Business value: the viewer and `ctxrelay status` no longer make a completed or s
724
725
725
726
Technical shape:
726
727
727
-
- Codex exposes `idle`, `busy`, `stale`, and `offline` state. A watchdog force-clears a Codex turn only after a configurable silence window, emits a visible forced-completion marker, and lets Claude send again.
728
+
- Codex exposes `idle`, `busy`, `stale`, and `offline` state. Watchdogs force-clear a Codex turn after either a configurable silence window or a configurable per-turn wall-clock budget, emit visible markers, and let Claude send again.
728
729
- Claude exposes `idle`, `expected`, `stale`, and `offline` state. Claude-owned lanes become stale after a configurable response timeout.
729
730
- A new Claude frontend does not blindly replace a live session. The daemon probes the incumbent frontend first; if it responds, the newcomer is rejected, and if it does not, the stale frontend is evicted with close code `4002`.
730
731
@@ -911,8 +912,11 @@ The exact runtime state path can be changed with `CONTEXTRELAY_STATE_DIR`. Norma
911
912
|`CONTEXTRELAY_CLAUDE_PROBE_TIMEOUT_MS`|`3000`| How long the daemon waits for an attached Claude frontend to answer a liveness probe before evicting it as stale. Set to `0` to disable probe eviction and keep the older reject-only behavior. |
912
913
|`CONTEXTRELAY_CLAUDE_RESPONSE_TIMEOUT_MS`|`300000`| How long a Claude-owned active task lane can remain unanswered before the task board marks it stale. |
913
914
|`CONTEXTRELAY_CODEX_TURN_IDLE_TIMEOUT_MS`|`300000`| Silence window before a stuck Codex turn is force-cleared and reported as a forced completion. |
915
+
|`CONTEXTRELAY_TURN_MAX_MS`|`300000`| Wall-clock budget for a single Codex turn before that turn is cleared from the busy set and reported as a turn watchdog event. Set to `0` to disable this guard. |
914
916
|`CONTEXTRELAY_MAX_DEPTH`|`3`| Maximum relay recursion depth. |
915
917
|`CONTEXTRELAY_BACKUP_THROTTLE_MS`|`60000`| Minimum delay between backup starts for the same target. |
918
+
|`CONTEXTRELAY_BACKUP_KILL_GRACE_MS`|`2000`| Grace period between backup timeout SIGTERM and SIGKILL escalation. |
919
+
|`CONTEXTRELAY_DAEMON_SHUTDOWN_STEP_TIMEOUT_MS`|`1500`| Per-step deadline for daemon shutdown cleanup before recording the step as timed out and continuing shutdown. |
916
920
|`CONTEXTRELAY_MAX_CONTROL_MESSAGE_BYTES`|`1000000`| Maximum accepted control WebSocket message size. |
0 commit comments