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 e6e9a42ade18cb0e["π requirements/Functional/Output"]
subgraph 7799005208c6c9c1["π Specifications.md"]
faac557edc3096ee["Color Scheme Specification"];
class faac557edc3096ee default;
click faac557edc3096ee "../../Functional/Output/Specifications.html#color-scheme-specification";
end
end
subgraph cfe1eea0278796bc["π requirements/Interfaces/CLI"]
subgraph 43307c569ff89429["π Commands.md"]
a8750da2c3580220["Validate Command
π requirements/Functional/Core/Behaviors.md#two-pass-validation-behavior
π requirements/Functional/Core/Behaviors.md#validation-error-reporting-behavior
π requirements/Functional/Output/Specifications.md#json-output-structure
π requirements/Functional/Output/Specifications.md#error-message-format-specification"];
class a8750da2c3580220 systemRequirement;
click a8750da2c3580220 "../CLI/Commands.html#validate-command";
end
end
subgraph e258363212a98952["π requirements/Interfaces/CLI/Verifications"]
subgraph 81d836bf8ae49ad4["π CLIVerifications.md"]
bd0b4833b30da28["CLI Help Structure Verification"];
class bd0b4833b30da28 verification;
click bd0b4833b30da28 "../CLI/Verifications/CLIVerifications.html#cli-help-structure-verification";
end
end
subgraph 46bd8996ef832bd8["π requirements/Interfaces/WebInterface"]
subgraph 318b1cdfa03981b0["π Features.md"]
e03d9fc7fee23cbf["Attachment Export"];
class e03d9fc7fee23cbf systemRequirement;
click e03d9fc7fee23cbf "Features.html#attachment-export";
1a4bd1d4cf59c6c3["Containment View Attachment Links
π requirements/Interfaces/WebInterface/Specifications.md#d3js-containment-tree-specification"];
class 1a4bd1d4cf59c6c3 systemRequirement;
click 1a4bd1d4cf59c6c3 "Features.html#containment-view-attachment-links";
399558ec4fcaeca["Diagram Attachment Display
π requirements/Functional/Output/Specifications.md#mermaid-diagram-style-specification"];
class 399558ec4fcaeca systemRequirement;
click 399558ec4fcaeca "Features.html#diagram-attachment-display";
343e7b2d42df05e8["HTML Export
π requirements/Interfaces/WebInterface/Behaviors.md#web-interface-navigation-behavior"];
class 343e7b2d42df05e8 systemRequirement;
click 343e7b2d42df05e8 "Features.html#html-export";
27d051a7dc8ddd3d["Model-Centric View Generation
π requirements/Functional/Output/Specifications.md#mermaid-diagram-style-specification
π requirements/Interfaces/WebInterface/Specifications.md#html-export-pipeline-specification
π requirements/Interfaces/WebInterface/Specifications.md#html-navigation-bar-specification"];
class 27d051a7dc8ddd3d systemRequirement;
click 27d051a7dc8ddd3d "Features.html#model-centric-view-generation";
d9d538e0add3a7ee["Model View Element Navigation"];
class d9d538e0add3a7ee systemRequirement;
click d9d538e0add3a7ee "Features.html#model-view-element-navigation";
9b566692fe070492["Serve Command
π requirements/Interfaces/WebInterface/Specifications.md#html-export-pipeline-specification"];
class 9b566692fe070492 systemRequirement;
click 9b566692fe070492 "Features.html#serve-command";
965615d978d68cf5["Web Interface Color Scheme
π requirements/Interfaces/WebInterface/Specifications.md#html-navigation-bar-specification
π requirements/Interfaces/WebInterface/Specifications.md#html-branding-specification"];
class 965615d978d68cf5 systemRequirement;
click 965615d978d68cf5 "Features.html#web-interface-color-scheme";
end
subgraph 5d341d66c5d20d4a["π Specifications.md"]
2c269288950887aa["D3.js Containment Tree Specification"];
class 2c269288950887aa default;
click 2c269288950887aa "Specifications.html#d3js-containment-tree-specification";
ac8ced009233741a["HTML Branding Specification"];
class ac8ced009233741a default;
click ac8ced009233741a "Specifications.html#html-branding-specification";
32592aed4644ac95["HTML Export Pipeline Specification"];
class 32592aed4644ac95 default;
click 32592aed4644ac95 "Specifications.html#html-export-pipeline-specification";
1c6c804d67bc741e["HTML Navigation Bar Specification"];
class 1c6c804d67bc741e default;
click 1c6c804d67bc741e "Specifications.html#html-navigation-bar-specification";
945adb3f0ea1012e["Web Interface Style Specification"];
class 945adb3f0ea1012e default;
click 945adb3f0ea1012e "Specifications.html#web-interface-style-specification";
end
end
subgraph 7b06d045a68fb066["π requirements/Interfaces/WebInterface/Verifications"]
subgraph 560467e65835f4b0["π WebInterfaceVerifications.md"]
10fd7a6a648e333a["Attachment Export Verification"];
class 10fd7a6a648e333a verification;
click 10fd7a6a648e333a "Verifications/WebInterfaceVerifications.html#attachment-export-verification";
4761515e40f428b4["Containment Attachment Links Verification"];
class 4761515e40f428b4 verification;
click 4761515e40f428b4 "Verifications/WebInterfaceVerifications.html#containment-attachment-links-verification";
55142ee2c012c875["Diagram Attachment Display Verification"];
class 55142ee2c012c875 verification;
click 55142ee2c012c875 "Verifications/WebInterfaceVerifications.html#diagram-attachment-display-verification";
a7eeaf4fd1d17030["HTML Export Verification"];
class a7eeaf4fd1d17030 verification;
click a7eeaf4fd1d17030 "Verifications/WebInterfaceVerifications.html#html-export-verification";
5e30c180284e9196["Model View Element Navigation Test"];
class 5e30c180284e9196 verification;
click 5e30c180284e9196 "Verifications/WebInterfaceVerifications.html#model-view-element-navigation-test";
d48ee06d20b13bcc["Serve Command Verification"];
class d48ee06d20b13bcc verification;
click d48ee06d20b13bcc "Verifications/WebInterfaceVerifications.html#serve-command-verification";
end
end
bd747195bcfe94dd["export.rs"];
class bd747195bcfe94dd default;
click bd747195bcfe94dd "../../../core/src/export.rs";
e03d9fc7fee23cbf -->|satisfiedBy| bd747195bcfe94dd;
e03d9fc7fee23cbf -.->|verifiedBy| 10fd7a6a648e333a;
4a8772cb0c75593a["containment.rs"];
class 4a8772cb0c75593a default;
click 4a8772cb0c75593a "../../../core/src/containment.rs";
1a4bd1d4cf59c6c3 -->|satisfiedBy| 4a8772cb0c75593a;
1a4bd1d4cf59c6c3 -.->|verifiedBy| 4761515e40f428b4;
d4166762363eb31d["diagrams.rs"];
class d4166762363eb31d default;
click d4166762363eb31d "../../../core/src/diagrams.rs";
399558ec4fcaeca -->|satisfiedBy| d4166762363eb31d;
399558ec4fcaeca -.->|verifiedBy| 55142ee2c012c875;
343e7b2d42df05e8 -.->|deriveReqT| e03d9fc7fee23cbf;
343e7b2d42df05e8 -.->|deriveReqT| 1a4bd1d4cf59c6c3;
343e7b2d42df05e8 -.->|deriveReqT| 399558ec4fcaeca;
343e7b2d42df05e8 -.->|deriveReqT| 27d051a7dc8ddd3d;
343e7b2d42df05e8 -.->|deriveReqT| 965615d978d68cf5;
25bf5cc42f41e395["cli.rs"];
class 25bf5cc42f41e395 default;
click 25bf5cc42f41e395 "../../../cli/src/cli.rs";
343e7b2d42df05e8 -->|satisfiedBy| 25bf5cc42f41e395;
343e7b2d42df05e8 -->|satisfiedBy| bd747195bcfe94dd;
fe66abc142b678e5["layouts.rs"];
class fe66abc142b678e5 default;
click fe66abc142b678e5 "../../../core/src/html/layouts.rs";
343e7b2d42df05e8 -->|satisfiedBy| fe66abc142b678e5;
b6f563ab46761a95["mod.rs"];
class b6f563ab46761a95 default;
click b6f563ab46761a95 "../../../core/src/html/mod.rs";
343e7b2d42df05e8 -->|satisfiedBy| b6f563ab46761a95;
68fef32bd3e3323d["html_export.rs"];
class 68fef32bd3e3323d default;
click 68fef32bd3e3323d "../../../core/src/html_export.rs";
343e7b2d42df05e8 -->|satisfiedBy| 68fef32bd3e3323d;
b4e855d4c9269f88["index_generator.rs"];
class b4e855d4c9269f88 default;
click b4e855d4c9269f88 "../../../core/src/index_generator.rs";
343e7b2d42df05e8 -->|satisfiedBy| b4e855d4c9269f88;
343e7b2d42df05e8 -->|satisfiedBy| 2c269288950887aa;
343e7b2d42df05e8 -->|satisfiedBy| ac8ced009233741a;
343e7b2d42df05e8 -->|satisfiedBy| 32592aed4644ac95;
343e7b2d42df05e8 -->|satisfiedBy| 1c6c804d67bc741e;
343e7b2d42df05e8 -->|satisfiedBy| 945adb3f0ea1012e;
343e7b2d42df05e8 -.->|verifiedBy| bd0b4833b30da28;
343e7b2d42df05e8 -.->|verifiedBy| a7eeaf4fd1d17030;
27d051a7dc8ddd3d -.->|deriveReqT| d9d538e0add3a7ee;
27d051a7dc8ddd3d -->|satisfiedBy| bd747195bcfe94dd;
b2113c1b9405a723["report_model.rs"];
class b2113c1b9405a723 default;
click b2113c1b9405a723 "../../../core/src/report_model.rs";
27d051a7dc8ddd3d -->|satisfiedBy| b2113c1b9405a723;
d9d538e0add3a7ee -->|satisfiedBy| b2113c1b9405a723;
d9d538e0add3a7ee -.->|verifiedBy| 5e30c180284e9196;
9b566692fe070492 -->|satisfiedBy| 25bf5cc42f41e395;
70c4d955a4bb93c["serve.rs"];
class 70c4d955a4bb93c default;
click 70c4d955a4bb93c "../../../cli/src/serve.rs";
9b566692fe070492 -->|satisfiedBy| 70c4d955a4bb93c;
9b566692fe070492 -.->|trace| a8750da2c3580220;
9b566692fe070492 -.->|verifiedBy| d48ee06d20b13bcc;
965615d978d68cf5 -->|satisfiedBy| 4a8772cb0c75593a;
965615d978d68cf5 -->|satisfiedBy| fe66abc142b678e5;
e948fd9e3ed02443["styles.rs"];
class e948fd9e3ed02443 default;
click e948fd9e3ed02443 "../../../core/src/html/styles.rs";
965615d978d68cf5 -->|satisfiedBy| e948fd9e3ed02443;
965615d978d68cf5 -->|satisfiedBy| faac557edc3096ee;
6da864fbba49def6["test.sh"];
class 6da864fbba49def6 default;
click 6da864fbba49def6 "../../../tests/test-attachment-export/test.sh";
10fd7a6a648e333a -->|satisfiedBy| 6da864fbba49def6;
4761515e40f428b4 -->|satisfiedBy| 6da864fbba49def6;
55142ee2c012c875 -->|satisfiedBy| 6da864fbba49def6;
7478201b4d47e866["test.sh"];
class 7478201b4d47e866 default;
click 7478201b4d47e866 "../../../tests/test-cli-help-structure/test.sh";
bd0b4833b30da28 -->|satisfiedBy| 7478201b4d47e866;
7f5ed48bc960d276["test.sh"];
class 7f5ed48bc960d276 default;
click 7f5ed48bc960d276 "../../../tests/test-html-export/test.sh";
a7eeaf4fd1d17030 -->|satisfiedBy| 7f5ed48bc960d276;
df92bf508f2f7295["test.sh"];
class df92bf508f2f7295 default;
click df92bf508f2f7295 "../../../tests/test-model-command/test.sh";
5e30c180284e9196 -->|satisfiedBy| df92bf508f2f7295;
a8750da2c3580220 -->|satisfiedBy| 25bf5cc42f41e395;
a8750da2c3580220 -.->|verifiedBy| ad323c8d4c0751e;
a8750da2c3580220 -.->|verifiedBy| bd0b4833b30da28;
b2e17101035a75d["test.sh"];
class b2e17101035a75d default;
click b2e17101035a75d "../../../tests/test-serve-command/test.sh";
d48ee06d20b13bcc -->|satisfiedBy| b2e17101035a75d;
HTML Export
The system SHALL generate comprehensive HTML documentation with all model artifacts by creating a temporary working copy, generating all reports in that copy, and exporting to the output directory.
Metadata
Attachments
Relations
Attachment Export
The system shall copy all attachment files referenced by elements during HTML export to preserve document completeness and enable navigation.
Details
During HTML export, the system shall:
- Identify all attachments from element.attachments across the model
- Copy each attachment file to the output directory preserving relative paths
- Skip duplicate attachments (same file referenced by multiple elements)
- Log attachment copying progress
This ensures exported documentation includes all referenced external documents (PDFs, design documents, etc.) for complete offline browsing.
Metadata
Relations
Containment View Attachment Links
The system shall display attachment links as children of elements in the containment D3.js tree to provide quick access to associated documents.
Details
For each element with attachments:
- Display attachments as child nodes in the D3.js tree
- Element attachments use wrench icon (π§) with type
attachment-element
- File attachments use paperclip icon (π) with type
attachment-file
- Element attachments are clickable and navigate to the referenced element
- File attachments show filename and path for reference
Metadata
Attachments
Relations
Diagram Attachment Display
The system shall display attachment links within element boxes in generated diagrams to show document associations visually.
Details
In Mermaid diagrams:
- Element boxes shall include attachment links below the element name
- Use paperclip icon (π) prefix for each attachment
- Show filename only (not full path) for space efficiency
- Make attachment links clickable to open the document
- Format using Mermaidβs multiline label syntax (
<br/>)
Example Mermaid node:
elementId["Element Name<br/>π DesignDoc.md"]
Metadata
Attachments
Relations
Model-Centric View Generation
The system shall generate a model-centric visualization during HTML export showing root requirements with nested relations containing full element details.
Details
- Display root requirements (no hierarchical parent) as top-level entries
- Show relations nested inside elements with full target details recursively
- Include metadata about total elements and relations
- Generate mermaid diagrams showing all nested relations
- Output as markdown with embedded visualizations (model.html)
Metadata
Attachments
Relations
Model View Element Navigation
The system shall make element names in the model-centric view clickable links that navigate to the elementβs definition in its source file.
Details
- Element names displayed as headers shall be hyperlinks
- Links shall point to the elementβs source file with fragment identifier
- Format:
[Element Name](file_path#element-fragment)
- Enables direct navigation from model view to element definition
Metadata
Relations
Web Interface Color Scheme
The system shall implement a consistent color scheme across all HTML pages following clearly defined specifications optimized for MBSE and requirements management applications.
Details
The color scheme shall provide:
- Primary branding colors for navigation and UI elements
- Element type-specific colors for visual differentiation
- Status indicator colors for verification and error states
- Interactive state colors for hover effects and links
- D3.js containment tree node styling with type-specific icons
The system shall ensure color consistency between:
- HTML page styling
- Mermaid diagram rendering
- D3.js containment tree visualization
Metadata
Attachments
Relations
Serve Command
The system SHALL provide a serve command that exports comprehensive HTML documentation and serves it via an HTTP server for browsing.
Details
serve command shall:
- Accept
--host <HOST> option to specify the bind address (default: localhost)
- Accept
--port <PORT> option to specify the server port (default: 8080)
- Use a random temporary directory for HTML export
- Run HTML Export to generate complete documentation in temporary directory
- Start an HTTP server serving static files from the temporary directory
- Display clickable server URL for user to open in browser
- Display instructions to press Ctrl-C to stop server
- Continue serving until terminated by the user (Ctrl-C)
Metadata
Attachments
Relations