Latest scanner run id=101 at 2026-05-05T16:27:05.483016+00:00 (universe_size=7). Latest strategy-loop run id=93 with 7 decisions (2 trade, 5 skip). OMS window: 24 orders; approved_not_submitted=3; problem sample count=14.
Autonomous submission policy recorded 8 recent deny evaluation(s); see reasons_with_labels. There are OMS orders in approved_not_submitted (approved locally, no broker id / zero fills) — broker submission did not complete for those rows.
No open trades for account 'DUP667958'.
- Refresh or recompute system control state — persisted control row looks stale.
- Review autonomous_policy/runs for snapshot_json on the top deny order_ids.
- Inspect approved_not_submitted rows and broker-truth / policy freshness.
[ "market_bars_stale_off_rth_informational", "market_quotes_stale_off_rth_informational", "feature_snapshots_stale_off_rth_informational", "scanner_runs_stale_off_rth_informational", "strategy_loop_runs_stale_off_rth_informational" ]
| Table / stream | Latest ISO | Count |
|---|---|---|
| market_bars | 2026-05-18T19:59:00+00:00 | 50329 |
| market_quotes | 2026-05-19T03:54:41.759396+00:00 | 230867 |
| feature_snapshots | 2026-05-18T19:59:00+00:00 | 36892 |
| scanner_runs | 2026-05-05T16:27:05.483016+00:00 | 101 |
| strategy_loop_runs | 2026-05-05T16:27:05.579224+00:00 | 93 |
| orders | 2026-05-20T13:43:51.015110+00:00 | 24 |
| autonomous_submission_policy_runs | 2026-05-02T16:53:12.774824+00:00 | 13 |
| risk_runs | — | 0 |
| broker_account_snapshots | 2026-06-02T04:30:09.163786+00:00 | 34476 |
| Service | Inferred | Container state | Exit | Status | Started | Finished | Image | ID |
|---|---|---|---|---|---|---|---|---|
| worker-market-data | ok | — | — | — | — | — | — | — |
| worker-features | ok | — | — | — | — | — | — | — |
| worker-oms | ok | — | — | — | — | — | — | — |
| worker-risk | missing | — | — | — | — | — | — | — |
| worker-broker-ibkr | ok | — | — | — | — | — | — | — |
Market bars look stale relative to thresholds, but the approximate calendar says outside likely RTH — treat as informational.
Suggested: Optional check of worker-market-data; no automatic restart was performed.
No risk_runs rows — risk worker may never have run in this environment or table is empty.
Suggested: If risk coverage is expected, verify worker-risk deployment and intake wiring.
- no_open_trades: true
- submissions_blocked: false
- has_approved_not_submitted: true
{
"ok": true,
"components": {
"database": "ok",
"redis": "ok"
}
}{
"run_id": 101,
"created_at_iso": "2026-05-05T16:27:05.483016+00:00",
"name": "core_scanner_v1",
"version": "1",
"interval": "1m",
"universe_size": 7,
"symbols_requested": [
"META",
"AMZN",
"MSFT",
"NVDA",
"GOOGL",
"TSLA",
"AMD"
],
"symbols_scanned": [
"META",
"AMZN",
"MSFT",
"NVDA",
"GOOGL",
"TSLA",
"AMD"
],
"symbols_with_features": [
"NVDA",
"META",
"AMD",
"GOOGL",
"MSFT",
"AMZN",
"TSLA"
],
"symbols_missing_features": []
}{
"run_id": 93,
"created_at_iso": "2026-05-05T16:27:05.579224+00:00",
"scanner_run_id": 101,
"decisions_total": 7,
"trade_decisions": 2,
"skip_decisions": 5,
"candidates_considered": 7,
"strategy_name": "formal_loop_v1",
"strategy_version": "1",
"control_state": {
"strategy_loop_intake_paused": false,
"autonomous_submission_held": false,
"governance_ts_iso": "2026-05-02T16:00:56.266375+00:00"
}
}{
"approved_not_submitted_count": 3,
"recent_approved_not_submitted": [
{
"order_id": "ord-manual-f9b6ddf00a92",
"symbol": "AAPL",
"status": "approved",
"oms_lifecycle_stage": "approved_not_submitted",
"broker_order_id": null,
"filled_quantity": 0,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-19T20:54:33.970750+00:00"
},
{
"order_id": "ord-manual-f7524be6dc81",
"symbol": "AAPL",
"status": "approved",
"oms_lifecycle_stage": "approved_not_submitted",
"broker_order_id": null,
"filled_quantity": 0,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-19T20:06:19.343206+00:00"
},
{
"order_id": "ord-manual-876133187eb8",
"symbol": "AAPL",
"status": "approved",
"oms_lifecycle_stage": "approved_not_submitted",
"broker_order_id": null,
"filled_quantity": 0,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-19T20:05:42.099650+00:00"
}
],
"status_counts": {
"submitted": 2,
"approved": 3,
"error": 9,
"canceled": 5,
"filled": 5
},
"problem_orders_count": 14,
"recent_problem_orders": [
{
"order_id": "ord-manual-de0d40f1df30",
"symbol": "AAPL",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-19T17:54:49.889486+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-manual-6971d1926b3c",
"symbol": "AAPL",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-19T17:53:31.307310+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-106",
"symbol": "AMD",
"status": "canceled",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 106,
"strategy_loop_run_id": 90,
"created_at_iso": "2026-05-02T16:48:24.396792+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-105",
"symbol": "GOOGL",
"status": "canceled",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 105,
"strategy_loop_run_id": 90,
"created_at_iso": "2026-05-02T16:48:24.396792+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-exit-3",
"symbol": "AAPL",
"status": "canceled",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-02T14:35:15.025503+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-exit-4",
"symbol": "AAPL",
"status": "canceled",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-02T14:35:15.025503+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-exit-2",
"symbol": "AAPL",
"status": "canceled",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-02T14:35:15.025503+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-48",
"symbol": "QQQ",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 48,
"strategy_loop_run_id": 24,
"created_at_iso": "2026-04-24T17:23:06.527944+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-47",
"symbol": "SPY",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 47,
"strategy_loop_run_id": 24,
"created_at_iso": "2026-04-24T17:23:06.527944+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-75",
"symbol": "SPY",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 75,
"strategy_loop_run_id": 38,
"created_at_iso": "2026-04-24T14:24:08.173557+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-76",
"symbol": "QQQ",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 76,
"strategy_loop_run_id": 38,
"created_at_iso": "2026-04-24T14:24:08.173557+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-73",
"symbol": "QQQ",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 73,
"strategy_loop_run_id": 37,
"created_at_iso": "2026-04-24T13:50:13.921187+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-70",
"symbol": "SPY",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 70,
"strategy_loop_run_id": 35,
"created_at_iso": "2026-04-24T13:32:17.175047+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-69",
"symbol": "QQQ",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 69,
"strategy_loop_run_id": 35,
"created_at_iso": "2026-04-24T13:32:17.175047+00:00",
"last_fill_at_iso": null
}
],
"window": 24,
"total": 24
}{
"enabled": true,
"account_id": "DUP667958",
"count": 0,
"rows": []
}{
"enabled": true,
"persisted_state": "normal",
"reason_summary": "effective=normal | gov=normal | ops=normal | recon=normal | inc=normal",
"effective_resolved_state": "normal",
"effective_reason_summary": "effective=normal | gov=normal | ops=normal | recon=normal | inc=normal",
"submissions_blocked": false,
"submit_guard_env_enabled": true,
"stale_warning": true,
"live_mismatch": false,
"persisted_age_seconds": 2811914.133392,
"blocked_submissions_recent": [
{
"id": 3,
"ts_iso": "2026-05-02T14:38:51.291754+00:00",
"order_id": "ord-exit-4",
"symbol": "AAPL",
"reason_code": "paper_test_rth_required",
"reason_labels": {
"label": "Paper test — RTH only",
"explanation": "Paper-test guard requires regular trading hours before allowing this class of entry/submit.",
"action": "Retry during RTH or adjust paper-test RTH policy only if your playbook explicitly allows off-hours testing."
}
},
{
"id": 2,
"ts_iso": "2026-05-02T14:38:51.287902+00:00",
"order_id": "ord-exit-3",
"symbol": "AAPL",
"reason_code": "paper_test_rth_required",
"reason_labels": {
"label": "Paper test — RTH only",
"explanation": "Paper-test guard requires regular trading hours before allowing this class of entry/submit.",
"action": "Retry during RTH or adjust paper-test RTH policy only if your playbook explicitly allows off-hours testing."
}
},
{
"id": 1,
"ts_iso": "2026-05-02T14:38:51.277890+00:00",
"order_id": "ord-exit-2",
"symbol": "AAPL",
"reason_code": "paper_test_rth_required",
"reason_labels": {
"label": "Paper test — RTH only",
"explanation": "Paper-test guard requires regular trading hours before allowing this class of entry/submit.",
"action": "Retry during RTH or adjust paper-test RTH policy only if your playbook explicitly allows off-hours testing."
}
}
]
}{
"generated_at_iso": "2026-06-20T16:59:57.148641+00:00",
"health_summary": {
"ok": true,
"components": {
"database": "ok",
"redis": "ok"
}
},
"latest_scanner_run": {
"run_id": 101,
"created_at_iso": "2026-05-05T16:27:05.483016+00:00",
"name": "core_scanner_v1",
"version": "1",
"interval": "1m",
"universe_size": 7,
"symbols_requested": [
"META",
"AMZN",
"MSFT",
"NVDA",
"GOOGL",
"TSLA",
"AMD"
],
"symbols_scanned": [
"META",
"AMZN",
"MSFT",
"NVDA",
"GOOGL",
"TSLA",
"AMD"
],
"symbols_with_features": [
"NVDA",
"META",
"AMD",
"GOOGL",
"MSFT",
"AMZN",
"TSLA"
],
"symbols_missing_features": []
},
"latest_strategy_loop": {
"run_id": 93,
"created_at_iso": "2026-05-05T16:27:05.579224+00:00",
"scanner_run_id": 101,
"decisions_total": 7,
"trade_decisions": 2,
"skip_decisions": 5,
"candidates_considered": 7,
"strategy_name": "formal_loop_v1",
"strategy_version": "1",
"control_state": {
"strategy_loop_intake_paused": false,
"autonomous_submission_held": false,
"governance_ts_iso": "2026-05-02T16:00:56.266375+00:00"
}
},
"oms_lifecycle": {
"approved_not_submitted_count": 3,
"recent_approved_not_submitted": [
{
"order_id": "ord-manual-f9b6ddf00a92",
"symbol": "AAPL",
"status": "approved",
"oms_lifecycle_stage": "approved_not_submitted",
"broker_order_id": null,
"filled_quantity": 0,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-19T20:54:33.970750+00:00"
},
{
"order_id": "ord-manual-f7524be6dc81",
"symbol": "AAPL",
"status": "approved",
"oms_lifecycle_stage": "approved_not_submitted",
"broker_order_id": null,
"filled_quantity": 0,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-19T20:06:19.343206+00:00"
},
{
"order_id": "ord-manual-876133187eb8",
"symbol": "AAPL",
"status": "approved",
"oms_lifecycle_stage": "approved_not_submitted",
"broker_order_id": null,
"filled_quantity": 0,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-19T20:05:42.099650+00:00"
}
],
"status_counts": {
"submitted": 2,
"approved": 3,
"error": 9,
"canceled": 5,
"filled": 5
},
"problem_orders_count": 14,
"recent_problem_orders": [
{
"order_id": "ord-manual-de0d40f1df30",
"symbol": "AAPL",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-19T17:54:49.889486+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-manual-6971d1926b3c",
"symbol": "AAPL",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-19T17:53:31.307310+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-106",
"symbol": "AMD",
"status": "canceled",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 106,
"strategy_loop_run_id": 90,
"created_at_iso": "2026-05-02T16:48:24.396792+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-105",
"symbol": "GOOGL",
"status": "canceled",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 105,
"strategy_loop_run_id": 90,
"created_at_iso": "2026-05-02T16:48:24.396792+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-exit-3",
"symbol": "AAPL",
"status": "canceled",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-02T14:35:15.025503+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-exit-4",
"symbol": "AAPL",
"status": "canceled",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-02T14:35:15.025503+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-exit-2",
"symbol": "AAPL",
"status": "canceled",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": null,
"strategy_loop_run_id": null,
"created_at_iso": "2026-05-02T14:35:15.025503+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-48",
"symbol": "QQQ",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 48,
"strategy_loop_run_id": 24,
"created_at_iso": "2026-04-24T17:23:06.527944+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-47",
"symbol": "SPY",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 47,
"strategy_loop_run_id": 24,
"created_at_iso": "2026-04-24T17:23:06.527944+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-75",
"symbol": "SPY",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 75,
"strategy_loop_run_id": 38,
"created_at_iso": "2026-04-24T14:24:08.173557+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-76",
"symbol": "QQQ",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 76,
"strategy_loop_run_id": 38,
"created_at_iso": "2026-04-24T14:24:08.173557+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-73",
"symbol": "QQQ",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 73,
"strategy_loop_run_id": 37,
"created_at_iso": "2026-04-24T13:50:13.921187+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-70",
"symbol": "SPY",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 70,
"strategy_loop_run_id": 35,
"created_at_iso": "2026-04-24T13:32:17.175047+00:00",
"last_fill_at_iso": null
},
{
"order_id": "ord-stratloop-69",
"symbol": "QQQ",
"status": "error",
"broker_order_id": null,
"filled_quantity": 0,
"avg_fill_price": null,
"risk_decision_id": null,
"strategy_loop_decision_id": 69,
"strategy_loop_run_id": 35,
"created_at_iso": "2026-04-24T13:32:17.175047+00:00",
"last_fill_at_iso": null
}
],
"window": 24,
"total": 24
},
"autonomous_denial": {
"enabled": true,
"recent_deny_runs": [
{
"id": 13,
"ts_iso": "2026-05-02T16:53:12.774824+00:00",
"order_id": "ord-stratloop-106",
"symbol": "AMD",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"ORDER_CANDIDATE_STALE",
"BROKER_ACCOUNT_STATE_STALE",
"BROKER_POSITIONS_STATE_STALE",
"BROKER_OPEN_ORDERS_STATE_STALE",
"RECONCILIATION_STATE_STALE",
"STRATEGY_LOOP_STATE_STALE",
"MARKET_CLOSED_FOR_STOCK",
"PAPER_TEST_RTH_REQUIRED",
"DATA_FEATURES_STALE",
"DATA_BROKER_TRUTH_STALE"
],
"reasons_with_labels": [
{
"raw": "ORDER_CANDIDATE_STALE",
"label": "Order candidate stale",
"explanation": "The OMS order row is older than the policy freshness window for autonomous submit, so the candidate is treated as stale.",
"action": "Confirm scanner + strategy-loop just ran; check feature timestamps vs decision time; reduce clock skew."
},
{
"raw": "BROKER_ACCOUNT_STATE_STALE",
"label": "Broker account snapshot stale",
"explanation": "The latest persisted broker account snapshot is older than the policy TTL.",
"action": "Verify worker-oms / broker-truth snapshot path; check GET /internal/broker-truth/account/latest freshness."
},
{
"raw": "BROKER_POSITIONS_STATE_STALE",
"label": "Broker positions snapshot stale",
"explanation": "Broker positions used for safety checks are older than the allowed freshness window.",
"action": "Confirm broker-truth positions snapshots are updating; inspect worker-oms logs and snapshot timestamps."
},
{
"raw": "BROKER_OPEN_ORDERS_STATE_STALE",
"label": "Broker open-orders snapshot stale",
"explanation": "Open-order snapshots used for duplicate/conflict checks are older than the policy TTL.",
"action": "Verify broker open-order snapshot ingestion; compare with IBKR Client Portal open orders."
},
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "STRATEGY_LOOP_STATE_STALE",
"label": "Strategy-loop context stale",
"explanation": "Strategy-loop run/decision context is older than the policy freshness window relative to submit time.",
"action": "Confirm latest strategy-loop run completed; align scanner → loop cadence; check run metadata timestamps."
},
{
"raw": "MARKET_CLOSED_FOR_STOCK",
"label": "Market closed",
"explanation": "Stock entries are blocked because the session is outside the allowed US equity trading window for this policy.",
"action": "Wait for regular trading hours or verify market-hours / calendar configuration for paper vs live."
},
{
"raw": "PAPER_TEST_RTH_REQUIRED",
"label": "Paper test — RTH only",
"explanation": "Paper-test guard requires regular trading hours before allowing this class of entry/submit.",
"action": "Retry during RTH or adjust paper-test RTH policy only if your playbook explicitly allows off-hours testing."
},
{
"raw": "DATA_FEATURES_STALE",
"label": "Feature data stale",
"explanation": "Feature snapshots feeding the policy are older than the allowed freshness threshold.",
"action": "Check market-data / features workers and latest feature snapshot timestamps in pipeline footprint."
},
{
"raw": "DATA_BROKER_TRUTH_STALE",
"label": "Broker-truth data stale",
"explanation": "Broker-truth inputs (quotes/account/positions) are considered stale for autonomous submit.",
"action": "Inspect broker-truth snapshot ages and worker-oms reconcile cycles; confirm gateway connectivity."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
},
{
"id": 12,
"ts_iso": "2026-05-02T16:53:12.741420+00:00",
"order_id": "ord-stratloop-105",
"symbol": "GOOGL",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"ORDER_CANDIDATE_STALE",
"BROKER_ACCOUNT_STATE_STALE",
"BROKER_POSITIONS_STATE_STALE",
"BROKER_OPEN_ORDERS_STATE_STALE",
"RECONCILIATION_STATE_STALE",
"STRATEGY_LOOP_STATE_STALE",
"MARKET_CLOSED_FOR_STOCK",
"PAPER_TEST_RTH_REQUIRED",
"DATA_FEATURES_STALE",
"DATA_BROKER_TRUTH_STALE"
],
"reasons_with_labels": [
{
"raw": "ORDER_CANDIDATE_STALE",
"label": "Order candidate stale",
"explanation": "The OMS order row is older than the policy freshness window for autonomous submit, so the candidate is treated as stale.",
"action": "Confirm scanner + strategy-loop just ran; check feature timestamps vs decision time; reduce clock skew."
},
{
"raw": "BROKER_ACCOUNT_STATE_STALE",
"label": "Broker account snapshot stale",
"explanation": "The latest persisted broker account snapshot is older than the policy TTL.",
"action": "Verify worker-oms / broker-truth snapshot path; check GET /internal/broker-truth/account/latest freshness."
},
{
"raw": "BROKER_POSITIONS_STATE_STALE",
"label": "Broker positions snapshot stale",
"explanation": "Broker positions used for safety checks are older than the allowed freshness window.",
"action": "Confirm broker-truth positions snapshots are updating; inspect worker-oms logs and snapshot timestamps."
},
{
"raw": "BROKER_OPEN_ORDERS_STATE_STALE",
"label": "Broker open-orders snapshot stale",
"explanation": "Open-order snapshots used for duplicate/conflict checks are older than the policy TTL.",
"action": "Verify broker open-order snapshot ingestion; compare with IBKR Client Portal open orders."
},
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "STRATEGY_LOOP_STATE_STALE",
"label": "Strategy-loop context stale",
"explanation": "Strategy-loop run/decision context is older than the policy freshness window relative to submit time.",
"action": "Confirm latest strategy-loop run completed; align scanner → loop cadence; check run metadata timestamps."
},
{
"raw": "MARKET_CLOSED_FOR_STOCK",
"label": "Market closed",
"explanation": "Stock entries are blocked because the session is outside the allowed US equity trading window for this policy.",
"action": "Wait for regular trading hours or verify market-hours / calendar configuration for paper vs live."
},
{
"raw": "PAPER_TEST_RTH_REQUIRED",
"label": "Paper test — RTH only",
"explanation": "Paper-test guard requires regular trading hours before allowing this class of entry/submit.",
"action": "Retry during RTH or adjust paper-test RTH policy only if your playbook explicitly allows off-hours testing."
},
{
"raw": "DATA_FEATURES_STALE",
"label": "Feature data stale",
"explanation": "Feature snapshots feeding the policy are older than the allowed freshness threshold.",
"action": "Check market-data / features workers and latest feature snapshot timestamps in pipeline footprint."
},
{
"raw": "DATA_BROKER_TRUTH_STALE",
"label": "Broker-truth data stale",
"explanation": "Broker-truth inputs (quotes/account/positions) are considered stale for autonomous submit.",
"action": "Inspect broker-truth snapshot ages and worker-oms reconcile cycles; confirm gateway connectivity."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
},
{
"id": 10,
"ts_iso": "2026-04-24T17:23:06.627567+00:00",
"order_id": "ord-stratloop-48",
"symbol": "QQQ",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"RECONCILIATION_STATE_STALE",
"STRATEGY_LOOP_STATE_STALE"
],
"reasons_with_labels": [
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "STRATEGY_LOOP_STATE_STALE",
"label": "Strategy-loop context stale",
"explanation": "Strategy-loop run/decision context is older than the policy freshness window relative to submit time.",
"action": "Confirm latest strategy-loop run completed; align scanner → loop cadence; check run metadata timestamps."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
},
{
"id": 9,
"ts_iso": "2026-04-24T17:23:06.603402+00:00",
"order_id": "ord-stratloop-47",
"symbol": "SPY",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"RECONCILIATION_STATE_STALE",
"STRATEGY_LOOP_STATE_STALE"
],
"reasons_with_labels": [
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "STRATEGY_LOOP_STATE_STALE",
"label": "Strategy-loop context stale",
"explanation": "Strategy-loop run/decision context is older than the policy freshness window relative to submit time.",
"action": "Confirm latest strategy-loop run completed; align scanner → loop cadence; check run metadata timestamps."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
},
{
"id": 8,
"ts_iso": "2026-04-24T16:09:10.951475+00:00",
"order_id": "ord-stratloop-83",
"symbol": "AAPL",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED",
"DUPLICATE_CANDIDATE_FINGERPRINT"
],
"reasons_with_labels": [
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
},
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
},
{
"raw": "DUPLICATE_CANDIDATE_FINGERPRINT",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: DUPLICATE_CANDIDATE_FINGERPRINT.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
},
{
"id": 4,
"ts_iso": "2026-04-24T14:24:08.454746+00:00",
"order_id": "ord-stratloop-75",
"symbol": "SPY",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"BROKER_ACCOUNT_STATE_STALE",
"BROKER_POSITIONS_STATE_STALE",
"BROKER_OPEN_ORDERS_STATE_STALE"
],
"reasons_with_labels": [
{
"raw": "BROKER_ACCOUNT_STATE_STALE",
"label": "Broker account snapshot stale",
"explanation": "The latest persisted broker account snapshot is older than the policy TTL.",
"action": "Verify worker-oms / broker-truth snapshot path; check GET /internal/broker-truth/account/latest freshness."
},
{
"raw": "BROKER_POSITIONS_STATE_STALE",
"label": "Broker positions snapshot stale",
"explanation": "Broker positions used for safety checks are older than the allowed freshness window.",
"action": "Confirm broker-truth positions snapshots are updating; inspect worker-oms logs and snapshot timestamps."
},
{
"raw": "BROKER_OPEN_ORDERS_STATE_STALE",
"label": "Broker open-orders snapshot stale",
"explanation": "Open-order snapshots used for duplicate/conflict checks are older than the policy TTL.",
"action": "Verify broker open-order snapshot ingestion; compare with IBKR Client Portal open orders."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
},
{
"id": 2,
"ts_iso": "2026-04-24T13:32:17.384925+00:00",
"order_id": "ord-stratloop-70",
"symbol": "SPY",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"RECONCILIATION_STATE_STALE",
"AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED"
],
"reasons_with_labels": [
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
},
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
},
{
"id": 1,
"ts_iso": "2026-04-24T13:32:17.340066+00:00",
"order_id": "ord-stratloop-69",
"symbol": "QQQ",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"RECONCILIATION_STATE_STALE",
"AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED"
],
"reasons_with_labels": [
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
},
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
}
],
"grouped_by_order_id": {
"ord-stratloop-106": [
{
"id": 13,
"ts_iso": "2026-05-02T16:53:12.774824+00:00",
"order_id": "ord-stratloop-106",
"symbol": "AMD",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"ORDER_CANDIDATE_STALE",
"BROKER_ACCOUNT_STATE_STALE",
"BROKER_POSITIONS_STATE_STALE",
"BROKER_OPEN_ORDERS_STATE_STALE",
"RECONCILIATION_STATE_STALE",
"STRATEGY_LOOP_STATE_STALE",
"MARKET_CLOSED_FOR_STOCK",
"PAPER_TEST_RTH_REQUIRED",
"DATA_FEATURES_STALE",
"DATA_BROKER_TRUTH_STALE"
],
"reasons_with_labels": [
{
"raw": "ORDER_CANDIDATE_STALE",
"label": "Order candidate stale",
"explanation": "The OMS order row is older than the policy freshness window for autonomous submit, so the candidate is treated as stale.",
"action": "Confirm scanner + strategy-loop just ran; check feature timestamps vs decision time; reduce clock skew."
},
{
"raw": "BROKER_ACCOUNT_STATE_STALE",
"label": "Broker account snapshot stale",
"explanation": "The latest persisted broker account snapshot is older than the policy TTL.",
"action": "Verify worker-oms / broker-truth snapshot path; check GET /internal/broker-truth/account/latest freshness."
},
{
"raw": "BROKER_POSITIONS_STATE_STALE",
"label": "Broker positions snapshot stale",
"explanation": "Broker positions used for safety checks are older than the allowed freshness window.",
"action": "Confirm broker-truth positions snapshots are updating; inspect worker-oms logs and snapshot timestamps."
},
{
"raw": "BROKER_OPEN_ORDERS_STATE_STALE",
"label": "Broker open-orders snapshot stale",
"explanation": "Open-order snapshots used for duplicate/conflict checks are older than the policy TTL.",
"action": "Verify broker open-order snapshot ingestion; compare with IBKR Client Portal open orders."
},
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "STRATEGY_LOOP_STATE_STALE",
"label": "Strategy-loop context stale",
"explanation": "Strategy-loop run/decision context is older than the policy freshness window relative to submit time.",
"action": "Confirm latest strategy-loop run completed; align scanner → loop cadence; check run metadata timestamps."
},
{
"raw": "MARKET_CLOSED_FOR_STOCK",
"label": "Market closed",
"explanation": "Stock entries are blocked because the session is outside the allowed US equity trading window for this policy.",
"action": "Wait for regular trading hours or verify market-hours / calendar configuration for paper vs live."
},
{
"raw": "PAPER_TEST_RTH_REQUIRED",
"label": "Paper test — RTH only",
"explanation": "Paper-test guard requires regular trading hours before allowing this class of entry/submit.",
"action": "Retry during RTH or adjust paper-test RTH policy only if your playbook explicitly allows off-hours testing."
},
{
"raw": "DATA_FEATURES_STALE",
"label": "Feature data stale",
"explanation": "Feature snapshots feeding the policy are older than the allowed freshness threshold.",
"action": "Check market-data / features workers and latest feature snapshot timestamps in pipeline footprint."
},
{
"raw": "DATA_BROKER_TRUTH_STALE",
"label": "Broker-truth data stale",
"explanation": "Broker-truth inputs (quotes/account/positions) are considered stale for autonomous submit.",
"action": "Inspect broker-truth snapshot ages and worker-oms reconcile cycles; confirm gateway connectivity."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
}
],
"ord-stratloop-105": [
{
"id": 12,
"ts_iso": "2026-05-02T16:53:12.741420+00:00",
"order_id": "ord-stratloop-105",
"symbol": "GOOGL",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"ORDER_CANDIDATE_STALE",
"BROKER_ACCOUNT_STATE_STALE",
"BROKER_POSITIONS_STATE_STALE",
"BROKER_OPEN_ORDERS_STATE_STALE",
"RECONCILIATION_STATE_STALE",
"STRATEGY_LOOP_STATE_STALE",
"MARKET_CLOSED_FOR_STOCK",
"PAPER_TEST_RTH_REQUIRED",
"DATA_FEATURES_STALE",
"DATA_BROKER_TRUTH_STALE"
],
"reasons_with_labels": [
{
"raw": "ORDER_CANDIDATE_STALE",
"label": "Order candidate stale",
"explanation": "The OMS order row is older than the policy freshness window for autonomous submit, so the candidate is treated as stale.",
"action": "Confirm scanner + strategy-loop just ran; check feature timestamps vs decision time; reduce clock skew."
},
{
"raw": "BROKER_ACCOUNT_STATE_STALE",
"label": "Broker account snapshot stale",
"explanation": "The latest persisted broker account snapshot is older than the policy TTL.",
"action": "Verify worker-oms / broker-truth snapshot path; check GET /internal/broker-truth/account/latest freshness."
},
{
"raw": "BROKER_POSITIONS_STATE_STALE",
"label": "Broker positions snapshot stale",
"explanation": "Broker positions used for safety checks are older than the allowed freshness window.",
"action": "Confirm broker-truth positions snapshots are updating; inspect worker-oms logs and snapshot timestamps."
},
{
"raw": "BROKER_OPEN_ORDERS_STATE_STALE",
"label": "Broker open-orders snapshot stale",
"explanation": "Open-order snapshots used for duplicate/conflict checks are older than the policy TTL.",
"action": "Verify broker open-order snapshot ingestion; compare with IBKR Client Portal open orders."
},
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "STRATEGY_LOOP_STATE_STALE",
"label": "Strategy-loop context stale",
"explanation": "Strategy-loop run/decision context is older than the policy freshness window relative to submit time.",
"action": "Confirm latest strategy-loop run completed; align scanner → loop cadence; check run metadata timestamps."
},
{
"raw": "MARKET_CLOSED_FOR_STOCK",
"label": "Market closed",
"explanation": "Stock entries are blocked because the session is outside the allowed US equity trading window for this policy.",
"action": "Wait for regular trading hours or verify market-hours / calendar configuration for paper vs live."
},
{
"raw": "PAPER_TEST_RTH_REQUIRED",
"label": "Paper test — RTH only",
"explanation": "Paper-test guard requires regular trading hours before allowing this class of entry/submit.",
"action": "Retry during RTH or adjust paper-test RTH policy only if your playbook explicitly allows off-hours testing."
},
{
"raw": "DATA_FEATURES_STALE",
"label": "Feature data stale",
"explanation": "Feature snapshots feeding the policy are older than the allowed freshness threshold.",
"action": "Check market-data / features workers and latest feature snapshot timestamps in pipeline footprint."
},
{
"raw": "DATA_BROKER_TRUTH_STALE",
"label": "Broker-truth data stale",
"explanation": "Broker-truth inputs (quotes/account/positions) are considered stale for autonomous submit.",
"action": "Inspect broker-truth snapshot ages and worker-oms reconcile cycles; confirm gateway connectivity."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
}
],
"ord-stratloop-48": [
{
"id": 10,
"ts_iso": "2026-04-24T17:23:06.627567+00:00",
"order_id": "ord-stratloop-48",
"symbol": "QQQ",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"RECONCILIATION_STATE_STALE",
"STRATEGY_LOOP_STATE_STALE"
],
"reasons_with_labels": [
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "STRATEGY_LOOP_STATE_STALE",
"label": "Strategy-loop context stale",
"explanation": "Strategy-loop run/decision context is older than the policy freshness window relative to submit time.",
"action": "Confirm latest strategy-loop run completed; align scanner → loop cadence; check run metadata timestamps."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
}
],
"ord-stratloop-47": [
{
"id": 9,
"ts_iso": "2026-04-24T17:23:06.603402+00:00",
"order_id": "ord-stratloop-47",
"symbol": "SPY",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"RECONCILIATION_STATE_STALE",
"STRATEGY_LOOP_STATE_STALE"
],
"reasons_with_labels": [
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "STRATEGY_LOOP_STATE_STALE",
"label": "Strategy-loop context stale",
"explanation": "Strategy-loop run/decision context is older than the policy freshness window relative to submit time.",
"action": "Confirm latest strategy-loop run completed; align scanner → loop cadence; check run metadata timestamps."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
}
],
"ord-stratloop-83": [
{
"id": 8,
"ts_iso": "2026-04-24T16:09:10.951475+00:00",
"order_id": "ord-stratloop-83",
"symbol": "AAPL",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED",
"DUPLICATE_CANDIDATE_FINGERPRINT"
],
"reasons_with_labels": [
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
},
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
},
{
"raw": "DUPLICATE_CANDIDATE_FINGERPRINT",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: DUPLICATE_CANDIDATE_FINGERPRINT.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
}
],
"ord-stratloop-75": [
{
"id": 4,
"ts_iso": "2026-04-24T14:24:08.454746+00:00",
"order_id": "ord-stratloop-75",
"symbol": "SPY",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"BROKER_ACCOUNT_STATE_STALE",
"BROKER_POSITIONS_STATE_STALE",
"BROKER_OPEN_ORDERS_STATE_STALE"
],
"reasons_with_labels": [
{
"raw": "BROKER_ACCOUNT_STATE_STALE",
"label": "Broker account snapshot stale",
"explanation": "The latest persisted broker account snapshot is older than the policy TTL.",
"action": "Verify worker-oms / broker-truth snapshot path; check GET /internal/broker-truth/account/latest freshness."
},
{
"raw": "BROKER_POSITIONS_STATE_STALE",
"label": "Broker positions snapshot stale",
"explanation": "Broker positions used for safety checks are older than the allowed freshness window.",
"action": "Confirm broker-truth positions snapshots are updating; inspect worker-oms logs and snapshot timestamps."
},
{
"raw": "BROKER_OPEN_ORDERS_STATE_STALE",
"label": "Broker open-orders snapshot stale",
"explanation": "Open-order snapshots used for duplicate/conflict checks are older than the policy TTL.",
"action": "Verify broker open-order snapshot ingestion; compare with IBKR Client Portal open orders."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
}
],
"ord-stratloop-70": [
{
"id": 2,
"ts_iso": "2026-04-24T13:32:17.384925+00:00",
"order_id": "ord-stratloop-70",
"symbol": "SPY",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"RECONCILIATION_STATE_STALE",
"AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED"
],
"reasons_with_labels": [
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
},
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
}
],
"ord-stratloop-69": [
{
"id": 1,
"ts_iso": "2026-04-24T13:32:17.340066+00:00",
"order_id": "ord-stratloop-69",
"symbol": "QQQ",
"account_id": "DUP667958",
"decision": "deny",
"reasons_raw": [
"RECONCILIATION_STATE_STALE",
"AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED"
],
"reasons_with_labels": [
{
"raw": "RECONCILIATION_STATE_STALE",
"label": "Reconciliation signal stale",
"explanation": "Reconciliation inputs used by autonomous policy are older than the configured TTL.",
"action": "Review /internal/reconciliation-v2/latest and pipeline footprint; run read-only recon preview if configured."
},
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
},
{
"raw": "AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED",
"label": "Policy / guard reason",
"explanation": "This reason code is not in the Phase 14B operator glossary yet; the raw code is still authoritative for automation. Raw: AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED.",
"action": "Inspect GET /internal/autonomous-policy/runs (full detail) or extend kestrel_oms.operator_evidence_report."
}
],
"submit_attempted": false,
"submit_outcome": "skipped"
}
]
},
"raw_reason_codes_seen": [
"ORDER_CANDIDATE_STALE",
"BROKER_ACCOUNT_STATE_STALE",
"BROKER_POSITIONS_STATE_STALE",
"BROKER_OPEN_ORDERS_STATE_STALE",
"RECONCILIATION_STATE_STALE",
"STRATEGY_LOOP_STATE_STALE",
"MARKET_CLOSED_FOR_STOCK",
"PAPER_TEST_RTH_REQUIRED",
"DATA_FEATURES_STALE",
"DATA_BROKER_TRUTH_STALE",
"AUTONOMOUS_MAX_CONCURRENT_GLOBAL_REACHED",
"AUTONOMOUS_MAX_CONCURRENT_SYMBOL_REACHED",
"DUPLICATE_CANDIDATE_FINGERPRINT"
]
},
"open_trades": {
"enabled": true,
"account_id": "DUP667958",
"count": 0,
"rows": []
},
"terminal_control": {
"enabled": true,
"persisted_state": "normal",
"reason_summary": "effective=normal | gov=normal | ops=normal | recon=normal | inc=normal",
"effective_resolved_state": "normal",
"effective_reason_summary": "effective=normal | gov=normal | ops=normal | recon=normal | inc=normal",
"submissions_blocked": false,
"submit_guard_env_enabled": true,
"stale_warning": true,
"live_mismatch": false,
"persisted_age_seconds": 2811914.133392,
"blocked_submissions_recent": [
{
"id": 3,
"ts_iso": "2026-05-02T14:38:51.291754+00:00",
"order_id": "ord-exit-4",
"symbol": "AAPL",
"reason_code": "paper_test_rth_required",
"reason_labels": {
"label": "Paper test — RTH only",
"explanation": "Paper-test guard requires regular trading hours before allowing this class of entry/submit.",
"action": "Retry during RTH or adjust paper-test RTH policy only if your playbook explicitly allows off-hours testing."
}
},
{
"id": 2,
"ts_iso": "2026-05-02T14:38:51.287902+00:00",
"order_id": "ord-exit-3",
"symbol": "AAPL",
"reason_code": "paper_test_rth_required",
"reason_labels": {
"label": "Paper test — RTH only",
"explanation": "Paper-test guard requires regular trading hours before allowing this class of entry/submit.",
"action": "Retry during RTH or adjust paper-test RTH policy only if your playbook explicitly allows off-hours testing."
}
},
{
"id": 1,
"ts_iso": "2026-05-02T14:38:51.277890+00:00",
"order_id": "ord-exit-2",
"symbol": "AAPL",
"reason_code": "paper_test_rth_required",
"reason_labels": {
"label": "Paper test — RTH only",
"explanation": "Paper-test guard requires regular trading hours before allowing this class of entry/submit.",
"action": "Retry during RTH or adjust paper-test RTH policy only if your playbook explicitly allows off-hours testing."
}
}
]
},
"safety": {
"no_open_trades": true,
"submissions_blocked": false,
"has_approved_not_submitted": true
},
"operator_narrative": {
"what_happened": "Latest scanner run id=101 at 2026-05-05T16:27:05.483016+00:00 (universe_size=7). Latest strategy-loop run id=93 with 7 decisions (2 trade, 5 skip). OMS window: 24 orders; approved_not_submitted=3; problem sample count=14.",
"why_broker_submission_may_not_have_happened": "Autonomous submission policy recorded 8 recent deny evaluation(s); see reasons_with_labels. There are OMS orders in approved_not_submitted (approved locally, no broker id / zero fills) — broker submission did not complete for those rows.",
"open_trades_answer": "No open trades for account 'DUP667958'.",
"suggested_next_steps": [
"Refresh or recompute system control state — persisted control row looks stale.",
"Review autonomous_policy/runs for snapshot_json on the top deny order_ids.",
"Inspect approved_not_submitted rows and broker-truth / policy freshness."
]
},
"worker_freshness": {
"available": true,
"generated_at_iso": "2026-06-20T16:59:57.242595+00:00",
"overall_state": "normal",
"stale_data_flags": [
"market_bars_stale_off_rth_informational",
"market_quotes_stale_off_rth_informational",
"feature_snapshots_stale_off_rth_informational",
"scanner_runs_stale_off_rth_informational",
"strategy_loop_runs_stale_off_rth_informational"
],
"docker_status_available": false,
"data_freshness": {
"market_bars": {
"latest_ts_iso": "2026-05-18T19:59:00+00:00",
"count": 50329
},
"market_quotes": {
"latest_ts_iso": "2026-05-19T03:54:41.759396+00:00",
"count": 230867
},
"feature_snapshots": {
"latest_ts_iso": "2026-05-18T19:59:00+00:00",
"count": 36892
},
"scanner_runs": {
"latest_created_at_iso": "2026-05-05T16:27:05.483016+00:00",
"count": 101
},
"strategy_loop_runs": {
"latest_created_at_iso": "2026-05-05T16:27:05.579224+00:00",
"count": 93
},
"orders": {
"latest_created_at_iso": "2026-05-20T13:43:51.015110+00:00",
"count": 24
},
"autonomous_submission_policy_runs": {
"latest_ts_iso": "2026-05-02T16:53:12.774824+00:00",
"count": 13
},
"risk_runs": {
"latest_created_at_iso": null,
"count": 0
},
"broker_account_snapshots": {
"latest_ts_iso": "2026-06-02T04:30:09.163786+00:00",
"count": 34476
}
},
"services": [
{
"service_name": "worker-market-data",
"docker_status_available": false,
"container_state": null,
"exit_code": null,
"status_message": null,
"started_at_iso": null,
"finished_at_iso": null,
"inferred_health": "ok",
"inference_source": "market_bars"
},
{
"service_name": "worker-features",
"docker_status_available": false,
"container_state": null,
"exit_code": null,
"status_message": null,
"started_at_iso": null,
"finished_at_iso": null,
"inferred_health": "ok",
"inference_source": "feature_snapshots"
},
{
"service_name": "worker-oms",
"docker_status_available": false,
"container_state": null,
"exit_code": null,
"status_message": null,
"started_at_iso": null,
"finished_at_iso": null,
"inferred_health": "ok",
"inference_source": "orders+autonomous_submission_policy_runs"
},
{
"service_name": "worker-risk",
"docker_status_available": false,
"container_state": null,
"exit_code": null,
"status_message": null,
"started_at_iso": null,
"finished_at_iso": null,
"inferred_health": "missing",
"inference_source": "risk_runs"
},
{
"service_name": "worker-broker-ibkr",
"docker_status_available": false,
"container_state": null,
"exit_code": null,
"status_message": null,
"started_at_iso": null,
"finished_at_iso": null,
"inferred_health": "ok",
"inference_source": "broker_account_snapshots"
}
],
"diagnostics": [
{
"subject": "worker-market-data",
"severity": "info",
"explanation": "Market bars look stale relative to thresholds, but the approximate calendar says outside likely RTH — treat as informational.",
"suggested_action": "Optional check of worker-market-data; no automatic restart was performed.",
"details": {
"last_data_age_seconds": 2840457.317306
}
},
{
"subject": "worker-risk",
"severity": "info",
"explanation": "No risk_runs rows — risk worker may never have run in this environment or table is empty.",
"suggested_action": "If risk coverage is expected, verify worker-risk deployment and intake wiring.",
"details": {}
}
],
"no_automatic_restart_note": "No automatic worker restart was performed by this report."
}
}