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 11bcfbac66c238f6["đ requirements/Functional/Processing/Verifications"]
subgraph de803263fbe70715["đ ChangeImpactVerifications.md"]
b4cebcb9f2649a4f["Change Impact Analysis Verification"];
class b4cebcb9f2649a4f verification;
click b4cebcb9f2649a4f "ChangeImpactVerifications.html#change-impact-analysis-verification";
dc9eb3da0c5e0ed0["Change Impact Detection Test"];
class dc9eb3da0c5e0ed0 verification;
click dc9eb3da0c5e0ed0 "ChangeImpactVerifications.html#change-impact-detection-test";
b5f861c2be8eddab["Change Impact Relations Test"];
class b5f861c2be8eddab verification;
click b5f861c2be8eddab "ChangeImpactVerifications.html#change-impact-relations-test";
1b778e17c237657e["Change Impact Smart Filtering Test"];
class 1b778e17c237657e verification;
click 1b778e17c237657e "ChangeImpactVerifications.html#change-impact-smart-filtering-test";
d7a45cebd272c16["Element Content Extraction Test"];
class d7a45cebd272c16 verification;
click d7a45cebd272c16 "ChangeImpactVerifications.html#element-content-extraction-test";
129e024331e2ae9e["Structural Change Reports Verification"];
class 129e024331e2ae9e verification;
click 129e024331e2ae9e "ChangeImpactVerifications.html#structural-change-reports-verification";
end
end
c2377a15dab54ba5["test.sh"];
class c2377a15dab54ba5 default;
click c2377a15dab54ba5 "../../../../tests/test-change-impact-detection/test.sh";
b4cebcb9f2649a4f -->|satisfiedBy| c2377a15dab54ba5;
dc9eb3da0c5e0ed0 -->|satisfiedBy| c2377a15dab54ba5;
4e0ed6253b039034["test.sh"];
class 4e0ed6253b039034 default;
click 4e0ed6253b039034 "../../../../tests/test-change-impact-element-relocation/test.sh";
dc9eb3da0c5e0ed0 -->|satisfiedBy| 4e0ed6253b039034;
b5f861c2be8eddab -->|satisfiedBy| c2377a15dab54ba5;
c22a6530fecc52ed["test.sh"];
class c22a6530fecc52ed default;
click c22a6530fecc52ed "../../../../tests/test-change-impact-smart-filtering/test.sh";
1b778e17c237657e -->|satisfiedBy| c22a6530fecc52ed;
dd7cc79a76771691["test.sh"];
class dd7cc79a76771691 default;
click dd7cc79a76771691 "../../../../tests/test-element-content-extraction/test.sh";
d7a45cebd272c16 -->|satisfiedBy| dd7cc79a76771691;
129e024331e2ae9e -->|satisfiedBy| c2377a15dab54ba5;
Change Impact Analysis Verification
This test verifies that the system generates change impact reports when requested.
Details
Acceptance Criteria
- System should generate change impact reports in Markdown format
- System should support JSON output for change impact reports
- Reports should include an overview of model changes and their impact
Test Criteria
- Command exits with success (0) return code
- Reports contain expected impact information
- Both Markdown and JSON formats are properly supported
Test Procedure
TODO: write test procedure
Metadata
Relations
Change Impact Detection Test
This test verifies that the system correctly implements change impact detection, including proper default handling of the git commit parameter and smart filtering.
Details
Acceptance Criteria
- System correctly detects changes between different versions of requirements
- System correctly identifies element relocations (same Element ID, different file_path or section)
- Relocated elements without content changes do not trigger impact propagation
- Relocated elements WITH content or relation changes appear in BOTH âRelocatedâ AND âChangedâ sections
- Relocated elements appear in a separate âRelocatedâ section in the report
- System properly constructs a change impact report based on relationships between elements
- Relations are compared semantically by element name, not by identifier (prevents false positives when children relocate)
- Relocated parent with new relation to relocated+changed child is detected correctly
- Default git commit is HEAD when âgit-commit parameter is not provided
- System provides output in both human-readable text and JSON formats
- Smart filtering removes redundant elements that appear in other elementsâ relations
Test Criteria
- Command exits with success (0) return code
- Change impact report shows expected elements
- Change impact report shows correct relationships between elements
- Changed elements referenced in other changed elementsâ relations are filtered out (e.g., âPower Savingâ filtered when referenced by âPower Saving Modeâ)
- Relocated elements are reported with old location â new location format
- Pure relocations (same content, different location) do NOT appear in âRemovedâ + âAddedâ sections
- Pure relocations do NOT appear in impact propagation tree
- Relocated+changed elements appear in BOTH Relocated AND Changed sections
- Parent element with added relation to relocated+changed child shows in Changed with impact tree
- Relations to relocated elements donât cause false change detection in parent elements
- Summary statistics include count of relocated elements
- Element IDs remain stable when elements are relocated between files
- Output format matches requested format (text or JSON)
- Both explicit and implicit git commit parameters work properly
- JSON output is valid and contains all necessary information
- GitHub-style blob URLs are included in the output
Metadata
Relations
Change Impact Relations Test
This test verifies that the system correctly handles different relation types when calculating change impact.
Details
Acceptance Criteria
- System correctly propagates changes through different relation types
- System respects the IMPACT_PROPAGATION_RELATIONS list when determining impact flow
- System does not propagate impact through containment (file location) changes
- Element relocations without content changes do not trigger impact propagation
- System handles complex chains of relations properly
Test Criteria
- Command exits with success (0) return code
- Change impact report shows expected propagation through derivedFrom/derive relations
- Change impact report shows expected propagation through satisfiedBy/satisfy relations
- Change impact report shows expected propagation through verifiedBy/verify relations
- Relocations without content changes do NOT propagate through relations
- When an element moves files without content change, related elements are not marked as impacted
- System correctly handles circular dependencies in relation chains
Metadata
Relations
Change Impact Smart Filtering Test
This test verifies that the smart filtering correctly handles new elements in change impact reports, filtering child elements while showing parent elements.
Details
Acceptance Criteria
- New parent elements appear in the âNew Elementsâ section
- New child elements (with parent relationships to other new elements) are filtered out
- Filtered child elements are shown in parentâs relations with â(new)â marker
- Verification elements that are not children remain in the report
Test Criteria
- When adding a parent and child requirement together, only parent appears in âNew Elementsâ
- When adding a requirement and its verification, both appear (verification is not a child)
- Child elements are visible in the parentâs change impact tree with appropriate markers
Test Procedure
- Create test repository with existing requirements
- Add new parent requirement with derive relation to new child requirement
- Add new child requirement with derivedFrom relation to parent
- Run change impact detection
- Verify only parent appears in âNew Elementsâ section
- Verify child appears in parentâs relations with â(new)â marker
Metadata
Relations
This test verifies that the system correctly extracts element content for change impact detection.
Details
Acceptance Criteria
- System should properly extract requirement body for change impact detection
- Requirement body should include normalized main text and content from the Details subsection
- System should handle requirements with various combinations of subsections
Test Criteria
- Command exits with success (0) return code
- Output shows expected content for each element
- Content extraction correctly handles different subsection ordering
- Content extraction properly handles HTML details tags
Test Procedure
- Create test fixtures with requirements containing various combinations of subsections
- Run Reqvire model summary on the test fixtures
- Verify that extracted content matches expected content for each element
- Verify that content from Details subsection is properly included
Metadata
Relations
Structural Change Reports Verification
This test verifies that the system analyzes and reports on structural changes in the System model.
Details
Acceptance Criteria
- System should analyze structural changes in the System model
- System should identify affected components through relationship traversal
- System should generate reports of impacted elements and structures
Test Criteria
- Command exits with success (0) return code
- Change reports correctly identify affected elements
- Relationship traversal properly determines impact propagation
Test Procedure
TODO: write test procedure
Metadata
Relations