Add upgrade all chat command with drain check and convergence verify
- `upgrade all` sweeps every registered sled in sequence, streaming per-sled phase markers and reporting a summary. - Binary source is now the gateway's own artifact store via host.docker.internal (was: unresolvable `gateway` hostname serving the gateway's macOS binary to Linux sleds — would have bricked them). - Sleds with active claude processes are skipped, never killed. - After reconnect, /api/version git_hash is compared against the published artifact's .hash sidecar; divergence is reported loudly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019fHdm92yjvguPi2LiXfLB9
This commit is contained in:
@@ -343,7 +343,7 @@ async fn wait_for_drain(container_name: &str, timeout_secs: u64) -> Option<Strin
|
||||
///
|
||||
/// Uses `docker exec <name> pgrep -f claude` — exits 0 with PID list when found,
|
||||
/// exits 1 when no matches (treated as 0 active processes).
|
||||
async fn count_active_claude_processes(container_name: &str) -> Result<usize, String> {
|
||||
pub(crate) async fn count_active_claude_processes(container_name: &str) -> Result<usize, String> {
|
||||
let out = tokio::process::Command::new("docker")
|
||||
.args(["exec", container_name, "pgrep", "-f", "claude"])
|
||||
.output()
|
||||
|
||||
Reference in New Issue
Block a user