Run the 48-hour soak harness to confirm a release candidate is stable before tagging. The soak runs a continuous health + performance loop and fails fast if anything regresses.
# Start the 48-hour soak
nself soak run
# Check soak progress while it's running
nself soak status
# View the final soak report
nself soak resultsnself soak <SUBCOMMAND> [FLAGS]Before nSelf cuts a release tag, every release candidate must pass a 48-hour soak. The soak harness runs continuously against a running stack and monitors:
A soak run is attached to the current stack. Stop the stack and the soak pauses. Restart the stack and nself soak status shows elapsed time since the last clean-pass checkpoint. The harness requires a minimum of 48 consecutive hours without any FAIL verdict to declare the soak clean.
Start the soak harness against the currently running stack. The command blocks and streams a rolling health ticker to stdout. Press Ctrl+C to detach without stopping the soak — it continues in the background.
nself soak run
nself soak run --duration 72h
nself soak run --detach| Flag | Type | Default | Description |
|---|---|---|---|
--duration | string | 48h | Soak duration (e.g. 48h, 72h) |
--detach | bool | false | Start in background immediately without streaming output |
--fail-fast | bool | true | Stop the soak on first FAIL verdict |
Check the current soak state: elapsed time, current verdict, and any failures detected.
nself soak status
# Soak: running
# Elapsed: 31h 14m / 48h
# Verdict: PASS (0 failures, 0 warnings)
# Next check: 47sPrint the full soak report. If the soak is complete, this is the final pass/fail verdict with all metrics. If it is still running, this is a snapshot of current results.
nself soak results
nself soak results --format json| Flag | Type | Default | Description |
|---|---|---|---|
--format | string | text | Output format: text or json |
| Metric | Check interval | Fail threshold |
|---|---|---|
| Service health | 60s | Any endpoint returns non-200 for 3 consecutive checks |
| Hasura p99 latency | 5 min | > 2000 ms sustained for 15 min |
| Auth error rate | 5 min | > 1% over a 15-min window |
| Postgres connection pool | 5 min | > 80% saturation for 15 min |
| Container memory | 5 min | > 90% of limit for 15 min |
| Log error rate | 5 min | > 0.5% of all log lines tagged ERROR |
nself soak run --detach
# Soak started in background (PID 48291)
# ... 24 hours later ...
nself soak statusnself soak run --duration 6h --detach
nself soak status0 — soak completed with PASS verdict1 — soak completed with FAIL verdict (or was interrupted with failures)2 — soak could not start (stack not running, invalid arguments)