Files
demo-epb/docs/diagrams/SWA-001-1.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.0 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="DESCRIPTION" height="375px" preserveAspectRatio="none" style="width:631px;height:375px;background:#FFFFFF;" version="1.1" viewBox="0 0 631 375" width="631px" zoomAndPan="magnify"><?plantuml 1.2026.4beta2?><defs/><g><!--cluster Safety Manager--><g class="cluster" data-qualified-name="Safety Manager" data-source-line="1" id="ent0002"><path d="M8.5,124.3 L134.5225,124.3 A3.75,3.75 0 0 1 137.0225,126.8 L144.0225,146.5969 L434.5,146.5969 A2.5,2.5 0 0 1 437,149.0969 L437,358.39 A2.5,2.5 0 0 1 434.5,360.89 L8.5,360.89 A2.5,2.5 0 0 1 6,358.39 L6,126.8 A2.5,2.5 0 0 1 8.5,124.3" fill="none" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="6" x2="144.0225" y1="146.5969" y2="146.5969"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="700" lengthAdjust="spacing" textLength="125.0225" x="10" y="139.2951">Safety Manager</text></g><!--entity Engine State Monitor--><g class="entity" data-qualified-name="Safety Manager.Engine State Monitor" data-source-line="2" id="ent0003"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="187.1572" x="30.42" y="167.3"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="197.5772" y="172.3"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="195.5772" y="174.3"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="195.5772" y="178.3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="147.1572" x="45.42" y="200.2951">Engine State Monitor</text></g><!--entity Hill-Hold Logic--><g class="entity" data-qualified-name="Safety Manager.Hill-Hold Logic" data-source-line="3" id="ent0004"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="140.4063" x="252.8" y="167.3"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="373.2063" y="172.3"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="371.2063" y="174.3"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="371.2063" y="178.3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100.4063" x="267.8" y="200.2951">Hill-Hold Logic</text></g><!--entity Auto-Apply Logic--><g class="entity" data-qualified-name="Safety Manager.Auto-Apply Logic" data-source-line="4" id="ent0005"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="158.3711" x="44.81" y="290.59"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="183.1811" y="295.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="181.1811" y="297.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="181.1811" y="301.59"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="118.3711" x="59.81" y="323.5851">Auto-Apply Logic</text></g><!--entity Apply Controller--><g class="entity" data-qualified-name="Apply Controller" data-source-line="6" id="ent0006"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="153.1484" x="461.43" y="290.59"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="594.5784" y="295.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="592.5784" y="297.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="592.5784" y="301.59"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="113.1484" x="476.43" y="323.5851">Apply Controller</text></g><!--entity Wheel Speed Plausi--><g class="entity" data-qualified-name="Wheel Speed Plausi" data-source-line="7" id="ent0008"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="177.5869" x="236.21" y="7"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="393.7969" y="12"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="391.7969" y="14"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="391.7969" y="18"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="137.5869" x="251.21" y="39.9951">Wheel Speed Plausi</text></g><!--entity Inclinometer Filter--><g class="entity" data-qualified-name="Inclinometer Filter" data-source-line="8" id="ent0010"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="168.167" x="448.92" y="7"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="597.087" y="12"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="595.087" y="14"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="595.087" y="18"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="128.167" x="463.92" y="39.9951">Inclinometer Filter</text></g><!--link Safety Manager to Apply Controller--><g class="link" data-entity-1="ent0002" data-entity-2="ent0006" data-link-type="dependency" data-source-line="6" id="lnk7"><path d="M437.2006,200.5683 C437.2851,200.6623 437.3701,200.757 437.4557,200.8522 C438.1402,201.614 438.86,202.4151 439.6127,203.2528 C445.6341,209.9544 453.7606,218.9987 462.7763,229.0325 C480.8075,249.1 498.3847,268.6621 513.7997,285.8171" fill="none" id="Safety Manager-to-Apply Controller" style="stroke:#181818;stroke-width:1;stroke-dasharray:7,7;"/><polygon fill="#181818" points="517.81,290.28,514.7699,280.9121,514.4681,286.5609,508.8193,286.2591,517.81,290.28" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="122.7256" x="492" y="256.6569">Apply-Anforderung</text></g><!--link Wheel Speed Plausi to Safety Manager--><g class="link" data-entity-1="ent0008" data-entity-2="ent0002" data-link-type="dependency" data-source-line="7" id="lnk9"><path d="M357.73,53.69 C375.41,67.5 396.18,86.66 409,108.3 C411.2925,112.17 413.3231,116.2927 415.1217,120.55 C415.5713,121.6144 416.0065,122.6871 416.4275,123.7665 C416.4802,123.9014 414.3704,140.7364 414.4226,140.8715" fill="none" id="Wheel Speed Plausi-to-Safety Manager" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="416.5848,146.4684,417.0728,136.6316,414.783,141.8043,409.6103,139.5145,416.5848,146.4684" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="60.4932" x="404" y="96.3669">v_vehicle</text></g><!--link Inclinometer Filter to Safety Manager--><g class="link" data-entity-1="ent0010" data-entity-2="ent0002" data-link-type="dependency" data-source-line="8" id="lnk11"><path d="M518.32,53.49 C504.21,74.97 482.3525,108.24 463.7913,136.4913 C454.5106,150.6169 446.0541,163.4878 439.802,173.003 C439.0205,174.1924 438.2735,175.3293 437.5636,176.4097 C437.3861,176.6799 440.5057,171.932 440.333,172.195" fill="none" id="Inclinometer Filter-to-Safety Manager" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="437.0381,177.2094,445.3233,171.8844,439.7838,173.0307,438.6374,167.4913,437.0381,177.2094" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="37.813" x="498" y="96.3669">grade</text></g><?plantuml-src TOp12e9054NtynMFzkC7k0Wa2eE4m4KBaHYSvpZqUa-cKP3etrEXHK7BU-wvjpVDpJY4JMbQZ1CKXkSODl1K0DMUdMU4Cfg8K0ZxAA5UYjmJwLp8macSRrQM3L5qrlSqVU1BLT-tDIJ9TZPNQISSWn0jE8MLwOnR2HR3m4vLbmwHeEmHBPp930zVWzRp_lSqXV4wOkSRGbKTkI7FSiU80GwUucBycRbWBBu1?></g></svg>