Pam Operational State — 2026-04-16
TL;DR
Nothing is running. Pam has been silent for 5–6 weeks. Latest process log (data/overnight_overlap_loop.log) last wrote 2026-03-08 08:25 UTC. Background monitor’s monitor.log last wrote 2025-10-02 16:44 UTC — six months ago. No processes matching pam|background_monitor|overnight_overlap|opportunity_hunter|main.py are currently alive.
Processes
| Process | Status | Last Activity | PID file |
|---|---|---|---|
background_monitor.py |
STOPPED | 2025-10-02 | DEPLOYMENT_STATUS.md claims PID 65284 — dead |
tools/overnight_overlap_loop.py |
STOPPED | 2026-03-08 (iteration 96 of 96) | data/overnight_overlap_loop.pid = 53818 (stale) |
opportunity_hunter.py |
STOPPED | Crashed on EOFError: EOF when reading a line — it’s interactive-only, was backgrounded with no stdin |
|
Main CLI (main.py run) |
Not running | — | — |
| Telegram webhook | Not running | — | — |
| Scheduler | Not running | — | — |
Credentials / venues wired
From .env (currently on disk, plaintext):
- Kalshi: KALSHI_API_KEY=8ab716c9-08aa-4213-a339-8c42dc3cc21d, private key path secrets/kalshi-live.key (file exists).
- Polymarket: POLYMARKET_PRIVATE_KEY=0x8a2…cc806e (live key), POLYMARKET_PROXY_ADDRESS=0x7AA1…FB80, POLYMARKET_SIGNATURE_TYPE=1.
- Telegram: bot token + chat id + admin id present.
- FORCE_DRY_RUN=0 — dry-run safety toggle is off.
- ENV=prod, RAILWAY_ENVIRONMENT=production.
Note: every past start-up line in logs still says "Polymarket private key not provided. API will be limited." — the long-running monitor was launched without loading .env, so all historical scanning ran in reduced mode.
Signal sources feeding the system
- Catalog inventory sync (
watchers/catalog_inventory.py) — paginates Kalshi/marketsand Polymarket CLOB/Gamma intodata/unicorn.db. - DB currently holds 477 Kalshi markets and 16,225 Polymarket markets (
catalog_market_inventory). Normalized: 477 Kalshi / 7,285 Polymarket. - Kalshi distribution: 196 Entertainment, 81 Elections, 52 Politics, 34 Economics, 29 Companies, etc. — distribution is reasonable, but scale (477) is very small vs. Polymarket.
- Overlap watcher (
watchers/overlap_watcher.py) — fetches markets then callsfind_equivalent_pairs. - Opportunity scanner / RSS signal pipeline — code exists, not active.
- Research loop (
research/) — haslatest_state.jsonwith 22 “deployable_trade” candidates dated earlier; not actively regenerating.
Last known runs
- Overnight overlap loop — 97 iterations, all returned
matched_pairs: 0. First iter 2026-03-07, last 2026-03-08 07:25 UTC. Across 97 attempts, cumulative Kalshi=22,500 markets / Polymarket=35,258 markets ingested, zero pair matches produced. Also zeroranked_candidates, zerofee_loser_candidates. - Background monitor — 3,010 scans, 0 opportunities (Oct 2025). Started with “Polymarket private key not provided”.
- No trades have been executed.
arbitrage_tradestable presumed empty (not checked live, butresults.tsvin arbitrage/ is the only trade-like artifact and it’s an untracked working file).
Git state
- On
main, up to date withorigin/main. - Uncommitted modifications in
execution/kalshi_api.py,tests/test_kalshi_api.py,watchers/catalog_inventory.py.repo-snapshot.zipdeleted. - Recent feature branches around autoresearch, near-pair review, Kalshi feed restoration.
Bottom line
Pam is off, and even when it was on it has never produced a matched pair in the recent architecture. The matching pipeline is returning 0 pairs across ~58k markets — that is the primary failure. Also: .env has live keys and FORCE_DRY_RUN=0; this is not safe to accidentally start.