This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 620" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Consumer map для удаления устаревшего API</title>
|
||||
<desc id="desc">Схема показывает, как от одного API-контракта расходятся строки потребителей с владельцем, путём миграции, дедлайном, объявлением и границей доказательства. Неизвестный потребитель блокирует автоматическое удаление.</desc>
|
||||
<rect width="800" height="620" fill="#0f172a"/>
|
||||
<text x="48" y="55" fill="#f8fafc" font-family="Arial, sans-serif" font-size="28" font-weight="700">Consumer map до removal gate</text>
|
||||
<text x="48" y="83" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="16">Один контракт → явные поля → отдельная ветка unknown</text>
|
||||
|
||||
<rect x="48" y="125" width="205" height="132" rx="14" fill="#1d4ed8"/>
|
||||
<text x="72" y="162" fill="#dbeafe" font-family="Arial, sans-serif" font-size="15" font-weight="700">API contract</text>
|
||||
<text x="72" y="193" fill="#ffffff" font-family="Arial, sans-serif" font-size="20" font-weight="700">v1 POST /posting</text>
|
||||
<text x="72" y="220" fill="#dbeafe" font-family="Arial, sans-serif" font-size="15">replacement: v2</text>
|
||||
<path d="M253 190 H312" stroke="#93c5fd" stroke-width="4" fill="none"/>
|
||||
<path d="M302 180 L320 190 L302 200" stroke="#93c5fd" stroke-width="4" fill="none"/>
|
||||
|
||||
<rect x="326" y="108" width="418" height="173" rx="14" fill="#172554" stroke="#60a5fa" stroke-width="2"/>
|
||||
<text x="352" y="143" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="17" font-weight="700">Строка known consumer</text>
|
||||
<line x1="352" y1="158" x2="718" y2="158" stroke="#334155" stroke-width="1"/>
|
||||
<text x="352" y="187" fill="#f8fafc" font-family="Arial, sans-serif" font-size="16">owner</text>
|
||||
<text x="492" y="187" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="16">migration path</text>
|
||||
<text x="352" y="220" fill="#f8fafc" font-family="Arial, sans-serif" font-size="16">deadline</text>
|
||||
<text x="492" y="220" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="16">announcement</text>
|
||||
<text x="352" y="253" fill="#f8fafc" font-family="Arial, sans-serif" font-size="16">evidence boundary</text>
|
||||
<text x="572" y="253" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="16">не итог о population</text>
|
||||
|
||||
<path d="M150 257 V334 H312" stroke="#94a3b8" stroke-width="4" fill="none"/>
|
||||
<path d="M302 324 L320 334 L302 344" stroke="#94a3b8" stroke-width="4" fill="none"/>
|
||||
<rect x="326" y="306" width="418" height="122" rx="14" fill="#3f1d3b" stroke="#f472b6" stroke-width="2"/>
|
||||
<text x="352" y="344" fill="#fce7f3" font-family="Arial, sans-serif" font-size="18" font-weight="700">Unknown consumer</text>
|
||||
<text x="352" y="376" fill="#f8fafc" font-family="Arial, sans-serif" font-size="16">scope не доказан</text>
|
||||
<text x="352" y="403" fill="#fbcfe8" font-family="Arial, sans-serif" font-size="16">не превращать в «0 пользователей»</text>
|
||||
|
||||
<path d="M535 428 V476" stroke="#f472b6" stroke-width="4" fill="none"/>
|
||||
<path d="M525 466 L535 484 L545 466" stroke="#f472b6" stroke-width="4" fill="none"/>
|
||||
<rect x="100" y="492" width="600" height="80" rx="14" fill="#422006" stroke="#fbbf24" stroke-width="2"/>
|
||||
<text x="129" y="527" fill="#fef3c7" font-family="Arial, sans-serif" font-size="20" font-weight="700">Removal gate закрыт</text>
|
||||
<text x="129" y="554" fill="#fde68a" font-family="Arial, sans-serif" font-size="16">Нужны human decision, stop condition и restore boundary.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
@@ -0,0 +1,38 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 620" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Removal gate для active, unknown и migrated consumer</title>
|
||||
<desc id="desc">Три ветки removal gate: активный потребитель требует миграции, неизвестный требует ограничить scope или сохранить совместимость, а мигрированные известные потребители разрешают только human review с остаточным риском. Далее показан отдельный change и restore boundary.</desc>
|
||||
<rect width="800" height="620" fill="#111827"/>
|
||||
<text x="48" y="55" fill="#f9fafb" font-family="Arial, sans-serif" font-size="28" font-weight="700">Последний consumer — это gate, не число</text>
|
||||
<text x="48" y="84" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="16">Известные строки и unknown остаются разными состояниями</text>
|
||||
|
||||
<rect x="48" y="127" width="210" height="164" rx="15" fill="#7f1d1d" stroke="#f87171" stroke-width="2"/>
|
||||
<text x="73" y="165" fill="#fee2e2" font-family="Arial, sans-serif" font-size="22" font-weight="700">ACTIVE</text>
|
||||
<text x="73" y="200" fill="#ffffff" font-family="Arial, sans-serif" font-size="16">named row uses</text>
|
||||
<text x="73" y="225" fill="#ffffff" font-family="Arial, sans-serif" font-size="16">old contract</text>
|
||||
<text x="73" y="264" fill="#fecaca" font-family="Arial, sans-serif" font-size="15">→ block removal</text>
|
||||
|
||||
<rect x="295" y="127" width="210" height="164" rx="15" fill="#713f12" stroke="#fbbf24" stroke-width="2"/>
|
||||
<text x="320" y="165" fill="#fef3c7" font-family="Arial, sans-serif" font-size="22" font-weight="700">UNKNOWN</text>
|
||||
<text x="320" y="200" fill="#ffffff" font-family="Arial, sans-serif" font-size="16">scope is not</text>
|
||||
<text x="320" y="225" fill="#ffffff" font-family="Arial, sans-serif" font-size="16">proved complete</text>
|
||||
<text x="320" y="264" fill="#fde68a" font-family="Arial, sans-serif" font-size="15">→ block automation</text>
|
||||
|
||||
<rect x="542" y="127" width="210" height="164" rx="15" fill="#14532d" stroke="#4ade80" stroke-width="2"/>
|
||||
<text x="567" y="165" fill="#dcfce7" font-family="Arial, sans-serif" font-size="22" font-weight="700">MIGRATED</text>
|
||||
<text x="567" y="200" fill="#ffffff" font-family="Arial, sans-serif" font-size="16">named rows have</text>
|
||||
<text x="567" y="225" fill="#ffffff" font-family="Arial, sans-serif" font-size="16">replacement path</text>
|
||||
<text x="567" y="264" fill="#bbf7d0" font-family="Arial, sans-serif" font-size="15">→ human review only</text>
|
||||
|
||||
<path d="M153 291 V345 H247" stroke="#f87171" stroke-width="4" fill="none"/>
|
||||
<path d="M400 291 V345" stroke="#fbbf24" stroke-width="4" fill="none"/>
|
||||
<path d="M647 291 V345 H553" stroke="#4ade80" stroke-width="4" fill="none"/>
|
||||
<rect x="247" y="335" width="306" height="93" rx="15" fill="#1e293b" stroke="#94a3b8" stroke-width="2"/>
|
||||
<text x="276" y="370" fill="#f8fafc" font-family="Arial, sans-serif" font-size="20" font-weight="700">Human removal review</text>
|
||||
<text x="276" y="400" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="15">contract · owner · notice · residual risk</text>
|
||||
|
||||
<path d="M400 428 V470" stroke="#94a3b8" stroke-width="4" fill="none"/>
|
||||
<path d="M390 460 L400 478 L410 460" stroke="#94a3b8" stroke-width="4" fill="none"/>
|
||||
<rect x="100" y="488" width="600" height="82" rx="15" fill="#172554" stroke="#60a5fa" stroke-width="2"/>
|
||||
<text x="129" y="523" fill="#dbeafe" font-family="Arial, sans-serif" font-size="20" font-weight="700">Separate authorized removal change</text>
|
||||
<text x="129" y="550" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="15">stop condition + restore boundary; hidden-consumer absence is not promised</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -0,0 +1,59 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 620" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Timeline deprecation от warning до removal gate</title>
|
||||
<desc id="desc">Четыре отдельные стадии жизненного цикла API: warning, deprecation, sunset boundary и removal gate. Под каждой стадией указано, что она сообщает и чего не доказывает.</desc>
|
||||
<rect width="800" height="620" fill="#111827"/>
|
||||
<text x="48" y="55" fill="#f9fafb" font-family="Arial, sans-serif" font-size="28" font-weight="700">Lifecycle: signal не равен удалению</text>
|
||||
<text x="48" y="84" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="16">Каждая boundary отвечает на свой вопрос</text>
|
||||
|
||||
<line x1="93" y1="237" x2="710" y2="237" stroke="#64748b" stroke-width="6" stroke-linecap="round"/>
|
||||
<circle cx="120" cy="237" r="18" fill="#38bdf8"/>
|
||||
<circle cx="312" cy="237" r="18" fill="#818cf8"/>
|
||||
<circle cx="504" cy="237" r="18" fill="#fbbf24"/>
|
||||
<circle cx="696" cy="237" r="18" fill="#f472b6"/>
|
||||
|
||||
<rect x="48" y="124" width="144" height="79" rx="12" fill="#0c4a6e"/>
|
||||
<text x="69" y="157" fill="#e0f2fe" font-family="Arial, sans-serif" font-size="18" font-weight="700">Warning</text>
|
||||
<text x="69" y="184" fill="#bae6fd" font-family="Arial, sans-serif" font-size="14">guide + owner</text>
|
||||
<rect x="240" y="124" width="144" height="79" rx="12" fill="#312e81"/>
|
||||
<text x="259" y="157" fill="#e0e7ff" font-family="Arial, sans-serif" font-size="18" font-weight="700">Deprecated</text>
|
||||
<text x="259" y="184" fill="#c7d2fe" font-family="Arial, sans-serif" font-size="14">contract / signal</text>
|
||||
<rect x="432" y="124" width="144" height="79" rx="12" fill="#713f12"/>
|
||||
<text x="452" y="157" fill="#fef3c7" font-family="Arial, sans-serif" font-size="18" font-weight="700">Sunset</text>
|
||||
<text x="452" y="184" fill="#fde68a" font-family="Arial, sans-serif" font-size="14">planned boundary</text>
|
||||
<rect x="624" y="124" width="144" height="79" rx="12" fill="#831843"/>
|
||||
<text x="643" y="157" fill="#fce7f3" font-family="Arial, sans-serif" font-size="18" font-weight="700">Removal</text>
|
||||
<text x="643" y="184" fill="#fbcfe8" font-family="Arial, sans-serif" font-size="14">separate review</text>
|
||||
|
||||
<rect x="48" y="290" width="144" height="164" rx="12" fill="#172554"/>
|
||||
<text x="66" y="325" fill="#dbeafe" font-family="Arial, sans-serif" font-size="16" font-weight="700">Visible</text>
|
||||
<text x="66" y="356" fill="#f8fafc" font-family="Arial, sans-serif" font-size="15">replacement</text>
|
||||
<text x="66" y="382" fill="#f8fafc" font-family="Arial, sans-serif" font-size="15">affected scope</text>
|
||||
<text x="66" y="419" fill="#93c5fd" font-family="Arial, sans-serif" font-size="14">Не доказывает:</text>
|
||||
<text x="66" y="442" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="14">notice прочитан</text>
|
||||
|
||||
<rect x="240" y="290" width="144" height="164" rx="12" fill="#312e81"/>
|
||||
<text x="258" y="325" fill="#e0e7ff" font-family="Arial, sans-serif" font-size="16" font-weight="700">Visible</text>
|
||||
<text x="258" y="356" fill="#f8fafc" font-family="Arial, sans-serif" font-size="15">deprecated state</text>
|
||||
<text x="258" y="382" fill="#f8fafc" font-family="Arial, sans-serif" font-size="15">documentation link</text>
|
||||
<text x="258" y="419" fill="#c7d2fe" font-family="Arial, sans-serif" font-size="14">Не доказывает:</text>
|
||||
<text x="258" y="442" fill="#ddd6fe" font-family="Arial, sans-serif" font-size="14">migration done</text>
|
||||
|
||||
<rect x="432" y="290" width="144" height="164" rx="12" fill="#713f12"/>
|
||||
<text x="450" y="325" fill="#fef3c7" font-family="Arial, sans-serif" font-size="16" font-weight="700">Visible</text>
|
||||
<text x="450" y="356" fill="#f8fafc" font-family="Arial, sans-serif" font-size="15">planned date</text>
|
||||
<text x="450" y="382" fill="#f8fafc" font-family="Arial, sans-serif" font-size="15">scope policy</text>
|
||||
<text x="450" y="419" fill="#fde68a" font-family="Arial, sans-serif" font-size="14">Не доказывает:</text>
|
||||
<text x="450" y="442" fill="#fef3c7" font-family="Arial, sans-serif" font-size="14">hard availability</text>
|
||||
|
||||
<rect x="624" y="290" width="144" height="164" rx="12" fill="#831843"/>
|
||||
<text x="642" y="325" fill="#fce7f3" font-family="Arial, sans-serif" font-size="16" font-weight="700">Required</text>
|
||||
<text x="642" y="356" fill="#f8fafc" font-family="Arial, sans-serif" font-size="15">evidence scope</text>
|
||||
<text x="642" y="382" fill="#f8fafc" font-family="Arial, sans-serif" font-size="15">restore boundary</text>
|
||||
<text x="642" y="419" fill="#fbcfe8" font-family="Arial, sans-serif" font-size="14">Не обещает:</text>
|
||||
<text x="642" y="442" fill="#fce7f3" font-family="Arial, sans-serif" font-size="14">no hidden users</text>
|
||||
|
||||
<rect x="48" y="500" width="720" height="68" rx="12" fill="#0f172a" stroke="#64748b" stroke-width="2"/>
|
||||
<text x="75" y="530" fill="#f8fafc" font-family="Arial, sans-serif" font-size="17" font-weight="700">Stop condition:</text>
|
||||
<text x="218" y="530" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="17">active or unresolved row → stop proposal, do not widen change.</text>
|
||||
<text x="75" y="555" fill="#94a3b8" font-family="Arial, sans-serif" font-size="14">Даты на схеме не являются календарной политикой.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
Reference in New Issue
Block a user