This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 960" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Матрица сравнения альтернатив в ADR</title>
|
||||
<desc id="desc">Таблица трёх синтетических вариантов: direct read, bounded BFF cache и shared cache. Колонки показывают reversibility, evidence fit, constraint fit, operating cost и итоговый учебный score. Выбранный вариант выделен, а снизу указаны ограничение модели и review signal.</desc>
|
||||
<defs>
|
||||
<linearGradient id="background" x1="0" x2="1" y1="0" y2="1">
|
||||
<stop offset="0" stop-color="#fbfcff"/>
|
||||
<stop offset="1" stop-color="#f0f8f6"/>
|
||||
</linearGradient>
|
||||
<style>
|
||||
.title { fill: #142b45; font: 700 34px Arial, sans-serif; }
|
||||
.subtitle { fill: #58738e; font: 18px Arial, sans-serif; }
|
||||
.header { fill: #385775; font: 700 16px Arial, sans-serif; }
|
||||
.cell { fill: #183450; font: 17px Arial, sans-serif; }
|
||||
.small { fill: #5e7489; font: 14px Arial, sans-serif; }
|
||||
.caption { fill: #34536e; font: 15px Arial, sans-serif; }
|
||||
.score { fill: #145f52; font: 700 21px Arial, sans-serif; }
|
||||
.grid { stroke: #c7d9e7; stroke-width: 1.5; }
|
||||
</style>
|
||||
</defs>
|
||||
<rect width="720" height="960" rx="32" fill="url(#background)"/>
|
||||
<text x="48" y="62" class="title">ADR: матрица альтернатив</text>
|
||||
<text x="48" y="92" class="subtitle">Одинаковые criteria делают цену выбора видимой до acceptance.</text>
|
||||
|
||||
<rect x="40" y="126" width="640" height="56" rx="14" fill="#dcebf5"/>
|
||||
<text x="58" y="160" class="header">Вариант</text>
|
||||
<text x="250" y="151" class="header">Reversi-</text>
|
||||
<text x="250" y="171" class="header">bility</text>
|
||||
<text x="344" y="151" class="header">Evidence</text>
|
||||
<text x="344" y="171" class="header">fit</text>
|
||||
<text x="435" y="151" class="header">Constraint</text>
|
||||
<text x="435" y="171" class="header">fit</text>
|
||||
<text x="536" y="151" class="header">Operating</text>
|
||||
<text x="536" y="171" class="header">cost</text>
|
||||
<text x="631" y="160" class="header">Score</text>
|
||||
|
||||
<rect x="40" y="182" width="640" height="150" fill="#ffffff"/>
|
||||
<rect x="40" y="332" width="640" height="164" fill="#e7f5ef"/>
|
||||
<rect x="40" y="496" width="640" height="150" fill="#ffffff"/>
|
||||
<path d="M40 182 H680 M40 332 H680 M40 496 H680 M40 646 H680 M232 126 V646 M324 126 V646 M416 126 V646 M514 126 V646 M613 126 V646" class="grid"/>
|
||||
|
||||
<text x="58" y="220" class="cell">1. Direct source read</text>
|
||||
<text x="58" y="248" class="small">least state</text>
|
||||
<text x="58" y="271" class="small">repeat read stays</text>
|
||||
<text x="58" y="301" class="small">no explicit freshness</text>
|
||||
<text x="276" y="256" class="cell">3</text>
|
||||
<text x="371" y="256" class="cell">1</text>
|
||||
<text x="464" y="256" class="cell">1</text>
|
||||
<text x="562" y="256" class="cell">1</text>
|
||||
<text x="633" y="259" class="score">12</text>
|
||||
|
||||
<rect x="54" y="350" width="94" height="27" rx="13" fill="#1c8d70"/>
|
||||
<text x="70" y="369" fill="#ffffff" font-family="Arial, sans-serif" font-size="15" font-weight="700">SELECTED</text>
|
||||
<text x="58" y="408" class="cell">2. Bounded BFF cache</text>
|
||||
<text x="58" y="436" class="small">expiry has one owner</text>
|
||||
<text x="58" y="459" class="small">freshness is the cost</text>
|
||||
<text x="276" y="432" class="cell">2</text>
|
||||
<text x="371" y="432" class="cell">3</text>
|
||||
<text x="464" y="432" class="cell">3</text>
|
||||
<text x="562" y="432" class="cell">2</text>
|
||||
<text x="633" y="435" class="score">23</text>
|
||||
<text x="58" y="480" class="caption">Why: fit and evidence win; freshness price has an owner.</text>
|
||||
|
||||
<text x="58" y="534" class="cell">3. Shared cross-service cache</text>
|
||||
<text x="58" y="562" class="small">reuse plus invalidation</text>
|
||||
<text x="58" y="590" class="small">wider owner and rollback</text>
|
||||
<text x="276" y="565" class="cell">1</text>
|
||||
<text x="371" y="565" class="cell">2</text>
|
||||
<text x="464" y="565" class="cell">2</text>
|
||||
<text x="562" y="565" class="cell">3</text>
|
||||
<text x="633" y="568" class="score">13</text>
|
||||
|
||||
<rect x="40" y="688" width="640" height="100" rx="18" fill="#fff1d9" stroke="#e3a044" stroke-width="2"/>
|
||||
<text x="62" y="722" fill="#9a5b08" font-family="Arial, sans-serif" font-size="20" font-weight="700">Как читать score</text>
|
||||
<text x="62" y="750" class="caption">2 × reversibility + 3 × evidence + 4 × fit − cost.</text>
|
||||
<text x="62" y="774" class="small">Fixed synthetic formula; не metric и не permission.</text>
|
||||
|
||||
<rect x="40" y="812" width="640" height="100" rx="18" fill="#e9ecfb" stroke="#8372c4" stroke-width="2"/>
|
||||
<text x="62" y="846" fill="#56438c" font-family="Arial, sans-serif" font-size="20" font-weight="700">Review signal</text>
|
||||
<text x="62" y="874" class="caption">Contract, freshness or owner changed? Score не переписывают.</text>
|
||||
<text x="62" y="898" class="small">Создают successor ADR и сохраняют accepted record.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
@@ -0,0 +1,83 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1120" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Поток принятия инженерного решения через ADR</title>
|
||||
<desc id="desc">Вертикальная схема: симптом и цена, контекст и ограничения, варианты, вопрос evidence, proposed решение, review, accepted record, связи с кодом и отдельный путь reassessment с successor ADR.</desc>
|
||||
<defs>
|
||||
<linearGradient id="background" x1="0" x2="1" y1="0" y2="1">
|
||||
<stop offset="0" stop-color="#f8fbff"/>
|
||||
<stop offset="1" stop-color="#eef7f5"/>
|
||||
</linearGradient>
|
||||
<marker id="arrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto">
|
||||
<path d="M0 0 L10 5 L0 10 Z" fill="#28415f"/>
|
||||
</marker>
|
||||
<style>
|
||||
.title { fill: #152a43; font: 700 34px Arial, sans-serif; }
|
||||
.subtitle { fill: #53708f; font: 18px Arial, sans-serif; }
|
||||
.box-title { fill: #152a43; font: 700 22px Arial, sans-serif; }
|
||||
.box-text { fill: #294664; font: 16px Arial, sans-serif; }
|
||||
.small { fill: #5d7184; font: 14px Arial, sans-serif; }
|
||||
.arrow { fill: none; stroke: #28415f; stroke-width: 4; marker-end: url(#arrow); }
|
||||
.node { stroke-width: 2; }
|
||||
.step { fill: #ffffff; stroke: #b9d0e4; }
|
||||
.decision { fill: #e4f4ef; stroke: #47a98b; }
|
||||
.review { fill: #fff2d9; stroke: #e5a13f; }
|
||||
.history { fill: #eeeafd; stroke: #8472ca; }
|
||||
</style>
|
||||
</defs>
|
||||
<rect width="720" height="1120" rx="32" fill="url(#background)"/>
|
||||
<text x="58" y="64" class="title">ADR: поток решения</text>
|
||||
<text x="58" y="94" class="subtitle">Запись фиксирует выбор и его цену.</text>
|
||||
<text x="58" y="116" class="subtitle">Implementation и evidence проверяются отдельно.</text>
|
||||
|
||||
<rect x="92" y="130" width="536" height="112" rx="20" class="node step"/>
|
||||
<circle cx="126" cy="166" r="17" fill="#4b84bd"/>
|
||||
<text x="120" y="173" fill="#fff" font-family="Arial, sans-serif" font-size="19" font-weight="700">1</text>
|
||||
<text x="160" y="166" class="box-title">Симптом и цена ошибки</text>
|
||||
<text x="160" y="195" class="box-text">Что ломается при слепом изменении?</text>
|
||||
<text x="160" y="219" class="small">Конкретный риск и scope, не общий лозунг.</text>
|
||||
|
||||
<path d="M360 242 V278" class="arrow"/>
|
||||
<rect x="92" y="282" width="536" height="130" rx="20" class="node step"/>
|
||||
<circle cx="126" cy="318" r="17" fill="#4b84bd"/>
|
||||
<text x="120" y="325" fill="#fff" font-family="Arial, sans-serif" font-size="19" font-weight="700">2</text>
|
||||
<text x="160" y="318" class="box-title">Контекст и ограничения</text>
|
||||
<text x="160" y="347" class="box-text">Факты, assumption, owner, boundary.</text>
|
||||
<text x="160" y="373" class="small">Какой факт ещё неизвестен и как его проверить?</text>
|
||||
<text x="160" y="396" class="small">Контекст не выдаёт догадку за evidence.</text>
|
||||
|
||||
<path d="M360 412 V448" class="arrow"/>
|
||||
<rect x="92" y="452" width="536" height="130" rx="20" class="node step"/>
|
||||
<circle cx="126" cy="488" r="17" fill="#4b84bd"/>
|
||||
<text x="120" y="495" fill="#fff" font-family="Arial, sans-serif" font-size="19" font-weight="700">3</text>
|
||||
<text x="160" y="488" class="box-title">Alternatives на одной шкале</text>
|
||||
<text x="160" y="517" class="box-text">Fit · reversibility · evidence gap · cost.</text>
|
||||
<text x="160" y="544" class="small">У варианта есть downside и named owner.</text>
|
||||
<text x="160" y="567" class="small">Score — только прозрачная учебная модель.</text>
|
||||
|
||||
<path d="M360 582 V618" class="arrow"/>
|
||||
<rect x="92" y="622" width="536" height="126" rx="20" class="node decision"/>
|
||||
<circle cx="126" cy="658" r="17" fill="#279674"/>
|
||||
<text x="120" y="665" fill="#fff" font-family="Arial, sans-serif" font-size="19" font-weight="700">4</text>
|
||||
<text x="160" y="658" class="box-title">Proposed decision</text>
|
||||
<text x="160" y="687" class="box-text">Choice, rationale, consequences, review date.</text>
|
||||
<text x="160" y="713" class="small">Proposed разрешает исправить context и alternatives.</text>
|
||||
<text x="160" y="735" class="small">Record не создаёт code, CI, release или evidence.</text>
|
||||
|
||||
<path d="M360 748 V784" class="arrow"/>
|
||||
<rect x="92" y="788" width="536" height="118" rx="20" class="node review"/>
|
||||
<circle cx="126" cy="824" r="17" fill="#d58a1c"/>
|
||||
<text x="120" y="831" fill="#fff" font-family="Arial, sans-serif" font-size="19" font-weight="700">5</text>
|
||||
<text x="160" y="824" class="box-title">Human review → Accepted</text>
|
||||
<text x="160" y="853" class="box-text">Reviewer проверяет факт, цену, owner, gap.</text>
|
||||
<text x="160" y="879" class="small">После acceptance compliance идёт отдельным маршрутом.</text>
|
||||
|
||||
<path d="M360 906 V942" class="arrow"/>
|
||||
<rect x="92" y="946" width="536" height="118" rx="20" class="node history"/>
|
||||
<circle cx="126" cy="982" r="17" fill="#6d59b0"/>
|
||||
<text x="120" y="989" fill="#fff" font-family="Arial, sans-serif" font-size="19" font-weight="700">6</text>
|
||||
<text x="160" y="982" class="box-title">Link и reassessment</text>
|
||||
<text x="160" y="1011" class="box-text">Code link + drift signal + successor ADR.</text>
|
||||
<text x="160" y="1037" class="small">Successor supersedes старый record; context остаётся.</text>
|
||||
|
||||
<path d="M628 1005 C686 1005 686 835 628 835" class="arrow"/>
|
||||
<text x="503" y="768" class="small">новый signal →</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.7 KiB |
@@ -0,0 +1,75 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 980" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Цикл reassessment для ADR</title>
|
||||
<desc id="desc">Петля из шести шагов: accepted ADR, сигнал изменения, проверка исходных assumptions и links, разрешённое evidence, proposed successor, human acceptance и связь Superseded. Отдельная подпись показывает, что implementation change и rollback остаются отдельным маршрутом.</desc>
|
||||
<defs>
|
||||
<linearGradient id="background" x1="0" x2="1" y1="0" y2="1">
|
||||
<stop offset="0" stop-color="#fcfbff"/>
|
||||
<stop offset="1" stop-color="#eff8f5"/>
|
||||
</linearGradient>
|
||||
<marker id="arrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto">
|
||||
<path d="M0 0 L10 5 L0 10 Z" fill="#34506c"/>
|
||||
</marker>
|
||||
<style>
|
||||
.title { fill: #142b45; font: 700 34px Arial, sans-serif; }
|
||||
.subtitle { fill: #58738e; font: 18px Arial, sans-serif; }
|
||||
.node-title { fill: #173653; font: 700 21px Arial, sans-serif; }
|
||||
.node-text { fill: #36546f; font: 16px Arial, sans-serif; }
|
||||
.small { fill: #61788c; font: 15px Arial, sans-serif; }
|
||||
.arrow { fill: none; stroke: #34506c; stroke-width: 4; marker-end: url(#arrow); }
|
||||
.accepted { fill: #e9ecfb; stroke: #7d6cc0; stroke-width: 2; }
|
||||
.signal { fill: #fff0d7; stroke: #de9731; stroke-width: 2; }
|
||||
.check { fill: #e3f3ef; stroke: #42a383; stroke-width: 2; }
|
||||
.proposal { fill: #e8f0fb; stroke: #4c89c4; stroke-width: 2; }
|
||||
.warn { fill: #fff9ef; stroke: #d8b56d; stroke-width: 2; }
|
||||
</style>
|
||||
</defs>
|
||||
<rect width="720" height="980" rx="32" fill="url(#background)"/>
|
||||
<text x="52" y="62" class="title">ADR: reassessment loop</text>
|
||||
<text x="52" y="92" class="subtitle">Проверяем assumption, не редактируем историю.</text>
|
||||
<text x="52" y="114" class="subtitle">Compliance требует отдельного evidence.</text>
|
||||
|
||||
<rect x="245" y="132" width="230" height="106" rx="22" class="accepted"/>
|
||||
<text x="300" y="169" class="node-title">Accepted ADR</text>
|
||||
<text x="274" y="197" class="node-text">context · choice · price</text>
|
||||
<text x="287" y="219" class="small">links and review signal</text>
|
||||
|
||||
<path d="M475 184 C587 184 618 280 570 330" class="arrow"/>
|
||||
<rect x="472" y="330" width="190" height="118" rx="22" class="signal"/>
|
||||
<text x="516" y="368" class="node-title">Signal drift</text>
|
||||
<text x="493" y="396" class="node-text">contract changed</text>
|
||||
<text x="493" y="418" class="node-text">owner or bound drift</text>
|
||||
|
||||
<path d="M472 388 H404" class="arrow"/>
|
||||
<rect x="68" y="330" width="336" height="118" rx="22" class="check"/>
|
||||
<text x="104" y="367" class="node-title">Сверить исходную границу</text>
|
||||
<text x="104" y="395" class="node-text">assumptions · contract link</text>
|
||||
<text x="104" y="418" class="node-text">что signal опровергает?</text>
|
||||
|
||||
<path d="M236 448 V508" class="arrow"/>
|
||||
<rect x="68" y="512" width="336" height="128" rx="22" class="check"/>
|
||||
<text x="104" y="549" class="node-title">Evidence boundary</text>
|
||||
<text x="104" y="577" class="node-text">method · scope · owner · stop</text>
|
||||
<text x="104" y="600" class="node-text">не fixture, не случайный график</text>
|
||||
<text x="104" y="622" class="small">Missing evidence → no automatic decision.</text>
|
||||
|
||||
<path d="M404 576 H472" class="arrow"/>
|
||||
<rect x="472" y="512" width="190" height="128" rx="22" class="proposal"/>
|
||||
<text x="512" y="549" class="node-title">Successor ADR</text>
|
||||
<text x="500" y="577" class="node-text">Proposed only</text>
|
||||
<text x="493" y="600" class="node-text">new context and options</text>
|
||||
<text x="492" y="622" class="small">link back to old record</text>
|
||||
|
||||
<path d="M568 640 C568 726 466 752 360 752" class="arrow"/>
|
||||
<rect x="168" y="704" width="384" height="118" rx="22" class="accepted"/>
|
||||
<text x="255" y="741" class="node-title">Human acceptance</text>
|
||||
<text x="250" y="769" class="node-text">new Accepted record → Superseded link</text>
|
||||
<text x="237" y="792" class="small">Old context stays readable; lifecycle relation changes.</text>
|
||||
|
||||
<path d="M168 763 C72 763 52 614 106 526" class="arrow"/>
|
||||
<text x="55" y="684" class="small">assumption holds →</text>
|
||||
<text x="55" y="705" class="small">reconfirm old ADR</text>
|
||||
|
||||
<rect x="68" y="858" width="584" height="72" rx="18" class="warn"/>
|
||||
<text x="92" y="888" fill="#8d671f" font-family="Arial, sans-serif" font-size="20" font-weight="700">Отдельный маршрут: implementation change</text>
|
||||
<text x="92" y="914" class="small">Test, rollout, monitoring, rollback отдельно; Superseded не откатывает систему.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
Reference in New Issue
Block a user