Protective ruling card
- Card
- prot-9eeb86a6b98506924c74d9c0bae9093a
- At
- 2026-09-28 12:09 UTC
- Decision id
- —
- Ruling id
- 9eeb86a6b98506924c74d9c0bae9093a0fe08bac8a41c4c6dff0ea5b24e597cb
- Outcome
- —
- Raw JSON
- prot-9eeb86a6b98506924c74d9c0bae9093a.json
What the risk kernel ruled
It can only shrink, refuse or close.
- Ruling
- 9eeb86a6b98506924c74d9c0bae9093a0fe08bac8a41c4c6dff0ea5b24e597cb
- At
- 2026-09-28 12:09 UTC
- Answers
- protective: venue_integrity
- Breaker
- active → active
- Guards applied
- G1_venue_integrity, G2_weekend_freeze, G5_daily_kill, G10_breaker
| instrument | held | asked | approved | set by |
|---|---|---|---|---|
| METAUSDT | +2.49% | hold | 0 (flat) | G1_venue_integrity |
| MSTRUSDT | +2.50% | hold | +2.50% | as asked |
Book-level guards
| guard | status | ceiling | reason |
|---|---|---|---|
| G5 daily kill | passed | — | day return within the -1.5% kill basis and inputsEnvelope simulation uses a -1.5% daily kill (envelope_clean.py) {
"day_open_equity": "49985.20616429",
"day_return": -1.2754351715677385e-05,
"equity": "49984.56863539",
"kill_at": -0.015
} |
| G10 breaker | passed | — | breaker active; snapshot and quote fresh basis and inputs2.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 {
"book_demands": "active",
"book_trips": "",
"breaker_state": "active",
"breaker_trips": "",
"consecutive_losses": 0.0,
"drawdown": -1.2754351715677385e-05,
"effective": "active",
"llm_outage": false
} |
METAUSDT: every guard
| guard | status | ceiling | reason |
|---|---|---|---|
| G1 venue integrity | fired | exit | exit: Demo last 726.41 is 105.6 bps from live 734.16, beyond the measured p99 of 67.2 bps basis and inputsDemo 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) {
"demo_index": "732.973173934603465",
"demo_index_move_bps_3h": 42.65144529002026,
"demo_last": "726.41",
"demo_live_gap_bps": 105.56282009371255,
"demo_live_p99_bps": 67.2,
"demo_mark": "732.8",
"live_last": "734.16",
"mark_index_gap": 0.00023626230912908653,
"mark_index_limit": 0.03,
"session_open": true,
"stale_index_min_move_bps_3h": 2.0
} |
| G2 weekend freeze | passed | — | outside the weekend freeze and its buffers basis and inputsUTA 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 {
"asset_class": "us_equity",
"phase": "open"
} |
| G5 daily kill | passed | — | day return within the -1.5% kill basis and inputsEnvelope simulation uses a -1.5% daily kill (envelope_clean.py) {
"day_open_equity": "49985.20616429",
"day_return": -1.2754351715677385e-05,
"equity": "49984.56863539",
"kill_at": -0.015
} |
| G10 breaker | passed | — | breaker active; snapshot and quote fresh basis and inputs2.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 {
"book_demands": "active",
"book_trips": "",
"breaker_state": "active",
"breaker_trips": "",
"consecutive_losses": 0.0,
"drawdown": -1.2754351715677385e-05,
"effective": "active",
"llm_outage": false,
"quote_age_seconds": 2.124857,
"snapshot_age_seconds": 89.135206
} |
MSTRUSDT: every guard
| guard | status | ceiling | reason |
|---|---|---|---|
| G1 venue integrity | passed | — | Demo mark within the index limit, Demo-live gap within p99, Demo index moving basis and inputsDemo 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) {
"demo_index": "157.7392893748344092",
"demo_index_move_bps_3h": 65.53892394562833,
"demo_last": "157.35",
"demo_live_gap_bps": 46.17914979757085,
"demo_live_p99_bps": 316.2,
"demo_mark": "157.69",
"live_last": "158.08",
"mark_index_gap": 0.00031247367114278877,
"mark_index_limit": 0.03,
"session_open": true,
"stale_index_min_move_bps_3h": 2.0
} |
| G2 weekend freeze | passed | — | outside the weekend freeze and its buffers basis and inputsUTA 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 {
"asset_class": "us_equity",
"phase": "open"
} |
| G5 daily kill | passed | — | day return within the -1.5% kill basis and inputsEnvelope simulation uses a -1.5% daily kill (envelope_clean.py) {
"day_open_equity": "49985.20616429",
"day_return": -1.2754351715677385e-05,
"equity": "49984.56863539",
"kill_at": -0.015
} |
| G10 breaker | passed | — | breaker active; snapshot and quote fresh basis and inputs2.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 {
"book_demands": "active",
"book_trips": "",
"breaker_state": "active",
"breaker_trips": "",
"consecutive_losses": 0.0,
"drawdown": -1.2754351715677385e-05,
"effective": "active",
"llm_outage": false,
"quote_age_seconds": 2.532857,
"snapshot_age_seconds": 89.135206
} |
What was sent and what came back
- clientOid
- sa8b9da0c94bf6c02a583663c40a9ef8
- Venue orderId
- not acknowledged
- Stop
- —
- Net P&L realised
- —
Dry-run preview (what Agent Hub would send)
order --action place --category USDT-FUTURES --symbol METAUSDT --side sell --orderType market --qty 1.7 --clientOid sa8b9da0c94bf6c02a583663c40a9ef8 --posSide long --paper-trading --dry-run
{
"category": "USDT-FUTURES",
"clientOid": "sa8b9da0c94bf6c02a583663c40a9ef8",
"orderType": "market",
"posSide": "long",
"qty": "1.7",
"side": "sell",
"symbol": "METAUSDT"
}| exec id | side | qty | price | fee | open/close | at |
|---|---|---|---|---|---|---|
| none | ||||||
Proof
Read from ledger rows 649, 650, 651, 652, 653, 654, 655, 656 of ledger.jsonl; every blob those rows commit to is below, named by its SHA-256.
| blob | media type | bytes |
|---|---|---|
| 312a7122b358a5b66cde8572e66654abf0a8b3473de1b353794831795f84dd1f | application/vnd.t2sa.ruling-context+json | 17304 |
| 75f67571bf33d430ab3c4ca1fc7ddc7af7887579edeb35c95352a28c272254b6 | application/json | 724 |
| 3cb59d663fff9c5198bac94f6689ac472fa3544f8c85b1e2d62439a7660c6472 | application/json | 648 |