Certification proves the configured local runtime path that was actually exercised. It does not certify untested microphones, apps, remote providers, or Realtime paths by implication.

Default matrix

uv run python scripts/certify_voice_to_computer.py
This checks the local-first contract without requiring a physical microphone challenge.

Physical microphone checks

uv run python scripts/certify_voice_to_computer.py --include-physical
Human-certified challenge:
uv run python scripts/certify_voice_to_computer.py --include-physical --human-phrase "human microphone release test"
The TTS prompt does not say the challenge phrase, so speaker echo cannot satisfy the check.

Synthetic microphone checks

uv run python scripts/certify_voice_to_computer.py --include-physical --synthetic-mic
Use this with a configured loopback input such as BlackHole. The flag starts fake-mic, feeds generated speech into the loopback input, and stops it after the run.

Status meanings

StatusMeaning
passedThe scenario completed and verified expected behavior
failedA requested or launch-critical check did not meet the contract
skippedThe surface was disabled or not requested

What it covers

  • Model preflight.
  • Local Whisper TTS.
  • Microphone diagnostics.
  • Synthetic or physical barge-in when requested.
  • Durable jobs.
  • Operation ledger.
  • Compact local memory health, including command availability and MCP context access.
  • Triggers.
  • Task control.
  • Web APIs.
  • Connector config, acceptance, sandbox, approval, cancellation, logs, artifacts, and redacted route traces.
  • Disabled-by-default privacy behavior.
  • Enabled browser and OS representatives when settings turn them on.

Installation rows

The matrix also covers install and command-surface behavior:
  • eyra setup avoids duplicate shell PATH lines and removes old Eyra shell aliases ending in # eyra.
  • eyra doctor --json exposes support fields without secret values.
  • eyra uninstall removes command shims and cleans Eyra shell rc lines while preserving config/data unless data removal is explicitly requested.
  • The Homebrew formula runs eyra version, eyra paths --json, and eyra doctor --json; the formula test uses mock, typed-only mode so it does not require a real configured backend.
  • The installer rejects unsafe install targets and keeps user data separate from app files.

Connector rows

The matrix includes connector-specific rows for the universal connector contract:
  • Missing connector config is reported before any connector can run.
  • Valid manifests load.
  • Dynamic commands, shell interpolation, and model-filled command placeholders are rejected.
  • Runtime payloads include only manifest-declared privacy data classes.
  • Missing task privacy declaration blocks task-bearing connector jobs.
  • Approval-required acceptance is not accepted until approval is granted and the test task runs.
  • Local CLI connector health and test tasks pass before use.
  • Output is capped.
  • Token-like values and local home paths are redacted.
  • Requested working directories stay inside CONNECTORS_ALLOWED_ROOTS.
  • File-writing connectors require exact run_connector_task approval.
  • Remote connectors are refused by default and require CONNECTORS_ALLOW_REMOTE=true.
  • Connector execution is not exposed to Realtime voice.
  • Running connector jobs can be cancelled.
  • Connector jobs write durable logs and artifacts.
  • Route traces include connector metadata without leaking secrets or local home paths.
  • Acceptance state is visible in capability snapshots.

Release gate

Use certification with the project checks:
uv run pytest -q
uv run ruff check src tests
uv lock --check
bash -n setup.sh install.sh
uv build --sdist --wheel
If a physical hardware check was not run, say that plainly in release notes or readiness reports.