{
 "card_id": "prot-371beffa30151e5cbab1c0840b8b98db",
 "at": "2026-10-02T19:47:37.983597Z",
 "decision_id": null,
 "ruling_id": "371beffa30151e5cbab1c0840b8b98db0cb4131adb1f964ad627c58605e0092e",
 "triggers": [],
 "coverage": {},
 "shown_text": [],
 "outcome": null,
 "decision": null,
 "grounding": {},
 "kernel": {
  "ruling_id": "371beffa30151e5cbab1c0840b8b98db0cb4131adb1f964ad627c58605e0092e",
  "at": "2026-10-02T19:47:37.983597Z",
  "decision_id": null,
  "protective_reason": "weekend_freeze",
  "activation_before": "reduce_only",
  "activation_after": "reduce_only",
  "book_rulings": [
   {
    "guard": "G5_daily_kill",
    "symbol": null,
    "status": "passed",
    "ceiling_abs_weight": null,
    "forces_exit": false,
    "reason": "day return within the -1.5% kill",
    "basis": "Envelope simulation uses a -1.5% daily kill (envelope_clean.py)",
    "inputs": {
     "day_open_equity": "50009.39148830000000000000000",
     "day_return": -0.0006784611030957654,
     "equity": "49975.46206138570000000000000",
     "kill_at": -0.015
    }
   },
   {
    "guard": "G10_breaker",
    "symbol": null,
    "status": "fired",
    "ceiling_abs_weight": null,
    "forces_exit": false,
    "reason": "no new exposure anywhere: breaker reduce-only (losing_streak)",
    "basis": "2.5% is past the worst no-edge 72h drawdown (-2.48%, envelope_clean.json); losing-streak and staleness rules ported from ARGUS risk/circuit.py (MIT); a model outage never leads to a deterministic trade (DESIGN.md §9.5); policy v2 (run2-a5): the losing-streak trip lapses, since a flat book in reduce-only could never close the winner that clears it; policy v2 (run2-a6): a flatten is itself a taker trade on every leg",
    "inputs": {
     "book_demands": "reduce_only",
     "book_trips": "losing_streak",
     "breaker_state": "reduce_only",
     "breaker_trips": "losing_streak",
     "consecutive_losses": 5.0,
     "drawdown": -0.0022233928560908803,
     "effective": "reduce_only",
     "llm_outage": false
    }
   }
  ],
  "instruments": [
   {
    "symbol": "COINUSDT",
    "current_weight": -0.0236482755986995,
    "proposed_weight": null,
    "approved_weight": 0.0,
    "binding_guard": "G2_weekend_freeze",
    "rulings": [
     {
      "guard": "G1_venue_integrity",
      "symbol": "COINUSDT",
      "status": "passed",
      "ceiling_abs_weight": null,
      "forces_exit": false,
      "reason": "Demo mark within the index limit, Demo-live gap within p99, Demo index moving",
      "basis": "Demo flash prints (BTCUSDT Demo mark 65.6% from its index, 2026-06-29 00:00 UTC); excursion counts and p99 gaps in demo_integrity.json and fade_demo.json; weekend Demo index moves 0.1-1.5 bps/h vs 18-66 bps/h on weekdays (weekend_vol.json)",
      "inputs": {
       "demo_index": "183.2416284593253515",
       "demo_index_move_bps_3h": 32.81690127423594,
       "demo_last": "183.01",
       "demo_live_gap_bps": 14.731558271497162,
       "demo_live_p99_bps": 165.0,
       "demo_mark": "183.23",
       "live_last": "183.28",
       "mark_index_gap": 6.345970303321497e-05,
       "mark_index_limit": 0.03,
       "session_open": true,
       "stale_index_min_move_bps_3h": 2.0
      }
     },
     {
      "guard": "G2_weekend_freeze",
      "symbol": "COINUSDT",
      "status": "fired",
      "ceiling_abs_weight": 0.0,
      "forces_exit": true,
      "reason": "exit: pre-flatten: within 15 minutes of the weekend freeze",
      "basis": "UTA Demo does not track these perps on weekends. Mostly it freezes: weekend mean |1H move| of the Demo index 0.1-1.5 bps against 5.6-29.1 bps live (weekend_vol.json); MSTR +204 bps live vs +5 bps Demo from Saturday 00:00 to 12:00 UTC on 2026-09-19. Sometimes it jumps on its own: AAPL +80 bps Demo vs +17 bps live on 2026-09-12 (fade_demo2.txt); policy v2 (run2-a4): a trade still open when the record is scored has no result, so the window closes them all",
      "inputs": {
       "asset_class": "us_equity",
       "phase": "preflatten"
      }
     },
     {
      "guard": "G5_daily_kill",
      "symbol": "COINUSDT",
      "status": "passed",
      "ceiling_abs_weight": null,
      "forces_exit": false,
      "reason": "day return within the -1.5% kill",
      "basis": "Envelope simulation uses a -1.5% daily kill (envelope_clean.py)",
      "inputs": {
       "day_open_equity": "50009.39148830000000000000000",
       "day_return": -0.0006784611030957654,
       "equity": "49975.46206138570000000000000",
       "kill_at": -0.015
      }
     },
     {
      "guard": "G10_breaker",
      "symbol": "COINUSDT",
      "status": "passed",
      "ceiling_abs_weight": 0.0236482755986995,
      "forces_exit": false,
      "reason": "breaker reduce-only (losing_streak); this would refuse an increase, and none was requested",
      "basis": "2.5% is past the worst no-edge 72h drawdown (-2.48%, envelope_clean.json); losing-streak and staleness rules ported from ARGUS risk/circuit.py (MIT); a model outage never leads to a deterministic trade (DESIGN.md §9.5); policy v2 (run2-a5): the losing-streak trip lapses, since a flat book in reduce-only could never close the winner that clears it; policy v2 (run2-a6): a flatten is itself a taker trade on every leg",
      "inputs": {
       "book_demands": "reduce_only",
       "book_trips": "losing_streak",
       "breaker_state": "reduce_only",
       "breaker_trips": "losing_streak",
       "consecutive_losses": 5.0,
       "drawdown": -0.0022233928560908803,
       "effective": "reduce_only",
       "llm_outage": false,
       "quote_age_seconds": 10.842597,
       "snapshot_age_seconds": 222.233293
      }
     }
    ]
   },
   {
    "symbol": "HOODUSDT",
    "current_weight": -0.024396800944079023,
    "proposed_weight": null,
    "approved_weight": 0.0,
    "binding_guard": "G2_weekend_freeze",
    "rulings": [
     {
      "guard": "G1_venue_integrity",
      "symbol": "HOODUSDT",
      "status": "passed",
      "ceiling_abs_weight": null,
      "forces_exit": false,
      "reason": "Demo mark within the index limit, Demo-live gap within p99, Demo index moving",
      "basis": "Demo flash prints (BTCUSDT Demo mark 65.6% from its index, 2026-06-29 00:00 UTC); excursion counts and p99 gaps in demo_integrity.json and fade_demo.json; weekend Demo index moves 0.1-1.5 bps/h vs 18-66 bps/h on weekdays (weekend_vol.json)",
      "inputs": {
       "demo_index": "112.5826262060977345",
       "demo_index_move_bps_3h": 74.75862458836653,
       "demo_last": "112.61",
       "demo_live_gap_bps": 6.212282570110046,
       "demo_live_p99_bps": 383.0,
       "demo_mark": "112.58",
       "live_last": "112.68",
       "mark_index_gap": 2.3326921624006837e-05,
       "mark_index_limit": 0.03,
       "session_open": true,
       "stale_index_min_move_bps_3h": 2.0
      }
     },
     {
      "guard": "G2_weekend_freeze",
      "symbol": "HOODUSDT",
      "status": "fired",
      "ceiling_abs_weight": 0.0,
      "forces_exit": true,
      "reason": "exit: pre-flatten: within 15 minutes of the weekend freeze",
      "basis": "UTA Demo does not track these perps on weekends. Mostly it freezes: weekend mean |1H move| of the Demo index 0.1-1.5 bps against 5.6-29.1 bps live (weekend_vol.json); MSTR +204 bps live vs +5 bps Demo from Saturday 00:00 to 12:00 UTC on 2026-09-19. Sometimes it jumps on its own: AAPL +80 bps Demo vs +17 bps live on 2026-09-12 (fade_demo2.txt); policy v2 (run2-a4): a trade still open when the record is scored has no result, so the window closes them all",
      "inputs": {
       "asset_class": "us_equity",
       "phase": "preflatten"
      }
     },
     {
      "guard": "G5_daily_kill",
      "symbol": "HOODUSDT",
      "status": "passed",
      "ceiling_abs_weight": null,
      "forces_exit": false,
      "reason": "day return within the -1.5% kill",
      "basis": "Envelope simulation uses a -1.5% daily kill (envelope_clean.py)",
      "inputs": {
       "day_open_equity": "50009.39148830000000000000000",
       "day_return": -0.0006784611030957654,
       "equity": "49975.46206138570000000000000",
       "kill_at": -0.015
      }
     },
     {
      "guard": "G10_breaker",
      "symbol": "HOODUSDT",
      "status": "passed",
      "ceiling_abs_weight": 0.024396800944079023,
      "forces_exit": false,
      "reason": "breaker reduce-only (losing_streak); this would refuse an increase, and none was requested",
      "basis": "2.5% is past the worst no-edge 72h drawdown (-2.48%, envelope_clean.json); losing-streak and staleness rules ported from ARGUS risk/circuit.py (MIT); a model outage never leads to a deterministic trade (DESIGN.md §9.5); policy v2 (run2-a5): the losing-streak trip lapses, since a flat book in reduce-only could never close the winner that clears it; policy v2 (run2-a6): a flatten is itself a taker trade on every leg",
      "inputs": {
       "book_demands": "reduce_only",
       "book_trips": "losing_streak",
       "breaker_state": "reduce_only",
       "breaker_trips": "losing_streak",
       "consecutive_losses": 5.0,
       "drawdown": -0.0022233928560908803,
       "effective": "reduce_only",
       "llm_outage": false,
       "quote_age_seconds": 10.842597,
       "snapshot_age_seconds": 222.233293
      }
     }
    ]
   }
  ],
  "guards_applied": [
   "G1_venue_integrity",
   "G2_weekend_freeze",
   "G5_daily_kill",
   "G10_breaker"
  ]
 },
 "previews": [
  {
   "client_oid": "sa15288dfa7a4fbdfd1f5d1769a16548",
   "operation_id": "placeOrder",
   "method": "POST",
   "path": "/api/v3/trade/place-order",
   "would_send": {
    "category": "USDT-FUTURES",
    "clientOid": "sa15288dfa7a4fbdfd1f5d1769a16548",
    "orderType": "market",
    "posSide": "short",
    "qty": "6.45",
    "side": "buy",
    "symbol": "COINUSDT"
   },
   "argv": [
    "order",
    "--action",
    "place",
    "--category",
    "USDT-FUTURES",
    "--symbol",
    "COINUSDT",
    "--side",
    "buy",
    "--orderType",
    "market",
    "--qty",
    "6.45",
    "--clientOid",
    "sa15288dfa7a4fbdfd1f5d1769a16548",
    "--posSide",
    "short",
    "--paper-trading",
    "--dry-run"
   ],
   "captured_at": "2026-10-02T19:47:54.620457Z",
   "blob": {
    "sha256": "cc8cb12cf3a2deab662fb9a33399b2a10380272b103e94bfd363fee99b5af2fa",
    "media_type": "application/json",
    "size": 728
   }
  },
  {
   "client_oid": "sa8a4bde99f1e5a016c2f62e79577392",
   "operation_id": "placeOrder",
   "method": "POST",
   "path": "/api/v3/trade/place-order",
   "would_send": {
    "category": "USDT-FUTURES",
    "clientOid": "sa8a4bde99f1e5a016c2f62e79577392",
    "orderType": "market",
    "posSide": "short",
    "qty": "10.83",
    "side": "buy",
    "symbol": "HOODUSDT"
   },
   "argv": [
    "order",
    "--action",
    "place",
    "--category",
    "USDT-FUTURES",
    "--symbol",
    "HOODUSDT",
    "--side",
    "buy",
    "--orderType",
    "market",
    "--qty",
    "10.83",
    "--clientOid",
    "sa8a4bde99f1e5a016c2f62e79577392",
    "--posSide",
    "short",
    "--paper-trading",
    "--dry-run"
   ],
   "captured_at": "2026-10-02T19:48:30.728710Z",
   "blob": {
    "sha256": "fd1529b35bc8b4437c37ba9f2c840305359deee9e960f0eda6471b18d82d2362",
    "media_type": "application/json",
    "size": 730
   }
  }
 ],
 "orders": [
  {
   "client_oid": "sa15288dfa7a4fbdfd1f5d1769a16548",
   "venue_order_id": "1490003701307691008",
   "symbol": "COINUSDT",
   "side": "buy",
   "qty": "6.45",
   "purpose": "protective_exit",
   "state": "filled",
   "fills": [
    {
     "exec_id": "1490003701310664704",
     "venue_order_id": "1490003701307691008",
     "client_oid": "sa15288dfa7a4fbdfd1f5d1769a16548",
     "symbol": "COINUSDT",
     "side": "buy",
     "exec_price": "183.02",
     "exec_qty": "6.45",
     "exec_value": "1180.479",
     "fee_paid": "0.7082874",
     "fee_coin": "USDT",
     "trade_scope": "taker",
     "trade_side": null,
     "exec_pnl": "65.59204504",
     "executed_at": "2026-10-02T19:48:05.999000Z",
     "venue": "bitget_demo",
     "blob": {
      "sha256": "9bd3824b9d0c8e660af9eaa00a9fb1efb7d26d2fbe31fc2d0ded291d963e3bed",
      "media_type": "application/json",
      "size": 912
     }
    }
   ],
   "net_pnl": "64.88375764504504504504504498"
  },
  {
   "client_oid": "sa8a4bde99f1e5a016c2f62e79577392",
   "venue_order_id": "1490003852822728704",
   "symbol": "HOODUSDT",
   "side": "buy",
   "qty": "10.83",
   "purpose": "protective_exit",
   "state": "filled",
   "fills": [
    {
     "exec_id": "1490003852825702400",
     "venue_order_id": "1490003852822728704",
     "client_oid": "sa8a4bde99f1e5a016c2f62e79577392",
     "symbol": "HOODUSDT",
     "side": "buy",
     "exec_price": "112.61",
     "exec_qty": "10.83",
     "exec_value": "1219.5663",
     "fee_paid": "0.73173978",
     "fee_coin": "USDT",
     "trade_scope": "taker",
     "trade_side": null,
     "exec_pnl": "60.54562342",
     "executed_at": "2026-10-02T19:48:42.123000Z",
     "venue": "bitget_demo",
     "blob": {
      "sha256": "b534a4be20f28c9ef4b3c92d5ef2740c0e3476dfc824cffd220699ac1d75ce64",
      "media_type": "application/json",
      "size": 1416
     }
    }
   ],
   "net_pnl": "59.81388364752962625341841370"
  }
 ],
 "ledger_seqs": [
  3549,
  3550,
  3551,
  3552,
  3553,
  3554,
  3555,
  3556,
  3557,
  3558,
  3559,
  3560,
  3561,
  3562,
  3563,
  3564,
  3565
 ],
 "blobs": [
  {
   "sha256": "85156bb03400faf2d2169a7694092a8272190420942d3c8a8cc921a17502a6b9",
   "media_type": "application/vnd.t2sa.ruling-context+json",
   "size": 17553
  },
  {
   "sha256": "cc8cb12cf3a2deab662fb9a33399b2a10380272b103e94bfd363fee99b5af2fa",
   "media_type": "application/json",
   "size": 728
  },
  {
   "sha256": "f4940cd95ede45f784ab5ad6b83dc8e1c7f05de2ed0ca81a1c9a8dccf9c335aa",
   "media_type": "application/json",
   "size": 511
  },
  {
   "sha256": "9bd3824b9d0c8e660af9eaa00a9fb1efb7d26d2fbe31fc2d0ded291d963e3bed",
   "media_type": "application/json",
   "size": 912
  },
  {
   "sha256": "fd1529b35bc8b4437c37ba9f2c840305359deee9e960f0eda6471b18d82d2362",
   "media_type": "application/json",
   "size": 730
  },
  {
   "sha256": "3236d9bbdb76c75057c7895fb602101b025a27b1e6da69692d404a15a686cb32",
   "media_type": "application/json",
   "size": 512
  },
  {
   "sha256": "b534a4be20f28c9ef4b3c92d5ef2740c0e3476dfc824cffd220699ac1d75ce64",
   "media_type": "application/json",
   "size": 1416
  }
 ],
 "feed_health": null,
 "decided_by": null
}
