{"status":"ok","started_at":"2026-09-05T05:38:59.127884","poll_mode":"NORMAL","database":{"backend":"postgres","scheme":"postgresql+psycopg"},"startup":{"status":"ready","started_at":"2026-09-05T05:39:04Z","completed_at":"2026-09-05T05:41:17Z","error":"rss: TimeoutError: "},"freshness":{"yfinance":{"last_poll_utc":"2026-09-05T08:13:57Z","age_seconds":26.048586,"healthy":true},"twelvedata":{"last_poll_utc":"2026-09-05T08:14:00Z","age_seconds":23.18473,"healthy":true},"news":{"last_poll_utc":"2026-09-05T08:10:45Z","age_seconds":218.219561,"healthy":true},"calendar":{"last_poll_utc":"2026-09-05T08:09:05Z","age_seconds":317.914325,"healthy":true},"signals":{"last_poll_utc":"2026-09-05T08:14:21Z","age_seconds":2.149394,"healthy":true}},"session":{"timezone":"America/New_York","ny_time":"2026-09-05T04:14:23","weekday":5,"phase":"off_session","nq_rth_window":false,"priority_window":"09:30-13:30","twelvedata_symbols":["ES=F","NQ=F","YM=F","RTY=F","SPY","QQQ","DIA","AAPL","MSFT","NVDA","AMZN","META","GOOGL","GOOG","AVGO","TSLA","COST","NFLX","AMD","PEP","ADBE","CSCO","MU","INTC","WMT","AMAT","LRCX","KLAC","SNDK","TXN","PLTR","MRVL","PANW","LIN","WDC","QCOM","STX","AMGN","AXP","BA","CAT","CRM","CVX","DIS","GS","HD","HON","IBM","JNJ","JPM","KO","MCD","TLT","IEF","SHY","TIP","GLD","USO","UUP","XLK","XLF","VXX","ZN=F","ZB=F","BTC/USD","ETH/USD","SOL/USD","DOGE/USD","XRP/USD","ADA/USD","AVAX/USD","LINK/USD"],"twelvedata_symbol_count":72,"twelvedata_tiers":{"tier1":["ES=F","NQ=F","YM=F","RTY=F","SPY","QQQ","DIA"],"tier2":["AAPL","MSFT","NVDA","AMZN","META","GOOGL","GOOG","AVGO","TSLA","COST","NFLX","AMD","PEP","ADBE","CSCO","MU","INTC","WMT","AMAT","LRCX","KLAC","SNDK","TXN","PLTR","MRVL","PANW","LIN","WDC","QCOM","STX","AMGN","AXP","BA","CAT","CRM","CVX","DIS","GS","HD","HON","IBM","JNJ","JPM","KO","MCD"],"tier3":["TLT","IEF","SHY","TIP","GLD","USO","UUP","XLK","XLF","VXX","ZN=F","ZB=F","BTC/USD","ETH/USD","SOL/USD","DOGE/USD","XRP/USD","ADA/USD","AVAX/USD","LINK/USD"],"ws_overlap":["ES","ES=F","NQ","NQ=F","QQQ","SPY"],"credit_projection":{"symbol_counts":{"tier1":7,"tier2":45,"tier3":20,"total_unique":72},"by_tier":{"tier1":{"symbols":7,"rth_interval_seconds":60,"off_hours_interval_seconds":60,"poll_off_hours":true,"credits_weekday":10080,"credits_weekend_day":10080,"credits_daily_avg":10080},"tier2":{"symbols":45,"rth_interval_seconds":120,"off_hours_interval_seconds":600,"poll_off_hours":true,"credits_weekday":13500,"credits_weekend_day":6480,"credits_daily_avg":11494},"tier3":{"symbols":20,"rth_interval_seconds":240,"off_hours_interval_seconds":540,"poll_off_hours":true,"credits_weekday":4283,"credits_weekend_day":3200,"credits_daily_avg":3974}},"projected_credits_per_day":25548,"projected_credits_per_weekday":25548,"daily_capacity":25600,"headroom":52,"keys_assumed":32,"schedule":"24/7 (RTH fast + off-hours/weekend slower)","notes":"Tier2 polls off-hours and weekends. Spot crypto (8 RH-aligned pairs) via Twelve Data REST. Robinhood crypto live_ticks excluded."}},"twelvedata_outputsize":80,"twelvedata_interval_seconds_hint":60,"calls_per_cycle":72,"projected_requests_per_day_single_symbol":10290,"projected_credits_per_weekday":25548,"twelvedata_interval_seconds_active":60},"twelvedata":{"keys_configured":32,"credits_remaining_today":24046,"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":1,"cap":8,"headroom":7},{"key_index":8,"calls_last_60s":1,"cap":8,"headroom":7},{"key_index":9,"calls_last_60s":1,"cap":8,"headroom":7},{"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":0,"cap":8,"headroom":8},{"key_index":17,"calls_last_60s":0,"cap":8,"headroom":8},{"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":"rest","websocket_enabled":false,"ws_connected":false,"ws":{"strategy":"single_connection_dynamic","max_parallel_connections":1,"failover_keys":3,"max_symbols_per_connection":8,"subscribed_symbols":["NQ","MNQ","ES","SPY","QQQ"],"active_symbols":[],"failed_symbols":[],"active_count":0,"failed_count":0,"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":false,"mode":"rest","last_message_utc":null},"nq_last_price":719.059998,"nq_last_tick_utc":"2026-09-04T15:59:00Z"},"twelvedata_keys":32,"twelvedata_budget_remaining":24046,"last_errors":[],"gemini_keys":1,"gemini_model":"gemini-3.1-flash-lite-preview","gerald":{"model":"nvidia/nvidia-nemotron-nano-9b-v2","batch_limit":8,"interval_minutes":10,"last_run_utc":"2026-09-05T08:10:57Z","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"}],"scheduler_owner":"api"}