Source of truth:
crates/core/src/verify.rscrates/core/src/harness.rscrates/harness-support/src/*.github/workflows/ci.ymlCONTRIBUTING.md
Verification combines:
- build checks
- tests
- lint checks
- optional custom project checks
Core types:
CheckKind:build|test|lint|customVerifyCheck:{ kind, command }Evidence: command result + stdout/stderr + timestamp + durationVerifyReport: collection of evidence with summary rendering
detect_checks(project_root) defaults by project type:
cargo checkcargo testcargo clippy -- -D warnings
npm run buildnpm test- optional
npx eslint .when local eslint binary exists
go build ./...go test ./...go vet ./...
python -m pytestpython -m ruff check .
From .github/workflows/ci.yml:
cargo fmt --all --checkcargo clippy --workspace --all-targets(withRUSTFLAGS=-Dwarnings)cargo nextest runqvl harness run runtimeqvl harness run governanceqvl harness run routingqvl harness run protocolcargo test -p quavil-tui --test snapshotscargo build --release -p quavilsh -n infra/releases-worker/install.shbazel test //tools/bazel:parity
Quavil verification is split into two evidence classes:
- deterministic harness cases decide pass/fail for release-gated lanes
- observability metrics report runtime drift without silently flipping release status
Current release-blocking lanes:
runtimegovernance
Currently CI-required deterministic lanes:
runtimegovernanceroutingprotocol
Supporting deterministic infrastructure includes:
- scripted provider fixtures
- mock OpenAI SSE transport
- mock OpenAI realtime websocket transport
- mock MCP streamable HTTP server
- VT100 snapshot fixtures for primary TUI states
- typed runtime perf facts persisted in SQLite for snapshot, replay, and MCP connect latency
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo run -p quavil -- harness run routing
cargo run -p quavil -- harness run protocol
cargo run -p quavil -- harness run allOptional fast type-check:
cargo check --workspace
bazel test //tools/bazel:parityverifytool runs checks and returns structured pass/fail evidenceqvl ci-fixcan use CI logs to propose and apply fixes
Evidence includes timestamps and can be freshness-checked via Evidence::is_fresh(max_age).
VerifyReport::summary() prints:
- pass/fail status per check
- command
- elapsed time
- tail of relevant stdout/stderr on failures
- run checks before commit and before release
- keep custom checks deterministic and non-interactive
- for large changes, include both local command output and CI result links in PR description