The /sdd-verify command launches the verifier sub-agent to validate that the implementation matches the specs, design, and tasks. It performs comprehensive quality checks and produces a compliance report.
v2.0 Enhancement: Now runs real tests and builds, produces spec compliance matrix, and reports issues at severity levels.
✓ Coverage: 89% (threshold: 80%)✓ New files covered: ThemeContext 100%, ThemeToggle 95%---## Spec Compliance Matrix| ID | Requirement | Status | Evidence ||----|-------------|--------|----------|| UI-1 | System SHALL support light and dark themes | ✓ PASS | CSS variables in globals.css:15-42 || UI-2 | User SHALL be able to toggle between themes | ✓ PASS | ThemeToggle component + test passing || UI-3 | User preference SHALL persist across sessions | ✓ PASS | localStorage integration:28-30, test passing || UI-4 | System SHOULD detect initial preference | ✓ PASS | matchMedia in ThemeContext:18-22 || UI-5 | Theme SHOULD apply without page reload | ✓ PASS | React Context + CSS classes, test passing || UI-6 | System SHOULD prevent theme flash on load | ✓ PASS | Inline script in Layout || UI-7 | Toggle MAY show current theme state | ✓ PASS | Icon changes in ThemeToggle:15-20 |**Summary**: 7/7 scenarios PASS, 0 FAIL, 0 SKIP---## Issues Found### CRITICALNone ✓### WARNING1. TODO comment in src/components/ThemeToggle.tsx:45 ```typescript // TODO: Add keyboard shortcut for theme toggle
Impact: Minor - doesn’t block functionality
Recommendation: Create follow-up issue or remove if not planned
✓ 50 tests passed✗ 2 tests failed**Failed Tests**:1. `CSV Export › should handle special characters`
Expected: id,title,content
1,“Test, with comma”,“Data”Received: id,title,content
1,Test, with comma,DataError: Quotes missing around fields with commas
2. `CSV Export › should include UTF-8 BOM for Excel`
Expected file to start with UTF-8 BOM (\uFEFF)
Received: No BOM present
Running build...
$ npm run build
✓ Build succeeded---## Spec Compliance Matrix| ID | Requirement | Status | Evidence ||----|-------------|--------|----------|| API-1 | SHALL export data in CSV format | ✓ PASS | Endpoint implemented, basic test passing || API-2 | SHALL support UTF-8 encoding with BOM | ✗ FAIL | Test failing: no BOM added || API-3 | SHALL include column headers | ✓ PASS | Headers present in output || API-4 | SHOULD handle special characters | ✗ FAIL | Test failing: quotes not applied || API-5 | MAY support custom date formats | ⊘ SKIP | Not implemented (optional) |**Summary**: 2/5 scenarios PASS, 2 FAIL, 1 SKIP---## Issues Found### CRITICAL1. SHOULD requirement not met: Special character handling - **Spec**: API-4 "SHOULD handle special characters (quotes, commas, newlines)" - **Test**: Failing - quotes not applied to fields with commas - **Fix**: Update CsvSerializer to quote fields per RFC 41802. MUST requirement not met: UTF-8 BOM - **Spec**: API-2 "SHALL support UTF-8 encoding with BOM for Excel" - **Test**: Failing - BOM not present - **Fix**: Add \uFEFF at start of CSV string### WARNINGNone### SUGGESTIONNone---## Verification Report**Status**: ❌ FAIL### Summary- 2 requirements not met- 2 tests failing- Build successful- 2 critical issues blocking archive### Recommendation**NOT ready to archive** - Fix critical issues first.1. Add UTF-8 BOM to CSV output2. Quote CSV fields containing special characters3. Re-run verification after fixes### Artifacts- openspec/changes/add-csv-export/verification-report.md---❌ Verification failed. Address critical issues and run `/sdd-verify` again.
schema: spec-driven# Test executiontest_command: npm testbuild_command: npm run build# Quality gatescoverage_threshold: 80rules: verify: - Run tests if test infrastructure exists - Compare implementation against every spec scenario - Check that all MUST/SHALL requirements are met - Report TODO comments as warnings - Run build to catch compilation errors
All requirements using RFC 2119 keywords MUST or SHALL must be implemented:
✓ The system SHALL persist user preferences✓ The API MUST return 200 on success✗ The service SHALL validate input before processing ← CRITICAL if missing