§
    v¿j?  ã                  ón  — d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZmZmZmZmZ  eej        d¦  «        rej                             d¬¦  «          eej        d¦  «        rej                             d¬¦  «         ej                             ej                             ej                             e¦  «        dd¦  «        ¦  «        Zej                             ed	¦  «        Zej                             ed
¦  «        Zej                             ed¦  «        Zej                             edd¦  «        Zej                             edd¦  «        ZdZ h d£Z!d/d„Z"d0d„Z#d1d„Z$d2d„Z%d3d„Z&d4d „Z'd5d#„Z(d6d%„Z)d7d'„Z*d8d9d+„Z+d:d-„Z,e-d.k    r ej.         e,¦   «         ¦  «         dS dS );aø  
Semantic Blast Radius & Documentation Invariants Analyzer for FreeExile.
Calculates cascading downstream impact across:
1. Documentation Index & Bidirectional Cross-References (related_docs, related_code)
2. Multilingual Wiki Mirroring (wiki/vi <-> wiki/en <-> wiki/zh)
3. Domain Entity & Mechanism Extraction (Quests, Zones, Acts, Currencies, Combat formulas)
4. Game Design Matrix Database (SQLite entities and cross_relationships triples)
5. Dual-Stack Catalogs & Server/Client Code Synchronizations
é    )ÚannotationsN)ÚAnyÚDictÚListÚOptionalÚSetÚTupleÚreconfigureúutf-8©Úencodingz..ÚdocsÚwikizdocumentation_index.jsonÚdatazgame_design_matrix.dbz.doc_blast_radius_ack.jsoni  >   údocs/architecture/GDD_BIBLE.mdú&wiki/vi/QUESTS_AND_MILESTONES_SPECS.mdú,docs/standards/ENGINEERING_STANDARDS_2026.mdú.wiki/vi/POE2_GAMEPLAY_AND_ZONE_ARCHITECTURE.mdú0docs/standards/GLOBAL_LOCALIZATION_DICTIONARY.mdú9docs/standards/DESIGN_PIPELINE_AND_CROSS_DEPT_WORKFLOW.mdú;docs/security/INDEPENDENT_SECURITY_AND_ANTICHEAT_CHARTER.mdÚtargetÚstrÚreturnc                ó  — |                       dd¦  «                             ¦   «         }t          j                             |¦  «        r9t          j                             |t          ¦  «                              dd¦  «        }|S )Nú\ú/)ÚreplaceÚstripÚosÚpathÚisabsÚrelpathÚPROJECT_ROOT)r   Únorms     ú8c:\Projects\FreeExile\tools\analysis\doc_blast_radius.pyÚ_normalize_pathr'   .   sb   € Ø�>Š>˜$ Ñ$Ô$×*Ò*Ñ,Ô,€DÝ	„w‡}‚}�TÑÔð FÝŒw�Š˜t¥\Ñ2Ô2×:Ò:¸4ÀÑEÔEˆØ€Kó    úDict[str, float]c                 óf  ‡— t           j                             t          ¦  «        si S 	 t	          t          dd¬¦  «        5 } t          j        | ¦  «        }t          j        ¦   «         Šˆfd„|                     ¦   «         D ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S # t          $ r i cY S w xY w)NÚrr   r   c                ó8   •— i | ]\  }}‰|z
  t           k     ¯||“ŒS © )ÚACK_TTL_SECONDS)Ú.0ÚkÚvÚnows      €r&   ú
<dictcomp>z"_get_ack_store.<locals>.<dictcomp><   s-   ø€ ÐOÐOÐO™T˜Q °S¸1±W½Ò5NÐ5N�A�qÐ5NÐ5NÐ5Nr(   )
r    r!   ÚexistsÚACK_STORE_PATHÚopenÚjsonÚloadÚtimeÚitemsÚ	Exception)Úfr   r2   s     @r&   Ú_get_ack_storer=   5   s	  ø€ ÝŒ7�>Š>�.Ñ)Ô)ð Øˆ	ðÝ•. #°Ð8Ñ8Ô8ð 	P¸AÝ”9˜Q‘<”<ˆDÝ”)‘+”+ˆCØOÐOÐOÐO T§Z¢Z¡\¤\ÐOÑOÔOð	Pð 	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøõ ð ð ð Øˆ	ˆ	ˆ	ðøøøs6   ©B! Á ABÂB! ÂBÂB! ÂBÂB! Â!B0Â/B0ÚNonec                óp  — t          ¦   «         }t          j        ¦   «         || <   t          j        t          j                             t          ¦  «        d¬¦  «         	 t          t          dd¬¦  «        5 }t          j	        ||d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S # t          $ r Y d S w xY w)NT)Úexist_okÚwr   r   é   )Úindent)r=   r9   r    Úmakedirsr!   Údirnamer5   r6   r7   Údumpr;   )r   Ústorer<   s      r&   Ú	_save_ackrH   A   só   € ÝÑÔ€EÝ”I‘K”K€Eˆ&�MÝ„K•”—’¥Ñ/Ô/¸$Ð?Ñ?Ô?Ð?ðÝ•. #°Ð8Ñ8Ô8ð 	*¸AÝŒI�e˜Q qÐ)Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øåð ð ð Øˆˆðøøøs6   ÁB' Á5BÂB' ÂBÂB' Â!BÂ"B' Â'
B5Â4B5úDict[str, Any]c                 óþ   — t           j                             t          ¦  «        si S 	 t	          t          dd¬¦  «        5 } t          j        | ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S # t          $ r i cY S w xY w)Nr+   r   r   )r    r!   r4   ÚINDEX_JSON_PATHr6   r7   r8   r;   )r<   s    r&   Ú_load_doc_indexrL   L   sÇ   € ÝŒ7�>Š>�/Ñ*Ô*ð Øˆ	ðÝ•/ 3°Ð9Ñ9Ô9ð 	 ¸QÝ”9˜Q‘<”<ð	 ð 	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øåð ð ð Øˆ	ˆ	ˆ	ðøøøs4   ¨A- ¿A ÁA- Á A$Á$A- Á'A$Á(A- Á-A<Á;A<Útarget_normÚ	doc_indexú&Tuple[List[str], List[str], List[str]]c           	     óP  — g }g }g }|                      dg ¦  «        }d}|D ]v}|                      dd¦  «                             dd¦  «        }|| k    s@t          j                             |¦  «        t          j                             | ¦  «        k    r|} nŒw|rŒ|                      dg ¦  «        D ]3}	|	                     dd¦  «        }
|
| k    r|                     |
¦  «         Œ4|                      dg ¦  «        D ]+}|                     |                     dd¦  «        ¦  «         Œ,|D ]…}|                      dd¦  «                             dd¦  «        }|| k    rŒ3d	„ |                      dg ¦  «        D ¦   «         }| |v s|r,|                      d
¦  «        |v r|                     |¦  «         Œ†t          t          t          |¦  «        ¦  «        ¦  «        t          t          t          |¦  «        ¦  «        ¦  «        t          t          t          |¦  «        ¦  «        ¦  «        fS )z;Returns (related_docs, reverse_related_docs, related_code).Ú	documentsNÚrel_pathÚ r   r   Úrelated_docsÚrelated_codec                ó:   — g | ]}|                      d d¦  «        ‘ŒS )r   r   )r   )r/   Úxs     r&   ú
<listcomp>z/_find_frontmatter_relations.<locals>.<listcomp>r   s&   € ÐMÐMÐM¨A�1—9’9˜T 3Ñ'Ô'ÐMÐMÐMr(   Údoc_id)	Úgetr   r    r!   ÚbasenameÚappendÚsortedÚlistÚset)rM   rN   rT   Úreverse_docsrU   rQ   Útarget_entryÚdocÚr_pathÚrdÚclean_rdÚrcÚrd_lists                r&   Ú_find_frontmatter_relationsrh   V   s:  € à €LØ €LØ €Là—’˜k¨2Ñ.Ô.€IØ-1€Làð ð ˆØ—’˜ RÑ(Ô(×0Ò0°°sÑ;Ô;ˆØ�[Ò Ð ¥B¤G×$4Ò$4°VÑ$<Ô$<ÅÄ×@PÒ@PÐQ\Ñ@]Ô@]Ò$]Ð$]ØˆLØˆEð %^ð ð 7Ø×"Ò" >°2Ñ6Ô6ð 	.ð 	.ˆBØ—z’z $¨Ñ,Ô,ˆHØ˜;Ò&Ð&Ø×#Ò# HÑ-Ô-Ð-øØ×"Ò" >°2Ñ6Ô6ð 	7ð 	7ˆBØ×Ò §
¢
¨4°Ñ 5Ô 5Ñ6Ô6Ð6Ð6ð ð (ð (ˆØ—’˜ RÑ(Ô(×0Ò0°°sÑ;Ô;ˆØ�[Ò Ð ØØMÐM°·²¸ÈÑ1LÔ1LÐMÑMÔMˆØ˜'Ð!Ð! lÐ!°|×7GÒ7GÈÑ7QÔ7QÐU\Ð7\Ð7\Ø×Ò Ñ'Ô'Ð'øå•$•s˜<Ñ(Ô(Ñ)Ô)Ñ*Ô*­Fµ4½¸LÑ8IÔ8IÑ3JÔ3JÑ,KÔ,KÍVÕTXÕY\Ð]iÑYjÔYjÑTkÔTkÑMlÔMlÐlÐlr(   ú	List[str]c                ó6  ‡— g }|                       d¦  «        }t          |¦  «        dk    r®|d         dk    r¢|d         dv r˜|d         Šd                     |dd…         ¦  «        }ˆfd	„dD ¦   «         }|D ]a}d
|› d|› �}t          j                             t          j                             t          |¦  «        ¦  «        r|                     |¦  «         Œbn˜|                      d¦  «        rƒt          j         	                    | ¦  «        }dD ]aŠd
‰› d|› �}t          j                             t          j                             t          |¦  «        ¦  «        r|                     |¦  «         Œbt          t          t          |¦  «        ¦  «        ¦  «        S )z:Find corresponding files across wiki/vi, wiki/en, wiki/zh.r   é   r   r   é   )ÚviÚenÚzhrB   Nc                ó    •— g | ]
}|‰k    ¯|‘ŒS r-   r-   )r/   ÚlÚlangs     €r&   rX   z3_find_multilingual_counterparts.<locals>.<listcomp>�   s   ø€ ÐBÐBÐB˜Q¸¸Tº	¸	�q¸	¸	¸	r(   zwiki/zdocs/)ÚsplitÚlenÚjoinr    r!   r4   r$   r\   Ú
startswithr[   r]   r^   r_   )	rM   ÚcounterpartsÚpartsÚsub_pathÚother_langsÚolÚcandÚ	base_namerr   s	           @r&   Ú_find_multilingual_counterpartsr~   y   s‘  ø€ à €LØ×Ò˜cÑ"Ô"€Eå
ˆ5�z„z�Q‚€˜5 œ8 vÒ-Ð-°%¸´(Ð>PÐ2PÐ2PØ�QŒxˆØ—8’8˜E ! " "œIÑ&Ô&ˆØBÐBÐBÐBÐ"4ÐBÑBÔBˆØð 	*ð 	*ˆBØ*˜2Ð*Ð* Ð*Ð*ˆDÝŒw�~Š~�bœgŸlšl­<¸Ñ>Ô>Ñ?Ô?ð *Ø×#Ò# DÑ)Ô)Ð)øð	*ð 
×	Ò	 Ñ	(Ô	(ð *å”G×$Ò$ [Ñ1Ô1ˆ	Ø&ð 	*ð 	*ˆDØ-˜4Ð-Ð- )Ð-Ð-ˆDÝŒw�~Š~�bœgŸlšl­<¸Ñ>Ô>Ñ?Ô?ð *Ø×#Ò# DÑ)Ô)Ð)øå•$•s˜<Ñ(Ô(Ñ)Ô)Ñ*Ô*Ð*r(   ÚcontentúSet[str]c                ó  — t          ¦   «         }g d¢}|D ]:}t          j        || t          j        ¦  «        D ]}|                     |¦  «         ŒŒ;g d¢}|                      ¦   «         }|D ]}||v r|                     |¦  «         Œ|S )z8Extract IDs and core domain keywords from markdown text.)z\b(quest_[a-z0-9_]+)\bz\b(zone_[a-z0-9_]+)\bz\b(npc_[a-z0-9_]+)\bz\b(ACT_[I|V|X]+[A-Z0-9_]*)\b)u   huyá»…n áº£nh bá»™úi-frameÚtax_rateu   thuáº¿ sÃ nõ   huyáº¿t há»“n tháº¡chõ
   cá»• cá»‘tu   u minh cá»‘t Ä‘inhÚ2pcztwo-phase commitzremove-onlyzstarter-finisherÚ
affix_tier)r_   ÚreÚfindallÚ
IGNORECASEÚaddÚlower)r   ÚentitiesÚpatternsÚpÚmatchÚkeywordsÚcontent_lowerÚkws           r&   Ú_extract_semantic_entitiesr”   ‘   s¸   € å™œ€Hðð ð €Hð ð  ð  ˆÝ”Z  7­B¬MÑ:Ô:ð 	 ð 	 ˆEØ�LŠL˜ÑÔÐÐð	 ðð ð €Hð —M’M‘O”O€MØð ð ˆØ�ÐÐØ�LŠL˜ÑÔÐøà€Or(   r�   c           	     ó\  ‡— |sg S g }t           t          g}|D �]ë}t          j                             |¦  «        sŒ#t          j        |¦  «        D �]²\  Š}}t          ˆfd„dD ¦   «         ¦  «        rŒ#|D �]‹}|                     d¦  «        sŒt          j                             t          j         	                    ‰|¦  «        t          ¦  «                             dd¦  «        }|| k    rŒw	 t          t          j         	                    ‰|¦  «        ddd¬	¦  «        5 }	|	                     ¦   «                              ¦   «         }
d
d
d
¦  «         n# 1 swxY w Y   d}|D ]s}|                     ¦   «         |
v r[|dz  }|                     d¦  «        s*|                     d¦  «        s|                     d¦  «        r|                     |¦  «          nŒt|dk    r|                     |¦  «         �Œ|# t"          $ r Y �Œ‰w xY w�Œ´�Œít%          t'          t)          |¦  «        ¦  «        ¦  «        S )zIScans all markdown files in docs/ and wiki/ for shared critical entities.c              3  ó    •K  — | ]}|‰v V — Œ	d S ©Nr-   )r/   ÚigÚroots     €r&   ú	<genexpr>z,_scan_semantic_affinities.<locals>.<genexpr>Ã   s'   øè è € ÐcÐc "�2˜�:ÐcÐcÐcÐcÐcÐcr(   )z.gitÚnode_modulesÚ__pycache__Údesign_requestsz.mdr   r   r+   r   Úignore©r   ÚerrorsNr   rl   Úquest_Úzone_Úact_rB   )Ú	DOCS_ROOTÚ	WIKI_ROOTr    r!   r4   ÚwalkÚanyÚendswithr#   ru   r$   r   r6   ÚreadrŒ   rv   r\   r;   r]   r^   r_   )rM   r�   Ú
affinitiesÚ	scan_dirsÚs_dirÚdirsÚfilesr<   Úfile_relÚsrcÚtextÚshared_countÚentr™   s                @r&   Ú_scan_semantic_affinitiesr´   ·   s…  ø€ àð Øˆ	à€JÝ�IÐ&€Iàð ñ ˆÝŒw�~Š~˜eÑ$Ô$ð 	ØÝ!#¤¨¡¤ð 	ñ 	ÑˆD�$˜ÝÐcÐcÐcÐcÐ(bÐcÑcÔcÑcÔcð ØØð ñ �Ø—z’z %Ñ(Ô(ð ØÝœ7Ÿ?š?­2¬7¯<ª<¸¸aÑ+@Ô+@Å,ÑOÔO×WÒWÐX\Ð^aÑbÔb�Ø˜{Ò*Ð*ØðÝ�bœgŸlšl¨4°Ñ3Ô3°SÀ7ÐS[Ð\Ñ\Ô\ð 2Ð`cØ"Ÿxšx™zœz×/Ò/Ñ1Ô1˜ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð $%�LØ'ð &ð &˜ØŸ9š9™;œ;¨$Ð.Ð.Ø(¨AÑ-˜LØ"Ÿ~š~¨hÑ7Ô7ð &¸3¿>º>È'Ñ;RÔ;Rð &ÐVY×VdÒVdÐekÑVlÔVlð &Ø *× 1Ò 1°(Ñ ;Ô ;Ð ;Ø % øØ# qÒ(Ð(Ø"×)Ò)¨(Ñ3Ô3Ð3ùøÝ ð ð ð Ø‘Hðøøøñ'ñ	õ2 •$•s˜:‘”Ñ'Ô'Ñ(Ô(Ð(s7   Ã,1G0Ä'E	ÅG0ÅEÅG0ÅEÅBG0Ç0
G>	Ç=G>	úTuple[List[str], List[str]]c                ó€  — g }g }t           j                             t          ¦  «        �r¨	 t	          j        t          ¦  «        }|                     ¦   «         }| D �]Q}|                     d¦  «        ra|                     d|f¦  «         | 	                    ¦   «         }|r3| 
                    d|› d|d         › d|d         › d|d	         › �¦  «         Œy|                     d
¦  «        rX|                     d|f¦  «         | 	                    ¦   «         }|r*| 
                    d|› d|d         › d|d         › �¦  «         Œæ|                     d¦  «        rV|                     d|f¦  «         |                     ¦   «         }|r)| 
                    d|› dt          |¦  «        › d�¦  «         �ŒS|                     ¦   «          n# t          $ r Y nw xY wdddddddœ}| D ]�}|                     ¦   «         }	|                     ¦   «         D ]e\  }
}|
|	v r\|D ]Y}t           j                             t           j                             t$          |¦  «        ¦  «        r| 
                    |¦  «         ŒZŒfŒ‘t'          t)          t+          |¦  «        ¦  «        ¦  «        t'          t)          t+          |¦  «        ¦  «        ¦  «        fS )z0Checks database impact and catalog counterparts.r¡   z<SELECT title, act_id, zone_id FROM quests WHERE quest_id = ?zQuest 'z' (r   u   ) táº¡i Act rl   z, Zone rB   r¢   z0SELECT name, act_id FROM zones WHERE zone_id = ?zZone 'ÚACT_zLSELECT relation_type, target_id FROM cross_relationships WHERE source_id = ?zAct 'u   ' cÃ³ u/    liÃªn káº¿t triples trong cross_relationships.)zserver/world/quest_engine.pyzserver/world/quest_catalog.py)zserver/world/zone_engine.pyz'server/world/encounter_zones_catalog.py)úserver/world/economy_catalog.pyz(client/webapp/js/data/economy_catalog.js)r¸   z!server/trade/consignment_vault.py)zserver/world/combat_engine.pyz+client/webapp/js/core/isometric_renderer.js)ÚquestÚzoner…   rƒ   r„   r‚   )r    r!   r4   ÚDB_PATHÚsqlite3ÚconnectÚcursorrv   ÚexecuteÚfetchoner\   Úfetchallrt   Úcloser;   rŒ   r:   ru   r$   r]   r^   r_   )r�   Ú
db_impactsÚaffected_catalogsÚconnÚcurr³   ÚrowÚrelsÚcat_keywordsÚ	ent_lowerr“   Úpathsr�   s                r&   Ú_check_db_and_catalogsrÌ   Þ   sñ  € à€JØ#%Ðå	„w‡~‚~•gÑÔñ ð	Ý”?¥7Ñ+Ô+ˆDØ—+’+‘-”-ˆCØð yñ y�Ø—>’> (Ñ+Ô+ð yØ—K’KÐ ^ÐadÐ`fÑgÔgÐgØŸ,š,™.œ.�CØð iØ"×)Ò)Ð*g°CÐ*gÐ*g¸CÀ¼FÐ*gÐ*gÐPSÐTUÔPVÐ*gÐ*gÐ_bÐcdÔ_eÐ*gÐ*gÑhÔhÐhøØ—^’^ GÑ,Ô,ð 	yØ—K’KÐ RÐUXÐTZÑ[Ô[Ð[ØŸ,š,™.œ.�CØð YØ"×)Ò)Ð*W°3Ð*WÐ*W¸3¸q¼6Ð*WÐ*WÈsÐSTÌvÐ*WÐ*WÑXÔXÐXøØ—^’^ FÑ+Ô+ð yØ—K’KÐ nÐqtÐpvÑwÔwÐwØŸ<š<™>œ>�DØð yØ"×)Ò)Ð*w°#Ð*wÐ*w½SÀ¹Y¼YÐ*wÐ*wÐ*wÑxÔxÐxùØ�JŠJ‰LŒLˆLˆLøÝð 	ð 	ð 	ØˆDð	øøøð
 SØZØeØ\Ø!pØcðð €Lð ð 4ð 4ˆØ—I’I‘K”Kˆ	Ø%×+Ò+Ñ-Ô-ð 	4ð 	4‰IˆB�Ø�YˆˆØð 4ð 4�AÝ”w—~’~¥b¤g§l¢lµ<ÀÑ&CÔ&CÑDÔDð 4Ø)×0Ò0°Ñ3Ô3Ð3øøð		4õ •$•s˜:‘”Ñ'Ô'Ñ(Ô(­&µµcÐ:KÑ6LÔ6LÑ1MÔ1MÑ*NÔ*NÐNÐNs   «FG Ç
GÇGFÚackÚboolc                óŽ  ‡— t          | ¦  «        Št          j                             t          ‰                     dt          j        ¦  «        ¦  «        }t          ¦   «         }t          ‰|¦  «        \  }}}t          ‰¦  «        }t          ¦   «         }t          j                             |¦  «        r`	 t          |ddd¬¦  «        5 }	|	                     ¦   «         }
d d d ¦  «         n# 1 swxY w Y   t          |
¦  «        }n# t          $ r Y nw xY wt!          ‰|¦  «        }t#          |¦  «        \  }}t%          t'          t          ||z   |z   |z   ¦  «        ¦  «        ¦  «        }t%          t'          t          ||z   ¦  «        ¦  «        ¦  «        }t)          |¦  «        t)          |¦  «        z   }‰t*          v pt-          ˆfd„dD ¦   «         ¦  «        }‰                     d¦  «        sd	‰v sd
‰v rd}n2|s|dk    rd}n'|dk    st)          |¦  «        dk    rd}n|dk    rd}nd}|rt1          ‰¦  «         d}nt3          ¦   «         }‰|v }d}|dv rA|s?d}d‰› d|› dt)          |¦  «        › dt)          |¦  «        › dt)          |¦  «        › d‰› d�}n	d|› d|› d�}‰||||||||||t%          t'          |¦  «        ¦  «        |d œS )!Nr   r+   r   rž   rŸ   c              3  ó    •K  — | ]}|‰v V — Œ	d S r—   r-   )r/   ÚcdÚnorm_targets     €r&   rš   z+analyze_doc_blast_radius.<locals>.<genexpr>*  s(   øè è € Ð-pÐ-pÀB¨b°KÐ.?Ð-pÐ-pÐ-pÐ-pÐ-pÐ-pr(   )Ú	GDD_BIBLEÚ	STANDARDSÚCHARTERztests/Úscratchr�   ÚLOWé   ÚCRITICALrB   r   ÚHIGHrl   ÚMEDIUMTF)rÚ   rÙ   u(   [DOC BLAST RADIUS BLOCKED] TÃ i liá»‡u 'u   ' cÃ³ má»©c Ä‘á»™ rá»§i ro u    kÃ©o theo u    tÃ i liá»‡u, u    file code, vÃ  uq    rÃ ng buá»™c SQLite liÃªn Ä‘á»›i. Báº¯t buá»™c Agent cháº¡y 'python tools/analysis/doc_blast_radius.py --target uC    --ack' Ä‘á»ƒ Ä‘á»‘i soÃ¡t danh sÃ¡ch vÃ  má»Ÿ khÃ³a chá»‰nh sá»­a!u@   Ä�Ã£ thÃ´ng qua kiá»ƒm tra Semantic Doc Blast Radius (Rá»§i ro: z, Acknowledged: z).)r   Ú
risk_levelÚblockedÚacknowledgedÚupstream_and_related_docsÚreverse_dependent_docsÚmultilingual_counterpartsÚsemantic_affinitiesÚall_affected_docsÚaffected_code_catalogsÚdatabase_impactsÚextracted_entitiesÚreason)r'   r    r!   ru   r$   r   ÚseprL   rh   r~   r_   r4   r6   r©   r”   r;   r´   rÌ   r]   r^   rt   Ú	CORE_DOCSr§   rv   rH   r=   )r   rÍ   Ú
target_absrN   rT   r`   rU   rá   r�   r<   r   râ   rÃ   rÄ   rã   Úall_affected_codeÚtotal_dependentsÚis_corerÜ   rÞ   rG   rÝ   rç   rÒ   s                          @r&   Úanalyze_doc_blast_radiusrî     sÒ  ø€ Ý! &Ñ)Ô)€KÝ”—’�l¨K×,?Ò,?ÀÅRÄVÑ,LÔ,LÑMÔM€JåÑ!Ô!€IÝ/JÈ;ÐXaÑ/bÔ/bÑ,€L�, Ý ?ÀÑ LÔ LÐõ ™œ€HÝ	„w‡~‚~�jÑ!Ô!ð ð	Ý�j #°ÀÐIÑIÔIð #ÈQØŸ&š&™(œ(�ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #å1°'Ñ:Ô:ˆHˆHøÝð 	ð 	ð 	ØˆDð	øøøõ 4°KÀÑJÔJÐÝ$:¸8Ñ$DÔ$DÑ!€JÐ!å�t¥CØ�|Ñ#Ð&?Ñ?ÐBUÑUñ%ô %ñ  ô  ñ ô Ðõ �t¥C¨Ð7HÑ(HÑ$IÔ$IÑJÔJÑKÔKÐåÐ,Ñ-Ô-µÐ4EÑ0FÔ0FÑFÐØ�YÐ&Ðp­#Ð-pÐ-pÐ-pÐ-pÐJoÐ-pÑ-pÔ-pÑ*pÔ*p€Gð ×Ò˜hÑ'Ô'ð 	¨9¸Ð+CÐ+CÐGXÐ\gÐGgÐGgØˆ
ˆ
Ø	ð Ð$¨Ò)Ð)Øˆ
ˆ
Ø	˜QÒ	Ð	¥# j¡/¤/°AÒ"5Ð"5Øˆ
ˆ
Ø	˜QÒ	Ð	Øˆ
ˆ
àˆ
à
ð ,Ý�+ÑÔÐØˆˆåÑ Ô ˆØ" eÐ+ˆà€GØÐ)Ð)Ð)°,Ð)ØˆðK°{ð Kð KÐ_ið Kð KÝÐ.Ñ/Ô/ðKð KÝ?BÐCTÑ?UÔ?UðKð Kå�z‘?”?ðKð Kð ^iðKð Kð Kð 	ˆð AÐT^ð  Að  AÐp|ð  Að  Að  Aˆð Ø ØØ$Ø%1Ø".Ø%>Ø2Ø.Ø"3Ø&Ý$¥T¨(¡^¤^Ñ4Ô4Øðð ð s6   Â3D ÃC'ÃD Ã'C+Ã+D Ã.C+Ã/D Ä
DÄDÚintc                 ó–  — t          j        d¬¦  «        } |                      ddd¬¦  «         |                      ddd	gdd
¬¦  «         |                      ddd¬¦  «         |                      ¦   «         }t	          |j        |j        ¬¦  «        }|j        d	k    r&t          t          j
        |dd¬¦  «        ¦  «         �nt          d¦  «         t          d|d         › �¦  «         t          d|d         › �¦  «         t          d|d         rdnd› �¦  «         t          d|d         rdnd› �¦  «         |d          rzt          d!t          |d          ¦  «        › d"�¦  «         |d          D ]K}d#}||d$         v rd%}n&||d&         v rd'}n||d(         v rd)}n||d*         v rd+}t          d,|› |› �¦  «         ŒL|d-         rCt          d.t          |d-         ¦  «        › d"�¦  «         |d-         D ]}t          d/|› �¦  «         Œ|d0         rCt          d1t          |d0         ¦  «        › d"�¦  «         |d0         D ]}t          d2|› �¦  «         Œ|d3         rYt          d4t          |d3         ¦  «        › d"�¦  «         t          d5d6                     |d3         d d7…         ¦  «        › �¦  «         t          d8|d9         › �¦  «         d:S );Nz9Semantic Blast Radius & Documentation Invariants Analyzer)Údescriptionz--targetTz2Target markdown file path or concept ID to analyze)ÚrequiredÚhelpz--formatr±   r7   zOutput format)ÚchoicesÚdefaultró   z--ackÚ
store_truez:Acknowledge understanding and unlock target for 30 minutes)Úactionró   )rÍ   rB   )rC   Úensure_asciiu`   === BÃ�O CÃ�O PHÃ‚N TÃ�CH VÃ™NG áº¢NH HÆ¯á»žNG TÃ€I LIá»†U & NGá»® NGHÄ¨A (DOC BLAST RADIUS) ===u   Má»¥c tiÃªu        : r   u   Má»©c Ä‘á»™ rá»§i ro   : rÜ   u   Tráº¡ng thÃ¡i khÃ³a : rÝ   u   [BLOCKED] Ä�ANG Bá»Š KHÃ“Au   [ALLOWED] Ä�Ãƒ Má»ž KHÃ“Au   Ä�Ã£ duyá»‡t (Ack)  : rÞ   u   CÃ³u   ChÆ°arã   u+   
TÃ i liá»‡u kÃ©o theo cáº§n Ä‘á»‘i soÃ¡t (z):rS   rá   z [Wiki Mirror]rà   z [Reverse Ref]rß   z [Related Doc]râ   z [Shared Entity/Concept]z  - rä   u(   
Code Catalogs & Services liÃªn Ä‘á»›i (z  * rå   u)   
RÃ ng buá»™c SQLite Game Design Matrix (z  # ræ   u2   
Thá»±c thá»ƒ & CÆ¡ cháº¿ nháº­n diá»‡n Ä‘Æ°á»£c (z  z, é   u   
Chi tiáº¿t: rç   r   )ÚargparseÚArgumentParserÚadd_argumentÚ
parse_argsrî   r   rÍ   ÚformatÚprintr7   Údumpsrt   ru   )ÚparserÚargsÚresultÚdÚtagÚcÚimps          r&   Úmainr  ]  sr  € ÝÔ$Ð1lÐmÑmÔm€FØ
×Ò˜
¨TÐ8lÐÑmÔmÐmØ
×Ò˜
¨V°VÐ,<ÀfÐSbÐÑcÔcÐcØ
×Ò˜¨Ð;wÐÑxÔxÐxØ×ÒÑÔ€Då% d¤k°t´xÐ@Ñ@Ô@€Fà„{�fÒÐÝ�dŒj˜¨¸Ð=Ñ=Ô=Ñ>Ô>Ð>Ñ>åÐqÑrÔrÐrÝÐ8 f¨XÔ&6Ð8Ð8Ñ9Ô9Ð9ÝÐ@¨&°Ô*>Ð@Ð@ÑAÔAÐAÝÐ{ÀvÈiÔGXÐ'yÐ'CÐ'CÐ^yÐ{Ð{Ñ|Ô|Ð|ÝÐU°°~Ô0FÐ'S u uÈGÐUÐUÑVÔVÐVàÐ%Ô&ð 	'ÝÐeÅÀVÐL_ÔE`ÑAaÔAaÐeÐeÐeÑfÔfÐfØÐ/Ô0ð 
'ð 
'�Ø�Ø˜Ð:Ô;Ð;Ð;Ø*�C�CØ˜&Ð!9Ô:Ð:Ð:Ø*�C�CØ˜&Ð!<Ô=Ð=Ð=Ø*�C�CØ˜&Ð!6Ô7Ð7Ð7Ø4�CÝ�o˜Q�o �o�oÑ&Ô&Ð&Ð&àÐ*Ô+ð 	"ÝÐg½cÀ&ÐIaÔBbÑ>cÔ>cÐgÐgÐgÑhÔhÐhØÐ4Ô5ð "ð "�Ý�j˜Q�j�jÑ!Ô!Ð!Ð!àÐ$Ô%ð 	$ÝÐb½sÀ6ÐJ\ÔC]Ñ?^Ô?^ÐbÐbÐbÑcÔcÐcØÐ0Ô1ð $ð $�Ý�l˜S�l�lÑ#Ô#Ð#Ð#àÐ&Ô'ð 	GÝÐmÍÈFÐSgÔLhÑHiÔHiÐmÐmÐmÑnÔnÐnÝÐE�t—y’y Ð(<Ô!=¸c¸r¸cÔ!BÑCÔCÐEÐEÑFÔFÐFåÐ1˜v hÔ/Ð1Ð1Ñ2Ô2Ð2àˆ1r(   Ú__main__)r   r   r   r   )r   r)   )r   r   r   r>   )r   rI   )rM   r   rN   rI   r   rO   )rM   r   r   ri   )r   r   r   r€   )rM   r   r�   r€   r   ri   )r�   r€   r   rµ   )F)r   r   rÍ   rÎ   r   rI   )r   rï   )/Ú__doc__Ú
__future__r   rú   r7   r    rˆ   r¼   Úsysr9   Útypingr   r   r   r   r   r	   ÚhasattrÚstdoutr
   Ústderrr!   Úabspathru   rE   Ú__file__r$   r¤   r¥   rK   r»   r5   r.   ré   r'   r=   rH   rL   rh   r~   r”   r´   rÌ   rî   r  Ú__name__Úexitr-   r(   r&   ú<module>r     sÐ  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à
€7ˆ3Œ:�}Ñ%Ô%ð -Ø„J×Ò GÐÑ,Ô,Ð,Ø
€7ˆ3Œ:�}Ñ%Ô%ð -Ø„J×Ò GÐÑ,Ô,Ð,àŒw�Š˜rœwŸ|š|¨B¬G¯OªO¸HÑ,EÔ,EÀtÈTÑRÔRÑSÔS€ØŒG�LŠL˜ vÑ.Ô.€	ØŒG�LŠL˜ vÑ.Ô.€	Ø”'—,’,˜yÐ*DÑEÔE€Ø
Œ'�,Š,�| VÐ-DÑ
EÔ
E€Ø”—’˜l¨FÐ4PÑQÔQ€Ø€ðð ð €	ðð ð ð ð	ð 	ð 	ð 	ðð ð ð ðð ð ð ð mð  mð  mð  mðF+ð +ð +ð +ð0#ð #ð #ð #ðL$)ð $)ð $)ð $)ðN.Oð .Oð .Oð .OðbKð Kð Kð Kð Kð\0ð 0ð 0ð 0ðf ˆzÒÐØ€C„HˆTˆT‰VŒVÑÔÐÐÐð Ðr(   