Files
mopac-pmo/scripts/work-chain.sh
T
mrcharles 79d93b6c49 ops(scripts): dispatch, queue gating, heartbeat, quota probe
dispatch-turn.sh (headless turn launcher with TURN_MODEL routing),
queue-after.sh (serial gate chain + quota-wall guard), pmo-heartbeat.sh
(PMO wake loop), quota-probe-then-chain.sh (post-wall relaunch).
2026-08-29 05:22:43 -05:00

35 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# work-chain.sh <chain-name> <task-file>... — sequential overnight work driver.
# Runs dispatch-turn.sh per TASK in order. Skips tasks already REPORTed.
# Stops on first failure; status -> ~/.coordinate/logs/<chain-name>.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"