Skip to content

docs: update agent model routing guidance#685

Merged
dowdiness merged 1 commit into
mainfrom
chore/update-agent-model-routing
Jun 16, 2026
Merged

docs: update agent model routing guidance#685
dowdiness merged 1 commit into
mainfrom
chore/update-agent-model-routing

Conversation

@dowdiness

Copy link
Copy Markdown
Owner

Summary

  • replace Claude-era Opus/Sonnet/Haiku routing language with pi subagent routing
  • document MoonBit-specific scout/planner/reviewer usage
  • point current model assignments to global pi guidance to avoid duplication

Validation

  • git diff --check

@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 e9f63cb Commit Preview URL

Branch Preview URL
Jun 16 2026, 01:15 PM

@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown

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 23 minutes and 5 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ 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: 06c17046-72f4-46f9-a614-0fca552d2490

📥 Commits

Reviewing files that changed from the base of the PR and between 3611276 and e9f63cb.

📒 Files selected for processing (1)
  • AGENTS.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/update-agent-model-routing

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.

@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) 
  59.96 µs ±   1.37 µs    58.85 µs …  62.91 µs  in 10 ×   1603 runs
[dowdiness/btree] bench btree_benchmark.mbt:84 ("bench: build via from_sorted (100)") ok
time (mean ± σ)         range (min … max) 
   2.88 µs ±  16.74 ns     2.86 µs …   2.92 µs  in 10 ×  36466 runs
[dowdiness/btree] bench btree_benchmark.mbt:91 ("bench: build via inserts (1000)") ok
time (mean ± σ)         range (min … max) 
 939.57 µs ±   7.40 µs   928.77 µs … 950.80 µs  in 10 ×     99 runs
[dowdiness/btree] bench btree_benchmark.mbt:96 ("bench: build via from_sorted (1000)") ok
time (mean ± σ)         range (min … max) 
  26.47 µs ± 136.60 ns    26.33 µs …  26.73 µs  in 10 ×   3833 runs
[dowdiness/btree] bench btree_benchmark.mbt:103 ("bench: build via inserts (10000)") ok
time (mean ± σ)         range (min … max) 
  14.51 ms ± 156.66 µs    14.32 ms …  14.69 ms  in 10 ×      7 runs
[dowdiness/btree] bench btree_benchmark.mbt:108 ("bench: build via from_sorted (10000)") ok
time (mean ± σ)         range (min … max) 
 493.77 µs ±   6.03 µs   485.89 µs … 502.76 µs  in 10 ×    200 runs
[dowdiness/btree] bench btree_benchmark.mbt:115 ("bench: delete_range middle 10% (1000)") ok
time (mean ± σ)         range (min … max) 
  51.13 µs ± 502.68 ns    50.54 µs …  52.15 µs  in 10 ×   1886 runs
[dowdiness/btree] bench btree_benchmark.mbt:124 ("bench: delete_range middle 50% (1000)") ok
time (mean ± σ)         range (min … max) 
  46.25 µs ± 142.37 ns    46.10 µs …  46.57 µs  in 10 ×   2160 runs
[dowdiness/btree] bench btree_benchmark.mbt:133 ("bench: delete_range middle 10% (10000)") ok
time (mean ± σ)         range (min … max) 
 647.76 µs ±   3.27 µs   644.68 µs … 654.10 µs  in 10 ×    155 runs
[dowdiness/btree] bench btree_benchmark.mbt:142 ("bench: delete_range middle 50% (10000)") ok
time (mean ± σ)         range (min … max) 
 661.75 µs ±   7.69 µs   653.99 µs … 673.89 µs  in 10 ×    153 runs
[dowdiness/visualizer] bench incr_tap_benchmark.mbt:44 ("bench/incr_tap/snapshot_fanout_256") ok
time (mean ± σ)         range (min … max) 
  57.67 µs ±   1.19 µs    56.79 µs …  60.93 µs  in 10 ×   1655 runs
[dowdiness/visualizer] bench incr_tap_benchmark.mbt:51 ("bench/incr_tap/snapshot_fanout_2048") ok
time (mean ± σ)         range (min … max) 
 623.31 µs ±   6.10 µs   615.42 µs … 634.57 µs  in 10 ×    162 runs
[dowdiness/visualizer] bench incr_tap_benchmark.mbt:58 ("bench/incr_tap/to_visual_graph_fanout_256") ok
time (mean ± σ)         range (min … max) 
 116.55 µs ± 288.39 ns   116.01 µs … 116.95 µs  in 10 ×    856 runs
[dowdiness/visualizer] bench incr_tap_benchmark.mbt:64 ("bench/incr_tap/to_visual_graph_fanout_2048") ok
time (mean ± σ)         range (min … max) 
   1.15 ms ±  10.93 µs     1.13 ms …   1.16 ms  in 10 ×     87 runs
Total tests: 14, passed: 14, failed: 0. [wasm-gc]
node count: 402
node count: 802
node count: 2002
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:32 ("viewnode serialization (100 defs)") ok
time (mean ± σ)         range (min … max) 
   1.47 ms ±  10.86 µs     1.45 ms …   1.48 ms  in 10 ×     70 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:43 ("viewnode serialization (200 defs)") ok
time (mean ± σ)         range (min … max) 
   3.42 ms ±  49.84 µs     3.34 ms …   3.49 ms  in 10 ×     30 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:54 ("viewnode serialization (500 defs)") ok
time (mean ± σ)         range (min … max) 
  15.81 ms ± 738.67 µs    15.03 ms …  17.11 ms  in 10 ×      7 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:65 ("compute_view_patches (100 defs, single edit)") ok
time (mean ± σ)         range (min … max) 
   2.53 ms ±  72.35 µs     2.42 ms …   2.64 ms  in 10 ×     40 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:98 ("json object - incremental keystroke (20 members)") ok
time (mean ± σ)         range (min … max) 
   1.05 ms ±  52.40 µs   971.91 µs …   1.12 ms  in 10 ×     87 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:103 ("json object - incremental keystroke (100 members)") ok
time (mean ± σ)         range (min … max) 
   4.17 ms ±  70.35 µs     4.08 ms …   4.28 ms  in 10 ×     23 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:108 ("json object - incremental keystroke (500 members)") ok
time (mean ± σ)         range (min … max) 
  27.21 ms ± 406.93 µs    26.65 ms …  27.83 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.44 ms ± 890.45 µs    60.33 ms …  62.75 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) 
 807.20 µs ± 167.76 µs   581.30 µs …   1.04 ms  in 10 ×    204 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:123 ("json array - incremental keystroke (100 elements)") ok
time (mean ± σ)         range (min … max) 
   2.01 ms ±  60.07 µs     1.94 ms …   2.12 ms  in 10 ×     53 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:128 ("json array - incremental keystroke (500 elements)") ok
time (mean ± σ)         range (min … max) 
  13.17 ms ± 261.95 µs    12.81 ms …  13.59 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 ± 575.85 µs    32.35 ms …  33.96 ms  in 10 ×      3 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:95 ("text intent dispatch - direct call (100 members)") ok
time (mean ± σ)         range (min … max) 
   3.84 ms ±  38.83 µs     3.79 ms …   3.90 ms  in 10 ×     26 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:100 ("text intent dispatch - caps field (100 members)") ok
time (mean ± σ)         range (min … max) 
   3.82 ms ±  24.80 µs     3.79 ms …   3.86 ms  in 10 ×     27 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:105 ("text intent dispatch - caps optional field (100 members)") ok
time (mean ± σ)         range (min … max) 
   3.76 ms ±  22.04 µs     3.73 ms …   3.79 ms  in 10 ×     27 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:110 ("text intent dispatch - direct call (1000 members)") ok
time (mean ± σ)         range (min … max) 
  48.56 ms ±   1.90 ms    47.31 ms …  53.76 ms  in 10 ×      3 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:115 ("text intent dispatch - caps field (1000 members)") ok
time (mean ± σ)         range (min … max) 
  48.59 ms ±   1.69 ms    47.41 ms …  53.09 ms  in 10 ×      3 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:120 ("text intent dispatch - caps optional field (1000 members)") ok
time (mean ± σ)         range (min … max) 
  48.25 ms ± 571.21 µs    47.59 ms …  49.17 ms  in 10 ×      3 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:143 ("isolated dispatch - direct call x1000") ok
time (mean ± σ)         range (min … max) 
 686.23 ns ±   7.78 ns   677.63 ns … 700.19 ns  in 10 × 100000 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:154 ("isolated dispatch - caps field x1000") ok
time (mean ± σ)         range (min … max) 
 714.73 ns ±   5.15 ns   708.29 ns … 722.37 ns  in 10 × 100000 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:169 ("isolated dispatch - caps optional field x1000") ok
time (mean ± σ)         range (min … max) 
 729.46 ns ±  15.42 ns   719.35 ns … 771.43 ns  in 10 × 100000 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:38 ("tree refresh unchanged (20 defs)") ok
time (mean ± σ)         range (min … max) 
   5.67 µs ±   7.17 ns     5.66 µs …   5.68 µs  in 10 ×  16935 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:48 ("tree refresh unchanged (80 defs)") ok
time (mean ± σ)         range (min … max) 
  22.94 µs ±  60.22 ns    22.88 µs …  23.02 µs  in 10 ×   4297 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:58 ("tree refresh unchanged (320 defs)") ok
time (mean ± σ)         range (min … max) 
 115.08 µs ±   4.15 µs   112.35 µs … 123.02 µs  in 10 ×    878 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:68 ("tree refresh unchanged (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 442.22 µs ±   3.09 µs   436.99 µs … 445.59 µs  in 10 ×    227 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:80 ("tree refresh 1 changed (20 defs)") ok
time (mean ± σ)         range (min … max) 
  11.41 µs ±  37.49 ns    11.36 µs …  11.46 µs  in 10 ×   8801 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:95 ("tree refresh 1 changed (320 defs)") ok
time (mean ± σ)         range (min … max) 
 219.65 µs ±   1.33 µs   217.51 µs … 221.17 µs  in 10 ×    456 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:110 ("tree refresh 1 changed (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 786.34 µs ±   7.42 µs   774.23 µs … 796.44 µs  in 10 ×    126 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:125 ("tree refresh 1 changed (80 defs)") ok
time (mean ± σ)         range (min … max) 
  46.90 µs ± 148.94 ns    46.73 µs …  47.25 µs  in 10 ×   2140 runs
[dowdiness/canopy] bench projection/reconcile_lcs_benchmark_wbtest.mbt:61 ("reconcile wide-siblings (20 defs)") ok
time (mean ± σ)         range (min … max) 
  11.32 µs ±  33.81 ns    11.28 µs …  11.36 µs  in 10 ×   8833 runs
[dowdiness/canopy] bench projection/reconcile_lcs_benchmark_wbtest.mbt:66 ("reconcile wide-siblings (80 defs)") ok
time (mean ± σ)         range (min … max) 
 102.82 µs ± 141.75 ns   102.62 µs … 103.05 µs  in 10 ×    973 runs
[dowdiness/canopy] bench projection/reconcile_lcs_benchmark_wbtest.mbt:71 ("reconcile wide-siblings (320 defs)") ok
time (mean ± σ)         range (min … max) 
   1.38 ms ±  32.39 µs     1.36 ms …   1.45 ms  in 10 ×     74 runs
[dowdiness/canopy] bench projection/reconcile_lcs_benchmark_wbtest.mbt:76 ("reconcile wide-siblings (1000 defs)") ok
time (mean ± σ)         range (min … max) 
  13.58 ms ± 101.45 µs    13.39 ms …  13.69 ms  in 10 ×      8 runs
Total tests: 33, passed: 33, failed: 0. [js]
Warning: no test entry found.
Total tests: 0, passed: 0, failed: 0. [native]

PR branch:

Registry index updated successfully
Symbols updated successfully
Using cached moonbitlang/x@0.4.38
Using cached moonbitlang/quickcheck@0.14.0
Using cached moonbitlang/async@0.16.8
Downloading dowdiness/incr@0.9.0
Downloading dowdiness/rle@0.2.2
[dowdiness/btree] bench btree_benchmark.mbt:79 ("bench: build via inserts (100)") ok
time (mean ± σ)         range (min … max) 
  59.75 µs ± 682.26 ns    58.92 µs …  61.30 µ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.91 µs ±  47.17 ns     2.88 µs …   3.02 µs  in 10 ×  38618 runs
[dowdiness/btree] bench btree_benchmark.mbt:91 ("bench: build via inserts (1000)") ok
time (mean ± σ)         range (min … max) 
 948.27 µs ±  16.83 µs   934.59 µs … 993.63 µs  in 10 ×     98 runs
[dowdiness/btree] bench btree_benchmark.mbt:96 ("bench: build via from_sorted (1000)") ok
time (mean ± σ)         range (min … max) 
  25.49 µs ± 228.17 ns    25.20 µs …  25.90 µs  in 10 ×   3907 runs
[dowdiness/btree] bench btree_benchmark.mbt:103 ("bench: build via inserts (10000)") ok
time (mean ± σ)         range (min … max) 
  14.66 ms ± 142.26 µs    14.43 ms …  14.83 ms  in 10 ×      7 runs
[dowdiness/btree] bench btree_benchmark.mbt:108 ("bench: build via from_sorted (10000)") ok
time (mean ± σ)         range (min … max) 
 496.30 µs ±   8.08 µs   486.22 µs … 508.85 µs  in 10 ×    204 runs
[dowdiness/btree] bench btree_benchmark.mbt:115 ("bench: delete_range middle 10% (1000)") ok
time (mean ± σ)         range (min … max) 
  51.12 µs ± 610.50 ns    50.43 µs …  52.28 µs  in 10 ×   1858 runs
[dowdiness/btree] bench btree_benchmark.mbt:124 ("bench: delete_range middle 50% (1000)") ok
time (mean ± σ)         range (min … max) 
  45.85 µs ± 259.35 ns    45.52 µs …  46.22 µs  in 10 ×   2186 runs
[dowdiness/btree] bench btree_benchmark.mbt:133 ("bench: delete_range middle 10% (10000)") ok
time (mean ± σ)         range (min … max) 
 638.83 µs ±   3.82 µs   633.10 µs … 646.98 µs  in 10 ×    158 runs
[dowdiness/btree] bench btree_benchmark.mbt:142 ("bench: delete_range middle 50% (10000)") ok
time (mean ± σ)         range (min … max) 
 669.77 µs ±  24.24 µs   642.15 µs … 710.45 µs  in 10 ×    154 runs
[dowdiness/visualizer] bench incr_tap_benchmark.mbt:44 ("bench/incr_tap/snapshot_fanout_256") ok
time (mean ± σ)         range (min … max) 
  57.55 µs ±   1.55 µs    56.34 µs …  61.16 µs  in 10 ×   1654 runs
[dowdiness/visualizer] bench incr_tap_benchmark.mbt:51 ("bench/incr_tap/snapshot_fanout_2048") ok
time (mean ± σ)         range (min … max) 
 588.38 µs ±  12.10 µs   575.57 µs … 608.49 µs  in 10 ×    174 runs
[dowdiness/visualizer] bench incr_tap_benchmark.mbt:58 ("bench/incr_tap/to_visual_graph_fanout_256") ok
time (mean ± σ)         range (min … max) 
 117.98 µs ± 673.86 ns   117.25 µs … 119.34 µs  in 10 ×    857 runs
[dowdiness/visualizer] bench incr_tap_benchmark.mbt:64 ("bench/incr_tap/to_visual_graph_fanout_2048") ok
time (mean ± σ)         range (min … max) 
   1.14 ms ±  11.11 µs     1.12 ms …   1.16 ms  in 10 ×     89 runs
Total tests: 14, passed: 14, failed: 0. [wasm-gc]
node count: 402
node count: 802
node count: 2002
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:32 ("viewnode serialization (100 defs)") ok
time (mean ± σ)         range (min … max) 
   1.46 ms ±  46.73 µs     1.43 ms …   1.57 ms  in 10 ×     70 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:43 ("viewnode serialization (200 defs)") ok
time (mean ± σ)         range (min … max) 
   3.30 ms ±  54.22 µs     3.21 ms …   3.38 ms  in 10 ×     31 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:54 ("viewnode serialization (500 defs)") ok
time (mean ± σ)         range (min … max) 
  15.35 ms ± 981.90 µs    14.03 ms …  16.78 ms  in 10 ×      7 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:65 ("compute_view_patches (100 defs, single edit)") ok
time (mean ± σ)         range (min … max) 
   1.43 ms ±  53.85 µs     1.35 ms …   1.49 ms  in 10 ×     70 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:98 ("json object - incremental keystroke (20 members)") ok
time (mean ± σ)         range (min … max) 
   1.02 ms ±  47.02 µs   955.60 µs …   1.09 ms  in 10 ×     86 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:103 ("json object - incremental keystroke (100 members)") ok
time (mean ± σ)         range (min … max) 
   4.06 ms ±  36.49 µs     4.03 ms …   4.14 ms  in 10 ×     24 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:108 ("json object - incremental keystroke (500 members)") ok
time (mean ± σ)         range (min … max) 
  26.89 ms ± 251.80 µs    26.59 ms …  27.31 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) 
  62.23 ms ± 621.17 µs    61.31 ms …  62.95 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) 
 783.67 µs ± 157.29 µs   562.60 µs …   1.00 ms  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.95 ms ±  60.02 µs     1.87 ms …   2.05 ms  in 10 ×     54 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:128 ("json array - incremental keystroke (500 elements)") ok
time (mean ± σ)         range (min … max) 
  12.94 ms ±  74.87 µs    12.84 ms …  13.08 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.99 ms ±   3.22 ms    32.75 ms …  43.13 ms  in 10 ×      4 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:95 ("text intent dispatch - direct call (100 members)") ok
time (mean ± σ)         range (min … max) 
   3.89 ms ±  48.73 µs     3.84 ms …   3.97 ms  in 10 ×     27 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:100 ("text intent dispatch - caps field (100 members)") ok
time (mean ± σ)         range (min … max) 
   3.84 ms ±  27.57 µs     3.80 ms …   3.89 ms  in 10 ×     27 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:105 ("text intent dispatch - caps optional field (100 members)") ok
time (mean ± σ)         range (min … max) 
   3.85 ms ± 103.94 µs     3.74 ms …   4.06 ms  in 10 ×     27 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:110 ("text intent dispatch - direct call (1000 members)") ok
time (mean ± σ)         range (min … max) 
  50.81 ms ±   1.91 ms    49.37 ms …  55.72 ms  in 10 ×      3 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:115 ("text intent dispatch - caps field (1000 members)") ok
time (mean ± σ)         range (min … max) 
  50.93 ms ± 773.28 µs    49.88 ms …  52.08 ms  in 10 ×      3 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:120 ("text intent dispatch - caps optional field (1000 members)") ok
time (mean ± σ)         range (min … max) 
  49.97 ms ±   2.10 ms    48.41 ms …  55.49 ms  in 10 ×      3 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:143 ("isolated dispatch - direct call x1000") ok
time (mean ± σ)         range (min … max) 
 679.71 ns ±   5.31 ns   672.38 ns … 684.63 ns  in 10 × 100000 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:154 ("isolated dispatch - caps field x1000") ok
time (mean ± σ)         range (min … max) 
 667.17 ns ±   3.59 ns   660.19 ns … 672.29 ns  in 10 × 100000 runs
[dowdiness/canopy] bench lang/json/companion/dispatch_benchmark.mbt:169 ("isolated dispatch - caps optional field x1000") ok
time (mean ± σ)         range (min … max) 
 670.65 ns ±   3.66 ns   665.75 ns … 676.16 ns  in 10 × 100000 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:38 ("tree refresh unchanged (20 defs)") ok
time (mean ± σ)         range (min … max) 
   5.60 µs ±  12.85 ns     5.58 µs …   5.62 µs  in 10 ×  17161 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:48 ("tree refresh unchanged (80 defs)") ok
time (mean ± σ)         range (min … max) 
  24.34 µs ±  95.30 ns    24.24 µs …  24.49 µs  in 10 ×   3890 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:58 ("tree refresh unchanged (320 defs)") ok
time (mean ± σ)         range (min … max) 
 105.22 µs ±   2.07 µs   103.85 µs … 110.66 µs  in 10 ×    945 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:68 ("tree refresh unchanged (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 478.18 µs ±   2.94 µs   474.19 µs … 482.21 µs  in 10 ×    208 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:80 ("tree refresh 1 changed (20 defs)") ok
time (mean ± σ)         range (min … max) 
  10.92 µs ±  89.39 ns    10.85 µs …  11.11 µs  in 10 ×   9173 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:95 ("tree refresh 1 changed (320 defs)") ok
time (mean ± σ)         range (min … max) 
 214.28 µs ±   1.16 µs   212.61 µs … 216.06 µs  in 10 ×    466 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:110 ("tree refresh 1 changed (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 795.76 µs ±   3.91 µs   791.17 µs … 800.91 µs  in 10 ×    126 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:125 ("tree refresh 1 changed (80 defs)") ok
time (mean ± σ)         range (min … max) 
  48.51 µs ± 142.45 ns    48.28 µs …  48.64 µs  in 10 ×   2038 runs
[dowdiness/canopy] bench projection/reconcile_lcs_benchmark_wbtest.mbt:61 ("reconcile wide-siblings (20 defs)") ok
time (mean ± σ)         range (min … max) 
  11.12 µs ±  31.79 ns    11.08 µs …  11.17 µs  in 10 ×   8993 runs
[dowdiness/canopy] bench projection/reconcile_lcs_benchmark_wbtest.mbt:66 ("reconcile wide-siblings (80 defs)") ok
time (mean ± σ)         range (min … max) 
 102.05 µs ± 531.94 ns   101.59 µs … 103.43 µs  in 10 ×    976 runs
[dowdiness/canopy] bench projection/reconcile_lcs_benchmark_wbtest.mbt:71 ("reconcile wide-siblings (320 defs)") ok
time (mean ± σ)         range (min … max) 
   1.36 ms ±   4.05 µs     1.36 ms …   1.37 ms  in 10 ×     74 runs
[dowdiness/canopy] bench projection/reconcile_lcs_benchmark_wbtest.mbt:76 ("reconcile wide-siblings (1000 defs)") ok
time (mean ± σ)         range (min … max) 
  13.49 ms ±  31.87 µs    13.45 ms …  13.55 ms  in 10 ×      8 runs
Total tests: 33, passed: 33, failed: 0. [js]
Warning: no test entry found.
Total tests: 0, passed: 0, failed: 0. [native]

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) 
  21.37 µs ± 875.37 ns    20.37 µs …  23.14 µs  in 10 ×   4017 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) 
 107.57 µs ± 652.34 ns   106.90 µs … 108.71 µs  in 10 ×    932 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) 
 472.89 µs ±   1.79 µs   469.45 µs … 475.73 µs  in 10 ×    208 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) 
 138.59 µs ± 338.28 ns   138.13 µs … 139.07 µs  in 10 ×    722 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) 
  99.47 µs ± 514.18 ns    98.64 µs … 100.14 µs  in 10 ×   1009 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) 
  68.65 µs ± 476.41 ns    68.04 µs …  69.57 µs  in 10 ×   1455 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) 
 103.89 µs ± 191.46 ns   103.68 µs … 104.13 µs  in 10 ×    958 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) 
 214.42 µs ±   1.42 µs   212.23 µs … 216.19 µs  in 10 ×    466 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.84 µs ±  28.91 µs    26.83 µs … 110.59 µs  in 10 ×   2207 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:6 ("branch - checkout (10 ops)") ok
time (mean ± σ)         range (min … max) 
   4.02 µs ±  52.58 ns     3.94 µs …   4.10 µs  in 10 ×  24752 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:29 ("branch - checkout (100 ops)") ok
time (mean ± σ)         range (min … max) 
  30.32 µs ± 112.27 ns    30.22 µs …  30.62 µs  in 10 ×   3288 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:47 ("branch - checkout (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 425.03 µs ±   2.11 µs   421.97 µs … 427.51 µs  in 10 ×    236 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:65 ("branch - advance (10 new ops)") ok
time (mean ± σ)         range (min … max) 
  10.84 µs ±   2.94 µs     9.21 µs …  19.06 µs  in 10 ×   9546 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:91 ("branch - advance (100 new ops)") ok
time (mean ± σ)         range (min … max) 
  76.21 µs ±  28.44 µs    59.42 µs … 142.02 µs  in 10 ×   1549 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:117 ("branch - checkout with concurrent branches") ok
time (mean ± σ)         range (min … max) 
  37.26 µs ± 278.83 ns    36.85 µs …  37.78 µs  in 10 ×   2669 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:145 ("branch - checkout with deletes") ok
time (mean ± σ)         range (min … max) 
  36.53 µs ±  79.22 ns    36.43 µs …  36.66 µs  in 10 ×   2685 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) 
  27.22 µs ±   3.20 µs    25.34 µs …  34.96 µs  in 10 ×   3422 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.37 ms ±   3.78 ms     2.72 ms …  13.40 ms  in 10 ×     68 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:246 ("branch - to_text (100 chars)") ok
time (mean ± σ)         range (min … max) 
  11.41 µs ± 127.96 ns    11.31 µs …  11.68 µs  in 10 ×   8736 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:264 ("branch - to_text (1000 chars)") ok
time (mean ± σ)         range (min … max) 
 117.67 µs ± 874.49 ns   116.49 µs … 119.33 µs  in 10 ×    860 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.92 µs ± 347.72 ns     3.70 µs …   4.65 µs  in 10 ×  25322 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:311 ("branch - single advance (50 new ops)") ok
time (mean ± σ)         range (min … max) 
  43.54 µs ±  19.23 µs    31.26 µs …  83.78 µs  in 10 ×   2385 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:342 ("branch - realistic typing (50 chars)") ok
time (mean ± σ)         range (min … max) 
  17.46 ms ±   9.30 ms     6.61 ms …  36.35 ms  in 10 ×     30 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:375 ("branch - concurrent merge scenario") ok
time (mean ± σ)         range (min … max) 
  17.51 µs ±   8.11 µs    12.55 µs …  34.25 µs  in 10 ×   5805 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:6 ("walker - linear history (10 ops)") ok
time (mean ± σ)         range (min … max) 
 643.53 ns ±   6.05 ns   635.37 ns … 653.52 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.80 µs ±   6.36 ns     4.79 µs …   4.81 µs  in 10 ×  20821 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.34 µs ± 463.23 ns    43.01 µs …  44.47 µs  in 10 ×   2319 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.04 µs ±  10.11 ns     6.03 µs …   6.06 µs  in 10 ×  16634 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) 
   6.01 µs ±   9.58 ns     6.00 µs …   6.03 µs  in 10 ×  16579 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.28 µs ±  20.77 ns     8.26 µs …   8.31 µs  in 10 ×  12059 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.45 µs ±   6.57 ns     3.44 µs …   3.46 µs  in 10 ×  28843 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.49 µs ±  13.85 ns     5.47 µs …   5.52 µs  in 10 ×  18214 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:176 ("walker - large history (10000 ops)") ok
time (mean ± σ)         range (min … max) 
 449.99 µs ±   1.15 µs   448.35 µs … 451.43 µs  in 10 ×    224 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.92 ms ±  99.15 µs     6.77 ms …   7.09 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) 
  23.97 ms ±   3.05 ms    21.41 ms …  29.92 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) 
  50.41 ns ±   0.75 ns    49.39 ns …  51.63 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) 
 139.32 ns ±   0.32 ns   138.69 ns … 139.92 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.05 µs ±   4.77 ns     1.05 µs …   1.06 µs  in 10 ×  95394 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) 
 171.14 ns ±   0.20 ns   170.84 ns … 171.50 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) 
 119.11 ns ±   0.50 ns   118.49 ns … 120.05 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) 
 468.83 ns ±   1.32 ns   466.96 ns … 470.62 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) 
 203.02 ns ±   0.49 ns   202.17 ns … 203.64 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) 
   1.29 µs ±   3.17 ns     1.28 µs …   1.29 µs  in 10 ×  77503 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) 
 143.84 ns ±   0.82 ns   143.16 ns … 145.47 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) 
 120.97 ns ±   0.48 ns   120.35 ns … 121.60 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) 
 573.16 ns ±   0.90 ns   571.87 ns … 574.79 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.75 µs ±   8.56 ns     4.74 µs …   4.77 µs  in 10 ×  20958 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) 
 198.21 ns ±   2.18 ns   195.58 ns … 201.66 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.98 µs ±  15.80 ns     4.96 µs …   5.01 µs  in 10 ×  20103 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) 
  65.31 ns ±   0.47 ns    64.55 ns …  65.96 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.60 ns ±   0.45 ns    12.16 ns …  13.39 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) 
 192.43 µs ±   2.18 µs   189.83 µs … 195.69 µs  in 10 ×    485 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.91 ms ±  57.96 µs     2.86 ms …   3.02 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.60 ms ± 241.91 µs     9.31 ms …  10.04 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.44 ms ±  23.72 µs     3.41 ms …   3.48 ms  in 10 ×     28 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) 
  30.84 ms ± 620.51 µs    29.83 ms …  31.62 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.17 ns ±   1.43 ns    92.95 ns …  96.72 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.72 ns ±   0.59 ns    94.35 ns …  96.31 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) 
 537.86 µs ±   3.05 µs   534.18 µs … 542.04 µs  in 10 ×    189 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:2 ("jump - sequential append 1K") ok
time (mean ± σ)         range (min … max) 
 154.10 µs ± 648.59 ns   153.30 µs … 155.14 µs  in 10 ×    646 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.26 µs ± 504.81 ns   149.54 µs … 151.01 µs  in 10 ×    666 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.47 ms ± 120.96 µs     4.28 ms …   4.68 ms  in 10 ×     22 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:90 ("jump - degenerate chain remote insert") ok
time (mean ± σ)         range (min … max) 
 150.27 µs ± 734.66 ns   149.23 µs … 151.60 µs  in 10 ×    668 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:6 ("oplog - insert (100 ops)") ok
time (mean ± σ)         range (min … max) 
  42.75 µs ±   1.04 µs    42.09 µs …  45.53 µs  in 10 ×   2307 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:20 ("oplog - insert (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 496.79 µs ±   2.29 µs   494.01 µs … 499.87 µs  in 10 ×    202 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) 
  62.98 µs ± 110.69 ns    62.81 µs …  63.15 µs  in 10 ×   1584 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:58 ("oplog - apply_remote (50 ops)") ok
time (mean ± σ)         range (min … max) 
  29.20 µs ±  93.03 ns    29.09 µs …  29.36 µs  in 10 ×   3424 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:79 ("oplog - get_op (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 187.71 ns ±   0.92 ns   186.75 ns … 189.56 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.21 ns ±   0.27 ns    19.83 ns …  20.64 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) 
  24.84 ns ±   0.59 ns    24.22 ns …  26.33 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) 
  11.26 µs ±  38.16 ns    11.20 µs …  11.33 µs  in 10 ×   8786 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:150 ("oplog - walk_and_collect (concurrent)") ok
time (mean ± σ)         range (min … max) 
  18.90 µs ±  53.71 ns    18.82 µs …  18.96 µs  in 10 ×   5263 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:177 ("oplog - diff_and_collect (advance 20)") ok
time (mean ± σ)         range (min … max) 
   5.43 µs ±  15.98 ns     5.41 µs …   5.45 µs  in 10 ×  18341 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:202 ("oplog - walk_filtered (inserts only)") ok
time (mean ± σ)         range (min … max) 
   8.79 µs ±  27.86 ns     8.75 µs …   8.83 µs  in 10 ×  11813 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:233 ("oplog - sequential typing (500 chars)") ok
time (mean ± σ)         range (min … max) 
 233.16 µs ± 600.08 ns   232.51 µs … 234.20 µs  in 10 ×    429 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:249 ("oplog - random position inserts (100 ops)") ok
time (mean ± σ)         range (min … max) 
  42.26 µs ± 214.36 ns    41.91 µs …  42.52 µs  in 10 ×   2365 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:270 ("oplog - sequential typing (100000 chars)") ok
time (mean ± σ)         range (min … max) 
 154.89 ms ±  27.55 ms   121.82 ms … 186.31 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.58 ms ±  14.06 ms    47.41 ms …  84.59 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) 
  94.68 µs ± 854.00 ns    93.83 µs …  96.43 µs  in 10 ×    934 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:22 ("text - insert append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.28 ms ±  15.76 µs     1.27 ms …   1.31 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) 
 156.09 µs ±   1.44 µs   154.53 µs … 158.69 µs  in 10 ×    644 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) 
 231.01 µs ± 714.53 ns   229.99 µs … 232.13 µs  in 10 ×    432 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:70 ("text - text() (100-char doc)") ok
time (mean ± σ)         range (min … max) 
  13.46 µs ± 154.33 ns    13.29 µs …  13.72 µs  in 10 ×   7252 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:83 ("text - text() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
 140.71 µs ±   1.12 µs   139.23 µs … 142.54 µs  in 10 ×    722 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:96 ("text - len() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
  16.27 ns ±   0.57 ns    15.37 ns …  17.10 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.30 ns ±   0.48 ns    92.54 ns …  94.00 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.83 ns ±   0.66 ns    93.06 ns …  95.29 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.61 µs ± 438.86 ns    33.24 µs …  34.43 µs  in 10 ×   2911 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:156 ("text - sync apply (50 remote ops)") ok
time (mean ± σ)         range (min … max) 
  51.72 µs ± 632.91 ns    50.85 µs …  52.59 µs  in 10 ×   1911 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:171 ("text - sync apply (500 remote ops)") ok
time (mean ± σ)         range (min … max) 
 630.14 µs ±   3.47 µs   626.07 µs … 634.77 µs  in 10 ×    160 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) 
 107.08 µs ± 386.54 ns   106.56 µs … 107.73 µs  in 10 ×    928 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:216 ("text - checkout (midpoint of 100-op doc)") ok
time (mean ± σ)         range (min … max) 
  14.30 µs ±  66.12 ns    14.19 µs …  14.40 µs  in 10 ×   7004 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:233 ("text - checkout (midpoint of 1000-op doc)") ok
time (mean ± σ)         range (min … max) 
 169.45 µs ± 561.83 ns   168.42 µs … 170.20 µs  in 10 ×    589 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.10 µs ±   4.92 ns     2.09 µs …   2.10 µs  in 10 ×  47412 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.44 µs ±  16.04 ns     2.42 µs …   2.47 µs  in 10 ×  41163 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:281 ("text - undo undo() (10-op group)") ok
time (mean ± σ)         range (min … max) 
  28.74 µs ± 104.31 ns    28.61 µs …  28.90 µs  in 10 ×   3468 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:295 ("text - undo undo() (50-op group)") ok
time (mean ± σ)         range (min … max) 
 457.22 µs ±   2.06 µs   454.53 µs … 462.16 µs  in 10 ×    220 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) 
  32.68 µs ± 197.52 ns    32.45 µs …  33.05 µs  in 10 ×   3066 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) 
 280.29 µs ±   1.04 µs   279.01 µs … 281.76 µs  in 10 ×    357 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:17 ("cache - sequential append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.30 ms ±   8.57 µs     1.28 ms …   1.31 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.00 ms ±  40.79 µs     2.96 ms …   3.06 ms  in 10 ×     33 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.93 ms ±  14.05 µs     1.91 ms …   1.94 ms  in 10 ×     52 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.56 ms ±  16.80 µs     2.53 ms …   2.59 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) 
   6.68 µs ±   1.11 µs     5.76 µs …   9.21 µs  in 10 ×  16186 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.89 µs ±   1.10 µs     5.85 µs …   9.02 µs  in 10 ×  16765 runs
Total tests: 105, passed: 105, failed: 0.

PR branch:

Registry index updated successfully
Symbols updated successfully
Using cached moonbitlang/quickcheck@0.14.0
Downloading dowdiness/alga@0.3.0
Downloading dowdiness/order-tree@0.1.0
Using cached dowdiness/rle@0.2.2
Downloading dowdiness/btree@0.1.0
Warning: [0020]
      ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/container/document.mbt:1178:47 ]
      │
 1178 │   let _result : Result[Unit, DocumentError] = try? self.with_implicit_transaction(() => {
      │                                               ──┬─  
      │                                                 ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
──────╯
Warning: [0020]
     ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/container/undo_test.mbt:117:16 ]
     │
 117 │   let result = try? doc.transaction(() => {
     │                ──┬─  
     │                  ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
─────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/branch/delete_index_test.mbt:37:49 ]
    │
 37 │   let empty_retreat : @rle.Rle[@core.LvRange] = @rle.Rle::new()
    │                                                 ──────┬──────  
    │                                                       ╰──────── Warning (deprecated): Use Rle::Rle() instead
────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/causal_graph/walker.mbt:85:5 ]
    │
 85 │     @rle.Rle::new()
    │     ──────┬──────  
    │           ╰──────── Warning (deprecated): Use Rle::Rle() instead
────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/causal_graph/walker.mbt:90:5 ]
    │
 90 │     @rle.Rle::new()
    │     ──────┬──────  
    │           ╰──────── Warning (deprecated): Use Rle::Rle() instead
────╯
Warning: [0020]
     ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/core/op_run_wbtest.mbt:352:31 ]
     │
 352 │   let rle : @rle.Rle[OpRun] = @rle.Rle::new()
     │                               ──────┬──────  
     │                                     ╰──────── Warning (deprecated): Use Rle::Rle() instead
─────╯
Warning: [0020]
     ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/core/op_run_wbtest.mbt:379:31 ]
     │
 379 │   let rle : @rle.Rle[OpRun] = @rle.Rle::new()
     │                               ──────┬──────  
     │                                     ╰──────── Warning (deprecated): Use Rle::Rle() instead
─────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/document/document_test.mbt:30:46 ]
    │
 30 │   let result : Result[Unit, DocumentError] = try? doc.apply_remote(
    │                                              ──┬─  
    │                                                ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/document/unicode_safety_wbtest.mbt:99:46 ]
    │
 99 │   let result : Result[Unit, DocumentError] = try? doc.apply_remote(op0)
    │                                              ──┬─  
    │                                                ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
────╯
Warning: [0020]
     ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/document/unicode_safety_wbtest.mbt:118:46 ]
     │
 118 │   let result : Result[Unit, DocumentError] = try? doc.apply_remote(op0)
     │                                              ──┬─  
     │                                                ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
─────╯
Warning: [0020]
     ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/document/unicode_safety_wbtest.mbt:132:46 ]
     │
 132 │   let result : Result[Unit, DocumentError] = try? doc.apply_remote(op0)
     │                                              ──┬─  
     │                                                ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
─────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/document/visible_run_wbtest.mbt:56:36 ]
    │
 56 │   let rle : @rle.Rle[VisibleRun] = @rle.Rle::new()
    │                                    ──────┬──────  
    │                                          ╰──────── Warning (deprecated): Use Rle::Rle() instead
────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/document/visible_run_wbtest.mbt:67:36 ]
    │
 67 │   let rle : @rle.Rle[VisibleRun] = @rle.Rle::new()
    │                                    ──────┬──────  
    │                                          ╰──────── Warning (deprecated): Use Rle::Rle() instead
────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/document/visible_run_wbtest.mbt:77:36 ]
    │
 77 │   let rle : @rle.Rle[VisibleRun] = @rle.Rle::new()
    │                                    ──────┬──────  
    │                                          ╰──────── Warning (deprecated): Use Rle::Rle() instead
────╯
Warning: [0020]
     ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/fugue/tree_properties_test.mbt:488:52 ]
     │
 488 │     let result : Result[Unit, @fugue.FugueError] = try? tree.delete(
     │                                                    ──┬─  
     │                                                      ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
─────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/oplog/oplog.mbt:16:17 ]
    │
 16 │     operations: @rle.Rle::new(),
    │                 ──────┬──────  
    │                       ╰──────── Warning (deprecated): Use Rle::Rle() instead
────╯
Warning: [0020]
   ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/oplog/oplog_test.mbt:9:43 ]
   │
 9 │   let result : Result[Unit, OpLogError] = try? oplog.validate_remote_batch(
   │                                           ──┬─  
   │                                             ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
───╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/oplog/oplog_test.mbt:36:43 ]
    │
 36 │   let result : Result[Unit, OpLogError] = try? oplog.validate_remote_batch(
    │                                           ──┬─  
    │                                             ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/oplog/oplog_test.mbt:57:43 ]
    │
 57 │   let result : Result[Unit, OpLogError] = try? oplog.validate_remote_batch(
    │                                           ──┬─  
    │                                             ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/oplog/oplog_test.mbt:70:43 ]
    │
 70 │   let result : Result[Unit, OpLogError] = try? oplog.validate_remote_batch(
    │                                           ──┬─  
    │                                             ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
────╯
Warning: [0020]
    ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/oplog/oplog_test.mbt:90:43 ]
    │
 90 │   let result : Result[Unit, OpLogError] = try? oplog.validate_remote_batch(
    │                                           ──┬─  
    │                                             ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
────╯
Warning: [0020]
     ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/oplog/oplog_test.mbt:106:43 ]
     │
 106 │   let result : Result[Unit, OpLogError] = try? oplog.validate_remote_batch(
     │                                           ──┬─  
     │                                             ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
─────╯
Warning: [0020]
     ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/oplog/oplog_test.mbt:118:54 ]
     │
 118 │   let result : Result[Array[@core.Op], OpLogError] = try? oplog.apply_remote(
     │                                                      ──┬─  
     │                                                        ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
─────╯
Warning: [0020]
     ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/internal/oplog/oplog_test.mbt:134:54 ]
     │
 134 │   let result : Result[Array[@core.Op], OpLogError] = try? oplog.apply_remote(op)
     │                                                      ──┬─  
     │                                                        ╰─── Warning (deprecated): `try?` is deprecated.

Do not mechanically replace this with:
  try expr |> Ok catch { e => Err(e) }

That still creates a local `Result` wrapper and usually misses the intended migration.

Default migration: handle the raising expression directly with `try ... catch ... noraise`, especially in local inspect/assert/match/guard/logging/test code:

  try expr catch {
    e => inspect(e, content=...)
  } noraise {
    value => inspect(value, content=...)
  }

Only create `Ok`/`Err` when the `Result` value must escape this local expression: stored, returned, passed to a Result-taking API, or kept for later comparison as data.
─────╯
Warning: [0020]
     ╭─[ /home/runner/work/canopy/canopy/event-graph-walker/text/sync.mbt:143:37 ]
     │
 143 │   let rle : @rle.Rle[@core.OpRun] = @rle.Rle::new()
     │                                     ──────┬──────  
     │                                           ╰──────── Warning (deprecated): Use Rle::Rle() instead
─────╯
[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) 
  20.21 µs ± 781.45 ns    19.46 µs …  21.94 µs  in 10 ×   4663 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) 
 103.57 µs ± 640.71 ns   102.90 µs … 104.78 µs  in 10 ×    972 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) 
 460.24 µs ±   6.72 µs   448.74 µs … 470.46 µs  in 10 ×    227 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) 
 134.35 µs ± 415.64 ns   133.68 µs … 134.87 µs  in 10 ×    747 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) 
  97.95 µs ± 536.77 ns    97.03 µs …  98.63 µs  in 10 ×   1028 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) 
  67.63 µs ± 305.01 ns    67.22 µs …  68.14 µs  in 10 ×   1486 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) 
 101.64 µs ± 246.52 ns   101.25 µs … 101.94 µs  in 10 ×    980 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) 
 212.94 µs ±   1.32 µs   211.67 µs … 215.35 µs  in 10 ×    467 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.97 µs ±  27.64 µs    28.53 µs … 102.70 µs  in 10 ×   2291 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:6 ("branch - checkout (10 ops)") ok
time (mean ± σ)         range (min … max) 
   4.11 µs ±  41.38 ns     4.07 µs …   4.18 µs  in 10 ×  23898 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:29 ("branch - checkout (100 ops)") ok
time (mean ± σ)         range (min … max) 
  30.63 µs ± 152.20 ns    30.43 µs …  30.83 µs  in 10 ×   3266 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:47 ("branch - checkout (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 441.65 µs ±   3.70 µs   437.99 µs … 448.83 µs  in 10 ×    223 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:65 ("branch - advance (10 new ops)") ok
time (mean ± σ)         range (min … max) 
  12.19 µs ±   5.20 µs     9.12 µs …  23.80 µs  in 10 ×   8508 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:91 ("branch - advance (100 new ops)") ok
time (mean ± σ)         range (min … max) 
  93.02 µs ±  49.17 µs    59.24 µs … 200.95 µs  in 10 ×   1129 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:117 ("branch - checkout with concurrent branches") ok
time (mean ± σ)         range (min … max) 
  37.46 µs ± 330.68 ns    36.94 µs …  37.91 µs  in 10 ×   2697 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:145 ("branch - checkout with deletes") ok
time (mean ± σ)         range (min … max) 
  37.15 µs ± 156.76 ns    36.94 µs …  37.37 µs  in 10 ×   2722 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.26 µs ± 556.64 ns    25.51 µs …  27.41 µs  in 10 ×   3837 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.38 ms ±   3.81 ms     2.70 ms …  13.52 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.37 µs ±  90.51 ns    11.28 µs …  11.53 µs  in 10 ×   8762 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:264 ("branch - to_text (1000 chars)") ok
time (mean ± σ)         range (min … max) 
 121.54 µs ±   1.27 µs   120.22 µs … 123.95 µs  in 10 ×    818 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.86 µs ± 185.69 ns     3.68 µs …   4.14 µs  in 10 ×  25683 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:311 ("branch - single advance (50 new ops)") ok
time (mean ± σ)         range (min … max) 
  43.88 µs ±  16.47 µs    32.12 µs …  69.50 µs  in 10 ×   2512 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:342 ("branch - realistic typing (50 chars)") ok
time (mean ± σ)         range (min … max) 
   8.59 ms ±   1.82 ms     5.81 ms …  11.22 ms  in 10 ×     13 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:375 ("branch - concurrent merge scenario") ok
time (mean ± σ)         range (min … max) 
  15.44 µs ±   4.70 µs    12.68 µs …  28.31 µs  in 10 ×   7271 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:6 ("walker - linear history (10 ops)") ok
time (mean ± σ)         range (min … max) 
 645.78 ns ±   4.27 ns   639.89 ns … 652.54 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.80 µs ±   7.26 ns     4.79 µs …   4.81 µs  in 10 ×  20693 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.40 µs ± 586.09 ns    42.93 µs …  44.83 µs  in 10 ×   2334 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.09 µs ±  14.57 ns     6.07 µs …   6.11 µs  in 10 ×  16403 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.95 µs ±  21.45 ns     5.93 µs …   6.00 µs  in 10 ×  16832 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.20 µs ±  20.54 ns     8.17 µs …   8.23 µs  in 10 ×  12204 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.45 µs ±   4.30 ns     3.44 µs …   3.46 µs  in 10 ×  28976 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.50 µs ±  11.59 ns     5.48 µs …   5.52 µs  in 10 ×  18186 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:176 ("walker - large history (10000 ops)") ok
time (mean ± σ)         range (min … max) 
 484.85 µs ±   4.02 µs   481.81 µs … 495.84 µs  in 10 ×    195 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.24 ms ± 167.92 µs     7.03 ms …   7.50 ms  in 10 ×     14 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) 
  28.01 ms ±   3.70 ms    23.76 ms …  36.05 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) 
  50.06 ns ±   0.30 ns    49.48 ns …  50.48 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) 
 139.81 ns ±   0.70 ns   139.01 ns … 140.97 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.05 µs ±   2.33 ns     1.05 µs …   1.06 µs  in 10 ×  94915 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) 
 170.65 ns ±   0.37 ns   169.98 ns … 171.26 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) 
 119.44 ns ±   1.06 ns   118.42 ns … 121.71 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) 
 468.75 ns ±   0.88 ns   467.64 ns … 470.05 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) 
 203.03 ns ±   0.82 ns   202.11 ns … 204.86 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) 
   1.29 µs ±  35.28 ns     1.26 µs …   1.39 µs  in 10 ×  78595 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) 
 143.20 ns ±   0.55 ns   142.68 ns … 144.16 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) 
 123.23 ns ±   0.60 ns   122.34 ns … 123.98 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) 
 570.59 ns ±   1.40 ns   568.91 ns … 572.85 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.78 µs ±   5.11 ns     4.77 µs …   4.79 µs  in 10 ×  20905 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) 
 194.74 ns ±   0.43 ns   194.12 ns … 195.28 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) 
   5.01 µs ±  35.97 ns     4.99 µs …   5.11 µs  in 10 ×  19814 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) 
  68.04 ns ±   0.44 ns    67.39 ns …  68.57 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.48 ns ±   0.36 ns    12.14 ns …  13.06 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) 
 193.63 µs ±   1.93 µs   191.54 µs … 197.29 µ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) 
   3.00 ms ±  74.52 µs     2.90 ms …   3.10 ms  in 10 ×     33 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.94 ms ± 475.37 µs     9.32 ms …  10.72 ms  in 10 ×     10 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.58 ms ±  42.00 µs     3.52 ms …   3.64 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) 
  32.11 ms ± 869.78 µs    31.09 ms …  33.21 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.84 ns ±   0.91 ns    93.18 ns …  96.09 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) 
  93.67 ns ±   0.47 ns    93.01 ns …  94.39 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) 
 543.11 µs ±   6.43 µs   534.47 µs … 553.78 µ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) 
 153.65 µs ± 631.38 ns   152.48 µs … 154.51 µs  in 10 ×    646 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) 
 151.54 µs ±   1.42 µs   150.24 µs … 154.27 µs  in 10 ×    661 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.38 ms ±  89.24 µs     4.28 ms …   4.52 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.11 µs ± 723.58 ns   150.23 µs … 152.19 µ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) 
  43.28 µs ± 994.36 ns    42.48 µs …  45.92 µs  in 10 ×   2275 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:20 ("oplog - insert (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 507.82 µs ±   1.84 µs   505.98 µs … 511.46 µs  in 10 ×    198 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) 
  64.75 µs ± 167.90 ns    64.53 µs …  65.02 µs  in 10 ×   1548 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:58 ("oplog - apply_remote (50 ops)") ok
time (mean ± σ)         range (min … max) 
  28.94 µs ±  71.86 ns    28.83 µs …  29.02 µs  in 10 ×   3466 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:79 ("oplog - get_op (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 192.58 ns ±   0.68 ns   191.65 ns … 194.21 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.37 ns ±   0.29 ns    19.99 ns …  20.83 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.43 ns ±   0.35 ns    24.90 ns …  25.77 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) 
  11.55 µs ±  54.65 ns    11.46 µs …  11.61 µs  in 10 ×   8735 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:150 ("oplog - walk_and_collect (concurrent)") ok
time (mean ± σ)         range (min … max) 
  18.97 µs ±  89.29 ns    18.86 µs …  19.15 µs  in 10 ×   5281 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:177 ("oplog - diff_and_collect (advance 20)") ok
time (mean ± σ)         range (min … max) 
   5.45 µs ±  28.75 ns     5.43 µs …   5.52 µs  in 10 ×  18404 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:202 ("oplog - walk_filtered (inserts only)") ok
time (mean ± σ)         range (min … max) 
   8.84 µs ±  14.16 ns     8.81 µs …   8.86 µs  in 10 ×  11709 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:233 ("oplog - sequential typing (500 chars)") ok
time (mean ± σ)         range (min … max) 
 233.06 µs ± 830.74 ns   232.06 µs … 234.55 µs  in 10 ×    427 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:249 ("oplog - random position inserts (100 ops)") ok
time (mean ± σ)         range (min … max) 
  42.27 µs ± 112.78 ns    42.09 µs …  42.43 µs  in 10 ×   2369 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:270 ("oplog - sequential typing (100000 chars)") ok
time (mean ± σ)         range (min … max) 
 158.25 ms ±  24.28 ms   121.33 ms … 184.49 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) 
  72.39 ms ±  19.69 ms    48.44 ms …  91.54 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) 
  94.52 µs ± 232.78 ns    94.15 µs …  94.95 µs  in 10 ×    924 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:22 ("text - insert append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.29 ms ±  10.09 µs     1.27 ms …   1.30 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) 
 155.27 µs ± 653.88 ns   154.14 µs … 156.02 µs  in 10 ×    642 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) 
 231.89 µs ± 815.57 ns   230.95 µs … 232.91 µs  in 10 ×    430 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:70 ("text - text() (100-char doc)") ok
time (mean ± σ)         range (min … max) 
  13.43 µs ±  65.02 ns    13.35 µs …  13.51 µs  in 10 ×   7402 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:83 ("text - text() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
 139.29 µs ± 563.88 ns   138.40 µs … 140.04 µs  in 10 ×    721 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:96 ("text - len() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
  12.67 ns ±   0.44 ns    12.29 ns …  13.34 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) 
  95.31 ns ±   0.45 ns    94.78 ns …  96.15 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.51 ns ±   0.56 ns    92.84 ns …  94.59 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.65 µs ± 350.25 ns    33.39 µs …  34.44 µs  in 10 ×   2872 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:156 ("text - sync apply (50 remote ops)") ok
time (mean ± σ)         range (min … max) 
  51.97 µs ± 333.84 ns    51.55 µs …  52.49 µs  in 10 ×   1908 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:171 ("text - sync apply (500 remote ops)") ok
time (mean ± σ)         range (min … max) 
 640.10 µs ±   3.33 µs   636.06 µs … 647.93 µs  in 10 ×    157 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) 
 107.22 µs ± 277.12 ns   106.76 µs … 107.68 µs  in 10 ×    930 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:216 ("text - checkout (midpoint of 100-op doc)") ok
time (mean ± σ)         range (min … max) 
  14.62 µs ±  96.36 ns    14.54 µs …  14.81 µs  in 10 ×   6773 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:233 ("text - checkout (midpoint of 1000-op doc)") ok
time (mean ± σ)         range (min … max) 
 172.36 µs ± 779.49 ns   171.11 µs … 173.58 µs  in 10 ×    550 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.26 µs ±   3.70 ns     2.25 µs …   2.26 µs  in 10 ×  44156 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.64 µs ±  18.61 ns     2.61 µs …   2.67 µs  in 10 ×  37910 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:281 ("text - undo undo() (10-op group)") ok
time (mean ± σ)         range (min … max) 
  29.08 µs ± 126.42 ns    28.88 µs …  29.23 µs  in 10 ×   3299 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:295 ("text - undo undo() (50-op group)") ok
time (mean ± σ)         range (min … max) 
 459.42 µs ±   1.54 µs   457.62 µs … 462.66 µ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) 
  33.12 µs ± 215.61 ns    32.87 µs …  33.55 µs  in 10 ×   3038 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) 
 283.78 µs ±   1.69 µs   281.35 µs … 286.89 µs  in 10 ×    350 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:17 ("cache - sequential append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.36 ms ±  32.22 µs     1.30 ms …   1.42 ms  in 10 ×     74 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:34 ("cache - alternating pos (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   3.12 ms ±  63.91 µs     3.00 ms …   3.17 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 ±  44.67 µs     1.92 ms …   2.03 ms  in 10 ×     52 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.61 ms ±  66.80 µs     2.51 ms …   2.69 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) 
   7.24 µs ±   1.54 µs     6.17 µs …  10.39 µs  in 10 ×  14393 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.09 µs ±   1.15 µs     6.25 µs …   9.97 µs  in 10 ×  16835 runs
Total tests: 105, passed: 105, failed: 0.

Benchmarks run with --release flag

@dowdiness dowdiness merged commit 09c9a94 into main Jun 16, 2026
29 checks passed
@dowdiness dowdiness deleted the chore/update-agent-model-routing branch June 16, 2026 13:42
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