Skip to content

fix(scope): use identity-based references for module edits#412

Merged
dowdiness merged 1 commit into
mainfrom
feat/lambda-references-rename
May 31, 2026
Merged

fix(scope): use identity-based references for module edits#412
dowdiness merged 1 commit into
mainfrom
feat/lambda-references-rename

Conversation

@dowdiness
Copy link
Copy Markdown
Owner

Summary

  • Replace the old name-based find_usages scan with a private module_def_references bridge to @scope.references
  • Update module rename and inline-all/inline-definition paths to enumerate identity-based references
  • Add duplicate-binding regression coverage so edits update the resolved reference without touching a shadowed body reference

Reuse check

  • Reused canonical @scope.references(g, decl.id) for reference enumeration
  • Reused existing @scope.build graph construction at edit call sites; compute_inline_definition reuses the graph it already builds for declaration lookup
  • Considered @scope.declaration, but it maps ref node → decl and does not enumerate references for a selected module definition
  • New helper boundary: module_def_references only bridges module def_index to graph-local DeclId inside the edits package

API note

  • Intentional API contraction: public find_usages is removed from dowdiness/canopy/lang/lambda/edits (pkg.generated.mbti) because module edit consumers now use the canonical scope graph query and there are no remaining in-repo callers

Validation

  • NEW_MOON_MOD=0 moon check
  • NEW_MOON_MOD=0 moon fmt && NEW_MOON_MOD=0 moon info
  • NEW_MOON_MOD=0 moon test -p dowdiness/canopy/lang/lambda/edits → 128/128
  • NEW_MOON_MOD=0 moon test → 1268/1268
  • git diff --check

Review

  • Codex pre-PR review: no high-confidence issues found

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 31, 2026

Warning

Review limit reached

@dowdiness, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 28 minutes and 25 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bdc859c2-9fe3-4b59-ab16-9613bdf429b2

📥 Commits

Reviewing files that changed from the base of the PR and between 73f641e and 430e0e9.

📒 Files selected for processing (6)
  • lang/lambda/edits/pkg.generated.mbti
  • lang/lambda/edits/scope.mbt
  • lang/lambda/edits/scope_wbtest.mbt
  • lang/lambda/edits/text_edit_refactor.mbt
  • lang/lambda/edits/text_edit_rename.mbt
  • lang/lambda/edits/text_edit_wbtest.mbt
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/lambda-references-rename

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
lambda-editor 430e0e9 Commit Preview URL

Branch Preview URL
May 31 2026, 08:26 AM

@github-actions
Copy link
Copy Markdown

Benchmark Comparison Report

Comparing PR branch against main

Main Module Benchmarks

Base branch:

[dowdiness/btree] bench btree_benchmark.mbt:79 ("bench: build via inserts (100)") ok
time (mean ± σ)         range (min … max) 
  60.39 µs ± 611.45 ns    59.67 µs …  61.81 µs  in 10 ×   1595 runs
[dowdiness/btree] bench btree_benchmark.mbt:84 ("bench: build via from_sorted (100)") ok
time (mean ± σ)         range (min … max) 
   2.87 µs ±   8.50 ns     2.86 µs …   2.89 µs  in 10 ×  38658 runs
[dowdiness/btree] bench btree_benchmark.mbt:91 ("bench: build via inserts (1000)") ok
time (mean ± σ)         range (min … max) 
 942.47 µs ±  17.47 µs   925.90 µs … 987.30 µs  in 10 ×    104 runs
[dowdiness/btree] bench btree_benchmark.mbt:96 ("bench: build via from_sorted (1000)") ok
time (mean ± σ)         range (min … max) 
  24.91 µs ±  70.49 ns    24.80 µs …  25.02 µs  in 10 ×   4019 runs
[dowdiness/btree] bench btree_benchmark.mbt:103 ("bench: build via inserts (10000)") ok
time (mean ± σ)         range (min … max) 
  14.50 ms ± 156.43 µs    14.32 ms …  14.79 ms  in 10 ×      7 runs
[dowdiness/btree] bench btree_benchmark.mbt:108 ("bench: build via from_sorted (10000)") ok
time (mean ± σ)         range (min … max) 
 495.09 µs ±   5.07 µs   488.34 µs … 502.27 µs  in 10 ×    210 runs
[dowdiness/btree] bench btree_benchmark.mbt:115 ("bench: delete_range middle 10% (1000)") ok
time (mean ± σ)         range (min … max) 
  50.37 µs ± 580.39 ns    49.89 µs …  51.71 µs  in 10 ×   1956 runs
[dowdiness/btree] bench btree_benchmark.mbt:124 ("bench: delete_range middle 50% (1000)") ok
time (mean ± σ)         range (min … max) 
  45.23 µs ± 314.86 ns    44.91 µs …  45.84 µs  in 10 ×   2226 runs
[dowdiness/btree] bench btree_benchmark.mbt:133 ("bench: delete_range middle 10% (10000)") ok
time (mean ± σ)         range (min … max) 
 644.29 µs ±   3.34 µs   641.06 µs … 651.38 µs  in 10 ×    156 runs
[dowdiness/btree] bench btree_benchmark.mbt:142 ("bench: delete_range middle 50% (10000)") ok
time (mean ± σ)         range (min … max) 
 656.11 µs ±   8.06 µs   646.18 µs … 668.03 µs  in 10 ×    153 runs
Total tests: 10, passed: 10, failed: 0. [wasm-gc]
node count: 402
node count: 802
node count: 2002
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:24 ("viewnode serialization (100 defs)") ok
time (mean ± σ)         range (min … max) 
   1.98 ms ±  29.96 µs     1.95 ms …   2.04 ms  in 10 ×     52 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:35 ("viewnode serialization (200 defs)") ok
time (mean ± σ)         range (min … max) 
   5.30 ms ±  81.41 µs     5.19 ms …   5.45 ms  in 10 ×     19 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:46 ("viewnode serialization (500 defs)") ok
time (mean ± σ)         range (min … max) 
  22.08 ms ± 938.26 µs    20.67 ms …  24.18 ms  in 10 ×      5 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:57 ("compute_view_patches (100 defs, single edit)") ok
time (mean ± σ)         range (min … max) 
   1.83 ms ±  74.79 µs     1.76 ms …   1.99 ms  in 10 ×     58 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:98 ("json object - incremental keystroke (20 members)") ok
time (mean ± σ)         range (min … max) 
   1.01 ms ±  57.77 µs   942.53 µs …   1.09 ms  in 10 ×     94 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:103 ("json object - incremental keystroke (100 members)") ok
time (mean ± σ)         range (min … max) 
   3.95 ms ± 112.82 µs     3.84 ms …   4.15 ms  in 10 ×     26 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:108 ("json object - incremental keystroke (500 members)") ok
time (mean ± σ)         range (min … max) 
  25.91 ms ± 143.86 µs    25.76 ms …  26.18 ms  in 10 ×      4 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:113 ("json object - incremental keystroke (1000 members)") ok
time (mean ± σ)         range (min … max) 
  61.01 ms ±   2.46 ms    59.49 ms …  67.13 ms  in 10 ×      2 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:118 ("json array - incremental keystroke (20 elements)") ok
time (mean ± σ)         range (min … max) 
 770.90 µs ± 159.67 µs   543.00 µs … 989.54 µs  in 10 ×    210 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:123 ("json array - incremental keystroke (100 elements)") ok
time (mean ± σ)         range (min … max) 
   1.86 ms ±  56.14 µs     1.78 ms …   1.95 ms  in 10 ×     57 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:128 ("json array - incremental keystroke (500 elements)") ok
time (mean ± σ)         range (min … max) 
  12.51 ms ±  97.64 µs    12.39 ms …  12.70 ms  in 10 ×      8 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:133 ("json array - incremental keystroke (1000 elements)") ok
time (mean ± σ)         range (min … max) 
  33.13 ms ±   2.60 ms    31.84 ms …  40.43 ms  in 10 ×      4 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:38 ("tree refresh unchanged (20 defs)") ok
time (mean ± σ)         range (min … max) 
   4.44 µs ±  64.72 ns     4.39 µs …   4.56 µs  in 10 ×  22139 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:48 ("tree refresh unchanged (80 defs)") ok
time (mean ± σ)         range (min … max) 
  16.44 µs ± 173.14 ns    16.27 µs …  16.80 µs  in 10 ×   5963 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:58 ("tree refresh unchanged (320 defs)") ok
time (mean ± σ)         range (min … max) 
  70.12 µs ±   1.31 µs    69.15 µs …  73.45 µs  in 10 ×   1434 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:68 ("tree refresh unchanged (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 255.07 µs ±   1.15 µs   253.64 µs … 256.97 µs  in 10 ×    392 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:80 ("tree refresh 1 changed (20 defs)") ok
time (mean ± σ)         range (min … max) 
   7.40 µs ± 209.16 ns     7.31 µs …   7.99 µs  in 10 ×  13551 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:95 ("tree refresh 1 changed (320 defs)") ok
time (mean ± σ)         range (min … max) 
 119.65 µs ± 289.39 ns   119.30 µs … 120.03 µs  in 10 ×    832 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:110 ("tree refresh 1 changed (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 441.11 µs ±   2.08 µs   438.82 µs … 445.48 µs  in 10 ×    228 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:125 ("tree refresh 1 changed (80 defs)") ok
time (mean ± σ)         range (min … max) 
  27.00 µs ± 156.63 ns    26.90 µs …  27.43 µs  in 10 ×   3709 runs
Total tests: 20, passed: 20, failed: 0. [js]

PR branch:

Registry index cloned successfully
Symbols updated successfully
Downloading dowdiness/rle@0.2.0
Downloading moonbitlang/quickcheck@0.11.2
Downloading moonbitlang/async@0.16.8
Downloading moonbitlang/x@0.4.38
Downloading moonbit-community/rabbita@0.12.3
[dowdiness/btree] bench btree_benchmark.mbt:79 ("bench: build via inserts (100)") ok
time (mean ± σ)         range (min … max) 
  59.53 µs ±   1.06 µs    58.17 µs …  61.13 µs  in 10 ×   1612 runs
[dowdiness/btree] bench btree_benchmark.mbt:84 ("bench: build via from_sorted (100)") ok
time (mean ± σ)         range (min … max) 
   2.85 µs ±   7.02 ns     2.84 µs …   2.86 µs  in 10 ×  39194 runs
[dowdiness/btree] bench btree_benchmark.mbt:91 ("bench: build via inserts (1000)") ok
time (mean ± σ)         range (min … max) 
 930.15 µs ±  16.64 µs   916.05 µs … 973.99 µs  in 10 ×    100 runs
[dowdiness/btree] bench btree_benchmark.mbt:96 ("bench: build via from_sorted (1000)") ok
time (mean ± σ)         range (min … max) 
  25.82 µs ± 459.79 ns    25.10 µs …  26.36 µs  in 10 ×   3848 runs
[dowdiness/btree] bench btree_benchmark.mbt:103 ("bench: build via inserts (10000)") ok
time (mean ± σ)         range (min … max) 
  14.46 ms ± 320.63 µs    14.19 ms …  15.15 ms  in 10 ×      7 runs
[dowdiness/btree] bench btree_benchmark.mbt:108 ("bench: build via from_sorted (10000)") ok
time (mean ± σ)         range (min … max) 
 492.03 µs ±   6.99 µs   480.83 µs … 502.42 µs  in 10 ×    209 runs
[dowdiness/btree] bench btree_benchmark.mbt:115 ("bench: delete_range middle 10% (1000)") ok
time (mean ± σ)         range (min … max) 
  50.77 µs ± 201.19 ns    50.51 µs …  51.04 µs  in 10 ×   1950 runs
[dowdiness/btree] bench btree_benchmark.mbt:124 ("bench: delete_range middle 50% (1000)") ok
time (mean ± σ)         range (min … max) 
  45.38 µs ± 251.30 ns    45.01 µs …  45.68 µs  in 10 ×   2010 runs
[dowdiness/btree] bench btree_benchmark.mbt:133 ("bench: delete_range middle 10% (10000)") ok
time (mean ± σ)         range (min … max) 
 652.13 µs ±   9.66 µs   640.07 µs … 666.31 µs  in 10 ×    153 runs
[dowdiness/btree] bench btree_benchmark.mbt:142 ("bench: delete_range middle 50% (10000)") ok
time (mean ± σ)         range (min … max) 
 651.62 µs ±  10.63 µs   634.25 µs … 667.41 µs  in 10 ×    153 runs
Total tests: 10, passed: 10, failed: 0. [wasm-gc]
node count: 402
node count: 802
node count: 2002
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:24 ("viewnode serialization (100 defs)") ok
time (mean ± σ)         range (min … max) 
   2.33 ms ±  44.85 µs     2.28 ms …   2.43 ms  in 10 ×     44 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:35 ("viewnode serialization (200 defs)") ok
time (mean ± σ)         range (min … max) 
   4.90 ms ± 111.41 µs     4.75 ms …   5.04 ms  in 10 ×     21 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:46 ("viewnode serialization (500 defs)") ok
time (mean ± σ)         range (min … max) 
  23.14 ms ±   2.78 ms    19.61 ms …  28.21 ms  in 10 ×      4 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:57 ("compute_view_patches (100 defs, single edit)") ok
time (mean ± σ)         range (min … max) 
   1.88 ms ± 164.79 µs     1.73 ms …   2.23 ms  in 10 ×     58 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:98 ("json object - incremental keystroke (20 members)") ok
time (mean ± σ)         range (min … max) 
   1.04 ms ± 108.59 µs   952.47 µs …   1.30 ms  in 10 ×     63 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:103 ("json object - incremental keystroke (100 members)") ok
time (mean ± σ)         range (min … max) 
   3.95 ms ±  72.38 µs     3.87 ms …   4.09 ms  in 10 ×     25 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:108 ("json object - incremental keystroke (500 members)") ok
time (mean ± σ)         range (min … max) 
  25.81 ms ± 117.88 µs    25.64 ms …  25.99 ms  in 10 ×      4 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:113 ("json object - incremental keystroke (1000 members)") ok
time (mean ± σ)         range (min … max) 
  59.74 ms ±   1.86 ms    58.69 ms …  64.81 ms  in 10 ×      2 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:118 ("json array - incremental keystroke (20 elements)") ok
time (mean ± σ)         range (min … max) 
 742.67 µs ± 147.72 µs   536.96 µs … 941.27 µs  in 10 ×    213 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:123 ("json array - incremental keystroke (100 elements)") ok
time (mean ± σ)         range (min … max) 
   1.85 ms ±  42.93 µs     1.80 ms …   1.92 ms  in 10 ×     57 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:128 ("json array - incremental keystroke (500 elements)") ok
time (mean ± σ)         range (min … max) 
  12.52 ms ± 101.18 µs    12.38 ms …  12.68 ms  in 10 ×      9 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:133 ("json array - incremental keystroke (1000 elements)") ok
time (mean ± σ)         range (min … max) 
  32.43 ms ± 807.95 µs    31.55 ms …  34.29 ms  in 10 ×      3 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:38 ("tree refresh unchanged (20 defs)") ok
time (mean ± σ)         range (min … max) 
   3.61 µs ±  66.09 ns     3.56 µs …   3.71 µs  in 10 ×  26825 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:48 ("tree refresh unchanged (80 defs)") ok
time (mean ± σ)         range (min … max) 
  13.53 µs ± 199.48 ns    13.36 µs …  13.90 µs  in 10 ×   7171 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:58 ("tree refresh unchanged (320 defs)") ok
time (mean ± σ)         range (min … max) 
  57.75 µs ±   1.32 µs    56.88 µs …  61.02 µs  in 10 ×   1735 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:68 ("tree refresh unchanged (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 208.49 µs ± 944.64 ns   207.33 µs … 209.75 µs  in 10 ×    478 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:80 ("tree refresh 1 changed (20 defs)") ok
time (mean ± σ)         range (min … max) 
   6.79 µs ±  23.60 ns     6.75 µs …   6.84 µs  in 10 ×  14767 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:95 ("tree refresh 1 changed (320 defs)") ok
time (mean ± σ)         range (min … max) 
 112.48 µs ± 489.17 ns   111.78 µs … 113.20 µs  in 10 ×    892 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:110 ("tree refresh 1 changed (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 391.41 µs ±   1.79 µs   388.34 µs … 394.53 µs  in 10 ×    254 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:125 ("tree refresh 1 changed (80 defs)") ok
time (mean ± σ)         range (min … max) 
  24.86 µs ± 104.97 ns    24.71 µs …  24.99 µs  in 10 ×   4047 runs
Total tests: 20, passed: 20, failed: 0. [js]

event-graph-walker Benchmarks

Base branch:

Registry index updated successfully
Symbols updated successfully
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:21 ("merge - concurrent edits (2 agents x 10)") ok
time (mean ± σ)         range (min … max) 
  23.23 µs ± 536.82 ns    22.58 µs …  24.44 µs  in 10 ×   3692 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:59 ("merge - concurrent edits (2 agents x 50)") ok
time (mean ± σ)         range (min … max) 
 119.87 µs ± 509.64 ns   119.21 µs … 120.68 µs  in 10 ×    838 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:97 ("merge - concurrent edits (2 agents x 200)") ok
time (mean ± σ)         range (min … max) 
 543.80 µs ±   6.42 µs   533.60 µs … 551.21 µs  in 10 ×    189 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:135 ("merge - many agents (5 agents x 20)") ok
time (mean ± σ)         range (min … max) 
 151.21 µs ± 656.85 ns   150.37 µs … 152.68 µs  in 10 ×    663 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:184 ("merge - with deletes (50 inserts, 25 deletes)") ok
time (mean ± σ)         range (min … max) 
 116.78 µs ± 491.04 ns   116.16 µs … 117.58 µs  in 10 ×    851 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:230 ("merge - graph_diff advance (20 ops)") ok
time (mean ± σ)         range (min … max) 
  73.45 µs ± 704.35 ns    72.40 µs …  74.65 µs  in 10 ×   1367 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:303 ("merge - repeated small (10 iterations x 5 ops)") ok
time (mean ± σ)         range (min … max) 
 113.86 µs ± 280.32 ns   113.39 µs … 114.28 µs  in 10 ×    881 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:341 ("merge - retreat concurrent deletes (500 items, 50 deletes)") ok
time (mean ± σ)         range (min … max) 
 205.05 µs ± 870.05 ns   204.04 µs … 206.18 µs  in 10 ×    483 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:408 ("merge - context apply operations (50 ops)") ok
time (mean ± σ)         range (min … max) 
  45.37 µs ±  25.07 µs    27.18 µs …  94.42 µs  in 10 ×   2448 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:6 ("branch - checkout (10 ops)") ok
time (mean ± σ)         range (min … max) 
   3.97 µs ±  35.66 ns     3.92 µs …   4.02 µs  in 10 ×  25252 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:29 ("branch - checkout (100 ops)") ok
time (mean ± σ)         range (min … max) 
  29.83 µs ± 135.07 ns    29.63 µs …  29.98 µs  in 10 ×   3348 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:47 ("branch - checkout (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 414.54 µs ±   3.48 µs   410.32 µs … 420.82 µs  in 10 ×    238 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:65 ("branch - advance (10 new ops)") ok
time (mean ± σ)         range (min … max) 
  11.86 µs ±   4.14 µs     8.80 µs …  20.79 µs  in 10 ×   8544 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:91 ("branch - advance (100 new ops)") ok
time (mean ± σ)         range (min … max) 
 101.11 µs ±  51.78 µs    59.22 µs … 213.37 µs  in 10 ×   1081 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:117 ("branch - checkout with concurrent branches") ok
time (mean ± σ)         range (min … max) 
  34.91 µs ± 112.20 ns    34.72 µs …  35.07 µs  in 10 ×   2852 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:145 ("branch - checkout with deletes") ok
time (mean ± σ)         range (min … max) 
  36.03 µs ± 218.35 ns    35.75 µs …  36.42 µs  in 10 ×   2768 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:176 ("branch - repeated advance steady-state (10 iterations)") ok
time (mean ± σ)         range (min … max) 
  25.84 µs ± 569.92 ns    25.21 µs …  26.96 µs  in 10 ×   3845 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:220 ("branch - repeated advance with oplog mutations (10 iterations)") ok
time (mean ± σ)         range (min … max) 
   7.16 ms ±   3.52 ms     2.74 ms …  12.79 ms  in 10 ×     67 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:246 ("branch - to_text (100 chars)") ok
time (mean ± σ)         range (min … max) 
  11.10 µs ±  64.70 ns    11.04 µs …  11.24 µs  in 10 ×   8885 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:264 ("branch - to_text (1000 chars)") ok
time (mean ± σ)         range (min … max) 
 114.95 µs ± 567.34 ns   114.12 µs … 115.66 µs  in 10 ×    868 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:285 ("branch - single advance (1 new op)") ok
time (mean ± σ)         range (min … max) 
   3.89 µs ± 334.26 ns     3.68 µs …   4.74 µs  in 10 ×  26547 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:311 ("branch - single advance (50 new ops)") ok
time (mean ± σ)         range (min … max) 
  49.39 µs ±  27.33 µs    30.81 µs … 110.26 µs  in 10 ×   2741 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:342 ("branch - realistic typing (50 chars)") ok
time (mean ± σ)         range (min … max) 
  14.84 ms ±   4.82 ms     8.00 ms …  21.49 ms  in 10 ×     21 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:375 ("branch - concurrent merge scenario") ok
time (mean ± σ)         range (min … max) 
  15.94 µs ±   5.73 µs    12.14 µs …  27.16 µs  in 10 ×   7299 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:6 ("walker - linear history (10 ops)") ok
time (mean ± σ)         range (min … max) 
 670.99 ns ±   6.92 ns   661.80 ns … 680.92 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:22 ("walker - linear history (100 ops)") ok
time (mean ± σ)         range (min … max) 
   4.86 µs ±   6.65 ns     4.85 µs …   4.87 µs  in 10 ×  20023 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:38 ("walker - linear history (1000 ops)") ok
time (mean ± σ)         range (min … max) 
  43.13 µs ± 408.76 ns    42.88 µs …  44.27 µs  in 10 ×   2325 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:54 ("walker - concurrent branches (2 agents x 50)") ok
time (mean ± σ)         range (min … max) 
   5.94 µs ±  23.38 ns     5.92 µs …   6.00 µs  in 10 ×  16777 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:79 ("walker - concurrent branches (5 agents x 20)") ok
time (mean ± σ)         range (min … max) 
   5.92 µs ±   6.13 ns     5.91 µs …   5.93 µs  in 10 ×  16831 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:99 ("walker - diamond pattern (50 diamonds)") ok
time (mean ± σ)         range (min … max) 
   7.93 µs ±  12.15 ns     7.91 µs …   7.95 µs  in 10 ×  12619 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:121 ("walker - diff advance only (10 new ops)") ok
time (mean ± σ)         range (min … max) 
   3.37 µs ±   7.18 ns     3.36 µs …   3.38 µs  in 10 ×  29519 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:145 ("walker - diff with concurrent branches") ok
time (mean ± σ)         range (min … max) 
   5.66 µs ±  16.14 ns     5.64 µs …   5.68 µs  in 10 ×  17708 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:176 ("walker - large history (10000 ops)") ok
time (mean ± σ)         range (min … max) 
 451.75 µs ±   1.13 µs   450.19 µs … 453.51 µs  in 10 ×    223 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:196 ("walker - linear history (100000 ops)") ok
time (mean ± σ)         range (min … max) 
   6.87 ms ±  62.52 µs     6.79 ms …   6.97 ms  in 10 ×     15 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:213 ("walker - concurrent branches (100000 ops, 5 agents)") ok
time (mean ± σ)         range (min … max) 
  24.55 ms ±   2.97 ms    21.68 ms …  29.24 ms  in 10 ×      5 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:6 ("version_vector - create (1 agent)") ok
time (mean ± σ)         range (min … max) 
  54.97 ns ±   1.08 ns    53.90 ns …  56.94 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:15 ("version_vector - create (5 agents)") ok
time (mean ± σ)         range (min … max) 
 244.62 ns ±   0.56 ns   243.75 ns … 245.42 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:29 ("version_vector - create (20 agents)") ok
time (mean ± σ)         range (min … max) 
   1.36 µs ±   2.52 ns     1.36 µs …   1.36 µs  in 10 ×  73532 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:42 ("version_vector - compare equal (5 agents)") ok
time (mean ± σ)         range (min … max) 
 321.31 ns ±   0.56 ns   320.52 ns … 322.09 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:63 ("version_vector - compare <= (5 agents)") ok
time (mean ± σ)         range (min … max) 
 149.85 ns ±   1.17 ns   148.98 ns … 152.21 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:84 ("version_vector - compare <= (20 agents)") ok
time (mean ± σ)         range (min … max) 
 625.84 ns ±   0.99 ns   624.95 ns … 627.76 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:100 ("version_vector - merge (5 agents)") ok
time (mean ± σ)         range (min … max) 
 430.36 ns ±   0.78 ns   429.10 ns … 431.26 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:118 ("version_vector - merge (20 agents)") ok
time (mean ± σ)         range (min … max) 
   2.41 µs ±   4.60 ns     2.40 µs …   2.42 µs  in 10 ×  41578 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:134 ("version_vector - includes (5 agents)") ok
time (mean ± σ)         range (min … max) 
 239.53 ns ±   1.15 ns   236.84 ns … 240.78 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:153 ("version_vector - concurrent (5 agents)") ok
time (mean ± σ)         range (min … max) 
 155.51 ns ±   0.57 ns   154.87 ns … 156.47 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:170 ("version_vector - from_frontier (10 ops)") ok
time (mean ± σ)         range (min … max) 
 555.37 ns ±   0.73 ns   554.61 ns … 556.80 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:186 ("version_vector - from_frontier (100 ops, 5 agents)") ok
time (mean ± σ)         range (min … max) 
   4.35 µs ±   5.63 ns     4.34 µs …   4.36 µs  in 10 ×  23014 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:206 ("version_vector - to_frontier (5 agents)") ok
time (mean ± σ)         range (min … max) 
 238.70 ns ±   0.47 ns   238.10 ns … 239.41 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:230 ("version_vector - roundtrip (5 agents)") ok
time (mean ± σ)         range (min … max) 
   4.50 µs ±   8.92 ns     4.50 µs …   4.52 µs  in 10 ×  22209 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:251 ("version_vector - agents (5 agents)") ok
time (mean ± σ)         range (min … max) 
  66.45 ns ±   0.85 ns    65.48 ns …  67.62 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:266 ("version_vector - length (20 agents)") ok
time (mean ± σ)         range (min … max) 
  12.41 ns ±   0.35 ns    12.12 ns …  13.02 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:20 ("bench: cache invalidate + position query (1000 chars)") ok
time (mean ± σ)         range (min … max) 
 186.80 µs ± 966.09 ns   185.57 µs … 188.31 µs  in 10 ×    488 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:31 ("bench: cache invalidate + position query (5000 chars)") ok
time (mean ± σ)         range (min … max) 
   2.82 ms ±  69.67 µs     2.75 ms …   2.95 ms  in 10 ×     35 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:41 ("bench: cache invalidate + position query (10000 chars)") ok
time (mean ± σ)         range (min … max) 
   9.22 ms ± 219.56 µs     9.04 ms …   9.67 ms  in 10 ×     11 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:57 ("bench: 10 remote inserts + queries (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
   3.56 ms ±  58.07 µs     3.49 ms …   3.67 ms  in 10 ×     27 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:84 ("bench: 10 remote inserts + queries (5000-char doc)") ok
time (mean ± σ)         range (min … max) 
  31.33 ms ± 803.18 µs    30.43 ms …  32.56 ms  in 10 ×      4 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:113 ("bench: warm cache position query (1000 chars)") ok
time (mean ± σ)         range (min … max) 
  94.83 ns ±   0.49 ns    94.08 ns …  95.46 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:120 ("bench: warm cache position query (10000 chars)") ok
time (mean ± σ)         range (min … max) 
  94.74 ns ±   0.69 ns    93.99 ns …  96.23 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/fugue/tree_position_benchmark.mbt:20 ("bench: lv_to_position middle of 10K tree") ok
time (mean ± σ)         range (min … max) 
 535.80 µs ±   2.89 µs   531.35 µs … 539.14 µs  in 10 ×    188 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:2 ("jump - sequential append 1K") ok
time (mean ± σ)         range (min … max) 
 151.83 µs ± 934.54 ns   150.77 µs … 153.31 µs  in 10 ×    657 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:26 ("jump - concurrent insert into 1K doc") ok
time (mean ± σ)         range (min … max) 
 150.20 µs ± 413.21 ns   149.51 µs … 150.96 µs  in 10 ×    665 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:58 ("jump - concurrent insert into 10K doc") ok
time (mean ± σ)         range (min … max) 
   4.33 ms ± 105.50 µs     4.18 ms …   4.49 ms  in 10 ×     23 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:90 ("jump - degenerate chain remote insert") ok
time (mean ± σ)         range (min … max) 
 151.35 µs ± 611.13 ns   150.56 µs … 152.34 µs  in 10 ×    661 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:6 ("oplog - insert (100 ops)") ok
time (mean ± σ)         range (min … max) 
  48.92 µs ±   1.09 µs    48.17 µs …  51.62 µs  in 10 ×   1928 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:20 ("oplog - insert (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 573.91 µs ± 989.85 ns   572.11 µs … 575.37 µs  in 10 ×    174 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:34 ("oplog - insert and delete mix (100 ops)") ok
time (mean ± σ)         range (min … max) 
  73.06 µs ± 179.97 ns    72.86 µs …  73.44 µs  in 10 ×   1369 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:58 ("oplog - apply_remote (50 ops)") ok
time (mean ± σ)         range (min … max) 
  33.71 µs ± 123.37 ns    33.64 µs …  34.05 µs  in 10 ×   2962 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:79 ("oplog - get_op (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 130.08 ns ±   0.85 ns   129.13 ns … 131.55 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:97 ("oplog - get_frontier (single agent)") ok
time (mean ± σ)         range (min … max) 
  20.85 ns ±   0.40 ns    20.33 ns …  21.39 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:112 ("oplog - get_frontier (5 agents)") ok
time (mean ± σ)         range (min … max) 
  25.15 ns ±   0.29 ns    24.81 ns …  25.73 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:134 ("oplog - walk_and_collect (100 ops)") ok
time (mean ± σ)         range (min … max) 
   8.38 µs ±  95.13 ns     8.25 µs …   8.51 µs  in 10 ×  11811 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:150 ("oplog - walk_and_collect (concurrent)") ok
time (mean ± σ)         range (min … max) 
  15.67 µs ±  90.35 ns    15.56 µs …  15.80 µs  in 10 ×   6372 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:177 ("oplog - diff_and_collect (advance 20)") ok
time (mean ± σ)         range (min … max) 
   4.79 µs ±   8.41 ns     4.78 µs …   4.81 µs  in 10 ×  20775 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:202 ("oplog - walk_filtered (inserts only)") ok
time (mean ± σ)         range (min … max) 
   7.30 µs ±  38.09 ns     7.25 µs …   7.37 µs  in 10 ×  14359 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:233 ("oplog - sequential typing (500 chars)") ok
time (mean ± σ)         range (min … max) 
 263.05 µs ± 573.09 ns   262.28 µs … 263.84 µs  in 10 ×    379 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:249 ("oplog - random position inserts (100 ops)") ok
time (mean ± σ)         range (min … max) 
  47.90 µs ±  99.09 ns    47.74 µs …  48.10 µs  in 10 ×   2091 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:270 ("oplog - sequential typing (100000 chars)") ok
time (mean ± σ)         range (min … max) 
 157.08 ms ±  21.59 ms   127.35 ms … 189.66 ms  in 10 ×      1 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:287 ("oplog - diff_and_collect (100000 ops advance)") ok
time (mean ± σ)         range (min … max) 
  63.39 ms ±  16.48 ms    40.19 ms …  83.67 ms  in 10 ×      2 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:10 ("text - insert append (100 chars)") ok
time (mean ± σ)         range (min … max) 
  98.90 µs ± 235.93 ns    98.56 µs …  99.27 µs  in 10 ×    895 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:22 ("text - insert append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.30 ms ±  28.01 µs     1.28 ms …   1.36 ms  in 10 ×     79 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:35 ("text - insert prepend (100 chars)") ok
time (mean ± σ)         range (min … max) 
 161.76 µs ± 542.36 ns   160.82 µs … 162.55 µs  in 10 ×    620 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:51 ("text - delete (100 deletes from 100-char doc)") ok
time (mean ± σ)         range (min … max) 
 239.63 µs ± 816.91 ns   238.77 µs … 241.04 µs  in 10 ×    416 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:70 ("text - text() (100-char doc)") ok
time (mean ± σ)         range (min … max) 
  13.80 µs ±  63.08 ns    13.73 µs …  13.91 µs  in 10 ×   7199 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:83 ("text - text() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
 141.90 µs ±   1.08 µs   141.09 µs … 144.40 µs  in 10 ×    706 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:96 ("text - len() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
  12.48 ns ±   0.35 ns    12.14 ns …  13.12 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:113 ("text - sync export_all (100 ops)") ok
time (mean ± σ)         range (min … max) 
  92.71 ns ±   0.59 ns    92.03 ns …  94.10 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:126 ("text - sync export_all (1000 ops)") ok
time (mean ± σ)         range (min … max) 
  93.43 ns ±   0.30 ns    92.92 ns …  93.81 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:139 ("text - sync export_since (50-op delta, 1000-op base)") ok
time (mean ± σ)         range (min … max) 
  33.94 µs ± 157.81 ns    33.74 µs …  34.20 µs  in 10 ×   2928 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:156 ("text - sync apply (50 remote ops)") ok
time (mean ± σ)         range (min … max) 
  54.43 µs ± 233.40 ns    54.02 µs …  54.81 µs  in 10 ×   1826 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:171 ("text - sync apply (500 remote ops)") ok
time (mean ± σ)         range (min … max) 
 671.46 µs ±   3.22 µs   667.10 µs … 676.53 µs  in 10 ×    150 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:186 ("text - bidirectional sync (2 peers, 50 ops each)") ok
time (mean ± σ)         range (min … max) 
 113.75 µs ± 308.57 ns   113.30 µs … 114.12 µs  in 10 ×    878 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:216 ("text - checkout (midpoint of 100-op doc)") ok
time (mean ± σ)         range (min … max) 
  13.29 µs ±  32.18 ns    13.25 µs …  13.35 µs  in 10 ×   7507 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:233 ("text - checkout (midpoint of 1000-op doc)") ok
time (mean ± σ)         range (min … max) 
 159.78 µs ± 371.59 ns   159.32 µs … 160.28 µs  in 10 ×    624 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:256 ("text - undo record_insert (100 ops, 1 group)") ok
time (mean ± σ)         range (min … max) 
   2.09 µs ±  12.07 ns     2.09 µs …   2.13 µs  in 10 ×  47831 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:269 ("text - undo record_insert (100 ops, 100 groups)") ok
time (mean ± σ)         range (min … max) 
   2.41 µs ±  13.02 ns     2.39 µs …   2.43 µs  in 10 ×  41596 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:281 ("text - undo undo() (10-op group)") ok
time (mean ± σ)         range (min … max) 
  29.79 µs ±  59.12 ns    29.73 µs …  29.91 µs  in 10 ×   3314 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:295 ("text - undo undo() (50-op group)") ok
time (mean ± σ)         range (min … max) 
 462.61 µs ±   1.76 µs   460.36 µs … 465.60 µs  in 10 ×    217 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:309 ("text - undo undo+redo roundtrip (10-op group)") ok
time (mean ± σ)         range (min … max) 
  34.28 µs ± 193.36 ns    34.07 µs …  34.64 µs  in 10 ×   2899 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:324 ("text - undo 10 undo+redo cycles (10-op group)") ok
time (mean ± σ)         range (min … max) 
 286.83 µs ± 564.84 ns   286.04 µs … 287.78 µs  in 10 ×    348 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:17 ("cache - sequential append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.28 ms ±   3.34 µs     1.28 ms …   1.29 ms  in 10 ×     78 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:34 ("cache - alternating pos (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   3.15 ms ±  31.78 µs     3.10 ms …   3.19 ms  in 10 ×     32 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:52 ("cache - jump to pos 0 every 10 chars (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.98 ms ±   7.74 µs     1.97 ms …   1.99 ms  in 10 ×     51 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:71 ("cache - jump to middle every 10 chars (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   2.62 ms ±  25.18 µs     2.59 ms …   2.65 ms  in 10 ×     39 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:94 ("cache - single non-seq insert on 1000-char doc") ok
time (mean ± σ)         range (min … max) 
   7.11 µs ±   1.25 µs     6.20 µs …  10.15 µs  in 10 ×  16272 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:108 ("cache - single non-seq insert on 5000-char doc") ok
time (mean ± σ)         range (min … max) 
   7.03 µs ±   1.30 µs     5.99 µs …  10.07 µs  in 10 ×  15646 runs
Total tests: 105, passed: 105, failed: 0.

PR branch:

Registry index updated successfully
Symbols updated successfully
Using cached moonbitlang/quickcheck@0.11.2
Downloading dowdiness/btree@0.1.0
Downloading dowdiness/alga@0.3.0
Downloading dowdiness/order-tree@0.1.0
Using cached dowdiness/rle@0.2.0
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:21 ("merge - concurrent edits (2 agents x 10)") ok
time (mean ± σ)         range (min … max) 
  22.95 µs ± 779.82 ns    22.14 µs …  24.49 µs  in 10 ×   3916 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:59 ("merge - concurrent edits (2 agents x 50)") ok
time (mean ± σ)         range (min … max) 
 117.90 µs ± 627.44 ns   117.10 µs … 119.20 µs  in 10 ×    846 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:97 ("merge - concurrent edits (2 agents x 200)") ok
time (mean ± σ)         range (min … max) 
 529.86 µs ±   1.94 µs   525.95 µs … 532.35 µs  in 10 ×    190 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:135 ("merge - many agents (5 agents x 20)") ok
time (mean ± σ)         range (min … max) 
 151.02 µs ±   1.10 µs   150.31 µs … 153.94 µs  in 10 ×    663 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:184 ("merge - with deletes (50 inserts, 25 deletes)") ok
time (mean ± σ)         range (min … max) 
 114.62 µs ± 388.71 ns   114.13 µs … 115.32 µs  in 10 ×    871 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:230 ("merge - graph_diff advance (20 ops)") ok
time (mean ± σ)         range (min … max) 
  73.20 µs ± 539.05 ns    72.70 µs …  74.56 µs  in 10 ×   1332 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:303 ("merge - repeated small (10 iterations x 5 ops)") ok
time (mean ± σ)         range (min … max) 
 112.01 µs ± 282.25 ns   111.61 µs … 112.44 µs  in 10 ×    893 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:341 ("merge - retreat concurrent deletes (500 items, 50 deletes)") ok
time (mean ± σ)         range (min … max) 
 201.23 µs ± 769.49 ns   200.14 µs … 202.20 µs  in 10 ×    495 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:408 ("merge - context apply operations (50 ops)") ok
time (mean ± σ)         range (min … max) 
  37.91 µs ±  16.08 µs    26.52 µs …  74.10 µs  in 10 ×   2399 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:6 ("branch - checkout (10 ops)") ok
time (mean ± σ)         range (min … max) 
   3.69 µs ±  15.29 ns     3.66 µs …   3.71 µs  in 10 ×  27150 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:29 ("branch - checkout (100 ops)") ok
time (mean ± σ)         range (min … max) 
  26.70 µs ±  94.16 ns    26.57 µs …  26.82 µs  in 10 ×   3746 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:47 ("branch - checkout (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 362.84 µs ±   1.32 µs   360.72 µs … 364.58 µs  in 10 ×    273 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:65 ("branch - advance (10 new ops)") ok
time (mean ± σ)         range (min … max) 
  12.43 µs ±   4.69 µs     8.89 µs …  21.05 µs  in 10 ×   8842 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:91 ("branch - advance (100 new ops)") ok
time (mean ± σ)         range (min … max) 
  98.92 µs ±  52.37 µs    58.94 µs … 215.13 µs  in 10 ×   1217 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:117 ("branch - checkout with concurrent branches") ok
time (mean ± σ)         range (min … max) 
  35.08 µs ± 125.41 ns    34.94 µs …  35.27 µs  in 10 ×   2863 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:145 ("branch - checkout with deletes") ok
time (mean ± σ)         range (min … max) 
  37.60 µs ± 180.14 ns    37.38 µs …  37.84 µs  in 10 ×   2660 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:176 ("branch - repeated advance steady-state (10 iterations)") ok
time (mean ± σ)         range (min … max) 
  26.62 µs ± 636.90 ns    26.14 µs …  28.06 µs  in 10 ×   3668 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:220 ("branch - repeated advance with oplog mutations (10 iterations)") ok
time (mean ± σ)         range (min … max) 
   6.95 ms ±   3.36 ms     2.71 ms …  12.46 ms  in 10 ×     67 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:246 ("branch - to_text (100 chars)") ok
time (mean ± σ)         range (min … max) 
  11.19 µs ±  72.45 ns    11.10 µs …  11.31 µs  in 10 ×   8786 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:264 ("branch - to_text (1000 chars)") ok
time (mean ± σ)         range (min … max) 
 117.68 µs ±   3.62 µs   115.41 µs … 127.83 µs  in 10 ×    853 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:285 ("branch - single advance (1 new op)") ok
time (mean ± σ)         range (min … max) 
   3.89 µs ± 314.81 ns     3.71 µs …   4.68 µs  in 10 ×  26364 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:311 ("branch - single advance (50 new ops)") ok
time (mean ± σ)         range (min … max) 
  49.74 µs ±  26.91 µs    31.36 µs … 114.56 µs  in 10 ×   2122 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:342 ("branch - realistic typing (50 chars)") ok
time (mean ± σ)         range (min … max) 
  17.06 ms ±   5.40 ms     9.04 ms …  24.44 ms  in 10 ×     22 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:375 ("branch - concurrent merge scenario") ok
time (mean ± σ)         range (min … max) 
  14.40 µs ±   4.98 µs    12.28 µs …  28.49 µs  in 10 ×   7178 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:6 ("walker - linear history (10 ops)") ok
time (mean ± σ)         range (min … max) 
 642.32 ns ±   7.69 ns   632.66 ns … 652.08 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:22 ("walker - linear history (100 ops)") ok
time (mean ± σ)         range (min … max) 
   4.87 µs ±  20.32 ns     4.86 µs …   4.92 µs  in 10 ×  20637 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:38 ("walker - linear history (1000 ops)") ok
time (mean ± σ)         range (min … max) 
  43.18 µs ± 361.78 ns    42.95 µs …  44.18 µs  in 10 ×   2311 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:54 ("walker - concurrent branches (2 agents x 50)") ok
time (mean ± σ)         range (min … max) 
   6.01 µs ±  11.07 ns     5.99 µs …   6.03 µs  in 10 ×  16671 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:79 ("walker - concurrent branches (5 agents x 20)") ok
time (mean ± σ)         range (min … max) 
   5.94 µs ±  12.82 ns     5.92 µs …   5.96 µs  in 10 ×  16910 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:99 ("walker - diamond pattern (50 diamonds)") ok
time (mean ± σ)         range (min … max) 
   8.02 µs ±  18.87 ns     7.98 µs …   8.05 µs  in 10 ×  12530 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:121 ("walker - diff advance only (10 new ops)") ok
time (mean ± σ)         range (min … max) 
   3.41 µs ±  18.98 ns     3.40 µs …   3.46 µs  in 10 ×  28754 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:145 ("walker - diff with concurrent branches") ok
time (mean ± σ)         range (min … max) 
   5.51 µs ±   8.47 ns     5.49 µs …   5.52 µs  in 10 ×  18170 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:176 ("walker - large history (10000 ops)") ok
time (mean ± σ)         range (min … max) 
 457.10 µs ±   2.13 µs   454.08 µs … 460.73 µs  in 10 ×    217 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:196 ("walker - linear history (100000 ops)") ok
time (mean ± σ)         range (min … max) 
   7.10 ms ±  87.00 µs     7.00 ms …   7.24 ms  in 10 ×     15 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:213 ("walker - concurrent branches (100000 ops, 5 agents)") ok
time (mean ± σ)         range (min … max) 
  24.66 ms ±   2.87 ms    22.69 ms …  30.25 ms  in 10 ×      4 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:6 ("version_vector - create (1 agent)") ok
time (mean ± σ)         range (min … max) 
  54.54 ns ±   0.44 ns    54.05 ns …  55.37 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:15 ("version_vector - create (5 agents)") ok
time (mean ± σ)         range (min … max) 
 245.54 ns ±   0.45 ns   245.05 ns … 246.43 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:29 ("version_vector - create (20 agents)") ok
time (mean ± σ)         range (min … max) 
   1.54 µs ±   2.26 ns     1.53 µs …   1.54 µs  in 10 ×  65030 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:42 ("version_vector - compare equal (5 agents)") ok
time (mean ± σ)         range (min … max) 
 315.74 ns ±   0.65 ns   314.77 ns … 316.84 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:63 ("version_vector - compare <= (5 agents)") ok
time (mean ± σ)         range (min … max) 
 149.26 ns ±   0.52 ns   148.75 ns … 150.29 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:84 ("version_vector - compare <= (20 agents)") ok
time (mean ± σ)         range (min … max) 
 631.41 ns ±  11.39 ns   615.81 ns … 644.78 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:100 ("version_vector - merge (5 agents)") ok
time (mean ± σ)         range (min … max) 
 423.25 ns ±   3.62 ns   421.29 ns … 433.23 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:118 ("version_vector - merge (20 agents)") ok
time (mean ± σ)         range (min … max) 
   2.40 µs ±   6.99 ns     2.39 µs …   2.41 µs  in 10 ×  41852 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:134 ("version_vector - includes (5 agents)") ok
time (mean ± σ)         range (min … max) 
 237.08 ns ±   1.30 ns   235.58 ns … 239.17 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:153 ("version_vector - concurrent (5 agents)") ok
time (mean ± σ)         range (min … max) 
 159.97 ns ±   0.77 ns   159.09 ns … 161.13 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:170 ("version_vector - from_frontier (10 ops)") ok
time (mean ± σ)         range (min … max) 
 563.63 ns ±   0.78 ns   562.60 ns … 564.99 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:186 ("version_vector - from_frontier (100 ops, 5 agents)") ok
time (mean ± σ)         range (min … max) 
   4.23 µs ±   7.26 ns     4.22 µs …   4.24 µs  in 10 ×  23693 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:206 ("version_vector - to_frontier (5 agents)") ok
time (mean ± σ)         range (min … max) 
 240.87 ns ±   0.53 ns   239.91 ns … 241.61 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:230 ("version_vector - roundtrip (5 agents)") ok
time (mean ± σ)         range (min … max) 
   4.51 µs ±   7.29 ns     4.50 µs …   4.52 µs  in 10 ×  22119 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:251 ("version_vector - agents (5 agents)") ok
time (mean ± σ)         range (min … max) 
  67.49 ns ±   0.47 ns    66.67 ns …  68.22 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:266 ("version_vector - length (20 agents)") ok
time (mean ± σ)         range (min … max) 
  12.53 ns ±   0.40 ns    12.20 ns …  13.26 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:20 ("bench: cache invalidate + position query (1000 chars)") ok
time (mean ± σ)         range (min … max) 
 187.47 µs ±   1.39 µs   185.89 µs … 189.94 µs  in 10 ×    494 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:31 ("bench: cache invalidate + position query (5000 chars)") ok
time (mean ± σ)         range (min … max) 
   2.89 ms ±  67.79 µs     2.81 ms …   3.04 ms  in 10 ×     34 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:41 ("bench: cache invalidate + position query (10000 chars)") ok
time (mean ± σ)         range (min … max) 
   9.44 ms ± 368.29 µs     9.09 ms …  10.15 ms  in 10 ×     11 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:57 ("bench: 10 remote inserts + queries (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
   3.56 ms ±  76.55 µs     3.48 ms …   3.69 ms  in 10 ×     26 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:84 ("bench: 10 remote inserts + queries (5000-char doc)") ok
time (mean ± σ)         range (min … max) 
  31.96 ms ± 832.02 µs    31.03 ms …  33.53 ms  in 10 ×      4 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:113 ("bench: warm cache position query (1000 chars)") ok
time (mean ± σ)         range (min … max) 
  93.68 ns ±   0.46 ns    93.08 ns …  94.63 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:120 ("bench: warm cache position query (10000 chars)") ok
time (mean ± σ)         range (min … max) 
  92.17 ns ±   0.37 ns    91.61 ns …  92.66 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/fugue/tree_position_benchmark.mbt:20 ("bench: lv_to_position middle of 10K tree") ok
time (mean ± σ)         range (min … max) 
 531.76 µs ±   1.72 µs   528.76 µs … 533.86 µs  in 10 ×    190 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:2 ("jump - sequential append 1K") ok
time (mean ± σ)         range (min … max) 
 151.01 µs ± 972.78 ns   149.81 µs … 152.86 µs  in 10 ×    661 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:26 ("jump - concurrent insert into 1K doc") ok
time (mean ± σ)         range (min … max) 
 147.53 µs ± 369.58 ns   146.91 µs … 148.05 µs  in 10 ×    678 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:58 ("jump - concurrent insert into 10K doc") ok
time (mean ± σ)         range (min … max) 
   4.30 ms ± 106.12 µs     4.14 ms …   4.45 ms  in 10 ×     24 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:90 ("jump - degenerate chain remote insert") ok
time (mean ± σ)         range (min … max) 
 148.24 µs ± 426.13 ns   147.54 µs … 148.84 µs  in 10 ×    675 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:6 ("oplog - insert (100 ops)") ok
time (mean ± σ)         range (min … max) 
  47.43 µs ±   1.12 µs    46.56 µs …  50.09 µs  in 10 ×   1976 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:20 ("oplog - insert (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 561.14 µs ±   4.49 µs   556.10 µs … 567.96 µs  in 10 ×    180 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:34 ("oplog - insert and delete mix (100 ops)") ok
time (mean ± σ)         range (min … max) 
  68.39 µs ± 167.99 ns    68.16 µs …  68.63 µs  in 10 ×   1470 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:58 ("oplog - apply_remote (50 ops)") ok
time (mean ± σ)         range (min … max) 
  32.69 µs ± 105.19 ns    32.59 µs …  32.97 µs  in 10 ×   3064 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:79 ("oplog - get_op (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 123.19 ns ±   0.51 ns   122.58 ns … 123.91 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:97 ("oplog - get_frontier (single agent)") ok
time (mean ± σ)         range (min … max) 
  20.38 ns ±   0.38 ns    19.87 ns …  21.00 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:112 ("oplog - get_frontier (5 agents)") ok
time (mean ± σ)         range (min … max) 
  25.98 ns ±   0.29 ns    25.43 ns …  26.32 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:134 ("oplog - walk_and_collect (100 ops)") ok
time (mean ± σ)         range (min … max) 
   8.39 µs ±  77.99 ns     8.28 µs …   8.53 µs  in 10 ×  11790 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:150 ("oplog - walk_and_collect (concurrent)") ok
time (mean ± σ)         range (min … max) 
  15.67 µs ± 121.27 ns    15.52 µs …  15.84 µs  in 10 ×   6295 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:177 ("oplog - diff_and_collect (advance 20)") ok
time (mean ± σ)         range (min … max) 
   4.81 µs ±  30.44 ns     4.78 µs …   4.89 µs  in 10 ×  20771 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:202 ("oplog - walk_filtered (inserts only)") ok
time (mean ± σ)         range (min … max) 
   7.37 µs ±  10.43 ns     7.36 µs …   7.39 µs  in 10 ×  14213 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:233 ("oplog - sequential typing (500 chars)") ok
time (mean ± σ)         range (min … max) 
 257.13 µs ± 964.77 ns   256.07 µs … 258.58 µs  in 10 ×    389 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:249 ("oplog - random position inserts (100 ops)") ok
time (mean ± σ)         range (min … max) 
  47.03 µs ± 739.28 ns    46.55 µs …  48.56 µs  in 10 ×   2148 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:270 ("oplog - sequential typing (100000 chars)") ok
time (mean ± σ)         range (min … max) 
 170.23 ms ±  26.27 ms   131.01 ms … 195.07 ms  in 10 ×      1 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:287 ("oplog - diff_and_collect (100000 ops advance)") ok
time (mean ± σ)         range (min … max) 
  64.85 ms ±  13.88 ms    46.45 ms …  80.46 ms  in 10 ×      2 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:10 ("text - insert append (100 chars)") ok
time (mean ± σ)         range (min … max) 
 100.03 µs ± 289.83 ns    99.78 µs … 100.48 µs  in 10 ×    908 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:22 ("text - insert append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.31 ms ±  17.59 µs     1.29 ms …   1.33 ms  in 10 ×     78 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:35 ("text - insert prepend (100 chars)") ok
time (mean ± σ)         range (min … max) 
 162.14 µs ± 456.43 ns   161.39 µs … 162.72 µs  in 10 ×    613 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:51 ("text - delete (100 deletes from 100-char doc)") ok
time (mean ± σ)         range (min … max) 
 241.15 µs ±   1.01 µs   239.73 µs … 242.65 µs  in 10 ×    413 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:70 ("text - text() (100-char doc)") ok
time (mean ± σ)         range (min … max) 
  13.94 µs ±  64.26 ns    13.86 µs …  14.02 µs  in 10 ×   7170 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:83 ("text - text() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
 144.12 µs ± 723.66 ns   142.82 µs … 145.01 µs  in 10 ×    693 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:96 ("text - len() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
  12.75 ns ±   0.38 ns    12.39 ns …  13.45 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:113 ("text - sync export_all (100 ops)") ok
time (mean ± σ)         range (min … max) 
  93.66 ns ±   0.49 ns    92.99 ns …  94.43 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:126 ("text - sync export_all (1000 ops)") ok
time (mean ± σ)         range (min … max) 
  94.86 ns ±   0.36 ns    94.41 ns …  95.51 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:139 ("text - sync export_since (50-op delta, 1000-op base)") ok
time (mean ± σ)         range (min … max) 
  34.78 µs ± 229.64 ns    34.50 µs …  35.11 µs  in 10 ×   2889 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:156 ("text - sync apply (50 remote ops)") ok
time (mean ± σ)         range (min … max) 
  55.78 µs ± 407.56 ns    55.39 µs …  56.73 µs  in 10 ×   1793 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:171 ("text - sync apply (500 remote ops)") ok
time (mean ± σ)         range (min … max) 
 685.02 µs ±   6.03 µs   678.03 µs … 696.01 µs  in 10 ×    146 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:186 ("text - bidirectional sync (2 peers, 50 ops each)") ok
time (mean ± σ)         range (min … max) 
 116.03 µs ± 294.54 ns   115.53 µs … 116.45 µs  in 10 ×    858 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:216 ("text - checkout (midpoint of 100-op doc)") ok
time (mean ± σ)         range (min … max) 
  13.36 µs ±  81.41 ns    13.24 µs …  13.48 µs  in 10 ×   7500 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:233 ("text - checkout (midpoint of 1000-op doc)") ok
time (mean ± σ)         range (min … max) 
 160.18 µs ± 460.72 ns   159.45 µs … 160.72 µs  in 10 ×    625 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:256 ("text - undo record_insert (100 ops, 1 group)") ok
time (mean ± σ)         range (min … max) 
   2.23 µs ±   6.83 ns     2.22 µs …   2.25 µs  in 10 ×  44721 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:269 ("text - undo record_insert (100 ops, 100 groups)") ok
time (mean ± σ)         range (min … max) 
   2.62 µs ±  14.50 ns     2.60 µs …   2.64 µs  in 10 ×  38119 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:281 ("text - undo undo() (10-op group)") ok
time (mean ± σ)         range (min … max) 
  30.44 µs ± 176.06 ns    30.21 µs …  30.67 µs  in 10 ×   3296 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:295 ("text - undo undo() (50-op group)") ok
time (mean ± σ)         range (min … max) 
 471.53 µs ±   4.38 µs   467.65 µs … 481.91 µs  in 10 ×    214 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:309 ("text - undo undo+redo roundtrip (10-op group)") ok
time (mean ± σ)         range (min … max) 
  34.49 µs ± 155.93 ns    34.27 µs …  34.75 µs  in 10 ×   2905 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:324 ("text - undo 10 undo+redo cycles (10-op group)") ok
time (mean ± σ)         range (min … max) 
 297.77 µs ±  17.52 µs   287.95 µs … 333.62 µs  in 10 ×    345 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:17 ("cache - sequential append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.33 ms ±  13.21 µs     1.30 ms …   1.34 ms  in 10 ×     76 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:34 ("cache - alternating pos (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   3.27 ms ±  52.33 µs     3.19 ms …   3.37 ms  in 10 ×     31 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:52 ("cache - jump to pos 0 every 10 chars (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   2.07 ms ±  29.73 µs     2.03 ms …   2.14 ms  in 10 ×     50 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:71 ("cache - jump to middle every 10 chars (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   2.69 ms ±  20.30 µs     2.67 ms …   2.73 ms  in 10 ×     38 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:94 ("cache - single non-seq insert on 1000-char doc") ok
time (mean ± σ)         range (min … max) 
   6.98 µs ±   1.45 µs     5.83 µs …  10.53 µs  in 10 ×  15731 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:108 ("cache - single non-seq insert on 5000-char doc") ok
time (mean ± σ)         range (min … max) 
   6.80 µs ±   1.09 µs     6.03 µs …   9.79 µs  in 10 ×  14144 runs
Total tests: 105, passed: 105, failed: 0.

Benchmarks run with --release flag

@dowdiness dowdiness merged commit 793a7f6 into main May 31, 2026
27 checks passed
@dowdiness dowdiness deleted the feat/lambda-references-rename branch May 31, 2026 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant