revise January 2025 AI coding assistant articles
Build and deploy / deploy (push) Successful in 16s

This commit is contained in:
2026-07-31 17:10:56 +03:00
parent 0f4693007e
commit 681651f9e5
7 changed files with 1075 additions and 1 deletions
@@ -0,0 +1,46 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 620" role="img" aria-labelledby="title desc">
<title id="title">Матрица ошибок правдоподобного сгенерированного кода</title>
<desc id="desc">Таблица разделяет ошибки scope, contract, test evidence и unknowns. Для каждой показаны ложный сигнал и отдельная проверка.</desc>
<rect width="900" height="620" fill="#101827"/>
<text x="42" y="58" fill="#edf6ff" font-family="Arial, sans-serif" font-size="28" font-weight="700">Правдоподобный код: матрица проверки</text>
<text x="42" y="86" fill="#bcd1e8" font-family="Arial, sans-serif" font-size="18">Каждый слой evidence отвечает на свой вопрос и не получает чужую гарантию.</text>
<rect x="38" y="124" width="824" height="56" fill="#203651" stroke="#6ca0dc" stroke-width="2"/>
<text x="60" y="159" fill="#eaf3ff" font-family="Arial, sans-serif" font-size="20" font-weight="700">Ошибка</text>
<text x="258" y="159" fill="#eaf3ff" font-family="Arial, sans-serif" font-size="20" font-weight="700">Ложный сигнал</text>
<text x="530" y="159" fill="#eaf3ff" font-family="Arial, sans-serif" font-size="20" font-weight="700">Проверка</text>
<text x="738" y="159" fill="#eaf3ff" font-family="Arial, sans-serif" font-size="20" font-weight="700">Действие</text>
<g font-family="Arial, sans-serif" font-size="20">
<rect x="38" y="180" width="824" height="94" fill="#17263d" stroke="#466b95" stroke-width="1"/>
<text x="60" y="217" fill="#8fc6ff" font-weight="700">Scope</text>
<text x="60" y="243" fill="#d1e5fb">Чистый лишний файл</text>
<text x="258" y="217" fill="#d1e5fb">«Связано с задачей»</text>
<text x="258" y="243" fill="#d1e5fb">без owner</text>
<text x="530" y="217" fill="#d1e5fb">Сверить paths</text>
<text x="530" y="243" fill="#d1e5fb">с prompt-card</text>
<text x="738" y="230" fill="#ffd0cd">STOP</text>
<rect x="38" y="274" width="824" height="94" fill="#1f3936" stroke="#5b9e8a" stroke-width="1"/>
<text x="60" y="311" fill="#9ee0c4" font-weight="700">Contract</text>
<text x="60" y="337" fill="#d0f0df">Happy path проходит</text>
<text x="258" y="311" fill="#d0f0df">«Код компактнее»</text>
<text x="258" y="337" fill="#d0f0df">но invalid изменён</text>
<text x="530" y="311" fill="#d0f0df">Fixed input-output</text>
<text x="530" y="337" fill="#d0f0df">и forbidden result</text>
<text x="738" y="324" fill="#ffd0cd">REQUEST</text>
<rect x="38" y="368" width="824" height="94" fill="#44361d" stroke="#b9964e" stroke-width="1"/>
<text x="60" y="405" fill="#f5d989" font-weight="700">Test</text>
<text x="60" y="431" fill="#faebbf">Есть зелёный test</text>
<text x="258" y="405" fill="#faebbf">«Покрытие есть»</text>
<text x="258" y="431" fill="#faebbf">для соседней ветки</text>
<text x="530" y="405" fill="#faebbf">Input, output и</text>
<text x="530" y="431" fill="#faebbf">forbidden effect</text>
<text x="738" y="418" fill="#ffd0cd">ADD CASE</text>
<rect x="38" y="462" width="824" height="94" fill="#3e2f4d" stroke="#9272b2" stroke-width="1"/>
<text x="60" y="499" fill="#d4b9ee" font-weight="700">Unknown</text>
<text x="60" y="525" fill="#eedfff">Нет видимого сбоя</text>
<text x="258" y="499" fill="#eedfff">«Риска нет»</text>
<text x="258" y="525" fill="#eedfff">без evidence</text>
<text x="530" y="499" fill="#eedfff">Назвать blind zone</text>
<text x="530" y="525" fill="#eedfff">и owner question</text>
<text x="738" y="512" fill="#ffd0cd">DO NOT CLAIM</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 620" role="img" aria-labelledby="title desc">
<title id="title">Путь от prompt-card к проверенному ограниченному diff</title>
<desc id="desc">Четыре шага: контракт задачи, ограниченный diff, human review и focused test. Выход за границу задачи ведёт к остановке до merge.</desc>
<rect width="900" height="620" fill="#101827"/>
<rect x="36" y="32" width="828" height="66" rx="14" fill="#17263d" stroke="#5bc0be" stroke-width="2"/>
<text x="62" y="61" fill="#ecf7f6" font-family="Arial, sans-serif" font-size="25" font-weight="700">Prompt не заменяет постановку задачи</text>
<text x="62" y="84" fill="#bfd7d5" font-family="Arial, sans-serif" font-size="17">Сначала контракт, затем candidate diff и отдельные доказательства.</text>
<rect x="40" y="148" width="180" height="234" rx="12" fill="#17304a" stroke="#6ca0dc" stroke-width="2"/>
<text x="62" y="186" fill="#eaf3ff" font-family="Arial, sans-serif" font-size="24" font-weight="700">1. Prompt-card</text>
<text x="62" y="222" fill="#c6dcf3" font-family="Arial, sans-serif" font-size="18">task</text>
<text x="62" y="250" fill="#c6dcf3" font-family="Arial, sans-serif" font-size="18">allowed context</text>
<text x="62" y="278" fill="#c6dcf3" font-family="Arial, sans-serif" font-size="18">negative constraints</text>
<text x="62" y="306" fill="#c6dcf3" font-family="Arial, sans-serif" font-size="18">owner + evidence</text>
<path d="M224 265H239" fill="none" stroke="#5bc0be" stroke-width="6" stroke-linecap="round"/>
<path d="M238 255l20 10-20 10" fill="#5bc0be"/>
<rect x="260" y="148" width="180" height="234" rx="12" fill="#1e3a36" stroke="#63c595" stroke-width="2"/>
<text x="282" y="186" fill="#ecfff6" font-family="Arial, sans-serif" font-size="22" font-weight="700">2. Diff scope</text>
<text x="282" y="222" fill="#c7e9d7" font-family="Arial, sans-serif" font-size="18">named paths</text>
<text x="282" y="250" fill="#c7e9d7" font-family="Arial, sans-serif" font-size="18">one boundary</text>
<text x="282" y="278" fill="#c7e9d7" font-family="Arial, sans-serif" font-size="18">no hidden default</text>
<text x="282" y="306" fill="#c7e9d7" font-family="Arial, sans-serif" font-size="18">candidate only</text>
<path d="M444 265H459" fill="none" stroke="#5bc0be" stroke-width="6" stroke-linecap="round"/>
<path d="M458 255l20 10-20 10" fill="#5bc0be"/>
<rect x="480" y="148" width="180" height="234" rx="12" fill="#403350" stroke="#bd8ee6" stroke-width="2"/>
<text x="502" y="186" fill="#f7eeff" font-family="Arial, sans-serif" font-size="24" font-weight="700">3. Review</text>
<text x="502" y="224" fill="#e3cff8" font-family="Arial, sans-serif" font-size="18">scope</text>
<text x="502" y="252" fill="#e3cff8" font-family="Arial, sans-serif" font-size="18">contract</text>
<text x="502" y="280" fill="#e3cff8" font-family="Arial, sans-serif" font-size="18">owner</text>
<path d="M664 265H679" fill="none" stroke="#5bc0be" stroke-width="6" stroke-linecap="round"/>
<path d="M678 255l20 10-20 10" fill="#5bc0be"/>
<rect x="700" y="148" width="160" height="234" rx="12" fill="#49391d" stroke="#edc667" stroke-width="2"/>
<text x="722" y="186" fill="#fff7df" font-family="Arial, sans-serif" font-size="24" font-weight="700">4. Test</text>
<text x="722" y="226" fill="#f5e5ba" font-family="Arial, sans-serif" font-size="18">changed branch</text>
<text x="722" y="254" fill="#f5e5ba" font-family="Arial, sans-serif" font-size="18">result + effect</text>
<path d="M350 386V434" fill="none" stroke="#ef6f6c" stroke-width="5" stroke-linecap="round"/>
<path d="M340 433l10 22 10-22" fill="#ef6f6c"/>
<rect x="174" y="462" width="552" height="104" rx="13" fill="#4d242b" stroke="#ef6f6c" stroke-width="2"/>
<text x="200" y="500" fill="#ffe8e7" font-family="Arial, sans-serif" font-size="24" font-weight="700">STOP before merge</text>
<text x="200" y="530" fill="#f8c1be" font-family="Arial, sans-serif" font-size="18">extra path, contract mismatch или test не той ветки</text>
<text x="200" y="552" fill="#f8c1be" font-family="Arial, sans-serif" font-size="16">Новый scope требует отдельного решения owner.</text>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

@@ -0,0 +1,37 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 620" role="img" aria-labelledby="title desc">
<title id="title">Verification gate для сгенерированного diff до merge</title>
<desc id="desc">Четыре входа в проверку: prompt-card, bounded diff, contract rows и focused test. Любой mismatch ведёт к остановке до merge. Только human decision может одобрить ограниченный diff.</desc>
<rect width="900" height="620" fill="#101827"/>
<text x="44" y="58" fill="#edf6ff" font-family="Arial, sans-serif" font-size="28" font-weight="700">Verification gate до merge</text>
<text x="44" y="86" fill="#bfd5eb" font-family="Arial, sans-serif" font-size="18">Проверяем границу решения, а не убедительность generated text.</text>
<g font-family="Arial, sans-serif" font-size="20" font-weight="700">
<rect x="48" y="136" width="180" height="74" rx="12" fill="#19304a" stroke="#6ea3de" stroke-width="2"/>
<text x="76" y="180" fill="#eaf3ff">Prompt-card</text>
<rect x="258" y="136" width="180" height="74" rx="12" fill="#1e3b37" stroke="#63c595" stroke-width="2"/>
<text x="286" y="180" fill="#edfff6">Bounded diff</text>
<rect x="468" y="136" width="180" height="74" rx="12" fill="#48391f" stroke="#e1b95e" stroke-width="2"/>
<text x="500" y="180" fill="#fff6dd">Contract rows</text>
<rect x="678" y="136" width="180" height="74" rx="12" fill="#40324f" stroke="#b88add" stroke-width="2"/>
<text x="712" y="180" fill="#f7edff">Focused test</text>
</g>
<path d="M138 216V270M348 216V270M558 216V270M768 216V270" fill="none" stroke="#5bc0be" stroke-width="5" stroke-linecap="round"/>
<path d="M138 269l-10-18h20zM348 269l-10-18h20zM558 269l-10-18h20zM768 269l-10-18h20z" fill="#5bc0be"/>
<rect x="252" y="280" width="396" height="102" rx="15" fill="#203650" stroke="#74a9e3" stroke-width="3"/>
<text x="326" y="324" fill="#eaf4ff" font-family="Arial, sans-serif" font-size="27" font-weight="700">Verification gate</text>
<text x="284" y="353" fill="#c9e0f7" font-family="Arial, sans-serif" font-size="18">scope · contract · reviewer evidence · test evidence</text>
<path d="M252 331H158V418" fill="none" stroke="#ef6f6c" stroke-width="5" stroke-linecap="round"/>
<path d="M648 331H742V418" fill="none" stroke="#ef6f6c" stroke-width="5" stroke-linecap="round"/>
<rect x="42" y="430" width="264" height="116" rx="12" fill="#4d242b" stroke="#ef6f6c" stroke-width="2"/>
<text x="68" y="468" fill="#ffe9e8" font-family="Arial, sans-serif" font-size="23" font-weight="700">STOP boundary</text>
<text x="68" y="498" fill="#f7bfbd" font-family="Arial, sans-serif" font-size="17">scope / contract mismatch</text>
<text x="68" y="522" fill="#f7bfbd" font-family="Arial, sans-serif" font-size="17">не merge, не rollback</text>
<rect x="594" y="430" width="264" height="116" rx="12" fill="#4d242b" stroke="#ef6f6c" stroke-width="2"/>
<text x="620" y="468" fill="#ffe9e8" font-family="Arial, sans-serif" font-size="23" font-weight="700">STOP boundary</text>
<text x="620" y="498" fill="#f7bfbd" font-family="Arial, sans-serif" font-size="17">test mismatch / unknown</text>
<text x="620" y="522" fill="#f7bfbd" font-family="Arial, sans-serif" font-size="17">request missing evidence</text>
<path d="M450 386V438" fill="none" stroke="#5bc0be" stroke-width="5" stroke-linecap="round"/>
<path d="M440 437l10 20 10-20" fill="#5bc0be"/>
<rect x="330" y="462" width="240" height="104" rx="13" fill="#1f4a3d" stroke="#65c596" stroke-width="2"/>
<text x="366" y="500" fill="#edfff5" font-family="Arial, sans-serif" font-size="23" font-weight="700">Human decision</text>
<text x="364" y="530" fill="#ccead9" font-family="Arial, sans-serif" font-size="17">approve or request changes</text>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB