# Live DEV Redline performance

Measured 2026-10-05T21:37:40.770Z against `https://dev.api.bookcicle.com`. Service release: `RELEASE-20261005-3c0aa4ba1` (`3c0aa4ba12d28f0344cdb0a8fa1414d68d1f1597`). Native document release: `candidate/6abc81c4c`.

The small public DOCX is an agreement; the original resume-style label was corrected. Measurements and source hashes are unchanged.
Each qualified case has one excluded warmup and 7 measured successful requests. Thirty-request warm distributions and five/eight-request bursts are recorded separately. Authentication uses a fresh Creator Pro fixture with Stripe test-mode billing; cleanup is verified. Both HTML and structured JSON are requested. Every request sends `Cache-Control: no-store`; snippet responses explicitly confirm `X-Redline-Cache: bypassed`, and native document requests omit idempotency keys. Comparison-cache reads and writes are disabled for snippet samples, which all have nonzero diff timings. Warm distributions measure fresh comparisons in warm execution environments. Baseline rows omit original-page rendering; rows labeled “with rendered pages” explicitly enable it. Fixtures contain generated public content, not customer documents.

Measured server processing uses the final `metrics.totalMs`. It includes normal admission, source retrieval for uploaded inputs, parsing, comparison/rendering, quota work and requested result storage. Client completion is measured when the complete HTML comparison is received; it excludes input staging. Network transit and browser rendering are excluded from server metrics. First requests in this run are retained as separate warmup evidence and are not claimed to be verified cold starts.

**Expected server processing** is the measured p50 plus a 50 ms buffer, rounded up to whole milliseconds. It is a planning estimate, not a measured percentile, upper bound or SLA. Observed timings remain unmodified. DOCX page labels are nominal corpus dimensions; rendered Word pagination was not verified. PDF page counts come from generated source pages.

| Fixture | Input | Combined bytes | Measured server p50 | Measured server p95 | Expected server processing (p50 + 50 ms) | Client completion p50 | Engine |
| --- | --- | ---: | ---: | ---: | ---: | ---: | --- |
| HTML snippet | inline | 2388 | 21.5 ms | 22.8 ms | 72 ms | 332.3 ms | dom |
| HTML 100KiB | inline | 216830 | 239.3 ms | 345.8 ms | 290 ms | 1047.1 ms | text_fallback |
| TXT snippet | inline | 2228 | 23.0 ms | 24.7 ms | 73 ms | 328.8 ms | dom |
| TXT 100KiB | inline | 205894 | 224.0 ms | 256.9 ms | 275 ms | 977.7 ms | text_fallback |
| MD snippet | inline | 2288 | 22.3 ms | 23.1 ms | 73 ms | 310.1 ms | dom |
| MD 100KiB | inline | 207750 | 227.1 ms | 240.4 ms | 278 ms | 1027.2 ms | text_fallback |
| JSON snippet | inline | 4334 | 25.6 ms | 29.0 ms | 76 ms | 374.1 ms | dom |
| HTML 10 KiB source | inline | 22291 | 27.6 ms | 31.1 ms | 78 ms | 481.5 ms | dom |
| HTML 250 KiB source | inline | 545909 | 329.7 ms | 358.4 ms | 380 ms | 1415.5 ms | text_fallback |
| Small DOCX agreement fixture | upload | 6053 | 81.2 ms | 255.6 ms | 132 ms | 400.9 ms | document |
| Small DOCX agreement fixture | direct | 6053 | 20.2 ms | 21.3 ms | 71 ms | 354.7 ms | document |
| DOCX 10 nominal-page fixture | upload | 8293 | 89.0 ms | 93.5 ms | 139 ms | 555.1 ms | document |
| DOCX 10 nominal-page fixture | direct | 8293 | 27.2 ms | 30.0 ms | 78 ms | 540.2 ms | document |
| DOCX 25 nominal-page fixture | upload | 9206 | 145.2 ms | 165.4 ms | 196 ms | 605.3 ms | document |
| DOCX 50 nominal-page fixture | upload | 10596 | 195.0 ms | 242.4 ms | 245 ms | 717.2 ms | document |
| DOCX 50 nominal-page fixture | direct | 10596 | 122.5 ms | 157.9 ms | 173 ms | 641.1 ms | document |
| DOCX 100 nominal-page fixture | upload | 13201 | 259.7 ms | 311.2 ms | 310 ms | 861.5 ms | document |
| DOCX 250 nominal-page fixture | upload | 20585 | 439.2 ms | 465.6 ms | 490 ms | 1024.7 ms | document |
| DOCX 250 nominal-page fixture | direct | 20585 | 350.0 ms | 664.1 ms | 401 ms | 1134.7 ms | document |
| DOCX paragraph heavy | upload | 34026 | 166.1 ms | 199.9 ms | 217 ms | 763.1 ms | document |
| DOCX table heavy | upload | 16538 | 115.8 ms | 157.2 ms | 166 ms | 515.5 ms | document |
| DOCX list heavy | upload | 7908 | 109.9 ms | 117.0 ms | 160 ms | 508.9 ms | document |
| DOCX run heavy | upload | 61664 | 192.1 ms | 204.2 ms | 243 ms | 749.3 ms | document |
| DOCX logical 100KB | upload | 5224 | 96.9 ms | 111.6 ms | 147 ms | 596.8 ms | document |
| DOCX logical 500KB | upload | 9030 | 144.7 ms | 155.1 ms | 195 ms | 727.2 ms | document |
| DOCX logical 2MB | upload | 4917454 | 389.1 ms | 394.8 ms | 440 ms | 1132.0 ms | document |
| PDF 2 pages | upload | 7558 | 108.8 ms | 131.0 ms | 159 ms | 305.7 ms | document |
| PDF 2 pages | direct | 7558 | 25.1 ms | 29.0 ms | 76 ms | 217.1 ms | document |
| PDF 10 pages | upload | 35269 | 126.4 ms | 133.1 ms | 177 ms | 349.1 ms | document |
| PDF 10 pages | direct | 35269 | 50.5 ms | 60.6 ms | 101 ms | 432.6 ms | document |
| PDF 25 pages | upload | 86755 | 148.6 ms | 163.1 ms | 199 ms | 372.0 ms | document |
| PDF 50 pages | upload | 172745 | 227.5 ms | 235.3 ms | 278 ms | 454.5 ms | document |
| PDF 100 pages | upload | 344783 | 384.3 ms | 394.9 ms | 435 ms | 839.5 ms | document |
| PDF 250 pages | upload | 863703 | 915.4 ms | 972.6 ms | 966 ms | 1507.0 ms | document |
| PDF 500 pages | upload | 1729645 | 1968.2 ms | 1983.6 ms | 2019 ms | 2551.7 ms | document |
| PDF 50-page minimal edits | upload | 172337 | 232.5 ms | 252.7 ms | 283 ms | 671.7 ms | document |
| PDF 50-page heavy edits | upload | 175716 | 492.4 ms | 506.4 ms | 543 ms | 974.1 ms | document |
| PDF 50-page page_inserted_deleted edits | upload | 171304 | 233.2 ms | 265.3 ms | 284 ms | 670.0 ms | document |
| PDF 50-page table_heavy edits | upload | 200400 | 538.1 ms | 704.6 ms | 589 ms | 1090.4 ms | document |

## Optional page rendering

These rows request `pageRendering: true`. Semantic completion precedes page preparation; final server completion includes both. PDF previews preserve source bytes. DOCX pagination comes from the selected renderer and can differ from Word. Page preparation includes PDF validation and private storage, not browser rasterization.

| Fixture | Input | Pages (original / revised) | Semantic p50 | Page preparation p50 | Final server p50 | Expected final processing (p50 + 50 ms) | Renderer |
| --- | --- | --- | ---: | ---: | ---: | ---: | --- |
| Small DOCX agreement fixture with rendered pages | upload | 1 / 1 | 117.6 ms | 107.7 ms | 231.0 ms | 281 ms | Document pages |
| Small DOCX agreement fixture with rendered pages | direct | 1 / 1 | 54.1 ms | 97.9 ms | 162.4 ms | 213 ms | Document pages |
| DOCX 10 nominal-page fixture with rendered pages | upload | 3 / 3 | 128.9 ms | 214.0 ms | 347.8 ms | 398 ms | Document pages |
| DOCX 50 nominal-page fixture with rendered pages | upload | 14 / 14 | 186.6 ms | 802.4 ms | 974.6 ms | 1025 ms | Document pages |
| DOCX 250 nominal-page fixture with rendered pages | upload | 66 / 66 | 468.3 ms | 6342.9 ms | 6828.1 ms | 6879 ms | Document pages |
| PDF 2 pages with rendered pages | upload | 2 / 2 | 120.2 ms | 58.8 ms | 179.2 ms | 230 ms | source-pdf |
| PDF 2 pages with rendered pages | direct | 2 / 2 | 54.1 ms | 57.8 ms | 114.7 ms | 165 ms | source-pdf |
| PDF 10 pages with rendered pages | upload | 10 / 10 | 152.6 ms | 64.0 ms | 220.1 ms | 271 ms | source-pdf |
| PDF 50 pages with rendered pages | upload | 50 / 50 | 311.2 ms | 66.0 ms | 379.1 ms | 430 ms | source-pdf |
| PDF 250 pages with rendered pages | upload | 250 / 250 | 933.7 ms | 158.7 ms | 1084.4 ms | 1135 ms | source-pdf |
| PDF 500 pages with rendered pages | upload | 500 / 500 | 1954.1 ms | 347.7 ms | 2303.0 ms | 2353 ms | source-pdf |

## Failed qualification cases

Invalid comparison output has no published latency expectation. These cases must be repaired and rerun before making performance claims for them.

- **JSON 100KiB (inline)**: Changed fixture returned no changes. Engine: `text_fallback`. No timing claim.
- **DOCX logical 1MB (upload)**: Benchmark SSE document_too_large; no latency recorded. Engine: `unavailable`. No timing claim.

## Warm distributions

| Fixture | Samples | Server p50 | Server p95 | Client completion p50 |
| --- | ---: | ---: | ---: | ---: |
| html-snippet:inline | 30 | 26.6 ms | 41.6 ms | 331.2 ms |
| docx-10:upload | 30 | 89.7 ms | 116.7 ms | 318.8 ms |
| pdf-50:upload | 30 | 245.9 ms | 283.2 ms | 677.6 ms |

DEV reserved concurrency: snippet service 5; native document service 3. Bursts above these deployed limits may be rejected; partially admitted batches have no aggregate timing claim.

## Concurrent comparisons

| Fixture | Concurrent requests | Batch elapsed | Server p50 | Server max |
| --- | ---: | ---: | ---: | ---: |
| html-snippet:inline | 5 | 600.9 ms | 27.2 ms | 28.8 ms |

- Failed batch `html-snippet:inline` with concurrency 8: 6 accepted, 2 rejected. No aggregate latency claim.
- Failed batch `docx-10:upload` with concurrency 5: 4 accepted, 1 rejected. No aggregate latency claim.
- Failed batch `docx-10:upload` with concurrency 8: 5 accepted, 3 rejected. No aggregate latency claim.
- Failed batch `pdf-50:upload` with concurrency 5: 3 accepted, 2 rejected. No aggregate latency claim.
- Failed batch `pdf-50:upload` with concurrency 8: 3 accepted, 5 rejected. No aggregate latency claim.

Negative fixtures rejected: 3. Rejected/rate-limited benchmark attempts: 13. Owned fixture cleanup: verified.

Raw observations and fixture hashes are recorded in the adjacent JSON report. Upload authorization/transfer time and browser rendering are not included in the server processing estimates.
