Files
progcode/web/public/assets/editorial/2026/data-contracts-2026-compatibility-gate-loop.svg
huncode ec4cfbbd60
Build and deploy / deploy (push) Successful in 14s
revise March 2026 data contract articles
2026-07-31 19:01:51 +03:00

83 lines
4.4 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 720" role="img" aria-labelledby="title desc">
<title id="title">Цикл automated compatibility gate</title>
<desc id="desc">Пять шагов проводят fixed schema case через явное сравнение, required surface, manifest и capability consumer. У каждой ошибки есть отдельная красная ветка возврата, положительная ветка заканчивается ограниченным synthetic hand-off.</desc>
<defs>
<marker id="arrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto">
<path d="M0,0 L10,5 L0,10 z" fill="#24415d"/>
</marker>
<marker id="redArrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto">
<path d="M0,0 L10,5 L0,10 z" fill="#b23a48"/>
</marker>
<style>
.bg { fill: #f6f8fb; }
.step { fill: #ffffff; stroke: #24415d; stroke-width: 3; }
.ok { fill: #e7f3ef; stroke: #237a57; stroke-width: 3; }
.stop { fill: #fdecee; stroke: #b23a48; stroke-width: 3; }
.line { stroke: #24415d; stroke-width: 4; fill: none; marker-end: url(#arrow); }
.red { stroke: #b23a48; stroke-width: 3; fill: none; marker-end: url(#redArrow); }
.title { font: 700 34px Arial, sans-serif; fill: #18324a; }
.label { font: 700 22px Arial, sans-serif; fill: #18324a; }
.text { font: 18px Arial, sans-serif; fill: #294860; }
.good { font: 700 18px Arial, sans-serif; fill: #126244; }
.bad { font: 700 16px Arial, sans-serif; fill: #8d2632; }
</style>
</defs>
<rect class="bg" width="960" height="720" rx="28"/>
<text class="title" x="56" y="68">У каждого stop есть своя причина</text>
<rect class="step" x="58" y="142" width="164" height="126" rx="18"/>
<text class="label" x="84" y="184">fixed case</text>
<text class="text" x="84" y="216">baseline</text>
<text class="text" x="84" y="242">candidate + reader</text>
<path class="line" d="M224 205 L286 205"/>
<rect class="step" x="292" y="142" width="164" height="126" rx="18"/>
<text class="label" x="318" y="184">relation</text>
<text class="text" x="318" y="216">direction</text>
<text class="text" x="318" y="242">family + versions</text>
<path class="line" d="M458 205 L520 205"/>
<rect class="step" x="526" y="142" width="164" height="126" rx="18"/>
<text class="label" x="552" y="184">schema diff</text>
<text class="text" x="552" y="216">required fields</text>
<text class="text" x="552" y="242">type changes</text>
<path class="line" d="M692 205 L754 205"/>
<rect class="step" x="760" y="142" width="150" height="126" rx="18"/>
<text class="label" x="784" y="184">manifest</text>
<text class="text" x="784" y="216">declared</text>
<text class="text" x="784" y="242">additions</text>
<path class="line" d="M835 270 L835 338"/>
<rect class="step" x="742" y="344" width="168" height="126" rx="18"/>
<text class="label" x="768" y="386">consumer</text>
<text class="text" x="768" y="418">required fields</text>
<text class="text" x="768" y="444">addition policy</text>
<path class="line" d="M740 407 L654 407"/>
<rect class="ok" x="432" y="344" width="216" height="126" rx="18"/>
<text class="good" x="458" y="388">SYNTHETIC</text>
<text class="good" x="458" y="418">REVIEW HAND-OFF</text>
<text class="text" x="458" y="446">no deploy effect</text>
<path class="red" d="M374 270 L374 330 L274 330 L274 518"/>
<rect class="stop" x="58" y="522" width="206" height="112" rx="16"/>
<text class="bad" x="80" y="560">implicit comparison</text>
<text class="text" x="80" y="590">name relation</text>
<path class="red" d="M608 270 L608 518 L508 518"/>
<rect class="stop" x="286" y="522" width="210" height="112" rx="16"/>
<text class="bad" x="308" y="560">backward break</text>
<text class="text" x="308" y="590">repair surface</text>
<path class="red" d="M836 270 L836 304 L724 304 L724 518"/>
<rect class="stop" x="520" y="522" width="190" height="112" rx="16"/>
<text class="bad" x="542" y="560">hidden field</text>
<text class="text" x="542" y="590">repair manifest</text>
<path class="red" d="M826 470 L826 506 L826 518"/>
<rect class="stop" x="734" y="522" width="176" height="112" rx="16"/>
<text class="bad" x="756" y="560">strict reader</text>
<text class="text" x="756" y="590">separate decision</text>
</svg>