
    3i                    X   d Z ddlmZ ddlZddlZddlZddlmZmZ ddlm	Z	  e	e
      j                         j                  d   Z ee      ej                  vr"ej                  j!                  d ee             ddlmZmZ ddlmZ d	Zdd
ZddZdddZedk(  r e e             y)u  cycle_advancer dry-run CLI entry.

task-2488 Phase B PoC. fixture에서 evidence를 로드하여
:class:`CycleAdvancer`를 호출하고 draft md만 생성한다. 실제
``.done`` / ``.escalate`` / ``.fail`` 파일이나 dispatch 호출은 절대 수행하지
않는다.

Usage::

    python3 tools/poc/cycle_advancer_dry_run.py \
        --task-id task-2485 \
        --fixture-dir tools/poc/cycle_advancer/fixtures \
        --output-dir memory/poc/cycle_advancer \
        --fixed-timestamp 2026-05-08T00:00:00Z

Determinism:
    timestamp 우선순위는 ``--fixed-timestamp`` > ``CYCLE_ADVANCER_FIXED_TS``
    환경변수 > 현재 UTC. 테스트는 ``--fixed-timestamp``를 지정한다.
    )annotationsN)datetimetimezone)Path   )CycleAdvancerload_fixture)write_draftCYCLE_ADVANCER_FIXED_TSc                    | r| S t         j                  j                  t              }|r|S t	        j
                  t        j                        j                  d      }|j                  d      S )u3  timestamp 결정 규칙을 한 곳에서 관리한다.

    우선순위:
        1. ``--fixed-timestamp`` CLI 값.
        2. ``CYCLE_ADVANCER_FIXED_TS`` 환경변수.
        3. 현재 UTC (마이크로초 제외, ``Z`` 접미사).

    Returns:
        ISO8601 + ``Z`` 형식의 timestamp 문자열.
    r   )microsecondz%Y-%m-%dT%H:%M:%SZ)
osenvironget_FIXED_TS_ENVr   nowr   utcreplacestrftime)	cli_value	env_valuer   s      7/home/jay/workspace/tools/poc/cycle_advancer_dry_run.py_resolve_timestampr   )   sX     

}-I
,,x||
$
,
,
,
;C<<,--    c                     t        j                  dd      } | j                  ddd       | j                  ddt        d	
       | j                  ddt        d
       | j                  dddt         d       | S )u"   CLI 인자 파서를 생성한다.cycle_advancer_dry_runu   cycle_advancer PoC dry-run. fixture evidence를 입력으로 받아 draft md만 생성합니다 (실제 dispatch / .done 생성 금지).)progdescriptionz	--task-idTuK   source task_id (예: task-2485). fixture/{task-id}.json을 로드합니다.)requiredhelpz--fixture-diruP   fixture 디렉토리. 격리된 사본만 두며 실제 memory/events 미사용.)r   typer    z--output-diru0   draft md 출력 디렉토리 (없으면 생성).z--fixed-timestampNu5   deterministic timestamp (ISO8601 + Z). 미지정 시 u     환경변수 또는 현재 UTC.)defaultr    )argparseArgumentParseradd_argumentr   r   )parsers    r   build_arg_parserr'   =   s    $$%SF Z  
 _	   ?	   Co=?	   Mr   c                   t               }|j                  |       }|j                  j                         }|j                  j                         }t        |j                        }t        ||j                        }t               }|j                  |      }|j                  |||      }	t        |	|      }
t        d|
        t        dj                  |	j                  |	j                   |	j"                  |	j$                               y)u   CLI entry point.

    Args:
        argv: 테스트용 argument list (``None``이면 ``sys.argv[1:]``).

    Returns:
        프로세스 종료 코드.
    )evidenceanalysisgenerated_atz([cycle_advancer/v1-mock] draft written: z_  source_task_id={src} -> proposed_task_id={dst} (classification={cls}, chairman_required={cr}))srcdstclscrr   )r'   
parse_argsfixture_dirresolve
output_dirr   fixed_timestampr	   task_idr   analyzebuild_draft_payloadr
   printformatsource_task_idproposed_task_idclassificationchairman_required)argvr&   argsr1   r3   r+   r)   advancerr*   payloadwritten_paths              r   mainrC   b   s     FT"D((002K..0J%d&:&:;LK6HH)H**! + G
 w
3L	4\N
CD		99?&&((&&((	 :@ :
 r   __main__)r   z
str | Nonereturnstr)rE   zargparse.ArgumentParser)N)r>   zlist[str] | NonerE   int)__doc__
__future__r   r#   r   sysr   r   pathlibr   __file__r2   parents_WORKSPACE_ROOTrF   pathinserttools.poc.cycle_advancerr   r	   &tools.poc.cycle_advancer.output_writerr
   r   r   r'   rC   __name__
SystemExit r   r   <module>rV      s   ( #  	 
 '  x.((*2215sxx'HHOOAs?+, @ > *.("J$N z
TV
 r   