# Local measurements

Recorded September 12, 2026, on this workspace's arm64 macOS 27.0 host, using release builds and local temporary storage. Both examples use a 256 MiB seeded random file, four configured workers, and a 19-byte insertion at offset 100,000. These are single-run observations, not hardware-independent guarantees or regression thresholds. Filesystem cache and concurrent host load affect results; the source file is freshly written and may already be cached.

| Storage operation | Measured rate |
| --- | ---: |
| First capture, new durable chunk packs | 309 MiB/s |
| Re-chunk unchanged content, objects already cached | 762 MiB/s |
| Re-chunk after insertion | 924 MiB/s |
| Reconstruct and verify output file | 692 MiB/s |

The file produced 852 chunks. Inserting 19 bytes created **163,809 bytes** of new chunks, reusing **99.939%** of the resulting file. First capture includes hashing, pack writes, file sync, and publication directory sync. Store opening and source generation are outside the timed interval. Re-chunking reads the entire source file. Restore verifies chunks as it writes; exact whole-file equality is checked outside the timed interval.

| End-to-end loopback operation | Measured result |
| --- | ---: |
| Initial capture, transfer, and authority acceptance | 116 MiB/s |
| Second client download and filesystem installation | 168 MiB/s |
| Idle one-file sync | 0.71 ms |
| Edited file sent and applied on the other client | 3.79 seconds |
| Chunk payload uploaded for that edit | 163,809 bytes |

The end-to-end benchmark includes durable client journals, batched HTTP transfer, SQLite publication, and incoming-file safety checks. It excludes watcher debounce and initial client/server setup. Byte statistics count chunk payloads, not HTTP headers, pack framing, or manifest JSON. A real network adds latency and bandwidth limits. The edit still scans and reconstructs the large file locally; deduplication does not imply byte-granular in-place disk writes.

Raw outputs: [storage-macos.json](storage-macos.json), [sync-macos.json](sync-macos.json).

```sh
cargo run --release --locked --example bench -- 256 4
cargo run --release --locked --example bench_sync -- 256
```

The storage benchmark originally measured approximately 18 MiB/s with a durable loose-file write per chunk. Immutable packs removed that flush bottleneck. A separate run reached 337 MiB/s on first capture and 1,301 MiB/s re-chunking; the table uses the saved run rather than selecting the highest values.

## Network and compression comparison

Measured September 16, 2026, from this Mac to the same remote current host. Each upload used an approximately 8 MiB sample assembled from proportional file prefixes of a 1,991-file, 463.6 MiB project. Repeated trials changed byte values to prevent Corotation chunk reuse and reversed the method order. These are sequential observations on a variable live connection, **not a transport ranking**.

| Upload method | Median time, 3 runs | Observed range | Median effective rate |
| --- | ---: | ---: | ---: |
| Raw TCP socket | 18.3 s | 6.3–31.0 s | 0.44 MiB/s |
| OpenSSH | 13.4 s | 7.9–31.2 s | 0.60 MiB/s |
| Corotation over SSH | 11.2 s | 10.0–25.3 s | 0.71 MiB/s |

Raw TCP and OpenSSH receivers verified SHA-256 in memory. Corotation used an isolated temporary current and included file capture, verified durable chunks, and atomic publication. SSH timings include a new connection. The temporary listeners, current, keys, and storage were removed. No benchmark data was added to production repositories.

Single compression-transfer trials took 12.8 s for TCP + gzip-1, 7.2 s for TCP + gzip-6, 13.6 s for OpenSSH `-C`, and 13.9 s for OpenSSH + gzip-1. Gzip timings include local compression. The variability prevents treating those times as evidence that one option is faster. The prefix sample compresses better than the full project.

Compressing every full project file separately, before chunk deduplication:

| Compression | Original | Compressed | Reduction | Compression time |
| --- | ---: | ---: | ---: | ---: |
| gzip level 1 | 463.6 MiB | 393.9 MiB | 15.0% | 8.5 s |
| gzip level 6 | 463.6 MiB | 391.8 MiB | 15.5% | 9.8 s |

PNGs account for 310.2 MiB and shrink only about 3%; JSON shrinks substantially. Compression could reduce network bytes modestly for this project. These measurements do not justify changing the wire protocol based on a throughput ranking: link variation is larger than the measured compression benefit, and no consistent Corotation slowdown appeared across the repeated trials. A 64 MiB local SSH sync reached 106.6 MiB/s, and 64 MiB of writes plus per-pack fsync on current’s attached volume reached 141.3 MiB/s, with each 8 MiB pack taking roughly 53–61 ms.

Raw measurements and per-extension compression results: [network-macos.json](network-macos.json).

## Publication checks

Recorded September 14, 2026, with a release build on arm64 macOS and Colima (2 vCPU, 4 GiB). The small Three.js fixture uses TypeScript 5.9.3 and Khronos glTF Validator 2.0.0-dev.3.10. Times include a complete local `cor check` invocation, input capture, and container startup. They do not measure publication over the network or a full game project. These are single-run observations, not regression thresholds.

| Local check | Wall time | Files rematerialized |
| --- | ---: | ---: |
| First check, including dependency preparation | 4.94 s | 7 |
| Identical inputs | 0.22 s | 0 |
| Documentation edit | 1.18 s | 1 |
| Code edit | 1.98 s | 1 |
| Type error | 0.89 s | 1 |
| External model-buffer corruption | 1.20 s | 1 |

Identical inputs skipped every compiler/validator command. Documentation edits reused type-check results; code edits retained the compiler's `.tsbuildinfo`. Both reused model validation without rereading the model. Changing a referenced buffer invalidated the model's result and blocked the package. The generic build check deliberately includes all inputs, so even documentation changes launch that build command; projects can declare narrower, complete inputs for their own incremental checks.

The same run exercised a real current node and two clients, rejected a whole invalid batch without local upload, automatically published its repair, and verified live hold/resume. Raw timings and per-check cache counters: [checks-macos.json](checks-macos.json).

```sh
docker pull node:22-bookworm-slim
just checks-e2e
```
