vibey-testinglisted
Install: claude install-skill adammatthewsteinberger/vibey
# vibey testing
## Coverage floors — not targets
Every layer carries a **100% branch coverage floor**, enforced in CI as four
separate gates:
```bash
uv run pytest -q -p no:cacheprovider --cov=vibey.domain --cov-branch --cov-fail-under=100
uv run pytest -q -p no:cacheprovider --cov=vibey.application --cov-branch --cov-fail-under=100
uv run pytest -q -p no:cacheprovider --cov=vibey.infrastructure --cov-branch --cov-fail-under=100
uv run pytest -q -p no:cacheprovider --cov=vibey.cli --cov-branch --cov-fail-under=100
```
The build **fails** if any layer drops below 100%. This is not aspirational.
## Postgres integration tests — never mocked
All `tests/infrastructure/db/` tests run against a **real ephemeral Postgres**
via the `migrated_pool` and `project_id` fixtures in
`tests/infrastructure/db/conftest.py`. Every test drops and recreates the
`public` schema before running.
**Why real Postgres, never mocked:** because `SELECT ... FOR UPDATE SKIP
LOCKED` semantics are the thing under test. A mock cannot faithfully represent
concurrent worker contention, lease expiry, or the reaper reclaiming expired
leases. See ADR-0002.
Set `VIBEY_TEST_DATABASE_URL` before running:
```bash
export VIBEY_TEST_DATABASE_URL="postgresql://$(whoami)@localhost:5432/vibey_test"
```
CI uses a Postgres 17 service container.
## Property tests — the safety-critical invariants
**Rotation fairness** (`tests/domain/test_rotation.py`):
- Over any eligible set and any weight vector, every engine is s