v0.9.0 Latency Envelope¶
Generated: 2026-04-27T13:40:53Z (commit 2fb7561)
Reproducer: bash scripts/latency-bench.sh
How to read this¶
reposix v0.9.0 replaces the per-read FUSE round-trip with a partial-clone
working tree backed by a git-remote-reposix promisor remote. The
golden-path latencies below characterize the sim backend (in-process
HTTP simulator) and any real backends for which credentials were
available at run time. What's measured: end-to-end wall-clock for
each operation, single-threaded, against an ephemeral sim DB on
localhost or the corresponding real-backend REST API. Each step is the
median of 3 samples to absorb network jitter. What's NOT measured:
runner hardware variance and cold-cache vs warm-cache TLS reuse for HTTPS
backends (a single warm-up GET amortizes the TLS handshake before timing).
Take the sim column as a lower bound for transport overhead and the
real-backend columns as a proxy for "what an agent on a typical laptop
will see."
The MCP/REST baseline comparison sits in docs/benchmarks/token-economy.md
(token-economy benchmark, v0.7.0). v0.9.0's win is on the latency
axis, not the token axis: the cache-backed bare repo means an agent
can grep -r an issue tracker without re-hitting the API for every
match.
Latency table¶
| Step | sim | github | confluence | jira |
|---|---|---|---|---|
reposix init cold 1 |
27 ms | 26 ms | 508 ms | 25 ms |
| List records 2 | 9 ms (N=6) | 451 ms (N=18) | 332 ms (N=0) | |
| Get one record | 8 ms | 291 ms | n/a | |
| PATCH record (no-op) | 11 ms | 828 ms | n/a | |
Helper capabilities probe |
6 ms | 5 ms | 5 ms | 5 ms |
Real-backend cells are populated by the bench-latency-v09 CI job
(see .github/workflows/ci.yml
for cadence; the weekly cron variant lives in
.github/workflows/bench-latency-cron.yml).
Soft thresholds¶
- sim cold init < 500ms — regression-flagged via
WARN:line on stderr; not CI-blocking. Tracked here so a sudden 5x regression surfaces in PR review. - real-backend step < 3s — same WARN-only mechanism.
Reproduce¶
The script regenerates this file in place. To capture real-backend columns, export the relevant credential bundle before running:
# GitHub (reubenjohn/reposix issues)
export GITHUB_TOKEN=…
# Confluence (TokenWorld space)
export ATLASSIAN_API_KEY=… ATLASSIAN_EMAIL=… REPOSIX_CONFLUENCE_TENANT=…
# JIRA (TEST project, overridable via JIRA_TEST_PROJECT)
export JIRA_EMAIL=… JIRA_API_TOKEN=… REPOSIX_JIRA_INSTANCE=…
export REPOSIX_ALLOWED_ORIGINS='https://api.github.com,https://reuben-john.atlassian.net'
bash scripts/latency-bench.sh
See docs/reference/testing-targets.md for the canonical safe-to-mutate
test targets.
-
reposix initmaterializes blobs lazily (partial clone with--filter=blob:none). Blob counts at end of init: sim=0, github=0, confluence=0, jira=0. A non-zero count means the helper servedfetchrequests from git that pulled actual blob bytes during the bootstrap fetch. ↩ -
N= records returned by the canonical list endpoint: sim/github/jira issues, confluence pages in the configured space. N values reflect live backend state at run time — the TokenWorld space andreubenjohn/reposixissue count drift over time; expect ±20% wobble between runs. TheHelper capabilities proberow is local-only (no network), so it's identical across columns and serves as a runner-variance control. ↩