
    Zi'                         d Z ddlZddlmc mZ ddlZddl	Z	ddl
mZ  ed      ZdedefdZ eded	z  d
z  dz  dz        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)u2  
test_critical_gap_false_positive_2506.py — task-2506 회귀 테스트

회장 명시 15건 (10 false-positive + 5 true-positive) 검증.
- False-positive: critical_gap fix 후 PASS여야 함
- True-positive: 기존 룰 유지 — FAIL이어야 함

수정 대상: teams/shared/verifiers/critical_gap.py
    N)Pathz/home/jay/workspacenamepathc                    t         j                  j                  | |      }||j                  t	        d|       t         j                  j                  |      }|t        j                  | <   |j                  j                  |       |S )NzFailed to load module spec for )		importlibutilspec_from_file_locationloaderImportErrormodule_from_specsysmodulesexec_module)r   r   specmodules       M/home/jay/workspace/tests/regression/test_critical_gap_false_positive_2506.py_load_moduler      sr    >>11$=D|t{{*;D6BCC^^,,T2FCKKKKF#M    critical_gap_t2506teamsshared	verifierszcritical_gap.pyc                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)uS   FP1: '- 우선순위: critical' 단독 줄 → PASS (메타 정보, 이슈 아님).u   - 우선순위: critical
ztask-fp1.mdutf-8encodingztask-fp1report_pathstatusPASS==z%(py1)s == %(py4)spy1py4u>   FP1 메타 우선순위 라벨이 이슈로 오인식: status=
, details=details
>assert %(py6)spy6N
write_textcritical_gapverifystr
@pytest_ar_call_reprcompare	_saferepr_format_assertmsggetAssertionError_format_explanation	tmp_pathbodyreportresult@py_assert0@py_assert3@py_assert2@py_format5@py_format7s	            r   test_fp_priority_label_onlyrA   &   s    'D%F
dW-  V EF( v v%  v         &    IPXIYHZZdekeoeopyezd{|     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)un   FP2: '## task: [CRITICAL] 20개 컨셉' 헤더 → PASS (태스크 제목 우선순위 표기, 이슈 아님).u7   ## task: [CRITICAL] 20개 컨셉
본문 내용 없음.
ztask-fp2.mdr   r   ztask-fp2r   r   r    r!   r#   r$   uH   FP2 태스크 헤더 우선순위 표기가 이슈로 오인식: status=r'   r(   r)   r*   Nr+   r7   s	            r   $test_fp_task_priority_bracket_headerrC   1   s    FD%F
dW-  V EF( v v%  v         &    SSYZbScRddnouoyoy  {D  pE  oF  	G     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)u_   FP3: '1. critical path 분석' 번호 목록 항목 → PASS (방법론 용어, 이슈 아님).u,   1. critical path 분석
2. 일정 최적화
ztask-fp3.mdr   r   ztask-fp3r   r   r    r!   r#   r$   uB   FP3 critical path 방법론 용어가 이슈로 오인식: status=r'   r(   r)   r*   Nr+   r7   s	            r   test_fp_critical_path_in_listrE   <   s    ;D%F
dW-  V EF( v v%  v         &    MVT\M]L^^hioisist}i~h  	A     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)uw   FP4: SCQA 프레임 상황절 내 'critical chain 중복 투입 문제' → PASS (상황 묘사, 이슈 마커 아님).u3   ### S 상황
- critical chain 중복 투입 문제
ztask-fp4.mdr   r   ztask-fp4r   r   r    r!   r#   r$   uA   FP4 SCQA 상황절 critical chain이 이슈로 오인식: status=r'   r(   r)   r*   Nr+   r7   s	            r   test_fp_critical_chain_in_scqarG   G   s    BD%F
dW-  V EF( v v%  v         &    LFS[L\K]]ghnhrhrs|h}g~     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)un   FP5: 보고서 첫줄 '- 작업 레벨: critical' 단독 → PASS (디스패치 레벨 메타, 이슈 아님).u;   - 작업 레벨: critical
작업이 완료되었습니다.
ztask-fp5.mdr   r   ztask-fp5r   r   r    r!   r#   r$   u?   FP5 작업 레벨 메타 라벨이 이슈로 오인식: status=r'   r(   r)   r*   Nr+   r7   s	            r   *test_fp_dispatch_level_critical_first_linerI   R   s    JD%F
dW-  V EF( v v%  v         &    J&QYJZI[[eflfpfpqzf{e|}     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)u}   FP6: '## [CRITICAL]' 대괄호 prefix만 있는 헤더 (이슈 본문 없음) → PASS (분류 헤더, 본문 이슈 없음).u   ## [CRITICAL]
작업 완료.
ztask-fp6.mdr   r   ztask-fp6r   r   r    r!   r#   r$   uF   FP6 분류 헤더 [CRITICAL]이 미해결 이슈로 오인식: status=r'   r(   r)   r*   Nr+   r7   s	            r   $test_fp_bracket_critical_only_headerrK   ]   s    ,D%F
dW-  V EF( v v%  v         &    QQWX`QaPbblmsmwmw  yB  nC  mD  	E     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)um   FP7: '이 작업은 critical thinking이 필요하다' 평문 문장 → PASS (일반 용어, 이슈 아님).u@   이 작업은 critical thinking이 필요하다.
분석 완료.
ztask-fp7.mdr   r   ztask-fp7r   r   r    r!   r#   r$   uE   FP7 'critical thinking' 일반 문구가 이슈로 오인식: status=r'   r(   r)   r*   Nr+   r7   s	            r    test_fp_critical_thinking_phraserM   h   s    OD%F
dW-  V EF( v v%  v         &    PPVW_P`Oaaklrlvlv  xA  mB  lC  	D     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)ua   FP8: '- level: critical' 메타 라벨 → PASS (severity와 다른 level 필드, 이슈 아님).u(   - level: critical
작업 정상 완료.
ztask-fp8.mdr   r   ztask-fp8r   r   r    r!   r#   r$   uC   FP8 'level: critical' 메타 라벨이 이슈로 오인식: status=r'   r(   r)   r*   Nr+   r7   s	            r   test_fp_level_critical_metarO   s   s    7D%F
dW-  V EF( v v%  v         &    NfU]N^M__ijpjtjtu~j  jA  	B     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)ue   FP9: 'dispatch level critical' 명시 → PASS (디스패치 시스템 레벨 태그, 이슈 아님).u5   dispatch level critical
모든 항목 처리 완료.
ztask-fp9.mdr   r   ztask-fp9r   r   r    r!   r#   r$   uD   FP9 'dispatch level critical' 태그가 이슈로 오인식: status=r'   r(   r)   r*   Nr+   r7   s	            r   &test_fp_dispatch_level_critical_inlinerQ   ~   s    DD%F
dW-  V EF( v v%  v         &    OvV^O_N``jkqkukuv  lA  kB  	C     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)ui   FP10: '발사 우선순위: critical' → PASS (발사/배포 우선순위 메타 정보, 이슈 아님).u4   발사 우선순위: critical
배포 준비 완료.
ztask-fp10.mdr   r   z	task-fp10r   r   r    r!   r#   r$   uK   FP10 '발사 우선순위: critical' 메타가 이슈로 오인식: status=r'   r(   r)   r*   Nr+   r7   s	            r    test_fp_launch_priority_criticalrS      s    CD&F
dW-  #f+ FF( v v%  v         &    VV\]eVfUggqrxr|r|  ~G  sH  rI  	J     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)ub   TP1: '## CRITICAL 이슈 1건 발견\n- token 누락' → FAIL (실제 이슈 헤더 + 미해결).u.   ## CRITICAL 이슈 1건 발견
- token 누락
ztask-tp1.mdr   r   ztask-tp1r   r   FAILr!   r#   r$   uF   TP1 CRITICAL 이슈 헤더 + 미해결이 감지되지 않음: status=r'   r(   r)   r*   Nr+   r7   s	            r   (test_tp_critical_issue_section_with_bodyrV      s    =D%F
dW-  V EF( v v%  v         &    QQWX`QaPbblmsmwmw  yB  nC  mD  	E     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)uc   TP2: '## 발견된 이슈\n- severity: critical' → FAIL (severity는 이슈 자체를 나타냄).u)   ## 발견된 이슈
- severity: critical
ztask-tp2.mdr   r   ztask-tp2r   r   rU   r!   r#   r$   u?   TP2 'severity: critical' 이슈가 감지되지 않음: status=r'   r(   r)   r*   Nr+   r7   s	            r   /test_tp_severity_critical_meta_in_issue_sectionrX      s    8D%F
dW-  V EF( v v%  v         &    J&QYJZI[[eflfpfpqzf{e|}     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)u`   TP3: '## 미해결 항목\n- CRITICAL: 누락' → FAIL (CRITICAL 리스트 마커 + 미해결).u'   ## 미해결 항목
- CRITICAL: 누락
ztask-tp3.mdr   r   ztask-tp3r   r   rU   r!   r#   r$   u=   TP3 'CRITICAL: 누락' 마커가 감지되지 않음: status=r'   r(   r)   r*   Nr+   r7   s	            r   #test_tp_unresolved_in_issue_sectionrZ      s    6D%F
dW-  V EF( v v%  v         &    HxHXGYYcdjdndnoxdycz{     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)uf   TP4: '## 발견된 이슈\n- ![security-critical] 발견' → FAIL (보안 배지 마커 + 미해결).u2   ## 발견된 이슈
- ![security-critical] 발견
ztask-tp4.mdr   r   ztask-tp4r   r   rU   r!   r#   r$   uA   TP4 '![security-critical]' 배지가 감지되지 않음: status=r'   r(   r)   r*   Nr+   r7   s	            r   test_tp_security_critical_badger\      s    AD%F
dW-  V EF( v v%  v         &    LFS[L\K]]ghnhrhrs|h}g~     r   c                    d}| dz  }|j                  |d       t        j                  dt        |            }|d   }d}||k(  }|st	        j
                  d	|fd
||f      t	        j                  |      t	        j                  |      dz  }t	        j                  d|d    d|j                  d             dz   d|iz  }t        t	        j                  |            dx}x}}y)uu   TP5: '## CRITICAL 이슈\n- 보안 누락' (RESOLVED 마커 없음) → FAIL (이슈 있으나 해결 확인 없음).u#   ## CRITICAL 이슈
- 보안 누락
ztask-tp5.mdr   r   ztask-tp5r   r   rU   r!   r#   r$   uE   TP5 CRITICAL 이슈 + RESOLVED 없음이 감지되지 않음: status=r'   r(   r)   r*   Nr+   r7   s	            r   #test_tp_critical_no_resolved_markerr^      s    2D%F
dW-  V EF( v v%  v         &    PPVW_P`Oaaklrlvlv  xA  mB  lC  	D     r   )__doc__builtins@py_builtins_pytest.assertion.rewrite	assertionrewriter0   importlib.utilr   r   pathlibr   	WORKSPACEr/   r   r-   rA   rC   rE   rG   rI   rK   rM   rO   rQ   rS   rV   rX   rZ   r\   r^    r   r   <module>ri      s       
 &'	s $  ("[03DDr   