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 91eede421faaa553["๐ requirements/Functional/Operations"]
subgraph 61ca07ef5d124066["๐ Linting.md"]
176bc8c4eb6608de["Lint Auto-fix Capability
๐ requirements/Functional/Output/Specifications.md#diff-output-format-specification"];
class 176bc8c4eb6608de systemRequirement;
click 176bc8c4eb6608de "Linting.html#lint-auto-fix-capability";
20f690d9cd389f10["Model Linting"];
class 20f690d9cd389f10 userRequirement;
click 20f690d9cd389f10 "Linting.html#model-linting";
8ab6eb6e6ddc46cc["Multi-Branch Convergence Detection
๐ requirements/Functional/Processing/Specifications.md#verification-trace-tree-construction"];
class 8ab6eb6e6ddc46cc systemRequirement;
click 8ab6eb6e6ddc46cc "Linting.html#multi-branch-convergence-detection";
cc7864983ff441c7["Redundant Hierarchical Attachment Detection"];
class cc7864983ff441c7 systemRequirement;
click cc7864983ff441c7 "Linting.html#redundant-hierarchical-attachment-detection";
5f8fafa1901435c["Redundant Hierarchical Relations Detection and Auto-Removal
๐ requirements/Functional/Processing/Specifications.md#verification-trace-tree-construction"];
class 5f8fafa1901435c systemRequirement;
click 5f8fafa1901435c "Linting.html#redundant-hierarchical-relations-detection-and-auto-removal";
500be52cc121e6f2["Redundant Verify Relations Detection
๐ requirements/Functional/Processing/Specifications.md#verification-trace-tree-construction"];
class 500be52cc121e6f2 systemRequirement;
click 500be52cc121e6f2 "Linting.html#redundant-verify-relations-detection";
end
subgraph 7c2e7eef0051f760["๐ Specifications.md"]
b8a5e3adb9b5d82d["Lint Output Specification"];
class b8a5e3adb9b5d82d default;
click b8a5e3adb9b5d82d "Specifications.html#lint-output-specification";
c5d346cc41243982["Multi-Branch Convergence Detection Specification"];
class c5d346cc41243982 default;
click c5d346cc41243982 "Specifications.html#multi-branch-convergence-detection-specification";
6a995b12e8da977a["Redundant Hierarchical Relations Specification"];
class 6a995b12e8da977a default;
click 6a995b12e8da977a "Specifications.html#redundant-hierarchical-relations-specification";
end
end
subgraph 75874bcc96c01d2f["๐ requirements/Functional/Operations/Verifications"]
subgraph 584acc9e5dd3c2cd["๐ LintingVerifications.md"]
a967e55b50b57d2["Lint Command Verification"];
class a967e55b50b57d2 verification;
click a967e55b50b57d2 "Verifications/LintingVerifications.html#lint-command-verification";
d57f3715f551dd1f["Redundant Hierarchical Attachment Test"];
class d57f3715f551dd1f verification;
click d57f3715f551dd1f "Verifications/LintingVerifications.html#redundant-hierarchical-attachment-test";
end
end
176bc8c4eb6608de -.->|verifiedBy| a967e55b50b57d2;
20f690d9cd389f10 -.->|deriveReqT| 176bc8c4eb6608de;
20f690d9cd389f10 -.->|deriveReqT| 8ab6eb6e6ddc46cc;
20f690d9cd389f10 -.->|deriveReqT| cc7864983ff441c7;
20f690d9cd389f10 -.->|deriveReqT| 5f8fafa1901435c;
20f690d9cd389f10 -.->|deriveReqT| 500be52cc121e6f2;
20f690d9cd389f10 -->|satisfiedBy| b8a5e3adb9b5d82d;
20f690d9cd389f10 -.->|verifiedBy| a967e55b50b57d2;
bff128c40d23f061["lint.rs"];
class bff128c40d23f061 default;
click bff128c40d23f061 "../../../core/src/lint.rs";
8ab6eb6e6ddc46cc -->|satisfiedBy| bff128c40d23f061;
8ab6eb6e6ddc46cc -->|satisfiedBy| c5d346cc41243982;
8ab6eb6e6ddc46cc -.->|verifiedBy| a967e55b50b57d2;
cc7864983ff441c7 -->|satisfiedBy| bff128c40d23f061;
cc7864983ff441c7 -.->|verifiedBy| d57f3715f551dd1f;
5f8fafa1901435c -->|satisfiedBy| bff128c40d23f061;
5f8fafa1901435c -->|satisfiedBy| 6a995b12e8da977a;
5f8fafa1901435c -.->|verifiedBy| a967e55b50b57d2;
500be52cc121e6f2 -.->|verifiedBy| a967e55b50b57d2;
627c92e05bc78e3b["test.sh"];
class 627c92e05bc78e3b default;
click 627c92e05bc78e3b "../../../tests/test-lint-command/test.sh";
a967e55b50b57d2 -->|satisfiedBy| 627c92e05bc78e3b;
f6021060dbf21d0c["test.sh"];
class f6021060dbf21d0c default;
click f6021060dbf21d0c "../../../tests/test-lint-redundant-attachments/test.sh";
d57f3715f551dd1f -->|satisfiedBy| f6021060dbf21d0c;
Model Linting
The system shall provide model linting capabilities to analyze model quality and detect issues in requirements relations.
Details
When linting the model, the system shall identify issues with model relations that may need attention.
When categorizing lint issues, the system shall distinguish between issues that can be automatically fixed and those requiring human judgment.
When reporting lint findings, the system shall provide clear categorization to help users understand what actions are needed.
When running the lint command, the system shall support both reporting mode and automatic fixing mode.
When filtering lint results, the system shall allow focusing on specific categories of issues.
Metadata
Relations
Lint Auto-fix Capability
The system shall provide automatic fixing capability for auto-fixable lint issues, applying changes directly to model files when the --fix flag is used.
Details
Auto-fix shall:
- Only apply fixes for issues categorized as auto-fixable
- Modify the affected markdown files directly
- Remove redundant verify relations from verification elements
- Remove redundant hierarchical attachments from child elements
- Preserve all other content and formatting in the files
- Report all changes made (files modified, relations removed)
- Skip issues categorized as needing manual review
Metadata
Attachments
Relations
Multi-Branch Convergence Detection
The system shall detect when an element reaches a common ancestor through multiple distinct branch paths without a direct relation, reporting these cases as needing manual review to determine if both branches are semantically necessary or if one represents a modeling error.
Metadata
Attachments
Relations
Redundant Hierarchical Attachment Detection
The system shall detect attachments that are duplicated between child elements and their ancestors in the derivedFrom hierarchy, flagging the childโs attachment as redundant and auto-fixable.
Details
An attachment is redundant when:
- A child element has an attachment (file or refinement element)
- An ancestor element (via derivedFrom chain) has the same attachment
- The attachment is already accessible through the ancestor
Detection shall:
- Traverse the derivedFrom hierarchy for each element with attachments
- Check if any ancestor has the same attachment
- Report the first (topmost) ancestor with the attachment
- Categorize as auto-fixable since the childโs duplicate adds no value
Auto-fix behavior:
- Remove the redundant attachment from the child element
- Preserve the attachment on the ancestor (topmost stays)
- Report all removals for transparency
Metadata
Relations
Redundant Hierarchical Relations Detection and Auto-Removal
The system shall detect and auto-remove redundant derivedFrom relations where an element has direct derivedFrom relations to both a requirement and its ancestor in the requirement hierarchy.
Metadata
Attachments
Relations
Redundant Verify Relations Detection
The system shall detect redundant verify relations where a verification directly verifies both a child requirement and its ancestor, leveraging the existing verification trace tree logic from the Verification Trace Builder.
Details
A verify relation is redundant when:
- A verification directly verifies both a leaf requirement AND its parent/ancestor in the hierarchy
- The verification trace tree shows that an ancestor requirement is also directly verified
- Since verification traces roll up automatically through derivedFrom relations, verifying the leaf is sufficient
Detection shall:
- Reuse the trace tree building logic from Verification Trace Builder
- Identify ancestor requirements in each verificationโs trace tree that are also directly verified
- Report these as redundant relations that add noise to the model
- Categorize as auto-fixable since removing them is safe and mechanical
Metadata
Attachments
Relations