Log in
docs/benchmark-coverage.md 84 lines · 15.2 KB

Benchmark Coverage

This page separates implemented evidence from planned coverage. Public reports should cite only implemented rows and should link to the raw JSONL used for the claim.

AreaStatusEvidencePublic Claim Allowed
Core smoke VCS operationsImplementedscripts/bench.py --profile smokeLocal smoke/regression signal only.
Core standard/large profilesImplemented in harness, needs dedicated runs`scripts/bench.py --profile standardlarge`
XL/monorepo fixture familyRegistered generator, not consumed by active bench.py profilesscripts/make_monorepo_fixture.py, config/fixtures.json, tests/test_make_monorepo_fixture.pyNo monorepo performance claim yet. Registry entries are status: planned with null manifests; missing/unverified generated trees are coverage gaps, not evidence.
Scripted agent-shaped workflowsImplementedscripts/workflow_ab.pyDeterministic workflow cost, not real agent behavior.
History archaeology + error recovery workflowsImplementedscripts/workflow_ab.py --workflows history_archaeology,vcs_error_recoveryDeterministic; note closest-available-command substitutions for Oak.
Sync/divergence recovery workflowsImplementedscripts/workflow_ab.py --workflows sync_push_divergence,sync_pull_upstream,sync_pull_dirty,sync_non_ff_after_amendGit uses a local bare remote; oak needs OAK_BENCH_SYNC_REPO (skip rows otherwise). Compare tokens/calls/recovery steps only β€” transports differ by construction. Failure rows carry error_mentions_recovery_command.
Real agent adaptersclaude + codex verified against real runs (2026-06-10), re-verified plus cursor verified (2026-06-11: success, provider tokens, turn metrics on all three)scripts/agent_workflow.py, tests/fixtures/*_real.jsonlCite all three adapters' rows with raw JSONL.
Turn metrics + recovery costImplemented for stream-json adaptersagent_workflow.py turn timeline, turn_metrics, turns_to_recoveryCite per adapter; mock rows are unmeasured (null).
Instruction-level familiarity laneImplemented, needs repeated paid runsscripts/agent_workflow.py --instruction-levelCite only with per-level success rates and n>=10 per level.
Parallel contention laneImplemented for git modes; Oak per-task mode skip-rowsscripts/parallel_contention.pyLocal signal; Oak workspace-per-task claims blocked until a disposable remote is wired.
End-to-end task costPartial, runnable local evidencescripts/task_loop.py --scenarios agent_task_baseline_v1,agent_task_oak_local_v1,interrupted_publication_after_request_v1Git local-file cold clone/warm worktree, successful Oak two-fresh-checkout work against owned loopback oak serve, and actual Oak loopback interruption evidence. Scripted call equivalents are not model-observed calls. Local Oak CI/review and transport-matched Oak-vs-Git wall time remain explicitly unmeasured.
Output determinism / ANSI probesImplementedbench.py *.determinism rowsDiagnostic rows; cite stability percentage with scenario shape.
Oak mount remote-backed benchmarksDry probe/partialscripts/mount_probe.py, scenarios/mount.yamlCapability/skip reporting only unless a disposable remote is configured.
Mount-vs-clone acquisition comparisonGit side measured (2026-06-11, n=3: full 28.1s/670MB, shallow 21.1s/574MB, blobless 24.2s/583MB, sparse-task 7.1s/66MB/3 calls). Oak large-mirror mount startup is no longer a timeout after the M7 server metadata repair + root-only lazy startup: launch proof has a successful default-root large-mirror smoke at 3889.945ms mount / 164.322ms root readdir / 1473.293ms stat-all, plus a cold custom-root handoff proxy A/B showing 33107.974ms main vs 6038.319ms candidate (-81.762%, 6/6 wins).scripts/mount_vs_clone.py (OAK_BENCH_MIRROR_REPO, GIT_BENCH_MIRROR_URL β€” SSH URL, mirror is private); M7 launch proof artifacts under /Users/mrmrs/o/launch-proof-20260618/raw/Oak mount startup claims are allowed only with the M7 caveats: the default-root large-mirror smoke is a successful mount proof; the custom-root A/B is a handoff/failure proxy, not a successful mount; cold unhydrated file attrs may report size 0. Do not publish a precise "~1s" large-repo mount claim from this evidence. Git-only acquisition costs remain citable with the different-networks caveat.
Tuned Git baselinesWired for untracked-cache, split-index, fsmonitor, and Git LFS on binary fixturesscripts/bench.py --git-modes ...Required for status/diff claims; git_lfs emits explicit skip rows on non-binary scenarios or hosts without Git LFS. Sparse and worktree remain declarative-only modes.
Token estimate calibrationImplemented as standalone toolscripts/token_calibration.pyReport the calibration factor with any cross-subject token delta.
Instrument test suiteImplementedtests/, golden adapter-stream fixtures, python3 -m unittest discover -s testsCite as methodology evidence: the measurement code itself is regression-tested.
Per-lane row contractImplemented, enforced at write timescripts/oakbench/rows.py, scripts/oakbench/results.pyContract violations fail the producing run, not the dashboard.
Dev-loop verdict with measured noise floorImplementedscripts/devloop.py (A/A null test + embedded null controls)Verdicts state their own detection limits; deltas below the measured floor are never claimed.
Measurement-identity parity toolImplementedscripts/row_parity.pyRequired evidence for harness refactors (ADR-0005).
Statistical confidence intervalsImplemented as standalone toolscripts/benchmark_stats.pyUse for publishable reports with adequate sample counts.
Efficiency regression gatesImplemented (exact metrics, Oak-baseline comparison)scripts/regression_report.pyCI gate for oak_local vs released Oak.
Cloud dashboardScaffoldedcloudflare/, docs/results-and-dashboard.mdIngest architecture only until live historical data exists.
Peak memory (RSS) per VCS commandImplemented (core lane)bench.py peak_rss_bytes via oakbench/execution.py (os.wait4 rusage)Per-command child peak RSS; null on platforms without wait4.
Tool-call envelope token costImplemented (additive fields)oakbench/tokens.py *_with_envelope fields; calibrate with token_calibration.py --envelopeCite with the envelope constants and the calibration output; historical fields exclude envelopes.
Tail latency p95/p99 with sample honestyImplementedoakbench/reporting.py tail_latency_summary, benchmark_stats.py p95/p99 columnsPercentiles are null below n=20 (p95) / n=100 (p99); never cite a relabelled max as a tail.
Output information recall + bytes-per-fileImplemented and gatedbench.py *.inforecall rows, oakbench/output_semantics.py; gated in regression_report.py (information-recall) and devloop.py (RECALL)Bytes-saved claims must cite recall alongside: compact-but-lossy is not a win, and the gates now fail it.
Piped-diff format compatibilityImplemented and gatedbench.py diff.full.inforecall rows (pipe_compatible_unified, hunk counts); gated in regression_report.py (pipe-compat) and devloop.py (PIPE-COMPAT)Cite when claiming oak diff works with patch/grep-style tooling; a changeset that loses unified structure fails the verdict.
Remote cold clone / push / pullImplemented for git (local file remote); Oak skip-rowsbench.py remote.* rows, --skip-remoteSame-machine remote isolates VCS transfer cost from network; Oak claims blocked until a disposable remote is wired.
Shaped network operations and first-payload timingImplemented for netshape lane where Linux netns/tc is availablescripts/netshape_bench.py netshape_clone_cold, netshape_log_follow_cold, byteproxy ttfd_ms fieldsCross-subject latency claims require the same netshape_profile and server host. netshape_log_follow_cold measures cold network acquire plus file-history query (git.log.follow/oak.log.follow) with TTFD fields. Non-Linux or missing Oak local server paths emit skip rows.
Mount lifecycle (desc, finish, space clean, task loop)Implemented handlers; needs remote to runmount_probe.py oak.desc/oak.finish --desc-file/space.clean/loop.push_desc*, task_lifecycle_loop scenariooak finish capability-gated per binary; skip rows until OAK_BENCH_MOUNT_REPO set.
Compact-output follow-up costImplemented for streams exposing per-call outcomestool_call_metrics.vcs_info_followup_calls_total via oakbench/stream_adapters.pyEach follow-up means the first output was insufficient; null when commands are not adapter-visible.
Contention commit-latency tail + retry depthImplementedparallel_contention.py commit_latency_tail, retry_depth_histogram, per-worker samplesCite p95 only when tail_supported includes it.

Known unmeasured-by-design (null in v2 rows until instrumented): hydration bytes outside the mount lane, tool wait vs model time inside agent CLIs, and Oak conflict counts in real-agent rows.

Git t/perf Clean-Room Cross-Reference

This table maps upstream Git t/perf behavioral areas to this repository's coverage. It is a clean-room index: the mapping uses Git perf-test names and titles only, not GPL test bodies, shell helpers, fixtures, or expected output. External prior-art policy is in docs/prior-art.md.

Git t/perf behavioral areaRepresentative Git perf testsCurrent Oak benchmark coveragePhase 0 status
Perf harness sanity and non-VCS helper costperf-lib.sh, p0000-perf-lib-sanity.sh, p0071-sort.shInstrument tests cover row contracts, adapters, calibration, run locks, and reporting helpers.Excluded from VCS coverage: Git's perf harness internals and generic sort(1) cost are not Oak-vs-Git behavior.
Revision walking, graph queries, and history lookupp0001-rev-list.sh, p1500-graph-walks.sh, p1501-rev-parse-oneline.sh, p6010-merge-base.sh, p6011-rev-list-maximal.sh, p6100-describe.shCore spec has long-history with history operations; workflow lane has history archaeology.Partial/planned. Merge-base, describe, maximal-independent sets, and regex commit lookup are explicit gaps.
Index, checkout, status, and working-tree scansp0002-read-cache.sh, p0004-lazy-init-name-hash.sh, p0005-status.sh, p0006-read-tree-checkout.sh, p0007-write-cache.sh, p0090-cache-tree.sh, p5314-name-hash.shCore lane measures status.clean, status.dirty, diff.dirty, snapshots, tuned Git modes, peak RSS, output determinism, and information recall.Implemented for user-visible status/diff/snapshot pressure; Git internal index/cache-tree/name-hash microbenchmarks are excluded unless exposed as user-visible regressions.
Object database durability and fsync policyp0008-odb-fsync.shNo dedicated durability lane. Snapshot rows record latency and output, not persistence-policy variants.Explicit gap. Needs a durability semantics contract before public comparisons.
Refs, branch/tag enumeration, and ref globbingp0100-globbing.sh, p1400-update-ref.sh, p6300-for-each-ref.shCore spec includes branch create/list/switch and many-branches; contention lane measures branch-per-task behavior.Partial/planned. Raw ref update/globbing and tag formatting internals are gaps.
Object inspection and repository verificationp1006-cat-file.sh, p1450-fsck.sh, p1451-fsck-skip-list.shIntegrity attestation tests validate the harness; benchmark lanes do not time object inspection or fsck equivalents.Excluded for Phase 0 unless Oak exposes comparable user-facing object verification commands.
Sparse checkout, partial clone, clone reference, Scalar, and acquisitionp2000-sparse-operations.sh, p5600-partial-clone.sh, p5601-clone-reference.sh, p9210-scalar.shMount lane, mount-vs-clone comparison, tuned Git sparse-checkout mode, and remote clone/pull rows cover acquisition and lazy-use behavior.Partial. Git's full sparse-operation matrix, Scalar setup, and clone-reference optimization remain gaps.
Rebase, stash, reset, clean, and history rewritingp3400-rebase.sh, p3404-rebase-interactive.sh, p3904-stash-patch.sh, p7000-filter-branch.sh, p7102-reset.sh, p7300-clean.shWorkflow lane covers scripted recovery, sync divergence, cleanup, and branch lifecycle; mount lane covers teardown and space.clean.Partial/excluded. Reset/cleanup behavior is agent-relevant; rebase, interactive rebase, stash patch UI, and filter-branch are not Phase 0 goals.
Diff algorithms, log formats, pickaxe, line-log, grep, and last-modified queriesp4000-diff-algorithms.sh, p4001-diff-no-index.sh, p4002-diff-color-moved.sh, p4205-log-pretty-formats.sh, p4209-pickaxe.sh, p4211-line-log.sh, p4220-log-grep-engines.sh, p7810-grep.sh, p7820-grep-engines.sh, p8020-last-modified.shCore lane measures dirty diff output, full-diff pipe compatibility, information recall, and output bytes; agent lane has file exploration scenarios.Partial. Agent-facing diff and exploration cost is covered; Git-specific algorithm and grep-engine matrices are gaps/exclusions.
Packfiles, bitmaps, multi-pack indexes, pruning, fetch-pack, import/exportlib-bitmap.sh, lib-pack.sh, p5302-pack-index.sh, p5303-many-packs.sh, p5304-prune.sh, p5310-pack-bitmaps.sh, p5311-pack-bitmaps-fetch.sh, p5312-pack-bitmaps-revs.sh, p5313-pack-objects.sh, p5315-pack-objects-filter.sh, p5326-multi-pack-bitmaps.sh, p5332-multi-pack-reuse.sh, p5333-pseudo-merge-bitmaps.sh, p5550-fetch-tags.sh, p5551-fetch-rescan.sh, p9300-fast-import-export.shCore remote rows cover same-machine push/clone/pull; mount-vs-clone records acquisition bytes and wall time for Git clone variants.Explicit gap/exclusion. Add only if public claims require storage-transfer mechanics beyond current remote/acquisition rows.
Fsmonitor, untracked cache, split index, and watcher-backed statusp7519-fsmonitor.sh, p7527-builtin-fsmonitor.shTuned Git baselines are wired for untracked_cache, split_index, and fsmonitor.Implemented as comparison modes where platform support exists; builtin fsmonitor lifecycle details remain a Git-specific exclusion.

Public Claim Rules

  • Say whether a result is agent-default or core-equivalent.
  • Say whether a workflow is scripted or produced by a real agent adapter.
  • Say the exact subject roles: Git baseline, Oak release installed, Oak local changeset, optional Oak main.
  • Include raw output bytes and truncation count for token-related claims.
  • Include hardware, OS, filesystem, repetitions, randomization, and confidence intervals for public performance claims.
  • Never cite planned scenario YAML as evidence.

Suggested Badges

  • implemented: runnable and verified locally
  • partial: runnable but missing a fairness mode, tuned baseline, or oracle
  • dry-probe: records capability/skip rows only
  • planned: design exists but no benchmark evidence yet