perl -i -pe '
  s/            log "State changed to FALLBACK — outage detected correctly ✅"/            echo "State changed to FALLBACK — outage detected correctly ✅"/;
  s/            log "\$ICON_RUNNING \$container is running locally ✅"/            echo "\$ICON_RUNNING \$container is running locally ✅"/;
  s/        log "\$REMOTE_SERVER_NAME is reachable again ✅"/        echo "\$REMOTE_SERVER_NAME is reachable again ✅"/;
  s/            log "State returned to NORMAL — handback completed ✅"/            echo "State returned to NORMAL — handback completed ✅"/;
  s/            log "\$ICON_NOT_RUNNING \$container stopped locally — handed back ✅"/            echo "\$ICON_NOT_RUNNING \$container stopped locally — handed back ✅"/;
' /boot/config/plugins/varaverk/Fallback/fallback_test.sh

Convert log to echo in fallback_test.sh


(Bash completed with no output)


Now let's do a final verification sweep to ensure nothing was missed:


Bash

grep -rn 'log ".*✅\|log ".*done\|log ".*nothing\|log ".*removed\|log ".*restarted\|log ".*started\|log ".*stopped\|log ".*applied\|log ".*updated\|log ".*pushed\|log ".*pulled\|log ".*verified\|log ".*flushed\|log ".*placed\|log ".*established\|log ".*cleared\|log ".*revoked\|log ".*deleted\|log ".*ready\|log ".*triggered\|log ".*added\|log ".*valid\|log ".*generated\|log ".*written\|log ".*INACTIVE\|log ".*restored\|log ".*reachable' \
  /boot/config/plugins/varaverk/ \
  --include="*.sh" -r 2>/dev/null | \
  grep -v "# log\|#log\|_log\|log_\|log \".*already\|log \".*not found\|log \".*not running\|log \".*no \|log \".*running ✅\|log \".*normal\|log \".*enabled\|log \".*disabled\|log \".*skip\|log \".*checking\|log \".*Using\|log \".*checking\|log \".*FALLBACK —\|log \".*per-minute\|log \".*Reading\|log \".*Polling\|log \".*Wait\|log \".*Checking\|log \".*Starting\|log \".*Stopping\|log \".*Running\|log \".*Loading\|log \".*Found\|log \".*Applying\|log \".*Connecting\|log \".*Fetching\|log \".*Scanning\|log \".*sampled\|log \".*disks:" | \
  grep -v "Binary" | head -60

Final sweep for remaining log→echo candidates


/boot/config/plugins/varaverk/Watchdogs/system_watchdog.sh:120:        log "$script_name — done in $(format_duration $(( $(date +%s) - _ss ))) ✅"
/boot/config/plugins/varaverk/Watchdogs/System/storage_watchdog.sh:162:[[ ${#WATCHDOG_APPDATA_SIZES[@]} -gt 0 ]] && log "$ICON_GEAR Suppress ceilings: $(for k in "${!WATCHDOG_APPDATA_SIZES[@]}"; do printf '%s=%sMB ' "$k" "${WATCHDOG_APPDATA_SIZES[$k]}"; done)"
/boot/config/plugins/varaverk/Watchdogs/System/network_watchdog.sh:213:log "$ICON_SUCCESS Internet reachable"
/boot/config/plugins/varaverk/Watchdogs/System/network_watchdog.sh:273:        log "$ICON_SUCCESS NPM proxy reachable — $NPM_URL"
/boot/config/plugins/varaverk/common.sh:355:    log "$name validated: $value"
/boot/config/plugins/varaverk/common.sh:1729:        log "$service API reachable: $url"
/boot/config/plugins/varaverk/common.sh:1776:        log "OS versions match: $local_version ✅"
/boot/config/plugins/varaverk/common.sh:1897:    log "$cmd_name validated: $cmd_path ✅"
/boot/config/plugins/varaverk/Watchdogs/stability_watchdog.sh:488:            log "Docker daemon flag clear ✅"
/boot/config/plugins/varaverk/Watchdogs/stability_watchdog.sh:542:            log "/boot is writable ✅"
/boot/config/plugins/varaverk/Watchdogs/stability_watchdog.sh:568:        [[ "$TRIGGERED" == false ]] && log "rootfs ${ROOTFS_USED}% ✅ (warn at ${SYS_WATCHDOG_ROOTFS_PCT}%)"
/boot/config/plugins/varaverk/Watchdogs/stability_watchdog.sh:578:        [[ "$TRIGGERED" == false ]] && log "/var/log ${LOG_USED:-?}% ✅ (warn at ${SYS_WATCHDOG_LOG_PCT}%)"
/boot/config/plugins/varaverk/Watchdogs/stability_watchdog.sh:626:            log "RAM ${MEM_GB}GB free ✅"
/boot/config/plugins/varaverk/Watchdogs/stability_watchdog.sh:672:        [[ "$TRIGGERED" == false ]] && log "load avg ${LOAD} ✅ (warn at ${LOAD_THRESHOLD} = ${SYS_WATCHDOG_LOAD_MULTIPLIER}×${TOTAL_CORES} cores)"
/boot/config/plugins/varaverk/Watchdogs/stability_watchdog.sh:683:        [[ "$TRIGGERED" == false ]] && log "zombies ${ZOMBIE_COUNT} ✅ (warn at ${SYS_WATCHDOG_ZOMBIE_LIMIT})"
/boot/config/plugins/varaverk/Watchdogs/stability_watchdog.sh:716:        [[ "$TRIGGERED" == false ]] && log "$NIC ${NIC_STATE} @ ${NIC_SPEED}Mbps ✅"
/boot/config/plugins/varaverk/Watchdogs/docker_watchdog.sh:766:                log "$container — CPU ${CPU_NORM}% | MEM ${MEM_MB}MB / ${MEM_LIMIT_MB}MB ✅"
/boot/config/plugins/varaverk/Partnership/ssh_setup.sh:223:        log "SSH validate — $REMOTE_SERVER_NAME Tailscale unreachable, not an SSH issue"
/boot/config/plugins/varaverk/Partnership/onboard_cancel.sh:76:        log "No local public key — nothing to remove from $MIRROR"
/boot/config/plugins/varaverk/Partnership/onboard_cancel.sh:126:        log "No authorized_keys on HOST1 — nothing to remove"
/boot/config/plugins/varaverk/Partnership/partnership_offboard.sh:382:    log "Rsync stopped ✅"
/boot/config/plugins/varaverk/Partnership/partnership_manager.sh:436:        log "Blocklist empty — nothing to remove"
/boot/config/plugins/varaverk/Partnership/partnership_manager.sh:1172:            platform_push_conf | while IFS= read -r line; do log "$line"; done
/boot/config/plugins/varaverk/Partnership/partnership_onboard.sh:426:    log "SSH keys ready ✅"
/boot/config/plugins/varaverk/Plugin/unraid/System_Essentials/mover_stop.sh:138:log "$ICON_TIME Mover started: ${MOVER_START:-unknown} — running for $(format_duration "${MOVER_ELAPSED:-0}")"
/boot/config/plugins/varaverk/Plugin/unraid/Partnership/containers.sh:46:                log "  $name ready ✅"
/boot/config/plugins/varaverk/Plugin/unraid/Partnership/containers.sh:162:        log "  $name deployed ✅"
/boot/config/plugins/varaverk/Plugin/unraid/Partnership/containers.sh:256:            log "  $cname removed from $MIRROR ✅" || \
/boot/config/plugins/varaverk/Plugin/unraid/Partnership/containers.sh:264:                log "  Appdata removed on $MIRROR: $path ✅" || \
/boot/config/plugins/varaverk/Plugin/unraid/Partnership/containers.sh:334:                log "  $cname removed ✅" || warn "  $cname rm failed"
/boot/config/plugins/varaverk/Plugin/unraid/Partnership/containers.sh:341:            rm -rf "$path" && log "  Appdata removed: $path ✅" || warn "  Failed to remove: $path"
/boot/config/plugins/varaverk/Plugin/unraid/Partnership/containers.sh:375:        log "$container → http://${target_ip}:${port}/ ✅" || {
/boot/config/plugins/varaverk/Plugin/unraid/Partnership/containers.sh:411:            log "$container → http://${target_ip}:${port}/ ✅" || \
/boot/config/plugins/varaverk/Plugin/unraid/Tools/storage_migrate.sh:169:        while IFS= read -r line; do log "$line"; done; then
/boot/config/plugins/varaverk/Plugin/unraid/Watchdogs/System/webgui_watchdog.sh:168:    log "$ICON_WEBGUI WebGUI responding ✅ — nginx workers:${_nginx_count} php-fpm workers:${_fpm_count}"
/boot/config/plugins/varaverk/Orchestrators/critical_sync_maintenance.sh:118:log "$ICON_SYNC Critical shares (${#CRITICAL_SYNC_SHARES[@]}): $(for s in "${CRITICAL_SYNC_SHARES[@]}"; do printf '%s ' "$(basename "${s%%|*}")"; done)"
/boot/config/plugins/varaverk/Orchestrators/critical_sync_maintenance.sh:120:    log "$ICON_GEAR Maintenance scripts: $(for s in "${CRITICAL_MAINTENANCE_SCRIPTS[@]}"; do printf '%s ' "$(basename "${s%% *}")"; done)"
/boot/config/plugins/varaverk/Orchestrators/watchdog_orchestrator.sh:72:log "$ICON_WATCHDOG Order: $(for s in "${WATCHDOG_ORCHESTRATOR_SCRIPTS[@]}"; do printf '%s ' "${s##*/}"; done)"
/boot/config/plugins/varaverk/Orchestrators/watchdog_orchestrator.sh:128:log "$ICON_DISK Array: $(platform_storage_path) mounted ✅"
/boot/config/plugins/varaverk/Orchestrators/watchdog_orchestrator.sh:166:        log "$ICON_DONE $name — done in $(format_duration $(( $(date +%s) - _ws )))"
/boot/config/plugins/varaverk/Orchestrators/watchdog_orchestrator.sh:206:    for p in "${PASS[@]}"; do log "  $ICON_DONE  $p"; done
/boot/config/plugins/varaverk/Orchestrators/weekly_sync_maintenance.sh:352:                docker start "$_c" >/dev/null 2>&1 && log "$_c started" || error "Failed to start $_c"
/boot/config/plugins/varaverk/Docker_Essentials/docker_weekly_restart.sh:281:[[ ${#SKIPPED[@]} -gt 0 ]]   && log "$ICON_NOT_RUNNING  Skipped:   ${SKIPPED[*]} (were stopped)"
/boot/config/plugins/varaverk/Fallback/fallback_test.sh:243:    log "$REMOTE_SERVER_NAME is reachable"
/boot/config/plugins/varaverk/Fallback/fallback_test.sh:252:    log "Internet is reachable"
/boot/config/plugins/varaverk/Docker_Essentials/docker_network_connect.sh:216:        log "$ICON_DOCKER_NET $network exists ✅ — driver: $net_driver subnet: $net_subnet"
/boot/config/plugins/varaverk/Docker_Essentials/docker_network_connect.sh:286:[[ ${#SKIPPED[@]} -gt 0 ]]          && log "Already connected: ${SKIPPED[*]}"
/boot/config/plugins/varaverk/Docker_Essentials/docker_daily_restart.sh:327:[[ ${#RESTARTED[@]} -gt 0 ]] && log "$ICON_STARTED  Restarted: ${RESTARTED[*]}"
/boot/config/plugins/varaverk/Tools/emby_to_sonarr_sync.sh:219:        log "  $ICON_SKIP Already tracked (TVDB $tvdb_id): $name"
/boot/config/plugins/varaverk/Tools/emby_to_sonarr_sync.sh:225:        log "  $ICON_SKIP Already tracked (title): $name"
/boot/config/plugins/varaverk/Tools/emby_to_radarr_sync.sh:225:        log "  $ICON_SKIP Already tracked (TMDB $tmdb_id): $name"
/boot/config/plugins/varaverk/Tools/emby_to_radarr_sync.sh:231:        log "  $ICON_SKIP Already tracked (title): $name"
/boot/config/plugins/varaverk/Tools/emby_to_lidarr_sync.sh:204:        log "  $ICON_SKIP Already tracked: $artist"
/boot/config/plugins/varaverk/Transcodes/transcode_manager.sh:338:    log "Symlink valid: $TRANSCODE_LINK → $CURRENT_TARGET ✅"
/boot/config/plugins/varaverk/Transcodes/transcode_manager.sh:357:    log "Ramdisk mounted — size: $RAMDISK_SIZE_ACTUAL ✅"
/boot/config/plugins/varaverk/Transcodes/transcode_manager.sh:370:        log "transcoding-temp exists on ramdisk ✅"
/boot/config/plugins/varaverk/Transcodes/transcode_manager.sh:391:    log "SSD available — ${SSD_FREE_GB}GB free ✅"
/boot/config/plugins/varaverk/Transcodes/transcode_manager.sh:643:    log "Daily log written: $TRANSCODE_DAILY_LOG"
/boot/config/plugins/varaverk/Monitors/weekly_health_digest.sh:327:                log "$ICON_CERT $domain: ${days_remaining}d remaining ✅"
/boot/config/plugins/varaverk/Monitors/zfs_memory_snapshot.sh:260:        log "ARC utilization ${ARC_PCT}% — within threshold ✅"


ok, thats what we were doing last week. we were going through all scripts correcting for verbose...... lets go through and check echo vs log... goal clean informative no verbose, and all details verbo…


Run docker network script during onboarding


Let me check the missed items:


grep -n 'Rsync stopped\|SSH keys ready' /boot/config/plugins/varaverk/Partnership/partnership_offboard.sh /boot/config/plugins/varaverk/Partnership/partnership_onboard.sh

Check what's still log in offboard and onboard


/boot/config/plugins/varaverk/Partnership/partnership_offboard.sh:246:        echo "Rsync stopped ✅"
/boot/config/plugins/varaverk/Partnership/partnership_offboard.sh:382:    log "Rsync stopped ✅"
/boot/config/plugins/varaverk/Partnership/partnership_onboard.sh:395:            echo "SSH keys ready ✅"
/boot/config/plugins/varaverk/Partnership/partnership_onboard.sh:426:    log "SSH keys ready ✅"


Different indentation — fix directly:


379
380	if [[ "$DRY_RUN" == false ]]; then
381	    bash "$SCRIPTS_ROOT/Rsync/rsync_stop.sh" --rsync-only 2>/dev/null || STEP_STOP_OK=false
382	    log "Rsync stopped ✅"
383	else
384	    warn "DRY RUN — would stop rsync"

if [[ "$DRY_RUN" == false ]]; then
    bash "$SCRIPTS_ROOT/Rsync/rsync_stop.sh" --rsync-only 2>/dev/null || STEP_STOP_OK=false
    log "Rsync stopped ✅"
else
    warn "DRY RUN — would stop rsync"


423	        fi
424	    fi
425	elif bash "$SCRIPT_DIR/ssh_setup.sh" "${EXTRA_FLAGS[@]}"; then
426	    log "SSH keys ready ✅"
427	    STEP_SSH_OK=true
428	else

        fi
    fi
elif bash "$SCRIPT_DIR/ssh_setup.sh" "${EXTRA_FLAGS[@]}"; then
    log "SSH keys ready ✅"
    STEP_SSH_OK=true
else


The file /boot/config/plugins/varaverk/Partnership/partnership_offboard.sh has been updated successfully. (file state is current in your context — no need to Read it back)

bash "$SCRIPTS_ROOT/Rsync/rsync_stop.sh" --rsync-only 2>/dev/null || STEP_STOP_OK=false


The file /boot/config/plugins/varaverk/Partnership/partnership_onboard.sh has been updated successfully. (file state is current in your context — no need to Read it back)

elif bash "$SCRIPT_DIR/ssh_setup.sh" "${EXTRA_FLAGS[@]}"; then


Now Plugin/unraid/Partnership/containers.sh and the weekly restart line:


40	            "h=\$(docker inspect --format '{{.State.Health.Status}}' '$name' 2>/dev/null)
41	             r=\$(docker inspect --format '{{.State.Running}}' '$name' 2>/dev/null)
42	             echo \${h:-\$r}" 2>/dev/null)
43
44	        case "$status" in
45	            healthy|true)
46	                log "  $name ready ✅"
47	                return 0
48	                ;;
49	            *)

            "h=\$(docker inspect --format '{{.State.Health.Status}}' '$name' 2>/dev/null)
             r=\$(docker inspect --format '{{.State.Running}}' '$name' 2>/dev/null)
             echo \${h:-\$r}" 2>/dev/null)

        case "$status" in
            healthy|true)
                log "  $name ready ✅"
                return 0
                ;;
            *)


348	                    warn "$_c rebuild failed — falling back to docker start"
349	                    docker start "$_c" >/dev/null 2>&1 || error "Failed to start $_c"
350	                fi
351	            else
352	                docker start "$_c" >/dev/null 2>&1 && log "$_c started" || error "Failed to start $_c"
353	            fi
354	        done
355	        unset _c _d _needs_delay

                    warn "$_c rebuild failed — falling back to docker start"
                    docker start "$_c" >/dev/null 2>&1 || error "Failed to start $_c"
                fi
            else
                docker start "$_c" >/dev/null 2>&1 && log "$_c started" || error "Failed to start $_c"
            fi
        done
        unset _c _d _needs_delay


133
134	MOVER_PID=$(platform_get_mover_pid)
135	MOVER_START=$(ps -o lstart= -p "$MOVER_PID" 2>/dev/null | xargs)
136	MOVER_ELAPSED=$(ps -o etimes= -p "$MOVER_PID" 2>/dev/null | tr -d ' ')
137	warn "Mover is running (PID $MOVER_PID) — stopping in ${MOVER_STOP_TIMEOUT}s"
138	log "$ICON_TIME Mover started: ${MOVER_START:-unknown} — running for $(format_duration "${MOVER_ELAPSED:-0}")"
139
140	# ── Warn users via wall ───────────────────────────────────────────────────────────────────────

MOVER_PID=$(platform_get_mover_pid)
MOVER_START=$(ps -o lstart= -p "$MOVER_PID" 2>/dev/null | xargs)
MOVER_ELAPSED=$(ps -o etimes= -p "$MOVER_PID" 2>/dev/null | tr -d ' ')
warn "Mover is running (PID $MOVER_PID) — stopping in ${MOVER_STOP_TIMEOUT}s"
log "$ICON_TIME Mover started: ${MOVER_START:-unknown} — running for $(format_duration "${MOVER_ELAPSED:-0}")"

# ── Warn users via wall ───────────────────────────────────────────────────────────────────────


perl -i -pe '
  s/                log "  \$name ready ✅"/                echo "  \$name ready ✅"/;
  s/        log "  \$name deployed ✅"/        echo "  \$name deployed ✅"/;
  s/            log "  \$cname removed from \$MIRROR ✅" \|\| \\/            echo "  \$cname removed from \$MIRROR ✅" || \\/;
  s/                log "  Appdata removed on \$MIRROR: \$path ✅" \|\| \\/                echo "  Appdata removed on \$MIRROR: \$path ✅" || \\/;
  s/                log "  \$cname removed ✅" \|\| warn "  \$cname rm failed"/                echo "  \$cname removed ✅" || warn "  \$cname rm failed"/;
  s/            rm -rf "\$path" && log "  Appdata removed: \$path ✅"/            rm -rf "\$path" \&\& echo "  Appdata removed: \$path ✅"/;
  s/        log "\$container → http:\/\/\${target_ip}:\${port}\/ ✅" \|\| \{/        echo "\$container → http:\/\/\${target_ip}:\${port}\/ ✅" || {/;
  s/            log "\$container → http:\/\/\${target_ip}:\${port}\/ ✅" \|\| \\/            echo "\$container → http:\/\/\${target_ip}:\${port}\/ ✅" || \\/;
' /boot/config/plugins/varaverk/Plugin/unraid/Partnership/containers.sh

Convert log to echo in Plugin/unraid/Partnership/containers.sh


Edit

docker start "$_c" >/dev/null 2>&1 && log "$_c started" || error "Failed to start $_c"

docker start "$_c" >/dev/null 2>&1 && echo "$_c started" || error "Failed to start $_c"


The file /boot/config/plugins/varaverk/Orchestrators/weekly_sync_maintenance.sh has been updated successfully. (file state is current in your context — no need to Read it back)

docker start "$_c" >/dev/null 2>&1 || error "Failed to start $_c"

-                docker start "$_c" >/dev/null 2>&1 && log "$_c started" || error "Failed to start $_c"

+                docker start "$_c" >/dev/null 2>&1 && echo "$_c started" || error "Failed to start $_c"


log "$ICON_TIME Mover started: ${MOVER_START:-unknown} — running for $(format_duration "${MOVER_ELAPSED:-0}")"

echo "$ICON_TIME Mover started: ${MOVER_START:-unknown} — running for $(format_duration "${MOVER_ELAPSED:-0}")"


The file /boot/config/plugins/varaverk/Plugin/unraid/System_Essentials/mover_stop.sh has been updated successfully. (file state is current in your context — no need to Read it back)

#!/bin/bash
# ==============================================================================================
# ================================= Mover Stop =================================================
# ==============================================================================================
#
# PURPOSE
# ─────────────────────────────────────────────────────────────────────────────
# Safely stops the unRAID mover with a wall warning, configurable timeout, and
# SIGTERM → SIGKILL sequence. Use before planned reboots, disk operations, or
# any operation where mover and rsync running simultaneously could corrupt files.
# Exits cleanly if mover is not running.
#
# ==============================================================================================
# OPERATIONAL MODEL
# ==============================================================================================
#
# Stop Sequence
#   1. Check if mover is running — exit cleanly if not
#   2. Wall message to all logged-in terminal users
#   3. Wait MOVER_STOP_TIMEOUT seconds
#   4. SIGTERM — allows mover to finish its current file before stopping
#      (no partial files — the mover completes what it is working on)
#   5. Wait 5 seconds → verify stopped
#   6. SIGKILL if still running — forced stop, partial files possible
#   7. Final verify — error if still running after SIGKILL
#
# SIGTERM first because the mover has an opportunity to finish the file it is
# currently moving, leaving no partial copies on cache or array. SIGKILL is only
# used as a last resort and may leave a file split across cache and array.
#
# ==============================================================================================
# OPERATIONAL SAFEGUARDS
# ==============================================================================================
#
# Single Instance Lock
#   acquire_lock prevents concurrent stop attempts racing each other.
#
# Root Required
#   pkill on emhttp processes requires root.
#
# Final Verify
#   Confirms mover is actually stopped after the kill sequence — errors if it
#   is still running after SIGKILL.
#
# Silent When Clean
#   Mover not running = log() only, no visible output.
#
# ==============================================================================================
# CONFIGURATION
# ==============================================================================================
#
# master.conf
#
#   MOVER_STOP_TIMEOUT
#       Seconds between wall warning and SIGTERM. (default: 30)
#
# ==============================================================================================
# RUNTIME MODES
# ==============================================================================================
#
# mover_stop.sh
#     Check if mover is running. If so, warn users and stop it.
#
# mover_stop.sh --dry-run
#     Show mover state and what would happen. No signals sent.
#
# mover_stop.sh --status
#     Show mover state (running, PID, start time). Then exit.
#
# mover_stop.sh --log
#     Verbose output showing each step of the stop sequence.
#
# ==============================================================================================

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

source "$SCRIPT_DIR/../../../load_config.sh"

parse_args "$@"

# ==============================================================================================
# ━━━ Setup ━━━
# ==============================================================================================
if [[ "$EUID" -ne 0 ]]; then
    error "Must be run as root — pkill on emhttp processes requires root"
    exit 1
fi

platform_require_cmd \
    "/usr/local/emhttp/plugins/dynamix/scripts/notify" \
    "" "" \
    "unRAID notify script" || warn "unRAID notify script not found — native notifications disabled"

validate_int MOVER_STOP_TIMEOUT "$MOVER_STOP_TIMEOUT"

acquire_lock

detect_hosts

[[ "$DRY_RUN" == true ]] && warn "DRY RUN — no changes will be made"

# ==============================================================================================
# ━━━ Status ━━━
# ==============================================================================================
if [[ "$SHOW_STATUS" == true ]]; then
    echo ""
    echo "━━━━━ $ICON_SUMMARY STATUS ━━━━━"
    echo "$ICON_HOST   Identity: $MY_ID ($LOCAL_SERVER_NAME)"
    echo "$ICON_MOVER  Timeout:  ${MOVER_STOP_TIMEOUT}s"
    echo "$ICON_GEAR   Dry Run:  $DRY_RUN"
    echo ""
    if platform_is_mover_running; then
        MOVER_PID=$(platform_get_mover_pid)
        MOVER_START=$(ps -o lstart= -p "$MOVER_PID" 2>/dev/null | xargs)
        echo "  $ICON_MOVER Mover: RUNNING (PID $MOVER_PID)"
        [[ -n "$MOVER_START" ]] && echo "  $ICON_TIME  Started: $MOVER_START"
    else
        echo "  $ICON_MOVER Mover: not running"
    fi
    echo "━━━━━━━━━━━━━━━━━━━━━━━"
    exit 0
fi

# ==============================================================================================
# ━━━ Mover Stop ━━━
# ==============================================================================================
START=$(date +%s)

if ! platform_is_mover_running; then
    echo "Mover is not running — nothing to do"
    exit 0
fi

MOVER_PID=$(platform_get_mover_pid)
MOVER_START=$(ps -o lstart= -p "$MOVER_PID" 2>/dev/null | xargs)
MOVER_ELAPSED=$(ps -o etimes= -p "$MOVER_PID" 2>/dev/null | tr -d ' ')
warn "Mover is running (PID $MOVER_PID) — stopping in ${MOVER_STOP_TIMEOUT}s"
log "$ICON_TIME Mover started: ${MOVER_START:-unknown} — running for $(format_duration "${MOVER_ELAPSED:-0}")"

# ── Warn users via wall ───────────────────────────────────────────────────────────────────────
if [[ "$DRY_RUN" == false ]]; then
    wall "$ICON_WARN $MY_ID ($LOCAL_SERVER_NAME) — unRAID Mover stopping in ${MOVER_STOP_TIMEOUT}s"
    echo "Wall message sent — waiting ${MOVER_STOP_TIMEOUT}s..."
    sleep "$MOVER_STOP_TIMEOUT"
else
    warn "DRY RUN — would send wall warning and wait ${MOVER_STOP_TIMEOUT}s"
fi

# ── SIGTERM — graceful stop ───────────────────────────────────────────────────────────────────
if [[ "$DRY_RUN" == true ]]; then
    warn "DRY RUN — would send SIGTERM to mover (PID $MOVER_PID)"
else
    log "Sending SIGTERM to mover (PID $MOVER_PID)..."
    kill -TERM "$MOVER_PID" 2>/dev/null || true
    sleep 5

    # Verify stopped after SIGTERM
    if ! platform_is_mover_running; then
        warn "Mover stopped cleanly (SIGTERM) ✅"
    else
        # ── SIGKILL — forced stop ─────────────────────────────────────────────────────────────
        warn "Mover still running after SIGTERM — sending SIGKILL (may leave partial files)"
        kill -KILL "$MOVER_PID" 2>/dev/null || true
        sleep 2

        # Final verify
        if platform_is_mover_running; then
            error "Mover still running after SIGKILL — manual intervention needed"
            notify "Mover stop failed on $(hostname) ($MY_ID) — process unkillable" \
                "Mover Stop" "warning"
            exit 1
        else
            warn "Mover force-stopped (SIGKILL) — check for partial files on cache"
        fi
    fi
fi

END=$(date +%s)

# ==============================================================================================
# ━━━ Summary ━━━
# ==============================================================================================
echo ""
echo "━━━━━ $ICON_SUMMARY MOVER STOP SUMMARY ━━━━━"
echo "$ICON_HOST   Identity: $MY_ID ($LOCAL_SERVER_NAME)"
echo "$ICON_MOVER  Timeout:  ${MOVER_STOP_TIMEOUT}s"
echo "$ICON_TIME   Duration: $(format_duration $(( END - START )))"
echo ""

if [[ "$DRY_RUN" == true ]]; then
    warn "DRY RUN — no changes made"
else
    echo "$ICON_DONE Status: done — mover stopped ✅"
fi
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

-log "$ICON_TIME Mover started: ${MOVER_START:-unknown} — running for $(format_duration "${MOVER_ELAPSED:-0}")"

+echo "$ICON_TIME Mover started: ${MOVER_START:-unknown} — running for $(format_duration "${MOVER_ELAPSED:-0}")"


Now verify containers.sh conversions landed:


Bash

grep -n 'log ".*✅\|echo ".*✅' /boot/config/plugins/varaverk/Plugin/unraid/Partnership/containers.sh

Verify containers.sh echo conversions


46:                echo "  $name ready ✅"
162:        echo "  $name deployed ✅"
256:            echo "  $cname removed from $MIRROR ✅" || \
264:                echo "  Appdata removed on $MIRROR: $path ✅" || \
334:                echo "  $cname removed ✅" || warn "  $cname rm failed"
341:            rm -rf "$path" && echo "  Appdata removed: $path ✅" || warn "  Failed to remove: $path"
375:        echo "$container → http://${target_ip}:${port}/ ✅" || {
411:            echo "$container → http://${target_ip}:${port}/ ✅" || \


All converted. Now commit everything:


cd /boot/config/plugins/varaverk && git diff --stat

Show diff summary of all changes


 Docker_Essentials/docker_container_stop.sh         |  2 +-
 Docker_Essentials/docker_daily_restart.sh          |  2 +-
 Docker_Essentials/docker_update.sh                 |  2 +-
 Docker_Essentials/docker_weekly_restart.sh         |  2 +-
 Docker_Essentials/downloaders_reset.sh             |  2 +-
 Fallback/fallback.sh                               |  8 ++---
 Fallback/fallback_test.sh                          | 10 +++----
 Media/arr_sync.sh                                  |  2 +-
 Media/arrs_failed_stalled_recovery.sh              |  2 +-
 Media/media_cleaner.sh                             |  4 +--
 Media/radarr_tmdb_removed.sh                       |  4 +--
 Media/sonarr_tvdb_removed.sh                       |  4 +--
 Monitors/backup_verify.sh                          |  8 ++---
 Monitors/emby_session_report.sh                    |  2 +-
 Orchestrators/array_started.sh                     |  2 +-
 Orchestrators/array_stopping.sh                    |  2 +-
 Orchestrators/critical_sync_maintenance.sh         |  2 +-
 Orchestrators/daily_sync_maintenance.sh            |  4 +--
 Orchestrators/intermediate_sync_maintenance.sh     |  6 ++--
 Orchestrators/monthly_maintenance.sh               |  2 +-
 Orchestrators/sunday_morning_coffee_report.sh      |  2 +-
 Orchestrators/weekly_sync_maintenance.sh           | 10 +++----
 Partnership/gitea_ssh_setup.sh                     |  4 +--
 Partnership/onboard_cancel.sh                      |  8 ++---
 Partnership/partnership_manager.sh                 | 34 +++++++++++-----------
 Partnership/partnership_offboard.sh                |  8 ++---
 Partnership/partnership_onboard.sh                 | 16 +++++-----
 Partnership/partnership_transfer.sh                |  2 +-
 Partnership/ssh_setup.sh                           |  8 ++---
 Plugin/unraid/Partnership/containers.sh            | 16 +++++-----
 Plugin/unraid/System_Essentials/mover_stop.sh      |  2 +-
 .../System_Essentials/php_fpm_max_children.sh      |  4 +--
 .../System_Essentials/unraid_api_key_renew.sh      |  2 +-
 Plugin/unraid/Tools/recreate_shares.sh             |  6 ++--
 Rsync/rsync.sh                                     |  4 +--
 System_Essentials/conf_sync.sh                     |  6 ++--
 System_Essentials/rsync_stop.sh                    |  2 +-
 System_Essentials/server_reboot.sh                 |  4 +--
 Tools/bulk_permissions_repair.sh                   |  2 +-
 Tools/container_data_export.sh                     | 10 +++----
 Tools/docker_prune_images.sh                       |  4 +--
 Tools/emby_database_repair.sh                      | 12 ++++----
 Tools/emby_to_lidarr_sync.sh                       |  2 +-
 Tools/ramdisk_stop.sh                              | 10 +++----
 Tools/zfs_pool_scrub.sh                            |  4 +--
 Transcodes/ramdisk_setup.sh                        |  6 ++--
 Watchdogs/System/network_watchdog.sh               |  2 +-
 Watchdogs/resource_watchdog.sh                     |  2 +-
 48 files changed, 132 insertions(+), 132 deletions(-)
Shell cwd was reset to /root


cd /boot/config/plugins/varaverk && git add -A && git commit -m "$(cat <<'EOF'
audit echo vs log across all scripts — outcomes always visible, verbose for per-item loops
EOF
)"

Commit the echo vs log audit