Fleet changelogs ยท dev.ecs0.net
rdmbair15m5-changelog-20260905-1415-devupdate-v196-remediation-fleet-support

dev_update v1.96 Remediation & Fleet Orchestrator

One-line summary: Fixed false "ALL CLEAR" Zsh pipeline masking bug in dev_update, resolved Ollama headless launch in SSH, prevented agy cask upgrade collisions, cleaned Apple Silicon vs Intel tuning presentation, and added --fleet / --hosts multi-node execution.

Scope

Root Causes Diagnosed

  1. False ALL CLEAR / exit 0 (Critical Zsh Bug): In dev_update_v1.95.zsh phase_dev_update, the pipeline "$FU_DU_PATH" "${args[@]}" 2>&1 | _du_filter was inside an if ... else ... fi compound block, and DU_RC=$pipestatus[1] was placed after fi. In Zsh, exiting fi resets $pipestatus to 0. Consequently, DU_RC evaluated as 0 regardless of failure, printing [PASS] exit 0 and ALL CLEAR even when dev_update.zsh exited with 1 and recorded issues.
  2. brew upgrade --cask --greedy failed (exit 1) on agy: antigravity-cli auto-updates itself and overwrites the Homebrew symlink $(brew --prefix)/bin/agy with a standalone binary. When brew upgrade --cask --greedy subsequently runs, Homebrew halts with Error: antigravity-cli: It seems there is already a Binary at .../bin/agy. A fleet audit showed 4 other hosts (rdmbair13m5, rdmbair15m5, rdmpw3265m, rdmpw3275m) currently have this collision pending.
  3. Ollama: server failed to start under SSH: In non-Aqua environments (SSH sessions, background agents), open -ga Ollama fails with OSLaunchdErrorDomain Code=125 ("Domain does not support specified action"). Because /Applications/Ollama.app existed, the script exclusively attempted open -ga Ollama and never fell back to headless ollama serve.
  4. Alarming "CASCADE LAKE TUNING" Header on Apple Silicon: Cascade Lake is the Intel Xeon W-32xx architecture on rdmpw3265m and rdmpw3275m (using AVX-512 VNNI). Apple Silicon machines use native arm64 bottles; there is nothing to tune or recompile. Showing a prominent "CASCADE LAKE TUNING" banner on Apple Silicon was confusing.

Remediation Implemented in v1.96 / Payload v2.12

  1. Pipeline Exit Capture: Captured DU_RC=$pipestatus[1] immediately inside both branches of the if/else block before fi. Also escalated DU_ISSUES > 0 to HIGH_N so issues are never masked with a false ALL CLEAR.
  2. Pre-Cask agy Defense: Added pre-cask link inspection: if $(brew --prefix)/bin/agy is a regular file while antigravity-cli is installed as a cask, unlinks it and normalizes the link so brew upgrade --cask upgrades smoothly without conflict.
  3. Ollama Headless Fallback: Checks [[ "$(launchctl managername)" == "Aqua" ]] before calling open -ga Ollama. If not in Aqua or if api/tags does not respond within 3s, starts headless (OLLAMA_HOST="127.0.0.1:11434" ollama serve >>"$LOG_FILE" 2>&1 &) adhering to Rule 23 (127.0.0.1 only) and polls up to 15s. Verified that models refresh successfully.
  4. Clean Apple Silicon Architecture Presentation: Refactored Phase 4:
    • On Apple Silicon (apple-silicon): Displays APPLE SILICON: Native arm64 architecture verified and passes cleanly without displaying the Cascade Lake recompilation banner.
    • On Cascade Lake Intel (cascadelake): Displays CASCADE LAKE TUNING and runs the full build-log verified recompilation pass.
  5. Multi-Node Fleet Execution (--fleet and --hosts):
    • --fleet: Iterates sequentially across all 6 machines (rdmsm4x, rdmbair13m5, rdmbair15m5, rdmpw3265m, rdmpw3275m, jdmbair13m5).
    • --hosts host1,host2: Allows updating specific targeted hosts.
    • Automatically applies --no-mas for remote SSH safety (preventing headless App Store sudo hangs) and prints a consolidated fleet summary table.

Verification Evidence