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

  • type: user-requirement

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

  • type: requirement

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

  • type: requirement

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

  • type: requirement

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

  • type: requirement

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

  • type: requirement

Attachments

Relations