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

74 lines
4.3 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 720" role="img" aria-labelledby="title desc">
<title id="title">Матрица compatibility review для producer и consumer</title>
<desc id="desc">Таблица сравнивает fixed candidate changes и profiles consumer. Tolerant reader допускает объявленное поле priority, strict reader останавливает review, скрытое поле и неявное сравнение получают собственные статусы.</desc>
<defs>
<style>
.bg { fill: #f6f8fb; }
.header { fill: #24415d; }
.rowhead { fill: #e8eef4; }
.ok { fill: #e7f3ef; }
.stop { fill: #fdecee; }
.unknown { fill: #fff4d6; }
.grid { stroke: #ffffff; stroke-width: 4; }
.title { font: 700 34px Arial, sans-serif; fill: #18324a; }
.head { font: 700 21px Arial, sans-serif; fill: #ffffff; }
.label { font: 700 20px 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 17px Arial, sans-serif; fill: #8d2632; }
.warn { font: 700 17px Arial, sans-serif; fill: #9a6815; }
</style>
</defs>
<rect class="bg" width="960" height="720" rx="28"/>
<text class="title" x="56" y="68">Один schema diff не даёт один verdict</text>
<text class="text" x="56" y="104">Статус живёт в пересечении named producer, change и capability reader.</text>
<rect class="header" x="56" y="154" width="266" height="92" rx="14"/>
<rect class="header" x="326" y="154" width="190" height="92" rx="14"/>
<rect class="header" x="520" y="154" width="190" height="92" rx="14"/>
<rect class="header" x="714" y="154" width="190" height="92" rx="14"/>
<text class="head" x="80" y="194">candidate change</text>
<text class="head" x="80" y="222">и relation</text>
<text class="head" x="348" y="194">tolerant</text>
<text class="head" x="348" y="222">reader</text>
<text class="head" x="544" y="194">strict</text>
<text class="head" x="544" y="222">reader</text>
<text class="head" x="738" y="194">unnamed</text>
<text class="head" x="738" y="222">relation</text>
<rect class="rowhead" x="56" y="250" width="266" height="118" rx="14"/>
<rect class="ok" x="326" y="250" width="190" height="118" rx="14"/>
<rect class="stop" x="520" y="250" width="190" height="118" rx="14"/>
<rect class="unknown" x="714" y="250" width="190" height="118" rx="14"/>
<text class="label" x="80" y="290">v1.1 adds</text>
<text class="label" x="80" y="318">priority (declared)</text>
<text class="good" x="346" y="294">HAND-OFF</text>
<text class="text" x="346" y="326">accepts additions</text>
<text class="bad" x="542" y="294">STOP</text>
<text class="bad" x="542" y="324">incompatible</text>
<text class="warn" x="736" y="294">STOP</text>
<text class="warn" x="736" y="324">implicit relation</text>
<rect class="rowhead" x="56" y="372" width="266" height="118" rx="14"/>
<rect class="stop" x="326" y="372" width="190" height="118" rx="14"/>
<rect class="stop" x="520" y="372" width="190" height="118" rx="14"/>
<rect class="unknown" x="714" y="372" width="190" height="118" rx="14"/>
<text class="label" x="80" y="412">v2 removes</text>
<text class="label" x="80" y="440">required state</text>
<text class="bad" x="346" y="416">STOP</text>
<text class="bad" x="346" y="446">backward break</text>
<text class="bad" x="542" y="416">STOP</text>
<text class="bad" x="542" y="446">backward break</text>
<text class="warn" x="736" y="416">NO REVIEW</text>
<text class="warn" x="736" y="446">pair is unnamed</text>
<rect class="rowhead" x="56" y="494" width="266" height="118" rx="14"/>
<rect class="stop" x="326" y="494" width="578" height="118" rx="14"/>
<text class="label" x="80" y="534">v1.1 adds</text>
<text class="label" x="80" y="562">routingHint (hidden)</text>
<text class="bad" x="352" y="538">STOP — undocumented schema field</text>
<text class="text" x="352" y="572">consumer policy cannot approve a field absent from manifest</text>
<text class="text" x="56" y="664">Зелёная ячейка не означает deploy: она передаёт только fixed synthetic compatibility review.</text>
</svg>