[gw0] darwin -- Python 3.12.12 /Users/cao/.pyenv/versions/3.12.12/bin/python3.12 tests/test_verdict_recovery.py:397: in test_guard_disabled_setting_bypasses_check dispatched, _mock_add_plan = _run_dispatch_with_guard( self = tests/test_verdict_recovery.py:330: in _run_dispatch_with_guard dispatched = dispatch_llm_verdicts(trading_day="2026-04-18", dry_run=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NfsReadStatus = buyback_doc = {'account_nick': 'cuixia', 'buy_filled_at': datetime.datetime(2026, 4, 16, 14, 0), 'dispatch': 'verdict-buy_back-ulcc-cuixia', 'status': 'holding', ...} call_count = [2] col = dispatch_llm_verdicts = find_side_effect = .find_side_effect at 0x12a0013a0> k = 'VERDICT_RECYCLE_SELL_GUARD_ENABLED' mock_add_plan = mock_db = mock_db_ctx = mock_read_nfs = mock_scheduler = mock_settings = positions = [{'account_nick': 'cuixia', 'avg_entry_price': 4.0, 'current_price': 4.5, 'days_held': 4, ...}] recycle_guard_hit = True settings_overrides = {'VERDICT_RECYCLE_SELL_GUARD_ENABLED': False} v = False verdicts = [{'account_nick': 'cuixia', 'action': 'exit', 'buy_price': 4.0, 'confidence': 0.85, ...}] rtrader/utils/daily_summary_llm.py:10073: in dispatch_llm_verdicts from rtrader.services.channel_scalp_service import ChannelScalpRepository as _CSR_demote DBAccounting = _DBA_conv = _ET = _act = 'exit' _action = 'exit' _action_counts = {'exit': 1} _action_end = 360 _close_dt = None _conv_job = None _db_conv = _dedup_query = {'account_nick': 'cuixia', 'date': {'$gte': datetime.datetime(2026, 6, 6, 0, 0), '$lt': datetime.datetime(2026, 6, 7, 0, 0)}, 'status': {'$in': ['pending', 'processing', 'review']}, 'symbol': 'ULCC'} _dedup_statuses = ['pending', 'processing', 'review'] _dropped_unbought = 0 _hay = 'test exit ' _is_option_plan = False _kept = [{'account_nick': 'cuixia', 'action': 'exit', 'buy_price': 4.0, 'confidence': 0.85, ...}] _keyword_hit = False _minutes_to_close = 999 _mode = 'DRY-RUN' _now_et = datetime.datetime(2026, 6, 6, 8, 12, 7, 748085, tzinfo=) _pre_close_min_confidence = 0.75 _pre_close_mode = False _reason_l = 'test exit' _resilient_forced = 0 _resilient_score_floor = 1.0 _score_hit = False _score_val = 0.0 _signals_l = '' _summary = '1×exit' _v = {'account_nick': 'cuixia', 'action': 'exit', 'buy_price': 4.0, 'confidence': 0.85, ...} account_nick = 'cuixia' action = 'exit' actionable = [{'account_nick': 'cuixia', 'action': 'exit', 'buy_price': 4.0, 'confidence': 0.85, ...}] add_bonus_budget = {} add_budget_override = 0.0 add_trading_plan = buy_actions = [] buyback_quote_cache = {} col = confidence = 0.85 current_price = 4.5 delisted_symbols = set() dispatched = [] dry_run = True existing = None get_per_order_budget = is_option = False is_position_locked = key = 'ULCC|cuixia' linked_enabled = False local_date_str = '2026-06-06' locks_col = math = max_bonus_mult = 1.0 min_confidence = 0.6 mongo = p = {'account_nick': 'cuixia', 'avg_entry_price': 4.0, 'current_price': 4.5, 'days_held': 4, ...} panic_active = False plan_date = '2026-06-06' plan_params = {'account_nick': 'cuixia', 'action_end': 360, 'alpaca_mode': 'live', 'broker_backend': 'alpaca', ...} plan_status = 'pending' pnl_pct = 12.5 pos = {'account_nick': 'cuixia', 'avg_entry_price': 4.0, 'current_price': 4.5, 'days_held': 4, ...} pos_key = 'ULCC|cuixia' pos_map = {'ULCC|cuixia': {'account_nick': 'cuixia', 'avg_entry_price': 4.0, 'current_price': 4.5, 'days_held': 4, ...}} positions = [{'account_nick': 'cuixia', 'avg_entry_price': 4.0, 'current_price': 4.5, 'days_held': 4, ...}] profit_protect_enabled = False pytz = qty = 100 query_days = ['2026-06-06', '2026-04-18'] reason = 'test exit' resilience_budget = {} resilience_enabled = False scheduler = seen = {'ULCC|cuixia': {'account_nick': 'cuixia', 'action': 'exit', 'buy_price': 4.0, 'confidence': 0.85, ...}} send_discord_async = skipped = [] spy_panic_lock = None symbol = 'ULCC' symbols = None today_date = datetime.date(2026, 6, 6) trading_day = '2026-04-18' trim_pct = 0.5 unlock_position = v = {'account_nick': 'cuixia', 'action': 'exit', 'buy_price': 4.0, 'confidence': 0.85, ...} verdict_query = {'trading_day': {'$in': ['2026-06-06', '2026-04-18']}} verdicts = [{'account_nick': 'cuixia', 'action': 'exit', 'buy_price': 4.0, 'confidence': 0.85, ...}] rtrader/services/channel_scalp_service.py:99: in from rtrader.services.critical_sell_genome import ( E ModuleNotFoundError: No module named 'rtrader.services.critical_sell_genome' ABC = Any = typing.Any ChannelState = DBAccounting = Deque = typing.Deque Dict = typing.Dict Enum = List = typing.List Optional = typing.Optional Set = typing.Set Tuple = typing.Tuple ZoneInfo = __annotations__ = {} __builtins__ = __cached__ = '/Users/cao/robinhood/rtrader/services/__pycache__/channel_scalp_service.cpython-312.pyc' __doc__ = '\nChannel Regime Scalp Service.\n\nAuto-scalps by entering when R² (20-bar window on 5-min bars) crosses above\nthe e...ob → TradeJournal (trade_type="scalp",\n dispatch="scalp-...") → Daily Summary LLM ("Scalp Trades" strategy group).\n' __file__ = '/Users/cao/robinhood/rtrader/services/channel_scalp_service.py' __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x12bd83a70> __name__ = 'rtrader.services.channel_scalp_service' __package__ = 'rtrader.services' __spec__ = ModuleSpec(name='rtrader.services.channel_scalp_service', loader=<_frozen_importlib_external.SourceFileLoader object at 0x12bd83a70>, origin='/Users/cao/robinhood/rtrader/services/channel_scalp_service.py') _pdt_force = abstractmethod = annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216) asdict = asyncio = collections = dataclass = date = datetime = detect_channel = dt_time = field = fields = free_buying_power = get_stock_realtime_price = has_dtbp_for = is_pdt_restricted = json = lock_position = logger = )]> math = os = redis_local = ring = scheduler = sentry_sdk = settings = shutil = subprocess = threading = time = timedelta = timezone = trim_profitable_for_room = trim_scalp_excess_for_room = unlock_position = uuid =