4351dfa4e1
Validate / build-and-test (push) Successful in 30s
- 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
1 line
9.6 KiB
XML
1 line
9.6 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="313px" preserveAspectRatio="none" style="width:716px;height:313px;background:#FFFFFF;" version="1.1" viewBox="0 0 716 313" width="716px" zoomAndPan="magnify"><?plantuml 1.2026.4beta2?><defs/><g><!--entity Apply Controller--><g class="entity" data-qualified-name="Apply Controller" data-source-line="1" id="ent0002"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="153.1484" x="303.33" y="130.3"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="436.4784" y="135.3"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="434.4784" y="137.3"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="434.4784" y="141.3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="113.1484" x="318.33" y="163.2951">Apply Controller</text></g><!--entity Actuator Driver L--><g class="entity" data-qualified-name="Actuator Driver L" data-source-line="1" id="ent0003"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="159.8066" x="7" y="253.59"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="146.8066" y="258.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="144.8066" y="260.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="144.8066" y="264.59"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="119.8066" x="22" y="286.5851">Actuator Driver L</text></g><!--entity Actuator Driver R--><g class="entity" data-qualified-name="Actuator Driver R" data-source-line="2" id="ent0005"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="161.7344" x="202.04" y="253.59"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="343.7744" y="258.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="341.7744" y="260.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="341.7744" y="264.59"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="121.7344" x="217.04" y="286.5851">Actuator Driver R</text></g><!--entity Switch Debouncer--><g class="entity" data-qualified-name="Switch Debouncer" data-source-line="3" id="ent0007"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="167.3945" x="199.21" y="7"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="346.6045" y="12"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="344.6045" y="14"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="344.6045" y="18"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="127.3945" x="214.21" y="39.9951">Switch Debouncer</text></g><!--entity Safety Manager--><g class="entity" data-qualified-name="Safety Manager" data-source-line="4" id="ent0009"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="150.5986" x="401.6" y="7"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="532.1986" y="12"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="530.1986" y="14"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="530.1986" y="18"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="110.5986" x="416.6" y="39.9951">Safety Manager</text></g><!--entity Display Manager--><g class="entity" data-qualified-name="Display Manager" data-source-line="5" id="ent0011"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="157.4209" x="399.19" y="253.59"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="536.6109" y="258.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="534.6109" y="260.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="534.6109" y="264.59"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="117.4209" x="414.19" y="286.5851">Display Manager</text></g><!--entity Watchdog--><g class="entity" data-qualified-name="Watchdog" data-source-line="6" id="ent0013"><rect fill="#F1F1F1" height="46.2969" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="110.8203" x="591.49" y="253.59"/><rect fill="#F1F1F1" height="10" style="stroke:#181818;stroke-width:0.5;" width="15" x="682.3103" y="258.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="680.3103" y="260.59"/><rect fill="#F1F1F1" height="2" style="stroke:#181818;stroke-width:0.5;" width="4" x="680.3103" y="264.59"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="70.8203" x="606.49" y="286.5851">Watchdog</text></g><!--link Apply Controller to Actuator Driver L--><g class="link" data-entity-1="ent0002" data-entity-2="ent0003" data-link-type="dependency" data-source-line="1" id="lnk4"><path d="M308.07,177.03 C282.5,185.61 253.67,195.9 227.9,206.59 C194.16,220.59 162.4434,236.1313 134.7934,250.3813" fill="none" id="Apply Controller-to-Actuator Driver L" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="129.46,253.13,139.2925,252.5626,133.9045,250.8394,135.6276,245.4514,129.46,253.13" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="87.8452" x="228.9" y="219.6569">apply/release</text></g><!--link Apply Controller to Actuator Driver R--><g class="link" data-entity-1="ent0002" data-entity-2="ent0005" data-link-type="dependency" data-source-line="2" id="lnk6"><path d="M361.89,176.98 C344.46,198.76 321.9579,226.9046 304.5679,248.6446" fill="none" id="Apply Controller-to-Actuator Driver R" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="300.82,253.33,309.5655,248.8005,303.9433,249.4255,303.3182,243.8033,300.82,253.33" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="87.8452" x="337.9" y="219.6569">apply/release</text></g><!--link Switch Debouncer to Apply Controller--><g class="link" data-entity-1="ent0007" data-entity-2="ent0002" data-link-type="dependency" data-source-line="3" id="lnk8"><path d="M281.41,53.75 C281.55,68.18 283.83,86.66 292.9,100.3 C301,112.46 307.8694,119.0928 320.3794,126.7328" fill="none" id="Switch Debouncer-to-Apply Controller" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="325.5,129.86,319.9039,121.7555,321.2328,127.254,315.7343,128.5829,325.5,129.86" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="139.5405" x="293.9" y="96.3669">sw_apply, sw_release</text></g><!--link Safety Manager to Apply Controller--><g class="link" data-entity-1="ent0009" data-entity-2="ent0002" data-link-type="dependency" data-source-line="4" id="lnk10"><path d="M466.49,53.79 C459.45,67.89 449.37,86 437.9,100.3 C429.35,110.97 423.044,117.4002 413.064,126.0502" fill="none" id="Safety Manager-to-Apply Controller" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="408.53,129.98,417.9508,127.108,412.3083,126.7052,412.7111,121.0627,408.53,129.98" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="189.6299" x="449.9" y="96.3669">auto_apply, hill_hold_request</text></g><!--link Apply Controller to Display Manager--><g class="link" data-entity-1="ent0002" data-entity-2="ent0011" data-link-type="dependency" data-source-line="5" id="lnk12"><path d="M405.61,176.92 C415.01,185.72 425.41,196.2 433.9,206.59 C445.87,221.25 454.2476,234.1627 462.4476,248.1627" fill="none" id="Apply Controller-to-Display Manager" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="465.48,253.34,464.3829,243.5524,462.953,249.0256,457.4798,247.5957,465.48,253.34" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="39.9458" x="446.9" y="219.6569">status</text></g><!--reverse link Apply Controller to Watchdog--><g class="link" data-entity-1="ent0002" data-entity-2="ent0013" data-link-type="dependency" data-source-line="6" id="lnk14"><path d="M435.1848,179.4971 C455.4148,188.6671 473.55,196.89 494.9,206.59 C529.09,222.12 567.58,239.63 597.28,253.15" fill="none" id="Apply Controller-backto-Watchdog" style="stroke:#181818;stroke-width:1;"/><polygon fill="#181818" points="429.72,177.02,436.2658,184.3789,434.274,179.0843,439.5686,177.0925,429.72,177.02" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="75.4419" x="528.9" y="219.6569">alive_check</text></g><?plantuml-src ZO_12i8m343lVaK-mE5zY33SKIzwy536Y5sqnR3EDdNixzq6Ci4ftdB8UybJMTDm1rjNYtVCv0j8aWseJ4j4SHvoRn_aOLT02ZZihZmnOQ25-XCzpA37reesaDFPnLfFw8SnXT2M8xmSfac05v8EzbZZzIUEKTnBO2npQHnNlUSUASZNXjo6Xl7Dt_yXA37C4Uia0NN2FgXor_4cz-6bDgHlJm00?></g></svg> |