9e8f1bbeed
Dashboard / frontend (push) Failing after 0s
Dashboard / api (push) Failing after 0s
Lint PowerShell / powershell-lint (ubuntu-latest) (push) Failing after 1s
Python Lint / Lint Python with Ruff (push) Failing after 1s
ShellCheck / Lint shell scripts (push) Failing after 1s
Matrix Smoke / linux-smoke (push) Failing after 1s
Matrix Smoke / distro: cachyos (push) Failing after 15s
Matrix Smoke / distro: linux-mint-21.3 (push) Failing after 15s
Matrix Smoke / distro: debian-12 (push) Failing after 5m21s
Matrix Smoke / distro: fedora-41 (push) Failing after 4m56s
Matrix Smoke / distro: ubuntu-24.04 (push) Failing after 2m13s
Matrix Smoke / distro: rocky-9 (push) Failing after 10m39s
Matrix Smoke / distro: manjaro (push) Failing after 12m11s
Matrix Smoke / distro: opensuse-tw (push) Failing after 11m53s
Matrix Smoke / distro: archlinux (push) Failing after 20m3s
Matrix Smoke / distro: ubuntu-22.04 (push) Failing after 13m49s
Validate .env Schema / tier-1-env-validation (push) Successful in 52s
Validate .env Schema / tier-2-env-validation (push) Successful in 44s
Validate .env Schema / tier-3-env-validation (push) Successful in 52s
Validate .env Schema / tier-4-env-validation (push) Successful in 51s
Validate Extensions Catalog / Check catalog is up-to-date (push) Failing after 9m47s
Secret Scan / Scan for secrets (push) Failing after 21m4s
Validate Docker Compose / Validate Docker Compose files (push) Has been cancelled
Python Type Check / Type check with mypy (push) Has been cancelled
Validate .env Schema / tier-0-env-validation (push) Has been cancelled
Test Linux / integration-smoke (push) Has been cancelled
Lint PowerShell / powershell-lint (windows-latest) (push) Has been cancelled
Matrix Smoke / macos-smoke (push) Has been cancelled
119 lines
6.2 KiB
Markdown
119 lines
6.2 KiB
Markdown
# Release Validation
|
|
|
|
Last updated: 2026-05-25
|
|
|
|
ODS is validated as an installed appliance, not only as a collection of
|
|
unit tests. The release-grade path combines CI, clean distro bootstrap checks,
|
|
a distro lab, and a private real-hardware fleet so operational changes are
|
|
tested against the surfaces users actually touch: the public install command,
|
|
service startup, dashboard flows, model routing, Hermes, full-model
|
|
capabilities, reinstall, restart, and `ods doctor`.
|
|
|
|
This document is a public, sanitized summary of that release gate. It describes
|
|
what a green run proves without publishing private hostnames, LAN addresses,
|
|
usernames, local paths, or raw run logs. For the broader hardware and distro
|
|
surface, see [VALIDATION-MATRIX.md](VALIDATION-MATRIX.md). For day-to-day local
|
|
test commands, see [TESTING.md](TESTING.md).
|
|
|
|
## When We Run It
|
|
|
|
Run the release-grade fleet after operational code changes: installer phases,
|
|
bootstrap logic, Docker Compose stack generation, service manifests, dashboard
|
|
API behavior, Hermes, model routing, GPU/runtime detection, lifecycle commands,
|
|
or anything that can affect a user's install or running stack.
|
|
|
|
Docs-only, comment-only, and narrow test-only changes usually use focused
|
|
validation instead. Dependency or runtime wiring changes should use the
|
|
release-grade gate even when the code diff is small.
|
|
|
|
PRs should state their changed surface and validation level explicitly. Use
|
|
[HIGH_RISK_CHANGE_MAP.md](HIGH_RISK_CHANGE_MAP.md) to decide whether focused
|
|
checks are enough or whether the candidate needs release-grade fleet validation
|
|
before it is treated as releasable.
|
|
|
|
## User Green
|
|
|
|
`User Green` is the top-level release-readiness result. It is not a marketing
|
|
claim that every possible machine or network will work. It means the enabled
|
|
release surfaces passed or were explicitly accounted for in the current
|
|
candidate run.
|
|
|
|
| Gate | What it proves |
|
|
|---|---|
|
|
| Zero-prereq bootstrap | Bare Linux distro containers can fetch the public installer and provision missing prerequisites such as Git, Python, Docker, and Compose. |
|
|
| Install Green | Enabled real-hardware hosts can fresh-install from the public bootstrap path. |
|
|
| Product Green | Core services, cloud-mode contracts, dashboard flows, Hermes auth/chat, and UI checks pass after install. |
|
|
| Capability Green | Full-model capability probes pass after large model downloads and swaps complete. |
|
|
| Lifecycle Green | Idempotent reinstall, `ods restart`, and `ods doctor` recover cleanly after state changes. |
|
|
| User Green | The combined release gate is clean, with failures, skips, and deferrals resolved or documented. |
|
|
|
|
## Release-Grade Surfaces
|
|
|
|
The release harness normally combines these layers:
|
|
|
|
| Layer | Coverage | Why it matters |
|
|
|---|---|---|
|
|
| CI | Fast syntax, contract, dashboard, shell, Python, and PowerShell checks | Catches cheap regressions before hardware time is spent. |
|
|
| Zero-prereq bootstrap | Clean Ubuntu, Debian, Fedora, Rocky, Arch, and openSUSE containers | Proves the public `curl` path does not assume a developer workstation. |
|
|
| Distro lab | 10 Linux container lanes plus systemd-capable Incus VM lanes | Exercises package-manager, systemd, Docker daemon, and Compose behavior across distro families. |
|
|
| Real hardware fleet | Linux NVIDIA, Linux AMD/ROCm-Lemonade, ARM Linux NVIDIA, and Apple Silicon hardware classes | Proves accelerator/runtime behavior and the installed product on actual machines. |
|
|
|
|
The latest release-grade fleet run for the current candidate should be cited in
|
|
release notes with its commit, date, enabled hardware classes, and any skipped
|
|
or deferred surfaces. Public docs should summarize the sanitized evidence
|
|
rather than linking raw private run artifacts.
|
|
|
|
## What We Check
|
|
|
|
A release-grade run includes:
|
|
|
|
- public bootstrap and zero-prereq install checks;
|
|
- fresh install on enabled real-hardware targets;
|
|
- core service health and generated config contracts;
|
|
- cloud and hybrid mode contracts;
|
|
- dashboard API flows such as model download, model switch, and extension install;
|
|
- Hermes authentication and agent chat with seed verification;
|
|
- browser UI checks on the default UI target;
|
|
- full-model capabilities such as chat, search, file read/write, code execution,
|
|
skills, model identity, and context;
|
|
- lifecycle checks: idempotent reinstall, `ods restart`, and `ods doctor`;
|
|
- regression replay for previously fixed fleet failures.
|
|
|
|
Capability probes can be deferred while a large model is still downloading or
|
|
hot-swapping. The capabilities watcher polls until the model is ready, reruns
|
|
the probes, and updates the report so a release is not marked User Green just
|
|
because the first pass arrived before the model did.
|
|
|
|
## Known Limits
|
|
|
|
- ODS Talk and owner-card probes only gate when the owner-card surface is
|
|
enabled and `ods-proxy` is actually available, such as a LAN-enabled install.
|
|
Default non-LAN installs skip those probes instead of false-failing a surface
|
|
the user did not expose.
|
|
- Vision probes are opt-in and should be called out explicitly when enabled for
|
|
a candidate run.
|
|
- Incus Arch and openSUSE VM lanes can hit nested Docker limitations in the lab.
|
|
The container lanes and real-hardware fleet are used to separate those lab
|
|
limitations from product regressions.
|
|
- The fleet is not an exhaustive promise for every driver, firewall, storage
|
|
layout, Docker Desktop version, home router, or unsupported hardware
|
|
combination.
|
|
- A green release run is a strong release signal, not a soak test. Long-running
|
|
thermal, benchmark, and overnight stability evidence is tracked separately.
|
|
|
|
## Reading A Green Run
|
|
|
|
A current User Green pass should give contributors and auditors high confidence
|
|
that the main supported install paths are working at release time:
|
|
|
|
- clean machines can reach the installer through the public bootstrap path;
|
|
- supported hardware classes can install and start the product;
|
|
- users can exercise dashboard, Hermes, model, and extension workflows;
|
|
- full-model AI capabilities are validated after downloads complete;
|
|
- reinstall, restart, and diagnostic paths recover after state changes.
|
|
|
|
It should not be read as a claim that all optional modes ran in that candidate.
|
|
Release notes should name any skipped or opt-in surfaces, especially Windows
|
|
fleet targets, ODS Talk owner-card flows, vision probes, AP mode, and network
|
|
topologies that vary by lab.
|