Skip to content

docs: codify repository responsibility map and extension points (#413)#421

Merged
dowdiness merged 2 commits into
mainfrom
docs/413-responsibility-map
May 31, 2026
Merged

docs: codify repository responsibility map and extension points (#413)#421
dowdiness merged 2 commits into
mainfrom
docs/413-responsibility-map

Conversation

@dowdiness
Copy link
Copy Markdown
Owner

@dowdiness dowdiness commented May 31, 2026

Closes #413.

Extends the existing docs/architecture/responsibility-map.md (does not recreate it) to meet all four acceptance criteria:

Out of scope respected: no code refactor, no rewriting other docs, no moving submodule docs into Canopy.

Follow-up (not in this PR's scope): docs/architecture/modules.md is stale — it omits several current root deps (order-tree, alga, pretty, byte_codec, zipper, egglog, egraph). Worth a separate issue; this is itself an instance of the doc-drift AC4 addresses.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated architecture responsibility map with clearer sections distinguishing implemented vs. planned features.
    • Added guidance on authoritative documentation sources and owner selection processes.
    • Enhanced supporting libraries section with dependency and integration details.

Close the four acceptance criteria for #413 by extending the existing
responsibility-map.md (not recreating it):
- Add a "Supporting Libraries" subsection for 8 submodules (text-change,
  moji, pretty, order-tree, rle, alga, graphviz, svg-dsl), grouped by
  verified integration layer from moon.mod.json (root deps / via
  event-graph-walker / visualization tooling).
- Split "Current Stance" into Implemented (code-backed) vs
  Planned / Aspirational, clarifying incr's current incremental-projection
  use vs its planned semantic-pipeline expansion.
- Add a "Source of Truth on Drift" rule: code + generated .mbti are
  authoritative; api-map.md is a reuse index, not authority.
- Add cross-links to architecture.md, api-map.md, and theory notes
  instead of duplicating; add an Owner Selection / Reuse First flow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@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 Updated (UTC)
🔵 In progress
View logs
lambda-editor 5c1b4c1 May 31 2026, 11:05 AM

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

cloudflare-workers-and-pages Bot commented May 31, 2026

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 ef9b4f9 Commit Preview URL

Branch Preview URL
May 31 2026, 11:11 AM

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 31, 2026

Review Change Stack

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

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

⌛ How to resolve this issue?

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

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

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

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

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 648aec84-461a-4dcf-870f-65990eba8c20

📥 Commits

Reviewing files that changed from the base of the PR and between 5c1b4c1 and ef9b4f9.

📒 Files selected for processing (1)
  • docs/architecture/responsibility-map.md
📝 Walkthrough

Walkthrough

Updated docs/architecture/responsibility-map.md to clarify Canopy's implemented architecture versus planned aspirations. Restructured guidance into "Implemented (code-backed)" and "Planned / Aspirational" sections, documented external library and submodule responsibilities, and linked design decisions to tracked issues for semantic pipeline and incr migration work.

Changes

Architecture Documentation Update

Layer / File(s) Summary
Core guidance restructuring and source-of-truth
docs/architecture/responsibility-map.md
Reorganized "Current Stance" into "Implemented (code-backed)" and "Planned / Aspirational" sections, added guidance about code/docs source-of-truth divergence, and introduced an "Owner Selection / Reuse First" step-by-step process.
Supporting libraries and submodule responsibilities
docs/architecture/responsibility-map.md
New "Supporting Libraries (submodules)" section with three grouped tables describing direct dependencies, CRDT internals, and visualization tooling, including each library's responsibilities and integration layers.
Priority issues and implementation planning notes
docs/architecture/responsibility-map.md
Updated "Priority Issues" entries with explicit planned-work annotations for semantic-annotation flow and incr 0.5.x → 0.6 migration; added inline parenthetical notes in "Design Rules" and "Anti-Patterns" sections linking semantic pipeline intentions, MoonDsp-shell spike, and incr migration tracking to tracked issues.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰 A map redrawn with care and thought,
where planned dreams meet what code has wrought.
Submodules named, their duties clear,
the path ahead now bright and near!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'docs: codify repository responsibility map and extension points (#413)' directly reflects the main change—creating a responsibility map document that codifies ownership and extension points.
Linked Issues check ✅ Passed The PR implements all four acceptance criteria from #413: adds owner lookup via Supporting Libraries section and Owner Selection flow (AC1), splits Current Stance into Implemented vs Planned (AC2), adds cross-links instead of duplication (AC3), and establishes code plus .mbti as source of truth (AC4).
Out of Scope Changes check ✅ Passed All changes are documentation-only updates to responsibility-map.md that directly address the linked issue requirements. No code refactors, wholesale doc rewrites, or submodule doc relocations are present.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/413-responsibility-map

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.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5c1b4c1bb5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/architecture/responsibility-map.md Outdated
Comment on lines +77 to +81
## Supporting Libraries (submodules)

All 8 libraries below are implemented and wired into Canopy. Sources: canopy root
`moon.mod.json` (group A); `event-graph-walker`'s deps (group B); and
visualization/example modules plus `graphviz`'s own deps (group C).
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Correct the submodule inventory

This section is labeled as a submodule owner map, but the root .gitmodules contains event-graph-walker, loom, svg-dsl, graphviz, rle, order-tree, alga, and rabbita; text-change, moji, and pretty are packages under the loom submodule, while rabbita is omitted entirely. Because this document is now the ownership decision guide, contributors following it for submodule updates or ownership routing will target the wrong repository boundaries and miss the actual Rabbita submodule.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/architecture/responsibility-map.md`:
- Around line 116-117: Update the responsibility-map entry for issue `#418` so it
no longer claims a 0.5.x→0.6 migration is merely "planned" when the code already
depends on dowdiness/incr@0.6.0 (see lib/cognition/moon.mod); instead, reword
the item to state what remaining work is planned on top of v0.6 (for example,
"facade stabilization/completion, integration tests, and cleanup") so the
roadmap accurately reflects that the repo has adopted v0.6 but still requires
additional facade stabilization tasks.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 3ae1b788-0df1-4d7d-a5ee-377a4bf0c78d

📥 Commits

Reviewing files that changed from the base of the PR and between c6c62d0 and 5c1b4c1.

📒 Files selected for processing (1)
  • docs/architecture/responsibility-map.md

Comment on lines 116 to +117
4. [#418](https://github.com/dowdiness/canopy/issues/418) - plan migration
from `incr` 0.5.x to the 0.6 target facade.
from `incr` 0.5.x to the 0.6 target facade. *(planned)*
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify current incr versions and migration wording references.
rg -n -C2 'dowdiness/incr@|incr 0\.5|0\.6 target facade|`#418`'

Repository: dowdiness/canopy

Length of output: 1757


Clarify incr migration baseline for #418 to avoid roadmap drift.

Line 117 states the migration from incr 0.5.x → 0.6 target facade is (planned), but the current code already references dowdiness/incr@0.6.0 in lib/cognition/moon.mod. Reword #418 to describe what’s still planned on top of 0.6 (e.g., facade stabilization/completion) so the roadmap matches reality.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/architecture/responsibility-map.md` around lines 116 - 117, Update the
responsibility-map entry for issue `#418` so it no longer claims a 0.5.x→0.6
migration is merely "planned" when the code already depends on
dowdiness/incr@0.6.0 (see lib/cognition/moon.mod); instead, reword the item to
state what remaining work is planned on top of v0.6 (for example, "facade
stabilization/completion, integration tests, and cleanup") so the roadmap
accurately reflects that the repo has adopted v0.6 but still requires additional
facade stabilization tasks.

Address P2 review finding: the Supporting Libraries section conflated git
submodules with loom-internal packages and omitted rabbita.
- List the actual submodule boundaries from .gitmodules (incl. rabbita), and
  note loom is itself a submodule containing seam/incr/text-change/moji/
  pretty/lambda as packages.
- Add a Repository column marking text-change/moji/pretty as packages inside
  the loom submodule (not standalone repos) vs standalone submodules.
- Add rabbita (moonbit-community/rabbita Web UI framework, wired via
  lib/rabbita_codemirror) to Group C.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 31, 2026

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.63 µs ± 715.72 ns    58.81 µs …  61.24 µs  in 10 ×   1640 runs
[dowdiness/btree] bench btree_benchmark.mbt:84 ("bench: build via from_sorted (100)") ok
time (mean ± σ)         range (min … max) 
   2.86 µs ±   7.14 ns     2.85 µs …   2.88 µs  in 10 ×  39085 runs
[dowdiness/btree] bench btree_benchmark.mbt:91 ("bench: build via inserts (1000)") ok
time (mean ± σ)         range (min … max) 
 942.26 µs ±   9.60 µs   930.70 µs … 955.82 µs  in 10 ×     99 runs
[dowdiness/btree] bench btree_benchmark.mbt:96 ("bench: build via from_sorted (1000)") ok
time (mean ± σ)         range (min … max) 
  25.87 µs ± 175.33 ns    25.58 µs …  26.11 µs  in 10 ×   3825 runs
[dowdiness/btree] bench btree_benchmark.mbt:103 ("bench: build via inserts (10000)") ok
time (mean ± σ)         range (min … max) 
  14.30 ms ± 169.64 µs    14.08 ms …  14.50 ms  in 10 ×      7 runs
[dowdiness/btree] bench btree_benchmark.mbt:108 ("bench: build via from_sorted (10000)") ok
time (mean ± σ)         range (min … max) 
 482.92 µs ±   7.51 µs   471.65 µs … 490.00 µs  in 10 ×    208 runs
[dowdiness/btree] bench btree_benchmark.mbt:115 ("bench: delete_range middle 10% (1000)") ok
time (mean ± σ)         range (min … max) 
  49.52 µs ± 284.65 ns    49.19 µs …  50.00 µs  in 10 ×   1989 runs
[dowdiness/btree] bench btree_benchmark.mbt:124 ("bench: delete_range middle 50% (1000)") ok
time (mean ± σ)         range (min … max) 
  44.75 µs ± 255.53 ns    44.48 µs …  45.12 µs  in 10 ×   2228 runs
[dowdiness/btree] bench btree_benchmark.mbt:133 ("bench: delete_range middle 10% (10000)") ok
time (mean ± σ)         range (min … max) 
 650.90 µs ±   6.52 µs   641.94 µs … 662.79 µs  in 10 ×    155 runs
[dowdiness/btree] bench btree_benchmark.mbt:142 ("bench: delete_range middle 50% (10000)") ok
time (mean ± σ)         range (min … max) 
 664.42 µs ±   9.38 µs   651.14 µs … 681.35 µs  in 10 ×    149 runs
Total tests: 10, passed: 10, failed: 0. [wasm-gc]
node count: 402
node count: 802
node count: 2002
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:24 ("viewnode serialization (100 defs)") ok
time (mean ± σ)         range (min … max) 
   2.01 ms ±  36.70 µs     1.93 ms …   2.04 ms  in 10 ×     52 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:35 ("viewnode serialization (200 defs)") ok
time (mean ± σ)         range (min … max) 
   4.93 ms ± 234.10 µs     4.70 ms …   5.45 ms  in 10 ×     21 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:46 ("viewnode serialization (500 defs)") ok
time (mean ± σ)         range (min … max) 
  21.85 ms ±   1.65 ms    19.99 ms …  24.51 ms  in 10 ×      5 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:57 ("compute_view_patches (100 defs, single edit)") ok
time (mean ± σ)         range (min … max) 
   1.72 ms ±  74.30 µs     1.66 ms …   1.85 ms  in 10 ×     56 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:98 ("json object - incremental keystroke (20 members)") ok
time (mean ± σ)         range (min … max) 
   1.03 ms ±  56.01 µs   940.53 µs …   1.12 ms  in 10 ×     96 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:103 ("json object - incremental keystroke (100 members)") ok
time (mean ± σ)         range (min … max) 
   3.93 ms ±  55.31 µs     3.87 ms …   4.07 ms  in 10 ×     26 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:108 ("json object - incremental keystroke (500 members)") ok
time (mean ± σ)         range (min … max) 
  25.89 ms ±  72.93 µs    25.79 ms …  26.00 ms  in 10 ×      4 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:113 ("json object - incremental keystroke (1000 members)") ok
time (mean ± σ)         range (min … max) 
  59.75 ms ± 322.56 µs    59.46 ms …  60.46 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) 
 765.86 µs ± 158.47 µs   536.85 µs … 979.36 µs  in 10 ×    215 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:123 ("json array - incremental keystroke (100 elements)") ok
time (mean ± σ)         range (min … max) 
   1.86 ms ±  45.97 µs     1.81 ms …   1.95 ms  in 10 ×     57 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:128 ("json array - incremental keystroke (500 elements)") ok
time (mean ± σ)         range (min … max) 
  12.61 ms ±  87.18 µs    12.49 ms …  12.76 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) 
  31.81 ms ± 746.43 µs    31.42 ms …  33.86 ms  in 10 ×      4 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:38 ("tree refresh unchanged (20 defs)") ok
time (mean ± σ)         range (min … max) 
   4.17 µs ±  77.39 ns     4.11 µs …   4.30 µs  in 10 ×  23591 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:48 ("tree refresh unchanged (80 defs)") ok
time (mean ± σ)         range (min … max) 
  16.25 µs ± 183.65 ns    16.12 µs …  16.74 µs  in 10 ×   6044 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:58 ("tree refresh unchanged (320 defs)") ok
time (mean ± σ)         range (min … max) 
  67.36 µs ±   1.02 µs    66.69 µs …  70.17 µs  in 10 ×   1480 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:68 ("tree refresh unchanged (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 237.21 µs ±   1.36 µs   235.96 µs … 240.36 µs  in 10 ×    424 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:80 ("tree refresh 1 changed (20 defs)") ok
time (mean ± σ)         range (min … max) 
   7.18 µs ±  12.77 ns     7.17 µs …   7.21 µs  in 10 ×  13926 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:95 ("tree refresh 1 changed (320 defs)") ok
time (mean ± σ)         range (min … max) 
 121.56 µs ± 398.03 ns   121.07 µs … 122.28 µs  in 10 ×    825 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:110 ("tree refresh 1 changed (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 421.34 µs ±   1.30 µs   419.44 µs … 423.17 µs  in 10 ×    240 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:125 ("tree refresh 1 changed (80 defs)") ok
time (mean ± σ)         range (min … max) 
  27.76 µs ±  99.53 ns    27.66 µs …  28.00 µs  in 10 ×   3620 runs
Total tests: 20, passed: 20, failed: 0. [js]

PR branch:

Registry index cloned successfully
Symbols updated successfully
Downloading moonbit-community/rabbita@0.12.3
Downloading moonbitlang/quickcheck@0.11.2
Downloading moonbitlang/x@0.4.38
Downloading moonbitlang/async@0.16.8
Downloading dowdiness/rle@0.2.0
[dowdiness/btree] bench btree_benchmark.mbt:79 ("bench: build via inserts (100)") ok
time (mean ± σ)         range (min … max) 
  60.32 µs ± 765.38 ns    59.40 µs …  61.83 µs  in 10 ×   1613 runs
[dowdiness/btree] bench btree_benchmark.mbt:84 ("bench: build via from_sorted (100)") ok
time (mean ± σ)         range (min … max) 
   2.85 µs ±  28.35 ns     2.83 µs …   2.92 µs  in 10 ×  38990 runs
[dowdiness/btree] bench btree_benchmark.mbt:91 ("bench: build via inserts (1000)") ok
time (mean ± σ)         range (min … max) 
 974.80 µs ±  39.21 µs   937.07 µs …   1.04 ms  in 10 ×     87 runs
[dowdiness/btree] bench btree_benchmark.mbt:96 ("bench: build via from_sorted (1000)") ok
time (mean ± σ)         range (min … max) 
  26.10 µs ± 500.15 ns    25.16 µs …  26.77 µs  in 10 ×   3807 runs
[dowdiness/btree] bench btree_benchmark.mbt:103 ("bench: build via inserts (10000)") ok
time (mean ± σ)         range (min … max) 
  14.65 ms ± 145.08 µs    14.43 ms …  14.84 ms  in 10 ×      7 runs
[dowdiness/btree] bench btree_benchmark.mbt:108 ("bench: build via from_sorted (10000)") ok
time (mean ± σ)         range (min … max) 
 486.65 µs ±   5.63 µs   477.91 µs … 493.72 µs  in 10 ×    209 runs
[dowdiness/btree] bench btree_benchmark.mbt:115 ("bench: delete_range middle 10% (1000)") ok
time (mean ± σ)         range (min … max) 
  51.00 µs ± 303.93 ns    50.57 µs …  51.40 µs  in 10 ×   1899 runs
[dowdiness/btree] bench btree_benchmark.mbt:124 ("bench: delete_range middle 50% (1000)") ok
time (mean ± σ)         range (min … max) 
  46.23 µs ± 517.94 ns    45.89 µs …  47.62 µs  in 10 ×   2151 runs
[dowdiness/btree] bench btree_benchmark.mbt:133 ("bench: delete_range middle 10% (10000)") ok
time (mean ± σ)         range (min … max) 
 647.64 µs ±   2.53 µs   644.27 µs … 653.56 µs  in 10 ×    151 runs
[dowdiness/btree] bench btree_benchmark.mbt:142 ("bench: delete_range middle 50% (10000)") ok
time (mean ± σ)         range (min … max) 
 667.04 µs ±  12.63 µs   648.90 µs … 688.35 µs  in 10 ×    151 runs
Total tests: 10, passed: 10, failed: 0. [wasm-gc]
node count: 402
node count: 802
node count: 2002
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:24 ("viewnode serialization (100 defs)") ok
time (mean ± σ)         range (min … max) 
   2.01 ms ±  27.88 µs     1.96 ms …   2.04 ms  in 10 ×     51 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:35 ("viewnode serialization (200 defs)") ok
time (mean ± σ)         range (min … max) 
   5.45 ms ± 312.51 µs     4.98 ms …   5.97 ms  in 10 ×     20 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:46 ("viewnode serialization (500 defs)") ok
time (mean ± σ)         range (min … max) 
  25.90 ms ±   3.70 ms    21.66 ms …  30.62 ms  in 10 ×      4 runs
[dowdiness/canopy] bench editor/view_updater_benchmark_wbtest.mbt:57 ("compute_view_patches (100 defs, single edit)") ok
time (mean ± σ)         range (min … max) 
   1.83 ms ± 101.44 µs     1.75 ms …   2.04 ms  in 10 ×     53 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:98 ("json object - incremental keystroke (20 members)") ok
time (mean ± σ)         range (min … max) 
   1.03 ms ±  54.91 µs   952.76 µs …   1.11 ms  in 10 ×     93 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:103 ("json object - incremental keystroke (100 members)") ok
time (mean ± σ)         range (min … max) 
   4.05 ms ±  68.78 µs     3.99 ms …   4.17 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) 
  27.86 ms ± 568.60 µs    27.30 ms …  29.14 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) 
  64.33 ms ± 762.38 µs    63.29 ms …  65.27 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) 
 784.97 µs ± 158.68 µs   558.15 µs …   1.01 ms  in 10 ×    206 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:123 ("json array - incremental keystroke (100 elements)") ok
time (mean ± σ)         range (min … max) 
   1.93 ms ±  52.00 µs     1.87 ms …   2.01 ms  in 10 ×     55 runs
[dowdiness/canopy] bench lang/json/companion/json_benchmark.mbt:128 ("json array - incremental keystroke (500 elements)") ok
time (mean ± σ)         range (min … max) 
  13.07 ms ± 117.54 µs    12.89 ms …  13.26 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) 
  34.62 ms ±   3.77 ms    32.48 ms …  45.14 ms  in 10 ×      3 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:38 ("tree refresh unchanged (20 defs)") ok
time (mean ± σ)         range (min … max) 
   4.17 µs ±  69.37 ns     4.12 µs …   4.30 µs  in 10 ×  23546 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:48 ("tree refresh unchanged (80 defs)") ok
time (mean ± σ)         range (min … max) 
  14.63 µs ± 202.03 ns    14.45 µs …  15.07 µs  in 10 ×   6634 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:58 ("tree refresh unchanged (320 defs)") ok
time (mean ± σ)         range (min … max) 
  63.60 µs ±   1.16 µs    62.81 µs …  66.63 µs  in 10 ×   1561 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:68 ("tree refresh unchanged (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 271.62 µs ±   2.72 µs   269.33 µs … 277.41 µs  in 10 ×    370 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:80 ("tree refresh 1 changed (20 defs)") ok
time (mean ± σ)         range (min … max) 
   6.59 µs ±  43.38 ns     6.55 µs …   6.70 µs  in 10 ×  15189 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:95 ("tree refresh 1 changed (320 defs)") ok
time (mean ± σ)         range (min … max) 
 116.02 µs ± 236.85 ns   115.66 µs … 116.41 µs  in 10 ×    866 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:110 ("tree refresh 1 changed (1000 defs)") ok
time (mean ± σ)         range (min … max) 
 482.89 µs ±   3.37 µs   479.26 µs … 490.01 µs  in 10 ×    206 runs
[dowdiness/canopy] bench projection/tree_refresh_benchmark_wbtest.mbt:125 ("tree refresh 1 changed (80 defs)") ok
time (mean ± σ)         range (min … max) 
  25.12 µs ± 101.19 ns    24.96 µs …  25.24 µs  in 10 ×   3978 runs
Total tests: 20, passed: 20, failed: 0. [js]

event-graph-walker Benchmarks

Base branch:

Registry index updated successfully
Symbols updated successfully
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:21 ("merge - concurrent edits (2 agents x 10)") ok
time (mean ± σ)         range (min … max) 
  23.08 µs ± 641.08 ns    22.30 µs …  24.56 µs  in 10 ×   3900 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:59 ("merge - concurrent edits (2 agents x 50)") ok
time (mean ± σ)         range (min … max) 
 119.44 µs ± 620.75 ns   118.72 µs … 120.61 µs  in 10 ×    833 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) 
 532.82 µs ±   2.76 µs   529.61 µs … 537.46 µs  in 10 ×    189 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:135 ("merge - many agents (5 agents x 20)") ok
time (mean ± σ)         range (min … max) 
 150.83 µs ± 861.09 ns   149.97 µs … 153.08 µs  in 10 ×    662 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:184 ("merge - with deletes (50 inserts, 25 deletes)") ok
time (mean ± σ)         range (min … max) 
 114.60 µs ± 313.40 ns   114.21 µs … 115.08 µs  in 10 ×    872 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:230 ("merge - graph_diff advance (20 ops)") ok
time (mean ± σ)         range (min … max) 
  73.96 µs ± 126.88 ns    73.82 µs …  74.14 µs  in 10 ×   1344 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:303 ("merge - repeated small (10 iterations x 5 ops)") ok
time (mean ± σ)         range (min … max) 
 113.31 µs ± 279.20 ns   113.00 µs … 113.72 µs  in 10 ×    883 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) 
 202.58 µs ± 506.50 ns   201.89 µs … 203.34 µs  in 10 ×    487 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:408 ("merge - context apply operations (50 ops)") ok
time (mean ± σ)         range (min … max) 
  37.42 µs ±  15.89 µs    25.46 µs …  71.46 µs  in 10 ×   2419 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:6 ("branch - checkout (10 ops)") ok
time (mean ± σ)         range (min … max) 
   3.78 µs ±  87.97 ns     3.70 µs …   3.99 µs  in 10 ×  26568 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:29 ("branch - checkout (100 ops)") ok
time (mean ± σ)         range (min … max) 
  26.88 µs ± 109.37 ns    26.74 µs …  27.05 µs  in 10 ×   3686 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:47 ("branch - checkout (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 365.44 µs ±   2.52 µs   361.70 µs … 368.62 µs  in 10 ×    272 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:65 ("branch - advance (10 new ops)") ok
time (mean ± σ)         range (min … max) 
  12.18 µs ±   4.46 µs     9.06 µs …  21.63 µs  in 10 ×   8880 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:91 ("branch - advance (100 new ops)") ok
time (mean ± σ)         range (min … max) 
 101.40 µs ±  59.02 µs    56.18 µs … 224.41 µs  in 10 ×   1097 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:117 ("branch - checkout with concurrent branches") ok
time (mean ± σ)         range (min … max) 
  35.26 µs ± 608.65 ns    34.80 µs …  36.78 µs  in 10 ×   2844 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:145 ("branch - checkout with deletes") ok
time (mean ± σ)         range (min … max) 
  35.96 µs ± 102.42 ns    35.79 µs …  36.07 µs  in 10 ×   2785 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.92 µs ± 637.43 ns    26.45 µs …  28.20 µs  in 10 ×   3718 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.11 ms ±   3.44 ms     2.72 ms …  12.60 ms  in 10 ×     66 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:246 ("branch - to_text (100 chars)") ok
time (mean ± σ)         range (min … max) 
  11.24 µs ±  47.81 ns    11.17 µs …  11.30 µs  in 10 ×   8872 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:264 ("branch - to_text (1000 chars)") ok
time (mean ± σ)         range (min … max) 
 121.11 µs ±   1.42 µs   119.23 µs … 123.09 µs  in 10 ×    826 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.94 µs ± 209.17 ns     3.78 µs …   4.39 µs  in 10 ×  25981 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:311 ("branch - single advance (50 new ops)") ok
time (mean ± σ)         range (min … max) 
  48.64 µs ±  28.42 µs    30.37 µs … 108.67 µs  in 10 ×   2286 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:342 ("branch - realistic typing (50 chars)") ok
time (mean ± σ)         range (min … max) 
  18.54 ms ±   6.02 ms     9.11 ms …  26.21 ms  in 10 ×     20 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:375 ("branch - concurrent merge scenario") ok
time (mean ± σ)         range (min … max) 
  14.42 µs ±   4.59 µs    12.21 µs …  27.20 µs  in 10 ×   7340 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:6 ("walker - linear history (10 ops)") ok
time (mean ± σ)         range (min … max) 
 658.79 ns ±   7.35 ns   648.89 ns … 668.61 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.82 µs ±  11.61 ns     4.81 µs …   4.85 µs  in 10 ×  20642 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:38 ("walker - linear history (1000 ops)") ok
time (mean ± σ)         range (min … max) 
  44.26 µs ± 373.40 ns    43.95 µs …  45.23 µs  in 10 ×   2271 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:54 ("walker - concurrent branches (2 agents x 50)") ok
time (mean ± σ)         range (min … max) 
   5.96 µs ±   8.82 ns     5.95 µs …   5.97 µs  in 10 ×  16785 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 ±  17.02 ns     5.93 µs …   5.99 µs  in 10 ×  16851 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:99 ("walker - diamond pattern (50 diamonds)") ok
time (mean ± σ)         range (min … max) 
   7.98 µs ±  12.36 ns     7.97 µs …   8.01 µs  in 10 ×  12542 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.56 µs ±   2.95 ns     3.56 µs …   3.57 µs  in 10 ×  28054 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.48 µs ±  21.36 ns     5.45 µs …   5.52 µs  in 10 ×  18322 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:176 ("walker - large history (10000 ops)") ok
time (mean ± σ)         range (min … max) 
 462.12 µs ±   2.04 µs   459.44 µs … 465.57 µs  in 10 ×    217 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:196 ("walker - linear history (100000 ops)") ok
time (mean ± σ)         range (min … max) 
   7.16 ms ±  81.52 µs     7.05 ms …   7.30 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) 
  26.72 ms ±   3.80 ms    24.21 ms …  34.54 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) 
  55.41 ns ±   0.43 ns    54.61 ns …  55.93 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:15 ("version_vector - create (5 agents)") ok
time (mean ± σ)         range (min … max) 
 245.36 ns ±   0.37 ns   244.97 ns … 246.26 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.38 µs ±   8.98 ns     1.37 µs …   1.40 µs  in 10 ×  72472 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) 
 316.10 ns ±   0.62 ns   315.34 ns … 317.28 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) 
 153.04 ns ±   0.47 ns   152.63 ns … 153.98 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) 
 619.80 ns ±   4.10 ns   616.16 ns … 626.19 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) 
 421.74 ns ±   0.92 ns   420.52 ns … 422.79 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:118 ("version_vector - merge (20 agents)") ok
time (mean ± σ)         range (min … max) 
   2.41 µs ±   4.46 ns     2.40 µs …   2.41 µs  in 10 ×  41378 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) 
 240.67 ns ±   1.07 ns   239.28 ns … 242.30 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) 
 156.20 ns ±   0.65 ns   155.10 ns … 157.03 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:170 ("version_vector - from_frontier (10 ops)") ok
time (mean ± σ)         range (min … max) 
 563.20 ns ±   0.95 ns   561.75 ns … 564.40 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.22 µs ±   5.99 ns     4.21 µs …   4.23 µs  in 10 ×  23691 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) 
 257.70 ns ±   7.13 ns   254.71 ns … 277.91 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.53 µs ±   8.67 ns     4.52 µs …   4.55 µs  in 10 ×  22048 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:251 ("version_vector - agents (5 agents)") ok
time (mean ± σ)         range (min … max) 
  67.23 ns ±   0.76 ns    66.20 ns …  68.47 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.58 ns ±   0.44 ns    12.25 ns …  13.31 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.50 µs ±   2.20 µs   190.54 µs … 197.84 µs  in 10 ×    462 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.93 ms ±  44.34 µs     2.86 ms …   3.00 ms  in 10 ×     34 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:41 ("bench: cache invalidate + position query (10000 chars)") ok
time (mean ± σ)         range (min … max) 
   9.80 ms ± 269.84 µs     9.50 ms …  10.24 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.71 ms ±  59.95 µs     3.63 ms …   3.79 ms  in 10 ×     26 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:84 ("bench: 10 remote inserts + queries (5000-char doc)") ok
time (mean ± σ)         range (min … max) 
  32.97 ms ± 545.14 µs    32.17 ms …  33.72 ms  in 10 ×      3 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.63 ns ±   0.46 ns    94.00 ns …  95.33 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.17 ns ±   0.31 ns    93.83 ns …  94.85 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) 
 541.32 µs ±   3.22 µs   537.55 µs … 546.43 µs  in 10 ×    187 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:2 ("jump - sequential append 1K") ok
time (mean ± σ)         range (min … max) 
 153.02 µs ± 630.58 ns   152.15 µs … 154.30 µs  in 10 ×    650 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.31 µs ± 481.02 ns   149.70 µs … 150.99 µs  in 10 ×    648 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.40 ms ± 116.99 µs     4.24 ms …   4.62 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) 
 150.58 µs ± 704.50 ns   149.39 µs … 151.25 µs  in 10 ×    666 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:6 ("oplog - insert (100 ops)") ok
time (mean ± σ)         range (min … max) 
  51.25 µs ±   1.43 µs    49.90 µs …  54.30 µs  in 10 ×   1842 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:20 ("oplog - insert (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 598.45 µs ±   1.96 µs   595.62 µs … 601.49 µs  in 10 ×    167 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) 
  75.76 µs ±   1.12 µs    74.92 µs …  78.85 µs  in 10 ×   1329 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:58 ("oplog - apply_remote (50 ops)") ok
time (mean ± σ)         range (min … max) 
  35.34 µs ± 139.63 ns    35.17 µs …  35.57 µs  in 10 ×   2635 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:79 ("oplog - get_op (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 124.06 ns ±   0.33 ns   123.75 ns … 124.64 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.23 ns ±   0.34 ns    19.72 ns …  20.69 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.97 ns ±   0.31 ns    24.48 ns …  25.36 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:134 ("oplog - walk_and_collect (100 ops)") ok
time (mean ± σ)         range (min … max) 
   8.38 µs ±  44.86 ns     8.31 µs …   8.44 µs  in 10 ×  11443 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:150 ("oplog - walk_and_collect (concurrent)") ok
time (mean ± σ)         range (min … max) 
  16.02 µs ± 286.11 ns    15.77 µs …  16.57 µs  in 10 ×   6206 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:177 ("oplog - diff_and_collect (advance 20)") ok
time (mean ± σ)         range (min … max) 
   4.81 µs ±   6.99 ns     4.80 µs …   4.83 µs  in 10 ×  20673 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:202 ("oplog - walk_filtered (inserts only)") ok
time (mean ± σ)         range (min … max) 
   7.39 µs ±  17.00 ns     7.36 µs …   7.41 µs  in 10 ×  14012 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:233 ("oplog - sequential typing (500 chars)") ok
time (mean ± σ)         range (min … max) 
 273.94 µs ± 858.98 ns   272.69 µs … 275.18 µs  in 10 ×    368 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:249 ("oplog - random position inserts (100 ops)") ok
time (mean ± σ)         range (min … max) 
  49.78 µs ± 211.30 ns    49.44 µs …  50.05 µs  in 10 ×   2002 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:270 ("oplog - sequential typing (100000 chars)") ok
time (mean ± σ)         range (min … max) 
 162.54 ms ±  26.30 ms   128.26 ms … 193.89 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) 
  61.00 ms ±  14.92 ms    42.90 ms …  80.65 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) 
 103.62 µs ± 365.33 ns   103.27 µs … 104.27 µs  in 10 ×    868 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:22 ("text - insert append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.34 ms ±   5.86 µs     1.33 ms …   1.35 ms  in 10 ×     75 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:35 ("text - insert prepend (100 chars)") ok
time (mean ± σ)         range (min … max) 
 165.68 µs ± 415.70 ns   165.30 µs … 166.45 µs  in 10 ×    603 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) 
 251.88 µs ±   1.04 µs   250.96 µs … 253.82 µs  in 10 ×    394 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:70 ("text - text() (100-char doc)") ok
time (mean ± σ)         range (min … max) 
  14.10 µs ±  56.43 ns    14.02 µs …  14.17 µs  in 10 ×   7137 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:83 ("text - text() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
 146.17 µs ± 811.38 ns   144.97 µs … 147.62 µs  in 10 ×    681 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:96 ("text - len() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
  12.59 ns ±   0.40 ns    12.22 ns …  13.32 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.52 ns ±   0.44 ns    93.04 ns …  94.27 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.85 ns ±   0.61 ns    93.39 ns …  95.16 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:139 ("text - sync export_since (50-op delta, 1000-op base)") ok
time (mean ± σ)         range (min … max) 
  34.45 µs ± 273.88 ns    34.30 µs …  35.20 µs  in 10 ×   2879 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:156 ("text - sync apply (50 remote ops)") ok
time (mean ± σ)         range (min … max) 
  55.60 µs ± 230.21 ns    55.26 µs …  56.04 µs  in 10 ×   1784 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:171 ("text - sync apply (500 remote ops)") ok
time (mean ± σ)         range (min … max) 
 695.17 µs ±   5.78 µs   689.41 µs … 708.85 µs  in 10 ×    145 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:186 ("text - bidirectional sync (2 peers, 50 ops each)") ok
time (mean ± σ)         range (min … max) 
 116.46 µs ± 463.17 ns   115.81 µs … 117.01 µs  in 10 ×    859 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:216 ("text - checkout (midpoint of 100-op doc)") ok
time (mean ± σ)         range (min … max) 
  13.47 µs ±  73.01 ns    13.39 µs …  13.60 µs  in 10 ×   7372 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:233 ("text - checkout (midpoint of 1000-op doc)") ok
time (mean ± σ)         range (min … max) 
 161.61 µs ± 239.00 ns   161.25 µs … 161.97 µs  in 10 ×    620 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.11 µs ±   6.98 ns     2.10 µs …   2.12 µs  in 10 ×  47123 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 ±  18.41 ns     2.43 µs …   2.49 µs  in 10 ×  41189 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:281 ("text - undo undo() (10-op group)") ok
time (mean ± σ)         range (min … max) 
  30.81 µs ± 123.58 ns    30.65 µs …  31.00 µs  in 10 ×   3243 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:295 ("text - undo undo() (50-op group)") ok
time (mean ± σ)         range (min … max) 
 476.78 µs ±   1.94 µs   475.10 µs … 480.26 µs  in 10 ×    208 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) 
  35.00 µs ± 130.83 ns    34.79 µs …  35.21 µs  in 10 ×   2860 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) 
 295.22 µs ±   2.07 µs   292.85 µs … 298.89 µs  in 10 ×    339 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:17 ("cache - sequential append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.35 ms ±  11.07 µs     1.34 ms …   1.37 ms  in 10 ×     73 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:34 ("cache - alternating pos (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   3.28 ms ±  20.85 µs     3.24 ms …   3.31 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) 
   2.10 ms ±  98.58 µs     2.04 ms …   2.33 ms  in 10 ×     49 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.71 ms ±  33.23 µs     2.66 ms …   2.75 ms  in 10 ×     37 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.06 µs ±   1.38 µs     5.97 µs …  10.37 µs  in 10 ×  15988 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:108 ("cache - single non-seq insert on 5000-char doc") ok
time (mean ± σ)         range (min … max) 
   6.80 µs ±   1.23 µs     5.94 µs …  10.07 µs  in 10 ×  13951 runs
Total tests: 105, passed: 105, failed: 0.

PR branch:

Registry index updated successfully
Symbols updated successfully
Using cached moonbitlang/quickcheck@0.11.2
Using cached dowdiness/rle@0.2.0
Downloading dowdiness/alga@0.3.0
Downloading dowdiness/btree@0.1.0
Downloading dowdiness/order-tree@0.1.0
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:21 ("merge - concurrent edits (2 agents x 10)") ok
time (mean ± σ)         range (min … max) 
  23.63 µs ± 668.51 ns    22.82 µs …  24.93 µs  in 10 ×   3741 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) 
 120.83 µs ± 599.98 ns   120.05 µs … 121.88 µs  in 10 ×    835 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) 
 539.52 µs ±   5.00 µs   531.41 µs … 544.93 µs  in 10 ×    185 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) 
 153.62 µs ±   1.18 µs   152.74 µs … 156.80 µs  in 10 ×    652 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) 
 115.08 µs ± 392.96 ns   114.44 µs … 115.62 µs  in 10 ×    871 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_merge_benchmark.mbt:230 ("merge - graph_diff advance (20 ops)") ok
time (mean ± σ)         range (min … max) 
  75.11 µs ± 336.43 ns    74.72 µs …  75.74 µs  in 10 ×   1306 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) 
 115.01 µs ± 599.50 ns   114.48 µs … 116.53 µs  in 10 ×    870 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) 
 204.93 µs ±   1.73 µs   202.96 µs … 208.01 µs  in 10 ×    487 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) 
  39.30 µs ±  15.30 µs    27.51 µs …  73.16 µs  in 10 ×   2485 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:6 ("branch - checkout (10 ops)") ok
time (mean ± σ)         range (min … max) 
   4.69 µs ±   1.11 µs     3.95 µs …   6.83 µs  in 10 ×   3693 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:29 ("branch - checkout (100 ops)") ok
time (mean ± σ)         range (min … max) 
  29.85 µs ± 323.14 ns    29.63 µs …  30.71 µs  in 10 ×   3382 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:47 ("branch - checkout (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 419.91 µs ±   1.82 µs   417.96 µs … 422.97 µs  in 10 ×    239 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:65 ("branch - advance (10 new ops)") ok
time (mean ± σ)         range (min … max) 
  12.09 µs ±   4.37 µs     8.91 µs …  21.68 µs  in 10 ×   8486 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:91 ("branch - advance (100 new ops)") ok
time (mean ± σ)         range (min … max) 
 103.99 µs ±  53.79 µs    61.38 µs … 201.29 µs  in 10 ×   1106 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:117 ("branch - checkout with concurrent branches") ok
time (mean ± σ)         range (min … max) 
  35.19 µs ± 200.90 ns    35.03 µs …  35.66 µs  in 10 ×   2854 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:145 ("branch - checkout with deletes") ok
time (mean ± σ)         range (min … max) 
  36.29 µs ± 167.28 ns    36.06 µs …  36.51 µs  in 10 ×   2733 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.14 µs ± 659.70 ns    25.32 µs …  27.24 µs  in 10 ×   3814 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.49 ms ±   3.88 ms     2.72 ms …  14.06 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.35 µs ±  40.64 ns    11.29 µs …  11.41 µs  in 10 ×   8695 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:264 ("branch - to_text (1000 chars)") ok
time (mean ± σ)         range (min … max) 
 119.69 µs ± 358.82 ns   119.16 µs … 120.10 µs  in 10 ×    836 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 ± 204.43 ns     3.70 µs …   4.30 µs  in 10 ×  26631 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:311 ("branch - single advance (50 new ops)") ok
time (mean ± σ)         range (min … max) 
  48.71 µs ±  25.58 µs    30.72 µs …  99.41 µs  in 10 ×   2301 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:342 ("branch - realistic typing (50 chars)") ok
time (mean ± σ)         range (min … max) 
  13.93 ms ±   4.82 ms     7.36 ms …  20.65 ms  in 10 ×     20 runs
[dowdiness/event-graph-walker] bench internal/branch/branch_benchmark.mbt:375 ("branch - concurrent merge scenario") ok
time (mean ± σ)         range (min … max) 
  14.58 µs ±   4.63 µs    12.33 µs …  27.48 µs  in 10 ×   7316 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:6 ("walker - linear history (10 ops)") ok
time (mean ± σ)         range (min … max) 
 669.75 ns ±   7.19 ns   661.26 ns … 679.34 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.88 µs ±  24.19 ns     4.86 µs …   4.93 µs  in 10 ×  20444 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.84 µs ± 544.68 ns    43.48 µs …  45.29 µs  in 10 ×   2043 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.10 µs ±  19.50 ns     6.07 µs …   6.12 µs  in 10 ×  16443 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.02 µs ±  15.74 ns     6.00 µs …   6.04 µs  in 10 ×  16567 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.08 µs ±  78.12 ns     8.04 µs …   8.30 µs  in 10 ×  12470 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 ±  20.01 ns     3.44 µs …   3.51 µs  in 10 ×  28924 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.52 µs ±  13.42 ns     5.51 µs …   5.55 µs  in 10 ×  18098 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:176 ("walker - large history (10000 ops)") ok
time (mean ± σ)         range (min … max) 
 466.03 µs ± 545.61 ns   465.28 µs … 466.92 µs  in 10 ×    215 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/walker_benchmark.mbt:196 ("walker - linear history (100000 ops)") ok
time (mean ± σ)         range (min … max) 
   8.65 ms ± 202.62 µs     8.39 ms …   9.09 ms  in 10 ×     12 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) 
  29.72 ms ±   3.39 ms    26.55 ms …  35.17 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) 
  56.04 ns ±   0.79 ns    55.06 ns …  57.15 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) 
 248.46 ns ±   0.55 ns   247.78 ns … 249.36 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.38 µs ±   2.25 ns     1.38 µs …   1.39 µs  in 10 ×  72436 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) 
 323.31 ns ±   0.93 ns   321.81 ns … 324.36 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:63 ("version_vector - compare <= (5 agents)") ok
time (mean ± σ)         range (min … max) 
 149.97 ns ±   0.71 ns   149.33 ns … 151.30 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) 
 632.81 ns ±   3.63 ns   630.41 ns … 642.85 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) 
 425.99 ns ±   1.43 ns   423.88 ns … 428.82 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/causal_graph/version_vector_benchmark.mbt:118 ("version_vector - merge (20 agents)") ok
time (mean ± σ)         range (min … max) 
   2.44 µs ±   5.20 ns     2.43 µs …   2.45 µs  in 10 ×  40894 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) 
 242.06 ns ±   1.20 ns   240.46 ns … 243.79 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) 
 156.71 ns ±   0.78 ns   155.86 ns … 157.99 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) 
 569.80 ns ±   0.91 ns   568.35 ns … 571.30 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.52 µs ± 180.89 ns     4.34 µs …   4.90 µs  in 10 ×  22844 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) 
 257.12 ns ±  10.43 ns   251.59 ns … 285.38 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.89 µs ± 247.39 ns     4.61 µs …   5.34 µs  in 10 ×  20936 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.55 ns ±   0.82 ns    67.58 ns …  70.02 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) 
  19.90 ns ±   0.81 ns    19.02 ns …  21.50 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) 
 196.42 µs ±   3.89 µs   189.55 µs … 201.34 µs  in 10 ×    468 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.02 ms ±  66.98 µs     2.93 ms …   3.10 ms  in 10 ×     34 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:41 ("bench: cache invalidate + position query (10000 chars)") ok
time (mean ± σ)         range (min … max) 
   9.88 ms ± 228.07 µs     9.63 ms …  10.23 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.79 ms ± 117.42 µs     3.67 ms …   4.03 ms  in 10 ×     26 runs
[dowdiness/event-graph-walker] bench internal/document/document_benchmark.mbt:84 ("bench: 10 remote inserts + queries (5000-char doc)") ok
time (mean ± σ)         range (min … max) 
  33.14 ms ±   1.02 ms    32.22 ms …  35.15 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.44 ns ±   0.55 ns    93.01 ns …  94.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) 
  93.60 ns ±   0.69 ns    92.70 ns …  94.88 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) 
 532.61 µs ±   2.18 µs   529.82 µs … 536.73 µs  in 10 ×    187 runs
[dowdiness/event-graph-walker] bench internal/fugue/jump_ancestors_benchmark.mbt:2 ("jump - sequential append 1K") ok
time (mean ± σ)         range (min … max) 
 151.28 µs ± 763.42 ns   150.48 µs … 152.56 µs  in 10 ×    660 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) 
 148.96 µs ±   1.78 µs   147.36 µs … 151.97 µs  in 10 ×    675 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.40 ms ±  90.73 µs     4.27 ms …   4.57 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) 
 148.01 µs ± 694.49 ns   147.36 µs … 149.55 µs  in 10 ×    679 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:6 ("oplog - insert (100 ops)") ok
time (mean ± σ)         range (min … max) 
  50.23 µs ±   1.28 µs    49.35 µs …  53.26 µs  in 10 ×   1885 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:20 ("oplog - insert (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 591.58 µs ±   2.83 µs   587.41 µs … 597.05 µs  in 10 ×    170 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) 
  71.53 µs ± 197.93 ns    71.29 µs …  71.80 µs  in 10 ×   1401 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:58 ("oplog - apply_remote (50 ops)") ok
time (mean ± σ)         range (min … max) 
  32.93 µs ±  39.69 ns    32.86 µs …  33.00 µs  in 10 ×   3032 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:79 ("oplog - get_op (1000 ops)") ok
time (mean ± σ)         range (min … max) 
 124.36 ns ±   0.24 ns   124.09 ns … 124.76 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.41 ns ±   0.28 ns    19.96 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) 
  24.90 ns ±   0.20 ns    24.52 ns …  25.28 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:134 ("oplog - walk_and_collect (100 ops)") ok
time (mean ± σ)         range (min … max) 
   8.42 µs ±  31.75 ns     8.37 µs …   8.47 µs  in 10 ×  11716 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:150 ("oplog - walk_and_collect (concurrent)") ok
time (mean ± σ)         range (min … max) 
  15.76 µs ±  72.77 ns    15.62 µs …  15.83 µs  in 10 ×   6366 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:177 ("oplog - diff_and_collect (advance 20)") ok
time (mean ± σ)         range (min … max) 
   4.82 µs ±  11.33 ns     4.81 µs …   4.85 µs  in 10 ×  20622 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:202 ("oplog - walk_filtered (inserts only)") ok
time (mean ± σ)         range (min … max) 
   7.34 µs ±  35.21 ns     7.31 µs …   7.42 µs  in 10 ×  14209 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:233 ("oplog - sequential typing (500 chars)") ok
time (mean ± σ)         range (min … max) 
 270.60 µs ± 634.65 ns   269.77 µs … 271.34 µs  in 10 ×    371 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:249 ("oplog - random position inserts (100 ops)") ok
time (mean ± σ)         range (min … max) 
  49.32 µs ± 184.74 ns    49.05 µs …  49.59 µs  in 10 ×   2023 runs
[dowdiness/event-graph-walker] bench internal/oplog/oplog_benchmark.mbt:270 ("oplog - sequential typing (100000 chars)") ok
time (mean ± σ)         range (min … max) 
 164.20 ms ±  25.55 ms   129.66 ms … 190.70 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) 
  61.63 ms ±  14.25 ms    44.14 ms …  76.33 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) 
 102.66 µs ± 323.70 ns   102.11 µs … 103.11 µs  in 10 ×    858 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:22 ("text - insert append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.33 ms ±   4.43 µs     1.32 ms …   1.34 ms  in 10 ×     75 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:35 ("text - insert prepend (100 chars)") ok
time (mean ± σ)         range (min … max) 
 163.83 µs ± 452.35 ns   163.13 µs … 164.47 µs  in 10 ×    609 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) 
 248.04 µs ± 727.36 ns   247.04 µs … 249.04 µs  in 10 ×    404 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:70 ("text - text() (100-char doc)") ok
time (mean ± σ)         range (min … max) 
  14.13 µs ±  68.84 ns    14.05 µs …  14.24 µs  in 10 ×   7031 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:83 ("text - text() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
 145.86 µs ± 427.40 ns   145.28 µs … 146.52 µs  in 10 ×    690 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:96 ("text - len() (1000-char doc)") ok
time (mean ± σ)         range (min … max) 
  12.50 ns ±   0.38 ns    12.20 ns …  13.21 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) 
  94.42 ns ±   0.34 ns    93.70 ns …  94.81 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) 
  95.59 ns ±   0.54 ns    94.83 ns …  96.43 ns  in 10 × 100000 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:139 ("text - sync export_since (50-op delta, 1000-op base)") ok
time (mean ± σ)         range (min … max) 
  34.20 µs ± 162.55 ns    33.99 µs …  34.43 µs  in 10 ×   2899 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:156 ("text - sync apply (50 remote ops)") ok
time (mean ± σ)         range (min … max) 
  56.25 µs ± 466.67 ns    55.54 µs …  57.02 µs  in 10 ×   1776 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:171 ("text - sync apply (500 remote ops)") ok
time (mean ± σ)         range (min … max) 
 700.71 µs ±   7.37 µs   692.16 µs … 710.65 µs  in 10 ×    144 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) 
 117.11 µs ± 766.16 ns   116.01 µs … 118.24 µs  in 10 ×    850 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:216 ("text - checkout (midpoint of 100-op doc)") ok
time (mean ± σ)         range (min … max) 
  13.47 µs ±  23.77 ns    13.42 µs …  13.50 µs  in 10 ×   7379 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:233 ("text - checkout (midpoint of 1000-op doc)") ok
time (mean ± σ)         range (min … max) 
 161.85 µs ± 675.99 ns   160.96 µs … 162.68 µs  in 10 ×    619 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.11 µs ±   2.44 ns     2.10 µs …   2.11 µs  in 10 ×  47431 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.47 µs ±  16.56 ns     2.45 µs …   2.49 µs  in 10 ×  40934 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:281 ("text - undo undo() (10-op group)") ok
time (mean ± σ)         range (min … max) 
  33.59 µs ±   5.07 µs    30.99 µs …  43.56 µs  in 10 ×   3093 runs
[dowdiness/event-graph-walker] bench text/text_benchmark.mbt:295 ("text - undo undo() (50-op group)") ok
time (mean ± σ)         range (min … max) 
 477.72 µs ±   2.87 µs   475.50 µs … 483.45 µs  in 10 ×    207 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) 
  35.14 µs ± 108.83 ns    34.95 µs …  35.30 µs  in 10 ×   2858 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) 
 294.27 µs ±   1.95 µs   292.43 µs … 299.40 µs  in 10 ×    340 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:17 ("cache - sequential append (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   1.35 ms ±   7.49 µs     1.34 ms …   1.36 ms  in 10 ×     75 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:34 ("cache - alternating pos (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   3.26 ms ±  37.42 µs     3.20 ms …   3.33 ms  in 10 ×     31 runs
[dowdiness/event-graph-walker] bench text/position_cache_benchmark.mbt:52 ("cache - jump to pos 0 every 10 chars (1000 chars)") ok
time (mean ± σ)         range (min … max) 
   2.08 ms ±  24.55 µs     2.04 ms …   2.12 ms  in 10 ×     49 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.68 ms ±  25.41 µs     2.64 ms …   2.71 ms  in 10 ×     37 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.50 µs ±   1.32 µs     6.37 µs …  10.50 µs  in 10 ×  15842 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.11 µs ±   1.77 µs     5.83 µs …  11.39 µs  in 10 ×  15210 runs
Total tests: 105, passed: 105, failed: 0.

Benchmarks run with --release flag

@dowdiness dowdiness merged commit 745b5cd into main May 31, 2026
27 checks passed
@dowdiness dowdiness deleted the docs/413-responsibility-map branch May 31, 2026 11:30
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.

docs: codify repository responsibility map and extension points

1 participant