71 lines
5.7 KiB
XML
71 lines
5.7 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="720" height="1600" viewBox="0 0 720 1600" role="img" aria-labelledby="title desc">
|
|
<title id="title">Безопасная диагностика учебного request в D-сервисе</title>
|
|
<desc id="desc">Вертикальный маршрут диагностики начинает с сохранения результата, error route и trace. Затем он проверяет contract handler, allocation budget, условную границу GC и неисполняемые FFI/I/O boundaries. Каждый шаг задаёт обратимое действие и запрещает менять runtime глобально без отдельного evidence.</desc>
|
|
<defs>
|
|
<marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto">
|
|
<path d="M0 0 L12 6 L0 12 Z" fill="#7dd3fc"/>
|
|
</marker>
|
|
<style>
|
|
.title { font: 700 30px system-ui, sans-serif; fill: #f8fafc; }
|
|
.subtitle { font: 400 19px system-ui, sans-serif; fill: #bfdbfe; }
|
|
.question { font: 700 24px system-ui, sans-serif; fill: #f8fafc; }
|
|
.body { font: 400 20px system-ui, sans-serif; fill: #dbeafe; }
|
|
.small { font: 600 18px system-ui, sans-serif; fill: #cbd5e1; }
|
|
.good { font: 700 18px system-ui, sans-serif; fill: #86efac; }
|
|
.warn { font: 700 18px system-ui, sans-serif; fill: #fde68a; }
|
|
.danger { font: 700 18px system-ui, sans-serif; fill: #fda4af; }
|
|
</style>
|
|
</defs>
|
|
<rect width="720" height="1600" fill="#0b1220"/>
|
|
<rect x="24" y="24" width="672" height="112" rx="20" fill="#172842" stroke="#60a5fa" stroke-width="3"/>
|
|
<text x="52" y="69" class="title">Диагностика одного request</text>
|
|
<text x="52" y="101" class="subtitle">сначала evidence, затем обратимое действие</text>
|
|
|
|
<rect x="54" y="178" width="612" height="112" rx="18" fill="#193450" stroke="#60a5fa" stroke-width="3"/>
|
|
<text x="86" y="221" class="question">0. Сохранить evidence</text>
|
|
<text x="86" y="253" class="body">input · success/error body · stages · budget</text>
|
|
<text x="86" y="280" class="small">units модели не записываются как latency</text>
|
|
<path d="M360 302 L360 344" stroke="#7dd3fc" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="54" y="358" width="612" height="124" rx="18" fill="#1d3b50" stroke="#a5b4fc" stroke-width="3"/>
|
|
<text x="86" y="401" class="question">1. Contract handler сохранён?</text>
|
|
<text x="86" y="433" class="body">success body равен; invalid идёт в encode-error?</text>
|
|
<text x="86" y="462" class="danger">нет → остановить правку, восстановить validation/encode</text>
|
|
<path d="M360 494 L360 536" stroke="#7dd3fc" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="54" y="550" width="612" height="124" rx="18" fill="#3b3520" stroke="#facc15" stroke-width="3"/>
|
|
<text x="86" y="593" class="question">2. Allocation выше budget?</text>
|
|
<text x="86" y="625" class="body">heavy 12 > 6; reuse 3 ≤ 6</text>
|
|
<text x="86" y="654" class="warn">сравнивать только при равном result и work</text>
|
|
<path d="M360 686 L360 728" stroke="#7dd3fc" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="54" y="742" width="612" height="124" rx="18" fill="#3b3520" stroke="#facc15" stroke-width="3"/>
|
|
<text x="86" y="785" class="question">3. Что означает gc-boundary?</text>
|
|
<text x="86" y="817" class="body">только threshold 8 units в модели</text>
|
|
<text x="86" y="846" class="warn">это не pause: нужен отдельный profile и условия</text>
|
|
<path d="M360 878 L360 920" stroke="#7dd3fc" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="54" y="934" width="612" height="124" rx="18" fill="#3b3520" stroke="#facc15" stroke-width="3"/>
|
|
<text x="86" y="977" class="question">4. FFI / I/O выполнялись?</text>
|
|
<text x="86" y="1009" class="body">trace: invocation = not-performed</text>
|
|
<text x="86" y="1038" class="warn">нет → не обвинять dependency; описать отдельный contract test</text>
|
|
<path d="M360 1070 L360 1112" stroke="#7dd3fc" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="54" y="1126" width="612" height="130" rx="18" fill="#193450" stroke="#60a5fa" stroke-width="3"/>
|
|
<text x="86" y="1169" class="question">5. Есть фактический профиль границы?</text>
|
|
<text x="86" y="1201" class="body">версия tool · вход · среда · один метод</text>
|
|
<text x="86" y="1230" class="small">нет → сначала собрать evidence, не менять runtime глобально</text>
|
|
<path d="M360 1268 L360 1310" stroke="#7dd3fc" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="54" y="1324" width="612" height="130" rx="18" fill="#1f4d43" stroke="#5eead4" stroke-width="3"/>
|
|
<text x="86" y="1367" class="question">Rollback-safe действие</text>
|
|
<text x="86" y="1399" class="body">один temporary-state change; valid + invalid traces</text>
|
|
<text x="86" y="1428" class="good">внешняя граница станет реальной → отдельный contract test</text>
|
|
|
|
<rect x="54" y="1484" width="612" height="100" rx="16" fill="#442b37" stroke="#fb7185" stroke-width="3"/>
|
|
<text x="82" y="1518" class="question">Стоп-критерий</text>
|
|
<text x="82" y="1546" class="small">исчез success/error contract → сначала восстановить его</text>
|
|
<text x="82" y="1573" class="small">и только затем снова сравнивать units</text>
|
|
</svg>
|