QUALIFICATION
Production qualification matrix — Zyvor Fleet
Software rows are automated by make qualify. Lab ops rows for host
80.79.5.173 are signed in
evidence/qualification/ops-checklist.md
(backup/TLS/non-demo/abbreviated WAN). Abbreviated CI soak has landed
(scheduled, single-writer); multi-day soak and HA remain open — see HA.md.
Software (host) rows — make qualify¶
| ID | Expected |
|---|---|
unit_race_vet |
gofmt, go vet, go test -race ./... |
web_js_syntax |
node --check webui/static/app.js |
build_binaries |
fleetd, fleet-agent, fleetctl build |
live_smoke |
Real control-plane + agent enrollment/offline/reconnect drill |
ota_contract |
Device assignment + contiguous event ACK (TestOTAContract*) |
backup_restore_drill |
scripts/restore-drill.sh checksum round-trip |
These prove control-plane, agent smoke, the OTA contract, and scripted backup/restore integrity. They do not prove HA (v0.3 is single-writer) or multi-day soak.
Cross-product lab rows (optional evidence)¶
Recorded on a shared Linux host — see LAB.md:
| ID | Expected |
|---|---|
remote_smoke_deploy |
deploy-remote.sh health/ready on chosen port (avoid :8080 collisions) |
ota_tls_assignment_commit |
HTTPS Fleet + OTA simulator reaches committed |
ota_event_ack_drain |
Contiguous ACK clears agent pending_events |
device_agent_inventory_merge |
Site metadata includes zyvor.device_agent.* |
Operator / lab rows — checklist status¶
Evidence: ops-checklist.md, lab/20260914T155128Z/, lab/20260914T162245Z/.
| Test | Lab status |
|---|---|
| Persistent volume bootstrap | pass (signed) |
| Backup and restore (live + restore-drill) | pass (signed) |
| TLS termination | pass (signed) |
| Enrollment token hygiene | pass (signed) |
| Offline autonomy (abbreviated WAN cut) | pass — scripts/ci/wan-loss-drill.sh / fleet-wan-loss.log |
| Rollout failure budget | pass — covered by live_smoke auto-rollback |
| OTA device assignment (simulator lab) | pass — see LAB.md |
| Single-replica discipline | pass (signed) |
| Non-demo ExecStart | pass — ZYVOR_FLEET_DEMO=0 |
| Abbreviated WAN/disk soak (CI) | landed — scripts/ci/soak-short.sh + .github/workflows/soak.yml (scheduled, not PR-gated; single-writer) |
| Multi-site / multi-day WAN soak | open — needs self-hosted runner on the lab host |
| HA / multi-writer | not available in v0.3 — design only in HA.md |
Maturity note¶
v0.3 does not provide transactional HA storage. Production is one control-plane replica with a tested backup. See PRODUCT_PLAN.md, PRODUCTION.md, and HA.md.
GitHub CI (lab substitute)¶
CI runs compose smoke, HTTPS TLS smoke, backup/restore, container build, and
govulncheck. A separate scheduled workflow (.github/workflows/soak.yml) runs
the abbreviated WAN/disk soak (scripts/ci/soak-short.sh, judged by
scripts/ci/soak-check.py, ~10–15 minutes). Soak is not PR-gated: the
suite is already heavy, and soak proves single-writer reconnect — not HA.
CI still does not claim HA, multi-day soak, or Minewing device HIL.