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).
35 lines
1.4 KiB
Bash
Executable File
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"
|