Verification Report
The Verification Report is the final gate before you ship. Run openlogos verify and RunLogos produces a structured report that traces every requirement to a test case and every test case to a result. It answers the question: "Did we build what we said we'd build?"
Running verification
From the terminal panel (or any shell in your project root):
openlogos verify
RunLogos reads logos/resources/verify/test-results.jsonl — the file your test suite writes to — and cross-references it against the Spec Chain.
The three layers
Layer 1 · Pass rate
How many test cases passed vs. total executed. A simple pass/fail count.
Tests: 42 passed, 3 failed, 0 skipped
Layer 2 · Design-time coverage
Every test case defined in logos/resources/test/ must appear in the results. This catches tests that were specified but never written or never run.
Coverage: 45/45 test cases executed (100%)
Missing: none
If a test case ID from the spec is absent from the results, it appears here as a gap.
Layer 3 · AC traceability
Every acceptance criterion in requirements.md must trace to at least one test case, and that test case must have a passing result.
AC-S01-1 ✓ covered by TC-S01-001, TC-S01-002
AC-S01-2 ✓ covered by TC-S01-003
AC-S02-1 ✗ TC-S02-001 FAILED
A red row means a requirement is not verified — either the test failed or no test covers it.
Reading the report in RunLogos
After running openlogos verify, the output in the terminal panel is rendered as a structured report in the center panel:
- Green rows: requirement verified
- Red rows: requirement not verified (with the failing test ID linked)
- Click any test ID to jump to the test case document
- Click any AC ID to jump to the requirement in
requirements.md
Writing test results
Your test suite must write results to logos/resources/verify/test-results.jsonl. Each line is a JSON object:
{"id": "TC-S01-001", "status": "passed", "duration": 42}
{"id": "TC-S01-002", "status": "passed", "duration": 18}
{"id": "TC-S02-001", "status": "failed", "error": "Expected 201, got 400"}
The OpenLogos reporter handles this automatically. Add it to your test setup:
import { openlogosReporter } from 'openlogos/reporter';
// vitest.config.ts
export default defineConfig({
test: {
reporters: ['default', openlogosReporter()],
},
});
See logos/spec/test-results.md for the full reporter spec.
Typical workflow
- All orchestration flows pass in the Orchestration Runner.
- Run the full test suite:
npm test -- --run - Run
openlogos verify. - Review the report — fix any red rows.
- All three layers green → the feature is verified and ready to ship.