discord: retire per-trade pings, add daily sharp digest; trust: v2 self-certify + invalidated-wallet fallback

* per-trade Discord pings removed everywhere: copybot placement/settle/startup
  alerts silenced (engine.webhook forced off), webhook_receiver.py archived,
  Procfile removed. The ONLY Discord output is now live/discord_daily.py at the
  end of the daily pipeline: one embed listing every watch_sharps wallet with a
  Polymarket profile link + 30D conviction win% / record / P&L.

* trust.py fixes found on the first scheduled run (sharp list collapsed 25->7):
  - Polymarket rewrites endDate after resolution, so freshly re-pulled wallets'
    corrected res_t stopped matching the stale cross-wallet consensus
    (374/454 of iohihoo's rows wrongly distrusted). v2 rows with resolved=TRUE
    are now self-certifying (resolved=TRUE implies endDate-based res_t observed
    post-end) — consensus only gates legacy rows.
  - daily.sh invalidates watchlist wallets by DELETING their pulled row; a
    transiently failed re-pull then dropped the wallet's entire history from
    the trusted set (the 0x73afc816 whale vanished). Legacy rows of wallets
    missing from pulled now fall back to trusting markets resolved >=14d ago.
  Re-run: 85 conviction wallets, 34 copy-positive sharps — whale/iohihoo/
  Stavenson/LSB1/Kruto all recovered.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
jaxperro
2026-07-04 18:31:30 -04:00
parent 24b64ba4c1
commit 8c07343735
10 changed files with 2072 additions and 338 deletions
+4 -23
View File
@@ -60,26 +60,7 @@ elif git commit -q -m "live: daily refresh — skilled + sharp wallets [skip ci]
fi
echo "[daily] $(date '+%F %T') done -> watch_sharps.json + dashboard.html"
# ping Discord (webhook kept in gitignored ../config.json -> daily_webhook)
PUBLISH="$PUBLISH" python3 - <<'PY'
import json, os, ssl, time, urllib.request
try: # cwd is live/ (daily.sh cd's there); config is repo-root
hook = json.load(open("../config.json")).get("daily_webhook")
except Exception:
hook = None
if hook:
try:
n = len(json.load(open("watch_sharps.json")))
except Exception:
n = "?"
msg = (f"✅ Sharp pipeline finished {time.strftime('%Y-%m-%d %H:%M')} — "
f"{n} copyable sharps · feed {os.environ.get('PUBLISH','?')}")
data = json.dumps({"content": msg}).encode()
req = urllib.request.Request(hook, data=data,
headers={"Content-Type": "application/json", "User-Agent": "Mozilla/5.0"}) # Discord 403s w/o UA
try:
urllib.request.urlopen(req, timeout=15, context=ssl._create_unverified_context())
print("[daily] discord pinged")
except Exception as e:
print("[daily] discord ping failed:", e)
PY
# Discord: the daily sharp-list digest (profile links + 30D conviction stats).
# The only Discord output in the system — per-trade pings retired 2026-07-04.
# Webhook lives in gitignored ../config.json -> daily_webhook.
python3 discord_daily.py "feed: $PUBLISH" || echo "[daily] discord digest failed (non-fatal)"