Files
demo-epb/docs/diagrams/SA-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
12 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="323px" preserveAspectRatio="none" style="width:831px;height:323px;background:#FFFFFF;" version="1.1" viewBox="0 0 831 323" width="831px" zoomAndPan="magnify"><?plantuml 1.2026.4beta2?><defs/><g><!--entity ECU--><g class="entity" data-qualified-name="ECU" data-source-line="1" id="ent0002"><polygon fill="#F1F1F1" points="238.89,139.3,248.89,129.3,339.1009,129.3,339.1009,165.5969,329.1009,175.5969,238.89,175.5969,238.89,139.3" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="329.1009" x2="339.1009" y1="139.3" y2="129.3"/><line style="stroke:#181818;stroke-width:0.5;" x1="238.89" x2="329.1009" y1="139.3" y2="139.3"/><line style="stroke:#181818;stroke-width:0.5;" x1="329.1009" x2="329.1009" y1="139.3" y2="175.5969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60.2109" x="253.89" y="162.2951">EPB ECU</text></g><!--entity AL--><g class="entity" data-qualified-name="AL" data-source-line="2" id="ent0003"><polygon fill="#F1F1F1" points="16,262.59,26,252.59,129.999,252.59,129.999,288.8869,119.999,298.8869,16,298.8869,16,262.59" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="119.999" x2="129.999" y1="262.59" y2="252.59"/><line style="stroke:#181818;stroke-width:0.5;" x1="16" x2="119.999" y1="262.59" y2="262.59"/><line style="stroke:#181818;stroke-width:0.5;" x1="119.999" x2="119.999" y1="262.59" y2="298.8869"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="73.999" x="31" y="285.5851">Aktor links</text></g><!--entity AR--><g class="entity" data-qualified-name="AR" data-source-line="3" id="ent0004"><polygon fill="#F1F1F1" points="165.17,262.59,175.17,252.59,290.838,252.59,290.838,288.8869,280.838,298.8869,165.17,298.8869,165.17,262.59" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="280.838" x2="290.838" y1="262.59" y2="252.59"/><line style="stroke:#181818;stroke-width:0.5;" x1="165.17" x2="280.838" y1="262.59" y2="262.59"/><line style="stroke:#181818;stroke-width:0.5;" x1="280.838" x2="280.838" y1="262.59" y2="298.8869"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85.668" x="180.17" y="285.5851">Aktor rechts</text></g><!--entity WS--><g class="entity" data-qualified-name="WS" data-source-line="4" id="ent0005"><polygon fill="#F1F1F1" points="63.67,16,73.67,6,298.3302,6,298.3302,42.2969,288.3302,52.2969,63.67,52.2969,63.67,16" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="288.3302" x2="298.3302" y1="16" y2="6"/><line style="stroke:#181818;stroke-width:0.5;" x1="63.67" x2="288.3302" y1="16" y2="16"/><line style="stroke:#181818;stroke-width:0.5;" x1="288.3302" x2="288.3302" y1="16" y2="52.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="194.6602" x="78.67" y="38.9951">Wheel Speed Sensoren (x4)</text></g><!--entity IN--><g class="entity" data-qualified-name="IN" data-source-line="5" id="ent0006"><polygon fill="#F1F1F1" points="332.99,16,342.99,6,461.0164,6,461.0164,42.2969,451.0164,52.2969,332.99,52.2969,332.99,16" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="451.0164" x2="461.0164" y1="16" y2="6"/><line style="stroke:#181818;stroke-width:0.5;" x1="332.99" x2="451.0164" y1="16" y2="16"/><line style="stroke:#181818;stroke-width:0.5;" x1="451.0164" x2="451.0164" y1="16" y2="52.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="88.0264" x="347.99" y="38.9951">Inclinometer</text></g><!--entity SW--><g class="entity" data-qualified-name="SW" data-source-line="6" id="ent0007"><polygon fill="#F1F1F1" points="328.11,262.59,338.11,252.59,505.8952,252.59,505.8952,288.8869,495.8952,298.8869,328.11,298.8869,328.11,262.59" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="495.8952" x2="505.8952" y1="262.59" y2="252.59"/><line style="stroke:#181818;stroke-width:0.5;" x1="328.11" x2="495.8952" y1="262.59" y2="262.59"/><line style="stroke:#181818;stroke-width:0.5;" x1="495.8952" x2="495.8952" y1="262.59" y2="298.8869"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="137.7852" x="343.11" y="285.5851">EPB-Schalter + LED</text></g><!--entity CAN--><g class="entity" data-qualified-name="CAN" data-source-line="7" id="ent0008"><polygon fill="#F1F1F1" points="373.68,139.3,383.68,129.3,474.3284,129.3,474.3284,165.5969,464.3284,175.5969,373.68,175.5969,373.68,139.3" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="464.3284" x2="474.3284" y1="139.3" y2="129.3"/><line style="stroke:#181818;stroke-width:0.5;" x1="373.68" x2="464.3284" y1="139.3" y2="139.3"/><line style="stroke:#181818;stroke-width:0.5;" x1="464.3284" x2="464.3284" y1="139.3" y2="175.5969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="60.6484" x="388.68" y="162.2951">CAN-Bus</text></g><!--entity DI--><g class="entity" data-qualified-name="DI" data-source-line="8" id="ent0009"><polygon fill="#F1F1F1" points="665.59,139.3,675.59,129.3,806.4064,129.3,806.4064,165.5969,796.4064,175.5969,665.59,175.5969,665.59,139.3" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="796.4064" x2="806.4064" y1="139.3" y2="129.3"/><line style="stroke:#181818;stroke-width:0.5;" x1="665.59" x2="796.4064" y1="139.3" y2="139.3"/><line style="stroke:#181818;stroke-width:0.5;" x1="796.4064" x2="796.4064" y1="139.3" y2="175.5969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="100.8164" x="680.59" y="162.2951">Kombi-Display</text></g><!--entity OBD--><g class="entity" data-qualified-name="OBD" data-source-line="9" id="ent0010"><polygon fill="#F1F1F1" points="509.61,139.3,519.61,129.3,630.3834,129.3,630.3834,165.5969,620.3834,175.5969,509.61,175.5969,509.61,139.3" style="stroke:#181818;stroke-width:0.5;"/><line style="stroke:#181818;stroke-width:0.5;" x1="620.3834" x2="630.3834" y1="139.3" y2="129.3"/><line style="stroke:#181818;stroke-width:0.5;" x1="509.61" x2="620.3834" y1="139.3" y2="139.3"/><line style="stroke:#181818;stroke-width:0.5;" x1="620.3834" x2="620.3834" y1="139.3" y2="175.5969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="80.7734" x="524.61" y="162.2951">OBD-Tester</text></g><!--link ECU to AL--><g class="link" data-entity-1="ent0002" data-entity-2="ent0003" data-link-type="dependency" data-source-line="11" id="lnk11"><path d="M238.45,162.39 C205.46,169.99 162.63,183.31 130,205.59 C112.14,217.79 100.2307,232.1595 90.0007,247.2895" fill="none" id="ECU-to-AL" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="86.64,252.26,94.9947,247.0448,89.4406,248.1179,88.3675,242.5638,86.64,252.26" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="81.4595" x="131" y="218.6569">PWM, I-Mess</text></g><!--link ECU to AR--><g class="link" data-entity-1="ent0002" data-entity-2="ent0004" data-link-type="dependency" data-source-line="12" id="lnk12"><path d="M250.15,176.09 C240.09,184.04 230.54,193.94 225,205.59 C218.14,220.03 218.1209,232.2315 220.7409,246.2915" fill="none" id="ECU-to-AR" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="221.84,252.19,224.1236,242.6095,220.924,247.2746,216.259,244.0751,221.84,252.19" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="81.4595" x="226" y="218.6569">PWM, I-Mess</text></g><!--link WS to ECU--><g class="link" data-entity-1="ent0005" data-entity-2="ent0002" data-link-type="dependency" data-source-line="13" id="lnk13"><path d="M201.06,52.68 C220.46,74.47 245.6886,102.8102 265.0586,124.5502" fill="none" id="WS-to-ECU" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="269.05,129.03,266.0494,119.6494,265.7238,125.2968,260.0763,124.9713,269.05,129.03" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="34.4614" x="243" y="95.3669">Pulse</text></g><!--link IN to ECU--><g class="link" data-entity-1="ent0006" data-entity-2="ent0002" data-link-type="dependency" data-source-line="14" id="lnk14"><path d="M376.94,52.68 C357.54,74.47 332.3114,102.8102 312.9414,124.5502" fill="none" id="IN-to-ECU" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="308.95,129.03,317.9237,124.9713,312.2762,125.2968,311.9506,119.6494,308.95,129.03" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="19.9253" x="350" y="95.3669">SPI</text></g><!--link SW to ECU--><g class="link" data-entity-1="ent0007" data-entity-2="ent0002" data-link-type="dependency" data-source-line="15" id="lnk15"><path d="M408.36,252.19 C401.93,237.6 392.02,218.91 379,205.59 C367.51,193.84 358.0448,186.8098 343.8748,178.8098" fill="none" id="SW-to-ECU" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="338.65,175.86,344.5207,183.7679,343.004,178.3182,348.4538,176.8015,338.65,175.86" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="31.9795" x="393" y="218.6569">GPIO</text></g><!--link ECU to SW--><g class="link" data-entity-1="ent0002" data-entity-2="ent0007" data-link-type="dependency" data-source-line="16" id="lnk16"><path d="M304.41,175.95 C314.72,190.16 329.09,208.44 344,222.59 C355.29,233.32 363.966,240.206 376.366,248.786" fill="none" id="ECU-to-SW" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="381.3,252.2,376.175,243.7896,377.1883,249.355,371.623,250.3683,381.3,252.2" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="25.4668" x="345" y="218.6569">LED</text></g><!--link ECU to CAN--><g class="link" data-entity-1="ent0002" data-entity-2="ent0008" data-link-type="dependency" data-source-line="17" id="lnk17"><path d="M345.36,152.44 C356.71,152.44 356.06,152.44 367.41,152.44" fill="none" id="ECU-CAN" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="339.36,152.44,348.36,156.44,344.36,152.44,348.36,148.44,339.36,152.44" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="373.41,152.44,364.41,148.44,368.41,152.44,364.41,156.44,373.41,152.44" style="stroke:#181818;stroke-width:1;"/></g><!--link CAN to DI--><g class="link" data-entity-1="ent0008" data-entity-2="ent0009" data-link-type="dependency" data-source-line="18" id="lnk18"><path d="M452.356,124.9582 C468.336,110.9082 486.16,98.33 509.5,90.8 C560.68,74.27 578.59,76.74 630.5,90.8 C657.94,98.23 680.6466,111.3264 700.7366,125.4064" fill="none" id="CAN-DI" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="447.85,128.92,457.2502,125.9813,451.605,125.6185,451.9678,119.9733,447.85,128.92" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="705.65,128.85,700.5756,120.409,701.5555,125.9804,695.9841,126.9603,705.65,128.85" style="stroke:#181818;stroke-width:1;"/></g><!--link CAN to OBD--><g class="link" data-entity-1="ent0008" data-entity-2="ent0010" data-link-type="dependency" data-source-line="19" id="lnk19"><path d="M480.76,152.44 C492.29,152.44 491.82,152.44 503.36,152.44" fill="none" id="CAN-OBD" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="474.76,152.44,483.76,156.44,479.76,152.44,483.76,148.44,474.76,152.44" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="509.36,152.44,500.36,148.44,504.36,152.44,500.36,156.44,509.36,152.44" style="stroke:#181818;stroke-width:1;"/></g><?plantuml-src NS_1Yi8m40RWUvvYyBIYkUr95g6rPGchjPYLdBjreCMOI5D1tzxf65tr43Bvlv3CEBz36ELb2lbYEu8g3Bjmd2RxtdTWMxSFBCdo1JgicpxA9eff42te8-8EDBhWEtJmSVuSypMZupNbQdhM7x37ZaKLKQWJgUkciYGmWMMUiMiJVP4KCZtTVgKwfZ_-yDVAh0r7MrtOCXLfdMRo5yFz8peAGIE2b7CQ26PGcjKKb5nX2F-mUGEZEH-Su6G32bKyHRfKGfkduBjKwyTp9BDX50w-A1WwfyKrTNelgRah?></g></svg>