revise March 2024 package boundary articles
Build and deploy / deploy (push) Successful in 16s

This commit is contained in:
2026-07-31 15:43:02 +03:00
parent ecb66c82b3
commit a93936ecbf
7 changed files with 786 additions and 1 deletions
@@ -0,0 +1,54 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 680" role="img" aria-labelledby="title desc">
<title id="title">Маршрут разбора запрещённого импорта</title>
<desc id="desc">Четыре шага ведут от симптома domain type в utility к причине неописанного public API, проверке фиксированного synthetic edge и действию: вернуть смысл доменному owner-у, оставить root API и зафиксировать route. Красная стрелка показывает, что deep import в internal subpath останавливают до изменения.</desc>
<rect width="960" height="680" fill="#F7F9FC"/>
<rect x="44" y="36" width="872" height="72" rx="16" fill="#16325C"/>
<text x="78" y="78" fill="#FFFFFF" font-family="Arial, sans-serif" font-size="30" font-weight="700">Маршрут: симптом → причина → проверка → действие</text>
<text x="78" y="98" fill="#DCE8FF" font-family="Arial, sans-serif" font-size="16">Разбор одного fixed synthetic edge до конфигурации настоящего инструмента</text>
<rect x="56" y="170" width="194" height="190" rx="16" fill="#FFF1F3" stroke="#C83349" stroke-width="4"/>
<text x="78" y="216" fill="#8D1D31" font-family="Arial, sans-serif" font-size="22" font-weight="700">1. Симптом</text>
<text x="78" y="252" fill="#A93649" font-family="Arial, sans-serif" font-size="17">utility imports</text>
<text x="78" y="280" fill="#A93649" font-family="Arial, sans-serif" font-size="18" font-weight="700">InvoiceStatus</text>
<text x="78" y="316" fill="#A93649" font-family="Arial, sans-serif" font-size="15">или consumer идёт</text>
<text x="78" y="338" fill="#A93649" font-family="Arial, sans-serif" font-size="15">в internal subpath</text>
<rect x="282" y="170" width="194" height="190" rx="16" fill="#FFF8E5" stroke="#AA6A00" stroke-width="4"/>
<text x="304" y="216" fill="#6A4200" font-family="Arial, sans-serif" font-size="22" font-weight="700">2. Причина</text>
<text x="304" y="252" fill="#825607" font-family="Arial, sans-serif" font-size="17">не названы root</text>
<text x="304" y="278" fill="#825607" font-family="Arial, sans-serif" font-size="17">API, owner и</text>
<text x="304" y="304" fill="#825607" font-family="Arial, sans-serif" font-size="17">запрещённые</text>
<text x="304" y="330" fill="#825607" font-family="Arial, sans-serif" font-size="17">направления</text>
<rect x="508" y="170" width="194" height="190" rx="16" fill="#E8F1FF" stroke="#2767BE" stroke-width="4"/>
<text x="530" y="216" fill="#16325C" font-family="Arial, sans-serif" font-size="22" font-weight="700">3. Проверка</text>
<text x="530" y="252" fill="#294B77" font-family="Arial, sans-serif" font-size="17">fixed synthetic</text>
<text x="530" y="278" fill="#294B77" font-family="Arial, sans-serif" font-size="17">edge сверяется</text>
<text x="530" y="304" fill="#294B77" font-family="Arial, sans-serif" font-size="17">с API record</text>
<text x="530" y="330" fill="#294B77" font-family="Arial, sans-serif" font-size="15">не repository scan</text>
<rect x="734" y="170" width="170" height="190" rx="16" fill="#ECF9F0" stroke="#26834A" stroke-width="4"/>
<text x="756" y="216" fill="#154B2A" font-family="Arial, sans-serif" font-size="22" font-weight="700">4. Действие</text>
<text x="756" y="252" fill="#245B37" font-family="Arial, sans-serif" font-size="16">domain meaning</text>
<text x="756" y="276" fill="#245B37" font-family="Arial, sans-serif" font-size="16">→ domain owner</text>
<text x="756" y="310" fill="#245B37" font-family="Arial, sans-serif" font-size="16">consumer → root</text>
<text x="756" y="334" fill="#245B37" font-family="Arial, sans-serif" font-size="16">API or review</text>
<path d="M250 265 L282 265" fill="none" stroke="#C83349" stroke-width="5" marker-end="url(#arrowRed)"/>
<path d="M476 265 L508 265" fill="none" stroke="#AA6A00" stroke-width="5" marker-end="url(#arrowGold)"/>
<path d="M702 265 L734 265" fill="none" stroke="#2767BE" stroke-width="5" marker-end="url(#arrowBlue)"/>
<path d="M154 420 C280 548 500 548 622 420" fill="none" stroke="#C83349" stroke-width="5" stroke-dasharray="12 10" marker-end="url(#arrowRed)"/>
<rect x="268" y="510" width="430" height="68" rx="14" fill="#FFF0F2" stroke="#C83349" stroke-width="2"/>
<text x="294" y="539" fill="#8D1D31" font-family="Arial, sans-serif" font-size="19" font-weight="700">Стоп: internal import не становится API молча</text>
<text x="294" y="563" fill="#8D1D31" font-family="Arial, sans-serif" font-size="15">Нужен root export review или удаление зависимости.</text>
<rect x="44" y="624" width="872" height="28" rx="9" fill="#DCE8FF"/>
<text x="62" y="643" fill="#274873" font-family="Arial, sans-serif" font-size="14">Результат fixture — decision draft only: real files, lint, CI, network и production не затрагиваются.</text>
<defs>
<marker id="arrowRed" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#C83349"/></marker>
<marker id="arrowGold" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#AA6A00"/></marker>
<marker id="arrowBlue" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#2767BE"/></marker>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB