Skip to content
Codevidence Docs

Reference — Verified Available now

Evidence record schema

A Verified record links a test outcome back to the Declared control it confirms. It doesn’t replace the Declared record — the two coexist, one saying “this was annotated,” the other “and a test confirmed it” (or didn’t).

ConsentServiceTest__consentIsRecordedWithLawfulBasis__assertConsentRecorded.json
{
  "schemaVersion": "0.1",
  "kind": "verified",
  "verifiesControl": "consent.capture",
  "test": {
    "testClass": "com.acme.checkout.ConsentServiceTest",
    "testMethod": "consentIsRecordedWithLawfulBasis",
    "assertionType": "assertConsentRecorded"
  },
  "result": {
    "status": "passed",
    "buildId": "ci-4822",
    "commit": "a3f9e21",
    "timestamp": "2026-08-28T14:41:00Z"
  }
}

Fields

Field Type Required Description
schemaVersion String Yes Version of the evidence record format — 0.1.
kind String Yes Always "verified", distinguishing it from a declared record.
verifiesControl String Yes The Declared control id this record verifies, e.g. consent.capture.
test.testClass String Yes Fully-qualified class containing the @VerifiesControl test.
test.testMethod String Yes Name of the test method.
test.assertionType String Yes The ComplianceAssertions method the test called, e.g. assertConsentRecorded.
result.status String Yes "passed" or "failed" — a failing assertion still produces a record.
result.buildId String Yes CI build identifier, or a generated local-… id outside CI.
result.commit String / null Yes Git commit the test ran against. null when no CI variable matched and git rev-parse HEAD could not resolve one — the gap is made explicit, never fabricated.
result.timestamp String (ISO 8601) Yes When the record was generated.

One file is written per assertion, named <testClass>__<testMethod>__<assertionType>.json. Serialization is hand-rolled and every value is a string or null — no nested arrays, no numbers.