#!/usr/bin/env bash
set -euo pipefail

REPO="/home/agent/projects/CryptoTradingBot/Crypto_Agent"
RUNTIME="/home/agent/jarvis_runtime/finance-system/crypto_trader"
EVIDENCE="$RUNTIME/evidence"
LOG_DIR="$RUNTIME/logs"
LOG="$LOG_DIR/shadow_tick_$(date -u +%Y%m%dT%H%M%SZ).log"
mkdir -p "$EVIDENCE" "$LOG_DIR"

cd "$REPO"

# Hard safety boundary: this watcher is read-only/shadow only.
unset CTB_LIVE_TRADING_ALLOWED
export PYTHONPATH=.

{
  echo "ts=$(date -u +%Y-%m-%dT%H:%M:%SZ) start shadow tick"
  python3 -m src.tools.trader_desk_shadow_runner --env mainnet --coins BTC,ETH,SOL,LINK --iterations 1 --json
  python3 -m src.tools.trader_desk_shadow_scorecard --runtime-dir runtime/experiments/trader_desk_shadow --json
  python3 -m src.tools.hl_reconcile --env mainnet --readonly --json > "$EVIDENCE/reconcile_latest.json"
  python3 -m src.tools.hl_credential_matrix --json > "$EVIDENCE/credential_matrix_latest.json"

  TESTNET_PROOF="${CTB_TESTNET_PROOF_PATH:-$EVIDENCE/testnet_fill_stop_latest.json}"
  ALERT_PROOF="${CTB_ALERT_PROOF_PATH:-$EVIDENCE/alert_proof_latest.json}"
  if [[ ! -f "$TESTNET_PROOF" && -f /tmp/ctb_testnet_fill_stop_raw.json ]]; then
    cp /tmp/ctb_testnet_fill_stop_raw.json "$TESTNET_PROOF"
  fi
  if [[ ! -f "$ALERT_PROOF" && -f /tmp/ctb_alert_proof.json ]]; then
    cp /tmp/ctb_alert_proof.json "$ALERT_PROOF"
  fi

  PREFLIGHT_ARGS=(
    --bridge-path "$RUNTIME/trader_desk_latest.json"
    --scorecard-path "$RUNTIME/trader_desk_scorecard_latest.json"
    --reconcile-path "$EVIDENCE/reconcile_latest.json"
    --credential-matrix-path "$EVIDENCE/credential_matrix_latest.json"
    --output "$RUNTIME/trader_desk_tiny_live_preflight_latest.json"
    --json
  )
  if [[ -f "$TESTNET_PROOF" ]]; then PREFLIGHT_ARGS+=(--testnet-proof-path "$TESTNET_PROOF"); fi
  if [[ -f "$ALERT_PROOF" ]]; then PREFLIGHT_ARGS+=(--alert-proof-path "$ALERT_PROOF"); fi
  python3 -m src.tools.trader_desk_tiny_live_preflight "${PREFLIGHT_ARGS[@]}"
  python3 - <<'PY'
import json
from pathlib import Path
s=json.loads(Path('/home/agent/jarvis_runtime/finance-system/crypto_trader/trader_desk_scorecard_latest.json').read_text())
p=json.loads(Path('/home/agent/jarvis_runtime/finance-system/crypto_trader/trader_desk_tiny_live_preflight_latest.json').read_text())
assert p.get('execution_allowed') is False and p.get('live_order_allowed') is False and p.get('mainnet_signed_action') is False
print('summary closed=%s winrate=%s blockers=%s live=false signed=false' % (s['overall']['closed'], s['overall']['win_rate_pct'], ','.join(p.get('blockers') or [])))
PY
  echo "ts=$(date -u +%Y-%m-%dT%H:%M:%SZ) ok"
} > "$LOG" 2>&1 || {
  rc=$?
  echo "CryptoTrader shadow tick FAILED rc=$rc log=$LOG"
  tail -80 "$LOG" || true
  exit "$rc"
}

# Success is intentionally silent for script-only cron.
exit 0
