Skip to content

SRE-1039: Record cache, persistent and env in task-dependencies.json - #9563

Open
TimDiekmann wants to merge 1 commit into
mainfrom
t/sre-1039-record-cache-persistent-and-env-in-task-dependenciesjson
Open

SRE-1039: Record cache, persistent and env in task-dependencies.json#9563
TimDiekmann wants to merge 1 commit into
mainfrom
t/sre-1039-record-cache-persistent-and-env-in-task-dependenciesjson

Conversation

@TimDiekmann

@TimDiekmann TimDiekmann commented Sep 7, 2026

Copy link
Copy Markdown
Member

🌟 What is the purpose of this PR?

The checked-in docs/task-dependencies.json list, per task, only the tasks turbo runs before it. Whether turbo caches a task, keeps it running, or hashes environment variables into it was not visible, so a change to those fields could not be reviewed as a document diff. Each task is now an object that also carries cache, persistent and env as turbo resolves them.

🔗 Related links

🔍 What does this change?

  • A task entry becomes { "dependsOn": [...], "cache": …, "persistent": …, "env": [...] }. The values come from the dry run's resolvedTaskDefinition, the definition turbo arrives at after merging the root and the package turbo.json.
  • Fields at turbo's defaults are left out: cache appears only as false, persistent only as true, env only when set. A plain build reads { "dependsOn": [...] }, a dev reads { "dependsOn": [...], "cache": false, "persistent": true }.
  • All documents with tasks are regenerated.

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

📜 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

⚠️ Known issues

None.

🐾 Next steps

None.

🛡 What tests cover this?

The documents are regenerated and diffed in CI (Validate Task Dependencies). Verified locally that every dependsOn list is unchanged against the parent commit and that the added fields match turbo run --dry=json for every task.

❓ How to test this?

  1. Check out the branch
  2. Run turbo run //#doc:task-dependencies; the working tree stays clean
  3. Open apps/hash-api/docs/task-dependencies.json; dev carries "cache": false, "persistent": true, test:unit carries "env": ["TEST_COVERAGE"]

@TimDiekmann TimDiekmann self-assigned this Sep 7, 2026
@vercel

vercel Bot commented Sep 7, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated
hash Ready Ready Preview Sep 7, 2026 2:11pm UTC
hashdotdesign-tokens Ready Ready Preview Sep 7, 2026 2:11pm UTC
petrinaut Ready Ready Preview Sep 7, 2026 2:11pm UTC
petrinaut-docs Ready Ready Preview Sep 7, 2026 2:11pm UTC

Request Review

@TimDiekmann TimDiekmann changed the title Record cache, persistent and env in the task documents SRE-1039: Record cache, persistent and env in task-dependencies.json Sep 7, 2026
@github-actions github-actions Bot added area/apps > hash* Affects HASH (a `hash-*` app) area/apps > hash-api Affects the HASH API (app) area/libs > error-stack Affects the `error-stack` crate (library) area/libs Relates to first-party libraries/crates/packages (area) area/libs > antsi Affects the `antsi` crate (library) type/eng > frontend Owned by the @frontend team type/eng > backend Owned by the @backend team area/tests New or updated tests area/tests > integration New or updated integration tests area/tests > playwright New or updated Playwright tests area/apps area/apps > hash-graph area/apps > hash.design Affects the `hash.design` design site (app) labels Sep 7, 2026
@TimDiekmann
TimDiekmann marked this pull request as ready for review September 7, 2026 10:49
@TimDiekmann
TimDiekmann requested a review from a team as a code owner September 7, 2026 10:49
Copilot AI balanced review requested due to automatic review settings September 7, 2026 10:49
@cursor

cursor Bot commented Sep 7, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Documentation and codegen only; Turbo execution graphs and dependsOn edges are unchanged, so runtime behavior should be unaffected.

Overview
Extends the checked-in docs/task-dependencies.json snapshots so each task is an object, not a bare dependency list. dependsOn keeps the same ordering as before; the generator now also writes cache, persistent, and env from Turbo’s merged resolvedTaskDefinition (turbo run --dry=json).

The Rust generator in task_dependencies/mod.rs defines a Task struct and omits fields at Turbo defaults (cache only when false, persistent only when true, env only when non-empty). Every package document is regenerated to match.

Reviewers can now see Turbo cache-busting, long-running tasks, and env vars that affect task hashes in CI diffs without re-running Turbo.

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

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.

🟢 Approval recommended

The reviewed changes have no unresolved issues blocking approval.

Pull request overview

Updates task-dependency documentation to expose Turbo’s resolved cache, persistence, and environment settings.

Changes:

  • Adds resolved task metadata to the Rust generator.
  • Migrates task entries to structured objects while omitting default values.
  • Regenerates task-dependency documents across the workspace.
File summaries
File Description
tests/hash-playwright/docs/task-dependencies.json Regenerates task metadata.
tests/hash-backend-integration/docs/task-dependencies.json Regenerates task metadata.
tests/graph/test-data/rust/docs/task-dependencies.json Regenerates task metadata.
tests/graph/integration/docs/task-dependencies.json Regenerates task metadata.
tests/graph/http/docs/task-dependencies.json Regenerates task metadata.
tests/graph/benches/docs/task-dependencies.json Regenerates task metadata.
libs/error-stack/macros/docs/task-dependencies.json Regenerates task metadata.
libs/error-stack/docs/task-dependencies.json Regenerates task metadata.
libs/darwin-kperf/sys/docs/task-dependencies.json Regenerates task metadata.
libs/darwin-kperf/events/docs/task-dependencies.json Regenerates task metadata.
libs/darwin-kperf/docs/task-dependencies.json Regenerates task metadata.
libs/darwin-kperf/criterion/docs/task-dependencies.json Regenerates task metadata.
libs/darwin-kperf/codegen/docs/task-dependencies.json Regenerates task metadata.
libs/antsi/docs/task-dependencies.json Regenerates task metadata.
libs/@local/temporal-client/docs/task-dependencies.json Regenerates task metadata.
libs/@local/telemetry/docs/task-dependencies.json Regenerates task metadata.
libs/@local/status/typescript/docs/task-dependencies.json Regenerates task metadata.
libs/@local/status/rust/docs/task-dependencies.json Regenerates task metadata.
libs/@local/repo-chores/rust/src/task_dependencies/mod.rs Reads and serializes resolved Turbo settings.
libs/@local/repo-chores/rust/docs/task-dependencies.json Regenerates task metadata.
libs/@local/repo-chores/node/docs/task-dependencies.json Regenerates task metadata.
libs/@local/petrinaut-python/docs/task-dependencies.json Regenerates task metadata.
libs/@local/petrinaut-optimizer-client/docs/task-dependencies.json Regenerates task metadata.
libs/@local/petrinaut-arch-docs/docs/task-dependencies.json Regenerates task metadata.
libs/@local/middleware/docs/task-dependencies.json Regenerates task metadata.
libs/@local/internal-api-client/typescript/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hashql/syntax-jexpr/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hashql/mir/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hashql/macros/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hashql/hir/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hashql/eval/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hashql/diagnostics/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hashql/core/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hashql/compiletest/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hashql/ast/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hash-isomorphic-utils/docs/task-dependencies.json Regenerates task metadata.
libs/@local/hash-backend-utils/docs/task-dependencies.json Regenerates task metadata.
libs/@local/harpc/wire-protocol/docs/task-dependencies.json Regenerates task metadata.
libs/@local/harpc/types/docs/task-dependencies.json Regenerates task metadata.
libs/@local/harpc/tower/docs/task-dependencies.json Regenerates task metadata.
libs/@local/harpc/system/docs/task-dependencies.json Regenerates task metadata.
libs/@local/harpc/server/docs/task-dependencies.json Regenerates task metadata.
libs/@local/harpc/net/docs/task-dependencies.json Regenerates task metadata.
libs/@local/harpc/codec/docs/task-dependencies.json Regenerates task metadata.
libs/@local/harpc/client/typescript/docs/task-dependencies.json Regenerates task metadata.
libs/@local/harpc/client/rust/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/validation/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/types/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/type-fetcher/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/temporal-versioning/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/store/typescript/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/store/rust/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/sdk/typescript/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/postgres-store/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/migrations/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/migrations-macros/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/embeddings/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/client/typescript/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/authorization/typescript/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/authorization/rust/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/authentication/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/atlas/docs/task-dependencies.json Regenerates task metadata.
libs/@local/graph/api/docs/task-dependencies.json Regenerates task metadata.
libs/@local/eslint/docs/task-dependencies.json Regenerates task metadata.
libs/@local/effect-dns/hickory/typescript/docs/task-dependencies.json Regenerates task metadata.
libs/@local/effect-dns/hickory/rust/docs/task-dependencies.json Regenerates task metadata.
libs/@local/effect-dns/core/docs/task-dependencies.json Regenerates task metadata.
libs/@local/config/docs/task-dependencies.json Regenerates task metadata.
libs/@local/codegen/docs/task-dependencies.json Regenerates task metadata.
libs/@local/codec/typescript/docs/task-dependencies.json Regenerates task metadata.
libs/@local/codec/rust/docs/task-dependencies.json Regenerates task metadata.
libs/@local/advanced-types/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/type-editor/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/refractive/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/query-editor/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/petrinaut/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/petrinaut-core/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/petrinaut-cli/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/ds-helpers/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/ds-components/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/design-system/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/brunch-agent/packages/transport-aisdk/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/brunch-agent/packages/plugin-sdcpn/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/brunch-agent/packages/plugin-gherkin/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/brunch-agent/packages/plugin-dafny/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/brunch-agent/packages/core/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/brunch-agent/packages/binding-flue/docs/task-dependencies.json Regenerates task metadata.
libs/@hashintel/block-design-system/docs/task-dependencies.json Regenerates task metadata.
libs/@blockprotocol/type-system/typescript/docs/task-dependencies.json Regenerates task metadata.
libs/@blockprotocol/type-system/rust/docs/task-dependencies.json Regenerates task metadata.
libs/@blockprotocol/graph/docs/task-dependencies.json Regenerates task metadata.
apps/plugin-browser/docs/task-dependencies.json Regenerates task metadata.
apps/petrinaut-website/docs/task-dependencies.json Regenerates task metadata.
apps/petrinaut-opt/docs/task-dependencies.json Regenerates task metadata.
apps/petrinaut-docs/docs/task-dependencies.json Regenerates task metadata.
apps/hash-integration-worker/docs/task-dependencies.json Regenerates task metadata.
apps/hash-graph/docs/task-dependencies.json Regenerates task metadata.
apps/hash-frontend/docs/task-dependencies.json Regenerates task metadata.
apps/hash-api/docs/task-dependencies.json Regenerates task metadata.
apps/hash-ai-worker-ts/docs/task-dependencies.json Regenerates task metadata.
apps/brunch-agent/docs/task-dependencies.json Regenerates task metadata.
.claude/hooks/docs/task-dependencies.json Regenerates task metadata.
Review details
  • Files reviewed: 102/102 changed files
  • Comments generated: 0
  • Review effort level: Balanced

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

@codspeed-hq

codspeed-hq Bot commented Sep 7, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 42 untouched benchmarks
⏩ 56 skipped benchmarks1


Comparing t/sre-1039-record-cache-persistent-and-env-in-task-dependenciesjson (4b8c372) with main (76497be)

Open in CodSpeed

Footnotes

  1. 56 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@codecov

codecov Bot commented Sep 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 65.93%. Comparing base (76497be) to head (4b8c372).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #9563   +/-   ##
=======================================
  Coverage   65.93%   65.93%           
=======================================
  Files        1885     1885           
  Lines      198175   198175           
  Branches     8230     8230           
=======================================
+ Hits       130672   130673    +1     
  Misses      65972    65972           
+ Partials     1531     1530    -1     
Flag Coverage Δ
apps.hash-ai-worker-ts 1.99% <ø> (ø)
apps.hash-api 15.41% <ø> (ø)
apps.hash-graph 13.32% <ø> (ø)
blockprotocol.type-system 38.15% <ø> (ø)
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% <ø> (ø)
rust.harpc-tower 67.03% <ø> (ø)
rust.harpc-types 0.00% <ø> (ø)
rust.harpc-wire-protocol 92.23% <ø> (ø)
rust.hash-codec 72.76% <ø> (ø)
rust.hash-config 78.41% <ø> (ø)
rust.hash-graph-api 19.71% <ø> (ø)
rust.hash-graph-atlas 80.33% <ø> (+<0.01%) ⬆️
rust.hash-graph-authentication 96.02% <ø> (ø)
rust.hash-graph-authorization 63.14% <ø> (ø)
rust.hash-graph-embeddings 91.88% <ø> (ø)
rust.hash-graph-postgres-store 32.15% <ø> (ø)
rust.hash-graph-store 48.41% <ø> (ø)
rust.hash-graph-temporal-versioning 50.18% <ø> (ø)
rust.hash-graph-types 0.00% <ø> (ø)
rust.hash-graph-validation 84.71% <ø> (ø)
rust.hash-middleware 90.92% <ø> (ø)
rust.hashql-ast 89.63% <ø> (ø)
rust.hashql-compiletest 28.39% <ø> (ø)
rust.hashql-core 78.92% <ø> (ø)
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.

indietyp
indietyp previously approved these changes Sep 7, 2026
@TimDiekmann
TimDiekmann added this pull request to the merge queue Sep 7, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Sep 7, 2026
Base automatically changed from t/sre-1033-declare-turbo-task-dependencies-where-they-hold-instead-of to main September 7, 2026 13:51
A document listed, per task, only the tasks turbo runs before it. Each
task is now an object with `dependsOn` plus `cache`, `persistent` and
`env` as turbo resolves them after merging the root and the package
`turbo.json`, so a change to those fields shows up as a document diff.
A field at turbo's default — a cached, non-persistent task without
environment variables — is left out.
@github-actions

github-actions Bot commented Sep 7, 2026

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 $$27.2 \mathrm{ms} \pm 270 \mathrm{μs}\left({\color{gray}-1.166 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$3.46 \mathrm{ms} \pm 21.4 \mathrm{μs}\left({\color{gray}-2.064 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 1002 $$12.4 \mathrm{ms} \pm 138 \mathrm{μs}\left({\color{gray}-0.470 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 3314 $$43.3 \mathrm{ms} \pm 445 \mathrm{μs}\left({\color{gray}-1.009 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$13.9 \mathrm{ms} \pm 122 \mathrm{μs}\left({\color{gray}-1.510 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 1527 $$23.7 \mathrm{ms} \pm 249 \mathrm{μs}\left({\color{gray}-4.994 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 2078 $$28.2 \mathrm{ms} \pm 220 \mathrm{μs}\left({\color{gray}-0.002 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.75 \mathrm{ms} \pm 21.1 \mathrm{μs}\left({\color{gray}-0.768 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 1033 $$13.4 \mathrm{ms} \pm 126 \mathrm{μs}\left({\color{gray}0.276 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_medium

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 102 $$3.85 \mathrm{ms} \pm 24.3 \mathrm{μs}\left({\color{gray}1.03 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$3.07 \mathrm{ms} \pm 21.3 \mathrm{μs}\left({\color{gray}2.88 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 52 $$3.43 \mathrm{ms} \pm 22.7 \mathrm{μs}\left({\color{gray}1.44 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 269 $$5.42 \mathrm{ms} \pm 51.3 \mathrm{μs}\left({\color{gray}3.99 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$3.64 \mathrm{ms} \pm 24.8 \mathrm{μs}\left({\color{gray}1.75 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 108 $$4.24 \mathrm{ms} \pm 28.5 \mathrm{μs}\left({\color{gray}0.982 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 133 $$4.72 \mathrm{ms} \pm 31.8 \mathrm{μs}\left({\color{red}5.41 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.56 \mathrm{ms} \pm 25.7 \mathrm{μs}\left({\color{gray}3.77 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 63 $$4.29 \mathrm{ms} \pm 40.2 \mathrm{μs}\left({\color{gray}0.819 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_none

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2 $$2.72 \mathrm{ms} \pm 15.1 \mathrm{μs}\left({\color{gray}-0.921 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.66 \mathrm{ms} \pm 14.1 \mathrm{μs}\left({\color{gray}-0.635 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 2 $$2.78 \mathrm{ms} \pm 16.4 \mathrm{μs}\left({\color{gray}-1.262 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 8 $$3.03 \mathrm{ms} \pm 15.0 \mathrm{μs}\left({\color{gray}-1.290 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.86 \mathrm{ms} \pm 17.6 \mathrm{μs}\left({\color{gray}-0.320 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 3 $$3.12 \mathrm{ms} \pm 16.0 \mathrm{μs}\left({\color{gray}-2.210 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_small

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 52 $$3.12 \mathrm{ms} \pm 18.9 \mathrm{μs}\left({\color{gray}0.365 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.76 \mathrm{ms} \pm 18.0 \mathrm{μs}\left({\color{gray}-1.902 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 26 $$2.98 \mathrm{ms} \pm 18.9 \mathrm{μs}\left({\color{gray}-0.253 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 94 $$3.56 \mathrm{ms} \pm 22.9 \mathrm{μs}\left({\color{gray}-0.444 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$3.02 \mathrm{ms} \pm 17.6 \mathrm{μs}\left({\color{gray}-1.377 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 27 $$3.30 \mathrm{ms} \pm 21.7 \mathrm{μs}\left({\color{gray}0.077 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 66 $$3.51 \mathrm{ms} \pm 29.8 \mathrm{μs}\left({\color{gray}-0.365 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.03 \mathrm{ms} \pm 17.6 \mathrm{μs}\left({\color{gray}-0.710 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 29 $$3.39 \mathrm{ms} \pm 19.1 \mathrm{μs}\left({\color{gray}-0.579 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_complete

Function Value Mean Flame graphs
entity_by_id;one_depth 1 entities $$31.6 \mathrm{ms} \pm 179 \mathrm{μs}\left({\color{gray}-0.357 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 10 entities $$70.4 \mathrm{ms} \pm 588 \mathrm{μs}\left({\color{gray}-0.316 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 25 entities $$34.8 \mathrm{ms} \pm 217 \mathrm{μs}\left({\color{gray}-0.245 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 5 entities $$39.0 \mathrm{ms} \pm 213 \mathrm{μs}\left({\color{gray}0.603 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 50 entities $$40.6 \mathrm{ms} \pm 240 \mathrm{μs}\left({\color{gray}-1.688 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 1 entities $$33.3 \mathrm{ms} \pm 189 \mathrm{μs}\left({\color{gray}-0.086 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 10 entities $$424 \mathrm{ms} \pm 1.41 \mathrm{ms}\left({\color{gray}1.04 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 25 entities $$89.3 \mathrm{ms} \pm 479 \mathrm{μs}\left({\color{gray}-0.497 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 5 entities $$77.5 \mathrm{ms} \pm 481 \mathrm{μs}\left({\color{gray}-0.549 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 50 entities $$305 \mathrm{ms} \pm 1.36 \mathrm{ms}\left({\color{red}11.2 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 1 entities $$10.3 \mathrm{ms} \pm 66.9 \mathrm{μs}\left({\color{gray}-0.562 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 10 entities $$10.4 \mathrm{ms} \pm 52.9 \mathrm{μs}\left({\color{gray}-1.664 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 25 entities $$10.6 \mathrm{ms} \pm 70.7 \mathrm{μs}\left({\color{gray}-0.495 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 5 entities $$10.5 \mathrm{ms} \pm 77.1 \mathrm{μs}\left({\color{gray}0.209 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 50 entities $$10.5 \mathrm{ms} \pm 66.8 \mathrm{μs}\left({\color{gray}-1.936 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_linkless

Function Value Mean Flame graphs
entity_by_id 1 entities $$10.3 \mathrm{ms} \pm 78.3 \mathrm{μs}\left({\color{gray}-1.207 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10 entities $$10.3 \mathrm{ms} \pm 50.3 \mathrm{μs}\left({\color{gray}-2.613 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 100 entities $$10.3 \mathrm{ms} \pm 52.1 \mathrm{μs}\left({\color{gray}-1.795 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 1000 entities $$10.4 \mathrm{ms} \pm 72.8 \mathrm{μs}\left({\color{gray}-1.477 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10000 entities $$10.6 \mathrm{ms} \pm 53.7 \mathrm{μs}\left({\color{gray}-1.461 \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 $$10.8 \mathrm{ms} \pm 62.2 \mathrm{μs}\left({\color{gray}-1.300 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/book/v/1 $$10.9 \mathrm{ms} \pm 57.8 \mathrm{μs}\left({\color{gray}0.033 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/building/v/1 $$11.0 \mathrm{ms} \pm 94.5 \mathrm{μs}\left({\color{gray}2.34 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/organization/v/1 $$10.8 \mathrm{ms} \pm 59.7 \mathrm{μs}\left({\color{gray}-1.992 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/page/v/2 $$10.8 \mathrm{ms} \pm 61.7 \mathrm{μs}\left({\color{gray}-0.601 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/person/v/1 $$10.8 \mathrm{ms} \pm 72.3 \mathrm{μs}\left({\color{gray}-0.573 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/playlist/v/1 $$10.8 \mathrm{ms} \pm 72.7 \mathrm{μs}\left({\color{gray}-2.991 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/song/v/1 $$10.7 \mathrm{ms} \pm 58.4 \mathrm{μs}\left({\color{gray}-0.862 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/uk-address/v/1 $$10.9 \mathrm{ms} \pm 61.3 \mathrm{μs}\left({\color{gray}0.249 \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 $$8.07 \mathrm{ms} \pm 53.4 \mathrm{μs}\left({\color{gray}0.162 \mathrm{\%}}\right) $$ Flame Graph

representative_read_multiple_entities

Function Value Mean Flame graphs
entity_by_property traversal_paths=0 0 $$55.0 \mathrm{ms} \pm 472 \mathrm{μs}\left({\color{gray}-1.146 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$109 \mathrm{ms} \pm 558 \mathrm{μs}\left({\color{gray}0.301 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false $$61.0 \mathrm{ms} \pm 437 \mathrm{μs}\left({\color{gray}-2.135 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$70.8 \mathrm{ms} \pm 539 \mathrm{μs}\left({\color{gray}-0.554 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$79.6 \mathrm{ms} \pm 546 \mathrm{μs}\left({\color{gray}0.195 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$86.5 \mathrm{ms} \pm 647 \mathrm{μs}\left({\color{gray}-0.866 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=0 0 $$44.7 \mathrm{ms} \pm 355 \mathrm{μs}\left({\color{gray}-0.997 \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 $$72.5 \mathrm{ms} \pm 372 \mathrm{μs}\left({\color{gray}-0.272 \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 $$52.3 \mathrm{ms} \pm 444 \mathrm{μs}\left({\color{gray}2.42 \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 $$59.6 \mathrm{ms} \pm 399 \mathrm{μs}\left({\color{gray}0.128 \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 $$61.3 \mathrm{ms} \pm 403 \mathrm{μs}\left({\color{gray}-0.968 \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 $$62.2 \mathrm{ms} \pm 566 \mathrm{μs}\left({\color{gray}-0.300 \mathrm{\%}}\right) $$

scenarios

Function Value Mean Flame graphs
full_test query-limited $$112 \mathrm{ms} \pm 783 \mathrm{μs}\left({\color{gray}-4.774 \mathrm{\%}}\right) $$ Flame Graph
full_test query-unlimited $$127 \mathrm{ms} \pm 924 \mathrm{μs}\left({\color{gray}-2.827 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-limited $$22.9 \mathrm{ms} \pm 225 \mathrm{μs}\left({\color{gray}1.54 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-unlimited $$495 \mathrm{ms} \pm 1.68 \mathrm{ms}\left({\color{lightgreen}-5.027 \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/apps > hash* Affects HASH (a `hash-*` app) area/apps > hash-api Affects the HASH API (app) area/apps > hash-graph area/apps area/libs > antsi Affects the `antsi` crate (library) area/libs > error-stack Affects the `error-stack` crate (library) area/libs Relates to first-party libraries/crates/packages (area) area/tests > integration New or updated integration tests area/tests > playwright New or updated Playwright tests area/tests New or updated tests type/eng > backend Owned by the @backend team type/eng > frontend Owned by the @frontend team

Development

Successfully merging this pull request may close these issues.

3 participants