Files
progcode/web/public/assets/editorial/2021/architecture-review-diagnosis-2021.svg
T
huncode 15a25c35d3
Build and deploy / deploy (push) Successful in 16s
revise December 2021 architecture review articles
2026-07-31 13:25:10 +03:00

64 lines
4.1 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 690" role="img" aria-labelledby="title desc">
<title id="title">Безопасная диагностика публикации заметки</title>
<desc id="desc">Диагностика последовательно проверяет decision, каноническую заметку, publication intent и projection. Pending intent ведёт к наблюдению relay. Совпадающая projection передаёт работу в read contract. Ни одна ветка не удаляет source.</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="#335e8a"/></marker>
<style>
.bg { fill: #f7f6f1; }
.title { fill: #17212b; font: 700 28px system-ui, -apple-system, sans-serif; }
.sub { fill: #52616d; font: 400 16px system-ui, -apple-system, sans-serif; }
.label { fill: #17212b; font: 700 19px system-ui, -apple-system, sans-serif; }
.text { fill: #334452; font: 400 15px system-ui, -apple-system, sans-serif; }
.mini { fill: #52616d; font: 600 13px system-ui, -apple-system, sans-serif; letter-spacing: .3px; }
.line { stroke: #335e8a; stroke-width: 3; marker-end: url(#arrow); }
.check { fill: #eaf2fb; stroke: #2e6da4; stroke-width: 2; }
.state { fill: #fff; stroke: #7f8b96; stroke-width: 2; }
.pending { fill: #fff5dd; stroke: #b67813; stroke-width: 2; }
.ready { fill: #e8f5ef; stroke: #25734f; stroke-width: 2; }
.stop { fill: #fbe9e7; stroke: #b84b3c; stroke-width: 2; }
</style>
</defs>
<rect class="bg" width="960" height="690" rx="24"/>
<text class="title" x="48" y="54">Диагностика: не пересоздавать source до evidence</text>
<text class="sub" x="48" y="82">Каждая ветка называет границу и следующее недеструктивное действие.</text>
<rect class="check" x="354" y="116" width="252" height="78" rx="14"/>
<text class="mini" x="380" y="145">СИМПТОМ</text>
<text class="label" x="380" y="174">public read не подтвердил note</text>
<line class="line" x1="480" y1="194" x2="480" y2="244"/>
<rect class="state" x="354" y="244" width="252" height="82" rx="14"/>
<text class="label" x="380" y="278">Есть decision?</text>
<text class="text" x="380" y="305">context + evidence + option</text>
<line class="line" x1="354" y1="285" x2="206" y2="285"/>
<rect class="stop" x="48" y="238" width="158" height="94" rx="14"/>
<text class="mini" x="72" y="268">НЕТ</text>
<text class="label" x="72" y="297">record decision</text>
<text class="text" x="72" y="320">не писать новую note</text>
<line class="line" x1="480" y1="326" x2="480" y2="376"/>
<rect class="state" x="354" y="376" width="252" height="82" rx="14"/>
<text class="label" x="380" y="410">Есть canonical note?</text>
<text class="text" x="380" y="437">id + revision</text>
<line class="line" x1="354" y1="417" x2="206" y2="417"/>
<rect class="stop" x="48" y="370" width="158" height="94" rx="14"/>
<text class="mini" x="72" y="400">НЕТ</text>
<text class="label" x="72" y="429">check write</text>
<text class="text" x="72" y="452">сохранить source evidence</text>
<line class="line" x1="480" y1="458" x2="480" y2="508"/>
<rect class="state" x="354" y="508" width="252" height="82" rx="14"/>
<text class="label" x="380" y="542">Есть intent key?</text>
<text class="text" x="380" y="569">noteId:revision</text>
<line class="line" x1="606" y1="549" x2="732" y2="549"/>
<rect class="pending" x="732" y="498" width="180" height="102" rx="14"/>
<text class="mini" x="758" y="528">PENDING</text>
<text class="label" x="758" y="557">observe relay</text>
<text class="text" x="758" y="581">не менять source</text>
<line class="line" x1="480" y1="590" x2="480" y2="635"/>
<rect class="ready" x="320" y="618" width="320" height="58" rx="14"/>
<text class="label" x="348" y="646">projection current</text>
<text class="text" x="348" y="669">передать проверку read contract</text>
</svg>