Merged
Conversation
- Add release-patch, release-minor, release-major commands to Makefile - Automate branch creation, version update, commit, and PR creation - Include GitHub CLI integration for automatic PR creation - Update RELEASE.md to focus on automated workflow - Simplify release process from 5+ commands to 3 commands - Maintain backward compatibility with existing manual commands Streamlines release process while maintaining safety and review workflow.
This commit introduces a comprehensive marker-based system to distinguish auto-generated diagrams from user-created diagrams, enabling reliable content preservation during diagram operations. Key Changes: - Add REQVIRE-AUTOGENERATED-DIAGRAM marker to all auto-generated diagrams - Implement marker-based filtering in parser and utility functions - Update diagram removal logic to preserve user-created diagrams - Fix section content being null instead of empty string in model summaries - Add comprehensive system requirement for diagram marker specification - Update verification tests to validate marker functionality - Enhance test coverage for mixed diagram scenarios Technical Implementation: - diagrams.rs: Embed marker in generated diagrams - utils.rs: Shared utility functions for diagram filtering - parser.rs: Content filtering during parsing with page/section support - reports.rs: Enhanced model summaries with proper content display - Element registry extended with page and section content tracking Verification Updates: - Enhanced diagram generation tests to verify marker presence - Updated diagram removal tests for marker-based identification - Added bidirectional traceability between requirements and verifications - Comprehensive test coverage for auto-generated vs custom diagram handling This ensures reliable diagram management while protecting user content from accidental removal during automated operations.
The diagrams now include the new 'Auto-Generated Diagram Identification' requirement and its verification relationships, providing complete visual traceability for the marker-based diagram management feature.
- Add Pages and Sections tracking in ElementRegistry and GraphRegistry - Include page content (frontmatter) and section content in flushed markdown - Fix duplicate header issue by detecting existing headers in page content - Add comprehensive tests for page/section content inclusion - Enhance model summaries with page and section content display - Improve content filtering to preserve user-created diagrams
Major architectural changes: - Replace ElementRegistry with GraphRegistry as central component - Implement two-pass validation: element collection then relation validation - Move validation logic into GraphRegistry methods - Add ValidationError variant to ReqvireError enum - Make validation automatic for all commands that need model data - Remove redundant validate command from CLI Core improvements: - Move ElementNode and RelationNode types to GraphRegistry - Implement metadata-based circular dependency detection - Fix relation type validation and element type compatibility - Update all modules to use GraphRegistry instead of ElementRegistry - Add proper error handling and validation reporting Test fixes: - Fix all validation errors in test specifications - Create proper implementation files for satisfy relations - Add missing parent relations with correct element types - Fix circular dependencies and incompatible element types - Ensure test-diagram-generation passes with validation enabled File changes: - Delete core/src/element_registry.rs (replaced by GraphRegistry) - Update CLI to handle validation errors for all commands - Fix compilation errors across all modules and tests - Add new test implementation files for satisfy relations
Matrix generation fixes: - Rewrite get_requirements_by_root() to group by actual root requirements instead of file paths - Identify true root elements (without parent relations) - Build hierarchical groups under each root requirement - Use requirement names as section headers instead of file paths - Add recursive descendant collection with proper lifetimes Test fixes: - Fix test-remove-diagrams validation errors by adding user-requirement metadata - Move custom mermaid diagrams to section level to avoid metadata parsing conflicts - Ensure proper element structure in test specifications Results: - test-matrix-generation now passes (shows "## Root Requirement Alpha" sections) - test-remove-diagrams now passes (validation errors resolved)
Update subdirectory processing requirements and tests to properly validate parent directory references: - Update Subdirectory Processing Option requirement to specify that parent directory references should be reported as missing relation target errors - Update Subdirectory Processing Verification to test for missing relation target errors when parent directories are referenced - Enhance test-subdirectory-functionality to validate that model-summary fails with missing relation target error for parent directory references - Test properly handles both validation failure and normal subdirectory functionality by replacing invalid references with local ones for subsequent tests - Add proper metadata to test specification files for validation consistency The existing validation logic already correctly handles parent directory references by reporting them as missing relation targets when referenced files are not found in the subdirectory scope. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
…itecture Restructure the invalid relations test to properly validate the two-pass validation strategy: **Pass 1 Test (Parsing/Format Errors):** - Create pass1-errors/ test data with duplicate elements, invalid metadata format, invalid relation format, unsupported relation types, and duplicate subsections - These errors prevent Pass 2 from executing, validating the two-pass architecture **Pass 2 Test (Relation Validation Errors):** - Create pass2-errors/ test data with missing relation targets, incompatible element types, and circular dependencies - These errors are only detected when Pass 1 completes successfully **Updated Test Implementation:** - Run two separate test scenarios that independently validate each pass - Remove success echo statements for cleaner output - Verify that Pass 1 errors prevent Pass 2 execution - Verify that Pass 2 catches relation validation issues **Updated Verification Requirements:** - Clarify that Invalid Relations Test verifies the Two-Pass Validation Strategy - Add verification relations for both Two-Pass Validation Strategy and Validation Error Handling requirements - Update acceptance criteria to explicitly separate Pass 1 and Pass 2 validation concerns **Fix test-html-export:** - Add missing user-requirement metadata to elements that were triggering missing parent relation validation errors
- Fix test-diagram-filtering circular dependency by removing trace relation - Create backup file without circular dependency for proper test operation - Fix test-coverage-report by adding missing files (test-satisfied.sh, analysis-test.md) - Add backup directory cleanup to all tests that create backup folders - Remove existing backup directories to clean up test environment All diagram and coverage tests now pass with proper cleanup.
…and ensuring deterministic ordering - Update GraphRegistry::change_impact_with_relation() to include InternalPath targets (like satisfiedBy files) - Replace HashMap with BTreeMap for deterministic alphabetical ordering of relations - Fixes test-change-impact-detection which was failing due to: 1. Missing satisfiedBy relations (InternalPath targets were excluded) 2. Non-deterministic HashMap iteration causing flaky test results The change impact analysis now correctly shows all IMPACT_PROPAGATION_RELATIONS including satisfiedBy relations to implementation files, with consistent output ordering.
…fications - Update CLAUDE.md and README.md to use 'format' command instead of 'lint' - Remove obsolete 'validate' command references (validation is now automatic) - Rename "Lint Command" → "Format Command" in SystemRequirements - Rename "Linting Command" → "Formatting Command" in UserRequirements - Rename "Model Linting" → "Model Formatting" in UserRequirements - Update LintingTests.md to FormattingTests terminology - Update CLI interface structure in requirements The 'format' command better describes the operation: normalizing and standardizing requirements files rather than just checking for issues.
…ture - Update Two-Pass Validation Strategy to include automatic semantic normalization in Pass 1 - Specify that non-link identifiers and absolute paths are normalized during parsing - Remove incorrect reference to graph-based approach from Format Command - Clarify that normalization happens during element collection, not formatting This establishes that semantic normalization (identifiers, paths) occurs during model loading while stylistic formatting remains part of the format command.
BREAKING CHANGE: Semantic normalizations now happen during model loading - Add automatic identifier normalization in parse_target() function: - Convert non-link identifiers to proper markdown links with display text - Normalize absolute paths to relative paths (basic implementation) - Normalization occurs during Pass 1 of two-pass validation architecture - Fix broken references from linting→formatting terminology updates - Update relation parsing to apply normalizations during element collection This implements the semantic normalization requirements specified in the Two-Pass Validation Strategy. Relations are now automatically normalized when the model is loaded, ensuring consistent internal representation. Next: Implement graph-based format command to flush normalized model back to files.
- Add test-advanced-format with explicit string matching for 100% expectation coverage - Include reqvire.yaml config to ensure user-requirement metadata handling - Test covers dry-run, actual formatting, idempotent behavior, and diff output validation - Fix user-requirement metadata preservation in format command implementation - Replace old lint test with comprehensive format requirements verification - Update subdirectory test to use format command instead of deprecated lint - Remove obsolete LintingTests.md verification document
…bering - Add context lines (3 before/after changes) for better diff readability - Implement sequential line numbering that reflects final file positions - Add visual separation between file groups in diff output - Support consecutive separator normalization and relation indentation fixes - Add line numbering validation test case to catch regressions - Update requirements and verification docs with new formatting behaviors - Remove unused element_to_markdown function - Add test cases for consecutive separators and relation indentation
Collaborator
Author
|
/reqvire impact |
- Remove premature leading slash stripping from normalize_link_path function - Add unified path resolution in resolve_path_to_absolute function - Preserve absolute path indicators through parsing pipeline - Fix path resolution for identifiers starting with '/' to be relative to git root - Remove unused normalize_link_path function and simplify parse_target - Fix test expectations for fragment-only identifier normalization - Remove unused old_line_num variable assignments
- Add fallback lookup by fragment identifier when full target_id not found - Display actual element names instead of identifiers in markdown links - Satisfy specification requirement for human-readable relation links - Fix cross-file relation display names in element_to_markdown_with_context
Removed unused variable b_node and associated comment from test function to eliminate compiler warning.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updated to use graph registry to support more advanced functionalities.
Lint deprecated in favor of format which is flushing from graph registry: