
    TDj<                    N    d dl mZ d dlZd dlmZ ddZddZd Zd Z	d Z
d ZdS )    )annotationsN)trader_desk_shadow_runnerBTCwatch_shadowlong10010198104c                8    | ||dd||dd||dddg |dk    d	d	d
S )Nz78.00trend_retest_continuationretest_limit_zone)lowhighstyle108test)tp1tp2
managementtiny_live_candidateF)coinaction	directionscoresetup
entry_zone	stop_losstake_profitblockersrequires_preflightlive_order_allowedmainnet_signed_action )r   r   r   r   r   stopr   s          'tests/test_trader_desk_shadow_runner.py_planr'      sP    ,!4:MNN"5GG$(==#!&      2026-06-30T00:00:00+00:00c                T    | | nt                      g} ddd|ddddddd	| d
d
dd
d
dS )Nokr   ztrader_desk.v1"read_only_professional_trader_deskrisk_onr      &keep_shadow_watch_and_collect_evidence)tiny_live_candidatesr   blocked	next_stepF)schema_version	timestampmodemarket_regimesummaryplansr"   r#   )statussourcereportr"   r#   )r'   r8   r4   s     r&   _payloadr=      sm    &EEUWWIE."8&011QR  bJ  K  K"'%*	
 	
 $!&  r(   c                   |dz  }|                      t          d|           |                      t          d|dz             |                      t          d|dz             |                      t          d|dz             |                      t          d	|d
z             |                      t          d|dz             |                      t          d|dz             |S )Ntrader_desk_shadowRUNTIME_DIR
STATE_PATH
state.json	DECISIONSdecision_journal.jsonlOUTCOMESoutcome_journal.jsonlHEALTHruntime_health.jsonlLATEST_REPORTtrader_desk_latest.jsonPID_PATHz
runner.pid)setattrrunner)monkeypatchtmp_pathruntime_dirs      r&   _patch_runtimerQ   -   s    11K{;;;kL.HIII[;S-STTT
K:Q,QRRR+8N*NOOO?X1XYYY
K,,FGGGr(   c                   t          | |          }|dz  dz  }|                     t          dd            t          j        d|          }|d         dk    sJ |d	         d
k    sJ |d         d
k    sJ |d         dk    sJ |d         du sJ |d         du sJ |d         du sJ |                                sJ t          j        |                                          }|d         d         du sJ |d         d         d         du sJ d |dz                                                                  D             }d |dz                                                                  D             }|d         d         dk    sJ |d         d         du sJ |d         d         dk    sJ t          j        |dz                                            }d|d          v sJ |d         du sJ d S )!NfinancerJ   build_reportc                     t                      S Nr=   _kwargss    r&   <lambda>zXtest_shadow_runner_journals_decisions_opens_shadow_and_exports_finance.<locals>.<lambda><   
    (** r(   r   coinsfinance_outputr9   r+   	decisionsr.   openedclosedr   
paper_onlyTr"   Fr#   safety_boundaryexecution_allowedtrade_intentsdashboard_executes_ordersc                6    g | ]}t          j        |          S r$   jsonloads.0lines     r&   
<listcomp>zZtest_shadow_runner_journals_decisions_opens_shadow_and_exports_finance.<locals>.<listcomp>K   s"    pppdD!!pppr(   rD   c                6    g | ]}t          j        |          S r$   ri   rl   s     r&   ro   zZtest_shadow_runner_journals_decisions_opens_shadow_and_exports_finance.<locals>.<listcomp>L   "    nnnT
4  nnnr(   rF   eventdesk_decisionshadow_openrB   r   	positions)	rQ   rL   rM   run_onceexistsrj   rk   	read_text
splitlines)	rN   rO   rP   finance_targetresultfinance_payloadr`   outcomesstates	            r&   Ftest_shadow_runner_journals_decisions_opens_shadow_and_exports_financer   9   sa    h77K	),EEN0L0LMMM_8NKKKF(t####+!####(q    (q    ,4''''&'50000)*e3333  """""j!9!9!;!;<<O,-.ABeKKKK?+A./JKuTTTTpp{=U/U.`.`.b.b.m.m.o.opppInnk<S.S-^-^-`-`-k-k-m-mnnnHQ< O3333Q<,-6666A;w=0000Jl2==??@@EE+&&&&&$&&&&&&r(   c                   t          | |          }|                     t          dd            |dz  dz  }t          j        d|          }|d         dk    sJ |                     t          dd	            t          j        d|          }|d
         dk    sJ |d         d         dk    sJ |d         d         dk    sJ d |dz                                                                  D             }|d         }|d         dk    sJ |d         dk    sJ |d         du sJ t          j        |dz                                            }d|d         vsJ d S )NrT   c                     t                      S rV   rW   rX   s    r&   rZ   zCtest_shadow_runner_closes_shadow_position_on_stop.<locals>.<lambda>W   r[   r(   rS   rJ   r\   r]   ra   r.   c                 H    t          t          dddd          gd          S )N97r
   r   )r   r   r%   r   z2026-06-30T00:05:00+00:00r<   )r=   r'   rX   s    r&   rZ   zCtest_shadow_runner_closes_shadow_position_on_stop.<locals>.<lambda>_   s6    (%Dt$TY*Z*Z*Z)[  hC  D  D  D r(   rb   shadow_performanceclosed_hypotheseslossesc                6    g | ]}t          j        |          S r$   ri   rl   s     r&   ro   zEtest_shadow_runner_closes_shadow_position_on_stop.<locals>.<listcomp>f   rq   r(   rF   rr   shadow_closereasonshadow_stop_hitr#   FrB   r   ru   )rQ   rL   rM   rv   rx   ry   rj   rk   )	rN   rO   rP   rz   firstsecondr}   closer~   s	            r&   1test_shadow_runner_closes_shadow_position_on_stopr   U   s    h77K0L0LMMM	),EENO(>JJJE?a 	D  	D  
 _8NKKKF(q    &'(;<AAAA&'1Q6666nnk<S.S-^-^-`-`-k-k-m-mnnnHRLE>^++++?/////()U2222Jl2==??@@Ek*******r(   c                p   t          | |          }|                     t          j        dd            d }|                     t          d|           t          j        g d          dk    sJ t          j        |                                j                  }|d         dk    sJ |d	         d         d
         du sJ |d	         d         d         du sJ |d	         d         d         du sJ d |dz  	                                
                                D             }|d         d         dk    sJ d S )Nsleepc                    d S rV   r$   )_secondss    r&   rZ   zTtest_shadow_runner_main_records_degraded_without_live_side_effects.<locals>.<lambda>q   s    t r(   c                      t          d          )NzNo route to host)ConnectionErrorrX   s    r&   brokenzRtest_shadow_runner_main_records_degraded_without_live_side_effects.<locals>.brokens   s    0111r(   rT   )z--coinsr   z--iterations1z--jsonz--no-export-financer   r9   degradedresultsentries_blockedTrc   r#   Fc                6    g | ]}t          j        |          S r$   ri   rl   s     r&   ro   zVtest_shadow_runner_main_records_degraded_without_live_side_effects.<locals>.<listcomp>~   s"    kkk4djkkkr(   rH   r   rr   shadow_tick_degraded)rQ   rL   rM   timemainrj   rk   
readouterroutrx   ry   )rN   rO   capsysrP   r   payloadhealths          r&   Btest_shadow_runner_main_records_degraded_without_live_side_effectsr   o   sc    h77KW.C.CDDD2 2 2 777;___``deeeeej**,,011G8
****9a !23t;;;;9a .$66669a !89UBBBBkkK:P,P+[+[+]+]+h+h+j+jkkkF":g"8888888r(   )r   r   r   r   r	   r
   r   )Nr)   )
__future__r   rj   	src.toolsr   rM   r'   r=   rQ   r   r   r   r$   r(   r&   <module>r      s    " " " " " "  9 9 9 9 9 9   "   (	 	 	' ' '8+ + +49 9 9 9 9r(   