a trading venue extends the language: the session (time compression of a market's candles before a move reads them, the venue's verbs, the causality proof) and, since version 2, the strategy (a cubicle.script v1 the program names by hash, its contract desk, the reader gate that grades it, how its indicator draws by the verdict). Generated by lang/emit/genie-cubicle-pack.mjs from the trading-decisions contract, the cubicle.script runner's catalogue and the reader gate; the bar maths stays in the script
{
"verbs": {
"session.open": {
"tool": "session_open",
"meter": "sma.session",
"proof": "none"
},
"session.receipt": {
"tool": "session_receipt",
"meter": "sma.session",
"proof": "causality"
},
"market.candles": {
"tool": "market_candles",
"meter": "market.price",
"proof": "none"
},
"market.price": {
"tool": "market_price",
"meter": "market.price",
"proof": "none"
},
"strategy.publish": {
"tool": "strategy_publish",
"meter": "clob.fill",
"proof": "replay",
"split": "70/30 publisher/venue"
},
"proof.causality": {
"tool": "proof_causality",
"meter": "sma.session",
"proof": "causality"
}
},
"windows": {
"15s": {
"seconds": 15
},
"1m": {
"seconds": 60
},
"5m": {
"seconds": 300
},
"1h": {
"seconds": 3600
}
},
"markets": {
"BTC-USD": {
"gate": "BTC"
},
"ETH-USD": {
"gate": "ETH"
},
"SOL-USD": {
"gate": "SOL"
},
"NQ": {
"gate": "NQ"
},
"ES": {
"gate": "ES"
},
"YM": {
"gate": "YM"
}
},
"desks": {
"fest-crypto": {
"id": "fest-crypto",
"venue": "taifoon-clob",
"markets": [
"BTC",
"ETH",
"SOL"
],
"clock": "crypto",
"horizon_s": 86400,
"exits": {
"stop_bps": 300,
"max_hold_s": 172800,
"flatten_on": [
"stop",
"max_hold",
"kill"
]
},
"caps": {
"max_order_usd": 150,
"max_exposure_usd": 5000,
"daily_loss_usd": 250,
"kill_drawdown_pct": 15
},
"setup": "long-dip-desk",
"verdict": "not_proven",
"mode": "shadow",
"what": "the fest desk recast: long AND exit (it bought into a fall with no exit); shadow until its setup is proven",
"gate_home": {
"desk": "fest",
"desk_unit": "fest-live.service",
"state": "/var/lib/fest",
"promoted": "/var/lib/fest/promoted.json",
"from": "2026-01-12",
"horizon_s": 86400,
"cost_bps": 8
}
},
"fest-nq": {
"id": "fest-nq",
"venue": "taifoon-clob",
"markets": [
"NQ",
"ES"
],
"clock": "cme",
"horizon_s": 21600,
"exits": {
"stop_bps": 60,
"max_hold_s": 21600,
"flatten_on": [
"stop",
"max_hold",
"session_end:ny_pm",
"break",
"kill"
]
},
"caps": {
"max_order_usd": 150,
"max_exposure_usd": 3000,
"daily_loss_usd": 150,
"kill_drawdown_pct": 10
},
"setup": "nq-session-desk",
"verdict": "not_proven",
"mode": "shadow",
"what": "NQ/ES by CME session: long or short, flat before the daily break; shadow until proven",
"gate_home": {
"desk": "fest-nq",
"desk_unit": "fest-nq-live.service",
"state": "/var/lib/fest-nq",
"promoted": "/var/lib/fest-nq/promoted.json",
"from": "2026-01-12",
"horizon_s": 86400,
"cost_bps": 8
}
},
"world-clock-hf": {
"id": "world-clock-hf",
"venue": "taifoon-clob",
"markets": [
"BTC",
"ETH",
"SOL"
],
"clock": "crypto",
"horizon_s": 60,
"exits": {
"stop_bps": 8,
"max_hold_s": 180,
"flatten_on": [
"stop",
"max_hold",
"kill"
]
},
"caps": {
"max_order_usd": 20,
"max_exposure_usd": 60,
"daily_loss_usd": 20,
"kill_drawdown_pct": 5
},
"setup": "hf-nq-impulse",
"verdict": "not_proven",
"mode": "shadow",
"what": "the NQ impulse into crypto, both directions; its gross edge is drift (the 1 h late version passes), so shadow",
"gate_home": null
},
"callbook-nq": {
"id": "callbook-nq",
"venue": "taifoon-clob",
"markets": [
"NQ",
"ES"
],
"clock": "cme",
"horizon_s": 1800,
"exits": {
"stop_bps": 60,
"max_hold_s": 5400,
"flatten_on": [
"stop",
"target",
"max_hold",
"break",
"kill"
]
},
"caps": {
"max_order_usd": 100,
"max_exposure_usd": 300,
"daily_loss_usd": 60,
"kill_drawdown_pct": 10
},
"setup": "callbook-house",
"verdict": "not_proven",
"mode": "shadow",
"what": "the call book on NQ/ES: long or short on the experts' vote, stop and target from the expected move, out by the horizon; shadow until proven",
"gate_home": null
},
"callbook-crypto": {
"id": "callbook-crypto",
"venue": "taifoon-clob",
"markets": [
"BTC"
],
"clock": "crypto",
"horizon_s": 1800,
"exits": {
"stop_bps": 150,
"max_hold_s": 5400,
"flatten_on": [
"stop",
"target",
"max_hold",
"kill"
]
},
"caps": {
"max_order_usd": 100,
"max_exposure_usd": 300,
"daily_loss_usd": 60,
"kill_drawdown_pct": 10
},
"setup": "callbook-house",
"verdict": "not_proven",
"mode": "shadow",
"what": "the call book on BTC: long or short on the experts' vote, stop and target from the expected move, out by the horizon; shadow until proven",
"gate_home": null
}
},
"reader_kinds": {
"answers": {
"broken": "complement time_shift_24h week_shuffle",
"announced": false,
"programmable": true
},
"lane": {
"broken": "complement time_shift_24h week_shuffle",
"announced": false,
"programmable": false
},
"log": {
"broken": "complement time_shift_24h week_shuffle",
"announced": false,
"programmable": false
},
"rule": {
"broken": "complement time_shift_24h invert_strongest",
"announced": false,
"programmable": false
},
"script": {
"broken": "complement time_shift_24h week_shuffle",
"announced": false,
"programmable": true
}
},
"gates": {
"reader_gate": {
"holdout_frac": 0.3,
"cost_bps": 8,
"max_dropped": 0.25,
"turn_s": 1800,
"desks_file": "/var/lib/cubicle-reader-gate/desks.json",
"scripts_dir": "/opt/cubicle-reader-gate/scripts",
"answers_dir": "/var/lib/cubicle-reader-gate/answers",
"registry_schema": "cubicle.reader-registry.v1",
"commit": "bdfdc584"
}
},
"draw_rules": {
"by_verdict": {
"PROVEN": "solid",
"NOT_PROVEN": "none",
"UNGRADEABLE": "none"
}
},
"script_functions": {
"ema": {
"arity": "2..2",
"returns": "number"
},
"sma": {
"arity": "2..2",
"returns": "number"
},
"rsi": {
"arity": "1..2",
"returns": "number"
},
"high": {
"arity": "1..1",
"returns": "number"
},
"low": {
"arity": "1..1",
"returns": "number"
},
"range": {
"arity": "2..2",
"returns": "window"
},
"atr": {
"arity": "1..1",
"returns": "number"
},
"vwap": {
"arity": "0..0",
"returns": "number"
},
"shift": {
"arity": "2..2",
"returns": "number"
},
"stdev": {
"arity": "2..2",
"returns": "number"
},
"highest": {
"arity": "2..2",
"returns": "number"
},
"lowest": {
"arity": "2..2",
"returns": "number"
},
"cross_over": {
"arity": "2..2",
"returns": "truth"
},
"cross_under": {
"arity": "2..2",
"returns": "truth"
},
"abs": {
"arity": "1..1",
"returns": "number"
},
"sign": {
"arity": "1..1",
"returns": "number"
},
"min": {
"arity": "2..2",
"returns": "number"
},
"max": {
"arity": "2..2",
"returns": "number"
},
"clamp": {
"arity": "3..3",
"returns": "number"
},
"if": {
"arity": "3..3",
"returns": "number"
},
"exp_move": {
"arity": "1..2",
"returns": "number"
},
"stretch": {
"arity": "1..1",
"returns": "number"
},
"range_regime": {
"arity": "1..1",
"returns": "number"
},
"trades_closed": {
"arity": "1..1",
"returns": "number"
},
"wins_last": {
"arity": "1..1",
"returns": "number"
},
"sum_r_last": {
"arity": "1..1",
"returns": "number"
}
}
}release 4: a leaf · the inclusion proof · head 0x70ca62614037642b…