conductor/docs/RELEASE_VALIDATION.md
Victor Wiebe ade2b10033
Some checks failed
Release production image / production-image (push) Has been cancelled
Add production packaging and operations
2026-08-07 16:48:40 -04:00

71 lines
3.9 KiB
Markdown

# Conductor v0.1.0 Release Validation
## Release-critical layers
The release gate uses five complementary layers:
1. Frontend unit and integration tests cover component rendering, visual authoring, JSON diagnostics, request templates, runtime state, actions, bindings, variables, failure recovery, and the deterministic MVP workflows.
2. Backend unit tests cover schema and semantic validation, authentication, encryption, proxy destination/header/redirect/transport/response policy, and safe logging.
3. Backend HTTP integration tests run an isolated server, SQLite database, and controlled upstream to cover health, CRUD, invalid-update atomicity, canonical round trips, all five authentication modes, proxy success/upstream/policy outcomes, history redaction/cleanup, and secret lifecycle.
4. Playwright browser tests exercise the real frontend and backend through Docker Compose using the controlled repository mock server. They cover the workflow launcher, dependent data, dashboard refresh/selection, save, reload, and rerun readiness.
5. The schema matrix, TypeScript checks, production builds, Docker restart/persistence, database backup/restore, and security regression checks prove packaging and operational behavior.
Passing automation does not replace proportional manual acceptance. Human verification remains required for usability, visual state, browser-visible redaction, and the complete six-workflow release checklist.
## Deterministic test environment
The release demo is `examples/project-definitions/valid-release-demo.json`. It uses only `http://mock-api:8787`, supplied by `examples/mock-server/conductor-mock-server.js` through the existing Compose override:
```bash
docker compose -f docker-compose.yml -f docker-compose.manual-test.yml up -d --build
npm run test:e2e
```
The override grants the backend only the exact internal origin `http://mock-api:8787`. The normal Compose definition remains default-deny and contains no internal exception.
## Automated commands
Run with Node 20 and npm 10:
```bash
cd frontend
npm ci
npx tsc --noEmit
npm test -- --watchAll=false --runInBand
npm run build
cd ../backend
npm ci
npm test
cd ..
npm ci
npm run test:schema
docker compose -f docker-compose.yml -f docker-compose.manual-test.yml up -d --build
npm run test:e2e
docker build -f Dockerfile.production -t conductor:slice8-test .
npm run test:production
shellcheck scripts/production/*.sh scripts/release-image.sh scripts/test-production.sh
```
The backend integration suite binds isolated localhost ports. In restricted command sandboxes it may require explicit permission for local listening sockets.
## Production distribution gate
`npm run test:production` creates a uniquely named disposable Compose project and volume. It proves:
- production startup refuses absent keys;
- the image runs as the non-root `conductor` user with a read-only root filesystem;
- health, root frontend, and a published deep-link refresh are served from one port;
- a live WAL-mode database is backed up using SQLite's online backup facility;
- the archive manifest and checksums validate;
- destructive restore resets ownership/mode, becomes healthy, and recovers a marker record;
- cleanup removes the disposable container, network, volume, environment, and archive.
The release image workflow publishes immutable version and Git-SHA tags with OCI metadata, SBOM, and provenance for `linux/amd64` and `linux/arm64`. Before release approval, an unauthenticated client must pull the final digest. If Gitea denies anonymous package pulls, the same digest must be published to the documented public fallback registry.
## Manual gate
Manual acceptance begins only after all automated commands, Docker restart and persistence, backup/restore, repository credential scan, and cleanup checks pass. The manual checklist must cover all six workflows in `MVP_SCOPE.md`, including all authentication modes and failure recovery, and record any accepted limitations or defects.