ddcd3773a7
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
1.5 KiB
Bash
Executable File
24 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Sorveglianza ORARIA del cuscino USDC di regolamento (debito §5.17, issue #3) — v2.0.0+.
|
|
# Minuto :53 = DOPO il giro del book (:47, i cui fill si regolano in USDC) e fuori dal minuto
|
|
# tondo (rate-limit per-IP), dal :25 (catena), dal :35 (usde) e dal :42 (balance).
|
|
# PUO' INVIARE ORDINI: sotto zero di slack lancia usde_convert --esegui (vende USDE), con le
|
|
# guardie dichiarate nel docstring di scripts/live/cuscino_watch.py; lo interruttore e' lo
|
|
# stesso del libro (execution_enabled in config/live.json).
|
|
# LOCK SUL CONTO (#36): cuscino_watch e book_execute (cron_book.sh, :47) sono separati solo dal
|
|
# tempo e possono mandare ordini sullo stesso conto — giri fino a 659s sono stati misurati.
|
|
# `flock -n` (mai `-w`: un'attesa farebbe scivolare il giro orario) su logs/.conto.lock: se
|
|
# book_execute lo tiene, questo giro si SALTA (rc 75) invece di sovrapporsi.
|
|
export PATH="/home/adriano/.local/bin:$PATH"
|
|
cd /opt/docker/PythagorasGoal || exit 1
|
|
mkdir -p logs
|
|
{
|
|
echo "===== $(date -u '+%Y-%m-%dT%H:%M:%SZ') cron_cuscino ====="
|
|
flock -n -E 75 logs/.conto.lock uv run python scripts/live/cuscino_watch.py --quiet; rc=$?
|
|
[ $rc -eq 75 ] && echo " cuscino: SALTATO — conto occupato (logs/.conto.lock)"
|
|
# (#30) giro orario dei sorveglianti a max_age<=6h: notifica solo il NUOVO, marcatore in
|
|
# data/live/monitor_health_detto.json. Fuori dal lock: e' sola lettura, non tocca il conto.
|
|
uv run python scripts/live/monitor_health.py --quiet --solo-orari || true
|
|
echo "===== done $(date -u '+%H:%M:%SZ') ====="
|
|
} >> logs/cron_cuscino.log 2>&1
|