
    zi              	          d Z ddlZddlZdZddedededefd	Zed
k(  rddl	Z	e	j                  dd Zes1 e ej                  ddgddd              e	j                  d       ed   ZdZdev r&ej#                  d      Zede Zeedz   d Zered   Znedd Z eeee      Z e ej                  edd             yy)u   
scope_check.py - 작업 범위(scope) 검증 verifier
audit-trail.jsonl에서 실제 변경 파일을 추출하여 예상 파일 목록과 대조
    Nz1/home/jay/workspace/memory/logs/audit-trail.jsonl expected_filestask_idaudit_trail_pathreturnc                    | sddgdS |r|nt         }	 t        |dd      5 }|j                         }ddd       t               }d}D ]@  }	|	j                         }	|	s	 t        j                  |	      }
|
j                  d      |k7  rBdD ]  }|
j                  |      }t        |t              rG|D ]A  }t        |t              s|j!                  t"        j$                  j'                  |             C kt        |t              s||j!                  t"        j$                  j'                  |              |
j                  d      }t        |t              s|j!                  t"        j$                  j'                  |             C |s#d| dg}|r|j)                  d| d       d|dS | D ch c]!  }t"        j$                  j'                  |      # }}t+        ||z
        }dt-        |       ddt-        |       dg}|r|j)                  d| d       |sd|dS |D ]  }|j)                  d|         d|dS # 1 sw Y   xY w# t        $ r dd	| gdcY S t        $ r)}dd
t        |      j                   d| gdcY d}~S d}~ww xY w# t        j                  $ r	 |dz  }Y ow xY wc c}w )u  
    audit-trail.jsonl에서 task_id에 해당하는 실제 변경 파일을 추출하고,
    expected_files와 대조하여 범위 이탈 여부를 검증합니다.

    Args:
        expected_files: 변경이 허용된 파일 경로 목록
        task_id: 검사 대상 task ID
        audit_trail_path: audit-trail.jsonl 파일 경로
                          (기본값: /home/jay/workspace/memory/logs/audit-trail.jsonl)

    Returns:
        {"status": "PASS"|"WARN"|"SKIP", "details": [...]}
    SKIPu7   No expected files specified — scope check is optionalstatusdetailsrzutf-8)encodingNWARNu,   audit-trail 부재로 범위 검증 불가: u3   audit-trail 읽기 실패로 범위 검증 불가: z: r      r   )fileschanged_filesfilez3No changed files found in audit-trail for task_id=''(z! line(s) failed to parse as JSON)z
Expected: z fileszActual: PASSzUnexpected: )DEFAULT_AUDIT_TRAIL_PATHopen	readlinesFileNotFoundErrorOSErrortype__name__setstripjsonloadsJSONDecodeErrorget
isinstanceliststraddospathnormpathappendsortedlen)r   r   r   
trail_pathflineseactual_filesparse_errorslineentrykeyvaluesingler   normalized_expected
unexpectedr)   s                     >/home/jay/workspace/teams/dev1/qc/verifiers.bak/scope_check.pyverifyr<      s     .g-hii%5!;SJ
*cG4 	"KKME	" LL 7zz|	JJt$E
 99Y7* . 	:CIIcNE%& >A!!S)$(()9)9!)<=> E3'  !1!1%!89	: 6"fc"RWW--f56376 H	QRSTNNQ|n,MNO W55 >LL 0 0 3LL '::;J S,-.f5
3|$%V,G
 <.(IJK W55 .dV,-. 11M	" 	" 
FzlST
 	
  
MdSTgN^N^M__abcadef
 	

  ## 	AL	8  MsQ   I II !J6&J<II J)J1JJJJ98J9__main__r   r	   z@Usage: scope_check.py <task_id> [audit_trail_path] -- <file> ...r
   F   )ensure_asciiindentz--)r   )__doc__r    r(   r   r%   r&   dictr<   r   sysargvargsprintdumpsexit_task_id_audit_trail_pathindexsep_idx_middle	_expectedresult     r;   <module>rR      s  
  	N [24 [2# [2 [2d [2| z
 88AB<DDJJ!/q.rs"	
 	AwH t|**T"q/1'	 '
H	Ix):;F	*$**V%
:;A rQ   