Skip to content

fix: preserve BubbleBench container compatibility - #27928

Merged
Jenn (jenn-le) merged 3 commits into
mainfrom
jenn-le-preserve-bubblebench-compatibility
Aug 11, 2026
Merged

fix: preserve BubbleBench container compatibility#27928
Jenn (jenn-le) merged 3 commits into
mainfrom
jenn-le-preserve-bubblebench-compatibility

Conversation

@jenn-le

@jenn-le Jenn (jenn-le) commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Description

BubbleBench needs to support both Fluid Tree arrays and native arrays. This PR introduces a minimal shared collection contract so the benchmark remains compatible with both container implementations without requiring the full built-in array interface.

This is an internal-only change to private BubbleBench packages, so it does not include a changeset.

Validation performed:

  • git diff --check upstream/main...HEAD
  • build:compile for all five BubbleBench packages: common, baseline, ot, experimental-tree, and shared-tree
  • Jest suites run sequentially for ot, experimental-tree, and shared-tree (all passed)

Reviewer Guidance

The review process is outlined on this wiki page.

The diff is limited to the shared BubbleBench collection type and its three Tree/OT adapters.

Jenn (jenn-le) and others added 2 commits August 11, 2026 10:29
Use Fluid-owned iterable contracts and a minimal read-only bubble collection so both SharedTree arrays and native arrays satisfy BubbleBench's shared model types.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings August 11, 2026 17:31
@jenn-le
Jenn (jenn-le) requested a review from a team as a code owner August 11, 2026 17:31
@github-actions github-actions Bot added area: examples Changes that focus on our examples area: tools area: repo Repo related work area: website changeset-present base: main PRs targeted against main branch labels Aug 11, 2026
@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Hi! Thank you for opening this PR. Want me to review it?

Based on the diff (23 lines, 4 files), I've queued these reviewers:

  • Correctness — logic errors, race conditions, lifecycle issues
  • Security — vulnerabilities, secret exposure, injection
  • API Compatibility — breaking changes, release tags, type design
  • Performance — algorithmic regressions, memory leaks
  • Testing — coverage gaps, hollow tests

How this works

  • Adjust the reviewer set by ticking/unticking boxes above. Reviewer toggles alone don't trigger anything.

  • Tick Start review below to dispatch the review fleet.

  • After review finishes, tick Start review again to request another run — it auto-resets after each dispatch.

  • This comment updates as new commits land; your reviewer selections are preserved.

  • Start review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR updates BubbleBench’s shared types and container adapters to use FluidIterable and a minimal “bubble collection” contract, keeping the benchmark compatible with both Fluid Tree array nodes and native JavaScript arrays without requiring full Array semantics.

Changes:

  • Introduces a minimal ReadonlyBubbleCollection contract for IClient.bubbles and switches IAppState.clients to FluidIterable.
  • Updates the OT, experimental-tree, and shared-tree adapters to expose clients as FluidIterable.
  • Adds a standalone (no-package) changeset documenting the compatibility fix for release notes.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
examples/benchmarks/bubblebench/shared-tree/src/appState.ts Updates clients to return FluidIterable for compatibility with Tree arrays.
examples/benchmarks/bubblebench/ot/src/state.ts Adjusts the array-ish adapter contract to use FluidIterable instead of Iterable.
examples/benchmarks/bubblebench/experimental-tree/src/state.ts Updates clients to FluidIterable to align with the shared contract.
examples/benchmarks/bubblebench/common/src/types.ts Introduces ReadonlyBubbleCollection and switches clients to FluidIterable in the shared types.
.changeset/preserve-bubblebench-container-compatibility.md Adds a no-package changeset entry documenting the fix in release notes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

Bundle size comparison

Base commit: 086df4005ac5d312aeceab30ed5298fbe68629d4
Head commit: ebb45ed0339856df67bec8ace19c5352c97f7b26

Notable changes

No bundles changed by ≥ 500 bytes parsed.

Per-bundle deltas

@fluid-example/bundle-size-tests

  • fluidFrameworkAllAlpha.js: parsed 780911 → 780953 (+42), gzip 214191 → 214226 (+35)
  • azureClient.js: parsed 624465 → 624521 (+56), gzip 166500 → 166545 (+45)
  • odspClient.js: parsed 596753 → 596809 (+56), gzip 159641 → 159685 (+44)
  • aqueduct.js: parsed 530843 → 530878 (+35), gzip 141979 → 142008 (+29)
  • fluidFramework.js: parsed 399466 → 399487 (+21), gzip 113434 → 113450 (+16)
  • sharedTree.js: parsed 388870 → 388884 (+14), gzip 110880 → 110889 (+9)
  • containerRuntime.js: parsed 308960 → 308974 (+14), gzip 84482 → 84488 (+6)
  • sharedString.js: parsed 176457 → 176464 (+7), gzip 49807 → 49815 (+8)
  • experimentalSharedTree.js: parsed 160677 → 160677 (0), gzip 46276 → 46276 (0)
  • matrix.js: parsed 160302 → 160309 (+7), gzip 45800 → 45807 (+7)
  • loader.js: parsed 145700 → 145714 (+14), gzip 39284 → 39300 (+16)
  • odspDriver.js: parsed 103906 → 103927 (+21), gzip 32404 → 32411 (+7)
  • directory.js: parsed 67110 → 67117 (+7), gzip 18859 → 18866 (+7)
  • 578.js: parsed 58686 → 58686 (0), gzip 17657 → 17657 (0)
  • map.js: parsed 47205 → 47212 (+7), gzip 14455 → 14462 (+7)
  • odspPrefetchSnapshot.js: parsed 45635 → 45649 (+14), gzip 15242 → 15249 (+7)
  • 252.js: parsed 44371 → 44371 (0), gzip 13732 → 13732 (0)
  • summarizerDelayLoadedModule.js: parsed 30717 → 30717 (0), gzip 7716 → 7716 (0)
  • socketModule.js: parsed 26469 → 26476 (+7), gzip 7896 → 7904 (+8)
  • createNewModule.js: parsed 12454 → 12454 (0), gzip 4797 → 4797 (0)
  • summaryModule.js: parsed 3789 → 3789 (0), gzip 1857 → 1857 (0)
  • connectionState.js: parsed 909 → 909 (0), gzip 500 → 500 (0)
  • sharedTreeAttributes.js: parsed 847 → 854 (+7), gzip 499 → 507 (+8)
  • debugAssert.js: parsed 429 → 429 (0), gzip 299 → 299 (0)
  • FluidFramework-HashFallback.js: parsed 419 → 419 (0), gzip 313 → 313 (0)

@jenn-le
Jenn (jenn-le) merged commit 5f6506c into main Aug 11, 2026
40 checks passed
@jenn-le
Jenn (jenn-le) deleted the jenn-le-preserve-bubblebench-compatibility branch August 11, 2026 21:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: examples Changes that focus on our examples area: repo Repo related work area: tools area: website base: main PRs targeted against main branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants