# Preview pinned-rate load soak

## Scope

Target: `https://dev.multi.deal/` only. The runner rejects every non-preview host. It sends GET requests at a fixed rate, adds a unique `__load_probe` query parameter per request, and records raw Worker behavior rather than an edge-cache hit. It never sends credentials, mutations, payments, or browser traffic.

## Run

```bash
node apps/web/scripts/preview-load-soak.mjs \
  --url https://dev.multi.deal/ \
  --rate 0.5 \
  --duration 300 \
  --timeout 10000 \
  --output /secure/path/preview-load-0.5rps.json
```

The runner fails when p95 is at least 2,000 ms, p99 is at least 5,000 ms, or errors reach 2%. Use `--no-fail-on-threshold` only to continue a controlled degradation scan while retaining the failed threshold in the JSON evidence.

Verify runner logic:

```bash
node --test apps/web/scripts/preview-load-soak.test.mjs
```

## Measurement — 2026-07-30

All runs used `https://dev.multi.deal/`, cache bypass, a 10,000 ms timeout, and a 300-second pinned interval. Percentiles use nearest-rank over completed requests. Error rate counts every non-2xx/3xx response and network failure.

| Rate | Requests | p50 | p95 | p99 | Error rate | HTTP status counts | Threshold result |
| --- | ---: | ---: | ---: | ---: | ---: | --- | --- |
| 0.5 RPS | 150 | 1,629 ms | 2,020 ms | 2,591 ms | 1.33% | 200: 148, 500: 2 | Failed p95 |
| 1 RPS | 300 | 1,477 ms | 2,095 ms | 2,566 ms | 1.33% | 200: 296, 500: 4 | Failed p95 |
| 2 RPS | 600 | 1,527 ms | 2,393 ms | 2,899 ms | 0.00% | 200: 600 | Failed p95 |

Measured degradation threshold: at or below 0.5 RPS, because the first tested rate already exceeded the 2,000 ms p95 limit. The measurements do not establish a lower passing rate; do not interpolate one from this sample. The 500 responses at 0.5 and 1 RPS require a separate root-cause investigation before treating preview as launch-ready.

No authoritative launch-rate forecast is committed in this repository. Until one exists, these results are a preview capacity bound, not evidence that any product launch target passes.
