Ë
   /|<Z§`8ã                  ód  — d Z ddlmZ ddlZddlmc mZ ddl	m
Z
 ddlZ e
e«      j                  «       j                  d   Zedz  dz  dz  Zed	z  ed
z  edz  edz  dz  dz  edz  dz  dz  fZed
z  ZdZdd„Zdd„Zej,                  j/                  ded„ ¬«      dd„«       Zdd„Zdd„Zdd„Zy)uæ  Gate pro autoritu plÃ¡nu: dokÃ¡zat deterministickÃ½m testem, Å¾e prÃ¡vÄ› jeden
soubor je autoritativnÃ­ a Å¾e ostatnÃ­ jsou oznaÄ�eny jako archiv.

ProÄ� tento soubor existuje
--------------------------
`AGENTS.md` dÅ™Ã­ve tvrdil, Å¾e ``tests/test_plan_authority.py`` â€žhlÃ­dÃ¡, aby
ukazatel vÃ½Å¡e nezrostal". `git log --all -- tests/test_plan_authority.py` byl
prÃ¡zdnÃ½ â€” soubor nikdy nebyl zapsÃ¡n ani smazÃ¡n. Dokumentace tedy odkazovala na
ochranu, kterÃ¡ neexistovala, a nikdo si toho nevÅ¡iml, protoÅ¾e odkaz na
neexistujÃ­cÃ­ test nevypadÃ¡ jako chyba.

Rozsah:
  * importuje POUZE stdlib + `pytest` (ne `yaml`, ten tu nenÃ­ potÅ™eba),
  * NEimportuje nic z `src/cyberbrain26` â€” pravidlo zadÃ¡nÃ­, stejnÃ© jako
    `test_kilo_agent_policy.py`,
  * Ä�te pouze soubory v repozitÃ¡Å™i, nic nezapisuje.

Hranice toho, co tento test umÃ­
-------------------------------
Kontroluje **declarativnÃ­** oznaÄ�enÃ­. UmÃ­ zjistit, Å¾e hlaviÄ�ka chybÃ­ nebo Å¾e
na ni nÄ›kdo odkÃ¡Å¾e jako na autoritu. ** neumÃ­ zjistit, Å¾e nÄ›kdo vytvoÅ™il
`ROADMAP_V8.md`, nebo Å¾e plÃ¡n `-v2.md` sÃ¡m neodpovÃ­dÃ¡ realitÄ› â€” to je
posouzenÃ­, ne automatickÃ¡ kontrola.

Odkazy: `AGENTS.md` Â§â€žPlÃ¡n a jeho autorita", `.kilo/plans/CyberBrain26cil-031026-v2.md`.
é    )ÚannotationsN)ÚPathé   z.kiloÚplanszCyberBrain26cil-031026-v2.mdzROADMAP_V5.mdzROADMAP_V6.mdzROADMAP_V7.mdzCyberBrain26cil-031026.mdz+1791036626945-roadmap-v8-a-plan-do-konce.mdzstatus: supersededc            	     óä  — t         j                  }  | «       }|s²t        j                  dt         › �«      dz   dt	        j
                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  | «      t        j                  |«      dœz  }t        t        j                  |«      «      ‚dx} }t         j                  } d} | |¬«      }|j                  } |«       }|sçt        j                  d«      d	z   dt	        j
                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  | «      t        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      d
œz  }t        t        j                  |«      «      ‚dx} x}x}x}}y)u6   AutoritativnÃ­ plÃ¡n musÃ­ existovat a bÃ½t Ä�itelnÃ½.u   autoritativnÃ­ plÃ¡n chybÃ­: úD
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.is_file
}()
}ÚAUTHORITATIVE_PLAN©Úpy0Úpy2Úpy4Núutf-8©Úencodingu!   autoritativnÃ­ plÃ¡n je prÃ¡zdnÃ½zŠ
>assert %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.read_text
}(encoding=%(py4)s)
}.strip
}()
})r   r   r   Úpy6Úpy8Úpy10)r	   Úis_fileÚ
@pytest_arÚ_format_assertmsgÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚ	read_textÚstrip)Ú@py_assert1Ú@py_assert3Ú@py_format5Ú@py_assert5Ú@py_assert7Ú@py_assert9Ú@py_format11s          ú;/home/oem/CyberBrain26-unified/tests/test_plan_authority.pyÚtest_authoritative_plan_existsr'   7   s±  € ä×%Ñ%ð Ñ%Ó'ð Ñ'ô ïé ð (Ô(:Ð';Ð<÷ô ïé ÷ò ïé ô ÷ ñ ïé ô ÷ ò ïé ð &÷ ð ïé ð (÷ ÷ ò ïé ÷õ ô ×'Ñ'ð °ð Ñ'°Ô9ð Ð9×?Ñ?ð Ñ?ÓAð ÑAô ïé ð 	,÷ô ïé ÷ò ïé ô ÷ ñ ïé ô ÷ ò ïé ð (÷ ð ïé ð 29÷ ð ïé ð :÷ ð ïé ð @÷ ð ïé ð B÷ ÷ ò ïé ÷÷ ô ó    c                 ó  — t         j                  d¬«      } t        | v}|sèt        j                  d|fdt        | f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddt        j                  «       v st        j                  | «      rt        j                  | «      nddœz  }t        j                  d«      d	z   d
|iz  }t        t        j                  |«      «      ‚d}y)uø   JedinÃ©, co odliÅ¡uje `-v2.md` od ostatnÃ­ch, je absence znaÄ�ky.

    Kdyby se na nÄ›j nÄ›kdo pÅ™eklepem pÅ™idal `status: superseded`, plÃ¡n by
    ztratil prÃ¡vÄ› tu vlastnost, pro kterou je autoritativnÃ­, a nic v repu by
    to neodhalilo.
    r   r   ©únot in)z%(py0)s not in %(py2)sÚSUPERSEDED_MARKERÚtext©r   r   u…   autoritativnÃ­ plÃ¡n nesmÃ­ nÃ©st znaÄ�ku 'status: superseded' â€” prÃ¡vÄ› jeho nepÅ™Ã­tomnost ho odliÅ¡uje od archivnÃ­ch dokumentÅ¯ú
>assert %(py4)sr   N)r	   r   r,   r   Ú_call_reprcomparer   r   r   r   r   r   r   )r-   r   Ú@py_format3r!   s       r&   Ú0test_authoritative_plan_is_not_marked_supersededr2   A   sË   € ô ×'Ñ'°Ð'Ó9€DÜ DÐ(÷ ïé óÔ D÷ ò ïé ÷ò ïé ô ÷ ñ ïé ô ÷ ó ïé ÷ò ïé ð %)÷ ñ ïé ð %)÷ ÷ ïé ð	M÷÷ ö ïé ÷ô r(   Údocumentc                ó   — | j                   S )N)Úname)Úps    r&   ú<lambda>r7   O   s
   € ÈÏÉ€ r(   )Úidsc                ó  — | j                   } |«       }|s¦t        j                  d| › �«      dz   dt        j                  «       v st        j
                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }t        t        j                  |«      «      ‚dx}}| j                  d¬«      }t        |v }|süt        j                  d|fd	t        |f«      d
t        j                  «       v st        j
                  t        «      rt        j                  t        «      nd
dt        j                  «       v st        j
                  |«      rt        j                  |«      nddœz  }t        j                  | j                  › dt        › d�«      dz   d|iz  }t        t        j                  |«      «      ‚d}t        j                  }||v }|�st        j                  d|fd||f«      dt        j                  «       v st        j
                  t        «      rt        j                  t        «      ndt        j                  |«      dt        j                  «       v st        j
                  |«      rt        j                  |«      nddœz  }t        j                  | j                  › dt        j                  › d�«      dz   d|iz  }t        t        j                  |«      «      ‚dx}}y)uE   KaÅ¾dÃ½ archivnÃ­ plÃ¡n musÃ­ v hlaviÄ�ce nÃ©st `status: superseded`.u   archivnÃ­ dokument chybÃ­: r   r3   r
   Nr   r   ©Úin)z%(py0)s in %(py2)sr,   r-   r.   u    chybÃ­ znaÄ�ka 'u7   ' â€” bez nÃ­ se nerozliÅ¡Ã­ od autoritativnÃ­ho plÃ¡nur/   r   )z,%(py2)s
{%(py2)s = %(py0)s.name
} in %(py4)sr	   u$    neodkazuje na autoritativnÃ­ plÃ¡n u,    â€” odkaz je vÄ›cnÃ¡ oprava, ne jen znaÄ�kaú
>assert %(py6)sr   )r   r   r   r   r   r   r   r   r   r   r,   r0   r5   r	   )r3   r   r    r!   r-   r1   Ú@py_format7s          r&   Ú+test_archived_document_is_marked_supersededr>   O   sM  € ð ×ÑÐGÑÓÐGÑ×GÖGÐ!<¸X¸JÐG×G×G×G×G×GÓGˆ8×G×GÓGˆ8×G×GÔGÐ×G×GÒGÐ×G×G×G×G×GÒGØ×Ñ wÐÓ/€DÜ Ð$÷ ïé óÔ ÷ ò ïé ÷ò ïé ô ÷ ñ ïé ô ÷ ó ïé ÷ò ïé ð !%÷ ñ ïé ð !%÷ ÷ ïé ð �=‰=ˆ/Ð*Ô+<Ð*=ð ><ð 	<÷÷ ö ïé ÷ó ô ×"Ñ"ð Ð" dÐ*÷ ð ïé óÐ" d÷ ò ïé ÷ò ïé ô ÷ ñ ïé ô ÷ ò ïé ð #÷ ñ ïé ÷ò ïé ð '+÷ ñ ïé ð '+÷ ÷ ïé ð �=‰=ˆ/Ð=Ü×"Ñ"Ð
#Ð#Oð	Q÷÷ ö ïé ÷ö r(   c                 óv  — t         dz  } | j                  } |«       }|s£t        j                  d«      dz   dt	        j
                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }t        t        j                  |«      «      ‚dx}}| j                  d¬«      }d	}||v }|s¯t        j                  d
|fd||f«      t        j                  |«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      nddœz  }t        j                  d«      dz   d|iz  }t        t        j                  |«      «      ‚dx}}d}|j                  d	«      d   dd }||v}|s‚t        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }t        j                  d«      dz   d|iz  }	t        t        j                  |	«      «      ‚dx}x}}y)u›  `AGENTS.md` nesmÃ­ citovat hlÃ­daÄ�e, kterÃ½ v repu nenÃ­.

    Toto je pÅ™esnÄ› ta tÅ™Ã­da chyby, kterou tento soubor existuje aby nÃ¡pravil:
    `AGENTS.md` dlouho uvÃ¡dÄ›l `tests/test_plan_authority.py` jako strÃ¡Å¾ce
    autority plÃ¡nu, zatÃ­mco soubor v repu nebyl. Jakmile je soubor skuteÄ�nÄ›
    zapsÃ¡n, toto tvrzenÃ­ je pravdivÃ© â€” a test ho mÃ¡ hlÃ­dat dÃ¡l, protoÅ¾e smazat
    se dÃ¡ znovu.
    z	AGENTS.mdu   AGENTS.md chybÃ­r   Ú	agents_mdr
   Nr   r   ztests/test_plan_authority.pyr:   )z%(py1)s in %(py3)sr-   )Úpy1Úpy3u3   AGENTS.md mÃ¡ uvÃ¡dÄ›t tento test jako existujÃ­cÃ­z
>assert %(py5)sÚpy5Ú
NEEXISTUJEr   éÈ   r*   )z%(py1)s not in %(py4)s)rA   r   ut   AGENTS.md stÃ¡le tvrdÃ­, Å¾e tento test v repu nenÃ­ â€” od tÃ©to chvÃ­le soubor existuje, a tvrzenÃ­ je nepravdivÃ©r<   r   )Ú	REPO_ROOTr   r   r   r   r   r   r   r   r   r   r0   Úsplit)
r@   r   r    r!   r-   Ú@py_assert0Ú@py_assert2Ú@py_format4Ú@py_format6r=   s
             r&   Ú9test_agents_md_does_not_claim_a_guard_that_does_not_existrL   ^   sÃ  € ô ˜KÑ'€IØ×ÑÐ2ÑÓÐ2Ñ×2Ö2Ð 2×2×2×2×2×2Ó2ˆ9×2×2Ó2ˆ9×2×2Ô2Ð×2×2Ò2Ð×2×2×2×2×2Ò2Ø×Ñ¨ÐÓ0€DØ)ð Ð)¨TÐ1÷ ïé óÐ)¨T÷ ñ ïé ð *÷ ñ ïé ÷ò ïé ð .2÷ ñ ïé ð .2÷ ÷ ïé ð 	>÷÷ ö ïé ÷õ ð
 ð ˜tŸz™zÐ*HÓIÈ!ÑLÈTÈcÐRð ˆ<ÐRÐR÷ ïé óˆ<ÐR÷ ñ ïé ð ÷ ð ïé ð  S÷ õ ïé ð	5÷÷ ö ïé ÷÷ ð r(   c                 ó”  — t         j                  }  | «       }|s«t        j                  d«      dz   dt	        j
                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  | «      t        j                  |«      dœz  }t        t        j                  |«      «      ‚dx} }y)uF   `ROADMAP_V6.md` je citovanÃ½ zdroj invariantÅ¯; nesmÃ­ zmizet tiÅ¡nÄ›.u_   ROADMAP_V6.md je citovanÃ½ z test_kilo_agent_policy.py; smazÃ¡nÃ­ by tiÅ¡nÄ› zruÅ¡ilo ty citacer   ÚCITED_BY_POLICY_TESTr
   N)
rN   r   r   r   r   r   r   r   r   r   )r   r    r!   s      r&   Útest_roadmap_v6_remains_presentrO   u   s£   € ä×'Ñ'ð Ñ'Ó)ð Ñ)ô ïé ð	%÷ô ïé ÷ò ïé ô  ÷ ñ ïé ô  ÷ ò ïé ð (÷ ð ïé ð *÷ ÷ ò ïé ÷ö r(   c                 óÜ  — d} t         | z  }|j                  } |«       }| }|s¿t        j                  d«      dz   dt	        j
                  «       v st        j                  t         «      rt        j                  t         «      ndt        j                  | «      t        j                  |«      t        j                  |«      dœz  }t        t        j                  |«      «      ‚dx} x}x}x}}y)u%  `ROADMAP_V8.md` nikdy nebyl zapsÃ¡n; jeho tvrzenÃ­ o schvÃ¡lenÃ­ je plan.

    `AGENTS.md` o tom mluvÃ­ vÃ½slovnÄ›. Kdyby se soubor objevil, musel by bÃ½t
    v `SUPERSEDED_DOCUMENTS` nebo oznaÄ�en jako autorita â€” jinak by existoval
    vedle plÃ¡nu a nikdo by nevÄ›dÄ›l, kterÃ½ platÃ­.
    zROADMAP_V8.mdu‚   ROADMAP_V8.md existuje, ale nenÃ­ v SUPERSEDED_DOCUMENTS ani oznaÄ�en jako autoritativnÃ­ â€” autorita plÃ¡nu je teÄ� dvojznaÄ�nÃ¡zS
>assert not %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = (%(py0)s / %(py2)s).exists
}()
}rF   )r   r   rC   Úpy7N)
rF   Úexistsr   r   r   r   r   r   r   r   )r   r    Ú@py_assert4Ú@py_assert6Ú@py_assert8Ú@py_format9s         r&   Útest_there_is_no_roadmap_v8rW   }   sÝ   € ð ,ð ”	˜OÑ+ð Ð+×3Ñ3ð Ñ3Ó5ð Ð5Ð5ð Ñ5ô ïé ð	G÷ô ïé ÷ò ïé ô ÷ ñ ïé ô ÷ ò ïé ð ,÷ ð ïé ð 4÷ ð ïé ð 6÷ ÷ ò ïé ÷÷ ô r(   )ÚreturnÚNone)r3   r   rX   rY   )Ú__doc__Ú
__future__r   Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   Úpathlibr   ÚpytestÚ__file__ÚresolveÚparentsrF   r	   ÚSUPERSEDED_DOCUMENTSrN   r,   r'   r2   ÚmarkÚparametrizer>   rL   rO   rW   © r(   r&   ú<module>ri      sî   ðñõ6 #ç  „ Õ ã á�‹N×"Ñ"Ó$×,Ñ,¨QÑ/€	à Ñ(¨7Ñ2Ð5SÑSÐ ð
 �ÑØ�ÑØ�ÑØ�Ñ˜'Ñ!Ð$?Ñ?Ø�Ñ˜'Ñ!Ð$QÑQðÐ ð ! ?Ñ2Ð à(Ð óóð ‡�×Ñ˜Ð%9Ñ?OÐÓPòó Qðóó.ô
r(   