fix(openspec): make all in-flight changes pass strict validation#194
Merged
Conversation
The OpenSpec validator parses the FIRST physical line of each requirement body as the requirement text and requires it to contain SHALL or MUST. Many committed changes had soft-wrapped first sentences where the normative verb landed on line 2, causing 'must contain SHALL or MUST' errors despite the body clearly being normative. Two changes had structural issues (empty MODIFIED / REMOVED sections, and a 'Requirements' header that should have been 'ADDED Requirements'). Fixes per change: - add-json-manifest-renderer: replaced 'Requirements' header with 'ADDED Requirements' and removed empty MODIFIED / REMOVED sections (replaced with a non-delta 'Notes' block). - add-live-updates-plugin: REQ-ST-LU-002/003 first-line MUST. - cnapproot-app-availability-guard: REQ-OR-3/6/7 first-line MUST. - manifest-abstract-sidebar: 'All additions' first-line MUST. - manifest-card-index-component: 2 reqs. - manifest-chart-widget: 'Requirements' -> 'ADDED Requirements'. - manifest-config-refs: 5 reqs. - manifest-detail-sidebar-config: 3 reqs. - manifest-dynamic-menu: 2 reqs (one rephrased SHOULD -> MUST NOT). - manifest-named-view-sidebar: 2 reqs. - manifest-resolve-sentinel: 1 req. - manifest-settings-orchestration: 4 reqs. - manifest-settings-rich-sections: 3 reqs. - manifest-wiki-page-type: 1 req. All fixes preserve original intent — they only un-wrap the first sentence (no semantic edits) except where SHOULD had to be paired with a separate normative clause (manifest-dynamic-menu placeholder recommendation). Result: openspec validate --all --strict reports 46 / 46 passing.
Contributor
|
🎉 This PR is included in version 1.0.0-beta.31 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
`openspec validate --all` was reporting 13 / 46 items failing. Fixing them so future strict-workflow gating works.
Root cause
The OpenSpec validator parses the first physical line of each requirement body as the requirement text and requires it to contain SHALL or MUST. Many committed changes had soft-wrapped first sentences where the normative verb landed on line 2 — the body clearly contained MUST, but not where the parser looked. Two changes had structural header / section issues.
Fixes
Original intent preserved — only un-wraps the first sentence, no semantic edits. The one exception is `manifest-dynamic-menu` where a SHOULD recommendation got paired with a separate normative clause so the validator picks up MUST without changing the SHOULD intent.
Verification
```
$ openspec validate --all --strict
Totals: 46 passed, 0 failed (46 items)
```
Test plan
Related