Skip to content

SRE-974: Update vite and storybook, add esbuild resolution for tsup - #9373

Merged
claude[bot] merged 2 commits into
mainfrom
claude/sre-974-scope-esbuild-to-0-28
Aug 31, 2026
Merged

SRE-974: Update vite and storybook, add esbuild resolution for tsup#9373
claude[bot] merged 2 commits into
mainfrom
claude/sre-974-scope-esbuild-to-0-28

Conversation

@claude

@claude claude Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Requested by Ciaran Morinan · Slack thread

🌟 What is the purpose of this PR?

This removes esbuild 0.27.7 from yarn.lock by moving the first-party pins that held it there, leaving a single resolutions entry for the one consumer that cannot be moved.

Before: esbuild 0.27.7 is in the lockfile. It carries GHSA-g7r4-m6w7-qqqr, a low-severity arbitrary file read in esbuild's development server on Windows (CVSS 2.5), affecting >=0.27.3 <0.28.1 and fixed in 0.28.1. Four consumers share that one locked copy, and each declares a range that stops below 0.28: vite@7.3.5 and tsup@^8.5.1 in libs/@hashintel/ds-components, storybook@10.3.6 in libs/@hashintel/petrinaut, and storybook@10.2.19 in libs/@hashintel/refractive.

After: esbuild 0.27.7 is absent from the lockfile. Three of those four consumers are moved to versions that accept 0.28 on their own, so they need no help: vite 7.3.6 widened its range to ^0.27.0 || ^0.28.0, and storybook 10.4.6 widened its chain to include ^0.28.0. Only tsup still needs a resolutions entry. The lockfile now holds two esbuild groups instead of three, 0.28.2 and 0.25.12, and the 0.25.12 entry is byte-identical to main — same four descriptors (^0.18.0 || … || ^0.25.0, ^0.25.0, ^0.25.1, ~0.25.0), same resolved version.

Bumping the pins is preferred over scoping a resolutions entry at each consumer. A resolution silently rewrites a dependency's own declared range, so it has to be revisited every time that consumer's version changes, and entries keyed to exact versions (vite@npm:7.3.5, storybook@npm:10.2.19, storybook@npm:10.3.6) would have gone stale on the next routine bump.

🔗 Related links

🚫 Blocked by

  • Nothing.

🔍 What does this change?

Six version bumps across three workspaces:

Workspace Package From To
libs/@hashintel/ds-components vite 7.3.5 7.3.6
libs/@hashintel/petrinaut storybook 10.3.6 10.4.6
libs/@hashintel/petrinaut @storybook/react-vite 10.2.19 10.4.6
libs/@hashintel/refractive storybook 10.2.19 10.4.6
libs/@hashintel/refractive @storybook/react-vite 10.2.19 10.4.6
root resolutions + "tsup/esbuild": "^0.28.1"

All are exact pins, as .yarnrc.yml sets defaultSemverRangePrefix: "".

@storybook/react-vite moves in both workspaces alongside storybook because Storybook requires its packages in lockstep — @storybook/react-vite@10.4.6 declares storybook: ^10.4.6 as a peer. It had drifted to 10.2.19 in both places while storybook itself was 10.3.6 in petrinaut, so this also closes a pre-existing skew. Every versioned Storybook package in the tree now resolves to 10.4.6: storybook, @storybook/react-vite, @storybook/react, @storybook/builder-vite, @storybook/csf-plugin and @storybook/react-dom-shim. @storybook/csf, @storybook/global and @storybook/icons are versioned independently of the 10.x line and are unaffected.

The one remaining resolutions entry is tsup/esbuild. tsup 8.5.1 declares esbuild: ^0.27.0, whose highest match is exactly 0.27.7, so dropping this entry would bring the advisory straight back. It needs no version selector because the lockfile holds a single tsup@npm:^8.5.1 entry.

storybook 9.1.19 in libs/@hashintel/query-editor and libs/@hashintel/type-editor is untouched. Its esbuild range stops at ^0.25.0, so it resolves to the clean 0.25.12 group and can never reach 0.27.

Pre-Merge Checklist 🚀

🚢 Has this modified a publishable library?

This PR:

  • does not modify any publishable blocks or libraries, or modifications do not need publishing

Three publishable libraries have their manifests touched, but only in devDependencies, and no published output changes. ds-components is built by tsup and tsc; its vite is used by vitest and Ladle, not by the library build. petrinaut and refractive are built by vite 8.1.0, which this PR does not change. Storybook is development tooling in all three. So no changeset is required.

📜 Does this require a change to the docs?

The changes in this PR:

  • are internal and do not require a docs change

🕸️ Does this require a change to the Turbo Graph?

The changes in this PR:

  • do not affect the execution graph

No scripts entry is added, removed or renamed.

⚠️ Known issues

This is lockfile hygiene rather than a fix for live exposure. The vulnerable code path is esbuild's development server on Windows, reached through --servedir or the serve() API. None of tsup, vite or storybook references servedir or calls serve() anywhere in its published dist, so no consumer here started that server. Removing 0.27.7 closes the scanner finding.

storybook 10.2.19 → 10.4.6 and 10.3.6 → 10.4.6 are minor bumps within the 10.x line. The Storybook builds and the petrinaut test suite pass on 10.4.6 (see below), and no .storybook config or story file needed changing.

@storybook/react-vite 10.4.6 moves @joshwooding/vite-plugin-react-docgen-typescript from ^0.6.4 to ^0.7.0, which pulls in oxc-parser and oxc-resolver. Those two account for most of the lockfile growth: their platform binaries are optional per-architecture packages, so the lockfile gains around 45 entries while the installed footprint changes by 8 packages. This affects Storybook's docgen at development time only; it is not in any library's build path.

yarn dedupe --strategy highest is run as part of this change. The new @emnapi and @napi-rs/wasm-runtime transitives arrived at versions that left four older copies dedupable, which yarn lint:yarn-deduplicate treats as a failure. That check now passes.

esbuild 0.28.0's only breaking change is integrity checking in the npm install script. .yarnrc.yml sets enableScripts: false, so that script does not run here in any case; the platform binary comes from the @esbuild/* optional dependency. Nothing in 0.28.0 changes the build API.

🐾 Next steps

  • The tsup/esbuild entry can come out when tsup publishes above 8.5.1, or when ds-components moves off tsup. There is no release to wait for: tsup's README declares the project unmaintained and points at tsdown, the last publish was 8.5.1 on 2025-11-12, and egoist/tsup#1401, the Renovate PR that performs this exact bump, has been open with no maintainer reply since 2026-06-14. Moving ds-components from tsup to tsdown would remove the last entry and is worth a ticket of its own.

🛡 What tests cover this?

Existing tests. This changes no source code.

What I ran locally on this branch:

  • yarn install — succeeds, and regenerates the lockfile.
  • grep -n 'esbuild@npm:0\.27' yarn.lock — returns nothing. grep -c '0\.27\.7' yarn.lock returns 0.
  • The esbuild@npm:0.25.12 entry is byte-identical to main, compared programmatically rather than by eye.
  • Installed esbuild binaries are only 0.28.2 (2 copies) and 0.25.12 (5 copies, in tsx, bundle-n-require, @ladle/react, type-editor and query-editor). No 0.27.x is on disk.
  • yarn lint:format — passes.
  • yarn dedupe --strategy highest --check — passes, which is what yarn lint:yarn-deduplicate runs.
  • yarn workspace @hashintel/ds-components build — passes (tsup + tsc + panda ship).
  • yarn workspace @hashintel/refractive build — passes.
  • yarn workspace @hashintel/refractive build-storybook — passes on Storybook 10.4.6.
  • yarn workspace @hashintel/petrinaut build — passes.
  • yarn workspace @hashintel/ds-components test:unit — 7 files, 87 tests, all pass.
  • yarn workspace @hashintel/petrinaut test:unit — 33 files, 267 tests, all pass.

petrinaut's build and tests need @hashintel/petrinaut-core built first; the earlier report that they fail on both this branch and main was that missing prerequisite, not a real failure. With yarn workspace @hashintel/petrinaut-core build run beforehand, both pass. turbo orders this automatically in CI.

❓ How to test this?

  1. Check out the branch and run yarn install --immutable.
  2. Confirm grep 'esbuild@npm:0\.27' yarn.lock returns nothing, and that the esbuild@npm:0.25.12 entry is unchanged against main.
  3. Run turbo run build --filter '@hashintel/ds-components' --filter '@hashintel/petrinaut' --filter '@hashintel/refractive' and confirm all three succeed.
  4. Run yarn workspace @hashintel/refractive build-storybook and confirm Storybook 10.4.6 builds.

📹 Demo

Not applicable.


Generated by Claude Code

@vercel

vercel Bot commented Aug 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hash Ready Ready Preview Aug 31, 2026 10:38am
hashdotdesign-tokens Ready Ready Preview Aug 31, 2026 10:38am
petrinaut Ready Ready Preview Aug 31, 2026 10:38am
petrinaut-docs Ready Ready Preview Aug 31, 2026 10:38am

Request Review

@codecov

codecov Bot commented Aug 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 61.01%. Comparing base (390d7ee) to head (c6572ae).
⚠️ Report is 7 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #9373      +/-   ##
==========================================
+ Coverage   60.66%   61.01%   +0.35%     
==========================================
  Files        1439     1448       +9     
  Lines      143119   144648    +1529     
  Branches     6654     6692      +38     
==========================================
+ Hits        86817    88262    +1445     
- Misses      55211    55282      +71     
- Partials     1091     1104      +13     
Flag Coverage Δ
apps.hash-ai-worker-ts 1.99% <ø> (ø)
apps.hash-api 14.68% <ø> (ø)
blockprotocol.type-system 40.84% <ø> (ø)
local.claude-hooks 0.00% <ø> (ø)
local.harpc-client 51.49% <ø> (ø)
local.hash-backend-utils 3.27% <ø> (ø)
local.hash-graph-sdk 10.02% <ø> (ø)
local.hash-isomorphic-utils 12.22% <ø> (ø)
rust.antsi 2.36% <ø> (ø)
rust.error-stack 90.81% <ø> (ø)
rust.harpc-codec 84.70% <ø> (ø)
rust.harpc-net 96.19% <ø> (-0.02%) ⬇️
rust.harpc-tower 67.03% <ø> (ø)
rust.harpc-types 0.00% <ø> (ø)
rust.harpc-wire-protocol 92.23% <ø> (ø)
rust.hash-codec 72.76% <ø> (ø)
rust.hash-config 74.74% <ø> (-25.26%) ⬇️
rust.hash-graph-api 19.76% <ø> (-1.28%) ⬇️
rust.hash-graph-authentication 97.00% <ø> (+0.97%) ⬆️
rust.hash-graph-authorization 63.14% <ø> (ø)
rust.hash-graph-embeddings 91.88% <ø> (ø)
rust.hash-graph-postgres-store 32.02% <ø> (+0.30%) ⬆️
rust.hash-graph-store 48.41% <ø> (-0.09%) ⬇️
rust.hash-graph-temporal-versioning 50.18% <ø> (+2.22%) ⬆️
rust.hash-graph-types 0.00% <ø> (ø)
rust.hash-graph-validation 84.71% <ø> (ø)
rust.hash-middleware 92.19% <ø> (∅)
rust.hashql-ast 89.63% <ø> (ø)
rust.hashql-compiletest 28.39% <ø> (ø)
rust.hashql-core 78.95% <ø> (ø)
rust.hashql-diagnostics 72.51% <ø> (ø)
rust.hashql-eval 79.82% <ø> (ø)
rust.hashql-hir 89.09% <ø> (ø)
rust.hashql-mir 87.92% <ø> (ø)
rust.hashql-syntax-jexpr 94.04% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@codspeed-hq

codspeed-hq Bot commented Aug 27, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 98 untouched benchmarks


Comparing claude/sre-974-scope-esbuild-to-0-28 (c6572ae) with main (3ebd68c)

Open in CodSpeed

@claude

claude Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor Author

Both Sourcemaps matrix jobs failed on this head (e2e12a8): Sourcemaps (@apps/hash-ai-worker-ts) and Sourcemaps (@apps/hash-integration-worker).

The cause is a Sentry-side 504 gateway timeout from sentry-cli login, in the Log in to Sentry step. That is a network step that runs before any build, and Build sourcemaps was skipped in both jobs — so nothing was compiled and no bundler ran.

This is therefore not a failure of this PR, and there is no fix to port: the fault is external. Re-running both jobs once.


Generated by Claude Code

@cursor

cursor Bot commented Aug 31, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Dev-tooling and lockfile-only changes; scoped resolution limits esbuild bumps to tsup while Storybook/Vite pins are routine minor upgrades with no runtime product impact.

Overview
Removes esbuild 0.27.7 from the lockfile (GHSA-g7r4-m6w7-qqqr) by pinning tsup/esbuild to ^0.28.1 at the repo root and refreshing dependent tooling so other consumers no longer need separate esbuild overrides.

@hashintel/ds-components bumps Vite 7.3.57.3.6, which widens its esbuild range to include 0.28.x. @hashintel/petrinaut and @hashintel/refractive align Storybook and @storybook/react-vite on 10.4.6 (petrinaut was on 10.3.6 / mixed pins; refractive was on 10.2.19). The regenerated yarn.lock drops the 0.27.7 esbuild tree, consolidates affected paths on 0.28.2, and pulls in Storybook 10.4.6’s transitive updates (e.g. oxc-parser, oxc-resolver, esbuild 0.28 for Storybook’s own dependency).

No application source changes—only manifest pins, one scoped resolution, and lockfile hygiene.

Reviewed by Cursor Bugbot for commit c6572ae. Bugbot is set up for automated code reviews on this repo. Configure here.

Move vite to 7.3.6 in ds-components and storybook to 10.4.6 in petrinaut
and refractive, taking @storybook/react-vite to 10.4.6 in both so every
Storybook package sits on one version, as Storybook requires.

These versions accept esbuild 0.28, so the vite@7.3.5, storybook@10.2.19
and storybook@10.3.6 resolutions no longer earn their place. Keep
tsup/esbuild: tsup is unmaintained and still asks for esbuild ^0.27.0,
the last remaining route to the vulnerable 0.27.7.
@github-actions github-actions Bot added area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team area/apps > hash.design Affects the `hash.design` design site (app) labels Aug 31, 2026
@claude
claude Bot deployed to pull-request August 31, 2026 10:22 Active
@claude
claude Bot deployed to pull-request August 31, 2026 10:22 Active
@CiaranMn CiaranMn changed the title SRE-974: Scope esbuild resolutions to ^0.28.1 to drop 0.27.7 SRE-974: Update vite and storybook, add esbuild resolution for tsup Aug 31, 2026
@CiaranMn
CiaranMn enabled auto-merge August 31, 2026 10:23
@CiaranMn
CiaranMn added this pull request to the merge queue Aug 31, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 31, 2026
@claude

claude Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

The merge queue dropped this PR at 11:05 UTC today with CI_FAILURE. The only check that failed was the Deploy workflow on the queue branch gh-readonly-queue/main/pr-9373-299b39b8… (head 67e26d9), run 33384028527, job Build integration-worker (arm64). It died inside the turbo build --filter '@apps/hash-integration-worker' layer with mise ERROR "cargo-insta" couldn't exec process: No such file or directory. That is a concurrent-install race, not a build error: four packages' build:types tasks each on-demand-install cargo:cargo-insta through mise exec, and one of them tried to exec the binary about 11 ms after a sibling had started installing it. It only shows up on arm64 because cargo-insta ships no linux-arm64 binary, so the install compiles from source and leaves an ~80 s window in which the half-installed path exists; the amd64 job on the same commit passed.

The failure is not this PR's. The same arm64 job passed on #9455's queue branch a few minutes earlier (run 33383240605, 10:38–10:44), with the same four tasks racing but correctly blocking on the file lock, and the error here is a missing cargo-insta binary rather than anything touching the dependency bumps — @apps/hash-integration-worker does not depend on ds-components, petrinaut or refractive, and yarn install --immutable succeeded in the failing job. The one honest connection is that changing yarn.lock busts the turbo cache, so all four build:types tasks are guaranteed to actually execute rather than being replayed, which widens the odds of landing in the race window — though #9455's run shows they execute there too and still pass, so this is a matter of luck rather than something this PR introduces.

There is nothing to port into this PR, because the fix belongs in the build Dockerfiles and is out of scope here: cargo:cargo-insta is missing from the mise install --locked … pre-install line in the five build Dockerfiles (apps/hash-integration-worker/docker/Dockerfile:75 and the equivalents in hash-api, hash-frontend, hash-ai-worker-ts and hash-graph), so it gets installed lazily and concurrently at build time instead of once up front. Adding cargo:cargo-insta to that mise install --locked list is a one-line change per Dockerfile and would close the window for good. In the meantime this PR just needs putting back in the merge queue.


Generated by Claude Code

@claude
claude Bot added this pull request to the merge queue Aug 31, 2026
Merged via the queue into main with commit 900d9cd Aug 31, 2026
227 checks passed
@claude
claude Bot deleted the claude/sre-974-scope-esbuild-to-0-28 branch August 31, 2026 11:34
@github-actions

Copy link
Copy Markdown
Contributor

Benchmark results

@rust/hash-graph-benches – Integrations

policy_resolution_large

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2002 $$22.4 \mathrm{ms} \pm 168 \mathrm{μs}\left({\color{gray}1.94 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.53 \mathrm{ms} \pm 19.0 \mathrm{μs}\left({\color{gray}-4.104 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 1002 $$10.1 \mathrm{ms} \pm 78.5 \mathrm{μs}\left({\color{gray}-2.130 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 3314 $$32.1 \mathrm{ms} \pm 265 \mathrm{μs}\left({\color{gray}0.105 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$9.92 \mathrm{ms} \pm 73.8 \mathrm{μs}\left({\color{gray}-4.927 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 1527 $$18.4 \mathrm{ms} \pm 146 \mathrm{μs}\left({\color{gray}2.12 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 2078 $$23.0 \mathrm{ms} \pm 147 \mathrm{μs}\left({\color{gray}0.672 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.79 \mathrm{ms} \pm 20.0 \mathrm{μs}\left({\color{gray}-4.085 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 1033 $$10.9 \mathrm{ms} \pm 79.6 \mathrm{μs}\left({\color{gray}0.052 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_medium

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 102 $$2.81 \mathrm{ms} \pm 18.6 \mathrm{μs}\left({\color{gray}-3.213 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.22 \mathrm{ms} \pm 13.0 \mathrm{μs}\left({\color{gray}-1.773 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 52 $$2.50 \mathrm{ms} \pm 14.2 \mathrm{μs}\left({\color{gray}-0.128 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 269 $$4.01 \mathrm{ms} \pm 28.3 \mathrm{μs}\left({\color{gray}0.772 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$2.62 \mathrm{ms} \pm 15.4 \mathrm{μs}\left({\color{gray}-0.530 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 108 $$3.14 \mathrm{ms} \pm 24.8 \mathrm{μs}\left({\color{gray}-1.683 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 133 $$3.34 \mathrm{ms} \pm 21.7 \mathrm{μs}\left({\color{gray}0.804 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.57 \mathrm{ms} \pm 17.8 \mathrm{μs}\left({\color{gray}-0.678 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 63 $$3.26 \mathrm{ms} \pm 33.1 \mathrm{μs}\left({\color{red}7.03 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_none

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2 $$1.98 \mathrm{ms} \pm 11.8 \mathrm{μs}\left({\color{gray}-1.964 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$1.88 \mathrm{ms} \pm 12.8 \mathrm{μs}\left({\color{gray}0.698 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 2 $$1.97 \mathrm{ms} \pm 12.2 \mathrm{μs}\left({\color{gray}1.41 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 8 $$2.15 \mathrm{ms} \pm 15.2 \mathrm{μs}\left({\color{gray}0.051 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.01 \mathrm{ms} \pm 13.4 \mathrm{μs}\left({\color{gray}1.10 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 3 $$2.16 \mathrm{ms} \pm 17.7 \mathrm{μs}\left({\color{gray}0.451 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_small

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 52 $$2.28 \mathrm{ms} \pm 17.9 \mathrm{μs}\left({\color{gray}-1.775 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.04 \mathrm{ms} \pm 13.9 \mathrm{μs}\left({\color{gray}-1.154 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 26 $$2.19 \mathrm{ms} \pm 13.5 \mathrm{μs}\left({\color{gray}-1.805 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 94 $$2.54 \mathrm{ms} \pm 17.7 \mathrm{μs}\left({\color{gray}-1.427 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$2.17 \mathrm{ms} \pm 14.7 \mathrm{μs}\left({\color{gray}-2.465 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 27 $$2.41 \mathrm{ms} \pm 16.4 \mathrm{μs}\left({\color{gray}-4.087 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 66 $$2.48 \mathrm{ms} \pm 14.5 \mathrm{μs}\left({\color{gray}-0.219 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.19 \mathrm{ms} \pm 16.9 \mathrm{μs}\left({\color{gray}-0.689 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 29 $$2.42 \mathrm{ms} \pm 13.9 \mathrm{μs}\left({\color{gray}-0.333 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_complete

Function Value Mean Flame graphs
entity_by_id;one_depth 1 entities $$33.4 \mathrm{ms} \pm 203 \mathrm{μs}\left({\color{gray}-0.928 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 10 entities $$26.5 \mathrm{ms} \pm 199 \mathrm{μs}\left({\color{gray}2.39 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 25 entities $$28.0 \mathrm{ms} \pm 223 \mathrm{μs}\left({\color{gray}-0.409 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 5 entities $$25.1 \mathrm{ms} \pm 137 \mathrm{μs}\left({\color{gray}1.68 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 50 entities $$34.4 \mathrm{ms} \pm 185 \mathrm{μs}\left({\color{gray}3.35 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 1 entities $$39.4 \mathrm{ms} \pm 198 \mathrm{μs}\left({\color{gray}-0.266 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 10 entities $$31.2 \mathrm{ms} \pm 175 \mathrm{μs}\left({\color{gray}-0.084 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 25 entities $$70.4 \mathrm{ms} \pm 366 \mathrm{μs}\left({\color{gray}3.80 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 5 entities $$26.7 \mathrm{ms} \pm 173 \mathrm{μs}\left({\color{gray}0.566 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 50 entities $$210 \mathrm{ms} \pm 902 \mathrm{μs}\left({\color{gray}0.468 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 1 entities $$8.22 \mathrm{ms} \pm 49.9 \mathrm{μs}\left({\color{gray}-0.251 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 10 entities $$8.61 \mathrm{ms} \pm 57.1 \mathrm{μs}\left({\color{gray}4.24 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 25 entities $$8.40 \mathrm{ms} \pm 45.6 \mathrm{μs}\left({\color{gray}1.62 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 5 entities $$8.53 \mathrm{ms} \pm 62.8 \mathrm{μs}\left({\color{gray}4.54 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 50 entities $$8.51 \mathrm{ms} \pm 52.6 \mathrm{μs}\left({\color{gray}3.78 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_linkless

Function Value Mean Flame graphs
entity_by_id 1 entities $$8.23 \mathrm{ms} \pm 50.3 \mathrm{μs}\left({\color{gray}0.217 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10 entities $$8.06 \mathrm{ms} \pm 51.7 \mathrm{μs}\left({\color{gray}-0.952 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 100 entities $$8.05 \mathrm{ms} \pm 39.0 \mathrm{μs}\left({\color{gray}-3.743 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 1000 entities $$8.50 \mathrm{ms} \pm 60.2 \mathrm{μs}\left({\color{gray}2.68 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10000 entities $$8.51 \mathrm{ms} \pm 47.0 \mathrm{μs}\left({\color{gray}-0.536 \mathrm{\%}}\right) $$ Flame Graph

representative_read_entity

Function Value Mean Flame graphs
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/block/v/1 $$8.67 \mathrm{ms} \pm 74.2 \mathrm{μs}\left({\color{gray}1.66 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/book/v/1 $$9.06 \mathrm{ms} \pm 356 \mathrm{μs}\left({\color{gray}4.27 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/building/v/1 $$8.70 \mathrm{ms} \pm 62.1 \mathrm{μs}\left({\color{gray}2.56 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/organization/v/1 $$8.75 \mathrm{ms} \pm 61.0 \mathrm{μs}\left({\color{gray}4.85 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/page/v/2 $$9.06 \mathrm{ms} \pm 200 \mathrm{μs}\left({\color{red}7.34 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/person/v/1 $$8.63 \mathrm{ms} \pm 58.9 \mathrm{μs}\left({\color{gray}2.51 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/playlist/v/1 $$8.48 \mathrm{ms} \pm 47.3 \mathrm{μs}\left({\color{gray}-1.106 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/song/v/1 $$8.63 \mathrm{ms} \pm 50.5 \mathrm{μs}\left({\color{gray}2.84 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/uk-address/v/1 $$8.54 \mathrm{ms} \pm 55.6 \mathrm{μs}\left({\color{gray}1.29 \mathrm{\%}}\right) $$ Flame Graph

representative_read_entity_type

Function Value Mean Flame graphs
get_entity_type_by_id Account ID: bf5a9ef5-dc3b-43cf-a291-6210c0321eba $$6.29 \mathrm{ms} \pm 30.9 \mathrm{μs}\left({\color{gray}0.135 \mathrm{\%}}\right) $$ Flame Graph

representative_read_multiple_entities

Function Value Mean Flame graphs
entity_by_property traversal_paths=0 0 $$47.0 \mathrm{ms} \pm 297 \mathrm{μs}\left({\color{gray}2.05 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$90.5 \mathrm{ms} \pm 510 \mathrm{μs}\left({\color{gray}1.18 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false $$53.8 \mathrm{ms} \pm 396 \mathrm{μs}\left({\color{gray}3.67 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$61.3 \mathrm{ms} \pm 411 \mathrm{μs}\left({\color{gray}1.95 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$68.6 \mathrm{ms} \pm 480 \mathrm{μs}\left({\color{gray}1.80 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$73.2 \mathrm{ms} \pm 547 \mathrm{μs}\left({\color{gray}0.636 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=0 0 $$35.2 \mathrm{ms} \pm 261 \mathrm{μs}\left({\color{gray}3.49 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$59.3 \mathrm{ms} \pm 382 \mathrm{μs}\left({\color{gray}2.70 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false $$39.3 \mathrm{ms} \pm 269 \mathrm{μs}\left({\color{gray}1.54 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$47.0 \mathrm{ms} \pm 257 \mathrm{μs}\left({\color{gray}-3.583 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$50.4 \mathrm{ms} \pm 305 \mathrm{μs}\left({\color{gray}-0.176 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$49.1 \mathrm{ms} \pm 283 \mathrm{μs}\left({\color{gray}-0.040 \mathrm{\%}}\right) $$

scenarios

Function Value Mean Flame graphs
full_test query-limited $$94.0 \mathrm{ms} \pm 743 \mathrm{μs}\left({\color{gray}3.58 \mathrm{\%}}\right) $$ Flame Graph
full_test query-unlimited $$105 \mathrm{ms} \pm 698 \mathrm{μs}\left({\color{red}7.55 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-limited $$14.3 \mathrm{ms} \pm 77.8 \mathrm{μs}\left({\color{lightgreen}-19.548 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-unlimited $$427 \mathrm{ms} \pm 1.37 \mathrm{ms}\left({\color{gray}-1.231 \mathrm{\%}}\right) $$ Flame Graph

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps > hash.design Affects the `hash.design` design site (app) area/deps Relates to third-party dependencies (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team

Development

Successfully merging this pull request may close these issues.

2 participants