#!/usr/bin/env bash # work-chain.sh ... — sequential overnight work driver. # Runs dispatch-turn.sh per TASK in order. Skips tasks already REPORTed. # Stops on first failure; status -> ~/.coordinate/logs/.status set -uo pipefail CHAIN=${1:?chain name}; shift LOGDIR="$HOME/.coordinate/logs" STATUS="$LOGDIR/$CHAIN.status" inbox="$HOME/.coordinate/inbox-pmo" echo "$(date -Is) chain start: $*" > "$STATUS" for task in "$@"; do slug=$(basename "$task" .md | sed 's/^TASK-[0-9]*-[0-9]*-//') if ls "$inbox"/REPORT-*"$slug"* >/dev/null 2>&1; then echo "$(date -Is) SKIP $slug (reported)" >> "$STATUS"; continue fi if [ ! -f "$task" ]; then echo "$(date -Is) FAIL $slug (task file missing) — chain halted" >> "$STATUS" screen -S RCEO-PMO -X stuff "CHAIN $CHAIN HALTED missing task $slug.\r" exit 2 fi echo "$(date -Is) RUN $slug" >> "$STATUS" bash "$HOME/.coordinate/scripts/dispatch-turn.sh" "$CHAIN-$slug" "$task" \ >> "$LOGDIR/$CHAIN-$slug.log" 2>&1 rc=$? if [ $rc -ne 0 ]; then echo "$(date -Is) FAIL $slug rc=$rc — chain halted" >> "$STATUS" screen -S RCEO-PMO -X stuff "CHAIN $CHAIN HALTED at $slug - read $STATUS.\r" exit $rc fi echo "$(date -Is) OK $slug" >> "$STATUS" done echo "$(date -Is) chain COMPLETE" >> "$STATUS" screen -S RCEO-PMO -X stuff "CHAIN $CHAIN COMPLETE - read status + inbox-pmo.\r"