Skip to content

ovos-test-harness

Maturity: Beta ⬤⬤⬤◯◯

In real use but still settling. Watch releases for the occasional breaking change. Rated by repository health, not version.

In a nutshell

ovos-test-harness is the executable counterpart of the Formal Specifications. It pins an exact combination of OVOS repos, runs a real stack, and asserts one observable bus behavior per normative clause. Use it to pre-flight a cross-repo change before merge, not just to check one repo in isolation.

Formal specification

This suite proves conformance to the OpenVoiceOS/architecture specs. See the spec index.


ovos-test-harness is the executable counterpart of the specs. Each test asserts one observable bus behavior a spec mandates, against a real running OVOS stack. If the specs are the law, this harness is the courtroom. It puts a concrete combination of OVOS repos on trial against the law and returns a verdict per normative clause: pass, xfail (a documented gap), or fail.

Why a separate repo

A single spec clause is only satisfied when a combination of branches across a dozen repos lines up: ovos-core, ovos-workshop, ovos-bus-client, the pipeline plugins, fixture skills. You cannot prove that from inside any one repo, because that repo's CI installs only its own package plus whatever pip resolves, and pip is free to downgrade a sibling out of the exact combination you are trying to validate.

The model

The harness is not a package. There is no pip install .. Its requirements.txt is the stack under test: every line pins one repo to an exact git ref or version, so CI never re-resolves and never downgrades a component. Each test then:

  • imports the spec vocabulary from ovos-spec-tools, so a topic name is provably spec-defined rather than a magic string.
  • drives and captures the live bus through ovoscope (see Testing Skills).
  • asserts the spec-mandated behavior and records pass / xfail / fail.

Coverage

Every spec document on the architecture dev branch has a conformance suite — the harness's own matrix counts 20 spec IDs with 20 suites (SESSION-1 and SESSION-2 share one suite; INTENT-4 has both an orchestrator suite and a per-plugin registration-compliance suite). The authoritative spec→suite traceability matrix lives in the repo's docs/coverage.md. Documented conformance gaps are recorded as xfail entries and catalogued in docs/known-gaps.md.

Pre-flighting a cross-repo change

To certify an unmerged combination, maintainers pin the candidate branches in requirements.txt and open a harness PR. CI then installs exactly that stack and runs the full conformance suite against it, flipping each ref to @dev as it merges. One structural limit: two branches of the same repo cannot both be installed, so pick one ref per repo.

This is where an implementation is proven to conform to the merged architecture specs. It is the bridge between the prescriptive Markdown and the code that has to honour it.


Read next: Specification Tooling · ovos-spec-tools Related: Formal Specifications · Testing Skills · MessageBus Service