rewrite 2026-09 and 2027 articles for reader-facing quality
Build and deploy / deploy (push) Successful in 18s

This commit is contained in:
2026-07-31 22:26:56 +03:00
parent 3bfc3f21c4
commit 440c8721dc
69 changed files with 4424 additions and 3533 deletions
@@ -1 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" width="720" height="500" viewBox="0 0 720 500" role="img" aria-labelledby="title desc"><title id="title">Матрица границы версии и инварианта</title><desc id="desc">Русская матрица отделяет имя вызова от synthetic контракта и version boundary; пропуски возвращают stop.</desc><style>text{font-family:Arial,sans-serif;fill:#172033}.h{font-size:23px;font-weight:700}.t{font-size:16px;font-weight:700}.s{font-size:14px}.head{fill:#dbeaff}.ok{fill:#e9f8ef}.no{fill:#fff0f0}.line{stroke:#6581a5;stroke-width:2}</style><rect width="720" height="500" fill="#fff"/><text x="33" y="42" class="h">Граница версии: имя вызова не равно инварианту</text><rect x="36" y="75" width="648" height="355" fill="#fff" class="line"/><rect x="36" y="75" width="648" height="58" class="head"/><path d="M190 75V430M390 75V430M540 75V430M36 133H684M36 230H684M36 330H684" class="line"/><text x="64" y="108" class="t">Уровень</text><text x="225" y="108" class="t">Что известно</text><text x="432" y="108" class="t">Вывод</text><text x="562" y="108" class="t">Статус</text><text x="61" y="165" class="t">Имя вызова</text><text x="215" y="162" class="s">только лексема</text><text x="408" y="162" class="s">инвариант не доказан</text><rect x="554" y="145" width="110" height="38" rx="7" class="no"/><text x="577" y="170" class="t">СТОП</text><text x="61" y="262" class="t">Контракт</text><text x="212" y="249" class="s">named synthetic</text><text x="212" y="270" class="s">placeholder</text><text x="406" y="249" class="s">передать вопрос</text><text x="406" y="270" class="s">без API-факта</text><rect x="554" y="242" width="110" height="38" rx="7" class="ok"/><text x="568" y="267" class="t">HAND-OFF</text><text x="61" y="363" class="t">Версия</text><text x="212" y="350" class="s">boundary названа</text><text x="212" y="371" class="s">без номера</text><text x="406" y="350" class="s">не обещать</text><text x="406" y="371" class="s">совместимость</text><rect x="554" y="343" width="110" height="38" rx="7" class="no"/><text x="577" y="368" class="t">СТОП</text><text x="39" y="468" class="s">Красный: нет основания усиливать claim. Зелёный: только synthetic plan hand-off.</text></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 500" role="img" aria-labelledby="title desc">
<title id="title">Матрица поверхности Bitrix API</title>
<desc id="desc">Матрица отделяет подключение модуля, доступные методы, mapping полей и семантику ошибки перед заменой API.</desc>
<rect width="720" height="500" fill="#fff"/><style>text{font-family:Arial,sans-serif;fill:#172033}.head{font-size:23px;font-weight:700}.bold{font-size:15px;font-weight:700}.small{font-size:13px}.grid{stroke:#6581a5;stroke-width:1}.good{fill:#e9f8ef}.bad{fill:#fff0f0}.blue{fill:#dbeaff}</style>
<text x="32" y="42" class="head">Bitrix API: имя метода не равно контракту</text>
<rect x="36" y="74" width="648" height="58" class="blue"/><text x="58" y="109" class="bold">Слой</text><text x="205" y="109" class="bold">Проверяем</text><text x="430" y="109" class="bold">Результат</text><text x="568" y="109" class="bold">Дальше</text>
<g class="grid"><rect x="36" y="132" width="648" height="70" fill="#fff"/><rect x="36" y="202" width="648" height="70" fill="#f8fafc"/><rect x="36" y="272" width="648" height="70" fill="#fff"/><rect x="36" y="342" width="648" height="70" fill="#f8fafc"/></g>
<text x="58" y="174" class="bold">Модуль</text><text x="205" y="165" class="small">IncludeModule</text><text x="205" y="185" class="small">версия установки</text><rect x="420" y="151" width="112" height="34" rx="6" class="good"/><text x="476" y="174" text-anchor="middle" class="bold">загружен</text><text x="568" y="174" class="small">искать surface</text>
<text x="58" y="244" class="bold">Метод</text><text x="205" y="235" class="small">CUser или UserTable</text><text x="205" y="255" class="small">операция доступна</text><rect x="420" y="221" width="112" height="34" rx="6" class="good"/><text x="476" y="244" text-anchor="middle" class="bold">найден</text><text x="568" y="244" class="small">сверить поля</text>
<text x="58" y="314" class="bold">Поля</text><text x="205" y="305" class="small">type, empty, missing</text><text x="205" y="325" class="small">mapping операции</text><rect x="420" y="291" width="112" height="34" rx="6" class="good"/><text x="476" y="314" text-anchor="middle" class="bold">совпали</text><text x="568" y="314" class="small">запустить тест</text>
<text x="58" y="384" class="bold">Семантика</text><text x="205" y="375" class="small">ошибка, event, ID</text><text x="205" y="395" class="small">read-back</text><rect x="420" y="361" width="112" height="34" rx="6" class="bad"/><text x="476" y="384" text-anchor="middle" class="bold" fill="#991b1b">неясно</text><text x="568" y="377" class="small">остановить</text><text x="568" y="395" class="small">замену</text>
<text x="36" y="458" class="small">Поверхность API подтверждается только после проверки среды и смыслового результата операции.</text>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB