Phase One Runbook
This runbook exercises the end-to-end control plane, validating FsOps, telemetry, and guard rails.
The primary automated entrypoint is just runbook, which wraps the Playwright-backed API/UI validation flow, collects artifacts, and provides a repeatable baseline before any manual drills.
Automated Validation
Run the automated baseline first:
just runbook
Expected outputs:
artifacts/runbook/summary.txtartifacts/runbook/playwright-report/index.htmlartifacts/runbook/test-results/artifacts/runbook/logs/
The automated runbook currently covers the bootstrap, dashboard/API health, settings, and torrent-management control-plane paths exercised by just ui-e2e. Keep the manual checks below only for deployment-specific fault-injection drills that require operator intervention against real mounts, permissions, and restart boundaries.
Prerequisites
- Docker image
revaer:ci(built viajust docker-build) or a localrevaer-appbinary (just build-release). - PostgreSQL instance accessible to the application.
- API key with a conservative rate limit (e.g., burst
5, period60s). - CLI configured with
REVAER_API_URL,REVAER_API_KEY, and optionalREVAER_TELEMETRY_ENDPOINT.
Scenario
-
Bootstrap
- Issue a setup token:
revaer setup start --issued-by runbook. - Complete configuration with CLI secrets and directories:
revaer setup complete --instance runbook --bind 127.0.0.1 --resume-dir .server_root/resume --download-root .server_root/downloads --library-root .server_root/library --api-key-label runbook --passphrase <pass>. - Capture the committed snapshot via
revaer config get --output tableand confirm/health/fullreturnsstatus=okwithguardrail_violations_total=0.
- Issue a setup token:
-
Add Torrent & Observe FsOps
- Add a torrent:
revaer torrent add <magnet> --name runbook. - Tail events:
revaer tail --event torrent_added,progress,state_changed --resume-file .server_root/revaer.tail. - Verify FsOps emits
fsops_started,fsops_completed, and Prometheus countersfsops_steps_totalincrease.
- Add a torrent:
-
Restart & Resume
- Stop the application, restart it, and ensure the torrent catalog repopulates.
- Confirm
SelectionReconciled(if metadata diverges) andHealthChangedclears once resume succeeds.
-
Rate Limit Guard-Rail
- Apply a tight API key limit (burst
1/per_seconds 60) viarevaer config set --file rate-limit.json(using a JSON patch that updates the relevant key). - Execute three rapid CLI calls (e.g.,
revaer status <id>). The third should exit with code3, displaying a429Problem+JSON response. - Inspect
/metricsto verifyapi_rate_limit_throttled_totalincremented and/health/fullreflectsdegraded=["api_rate_limit_guard"].
- Apply a tight API key limit (burst
-
Recovery
- Restore the API key limit to an acceptable value through another
revaer config set ...invocation. - Re-run
revaer status <id>to confirm success,guardrail_violations_totalstops increasing, anddegradedreturns to[].
- Restore the API key limit to an acceptable value through another
-
FsOps Failure Simulation
- Temporarily revoke write permissions on the library directory and re-run a completion.
- Observe
fsops_failedevents,HealthChangedwith["fsops"], and guard-rail telemetry. - Restore permissions and confirm recovery events.
Manual-only rationale:
- Permission failures and restart/resume drills depend on the actual runtime mount layout, writable volumes, and supervisor behavior of the target deployment.
- The checked-in automation covers the repeatable control-plane baseline; these remaining drills intentionally stay manual so operators can validate their real environment rather than a simulated local-only shell.
Verification Artifacts
- Review
artifacts/runbook/summary.txtfromjust runbook. - Archive CLI telemetry emitted to
REVAER_TELEMETRY_ENDPOINTwhen the manual scenario enables it. - Capture Prometheus scrapings (
/metrics) before and after the manual drills. - Record
/health/fullJSON snapshots for each phase.
Successful completion of this runbook satisfies the operational validation gate defined in AGENT.md.