{"status":"ok","started_at":"2026-07-20T20:29:53.923560","poll_mode":"NORMAL","database":{"backend":"postgres","scheme":"postgresql"},"startup":{"status":"ready","started_at":"2026-07-20T20:29:59Z","completed_at":"2026-07-20T20:34:32Z","error":"yfinance: TimeoutError: ; rss: TimeoutError: ; signals: TimeoutError: "},"freshness":{"yfinance":{"last_poll_utc":"2026-08-03T15:35:04Z","age_seconds":215.80372,"healthy":false},"twelvedata":{"last_poll_utc":"2026-08-03T15:38:36Z","age_seconds":4.177134,"healthy":true},"news":{"last_poll_utc":"2026-08-03T15:36:54Z","age_seconds":106.149025,"healthy":true},"calendar":{"last_poll_utc":"2026-08-03T15:30:04Z","age_seconds":515.535298,"healthy":true},"signals":{"last_poll_utc":"2026-08-03T15:25:04Z","age_seconds":816.219652,"healthy":false}},"session":{"timezone":"America/New_York","ny_time":"2026-08-03T11:38:40","weekday":0,"phase":"prime","nq_rth_window":true,"priority_window":"09:30-13:30","twelvedata_symbols":["QQQ","SPY","NQ=F","ES=F","YM=F","RTY=F","DIA","IWM","VXX","TLT","UUP","GLD","USO","AAPL","MSFT","NVDA","AMZN","META","GOOGL","GOOG","AVGO","TSLA","COST","NFLX","AMD","PEP","ADBE","CSCO","MU","PLTR","QCOM","INTC","AMAT"],"twelvedata_symbol_count":33,"twelvedata_tiers":{"plan":"option3_nq_es_context","tier1":["QQQ","SPY","NQ=F","ES=F"],"tier2":["YM=F","RTY=F","DIA","IWM","VXX","TLT","UUP","GLD","USO"],"tier3":["AAPL","MSFT","NVDA","AMZN","META","GOOGL","GOOG","AVGO","TSLA","COST","NFLX","AMD","PEP","ADBE","CSCO","MU","PLTR","QCOM","INTC","AMAT"],"hot":["QQQ","SPY","NQ=F","ES=F"],"cross":["YM=F","RTY=F","DIA","IWM"],"risk":["VXX","TLT","UUP","GLD","USO"],"drivers":["AAPL","MSFT","NVDA","AMZN","META","GOOGL","GOOG","AVGO","TSLA","COST","NFLX","AMD","PEP","ADBE","CSCO","MU","PLTR","QCOM","INTC","AMAT"],"ws_overlap":["ES","ES=F","NQ","NQ=F","QQQ","SPY"],"credit_projection":{"plan":"option3_nq_es_context","symbol_counts":{"tier1_hot":4,"tier2_cross_risk":9,"tier3_drivers":20,"tier1":4,"tier2":9,"tier3":20,"total_unique":33},"by_tier":{"tier1":{"lane":"hot","symbols":4,"rth_interval_seconds":30,"off_hours_interval_seconds":60,"poll_off_hours":true,"credits_weekday":7320,"credits_weekend_day":5760,"credits_daily_avg":6874},"tier2":{"lane":"cross_risk","symbols":9,"rth_interval_seconds":90,"off_hours_interval_seconds":180,"poll_off_hours":true,"credits_weekday":5490,"credits_weekend_day":4320,"credits_daily_avg":5156},"tier3":{"lane":"drivers","symbols":20,"rth_interval_seconds":120,"off_hours_interval_seconds":300,"poll_off_hours":true,"credits_weekday":8100,"credits_weekend_day":5760,"credits_daily_avg":7431}},"projected_credits_per_day":19461,"projected_credits_per_weekday":19461,"daily_capacity":25600,"headroom":6139,"keys_assumed":32,"schedule":"24/7 Option-3 (hot + cross/risk + drivers)","notes":"Live CME NQ/ES seconds = InsightSentry. Twelve Data = QQQ/SPY/backup futures + cross-index + risk + top QQQ drivers for Gerald/Lucille. Driver polls use larger outputsize so 1m history stays complete even when delayed."}},"twelvedata_outputsize":200,"twelvedata_interval_seconds_hint":1,"calls_per_cycle":33,"projected_requests_per_day_single_symbol":10290,"projected_credits_per_weekday":19461,"twelvedata_interval_seconds_active":1},"twelvedata":{"keys_configured":32,"credits_remaining_today":8924,"daily_plan":{"priority_window_et":"09:30-12:00","priority_interval_seconds":1,"off_hours_interval_seconds":60,"projected_requests_per_day_single_symbol":10290,"projected_capacity_per_day":25600,"projected_buffer_per_day":15310},"note":null,"per_key_minute":[{"key_index":0,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":1,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":2,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":3,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":4,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":5,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":6,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":7,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":8,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":9,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":10,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":11,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":12,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":13,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":14,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":15,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":16,"calls_last_60s":1,"cap":8,"headroom":7},{"key_index":17,"calls_last_60s":1,"cap":8,"headroom":7},{"key_index":18,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":19,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":20,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":21,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":22,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":23,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":24,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":25,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":26,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":27,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":28,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":29,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":30,"calls_last_60s":0,"cap":8,"headroom":8},{"key_index":31,"calls_last_60s":0,"cap":8,"headroom":8}],"per_key_per_minute_cap":8,"feed_mode":"websocket","ws_connected":true,"ws":{"strategy":"single_connection_dynamic","max_parallel_connections":1,"failover_keys":3,"max_symbols_per_connection":8,"subscribed_symbols":["QQQ"],"active_symbols":["QQQ"],"failed_symbols":["DIA","ES=F","IWM","NQ=F","RTY=F","SPY","YM=F"],"active_count":1,"failed_count":7,"myth_vs_reality":"32×8 trial WS ≠ 256 production streams. Each Basic key = 1 conn, ≤8 trial symbols. Gurta uses 1 conn + 3-key failover; REST pool handles the full 67-symbol manifest.","plan_note":"Trial WS is evaluation-only (global trial symbol list). Self-healing: subscribe-status routes successes to 5s-bar WS path, failures stay on REST key pool. Adapts automatically if TD whitelist changes.","keys_in_rest_pool":32,"connected":true,"mode":"websocket","last_message_utc":"2026-08-03T15:38:30.236928Z"},"nq_last_price":688.01001,"nq_last_tick_utc":"2026-07-31T15:59:00Z"},"twelvedata_keys":32,"twelvedata_budget_remaining":8924,"last_errors":[],"gemini_keys":1,"gemini_model":"gemini-2.5-flash","gerald":{"model":"nvidia/nvidia-nemotron-nano-9b-v2","batch_limit":20,"interval_minutes":10,"last_run_utc":"2026-08-03T15:33:45Z","scheduler_enabled":true,"news_poll_healthy":true},"runtime":{"host":"azure_vm_systemd","always_on":true,"tier_note":"systemd service (Restart=always) on gurta-vm-engine; no idle sleep."},"scheduled_jobs":[{"name":"job_yfinance","desc":"Fetch latest bars via yfinance for core symbols","interval":"15-60s (adaptive)"},{"name":"job_twelvedata","desc":"Poll TwelveData for high-res bars (NQ/ES focus in RTH)","interval":"8-60s"},{"name":"job_rss","desc":"Ingest RSS + general news","interval":"3-8min"},{"name":"job_fred","desc":"Macro series (DGS10 etc)","interval":"~15min"},{"name":"job_calendar","desc":"Economic calendar (forex factory + finnhub)","interval":"~30min"},{"name":"job_signals","desc":"Build snapshot signals + chart annotations","interval":"~1-3min"},{"name":"job_flash_desk","desc":"Prewarm flash cache (RTH only)","interval":"1min (windowed)"},{"name":"job_quant_brain","desc":"Nq brain LLM probability pass","interval":"on demand / loop"},{"name":"job_post_market_correlation","desc":"Post-market correlations + research","interval":"daily post close"},{"name":"job_robinhood_crypto","desc":"Crypto live ticks (if enabled)","interval":"configurable"}]}