Docs · Coverage artifacts

What a run leaves behind.

Every npx @omea/cli run run writes evidence under .omea/last-run/ — raw per-test capture plus a derived, agent-readable report.

Layout

.omea/last-run/
  tests.json               # every test that ran: { testId, title, file }
  coverage/<testId>/
    v8-<processId>.json       # V8 coverage delta for this test's window
    browser-<processId>.json  # CDP JS coverage for the page(s) the test drove
    queries-<processId>.jsonl # one JSON line per traced DB query in this window
  report/
    coverage.json           # machine-readable summary (schema below)
    coverage.md              # human/agent-readable annotated source

coverage/ and tests.json are the raw capture, written incrementally during the run. report/ is derived from that raw capture after the run completes.

coverage.json (schema version 1)

{
  "summary": {
    "totalLines": 85, "coveredLines": 61,
    "pct": 71.8, "testCount": 2, "fileCount": 2
  },
  "files": {
    "<path>": {
      "totalLines": 69, "coveredLines": 49, "pct": 71.0,
      "lines": { "44": { "covered": true, "count": 1 },
                 "59": { "covered": false, "count": 0 } }
    }
  },
  "tests": {
    "<testId>": { "title": "smoke.spec.js › home renders",
                    "touchedFiles": [ { "file": "server.mjs", "linesHit": 12 } ] }
  }
}

Lines with no entry in lines are non-executable (blank or comment) — the absence itself is the signal, and a reader should never render those as uncovered. testId is a stable hash of the test's file path and full title, so a run's per-test slice is diffable against a previous run.

coverage.md — annotated source

One section per file, worst-covered first, with a three-symbol marker legend: a space marks a covered line, ! marks an executable line that's never covered — the list an agent should target next — and · marks a non-executable line.

Known caveats

Read next