eslint-plugin-traceability 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/lib/src/index.d.ts +80 -0
  2. package/lib/src/index.js +58 -0
  3. package/lib/src/maintenance/batch.d.ts +16 -0
  4. package/lib/src/maintenance/batch.js +28 -0
  5. package/lib/src/maintenance/detect.d.ts +6 -0
  6. package/lib/src/maintenance/detect.js +69 -0
  7. package/lib/src/maintenance/index.js +22 -0
  8. package/lib/src/maintenance/report.d.ts +7 -0
  9. package/lib/src/maintenance/report.js +17 -0
  10. package/lib/src/maintenance/update.d.ts +6 -0
  11. package/lib/src/maintenance/update.js +67 -0
  12. package/lib/src/maintenance/utils.d.ts +6 -0
  13. package/lib/src/maintenance/utils.js +64 -0
  14. package/lib/src/rules/require-branch-annotation.d.ts +7 -0
  15. package/lib/src/rules/require-branch-annotation.js +111 -0
  16. package/lib/src/rules/require-req-annotation.d.ts +7 -0
  17. package/lib/src/rules/require-req-annotation.js +38 -0
  18. package/lib/src/rules/require-story-annotation.d.ts +7 -0
  19. package/lib/src/rules/require-story-annotation.js +50 -0
  20. package/lib/src/rules/valid-annotation-format.d.ts +10 -0
  21. package/lib/src/rules/valid-annotation-format.js +60 -0
  22. package/lib/src/rules/valid-req-reference.d.ts +3 -0
  23. package/lib/src/rules/valid-req-reference.js +104 -0
  24. package/lib/src/rules/valid-story-reference.d.ts +3 -0
  25. package/lib/src/rules/valid-story-reference.js +168 -0
  26. package/lib/tests/fixtures/stale/example.d.ts +0 -0
  27. package/{tests/fixtures/stale/example.ts → lib/tests/fixtures/stale/example.js} +1 -0
  28. package/lib/tests/fixtures/update/example.d.ts +0 -0
  29. package/{tests/fixtures/update/example.ts → lib/tests/fixtures/update/example.js} +1 -0
  30. package/lib/tests/fixtures/valid-annotations/example.d.ts +0 -0
  31. package/{tests/fixtures/valid-annotations/example.ts → lib/tests/fixtures/valid-annotations/example.js} +1 -0
  32. package/lib/tests/maintenance/batch.test.d.ts +1 -0
  33. package/lib/tests/maintenance/batch.test.js +79 -0
  34. package/lib/tests/maintenance/detect-isolated.test.d.ts +1 -0
  35. package/lib/tests/maintenance/detect-isolated.test.js +95 -0
  36. package/lib/tests/maintenance/detect.test.d.ts +1 -0
  37. package/lib/tests/maintenance/detect.test.js +23 -0
  38. package/lib/tests/maintenance/report.test.d.ts +1 -0
  39. package/lib/tests/maintenance/report.test.js +67 -0
  40. package/lib/tests/maintenance/update-isolated.test.d.ts +1 -0
  41. package/lib/tests/maintenance/update-isolated.test.js +66 -0
  42. package/lib/tests/maintenance/update.test.d.ts +1 -0
  43. package/lib/tests/maintenance/update.test.js +26 -0
  44. package/lib/tests/plugin-default-export-and-configs.test.d.ts +1 -0
  45. package/lib/tests/plugin-default-export-and-configs.test.js +72 -0
  46. package/lib/tests/plugin-setup.test.d.ts +1 -0
  47. package/lib/tests/plugin-setup.test.js +51 -0
  48. package/lib/tests/rules/require-branch-annotation.test.d.ts +1 -0
  49. package/lib/tests/rules/require-branch-annotation.test.js +253 -0
  50. package/lib/tests/rules/require-req-annotation.test.d.ts +1 -0
  51. package/lib/tests/rules/require-req-annotation.test.js +41 -0
  52. package/lib/tests/rules/require-story-annotation.test.d.ts +1 -0
  53. package/lib/tests/rules/require-story-annotation.test.js +36 -0
  54. package/lib/tests/rules/valid-annotation-format.test.d.ts +1 -0
  55. package/lib/tests/rules/valid-annotation-format.test.js +58 -0
  56. package/lib/tests/rules/valid-req-reference.test.d.ts +1 -0
  57. package/lib/tests/rules/valid-req-reference.test.js +87 -0
  58. package/lib/tests/rules/valid-story-reference.test.d.ts +1 -0
  59. package/lib/tests/rules/valid-story-reference.test.js +69 -0
  60. package/package.json +6 -1
  61. package/.env.example +0 -6
  62. package/.github/workflows/ci-cd.yml +0 -107
  63. package/.husky/pre-commit +0 -1
  64. package/.husky/pre-push +0 -1
  65. package/.prettierignore +0 -27
  66. package/.prettierrc +0 -4
  67. package/.releaserc.json +0 -15
  68. package/.voder/history.md +0 -162
  69. package/.voder/implementation-progress.md +0 -144
  70. package/.voder/last-action.md +0 -83
  71. package/.voder/plan.md +0 -12
  72. package/.voder/progress-chart.png +0 -0
  73. package/.voder/progress-log-areas.csv +0 -39
  74. package/.voder/progress-log.csv +0 -38
  75. package/.voder/traceability/docs-stories-001.0-DEV-PLUGIN-SETUP.story.xml +0 -17
  76. package/.voder/traceability/docs-stories-002.0-DEV-ESLINT-CONFIG.story.xml +0 -13
  77. package/.voder/traceability/docs-stories-003.0-DEV-FUNCTION-ANNOTATIONS.story.xml +0 -9
  78. package/.voder/traceability/docs-stories-004.0-DEV-BRANCH-ANNOTATIONS.story.xml +0 -9
  79. package/.voder/traceability/docs-stories-005.0-DEV-ANNOTATION-VALIDATION.story.xml +0 -9
  80. package/.voder/traceability/docs-stories-006.0-DEV-FILE-VALIDATION.story.xml +0 -9
  81. package/.voder/traceability/docs-stories-007.0-DEV-ERROR-REPORTING.story.xml +0 -9
  82. package/.voder/traceability/docs-stories-008.0-DEV-AUTO-FIX.story.xml +0 -9
  83. package/.voder/traceability/docs-stories-009.0-DEV-MAINTENANCE-TOOLS.story.xml +0 -16
  84. package/.voder/traceability/docs-stories-010.0-DEV-DEEP-VALIDATION.story.xml +0 -11
  85. package/CHANGELOG.md +0 -57
  86. package/CONTRIBUTING.md +0 -99
  87. package/cli-integration.js +0 -103
  88. package/docs/cli-integration.md +0 -105
  89. package/docs/config-presets.md +0 -38
  90. package/docs/conventional-commits-guide.md +0 -185
  91. package/docs/decisions/001-typescript-for-eslint-plugin.accepted.md +0 -111
  92. package/docs/decisions/002-jest-for-eslint-testing.accepted.md +0 -137
  93. package/docs/decisions/003-code-quality-ratcheting-plan.md +0 -48
  94. package/docs/decisions/004-automated-version-bumping-for-ci-cd.md +0 -196
  95. package/docs/decisions/005-github-actions-validation-tooling.accepted.md +0 -144
  96. package/docs/decisions/006-semantic-release-for-automated-publishing.accepted.md +0 -227
  97. package/docs/eslint-9-setup-guide.md +0 -517
  98. package/docs/eslint-plugin-development-guide.md +0 -483
  99. package/docs/jest-testing-guide.md +0 -100
  100. package/docs/rules/require-branch-annotation.md +0 -34
  101. package/docs/rules/require-req-annotation.md +0 -39
  102. package/docs/rules/require-story-annotation.md +0 -36
  103. package/docs/rules/valid-annotation-format.md +0 -52
  104. package/docs/rules/valid-req-reference.md +0 -58
  105. package/docs/rules/valid-story-reference.md +0 -47
  106. package/docs/security-incidents/unresolved-vulnerabilities.md +0 -11
  107. package/docs/stories/001.0-DEV-PLUGIN-SETUP.story.md +0 -82
  108. package/docs/stories/002.0-DEV-ESLINT-CONFIG.story.md +0 -82
  109. package/docs/stories/003.0-DEV-FUNCTION-ANNOTATIONS.story.md +0 -85
  110. package/docs/stories/004.0-DEV-BRANCH-ANNOTATIONS.story.md +0 -107
  111. package/docs/stories/005.0-DEV-ANNOTATION-VALIDATION.story.md +0 -119
  112. package/docs/stories/006.0-DEV-FILE-VALIDATION.story.md +0 -127
  113. package/docs/stories/007.0-DEV-ERROR-REPORTING.story.md +0 -89
  114. package/docs/stories/008.0-DEV-AUTO-FIX.story.md +0 -104
  115. package/docs/stories/009.0-DEV-MAINTENANCE-TOOLS.story.md +0 -104
  116. package/docs/stories/010.0-DEV-DEEP-VALIDATION.story.md +0 -110
  117. package/docs/stories/developer-story.map.md +0 -118
  118. package/eslint.config.js +0 -146
  119. package/jest.config.js +0 -21
  120. package/scripts/smoke-test.sh +0 -45
  121. package/src/index.ts +0 -56
  122. package/src/maintenance/batch.ts +0 -29
  123. package/src/maintenance/detect.ts +0 -42
  124. package/src/maintenance/report.ts +0 -15
  125. package/src/maintenance/update.ts +0 -40
  126. package/src/maintenance/utils.ts +0 -28
  127. package/src/rules/require-branch-annotation.ts +0 -114
  128. package/src/rules/require-req-annotation.ts +0 -36
  129. package/src/rules/require-story-annotation.ts +0 -52
  130. package/src/rules/valid-annotation-format.ts +0 -62
  131. package/src/rules/valid-req-reference.ts +0 -114
  132. package/src/rules/valid-story-reference.ts +0 -213
  133. package/tests/fixtures/story_bullet.md +0 -6
  134. package/tests/maintenance/batch.test.ts +0 -55
  135. package/tests/maintenance/detect-isolated.test.ts +0 -65
  136. package/tests/maintenance/detect.test.ts +0 -19
  137. package/tests/maintenance/report.test.ts +0 -37
  138. package/tests/maintenance/update-isolated.test.ts +0 -39
  139. package/tests/maintenance/update.test.ts +0 -21
  140. package/tests/plugin-default-export-and-configs.test.ts +0 -50
  141. package/tests/plugin-setup.test.ts +0 -17
  142. package/tests/rules/require-branch-annotation.test.ts +0 -250
  143. package/tests/rules/require-req-annotation.test.ts +0 -38
  144. package/tests/rules/require-story-annotation.test.ts +0 -33
  145. package/tests/rules/valid-annotation-format.test.ts +0 -55
  146. package/tests/rules/valid-req-reference.test.ts +0 -85
  147. package/tests/rules/valid-story-reference.test.ts +0 -66
  148. package/tsconfig.json +0 -15
  149. package/user-docs/api-reference.md +0 -135
  150. package/user-docs/examples.md +0 -73
  151. package/user-docs/migration-guide.md +0 -71
  152. /package/{src/maintenance/index.ts → lib/src/maintenance/index.d.ts} +0 -0
@@ -1,127 +0,0 @@
1
- # 006.0-DEV-FILE-VALIDATION: Story File Reference Validation
2
-
3
- ## Release Goal
4
-
5
- _Release 0.1: Core Validation - Provide essential ESLint rules that enforce @story and @req annotations on functions and code branches_
6
-
7
- This story implements validation logic that verifies @story annotations reference actual story files that exist in the project and have the correct .story.md extension. It completes the core file reference validation needed to ensure traceability annotations point to valid, accessible story files.
8
-
9
- ## How This Story Contributes
10
-
11
- This story completes the "Validate Annotations" journey phase by ensuring @story references point to actual files that exist and follow the required naming convention. It prevents broken traceability links and enables confident requirement validation, bridging the gap between code annotations and their corresponding story documentation.
12
-
13
- ## User Story
14
-
15
- **Format**: So that I can ensure my @story annotations reference valid story files, as a Developer, I want validation that checks @story file paths exist, are accessible, and follow the .story.md naming convention.
16
-
17
- **INVEST Criteria Compliance**:
18
-
19
- - **Independent**: Can be developed after annotation format validation (depends on 001.0-005.0)
20
- - **Negotiable**: File validation strictness and path resolution can be refined during implementation
21
- - **Valuable**: Delivers confidence that traceability links point to valid documentation
22
- - **Estimable**: Scope is clear - file system validation with defined path requirements
23
- - **Small**: Can be completed within a single iteration/sprint
24
- - **Testable**: File validation can be tested with various file system scenarios
25
-
26
- ## Acceptance Criteria
27
-
28
- Use checkbox format for clear completion tracking:
29
-
30
- - [ ] **Core Functionality**: Validates @story file paths reference existing .story.md files
31
- - [ ] **Quality Standards**: Follows ESLint development best practices and handles file system operations safely
32
- - [ ] **Integration**: Works with annotations validated by format validation (005.0)
33
- - [ ] **User Experience**: Clear error messages indicate which files are missing or invalid
34
- - [ ] **Error Handling**: Gracefully handles file system permissions, network drives, and edge cases
35
- - [ ] **Documentation**: File validation specification with path resolution rules and examples
36
-
37
- ## Requirements (Current Implementation or To Be Implemented)
38
-
39
- Document specific technical requirements using the format:
40
-
41
- - **REQ-FILE-EXISTENCE**: Verify @story file paths reference existing files
42
- - **REQ-PATH-RESOLUTION**: Resolve relative paths from project root or current file location
43
- - **REQ-SECURITY-VALIDATION**: Prevent path traversal attacks and access to restricted directories
44
- - **REQ-PERFORMANCE-OPTIMIZATION**: Efficient file system access with caching for repeated checks
45
- - **REQ-PROJECT-BOUNDARY**: Validate files are within project boundaries
46
- - **REQ-CONFIGURABLE-PATHS**: Support configurable story file directories and search patterns
47
-
48
- ## Dependencies
49
-
50
- List other stories this story depends on, using numbered story references:
51
-
52
- - 001.0-DEV-PLUGIN-SETUP (requires plugin structure foundation)
53
- - 002.0-DEV-ESLINT-CONFIG (requires configuration system)
54
- - 003.0-DEV-FUNCTION-ANNOTATIONS (uses annotations detected by function validation)
55
- - 004.0-DEV-BRANCH-ANNOTATIONS (uses annotations detected by branch validation)
56
- - 005.0-DEV-ANNOTATION-VALIDATION (requires properly formatted annotations)
57
-
58
- **Dependency Rules**:
59
-
60
- - Story numbers MUST be greater than all dependency story numbers
61
- - Dependencies should be from in-scope stories when possible
62
- - Cross-release dependencies should be clearly justified
63
- - No circular dependencies allowed
64
-
65
- ## Implementation Notes (Optional)
66
-
67
- Additional context for developers:
68
-
69
- - Use Node.js fs/promises for async file system operations
70
- - Implement path resolution relative to project root (where package.json/eslint.config.js exists)
71
- - Support configurable story directories (e.g., docs/stories/, stories/, etc.)
72
- - Cache file existence checks during single linting run for performance
73
- - Implement security checks to prevent path traversal (../) outside project
74
- - Handle various file system scenarios (case sensitivity, symbolic links, network drives)
75
- - Provide helpful error messages with suggestions for fixing path issues
76
-
77
- **Path Resolution Examples:**
78
-
79
- Valid story file references:
80
-
81
- ```javascript
82
- // @story docs/stories/001.0-DEV-EXAMPLE.story.md
83
- // @story stories/feature.story.md
84
- // @story ./local-story.story.md
85
- ```
86
-
87
- Invalid references that should trigger validation errors:
88
-
89
- ```javascript
90
- // @story ../outside-project.story.md (path traversal)
91
- // @story docs/stories/missing.story.md (file doesn't exist)
92
- // @story docs/stories/wrong-extension.md (wrong extension)
93
- // @story /absolute/path.story.md (absolute path not allowed)
94
- ```
95
-
96
- **Configuration Integration:**
97
-
98
- ```javascript
99
- // eslint.config.js
100
- export default [
101
- {
102
- plugins: { traceability },
103
- rules: {
104
- "traceability/valid-story-reference": [
105
- "error",
106
- {
107
- storyDirectories: ["docs/stories", "stories"],
108
- allowAbsolutePaths: false,
109
- requireStoryExtension: true,
110
- },
111
- ],
112
- },
113
- },
114
- ];
115
- ```
116
-
117
- ## Definition of Done
118
-
119
- - [ ] All acceptance criteria met
120
- - [ ] Code reviewed and approved
121
- - [ ] Tests written and passing (file system scenarios, path resolution, security)
122
- - [ ] Documentation updated (file validation rules and configuration options)
123
- - [ ] Performance tested with large numbers of story files
124
- - [ ] Security reviewed for path traversal and access control
125
- - [ ] Ready for error reporting enhancement (007.0-DEV-ERROR-REPORTING)
126
-
127
- ---
@@ -1,89 +0,0 @@
1
- # 007.0-DEV-ERROR-REPORTING: Clear Error Messages for Annotation Violations
2
-
3
- ## Release Goal
4
-
5
- **Release 0.1: Core Validation** - Provide essential ESLint rules that enforce @story and @req annotations on functions and code branches, with validation that referenced files exist and contain the referenced requirements.
6
-
7
- This story ensures developers receive clear, actionable feedback when traceability violations are detected, enabling quick resolution of annotation issues and supporting the overall goal of reliable traceability enforcement.
8
-
9
- ## How This Story Contributes
10
-
11
- Clear error messages are critical for developer adoption and productivity. When annotation validation fails, developers need to understand exactly what's wrong and how to fix it. This story transforms technical validation failures into helpful guidance, reducing friction in maintaining traceability annotations and ensuring developers can quickly resolve issues without extensive debugging.
12
-
13
- This story enables successful completion of the "Fix Issues" journey phase by providing the foundation for all error communication in the plugin.
14
-
15
- ## User Story
16
-
17
- **Format**: So that I can quickly understand and fix traceability violations without wasting time debugging, as a Developer, I want the ESLint plugin to provide clear, specific error messages that explain what's wrong and suggest how to fix annotation issues.
18
-
19
- **INVEST Criteria Compliance**:
20
-
21
- - **Independent**: Can be developed using the validation logic from previous stories without blocking dependencies
22
- - **Negotiable**: Error message formats and content can be refined based on developer feedback during implementation
23
- - **Valuable**: Delivers clear value by reducing time spent debugging annotation issues
24
- - **Estimable**: Scope is well-defined - enhance existing validation rules with improved messaging
25
- - **Small**: Focused on message enhancement rather than new validation logic
26
- - **Testable**: Error messages can be verified through unit tests and developer feedback
27
-
28
- ## Acceptance Criteria
29
-
30
- - [ ] **Core Functionality**: All validation rules provide specific, actionable error messages instead of generic failures
31
- - [ ] **Quality Standards**: Error messages follow ESLint best practices for clarity and consistency
32
- - [ ] **Integration**: Error messages work properly with existing validation rules and ESLint reporting
33
- - [ ] **User Experience**: Messages clearly identify the problem, location, and suggested fix
34
- - [ ] **Error Handling**: Gracefully handles edge cases where error context is incomplete
35
- - [ ] **Documentation**: Error message formats are documented for consistency across rules
36
-
37
- ## Requirements (Current Implementation or To Be Implemented)
38
-
39
- - **REQ-ERROR-SPECIFIC**: Each validation failure provides specific details about what annotation is missing or invalid
40
- - **REQ-ERROR-LOCATION**: Error messages include precise location information (function name, line number, file path)
41
- - **REQ-ERROR-SUGGESTION**: Messages suggest concrete steps to fix the issue (e.g., "Add @story annotation" or "Fix file path")
42
- - **REQ-ERROR-CONTEXT**: Error messages include relevant context (expected annotation format, available story files)
43
- - **REQ-ERROR-CONSISTENCY**: All plugin rules use consistent error message format and terminology
44
- - **REQ-ERROR-SEVERITY**: Error severity levels are appropriate (error for missing annotations, warning for format issues)
45
-
46
- ## Dependencies
47
-
48
- - 003.0-DEV-FUNCTION-ANNOTATIONS (error reporting needs function annotation validation logic)
49
- - 004.0-DEV-BRANCH-ANNOTATIONS (error reporting needs branch annotation validation logic)
50
- - 005.0-DEV-ANNOTATION-VALIDATION (error reporting needs annotation format validation results)
51
- - 006.0-DEV-FILE-VALIDATION (error reporting needs file validation results)
52
-
53
- **Dependency Rules**:
54
-
55
- - Story numbers MUST be greater than all dependency story numbers
56
- - Dependencies should be from in-scope stories when possible
57
- - Cross-release dependencies should be clearly justified
58
- - No circular dependencies allowed
59
-
60
- ## Implementation Notes (Optional)
61
-
62
- **Technical Considerations**:
63
-
64
- - Use ESLint's context.report() method for consistent error reporting
65
- - Implement error message templates for common validation failures
66
- - Consider internationalization support for error messages
67
- - Include suggestions using ESLint's suggest API where appropriate
68
-
69
- **Integration Points**:
70
-
71
- - Enhance existing validation rules from stories 003.0-006.0
72
- - Integrate with ESLint's built-in error reporting and formatting
73
- - Ensure compatibility with different ESLint output formats (stylish, json, etc.)
74
-
75
- **Testing Strategy**:
76
-
77
- - Unit tests for each error message scenario
78
- - Integration tests with various code patterns
79
- - Manual testing with developers for message clarity
80
- - Verify error messages work in different IDEs and editors
81
-
82
- ## Definition of Done
83
-
84
- - [ ] All acceptance criteria met
85
- - [ ] Code reviewed and approved
86
- - [ ] Tests written and passing
87
- - [ ] Documentation updated
88
- - [ ] Deployed to appropriate environment
89
- - [ ] Stakeholder acceptance confirmed
@@ -1,104 +0,0 @@
1
- # 008.0-DEV-AUTO-FIX: Simple Auto-Fixes for Annotation Issues
2
-
3
- ## Release Goal
4
-
5
- **Release 0.1: Core Validation** - Provide essential ESLint rules that enforce @story and @req annotations on functions and code branches, with validation that referenced files exist and contain the referenced requirements.
6
-
7
- This story enables developers to automatically fix common annotation issues through ESLint's auto-fix functionality, reducing manual effort and accelerating the adoption of traceability practices by making compliance as frictionless as possible.
8
-
9
- ## How This Story Contributes
10
-
11
- Auto-fix capabilities transform the "Fix Issues" experience from manual correction to automated resolution for common problems. This dramatically reduces the friction of maintaining traceability annotations, especially when introducing the plugin to existing codebases with many annotation violations. By providing safe, automated fixes, this story enables teams to quickly achieve compliance and focus on higher-value activities.
12
-
13
- This story completes the core "Fix Issues" journey phase by providing both clear error messages (007.0) and automated resolution capabilities.
14
-
15
- ## User Story
16
-
17
- **Format**: So that I can quickly resolve common annotation issues without manual editing, as a Developer, I want the ESLint plugin to automatically fix standard annotation violations when I run ESLint with the --fix option.
18
-
19
- **INVEST Criteria Compliance**:
20
-
21
- - **Independent**: Can be developed using existing validation logic and error reporting from previous stories
22
- - **Negotiable**: The set of auto-fixable issues and fix strategies can be refined during implementation
23
- - **Valuable**: Delivers clear value by reducing manual work and speeding up compliance
24
- - **Estimable**: Scope is well-defined - implement ESLint auto-fix for specific validation rules
25
- - **Small**: Focused on a subset of fixable issues rather than all possible violations
26
- - **Testable**: Auto-fixes can be verified through before/after code comparisons
27
-
28
- ## Acceptance Criteria
29
-
30
- - [ ] **Core Functionality**: ESLint --fix automatically resolves common annotation violations
31
- - [ ] **Quality Standards**: Auto-fixes are safe and preserve code functionality and formatting
32
- - [ ] **Integration**: Auto-fix works properly with existing validation rules and ESLint toolchain
33
- - [ ] **User Experience**: Fixes are applied consistently and predictably across different code patterns
34
- - [ ] **Error Handling**: Gracefully handles edge cases where auto-fix cannot be applied safely
35
- - [ ] **Documentation**: Auto-fix capabilities are documented with examples of fixable issues
36
-
37
- ## Requirements (Current Implementation or To Be Implemented)
38
-
39
- - **REQ-AUTOFIX-MISSING**: Automatically add missing @story annotations to functions using template format
40
- - **REQ-AUTOFIX-FORMAT**: Fix common annotation format issues (spacing, syntax, casing)
41
- - **REQ-AUTOFIX-SAFE**: Only apply fixes that are guaranteed to be safe and non-destructive
42
- - **REQ-AUTOFIX-PRESERVE**: Preserve existing code formatting, indentation, and comment structure
43
- - **REQ-AUTOFIX-TEMPLATE**: Use configurable annotation templates for consistent formatting
44
- - **REQ-AUTOFIX-SELECTIVE**: Allow developers to choose which types of fixes to enable/disable
45
-
46
- ## Dependencies
47
-
48
- - 003.0-DEV-FUNCTION-ANNOTATIONS (auto-fix needs to understand function annotation requirements)
49
- - 004.0-DEV-BRANCH-ANNOTATIONS (auto-fix needs to understand branch annotation requirements)
50
- - 005.0-DEV-ANNOTATION-VALIDATION (auto-fix needs validation logic to identify fixable issues)
51
- - 007.0-DEV-ERROR-REPORTING (auto-fix should integrate with error reporting for unfixable issues)
52
-
53
- **Dependency Rules**:
54
-
55
- - Story numbers MUST be greater than all dependency story numbers
56
- - Dependencies should be from in-scope stories when possible
57
- - Cross-release dependencies should be clearly justified
58
- - No circular dependencies allowed
59
-
60
- ## Implementation Notes (Optional)
61
-
62
- **Technical Considerations**:
63
-
64
- - Use ESLint's fix API to provide automated corrections
65
- - Implement fixer functions for each auto-fixable rule
66
- - Consider code formatting preservation using AST manipulation
67
- - Provide configuration options for auto-fix behavior
68
-
69
- **Integration Points**:
70
-
71
- - Enhance existing validation rules with fix capabilities
72
- - Integrate with ESLint's --fix command line option
73
- - Ensure compatibility with IDE auto-fix on save features
74
- - Work with existing code formatters (Prettier, etc.)
75
-
76
- **Safe Auto-Fix Scenarios**:
77
-
78
- - Adding missing @story annotations with placeholder content
79
- - Fixing annotation comment syntax (@story vs // @story)
80
- - Correcting annotation format spacing and structure
81
- - Standardizing annotation placement (before function vs inline)
82
-
83
- **Non-Auto-Fixable Scenarios** (require manual intervention):
84
-
85
- - Choosing appropriate story file references
86
- - Adding specific requirement annotations
87
- - Resolving file path issues that require developer knowledge
88
- - Complex formatting conflicts with existing code style
89
-
90
- **Testing Strategy**:
91
-
92
- - Unit tests for each auto-fix scenario with before/after comparisons
93
- - Integration tests with various code patterns and existing formatting
94
- - Edge case testing for complex code structures
95
- - Manual testing with real codebases to verify safety and effectiveness
96
-
97
- ## Definition of Done
98
-
99
- - [ ] All acceptance criteria met
100
- - [ ] Code reviewed and approved
101
- - [ ] Tests written and passing
102
- - [ ] Documentation updated
103
- - [ ] Deployed to appropriate environment
104
- - [ ] Stakeholder acceptance confirmed
@@ -1,104 +0,0 @@
1
- # 009.0-DEV-MAINTENANCE-TOOLS: Update Helpers for Annotation Maintenance
2
-
3
- ## Release Goal
4
-
5
- **Release 0.1: Core Validation** - Provide essential ESLint rules that enforce @story and @req annotations on functions and code branches, with validation that referenced files exist and contain the referenced requirements.
6
-
7
- This story provides developers with helper tools and utilities to maintain traceability annotations as their codebase evolves, ensuring annotations remain accurate and up-to-date when story files are moved, renamed, or restructured.
8
-
9
- ## How This Story Contributes
10
-
11
- As codebases grow and evolve, maintaining traceability annotations becomes an ongoing challenge. This story bridges the gap between initial compliance (achieved through validation and auto-fix) and long-term maintainability. By providing tools to update annotations when story files change, this story ensures that traceability systems remain valuable over time rather than becoming maintenance burdens.
12
-
13
- This story initiates the "Maintain Quality" journey phase by providing foundational tools for ongoing annotation maintenance.
14
-
15
- ## User Story
16
-
17
- **Format**: So that I can keep annotations accurate when story files are moved or renamed without manually hunting through code, as a Developer, I want helper tools that can batch update annotation references and detect when annotations become stale.
18
-
19
- **INVEST Criteria Compliance**:
20
-
21
- - **Independent**: Can be developed using existing validation logic and file system operations
22
- - **Negotiable**: The specific maintenance tools and their interfaces can be refined during implementation
23
- - **Valuable**: Delivers clear value by reducing manual maintenance work as projects evolve
24
- - **Estimable**: Scope is well-defined - implement specific maintenance utilities
25
- - **Small**: Focused on core maintenance scenarios rather than comprehensive project management
26
- - **Testable**: Maintenance operations can be verified through before/after file comparisons
27
-
28
- ## Acceptance Criteria
29
-
30
- - [ ] **Core Functionality**: Tools can detect and update annotation references when story files are moved or renamed
31
- - [ ] **Quality Standards**: Maintenance operations preserve code functionality and formatting
32
- - [ ] **Integration**: Tools work with existing project structure and ESLint configuration
33
- - [ ] **User Experience**: Maintenance operations provide clear feedback about what was changed
34
- - [ ] **Error Handling**: Gracefully handles edge cases like circular references or missing files
35
- - [ ] **Documentation**: Maintenance tools are documented with usage examples and best practices
36
-
37
- ## Requirements (Current Implementation or To Be Implemented)
38
-
39
- - **REQ-MAINT-DETECT**: Detect stale annotation references that point to moved or deleted story files
40
- - **REQ-MAINT-UPDATE**: Update annotation references when story files are moved or renamed
41
- - **REQ-MAINT-BATCH**: Perform batch updates across multiple files and annotations
42
- - **REQ-MAINT-VERIFY**: Verify annotation references are still valid after maintenance operations
43
- - **REQ-MAINT-REPORT**: Generate reports showing what annotations were updated and why
44
- - **REQ-MAINT-SAFE**: Ensure maintenance operations are reversible and don't break existing functionality
45
-
46
- ## Dependencies
47
-
48
- - 005.0-DEV-ANNOTATION-VALIDATION (maintenance tools need to understand annotation format)
49
- - 006.0-DEV-FILE-VALIDATION (maintenance tools need file existence validation logic)
50
- - 007.0-DEV-ERROR-REPORTING (maintenance tools should use consistent error reporting)
51
-
52
- **Dependency Rules**:
53
-
54
- - Story numbers MUST be greater than all dependency story numbers
55
- - Dependencies should be from in-scope stories when possible
56
- - Cross-release dependencies should be clearly justified
57
- - No circular dependencies allowed
58
-
59
- ## Implementation Notes (Optional)
60
-
61
- **Technical Considerations**:
62
-
63
- - Implement CLI tools for common maintenance operations
64
- - Use file system watching to detect when story files are moved or renamed
65
- - Provide programmatic APIs for integration with project tooling
66
- - Consider integration with Git hooks for automatic maintenance
67
-
68
- **Integration Points**:
69
-
70
- - Work with existing ESLint plugin infrastructure
71
- - Integrate with project build and development workflows
72
- - Provide hooks for custom maintenance automation
73
- - Support various project structures and story file organization
74
-
75
- **Common Maintenance Scenarios**:
76
-
77
- - Story files moved to new directories (reorganization)
78
- - Story files renamed for consistency or clarity
79
- - Story files deleted (need to flag dependent annotations)
80
- - Bulk updates when story numbering scheme changes
81
- - Project restructuring that affects story file paths
82
-
83
- **Maintenance Tool Types**:
84
-
85
- - **Detection Tools**: Scan codebase for stale or invalid annotation references
86
- - **Update Tools**: Batch update annotations to reflect file system changes
87
- - **Verification Tools**: Validate that all annotations still point to valid story files
88
- - **Migration Tools**: Help migrate from old annotation formats to new ones
89
-
90
- **Testing Strategy**:
91
-
92
- - Unit tests for each maintenance operation with various file scenarios
93
- - Integration tests with real project structures and story file layouts
94
- - Performance tests for large codebases with many annotations
95
- - Manual testing with common maintenance workflows
96
-
97
- ## Definition of Done
98
-
99
- - [ ] All acceptance criteria met
100
- - [ ] Code reviewed and approved
101
- - [ ] Tests written and passing
102
- - [ ] Documentation updated
103
- - [ ] Deployed to appropriate environment
104
- - [ ] Stakeholder acceptance confirmed
@@ -1,110 +0,0 @@
1
- # 010.0-DEV-DEEP-VALIDATION: Requirement Content Validation
2
-
3
- ## Release Goal
4
-
5
- **Release 0.1: Core Validation** - Provide essential ESLint rules that enforce @story and @req annotations on functions and code branches, with validation that referenced files exist and contain the referenced requirements.
6
-
7
- This story completes the validation framework by ensuring that @req annotations not only point to existing story files, but that the referenced requirements actually exist within those files. This provides complete end-to-end traceability validation from code annotations to actual requirement content.
8
-
9
- ## How This Story Contributes
10
-
11
- While basic file validation (006.0) ensures story files exist, deep validation goes further to verify that the specific requirements referenced in @req annotations are actually present in the story files. This prevents broken traceability links where annotations point to valid files but non-existent requirements, ensuring the traceability system maintains integrity as requirements evolve.
12
-
13
- This story completes the "Maintain Quality" journey phase and Release 0.1 by providing the most comprehensive validation possible, ensuring annotations remain meaningful and accurate.
14
-
15
- ## User Story
16
-
17
- **Format**: So that I can trust that @req annotations point to actual requirements and not just valid files, as a Developer, I want the ESLint plugin to validate that referenced requirements exist within the target story files.
18
-
19
- **INVEST Criteria Compliance**:
20
-
21
- - **Independent**: Can be developed using existing file validation and annotation parsing logic
22
- - **Negotiable**: The specific requirement matching strategies and formats can be refined during implementation
23
- - **Valuable**: Delivers clear value by ensuring annotation accuracy and preventing broken traceability
24
- - **Estimable**: Scope is well-defined - parse story files to validate requirement existence
25
- - **Small**: Focused on requirement content validation rather than broader file analysis
26
- - **Testable**: Requirement validation can be verified through story file parsing and matching tests
27
-
28
- ## Acceptance Criteria
29
-
30
- - [ ] **Core Functionality**: Plugin validates that @req annotations reference requirements that actually exist in the target story files
31
- - [ ] **Quality Standards**: Validation handles various requirement formats and story file structures
32
- - [ ] **Integration**: Works with existing file validation and annotation parsing logic
33
- - [ ] **User Experience**: Provides clear error messages when requirements are not found in story files
34
- - [ ] **Error Handling**: Gracefully handles malformed story files, missing sections, or parsing errors
35
- - [ ] **Documentation**: Requirement validation behavior is documented with examples of supported formats
36
-
37
- ## Requirements (Current Implementation or To Be Implemented)
38
-
39
- - **REQ-DEEP-PARSE**: Parse story file content to identify available requirements
40
- - **REQ-DEEP-MATCH**: Match @req annotation references against actual requirements in story files
41
- - **REQ-DEEP-FORMAT**: Support multiple requirement formats (REQ-XXX-YYY, bullet points, numbered lists)
42
- - **REQ-DEEP-SECTION**: Handle requirements in different story file sections (Requirements, Acceptance Criteria, etc.)
43
- - **REQ-DEEP-CACHE**: Cache parsed story file content to avoid re-parsing on every validation
44
- - **REQ-DEEP-ERROR**: Provide specific error messages when requirements are not found in story files
45
-
46
- ## Dependencies
47
-
48
- - 005.0-DEV-ANNOTATION-VALIDATION (deep validation needs annotation format parsing)
49
- - 006.0-DEV-FILE-VALIDATION (deep validation builds on file existence validation)
50
- - 007.0-DEV-ERROR-REPORTING (deep validation needs clear error reporting for requirement mismatches)
51
-
52
- **Dependency Rules**:
53
-
54
- - Story numbers MUST be greater than all dependency story numbers
55
- - Dependencies should be from in-scope stories when possible
56
- - Cross-release dependencies should be clearly justified
57
- - No circular dependencies allowed
58
-
59
- ## Implementation Notes (Optional)
60
-
61
- **Technical Considerations**:
62
-
63
- - Implement robust markdown parsing to extract requirements from story files
64
- - Support multiple requirement identification patterns (REQ-XXX-YYY, numbered bullets, etc.)
65
- - Consider performance implications of parsing story files during linting
66
- - Provide caching mechanisms to avoid repeated file parsing
67
-
68
- **Integration Points**:
69
-
70
- - Extend existing file validation logic to include content parsing
71
- - Integrate with annotation parsing to extract requirement references
72
- - Work with error reporting system to provide detailed mismatch information
73
- - Support various story file formats and structures
74
-
75
- **Requirement Identification Strategies**:
76
-
77
- - **Explicit Requirements**: Lines starting with "REQ-" or "\*\*REQ-"
78
- - **Acceptance Criteria**: Checkbox items in acceptance criteria sections
79
- - **Numbered Requirements**: Numbered list items in requirements sections
80
- - **Custom Patterns**: Configurable regex patterns for project-specific formats
81
-
82
- **Content Parsing Approach**:
83
-
84
- - Parse markdown structure to identify sections
85
- - Extract requirement identifiers using multiple strategies
86
- - Build searchable index of requirements per story file
87
- - Cache parsing results with file modification time tracking
88
-
89
- **Performance Considerations**:
90
-
91
- - Parse story files only when @req annotations reference them
92
- - Cache parsed content with file modification timestamps
93
- - Use incremental parsing for large story files
94
- - Provide configuration options to disable deep validation for performance
95
-
96
- **Testing Strategy**:
97
-
98
- - Unit tests for markdown parsing with various story file formats
99
- - Integration tests with real story files and annotation patterns
100
- - Performance tests with large story files and many annotations
101
- - Edge case testing with malformed markdown and unusual requirement formats
102
-
103
- ## Definition of Done
104
-
105
- - [ ] All acceptance criteria met
106
- - [ ] Code reviewed and approved
107
- - [ ] Tests written and passing
108
- - [ ] Documentation updated
109
- - [ ] Deployed to appropriate environment
110
- - [ ] Stakeholder acceptance confirmed
@@ -1,118 +0,0 @@
1
- # Developer User Story Map - ESLint Plugin Traceability
2
-
3
- ## Journey Steps (Columns)
4
-
5
- | **Setup Plugin** | **Write Code** | **Validate Annotations** | **Fix Issues** | **Maintain Quality** |
6
- | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------- | ----------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------- |
7
- | _Install and configure the ESLint plugin in their project to start enforcing traceability_ | _Write functions and code branches with proper @story and @req annotations_ | _Run linting to check that annotations exist and are valid_ | _Address any traceability violations found by the linter_ | _Keep annotations up-to-date as code evolves_ |
8
- | **Installation** | **Function Annotations** | **Annotation Validation** | **Error Resolution** | **Ongoing Maintenance** |
9
- | **Configuration** | **Branch Annotations** | **File Reference Validation** | **Quick Fixes** | **Ongoing Maintenance** |
10
-
11
- ## Personas
12
-
13
- - 🎯 **PRIMARY**: Developer - _A software developer who needs to maintain bidirectional traceability between code and requirements to ensure code quality and enable requirement validation through test execution_
14
- - 👥 **Team Lead** - _A technical lead who needs to ensure team compliance with traceability standards across the codebase_
15
- - 🔧 **QA Engineer** - _A quality assurance engineer who needs to validate that requirements are properly implemented and traceable through code_
16
-
17
- ---
18
-
19
- # User Story Map with Releases
20
-
21
- | **Release 0.1 (Core Validation)** (Planned) | **Setup Plugin** | **Write Code** | **Validate Annotations** | **Fix Issues** | **Maintain Quality** |
22
- | ------------------------------------------- | ----------------------- | ------------------------------ | ------------------------------- | ------------------------- | --------------------------- |
23
- | **Plugin Foundation** | 001.0-DEV-PLUGIN-SETUP | 003.0-DEV-FUNCTION-ANNOTATIONS | 005.0-DEV-ANNOTATION-VALIDATION | 007.0-DEV-ERROR-REPORTING | 009.0-DEV-MAINTENANCE-TOOLS |
24
- | **Basic Rules** | 002.0-DEV-ESLINT-CONFIG | 004.0-DEV-BRANCH-ANNOTATIONS | 006.0-DEV-FILE-VALIDATION | 008.0-DEV-AUTO-FIX | 010.0-DEV-DEEP-VALIDATION |
25
- | | - | - | - | - | - |
26
-
27
- | **Release 0.2 (Enhanced Features)** (Future) | **Setup Plugin** | **Write Code** | **Validate Annotations** | **Fix Issues** | **Maintain Quality** |
28
- | -------------------------------------------- | --------------------------- | ---------------------------- | ---------------------------- | --------------------------- | ------------------------- |
29
- | **Advanced Validation** | 011.0-DEV-IDE-INTEGRATION | 013.0-DEV-SMART-SUGGESTIONS | 015.0-DEV-REAL-TIME-FEEDBACK | 016.0-DEV-BULK-FIXES | 018.0-DEV-QUALITY-METRICS |
30
- | **Developer Experience** | 012.0-DEV-PROJECT-TEMPLATES | 014.0-DEV-ANNOTATION-HELPERS | - | 017.0-DEV-GUIDED-RESOLUTION | 019.0-DEV-DASHBOARD |
31
- | | - | - | - | - | - |
32
-
33
- ---
34
-
35
- ## Release Details
36
-
37
- ### Release 0.1: Core Validation (Planned)
38
-
39
- **Goal**: Provide essential ESLint rules that enforce @story and @req annotations on functions and code branches, with validation that referenced files exist and contain the referenced requirements.
40
- **Success Metric**: Developers can run ESLint and receive clear feedback when traceability annotations are missing, incorrect, or point to non-existent files/requirements.
41
- **Scope**: Basic plugin setup, core validation rules, error reporting, and simple auto-fix capabilities for common issues.
42
-
43
- **Stories by Category:**
44
-
45
- - **Plugin Foundation**: 001.0-DEV-PLUGIN-SETUP (ESLint plugin structure), 002.0-DEV-ESLINT-CONFIG (configuration setup)
46
- - **Core Annotations**: 003.0-DEV-FUNCTION-ANNOTATIONS (validate @story/@req on functions), 004.0-DEV-BRANCH-ANNOTATIONS (validate annotations on branches)
47
- - **Validation Logic**: 005.0-DEV-ANNOTATION-VALIDATION (check annotation format), 006.0-DEV-FILE-VALIDATION (verify story files exist)
48
- - **Developer Support**: 007.0-DEV-ERROR-REPORTING (clear error messages), 008.0-DEV-AUTO-FIX (simple auto-fixes)
49
- - **Ongoing Maintenance**: 009.0-DEV-MAINTENANCE-TOOLS (update helpers)
50
- - **Deep Validation**: 010.0-DEV-DEEP-VALIDATION (requirement content validation)
51
-
52
- **Total**: 10 stories covering complete basic traceability enforcement workflow
53
-
54
- ### Release 0.2: Enhanced Features (Future)
55
-
56
- **Goal**: Enhance developer experience with IDE integration, intelligent suggestions, advanced validation, and quality metrics to make traceability maintenance effortless and valuable.
57
- **Success Metric**: Developers proactively maintain traceability annotations with minimal friction, and teams can track and improve their traceability coverage over time.
58
- **Scope**: IDE extensions, smart auto-completion, deep requirement validation, bulk fixing tools, and traceability quality dashboards.
59
-
60
- **Stories by Category:**
61
-
62
- - **Developer Integration**: 011.0-DEV-IDE-INTEGRATION (VS Code extension), 012.0-DEV-PROJECT-TEMPLATES (starter templates)
63
- - **Smart Features**: 013.0-DEV-SMART-SUGGESTIONS (intelligent annotation suggestions), 014.0-DEV-ANNOTATION-HELPERS (auto-completion)
64
- - **Advanced Validation**: 015.0-DEV-REAL-TIME-FEEDBACK (live validation)
65
- - **Productivity Tools**: 016.0-DEV-BULK-FIXES (mass update tools), 017.0-DEV-GUIDED-RESOLUTION (fix wizards)
66
- - **Quality Management**: 018.0-DEV-QUALITY-METRICS (coverage tracking), 019.0-DEV-DASHBOARD (team dashboard)
67
-
68
- **Total**: 9 stories covering advanced developer experience and team quality management
69
-
70
- ---
71
-
72
- ## Key Questions for Developer
73
-
74
- ### **Release 0.1 Questions:**
75
-
76
- **Plugin Foundation:**
77
-
78
- - How easy is it to add the ESLint plugin to an existing project without disrupting current workflow?
79
- - What configuration options are needed to accommodate different project structures and story file locations?
80
- - How should the plugin handle different story file naming conventions (.story.md vs other formats)?
81
-
82
- **Core Annotations:**
83
-
84
- - What types of functions should require @story annotations (all functions, only exported functions, only functions above certain complexity)?
85
- - Which code branches need traceability annotations (if/else, try/catch, switch cases, loops)?
86
- - How should the plugin handle generated code or third-party code that can't have annotations?
87
-
88
- **Validation Logic:**
89
-
90
- - How strict should annotation format validation be (exact format vs flexible parsing)?
91
- - Should the plugin validate that @req annotations point to actual requirements within the referenced story file?
92
- - How should the plugin handle story files that exist but are empty or malformed?
93
-
94
- **Developer Support:**
95
-
96
- - What information should be included in error messages to help developers fix annotation issues quickly?
97
- - Which annotation errors can be auto-fixed safely (missing @story template, broken file paths)?
98
- - How should the plugin integrate with existing ESLint configurations and other rules?
99
-
100
- ### **Release 0.2 Questions:**
101
-
102
- **Developer Integration:**
103
-
104
- - What IDE features would make maintaining traceability annotations feel natural and effortless?
105
- - How can the plugin provide intelligent suggestions for @story references based on file context?
106
- - What project templates would help new teams adopt traceability practices from the start?
107
-
108
- **Advanced Validation:**
109
-
110
- - Should the plugin parse story files to validate that referenced requirements actually exist in the content?
111
- - How can the plugin detect when story files are updated but code annotations become stale?
112
- - What real-time feedback mechanisms would help developers maintain traceability as they code?
113
-
114
- **Quality Management:**
115
-
116
- - What metrics help teams understand and improve their traceability coverage?
117
- - How can teams track traceability quality trends over time?
118
- - What visualization tools would help identify areas of the codebase with poor traceability?