Files
progcode/web/public/assets/editorial/2024/modular-monolith-2024-boundary-test-loop.svg
huncode ecb66c82b3
Build and deploy / deploy (push) Successful in 15s
revise February 2024 modular monolith articles
2026-07-31 15:37:40 +03:00

57 lines
4.9 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 820 1000" role="img" aria-labelledby="title desc">
<title id="title">Петля проверки границ в fixed synthetic модели</title>
<desc id="desc">Шесть шагов: fixed input from-to-surface, проверка формы, сверка public API, сверка разрешённого направления и цикла, отчёт accepted или violations, ручной review карты. Боковая панель говорит, что файл, CI, сеть, trace и production не используются.</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="#7DD3FC"/></marker>
<marker id="arrow-small" markerWidth="9" markerHeight="9" refX="7" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 Z" fill="#39D49A"/></marker>
</defs>
<rect width="820" height="1000" rx="28" fill="#0B1220"/>
<rect x="24" y="24" width="772" height="952" rx="20" fill="#111C30" stroke="#263653" stroke-width="2"/>
<text x="54" y="78" fill="#F8FAFC" font-family="Arial, sans-serif" font-size="31" font-weight="700">Петля проверки boundary policy</text>
<text x="54" y="112" fill="#B9C8DE" font-family="Arial, sans-serif" font-size="19">PASS подтверждает карту в памяти, затем человек решает, менять ли policy.</text>
<g font-family="Arial, sans-serif">
<rect x="58" y="162" width="322" height="106" rx="16" fill="#193252" stroke="#4D7DB8" stroke-width="2"/>
<text x="82" y="199" fill="#E5F0FF" font-size="23" font-weight="700">1. fixed synthetic input</text>
<text x="82" y="231" fill="#B8D4F5" font-size="18">from · to · surface · map version</text>
<rect x="58" y="320" width="322" height="106" rx="16" fill="#172740" stroke="#526A91" stroke-width="2"/>
<text x="82" y="357" fill="#E5F0FF" font-size="23" font-weight="700">2. форма и fixed map</text>
<text x="82" y="389" fill="#B8C7DE" font-size="18">лишнее поле → reject</text>
<rect x="58" y="478" width="322" height="106" rx="16" fill="#172740" stroke="#526A91" stroke-width="2"/>
<text x="82" y="515" fill="#E5F0FF" font-size="23" font-weight="700">3. public surface</text>
<text x="82" y="547" fill="#B8C7DE" font-size="18">*.internal → violation</text>
<rect x="58" y="636" width="322" height="106" rx="16" fill="#172740" stroke="#526A91" stroke-width="2"/>
<text x="82" y="673" fill="#E5F0FF" font-size="23" font-weight="700">4. direction и DAG</text>
<text x="82" y="705" fill="#B8C7DE" font-size="18">forbidden link или cycle → violation</text>
<rect x="440" y="404" width="322" height="132" rx="16" fill="#164237" stroke="#39D49A" stroke-width="2"/>
<text x="464" y="443" fill="#D7FCE7" font-size="23" font-weight="700">5. synthetic report</text>
<text x="464" y="475" fill="#B6F4D8" font-size="18">accepted | violations | not-granted</text>
<text x="464" y="504" fill="#B6F4D8" font-size="16">не CI result и не repository scan</text>
<rect x="440" y="628" width="322" height="132" rx="16" fill="#2C254D" stroke="#9B8AF7" stroke-width="2"/>
<text x="464" y="667" fill="#EEEAFE" font-size="23" font-weight="700">6. ручной review карты</text>
<text x="464" y="699" fill="#D3CCFF" font-size="18">scenario · owner · API · removal</text>
<text x="464" y="728" fill="#D3CCFF" font-size="16">может изменить policy, не fixture</text>
</g>
<path d="M219 268 L219 320" fill="none" stroke="#7DD3FC" stroke-width="4" marker-end="url(#arrow)"/>
<path d="M219 426 L219 478" fill="none" stroke="#7DD3FC" stroke-width="4" marker-end="url(#arrow)"/>
<path d="M219 584 L219 636" fill="none" stroke="#7DD3FC" stroke-width="4" marker-end="url(#arrow)"/>
<path d="M380 689 C422 689 406 498 440 470" fill="none" stroke="#7DD3FC" stroke-width="4" marker-end="url(#arrow)"/>
<path d="M601 536 L601 628" fill="none" stroke="#39D49A" stroke-width="4" marker-end="url(#arrow-small)"/>
<path d="M440 720 C402 870 178 880 170 742" fill="none" stroke="#9B8AF7" stroke-width="3" stroke-dasharray="10 8" marker-end="url(#arrow)"/>
<text x="75" y="895" fill="#C6BAFF" font-family="Arial, sans-serif" font-size="16">policy меняется после review; fixture остаётся fixed</text>
<rect x="440" y="162" width="322" height="172" rx="16" fill="#0E1727" stroke="#2B3A54" stroke-width="2"/>
<text x="464" y="202" fill="#F8FAFC" font-family="Arial, sans-serif" font-size="22" font-weight="700">Вне границы модели</text>
<g fill="#B9C8DE" font-family="Arial, sans-serif" font-size="18">
<text x="464" y="238">нет чтения filesystem или project</text>
<text x="464" y="266">нет CI, network, HTTP или trace</text>
<text x="464" y="294">нет production effect или release</text>
</g>
</svg>