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
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
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
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
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
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:
-
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
-
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
-
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
-
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
Relations