rewrite 2026-09 and 2027 articles for reader-facing quality
Build and deploy / deploy (push) Successful in 18s
Build and deploy / deploy (push) Successful in 18s
This commit is contained in:
@@ -1,31 +1,16 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="720" viewBox="0 0 1200 720" role="img" aria-labelledby="title desc">
|
||||
<title id="title">Контракт синтетической карты навыка</title>
|
||||
<desc id="desc">Три карточки показывают именованную карту, не запущенный prompt и отсутствие наблюдения. Красная ветка останавливает неявное умение.</desc>
|
||||
<title id="title">Контракт HTTP-ответа</title>
|
||||
<desc id="desc">Поток показывает endpoint, проверку JSON-формы и потребителя. Неверный тип или значение enum останавливает ответ до клиентского кода.</desc>
|
||||
<defs><marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0 0L12 6L0 12z" fill="#64b5f6"/></marker><marker id="stop" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0 0L12 6L0 12z" fill="#fb7185"/></marker></defs>
|
||||
<rect width="1200" height="720" fill="#0f172a"/>
|
||||
<text x="70" y="82" fill="#f8fafc" font-family="Arial, sans-serif" font-size="38" font-weight="700">Карта навыка — контракт, не оценка человека</text>
|
||||
<text x="70" y="122" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="22">P115 · plan/scenario · 2027-09 · только fixed in-memory literal</text>
|
||||
<text x="64" y="76" fill="#f8fafc" font-family="Arial, sans-serif" font-size="38" font-weight="700">API-ответ: форма → проверка → клиент</text>
|
||||
<text x="64" y="116" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="22">Контракт отделяет JSON-тип от бизнес-правила и состояния ресурса</text>
|
||||
<g font-family="Arial, sans-serif">
|
||||
<rect x="70" y="205" width="300" height="210" rx="18" fill="#172554" stroke="#60a5fa" stroke-width="3"/>
|
||||
<text x="100" y="260" fill="#bfdbfe" font-size="24" font-weight="700">Карта</text>
|
||||
<text x="100" y="310" fill="#fff" font-size="21">synthetic-skill-map</text>
|
||||
<text x="100" y="346" fill="#cbd5e1" font-size="20">named-synthetic-only</text>
|
||||
<rect x="450" y="205" width="300" height="210" rx="18" fill="#172554" stroke="#60a5fa" stroke-width="3"/>
|
||||
<text x="480" y="260" fill="#bfdbfe" font-size="24" font-weight="700">Prompt</text>
|
||||
<text x="480" y="310" fill="#fff" font-size="21">synthetic-practice</text>
|
||||
<text x="480" y="346" fill="#cbd5e1" font-size="20">not-run</text>
|
||||
<rect x="830" y="205" width="300" height="210" rx="18" fill="#172554" stroke="#60a5fa" stroke-width="3"/>
|
||||
<text x="860" y="260" fill="#bfdbfe" font-size="24" font-weight="700">Наблюдение</text>
|
||||
<text x="860" y="310" fill="#fff" font-size="21">observation</text>
|
||||
<text x="860" y="346" fill="#cbd5e1" font-size="20">not-collected</text>
|
||||
<path d="M370 310H450M750 310H830" stroke="#60a5fa" stroke-width="5" marker-end="url(#arrow)"/>
|
||||
<rect x="260" y="510" width="680" height="115" rx="18" fill="#14532d" stroke="#4ade80" stroke-width="3"/>
|
||||
<text x="600" y="555" text-anchor="middle" fill="#dcfce7" font-size="25" font-weight="700">synthetic-plan-hand-off</text>
|
||||
<text x="600" y="592" text-anchor="middle" fill="#bbf7d0" font-size="20">productionEffect: not-attempted</text>
|
||||
<path d="M600 415V510" stroke="#4ade80" stroke-width="5" marker-end="url(#arrowGreen)"/>
|
||||
<rect x="70" y="510" width="150" height="115" rx="18" fill="#7f1d1d" stroke="#f87171" stroke-width="3"/>
|
||||
<text x="145" y="554" text-anchor="middle" fill="#fee2e2" font-size="20" font-weight="700">implicit</text>
|
||||
<text x="145" y="588" text-anchor="middle" fill="#fecaca" font-size="18">skill → stop</text>
|
||||
<path d="M220 565H260" stroke="#f87171" stroke-width="5"/>
|
||||
<rect x="70" y="220" width="280" height="180" rx="20" fill="#172554" stroke="#60a5fa" stroke-width="3"/><text x="105" y="275" fill="#dbeafe" font-size="27" font-weight="700">Endpoint</text><text x="105" y="320" fill="#fff" font-size="23">GET /customers/{id}</text><text x="105" y="360" fill="#bfdbfe" font-size="20">status 200 · JSON</text>
|
||||
<rect x="460" y="220" width="280" height="180" rx="20" fill="#164e63" stroke="#67e8f9" stroke-width="3"/><text x="495" y="275" fill="#cffafe" font-size="27" font-weight="700">Форма</text><text x="495" y="320" fill="#fff" font-size="22">id · revision · state</text><text x="495" y="360" fill="#a5f3fc" font-size="20">type + required + enum</text>
|
||||
<rect x="850" y="220" width="280" height="180" rx="20" fill="#14532d" stroke="#4ade80" stroke-width="3"/><text x="885" y="275" fill="#dcfce7" font-size="27" font-weight="700">Потребитель</text><text x="885" y="320" fill="#fff" font-size="22">нормализованный объект</text><text x="885" y="360" fill="#bbf7d0" font-size="20">или ясная причина отказа</text>
|
||||
<path d="M350 310H460M740 310H850" stroke="#64b5f6" stroke-width="6" marker-end="url(#arrow)"/>
|
||||
<rect x="290" y="510" width="620" height="100" rx="18" fill="#7f1d1d" stroke="#fb7185" stroke-width="3"/><text x="600" y="553" text-anchor="middle" fill="#ffe4e6" font-size="25" font-weight="700">Неверный тип или enum → отказ</text><text x="600" y="586" text-anchor="middle" fill="#fecdd3" font-size="20">не подставлять отсутствующее обязательное поле</text>
|
||||
<path d="M600 400V510" stroke="#fb7185" stroke-width="5" marker-end="url(#stop)"/>
|
||||
</g>
|
||||
<defs><marker id="arrow" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0 0L12 6L0 12z" fill="#60a5fa"/></marker><marker id="arrowGreen" markerWidth="12" markerHeight="12" refX="10" refY="6" orient="auto"><path d="M0 0L12 6L0 12z" fill="#4ade80"/></marker></defs>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 2.9 KiB |
Reference in New Issue
Block a user