Files
demo-epb/docs/diagrams/SWA-002-2.svg
T
Stefan Lohmaier 4351dfa4e1
Validate / build-and-test (push) Successful in 30s
feat: Safety Manager + Traceability + PlantUML in CI
- Implement Safety Manager (SWA-001, ASIL-D): Hill-Hold + Auto-Apply
  state machine, 13 unit tests
- Update SWA-002 + SWA-001 link coverage so all SWE reqs are covered
- New tool: tools/traceability.py — Markdown-frontmatter-basierter
  Traceability-Checker + HTML/JSON-Matrix-Generator (Doorstop-Format ohne
  Doorstop-Dependency)
- New tool: tools/render_plantuml.py — extrahiert PlantUML-Bloecke aus
  arch/**.md und rendert via plantuml.com zu SVG
- validate.yml: neue Steps Traceability-Check, Matrix-Publish, PlantUML-
  Render; uploaded als Gitea-Artefakte
2026-05-11 23:51:55 -07:00

1 line
8.4 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="STATE" height="659px" preserveAspectRatio="none" style="width:714px;height:659px;background:#FFFFFF;" version="1.1" viewBox="0 0 714 659" width="714px" zoomAndPan="magnify"><?plantuml 1.2026.4beta2?><defs/><g><g class="start_entity" data-qualified-name=".start." data-source-line="1" id="ent0002"><ellipse cx="456.9" cy="16" fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1;"/></g><g class="entity" data-qualified-name="Released" id="ent0003"><rect fill="#F1F1F1" height="50" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="84.2168" x="414.79" y="87"/><line style="stroke:#181818;stroke-width:0.5;" x1="414.79" x2="499.0068" y1="113.2969" y2="113.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="64.2168" x="424.79" y="104.9951">Released</text></g><g class="entity" data-qualified-name="Applying" id="ent0005"><rect fill="#F1F1F1" height="50" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="81.1748" x="50.32" y="214"/><line style="stroke:#181818;stroke-width:0.5;" x1="50.32" x2="131.4948" y1="240.2969" y2="240.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="61.1748" x="60.32" y="231.9951">Applying</text></g><g class="entity" data-qualified-name="Applied" id="ent0007"><rect fill="#F1F1F1" height="50" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="72.6299" x="54.59" y="341"/><line style="stroke:#181818;stroke-width:0.5;" x1="54.59" x2="127.2199" y1="367.2969" y2="367.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="52.6299" x="64.59" y="358.9951">Applied</text></g><g class="entity" data-qualified-name="Releasing" id="ent0009"><rect fill="#F1F1F1" height="50" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="88.3662" x="271.72" y="468"/><line style="stroke:#181818;stroke-width:0.5;" x1="271.72" x2="360.0862" y1="494.2969" y2="494.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="68.3662" x="281.72" y="485.9951">Releasing</text></g><g class="entity" data-qualified-name="Error" id="ent0013"><rect fill="#F1F1F1" height="50" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:0.5;" width="54.6787" x="288.56" y="595"/><line style="stroke:#181818;stroke-width:0.5;" x1="288.56" x2="343.2387" y1="621.2969" y2="621.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="34.6787" x="298.56" y="612.9951">Error</text></g><!--link *start* to Released--><g class="link" data-entity-1="ent0002" data-entity-2="ent0003" data-link-type="dependency" data-source-line="1" id="lnk4"><path d="M456.9,26.36 C456.9,40.29 456.9,60.95 456.9,80.65" fill="none" id="*start*-to-Released" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="456.9,86.65,460.9,77.65,456.9,81.65,452.9,77.65,456.9,86.65" style="stroke:#181818;stroke-width:1;"/></g><!--link Released to Applying--><g class="link" data-entity-1="ent0003" data-entity-2="ent0005" data-link-type="dependency" data-source-line="2" id="lnk6"><path d="M414.51,125.47 C379.15,136.03 327.53,151.84 282.9,167 C230.41,184.84 176.2031,205.154 137.4831,219.984" fill="none" id="Released-to-Applying" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="131.88,222.13,141.7153,222.6464,136.5492,220.3417,138.854,215.1756,131.88,222.13" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="146.7705" x="283.9" y="180.0669">apply_request &amp; v_low</text></g><!--link Applying to Applied--><g class="link" data-entity-1="ent0005" data-entity-2="ent0007" data-link-type="dependency" data-source-line="3" id="lnk8"><path d="M90.9,264.4 C90.9,286.42 90.9,312.66 90.9,334.66" fill="none" id="Applying-to-Applied" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="90.9,340.66,94.9,331.66,90.9,335.66,86.9,331.66,90.9,340.66" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="153.1118" x="91.9" y="307.0669">current_target_reached</text></g><!--link Applied to Releasing--><g class="link" data-entity-1="ent0007" data-entity-2="ent0009" data-link-type="dependency" data-source-line="4" id="lnk10"><path d="M124.38,391.49 C144.8,405.9 171.75,423.99 196.9,438 C220.79,451.3 243.0388,461.668 265.7388,471.438" fill="none" id="Applied-to-Releasing" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="271.25,473.81,264.5645,466.5778,266.6573,471.8333,261.4018,473.9261,271.25,473.81" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="232.7495" x="197.9" y="434.0669">release_request &amp; preconditions_ok</text></g><!--link Applied to Applied--><g class="link" data-entity-1="ent0007" data-entity-2="ent0007" data-link-type="dependency" data-source-line="5" id="lnk11"><path d="M127.6,354.45 C145.9,352.85 162.22,356.7 162.22,366 C162.22,375.3 151.8772,379.6726 133.5772,378.0726" fill="none" id="Applied-to-Applied" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="127.6,377.55,136.2174,382.3187,132.581,377.9855,136.9142,374.3491,127.6,377.55" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="247.5015" x="168.22" y="370.5669">50ms hold check (re-clamp if needed)</text></g><!--link Releasing to Released--><g class="link" data-entity-1="ent0009" data-entity-2="ent0003" data-link-type="dependency" data-source-line="6" id="lnk12"><path d="M360.31,483.67 C386.5,476.3 417.78,462.7 434.9,438 C451.9,413.48 455.7476,214.5996 456.6076,143.3196" fill="none" id="Releasing-to-Released" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="456.68,137.32,452.5717,146.2711,456.6197,142.3196,460.5711,146.3676,456.68,137.32" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="114.9116" x="453.9" y="307.0669">release_complete</text></g><!--link Applying to Error--><g class="link" data-entity-1="ent0005" data-entity-2="ent0013" data-link-type="dependency" data-source-line="7" id="lnk14"><path d="M73.34,264.28 C47.61,303.1 6,380.62 37.9,438 C93.32,537.66 223.608,589.5626 282.388,608.8126" fill="none" id="Applying-to-Error" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="288.09,610.68,280.7819,604.0776,283.3383,609.1239,278.2921,611.6803,288.09,610.68" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="122.3384" x="38.9" y="434.0669">timeout &gt; 1500ms</text></g><!--link Releasing to Error--><g class="link" data-entity-1="ent0009" data-entity-2="ent0013" data-link-type="dependency" data-source-line="8" id="lnk15"><path d="M315.9,518.4 C315.9,540.42 315.9,566.66 315.9,588.66" fill="none" id="Releasing-to-Error" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="315.9,594.66,319.9,585.66,315.9,589.66,311.9,585.66,315.9,594.66" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="122.3384" x="316.9" y="561.0669">timeout &gt; 1200ms</text></g><!--link Error to Released--><g class="link" data-entity-1="ent0013" data-entity-2="ent0003" data-link-type="dependency" data-source-line="9" id="lnk16"><path d="M343.52,619.11 C414.16,617.81 595.9,603.8 595.9,494 C595.9,238 595.9,238 595.9,238 C595.9,185.42 545.6601,151.9035 504.7801,132.4935" fill="none" id="Error-to-Released" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="499.36,129.92,505.7745,137.3936,503.8767,132.0646,509.2058,130.1668,499.36,129.92" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="101.4292" x="596.9" y="370.5669">reset &amp; no fault</text></g><?plantuml-src RO_B2i8m44Nt_OfPYGg5AdJZGd3X3xWLAI4PDPXcucIg-FV6bjhws0t9kVTmz_C3vFaQTkXGHJHPVxIlcn3Sm_eJh42zpehnsc0KcC2jSdJFta1FsvHSWMwOqKibYayeAQNqENNtm23ikhbpZje3eoPlh5ZoiQBBHtJmb4KTuKpEGEhN5vWovjgfEe0zWaSqQ6RPO1eF7MarrS6XuEUQBJDneiJMI8t06XPbaNnVVN-mPOjr7p_AYAzzdk2e6YTF?></g></svg>