Elements

graph TD; %% REQVIRE-AUTOGENERATED-DIAGRAM %% Graph styling classDef userRequirement fill:#D1C4E9,stroke:#7E57C2,stroke-width:2px; classDef systemRequirement fill:#E1D8EE,stroke:#673AB7,stroke-width:1.5px; classDef verification fill:#DCEDC8,stroke:#4CAF50,stroke-width:2px; classDef folder fill:#FAFAFA,stroke:#9E9E9E,stroke-width:3px; classDef file fill:#FFF8E1,stroke:#FFCA28,stroke-width:2px; classDef default fill:#F5F5F5,stroke:#424242,stroke-width:1.5px; subgraph 6c93988fc728d1f8["πŸ“ requirements/Functional/Core/Verifications"] subgraph 46a9d0ceb9db210e["πŸ“„ ValidationVerifications.md"] ad323c8d4c0751e["Invalid Relations Test"]; class ad323c8d4c0751e verification; click ad323c8d4c0751e "../Core/Verifications/ValidationVerifications.html#invalid-relations-test"; end end subgraph e6e9a42ade18cb0e["πŸ“ requirements/Functional/Output"] subgraph a1762b6e181c2fd0["πŸ“„ DiagramGeneration.md"] b1a0db26e90f239f["Diagram Generation
πŸ“Ž requirements/Functional/Output/Specifications.md#mermaid-diagram-generation-specification
πŸ“Ž requirements/Functional/Output/Specifications.md#mermaid-interactive-features-specification"]; class b1a0db26e90f239f systemRequirement; click b1a0db26e90f239f "DiagramGeneration.html#diagram-generation"; fba18d76f9130464["File Diagram Attachment Display
πŸ“Ž requirements/Functional/Output/Specifications.md#mermaid-diagram-generation-specification
πŸ“Ž requirements/Functional/Output/Specifications.md#mermaid-interactive-features-specification"]; class fba18d76f9130464 systemRequirement; click fba18d76f9130464 "DiagramGeneration.html#file-diagram-attachment-display"; 4dcf8077bf98e9e7["Interactive Mermaid Diagram Node Behavior
πŸ“Ž requirements/Functional/Output/Specifications.md#mermaid-interactive-features-specification"]; class 4dcf8077bf98e9e7 systemRequirement; click 4dcf8077bf98e9e7 "DiagramGeneration.html#interactive-mermaid-diagram-node-behavior"; ee0d244ddc9aac8f["Interactive Mermaid Diagrams
πŸ“Ž requirements/Functional/Output/Specifications.md#diagram-relation-filtering-specification"]; class ee0d244ddc9aac8f userRequirement; click ee0d244ddc9aac8f "DiagramGeneration.html#interactive-mermaid-diagrams"; 4ac07a91ef7bd376["SysML-Compatible Relationship Rendering
πŸ“Ž requirements/Functional/Output/Specifications.md#mermaid-diagram-generation-specification
πŸ“Ž requirements/Functional/Output/Specifications.md#diagram-relation-filtering-specification"]; class 4ac07a91ef7bd376 systemRequirement; click 4ac07a91ef7bd376 "DiagramGeneration.html#sysml-compatible-relationship-rendering"; 6a54472e974b0c63["Trace Relation Non-Directional Behavior"]; class 6a54472e974b0c63 systemRequirement; click 6a54472e974b0c63 "DiagramGeneration.html#trace-relation-non-directional-behavior"; end subgraph 7799005208c6c9c1["πŸ“„ Specifications.md"] 4804d27a20a41dfb["Diagram Relation Filtering Specification"]; class 4804d27a20a41dfb default; click 4804d27a20a41dfb "Specifications.html#diagram-relation-filtering-specification"; ac522a615450fded["Mermaid Diagram Generation Specification"]; class ac522a615450fded default; click ac522a615450fded "Specifications.html#mermaid-diagram-generation-specification"; b214580f5133dc42["Mermaid Diagram Style Specification"]; class b214580f5133dc42 default; click b214580f5133dc42 "Specifications.html#mermaid-diagram-style-specification"; ec385316ac867c67["Mermaid Interactive Features Specification"]; class ec385316ac867c67 default; click ec385316ac867c67 "Specifications.html#mermaid-interactive-features-specification"; 9e3bad6862a77529["SysML Rendering Specification"]; class 9e3bad6862a77529 default; click 9e3bad6862a77529 "Specifications.html#sysml-rendering-specification"; end end subgraph 6ac6c5ebccc78d5e["πŸ“ requirements/Functional/Output/Verifications"] subgraph 561c220cadb6e74d["πŸ“„ DiagramVerifications.md"] dc6eabd419d3f364["Diagram Generation Test"]; class dc6eabd419d3f364 verification; click dc6eabd419d3f364 "Verifications/DiagramVerifications.html#diagram-generation-test"; 6e29457ef7c1661a["Diagram Relation Filtering Verification"]; class 6e29457ef7c1661a verification; click 6e29457ef7c1661a "Verifications/DiagramVerifications.html#diagram-relation-filtering-verification"; 948d575da460bbd3["File Diagram Attachment Test"]; class 948d575da460bbd3 verification; click 948d575da460bbd3 "Verifications/DiagramVerifications.html#file-diagram-attachment-test"; 4149573a28941f35["Visualize Model Relationships Verification"]; class 4149573a28941f35 verification; click 4149573a28941f35 "Verifications/DiagramVerifications.html#visualize-model-relationships-verification"; end end subgraph 11bcfbac66c238f6["πŸ“ requirements/Functional/Processing/Verifications"] subgraph 9b8736a314ab6d6f["πŸ“„ TraceVerifications.md"] 881f005c754cdc5b["Trace Relations No Cycles Verification"]; class 881f005c754cdc5b verification; click 881f005c754cdc5b "../Processing/Verifications/TraceVerifications.html#trace-relations-no-cycles-verification"; end end b1a0db26e90f239f -.->|deriveReqT| fba18d76f9130464; b1a0db26e90f239f -.->|deriveReqT| 4dcf8077bf98e9e7; b1a0db26e90f239f -.->|deriveReqT| 4ac07a91ef7bd376; d4166762363eb31d["diagrams.rs"]; class d4166762363eb31d default; click d4166762363eb31d "../../../core/src/diagrams.rs"; b1a0db26e90f239f -->|satisfiedBy| d4166762363eb31d; bdf9762d399478a5["utils.rs"]; class bdf9762d399478a5 default; click bdf9762d399478a5 "../../../core/src/utils.rs"; b1a0db26e90f239f -->|satisfiedBy| bdf9762d399478a5; b1a0db26e90f239f -->|satisfiedBy| 4804d27a20a41dfb; b1a0db26e90f239f -.->|verifiedBy| dc6eabd419d3f364; b1a0db26e90f239f -.->|verifiedBy| 6e29457ef7c1661a; b1a0db26e90f239f -.->|verifiedBy| 4149573a28941f35; fba18d76f9130464 -->|satisfiedBy| d4166762363eb31d; fba18d76f9130464 -.->|verifiedBy| 948d575da460bbd3; 25bf5cc42f41e395["cli.rs"]; class 25bf5cc42f41e395 default; click 25bf5cc42f41e395 "../../../cli/src/cli.rs"; 4dcf8077bf98e9e7 -->|satisfiedBy| 25bf5cc42f41e395; 4dcf8077bf98e9e7 -->|satisfiedBy| d4166762363eb31d; ee0d244ddc9aac8f -.->|deriveReqT| b1a0db26e90f239f; ee0d244ddc9aac8f -->|satisfiedBy| ac522a615450fded; ee0d244ddc9aac8f -->|satisfiedBy| b214580f5133dc42; ee0d244ddc9aac8f -->|satisfiedBy| ec385316ac867c67; 4ac07a91ef7bd376 -->|satisfiedBy| d4166762363eb31d; 4ac07a91ef7bd376 -->|satisfiedBy| 9e3bad6862a77529; 6a54472e974b0c63 -.->|verifiedBy| ad323c8d4c0751e; 6a54472e974b0c63 -.->|verifiedBy| 881f005c754cdc5b; 6da864fbba49def6["test.sh"]; class 6da864fbba49def6 default; click 6da864fbba49def6 "../../../tests/test-attachment-export/test.sh"; 948d575da460bbd3 -->|satisfiedBy| 6da864fbba49def6; 5150ae05d0a88a84["test.sh"]; class 5150ae05d0a88a84 default; click 5150ae05d0a88a84 "../../../tests/test-invalid-relations/test.sh"; ad323c8d4c0751e -->|satisfiedBy| 5150ae05d0a88a84; f9055f9f44c18e4a["test.sh"]; class f9055f9f44c18e4a default; click f9055f9f44c18e4a "../../../tests/test-trace-no-cycles/test.sh"; 881f005c754cdc5b -->|satisfiedBy| f9055f9f44c18e4a;

Interactive Mermaid Diagrams

The system shall produce interactive visual representations of relationships within the System model in the form of Mermaid diagrams, enabling users to explore relations, navigate the model structure, and understand dependencies.

Metadata

  • type: user-requirement

Attachments

Relations


Diagram Generation

When requested, the system shall automatically generate diagrams with relation filtering and save them to the required locations of the model.

Metadata

  • type: requirement

Attachments

Relations


File Diagram Attachment Display

The system shall display element attachments in file-based mermaid diagrams as clickable links below the element name within the node box.

Details

  • Attachments shall appear below the element name using <br/> line separator
  • Each attachment shall be prefixed with πŸ“Ž icon
  • Attachment filenames shall be shown (not full paths)
  • Clicking an attachment shall navigate to the attachment file
  • Multiple attachments shall each appear on separate lines
  • Elements without attachments show only their name

Format: Element Name<br/>πŸ“Ž attachment1.md<br/>πŸ“Ž attachment2.md

Metadata

  • type: requirement

Attachments

Relations


Interactive Mermaid Diagram Node Behavior

The system shall implement interactive click behavior for Mermaid diagram nodes that redirects to the referenced element.

Details

Clickable mermaid diagrams links by default must use relative links to the git repository.

CLI flag options must be provided that can change default behavior to use stable github repository links:

  • diagrams click links are not working on Github if not using stable github repository links
  • from another side that pollutes PR diffs thus choice must be given to the user
  • Commands that generate diagrams (generate-diagrams, export, serve) must expose --links-with-blobs CLI flag for that purpose
  • The flag defaults to false (use relative paths)

When generating diagram node links and when --links-with-blobs flag is set to true, the system shall:

  • Use stable git repository links ({repository-url}/blob/{commit-hash}/{file-path}) when git repository information is available
  • Fallback to relative markdown links when git repository information is not available
  • Use the current commit hash to ensure links remain stable even as the repository evolves
  • Match the same link format used in traceability matrices and change impact reports
  • Preserve interactive behavior across all generated diagrams

The traces command shall always use relative paths (hardcoded to false, no flag needed).

The change-impact command shall continue to use GitHub blob URLs by default (unchanged behavior).

Metadata

  • type: requirement

Attachments

Relations


SysML-Compatible Relationship Rendering

The system shall implement a relationship rendering engine that adheres to SysML notation standards following clearly defined specifications, ensuring diagram consistency and standards compliance.

Details

The system shall render relationships using:

  • SysML stereotypes (Β«deriveReqtΒ», Β«verifyΒ», Β«satisfyΒ», Β«traceΒ»)
  • Appropriate line styles (dashed or solid)
  • Open (hollow) arrowheads
  • Correct arrow directions based on hierarchy semantics

Each relation type has specific visual properties and directional semantics defined in the specification.

Metadata

  • type: requirement

Attachments

Relations


Trace Relation Non-Directional Behavior

The system shall treat trace relations as non-directional for circular dependency detection while maintaining their traceability purpose, ensuring that trace relations do not participate in cycle detection algorithms.

Details

The trace relation behavior shall include:

  1. Circular Dependency Exclusion:

    • Trace relations shall not be traversed during circular dependency detection
    • The cycle detection algorithm shall skip trace relations to prevent false positive cycles
    • Trace relations exist solely for traceability and documentation purposes
  2. Non-Propagation Behavior:

    • Changes shall not propagate through trace relations
    • Trace relations shall not be included in change impact analysis
    • Impact trees shall not traverse trace relation connections
  3. Bidirectional Traceability:

    • Trace relations shall provide bidirectional navigational capability
    • Users can navigate from source to target and target to source
    • Both directions are semantically equivalent for traceability purposes
  4. Validation Behavior:

    • Trace relations shall be validated for target existence
    • Trace relations shall not require type compatibility validation
    • Trace relations can connect any element type to any other element type

This ensures that trace relations serve their intended purpose of establishing lightweight traceability connections without creating artificial dependency constraints or participating in architectural validation logic.

Metadata

  • type: requirement

Relations