47 lines
4.8 KiB
XML
47 lines
4.8 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1240" role="img" aria-labelledby="title desc">
|
|
<title id="title">Диагностика различающихся чистых сборок</title>
|
|
<desc id="desc">Вертикальная схема начинает с двух чистых запусков, сравнивает их входы, затем разветвляется к регистрации различия либо к сравнению output manifest и первому отличающемуся файлу.</desc>
|
|
<defs>
|
|
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
|
|
<path d="M0 0L10 5L0 10z" fill="#60758d"/>
|
|
</marker>
|
|
<marker id="bad-arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
|
|
<path d="M0 0L10 5L0 10z" fill="#c54646"/>
|
|
</marker>
|
|
</defs>
|
|
<rect width="720" height="1240" fill="#f8fafc"/>
|
|
<rect x="42" y="34" width="636" height="112" rx="18" fill="#17324d"/>
|
|
<text x="360" y="80" text-anchor="middle" fill="#ffffff" font-family="Arial, sans-serif" font-size="28" font-weight="700">Две чистые сборки: входы, затем bundle</text>
|
|
<text x="360" y="116" text-anchor="middle" fill="#d8e7f3" font-family="Arial, sans-serif" font-size="21">Сначала доказываем условия сравнения.</text>
|
|
|
|
<rect x="74" y="190" width="572" height="122" rx="18" fill="#e9f3ff" stroke="#3182ce" stroke-width="3"/>
|
|
<text x="360" y="234" text-anchor="middle" fill="#17324d" font-family="Arial, sans-serif" font-size="27" font-weight="700">Прогон A</text>
|
|
<text x="360" y="272" text-anchor="middle" fill="#425d73" font-family="Arial, sans-serif" font-size="21">npm ci → build → first manifest</text>
|
|
<path d="M360 312v36" stroke="#60758d" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="74" y="356" width="572" height="122" rx="18" fill="#e9f3ff" stroke="#3182ce" stroke-width="3"/>
|
|
<text x="360" y="400" text-anchor="middle" fill="#17324d" font-family="Arial, sans-serif" font-size="27" font-weight="700">Прогон B</text>
|
|
<text x="360" y="438" text-anchor="middle" fill="#425d73" font-family="Arial, sans-serif" font-size="21">npm ci → build → second manifest</text>
|
|
<path d="M360 478v36" stroke="#60758d" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="74" y="522" width="572" height="148" rx="18" fill="#f3ecff" stroke="#805ad5" stroke-width="3"/>
|
|
<text x="360" y="566" text-anchor="middle" fill="#2d2360" font-family="Arial, sans-serif" font-size="27" font-weight="700">Сравнить входы</text>
|
|
<text x="360" y="604" text-anchor="middle" fill="#4d3b78" font-family="Arial, sans-serif" font-size="21">commit, lockfile hash, Node, npm и команда</text>
|
|
<text x="360" y="634" text-anchor="middle" fill="#4d3b78" font-family="Arial, sans-serif" font-size="20">любая разница останавливает сравнение output</text>
|
|
<path d="M360 670v36" stroke="#60758d" stroke-width="5" marker-end="url(#arrow)"/>
|
|
|
|
<rect x="74" y="714" width="572" height="200" rx="18" fill="#ffffff" stroke="#805ad5" stroke-width="3"/>
|
|
<text x="360" y="758" text-anchor="middle" fill="#2d2360" font-family="Arial, sans-serif" font-size="27" font-weight="700">Входы совпали?</text>
|
|
<rect x="102" y="786" width="516" height="48" rx="12" fill="#fff0f0" stroke="#c54646" stroke-width="2"/>
|
|
<text x="360" y="818" text-anchor="middle" fill="#a12f2f" font-family="Arial, sans-serif" font-size="20" font-weight="700">Нет → записать различие и повторить условия</text>
|
|
<rect x="102" y="850" width="516" height="48" rx="12" fill="#e8fff3" stroke="#279665" stroke-width="2"/>
|
|
<text x="360" y="882" text-anchor="middle" fill="#145a3c" font-family="Arial, sans-serif" font-size="20" font-weight="700">Да → сравнить полный output manifest</text>
|
|
<path d="M360 914v36" stroke="#c54646" stroke-width="5" stroke-dasharray="12 10" marker-end="url(#bad-arrow)"/>
|
|
|
|
<rect x="74" y="958" width="572" height="118" rx="18" fill="#fff7ed" stroke="#dd6b20" stroke-width="3"/>
|
|
<text x="360" y="994" text-anchor="middle" fill="#7c2d12" font-family="Arial, sans-serif" font-size="21" font-weight="700">Если manifest различается:</text>
|
|
<text x="360" y="1030" text-anchor="middle" fill="#7c2d12" font-family="Arial, sans-serif" font-size="26" font-weight="700">первый differing file</text>
|
|
<text x="360" y="1060" text-anchor="middle" fill="#9a4c16" font-family="Arial, sans-serif" font-size="20">его bytes ведут к конкретному входу</text>
|
|
<text x="360" y="1142" text-anchor="middle" fill="#425d73" font-family="Arial, sans-serif" font-size="21">Не начинать с cache: сначала наблюдение.</text>
|
|
</svg>
|