revise October 2023 slo articles
Build and deploy / deploy (push) Successful in 14s

This commit is contained in:
2026-07-31 15:16:33 +03:00
parent 2c860caddd
commit 6da24704e1
7 changed files with 670 additions and 1 deletions
@@ -0,0 +1,46 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="760" viewBox="0 0 1200 760" role="img" aria-labelledby="title desc">
<title id="title">Учебная арифметика окна и error budget</title>
<desc id="desc">Слева показано фиксированное synthetic окно 28 дней и synthetic вход. В центре приведён расчёт synthetic eligible, good, bad и допустимых bad. Справа вручную выбирается следующий шаг; это не реальный burn rate или доступность.</desc>
<rect width="1200" height="760" fill="#F5F7FB"/>
<rect x="36" y="32" width="1128" height="84" rx="20" fill="#102A43"/>
<text x="76" y="84" fill="#FFFFFF" font-family="Arial, sans-serif" font-size="38" font-weight="700">Error budget зависит от окна и знаменателя</text>
<text x="76" y="145" fill="#486581" font-family="Arial, sans-serif" font-size="25">Фиктивные числа показывают форму расчёта, а не состояние сервиса</text>
<rect x="48" y="198" width="292" height="350" rx="26" fill="#E5EFFA" stroke="#2F80ED" stroke-width="3"/>
<text x="82" y="254" fill="#173B65" font-family="Arial, sans-serif" font-size="30" font-weight="700">Synthetic window</text>
<text x="82" y="294" fill="#173B65" font-family="Arial, sans-serif" font-size="25">fixed 28 days</text>
<line x1="82" y1="326" x2="305" y2="326" stroke="#8CB8E8" stroke-width="3"/>
<text x="82" y="376" fill="#486581" font-family="Arial, sans-serif" font-size="25">Eligible: 1000</text>
<text x="82" y="422" fill="#486581" font-family="Arial, sans-serif" font-size="25">Good: 994</text>
<text x="82" y="468" fill="#486581" font-family="Arial, sans-serif" font-size="25">Bad: 6</text>
<text x="82" y="510" fill="#486581" font-family="Arial, sans-serif" font-size="21">only in-memory input</text>
<path d="M364 374 H425" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round"/>
<path d="M419 356 L449 374 L419 392" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="462" y="166" width="360" height="416" rx="30" fill="#FFF7E6" stroke="#E7A72D" stroke-width="3"/>
<text x="500" y="226" fill="#7A4D00" font-family="Arial, sans-serif" font-size="32" font-weight="700">Synthetic arithmetic</text>
<rect x="500" y="258" width="284" height="66" rx="14" fill="#FFFFFF"/>
<text x="526" y="300" fill="#5D4724" font-family="Arial, sans-serif" font-size="25">Target = 99%</text>
<rect x="500" y="340" width="284" height="66" rx="14" fill="#FFFFFF"/>
<text x="526" y="382" fill="#5D4724" font-family="Arial, sans-serif" font-size="25">Allowed bad = 10</text>
<rect x="500" y="422" width="284" height="66" rx="14" fill="#E7F6ED" stroke="#2D9D5B" stroke-width="2"/>
<text x="526" y="464" fill="#176B3A" font-family="Arial, sans-serif" font-size="25">Remaining = 4</text>
<text x="500" y="536" fill="#7A4D00" font-family="Arial, sans-serif" font-size="21">observed: not-observed</text>
<path d="M846 374 H885" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round"/>
<path d="M879 356 L909 374 L879 392" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="920" y="198" width="234" height="350" rx="26" fill="#F1EDFF" stroke="#7C5CE0" stroke-width="3"/>
<text x="952" y="254" fill="#49399B" font-family="Arial, sans-serif" font-size="30" font-weight="700">Decision</text>
<text x="952" y="306" fill="#34314C" font-family="Arial, sans-serif" font-size="24">Owner reviews</text>
<text x="952" y="344" fill="#34314C" font-family="Arial, sans-serif" font-size="24">contract +</text>
<text x="952" y="382" fill="#34314C" font-family="Arial, sans-serif" font-size="24">evidence</text>
<line x1="952" y1="416" x2="1120" y2="416" stroke="#B6A7F0" stroke-width="3"/>
<text x="952" y="460" fill="#49399B" font-family="Arial, sans-serif" font-size="22">No auto gate</text>
<text x="952" y="500" fill="#49399B" font-family="Arial, sans-serif" font-size="22">No real burn rate</text>
<rect x="48" y="612" width="1106" height="100" rx="20" fill="#FFFFFF" stroke="#B7C7D8" stroke-width="3"/>
<text x="80" y="652" fill="#243B53" font-family="Arial, sans-serif" font-size="27" font-weight="700">Изменили окно, eligible set или target — получили другую модель.</text>
<text x="80" y="690" fill="#243B53" font-family="Arial, sans-serif" font-size="27" font-weight="700">Это не новая краска графика.</text>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

@@ -0,0 +1,53 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="760" viewBox="0 0 1200 760" role="img" aria-labelledby="title desc">
<title id="title">Петля решения по SLI SLO и error budget</title>
<desc id="desc">Петля ведёт от synthetic сигнала через проверку SLI-контракта и контекст разрешённой среды к решению владельца, обратимому действию и повторной проверке. Линия к релизу обозначена как ручное решение без автоматического gate.</desc>
<rect width="1200" height="760" fill="#F5F7FB"/>
<rect x="36" y="32" width="1128" height="84" rx="20" fill="#102A43"/>
<text x="76" y="84" fill="#FFFFFF" font-family="Arial, sans-serif" font-size="38" font-weight="700">Бюджет — петля решения, не автоматический gate</text>
<text x="76" y="145" fill="#486581" font-family="Arial, sans-serif" font-size="25">Сигнал → договор → контекст → owner → обратимое действие → повторная проверка</text>
<rect x="58" y="236" width="214" height="150" rx="24" fill="#E5EFFA" stroke="#2F80ED" stroke-width="3"/>
<text x="91" y="290" fill="#173B65" font-family="Arial, sans-serif" font-size="29" font-weight="700">1. Signal</text>
<text x="91" y="330" fill="#173B65" font-family="Arial, sans-serif" font-size="22">synthetic only</text>
<rect x="334" y="188" width="244" height="182" rx="24" fill="#FFF7E6" stroke="#E7A72D" stroke-width="3"/>
<text x="366" y="244" fill="#7A4D00" font-family="Arial, sans-serif" font-size="29" font-weight="700">2. Contract</text>
<text x="366" y="284" fill="#7A4D00" font-family="Arial, sans-serif" font-size="22">scope · window</text>
<text x="366" y="318" fill="#7A4D00" font-family="Arial, sans-serif" font-size="22">good · eligible</text>
<rect x="650" y="188" width="244" height="182" rx="24" fill="#E7F6ED" stroke="#2D9D5B" stroke-width="3"/>
<text x="682" y="244" fill="#176B3A" font-family="Arial, sans-serif" font-size="29" font-weight="700">3. Context</text>
<text x="682" y="284" fill="#176B3A" font-family="Arial, sans-serif" font-size="22">allowed evidence</text>
<text x="682" y="318" fill="#176B3A" font-family="Arial, sans-serif" font-size="22">one hypothesis</text>
<rect x="928" y="236" width="214" height="150" rx="24" fill="#F1EDFF" stroke="#7C5CE0" stroke-width="3"/>
<text x="960" y="290" fill="#49399B" font-family="Arial, sans-serif" font-size="29" font-weight="700">4. Owner</text>
<text x="960" y="330" fill="#49399B" font-family="Arial, sans-serif" font-size="22">manual decision</text>
<path d="M276 310 H314" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round"/>
<path d="M308 292 L338 310 L308 328" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M582 280 H630" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round"/>
<path d="M624 262 L654 280 L624 298" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M898 310 H908" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round"/>
<path d="M902 292 L932 310 L902 328" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="640" y="472" width="286" height="142" rx="24" fill="#FFFFFF" stroke="#B7C7D8" stroke-width="3"/>
<text x="674" y="528" fill="#243B53" font-family="Arial, sans-serif" font-size="29" font-weight="700">5. Action</text>
<text x="674" y="566" fill="#486581" font-family="Arial, sans-serif" font-size="22">narrow, fix, defer,</text>
<text x="674" y="596" fill="#486581" font-family="Arial, sans-serif" font-size="22">or continue with control</text>
<rect x="258" y="472" width="290" height="142" rx="24" fill="#FFFFFF" stroke="#B7C7D8" stroke-width="3"/>
<text x="292" y="528" fill="#243B53" font-family="Arial, sans-serif" font-size="29" font-weight="700">6. Recheck</text>
<text x="292" y="566" fill="#486581" font-family="Arial, sans-serif" font-size="22">same contract</text>
<text x="292" y="596" fill="#486581" font-family="Arial, sans-serif" font-size="22">same criterion</text>
<path d="M1034 410 C1034 474 982 520 946 534" fill="none" stroke="#7C5CE0" stroke-width="7" stroke-linecap="round"/>
<path d="M938 513 L924 544 L957 542" fill="none" stroke="#7C5CE0" stroke-width="7" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M632 543 H574" fill="none" stroke="#2F80ED" stroke-width="7" stroke-linecap="round"/>
<path d="M580 525 L550 543 L580 561" fill="none" stroke="#2F80ED" stroke-width="7" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M250 544 C154 522 122 440 136 396" fill="none" stroke="#2F80ED" stroke-width="7" stroke-linecap="round"/>
<path d="M119 402 L140 376 L149 408" fill="none" stroke="#2F80ED" stroke-width="7" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="380" y="656" width="440" height="52" rx="16" fill="#FFF7E6" stroke="#E7A72D" stroke-width="2"/>
<text x="411" y="690" fill="#7A4D00" font-family="Arial, sans-serif" font-size="24" font-weight="700">No automatic release gate; no real incident claim</text>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

@@ -0,0 +1,44 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="760" viewBox="0 0 1200 760" role="img" aria-labelledby="title desc">
<title id="title">Учебный договор SLI для одного пути пользователя</title>
<desc id="desc">Слева указан synthetic путь checkout. В центре eligible события содержат good события, а исключение вынесено отдельно. Справа перечислены synthetic окно, цель и владелец. Внизу указано, что это договор, а не дашборд.</desc>
<rect width="1200" height="760" fill="#F5F7FB"/>
<rect x="36" y="32" width="1128" height="84" rx="20" fill="#102A43"/>
<text x="76" y="84" fill="#FFFFFF" font-family="Arial, sans-serif" font-size="38" font-weight="700">SLI начинается с договора, а не с процента</text>
<text x="76" y="145" fill="#486581" font-family="Arial, sans-serif" font-size="25">Учебный synthetic контракт: путь, граница событий, окно, цель и владелец</text>
<rect x="50" y="204" width="296" height="258" rx="24" fill="#E5EFFA" stroke="#2F80ED" stroke-width="3"/>
<text x="82" y="260" fill="#173B65" font-family="Arial, sans-serif" font-size="30" font-weight="700">Путь пользователя</text>
<text x="82" y="312" fill="#173B65" font-family="Arial, sans-serif" font-size="27">synthetic-checkout-</text>
<text x="82" y="350" fill="#173B65" font-family="Arial, sans-serif" font-size="27">submit</text>
<line x1="82" y1="382" x2="312" y2="382" stroke="#8CB8E8" stroke-width="3"/>
<text x="82" y="422" fill="#486581" font-family="Arial, sans-serif" font-size="24">Один ограниченный вопрос</text>
<path d="M370 334 H430" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round"/>
<path d="M424 316 L454 334 L424 352" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="464" y="184" width="338" height="358" rx="28" fill="#FFF7E6" stroke="#E7A72D" stroke-width="3"/>
<text x="500" y="242" fill="#7A4D00" font-family="Arial, sans-serif" font-size="31" font-weight="700">Eligible events</text>
<text x="500" y="282" fill="#7A4D00" font-family="Arial, sans-serif" font-size="23">synthetic request finished</text>
<rect x="500" y="316" width="266" height="100" rx="18" fill="#E7F6ED" stroke="#2D9D5B" stroke-width="3"/>
<text x="530" y="360" fill="#176B3A" font-family="Arial, sans-serif" font-size="30" font-weight="700">Good events</text>
<text x="530" y="396" fill="#176B3A" font-family="Arial, sans-serif" font-size="22">non-5xx response</text>
<rect x="500" y="426" width="266" height="88" rx="14" fill="#FFFFFF" stroke="#6C7A89" stroke-width="3" stroke-dasharray="10 8"/>
<text x="526" y="462" fill="#44505C" font-family="Arial, sans-serif" font-size="21">Explicit exclusion</text>
<text x="526" y="492" fill="#44505C" font-family="Arial, sans-serif" font-size="19">client cancel before request</text>
<path d="M826 334 H866" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round"/>
<path d="M860 316 L890 334 L860 352" fill="none" stroke="#2F80ED" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="900" y="184" width="254" height="358" rx="28" fill="#F1EDFF" stroke="#7C5CE0" stroke-width="3"/>
<text x="932" y="242" fill="#49399B" font-family="Arial, sans-serif" font-size="31" font-weight="700">Контракт</text>
<text x="932" y="304" fill="#49399B" font-family="Arial, sans-serif" font-size="24">Window</text>
<text x="932" y="338" fill="#34314C" font-family="Arial, sans-serif" font-size="23">synthetic 28 days</text>
<text x="932" y="394" fill="#49399B" font-family="Arial, sans-serif" font-size="24">Target</text>
<text x="932" y="428" fill="#34314C" font-family="Arial, sans-serif" font-size="23">synthetic 99%</text>
<text x="932" y="484" fill="#49399B" font-family="Arial, sans-serif" font-size="24">Owner</text>
<text x="932" y="518" fill="#34314C" font-family="Arial, sans-serif" font-size="23">synthetic owner</text>
<rect x="50" y="590" width="1104" height="116" rx="22" fill="#FFFFFF" stroke="#B7C7D8" stroke-width="3"/>
<text x="82" y="642" fill="#243B53" font-family="Arial, sans-serif" font-size="30" font-weight="700">Сначала определяем границы. Затем проверяем данные.</text>
<text x="82" y="682" fill="#243B53" font-family="Arial, sans-serif" font-size="30" font-weight="700">Это договор, не dashboard.</text>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB