Commit Graph

6 Commits

Author SHA1 Message Date
Tabish Bidiwale ecddffc22e fix: improve delta spec validation with case-insensitive headers and empty section detection (#191)
This commit enhances the validation logic for delta specs:
- Delta section headers are now parsed case-insensitively (e.g., "Added Requirements" and "ADDED Requirements" both work)
- Empty delta sections now produce clear error messages guiding users to add requirement entries
- Specs with no delta headers at all now receive specific error messages
- Added test coverage for case-insensitive delta header parsing
2025-10-19 23:56:53 +11:00
Tabish Bidiwale 88b260d51f fix: honor --no-validate and ignore metadata during archive validation (#190)
* fix: skip metadata when validating requirement SHALL/MUST keywords

Fixes validation incorrectly checking metadata lines instead of requirement text.

The extractRequirementText() function was returning the first non-empty line
after the requirement header, which was often metadata like **ID**: REQ-001
instead of the actual requirement statement.

Changes:
- Updated extractRequirementText() to skip lines matching **Key**: Value pattern
- Skip blank lines between header and requirement text
- Return first substantive text line for SHALL/MUST validation

Added comprehensive tests for:
- Requirements with metadata before SHALL/MUST text
- Requirements with SHALL in text but not header
- Requirements correctly failing without SHALL/MUST
- Requirements without metadata fields

All 20 validation tests pass.

Fixes #159

* Respect --no-validate flag while archiving
2025-10-16 17:34:33 +11:00
Tabish Bidiwale f1fabc5f18 refactor: standardize spec format to use Purpose and Requirements sections only 2025-08-16 11:34:09 +10:00
Tabish Bidiwale 9b3944bd09 refactor(cli): simplify spec command parsing and filtering; improve option validation and exits 2025-08-16 00:32:55 +10:00
Tabish Bidiwale 0a26c686f9 refactor: simplify scenario parsing to store raw text
- Replace structured {given, when, then} with {rawText} field
- Remove complex Given/When/Then parsing logic
- Preserve original formatting and whitespace
- Update all tests to use rawText field
- Remove unnecessary validation checks

This change reduces complexity while preserving all content exactly
as written, making the system more maintainable and flexible.
2025-08-15 23:25:24 +10:00
Tabish Bidiwale cb0d6f3189 feat: add zod runtime validation for specs and changes
- Add Zod schemas for specs, changes, requirements, and scenarios
- Implement markdown parser for extracting structured data
- Create validation infrastructure with error/warning/info levels
- Enhance archive command with pre-archive validation
- Add --no-validate flag with confirmation prompt for emergencies
- Enhance diff command with non-blocking validation warnings
- Add JSON converters for spec and change formats
- Add comprehensive test coverage for all validation components
2025-08-15 22:50:05 +10:00