Files
progcode/web/public/assets/editorial/2025/ai-code-verification-2025-evidence-chain.svg
T
huncode 8a27f0f966
Build and deploy / deploy (push) Successful in 15s
revise February 2025 AI code verification articles
2026-07-31 17:20:09 +03:00

60 lines
5.2 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 800" role="img" aria-labelledby="title desc">
<title id="title">Цепочка доказательств при расходящемся generated diff</title>
<desc id="desc">Шесть узлов показывают переход от фиксированного diff к контракту, статической проверке, тесту, review и ручному сценарию. Расхождение приводит к остановке подготовки merge и вопросу владельцу, а не к автоматическому revert или rollback.</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="#475569"/></marker>
</defs>
<rect width="1200" height="800" fill="#f8fafc"/>
<text x="58" y="61" fill="#0f172a" font-family="Arial, sans-serif" font-size="38" font-weight="700">Evidence chain: наблюдение → решение</text>
<text x="58" y="98" fill="#475569" font-family="Arial, sans-serif" font-size="24">Каждый узел отвечает на свой вопрос. Решение принимает человек с полномочиями.</text>
<g font-family="Arial, sans-serif" text-anchor="middle">
<rect x="58" y="175" width="160" height="112" rx="16" fill="#e2e8f0" stroke="#64748b" stroke-width="3"/>
<text x="138" y="218" fill="#0f172a" font-size="28" font-weight="700">Fixed diff</text>
<text x="138" y="254" fill="#334155" font-size="21">one stated change</text>
<rect x="250" y="175" width="160" height="112" rx="16" fill="#dbeafe" stroke="#2563eb" stroke-width="3"/>
<text x="330" y="218" fill="#172554" font-size="28" font-weight="700">Contract</text>
<text x="330" y="254" fill="#1e3a8a" font-size="21">shape + boundary</text>
<rect x="442" y="175" width="160" height="112" rx="16" fill="#dcfce7" stroke="#16a34a" stroke-width="3"/>
<text x="522" y="218" fill="#14532d" font-size="28" font-weight="700">Static</text>
<text x="522" y="254" fill="#166534" font-size="21">known pattern</text>
<rect x="634" y="175" width="160" height="112" rx="16" fill="#fef3c7" stroke="#d97706" stroke-width="3"/>
<text x="714" y="218" fill="#78350f" font-size="28" font-weight="700">Test</text>
<text x="714" y="254" fill="#92400e" font-size="21">accept + reject</text>
<rect x="826" y="175" width="160" height="112" rx="16" fill="#f3e8ff" stroke="#9333ea" stroke-width="3"/>
<text x="906" y="218" fill="#581c87" font-size="28" font-weight="700">Review</text>
<text x="906" y="254" fill="#6b21a8" font-size="21">intent + scope</text>
<rect x="1018" y="175" width="124" height="112" rx="16" fill="#fee2e2" stroke="#dc2626" stroke-width="3"/>
<text x="1080" y="214" fill="#7f1d1d" font-size="25" font-weight="700">Manual</text>
<text x="1080" y="246" fill="#991b1b" font-size="19">scenario</text>
</g>
<line x1="220" y1="231" x2="244" y2="231" stroke="#475569" stroke-width="4" marker-end="url(#arrow)"/>
<line x1="412" y1="231" x2="436" y2="231" stroke="#475569" stroke-width="4" marker-end="url(#arrow)"/>
<line x1="604" y1="231" x2="628" y2="231" stroke="#475569" stroke-width="4" marker-end="url(#arrow)"/>
<line x1="796" y1="231" x2="820" y2="231" stroke="#475569" stroke-width="4" marker-end="url(#arrow)"/>
<line x1="988" y1="231" x2="1012" y2="231" stroke="#475569" stroke-width="4" marker-end="url(#arrow)"/>
<path d="M330,302 C330,390 500,382 500,448" fill="none" stroke="#64748b" stroke-width="4" marker-end="url(#arrow)"/>
<path d="M714,302 C714,390 700,382 700,448" fill="none" stroke="#64748b" stroke-width="4" marker-end="url(#arrow)"/>
<path d="M1080,302 C1080,390 900,382 900,448" fill="none" stroke="#64748b" stroke-width="4" marker-end="url(#arrow)"/>
<rect x="370" y="455" width="460" height="125" rx="20" fill="#fff1f2" stroke="#be123c" stroke-width="4"/>
<text x="600" y="502" text-anchor="middle" fill="#881337" font-family="Arial, sans-serif" font-size="33" font-weight="700">Evidence расходится?</text>
<text x="600" y="543" text-anchor="middle" fill="#9f1239" font-family="Arial, sans-serif" font-size="25">назвать contract, gap и scope</text>
<line x1="510" y1="586" x2="360" y2="650" stroke="#be123c" stroke-width="5" marker-end="url(#arrow)"/>
<line x1="690" y1="586" x2="840" y2="650" stroke="#0f766e" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="115" y="660" width="360" height="95" rx="16" fill="#fee2e2" stroke="#dc2626" stroke-width="3"/>
<text x="295" y="700" text-anchor="middle" fill="#7f1d1d" font-family="Arial, sans-serif" font-size="28" font-weight="700">STOP preparation</text>
<text x="295" y="733" text-anchor="middle" fill="#991b1b" font-family="Arial, sans-serif" font-size="21">не merge, не revert, не rollback</text>
<rect x="725" y="660" width="360" height="95" rx="16" fill="#ccfbf1" stroke="#0f766e" stroke-width="3"/>
<text x="905" y="700" text-anchor="middle" fill="#134e4a" font-family="Arial, sans-serif" font-size="28" font-weight="700">Human approval</text>
<text x="905" y="733" text-anchor="middle" fill="#115e59" font-family="Arial, sans-serif" font-size="21">только с фактическим evidence</text>
</svg>