Skip to content

fix(openspec): make all in-flight changes pass strict validation#194

Merged
rubenvdlinde merged 1 commit into
betafrom
fix/openspec-validation
May 10, 2026
Merged

fix(openspec): make all in-flight changes pass strict validation#194
rubenvdlinde merged 1 commit into
betafrom
fix/openspec-validation

Conversation

@rubenvdlinde
Copy link
Copy Markdown
Contributor

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

  • add-json-manifest-renderer — `## Requirements` → `## ADDED Requirements`; empty `## MODIFIED Requirements` and `## REMOVED Requirements` sections collapsed into a non-delta `## Notes` block.
  • manifest-chart-widget — `## Requirements` → `## ADDED Requirements`.
  • All other changes (11 total) — first-line MUST/SHALL fixes (unwrap soft-wraps so the normative verb lands on physical line 1).

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

  • `openspec validate --all` green.
  • `openspec validate --all --strict` green.
  • CI green.

Related

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.
@rubenvdlinde rubenvdlinde requested a review from Rem-Dam as a code owner May 10, 2026 19:54
@rubenvdlinde rubenvdlinde merged commit dd6e2af into beta May 10, 2026
2 of 3 checks passed
@rubenvdlinde rubenvdlinde deleted the fix/openspec-validation branch May 10, 2026 20:06
@github-actions
Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 1.0.0-beta.31 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant