RunLogosRunLogos
中文EN

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

  1. All orchestration flows pass in the Orchestration Runner.
  2. Run the full test suite: npm test -- --run
  3. Run openlogos verify.
  4. Review the report — fix any red rows.
  5. All three layers green → the feature is verified and ready to ship.