Skip to content

openlogos verify

Read test results from a JSONL file, compare against defined test case IDs in logos/resources/test/, validate three layers of coverage, and generate an acceptance report. This is the Gate 3.5 quality check.

Terminal window
openlogos verify

No arguments or options. Must be run from the project root.

The verification runs three layers of validation:

Reads logos/resources/verify/test-results.jsonl (or a custom path from logos.config.json) and counts pass/fail/skip/uncovered.

Parses the “覆盖度校验” (Coverage Validation) checklist from *-test-cases.md files. These are assertions made by AI at test-design time — e.g., “All S02 exception cases are covered.”

Parses the “验收条件追溯” (Acceptance Criteria Traceability) table from test case files. Each acceptance criterion (e.g., S01-AC-01) is linked to specific test case IDs, and the runtime results are checked to confirm they pass.

All four conditions must be met:

ConditionDescription
Zero failed testsNo test result has status: "fail"
100% coverageEvery ID defined in test specs has a corresponding result
Checklist completeAll - [x] items in the design-time checklist are checked
AC traceabilityAll acceptance criteria have linked test cases that pass

If any condition fails, the command exits with code 1.

Each line in test-results.jsonl is a JSON object:

{"id":"UT-S01-01","status":"pass","duration_ms":12,"timestamp":"2026-04-10T10:00:00Z"}
{"id":"UT-S01-02","status":"fail","duration_ms":5,"error":"Expected 201, got 400"}
{"id":"ST-S02-01","status":"skip","scenario":"S02"}
FieldRequiredValuesDescription
idYesUT-SXX-XX or ST-SXX-XXTest case ID matching the test spec
statusYespass, fail, skipTest result
duration_msNonumberExecution time
timestampNoISO 8601When the test ran
errorNostringError message (for failed tests)
scenarioNostringScenario identifier

If the same id appears multiple times (e.g., from re-runs), the last occurrence wins.

The command scans all *-test-cases.md files in logos/resources/test/ for IDs matching the pattern:

UT-S01-01 (Unit Test, Scenario 01, Case 01)
ST-S02-03 (Scenario Test, Scenario 02, Case 03)

The regex: /\b(UT|ST)-S\d{2}-\d{2,3}\b/

🔍 OpenLogos Test Verification
Reading test results: logos/resources/verify/test-results.jsonl
Reading test cases: logos/resources/test/
──────────────────────────────────────────────────
📊 Results Summary
──────────────────────────────────────────────────
Total defined: 111 cases (79 UT + 32 ST)
Total executed: 111 cases
✅ Passed: 86
❌ Failed: 0
⏭️ Skipped: 25
──────────────────────────────────────────────────
Coverage: 100% (111/111)
Pass rate: 77% (86/111)
──────────────────────────────────────────────────
📋 Design-time Coverage (Layer 1)
Checklist: 8/8 assertions confirmed
🔗 Acceptance Criteria Traceability (Layer 3)
AC traceability: 16/16 criteria passed
✅ Gate 3.5: PASS
📄 Report: logos/resources/verify/acceptance-report.md
🔍 OpenLogos Test Verification
Reading test results: logos/resources/verify/test-results.jsonl
Reading test cases: logos/resources/test/
──────────────────────────────────────────────────
📊 Results Summary
──────────────────────────────────────────────────
Total defined: 111 cases (79 UT + 32 ST)
Total executed: 109 cases
✅ Passed: 84
❌ Failed: 2
⏭️ Skipped: 23
──────────────────────────────────────────────────
Coverage: 98% (109/111)
Pass rate: 77% (84/109)
──────────────────────────────────────────────────
❌ Failed cases:
UT-S02-04 Expected HTTP 302, got 301
UT-S04-12 Token verification returned false for valid token
⚠️ Uncovered cases (2):
ST-S03-05
ST-S03-06
❌ Gate 3.5: FAIL
📄 Report: logos/resources/verify/acceptance-report.md

The command generates logos/resources/verify/acceptance-report.md containing:

  • Summary table — defined/executed/passed/failed/skipped/uncovered/coverage/pass-rate/gate result
  • Failed cases — ID and error message for each
  • Uncovered cases — IDs not found in test results
  • Skipped cases — IDs with status: "skip"
  • Design-time coverage — checklist assertion table with ✅/❌
  • AC traceability — acceptance criteria → linked test cases → runtime status

Override the default JSONL path in logos.config.json:

{
"verify": {
"result_path": "test-output/results.jsonl"
}
}
ErrorCauseFix
No test results found at ...JSONL file doesn’t existRun your tests first (they should output to test-results.jsonl)
No test case specs foundlogos/resources/test/ is emptyRun test design (Phase 3-3a) first
logos/logos.config.json not foundNot in project rootcd to project root
Exit code 1Gate 3.5 FAILFix failing tests, add missing coverage, or complete the checklist
  • status — Check if Phase 3-5 (verification) is complete
  • launch — Typically run after verify passes, to activate change management