from control_plane.trading_studio.management.commands.export_cohort_failure_context_v1 import Command def test_failure_labels_are_explicit_and_precedence_is_deterministic(): cases = [ ({"net_pnl": -1}, {"return_1_bars_bps": 5}, "GOOD_SIGNAL_BAD_MONETIZATION"), ({"net_pnl": 1}, {"winner_negative_first": True}, "RECOVERY_DEPENDENT"), ({}, {"mae_bps": -25}, "HIGH_MAE_ENTRY"), ({}, {"return_1_bars_bps": -5}, "WRONG_DIRECTION"), ({}, {"return_1_bars_bps": 0, "return_5_bars_bps": 5}, "LATE_SIGNAL"), ({"net_pnl": 1}, {"return_1_bars_bps": 5}, "GOOD_ENTRY"), ({}, {}, "NO_EDGE"), ] for ledger, deq, expected in cases: assert Command._label(ledger, deq)[0] == expected def test_rows_preserve_raw_ledger_deq_genome_context_and_rescue(): payload = { "cohort_id": "cohort", "dataset_version_id": "dataset", "dataset_sha256": "hash", "strategies": [{ "ordinal": 1, "membership_id": "member", "strategy_version_id": "strategy", "runner_name": "runner", "genome": {"combo": "g"}, "feature_triples": [], "folds": [{"fold": "F1", "scenarios": [{ "qualification_run_id": "run", "scenario": "BASE", "summary": {"rescue": {"recovered": True}}, "deq_samples": [{"identity": "trade", "entry_bar": 2, "entry_execution_price": 10, "take_profit_price": 11, "context": {"regime": "x"}, "deq": {"return_1_bars_bps": 5}}], }]}], }], } row = Command._rows(payload)[0] assert row["direction"] == "LONG" assert '"return_1_bars_bps":5' in row["raw_deq_json"] assert '"combo":"g"' in row["genome_json"] assert '"regime":"x"' in row["context_json"] assert '"recovered":true' in row["rescue_json"]