This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="1280" viewBox="0 0 1200 1280" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Диагностика падения reader после записи</title>
|
||||
<desc id="desc">Дерево диагностики: зафиксировать безопасное evidence, различить неверный тип, absent и null, сужение старых значений и смену смысла. При несовместимой активной паре остановить producer, сохранить sample и добавить проверку в compatibility matrix.</desc>
|
||||
<rect width="1200" height="1280" fill="#0b1322"/>
|
||||
<rect x="48" y="42" width="1104" height="110" rx="24" fill="#342537" stroke="#ff9ab0" stroke-width="3"/>
|
||||
<text x="92" y="96" font-family="Arial, sans-serif" font-size="42" font-weight="700" fill="#ffffff">Reader упал после записи: диагностика</text>
|
||||
<text x="92" y="130" font-family="Arial, sans-serif" font-size="25" fill="#ffd5dd">Сначала evidence, затем rollback или остановка producer</text>
|
||||
<rect x="170" y="210" width="860" height="130" rx="22" fill="#193555" stroke="#77bcff" stroke-width="3"/>
|
||||
<text x="212" y="264" font-family="Arial, sans-serif" font-size="32" font-weight="700" fill="#ffffff">1. Собрать безопасное evidence</text>
|
||||
<text x="212" y="305" font-family="Arial, sans-serif" font-size="24" fill="#d5eaff">record id · writer/reader · field names · error path · state key</text>
|
||||
<path d="M600 340 V414" stroke="#9fc8f0" stroke-width="7" fill="none" marker-end="url(#arrow)"/>
|
||||
<polygon points="600,416 800,500 600,584 400,500" fill="#244b49" stroke="#78e1be" stroke-width="3"/>
|
||||
<text x="510" y="493" font-family="Arial, sans-serif" font-size="28" font-weight="700" fill="#ffffff">Какой разрыв?</text>
|
||||
<text x="496" y="528" font-family="Arial, sans-serif" font-size="21" fill="#cef8e9">type · presence · narrowing · semantic</text>
|
||||
<path d="M472 555 L310 654" stroke="#ffb069" stroke-width="6" fill="none" marker-end="url(#arrowOrange)"/>
|
||||
<path d="M558 580 L505 654" stroke="#80c4ff" stroke-width="6" fill="none" marker-end="url(#arrow)"/>
|
||||
<path d="M642 580 L695 654" stroke="#f6d06f" stroke-width="6" fill="none" marker-end="url(#arrowYellow)"/>
|
||||
<path d="M728 555 L890 654" stroke="#ff94a9" stroke-width="6" fill="none" marker-end="url(#arrowPink)"/>
|
||||
<rect x="70" y="675" width="500" height="146" rx="20" fill="#4a3022" stroke="#ffb069" stroke-width="3"/>
|
||||
<text x="104" y="727" font-family="Arial, sans-serif" font-size="31" font-weight="700" fill="#fff6ee">Type break</text>
|
||||
<text x="104" y="766" font-family="Arial, sans-serif" font-size="24" fill="#ffe2ca">timezone: number → stop writer path</text>
|
||||
<rect x="630" y="675" width="500" height="146" rx="20" fill="#1d3555" stroke="#80c4ff" stroke-width="3"/>
|
||||
<text x="664" y="727" font-family="Arial, sans-serif" font-size="31" font-weight="700" fill="#ffffff">Presence</text>
|
||||
<text x="664" y="766" font-family="Arial, sans-serif" font-size="24" fill="#d8efff">absent ≠ null → вернуть ветку reader</text>
|
||||
<rect x="70" y="860" width="500" height="146" rx="20" fill="#4a3b21" stroke="#f6d06f" stroke-width="3"/>
|
||||
<text x="104" y="912" font-family="Arial, sans-serif" font-size="31" font-weight="700" fill="#ffffff">Narrowing</text>
|
||||
<text x="104" y="951" font-family="Arial, sans-serif" font-size="24" fill="#fff0bc">legacy daily rejected → restore range</text>
|
||||
<rect x="630" y="860" width="500" height="146" rx="20" fill="#482633" stroke="#ff94a9" stroke-width="3"/>
|
||||
<text x="664" y="912" font-family="Arial, sans-serif" font-size="31" font-weight="700" fill="#ffffff">Semantic</text>
|
||||
<text x="664" y="951" font-family="Arial, sans-serif" font-size="24" fill="#ffe0e6">same string, new meaning → stop producer</text>
|
||||
<path d="M320 821 V1037" stroke="#ffb069" stroke-width="6" fill="none" marker-end="url(#arrowOrange)"/>
|
||||
<path d="M880 821 V1037" stroke="#80c4ff" stroke-width="6" fill="none" marker-end="url(#arrow)"/>
|
||||
<path d="M320 1006 V1037" stroke="#f6d06f" stroke-width="6" fill="none" marker-end="url(#arrowYellow)"/>
|
||||
<path d="M880 1006 V1037" stroke="#ff94a9" stroke-width="6" fill="none" marker-end="url(#arrowPink)"/>
|
||||
<rect x="135" y="1060" width="930" height="146" rx="24" fill="#183b38" stroke="#79e1bd" stroke-width="3"/>
|
||||
<text x="178" y="1110" font-family="Arial, sans-serif" font-size="33" font-weight="700" fill="#ffffff">2. Безопасное действие</text>
|
||||
<text x="178" y="1150" font-family="Arial, sans-serif" font-size="25" fill="#d7fff0">Сохранить sample и добавить accept/reject в compatibility matrix.</text>
|
||||
<text x="178" y="1184" font-family="Arial, sans-serif" font-size="22" fill="#aee8d4">Не переписывать record наугад: сначала проверить active writer → reader pair.</text>
|
||||
<defs>
|
||||
<marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0,0 L12,6 L0,12 z" fill="#9fc8f0"/></marker>
|
||||
<marker id="arrowOrange" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0,0 L12,6 L0,12 z" fill="#ffb069"/></marker>
|
||||
<marker id="arrowYellow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0,0 L12,6 L0,12 z" fill="#f6d06f"/></marker>
|
||||
<marker id="arrowPink" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0,0 L12,6 L0,12 z" fill="#ff94a9"/></marker>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.6 KiB |
Reference in New Issue
Block a user