Skip to content

SRE-1034: Reference a package's own tasks by bare name in task-dependencies.json - #9551

Merged
TimDiekmann merged 6 commits into
mainfrom
t/sre-1034-reference-a-packages-own-tasks-by-bare-name-in-task
Sep 7, 2026
Merged

SRE-1034: Reference a package's own tasks by bare name in task-dependencies.json#9551
TimDiekmann merged 6 commits into
mainfrom
t/sre-1034-reference-a-packages-own-tasks-by-bare-name-in-task

Conversation

@TimDiekmann

Copy link
Copy Markdown
Member

🌟 What is the purpose of this PR?

The checked-in docs/task-dependencies.json list every predecessor as <package>#<task>, including the package's own tasks. Those now appear by their bare name, the way turbo.json refers to them, which makes a document read as "dev runs codegen first" rather than repeating the package on every line.

🔗 Related links

🔍 What does this change?

  • The generator strips the own-package prefix from a task's predecessors ("@apps/hash-api#codegen" under @apps/hash-api becomes "codegen"); tasks of other packages keep their full id.
  • The 25 documents that reference their own tasks are regenerated. No edge changes: re-expanding the bare names yields the previous documents for all 101 packages.

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 re-expanding every bare name with its package yields exactly the previous documents.

❓ 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 lists codegen, start lists start:migrate

`build:types`, `build:wasm` and `build:openapi` depended on `^build` so
that a change in an upstream crate reaches their hash and `affectedTasks`.
For a crate's mirror package `build` is a no-op today, but under
`futureFlags.experimentalCargoWorkspaces` it becomes `cargo build`, and
the chain would compile every upstream crate before generating types.

`manifest` is a task nothing implements. Depending on `^manifest` folds
the inputs of every transitive dependency into the hash and keeps
`affectedTasks` walking the chain, while running nothing: a change in
`error-stack`, two levels up, moves `@rust/hash-codec#build:types` from
5b22f4cb to 8145afd3 and still selects the sibling
`@blockprotocol/type-system` package.

The one edge that disappears from the documents is
`hash-graph-api#build:openapi` waiting for `@local/status#build`. The
mirror of the crate `hash-status` lists the TypeScript `@local/status` as
its only dependency, so `^build` reached a `tsc --build` two tasks without
a command away.
The client's codegen and the hickory binding's build depended on the
crates' `build`, a task neither crate has, and carried TODO markers for
it. They now depend on the crates' `manifest`, so a change in the crate
still selects the package without asking it for a build.
Three files import the `Status` type from `@local/status`, which the
package never declared. Its build had still run first, reached through
`@local/hash-graph-client#codegen → @rust/hash-graph-api#build →
@rust/hash-status#build → ^build`, a chain of tasks that do not exist.
The manifest edge no longer walks it, and `tsc` found no declarations.
`import/no-extraneous-dependencies` skips `import type` unless
`includeTypes` is set, so a package could import types from a package it
never declared and resolve them through hoisting or a dependency's
build. The rule now checks type imports everywhere, with the
`devDependencies` globs `eslint-config-airbnb-base` had supplied.

Three packages had such imports and now declare them: the API and the
AI worker import the internal API client's types, both workers the
Temporal client's, and the AI worker also imports from
`@blockprotocol/core`. The API's and the AI worker's tasks now run the
internal API client's build before them instead of relying on the
backend utils to pull it in.
`includeTypes` on `import/no-extraneous-dependencies` also applied
airbnb's split between `dependencies` and `devDependencies` to type
imports, so a type used in nothing but a cast had to move into
`dependencies`. The plugin is registered a second time as
`import-declared`, and that instance of the rule runs with
`devDependencies: true` and `includeTypes: true`: it asks whether an
import is declared at all. The original rule keeps its options for value
imports, and the package configurations that override it leave the
second instance in place.

Two imports of a package by its own name become relative imports, and
the AI worker declares the `vite` its vitest config had imported behind
a disable directive.
A document listed every predecessor as `<package>#<task>`, repeating
the package for its own tasks on every line. Those are now listed by
their bare name, the way `turbo.json` refers to them; tasks of other
packages keep their id. Re-expanding the bare names yields the previous
documents for every package.
@TimDiekmann TimDiekmann self-assigned this Sep 6, 2026
@vercel

vercel Bot commented Sep 6, 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 6, 2026 1:45pm UTC
hashdotdesign-tokens Ready Ready Preview Sep 6, 2026 1:45pm UTC
petrinaut Ready Ready Preview Sep 6, 2026 1:45pm UTC
petrinaut-docs Ready Ready Preview Sep 6, 2026 1:45pm UTC

Request Review

@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 Relates to first-party libraries/crates/packages (area) 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 6, 2026
@TimDiekmann
TimDiekmann marked this pull request as ready for review September 6, 2026 13:38
Copilot AI balanced review requested due to automatic review settings September 6, 2026 13:38
@TimDiekmann
TimDiekmann requested a review from a team as a code owner September 6, 2026 13:38
@cursor

cursor Bot commented Sep 6, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Documentation-only output format for turbo task graphs; no runtime or turbo graph behavior changes.

Overview
Checked-in docs/task-dependencies.json files now list same-package predecessors by bare task name (e.g. "codegen", "build") instead of repeating the full turbo id ("@apps/hash-api#codegen"). Cross-package edges still use package#task ids.

The task_dependencies generator in hash-repo-chores adds local_name to strip the owning package prefix when writing each document, and the module docs describe the convention. 25 affected JSON files were regenerated; dependency edges are unchanged—only how own-package tasks are spelled.

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

@codspeed-hq

codspeed-hq Bot commented Sep 6, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

⚠️ 6 benchmarks measured no execution time

Nothing ran under measurement, usually because the compiler removed the code under test. These results are not comparable, so they count as unchanged.

Preventing compiler optimizations

✅ 98 untouched benchmarks

Performance Changes

Benchmark BASE HEAD Efficiency
⚠️ as_constant < 1 ns < 1 ns N/A
⚠️ constant_equal < 1 ns < 1 ns N/A
⚠️ constant_not_equal < 1 ns < 1 ns N/A
⚠️ access < 1 ns < 1 ns N/A
⚠️ runtime_equal < 1 ns < 1 ns N/A
⚠️ runtime_not_equal < 1 ns < 1 ns N/A

Comparing t/sre-1034-reference-a-packages-own-tasks-by-bare-name-in-task (7998e7d) with t/sre-989-carry-crate-source-hashes-without-a-build (c0decf5)

Open in CodSpeed

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 approval-blocking issues.

Pull request overview

Updates task-dependency documentation to use bare names for same-package prerequisites while retaining qualified cross-package IDs.

Changes:

  • Adds own-package task-name normalization to the Rust generator.
  • Regenerates 25 dependency documents without changing graph edges.
File summaries
File Description
tests/hash-playwright/docs/task-dependencies.json Normalizes local codegen references.
tests/hash-backend-integration/docs/task-dependencies.json Normalizes local codegen references.
libs/@local/repo-chores/rust/src/task_dependencies/mod.rs Implements local task-name normalization.
libs/@local/repo-chores/rust/docs/task-dependencies.json Normalizes local build references.
libs/@local/petrinaut-python/docs/task-dependencies.json Normalizes local codegen references.
libs/@local/petrinaut-optimizer-client/docs/task-dependencies.json Normalizes local codegen references.
libs/@local/hash-isomorphic-utils/docs/task-dependencies.json Normalizes local codegen references.
libs/@local/graph/store/typescript/docs/task-dependencies.json Normalizes local codegen references.
libs/@local/graph/client/typescript/docs/task-dependencies.json Normalizes local codegen references.
libs/@local/graph/authorization/typescript/docs/task-dependencies.json Normalizes local codegen references.
libs/@local/eslint/docs/task-dependencies.json Normalizes local build references.
libs/@local/effect-dns/hickory/typescript/docs/task-dependencies.json Normalizes local build references.
libs/@local/codec/typescript/docs/task-dependencies.json Normalizes local codegen references.
libs/@hashintel/petrinaut-cli/docs/task-dependencies.json Normalizes local build and codegen references.
libs/@hashintel/ds-components/docs/task-dependencies.json Normalizes same-package prerequisites.
libs/@blockprotocol/type-system/typescript/docs/task-dependencies.json Normalizes local codegen references.
apps/plugin-browser/docs/task-dependencies.json Normalizes local codegen references.
apps/petrinaut-website/docs/task-dependencies.json Normalizes local generation tasks.
apps/petrinaut-opt/docs/task-dependencies.json Normalizes local codegen references.
apps/petrinaut-docs/docs/task-dependencies.json Normalizes local bundle-sync references.
apps/hash-integration-worker/docs/task-dependencies.json Normalizes local build references.
apps/hash-graph/docs/task-dependencies.json Normalizes local startup prerequisites.
apps/hash-frontend/docs/task-dependencies.json Normalizes local build and codegen references.
apps/hash-api/docs/task-dependencies.json Normalizes local startup and codegen references.
apps/hash-ai-worker-ts/docs/task-dependencies.json Normalizes local build references.
apps/brunch-agent/docs/task-dependencies.json Normalizes the local build reference.
Review details
  • Files reviewed: 26/26 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.

@github-actions

github-actions Bot commented Sep 6, 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 $$18.5 \mathrm{ms} \pm 129 \mathrm{μs}\left({\color{gray}-0.023 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.17 \mathrm{ms} \pm 15.3 \mathrm{μs}\left({\color{gray}-0.207 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 1002 $$8.28 \mathrm{ms} \pm 61.2 \mathrm{μs}\left({\color{gray}-1.076 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 3314 $$26.0 \mathrm{ms} \pm 283 \mathrm{μs}\left({\color{gray}-2.853 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$8.45 \mathrm{ms} \pm 56.6 \mathrm{μs}\left({\color{gray}1.53 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 1527 $$15.2 \mathrm{ms} \pm 128 \mathrm{μs}\left({\color{gray}-0.606 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 2078 $$19.3 \mathrm{ms} \pm 162 \mathrm{μs}\left({\color{gray}0.234 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.36 \mathrm{ms} \pm 17.4 \mathrm{μs}\left({\color{gray}-0.653 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 1033 $$9.21 \mathrm{ms} \pm 65.3 \mathrm{μs}\left({\color{gray}2.16 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_medium

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 102 $$2.42 \mathrm{ms} \pm 17.1 \mathrm{μs}\left({\color{gray}2.12 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$1.99 \mathrm{ms} \pm 13.9 \mathrm{μs}\left({\color{gray}4.60 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 52 $$2.14 \mathrm{ms} \pm 13.5 \mathrm{μs}\left({\color{gray}0.362 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 269 $$3.56 \mathrm{ms} \pm 71.7 \mathrm{μs}\left({\color{red}5.14 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$2.36 \mathrm{ms} \pm 15.2 \mathrm{μs}\left({\color{red}5.92 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 108 $$2.72 \mathrm{ms} \pm 18.7 \mathrm{μs}\left({\color{gray}4.99 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 133 $$2.92 \mathrm{ms} \pm 22.9 \mathrm{μs}\left({\color{gray}-1.005 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.35 \mathrm{ms} \pm 18.6 \mathrm{μs}\left({\color{red}7.30 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 63 $$2.63 \mathrm{ms} \pm 21.2 \mathrm{μs}\left({\color{lightgreen}-5.164 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_none

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2 $$1.75 \mathrm{ms} \pm 18.9 \mathrm{μs}\left({\color{gray}0.185 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$1.69 \mathrm{ms} \pm 8.10 \mathrm{μs}\left({\color{gray}-1.633 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 2 $$1.81 \mathrm{ms} \pm 10.7 \mathrm{μs}\left({\color{gray}-0.104 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 8 $$1.99 \mathrm{ms} \pm 13.9 \mathrm{μs}\left({\color{gray}-1.410 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$1.82 \mathrm{ms} \pm 11.1 \mathrm{μs}\left({\color{gray}-0.447 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 3 $$2.04 \mathrm{ms} \pm 15.8 \mathrm{μs}\left({\color{gray}1.67 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_small

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 52 $$2.01 \mathrm{ms} \pm 16.4 \mathrm{μs}\left({\color{gray}2.95 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$1.73 \mathrm{ms} \pm 7.83 \mathrm{μs}\left({\color{gray}-0.953 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 26 $$1.88 \mathrm{ms} \pm 12.0 \mathrm{μs}\left({\color{gray}-0.683 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 94 $$2.19 \mathrm{ms} \pm 14.2 \mathrm{μs}\left({\color{gray}-0.615 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$1.96 \mathrm{ms} \pm 11.8 \mathrm{μs}\left({\color{gray}3.58 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 27 $$2.06 \mathrm{ms} \pm 13.1 \mathrm{μs}\left({\color{gray}-2.443 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 66 $$2.12 \mathrm{ms} \pm 15.1 \mathrm{μs}\left({\color{gray}-1.281 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$1.90 \mathrm{ms} \pm 12.2 \mathrm{μs}\left({\color{gray}-3.193 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 29 $$2.07 \mathrm{ms} \pm 16.1 \mathrm{μs}\left({\color{gray}0.312 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_complete

Function Value Mean Flame graphs
entity_by_id;one_depth 1 entities $$22.2 \mathrm{ms} \pm 95.3 \mathrm{μs}\left({\color{gray}-1.209 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 10 entities $$48.0 \mathrm{ms} \pm 222 \mathrm{μs}\left({\color{gray}1.59 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 25 entities $$24.9 \mathrm{ms} \pm 123 \mathrm{μs}\left({\color{gray}4.67 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 5 entities $$27.9 \mathrm{ms} \pm 150 \mathrm{μs}\left({\color{gray}-1.764 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 50 entities $$29.5 \mathrm{ms} \pm 242 \mathrm{μs}\left({\color{red}5.73 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 1 entities $$23.6 \mathrm{ms} \pm 110 \mathrm{μs}\left({\color{gray}0.847 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 10 entities $$271 \mathrm{ms} \pm 1.14 \mathrm{ms}\left({\color{gray}-1.133 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 25 entities $$57.5 \mathrm{ms} \pm 459 \mathrm{μs}\left({\color{gray}3.37 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 5 entities $$57.1 \mathrm{ms} \pm 334 \mathrm{μs}\left({\color{lightgreen}-5.385 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 50 entities $$172 \mathrm{ms} \pm 952 \mathrm{μs}\left({\color{lightgreen}-8.967 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 1 entities $$7.56 \mathrm{ms} \pm 49.0 \mathrm{μs}\left({\color{gray}4.41 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 10 entities $$7.40 \mathrm{ms} \pm 34.6 \mathrm{μs}\left({\color{gray}0.498 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 25 entities $$7.49 \mathrm{ms} \pm 40.5 \mathrm{μs}\left({\color{gray}-0.181 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 5 entities $$7.48 \mathrm{ms} \pm 39.7 \mathrm{μs}\left({\color{gray}2.76 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 50 entities $$7.38 \mathrm{ms} \pm 29.5 \mathrm{μs}\left({\color{gray}0.295 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_linkless

Function Value Mean Flame graphs
entity_by_id 1 entities $$7.23 \mathrm{ms} \pm 39.0 \mathrm{μs}\left({\color{gray}-0.312 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10 entities $$7.27 \mathrm{ms} \pm 50.0 \mathrm{μs}\left({\color{gray}1.27 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 100 entities $$7.15 \mathrm{ms} \pm 31.1 \mathrm{μs}\left({\color{gray}-0.026 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 1000 entities $$7.34 \mathrm{ms} \pm 39.9 \mathrm{μs}\left({\color{gray}2.96 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10000 entities $$7.74 \mathrm{ms} \pm 43.3 \mathrm{μs}\left({\color{gray}2.53 \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 $$7.49 \mathrm{ms} \pm 37.3 \mathrm{μs}\left({\color{gray}-2.894 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/book/v/1 $$7.55 \mathrm{ms} \pm 42.5 \mathrm{μs}\left({\color{gray}-0.064 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/building/v/1 $$7.45 \mathrm{ms} \pm 50.7 \mathrm{μs}\left({\color{gray}-1.063 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/organization/v/1 $$7.49 \mathrm{ms} \pm 38.0 \mathrm{μs}\left({\color{gray}0.531 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/page/v/2 $$7.46 \mathrm{ms} \pm 48.3 \mathrm{μs}\left({\color{gray}-4.711 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/person/v/1 $$7.47 \mathrm{ms} \pm 34.7 \mathrm{μs}\left({\color{gray}-1.880 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/playlist/v/1 $$7.65 \mathrm{ms} \pm 65.9 \mathrm{μs}\left({\color{gray}-0.716 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/song/v/1 $$7.58 \mathrm{ms} \pm 46.9 \mathrm{μs}\left({\color{gray}-4.128 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/uk-address/v/1 $$7.48 \mathrm{ms} \pm 35.8 \mathrm{μs}\left({\color{gray}-0.822 \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 $$5.66 \mathrm{ms} \pm 35.8 \mathrm{μs}\left({\color{gray}2.00 \mathrm{\%}}\right) $$ Flame Graph

representative_read_multiple_entities

Function Value Mean Flame graphs
entity_by_property traversal_paths=0 0 $$41.8 \mathrm{ms} \pm 329 \mathrm{μs}\left({\color{gray}-4.890 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$77.7 \mathrm{ms} \pm 424 \mathrm{μs}\left({\color{gray}-2.247 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false $$44.4 \mathrm{ms} \pm 284 \mathrm{μs}\left({\color{lightgreen}-6.305 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$51.7 \mathrm{ms} \pm 304 \mathrm{μs}\left({\color{gray}-3.112 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$59.0 \mathrm{ms} \pm 327 \mathrm{μs}\left({\color{gray}-2.028 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$65.5 \mathrm{ms} \pm 497 \mathrm{μs}\left({\color{gray}0.186 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=0 0 $$30.4 \mathrm{ms} \pm 274 \mathrm{μs}\left({\color{gray}-1.236 \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 $$51.2 \mathrm{ms} \pm 321 \mathrm{μs}\left({\color{gray}0.505 \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 $$34.1 \mathrm{ms} \pm 267 \mathrm{μs}\left({\color{gray}-4.157 \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 $$38.9 \mathrm{ms} \pm 234 \mathrm{μs}\left({\color{lightgreen}-5.640 \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 $$41.7 \mathrm{ms} \pm 264 \mathrm{μs}\left({\color{gray}-3.030 \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 $$42.1 \mathrm{ms} \pm 217 \mathrm{μs}\left({\color{gray}-2.784 \mathrm{\%}}\right) $$

scenarios

Function Value Mean Flame graphs
full_test query-limited $$79.9 \mathrm{ms} \pm 607 \mathrm{μs}\left({\color{lightgreen}-6.567 \mathrm{\%}}\right) $$ Flame Graph
full_test query-unlimited $$87.0 \mathrm{ms} \pm 627 \mathrm{μs}\left({\color{gray}0.967 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-limited $$14.3 \mathrm{ms} \pm 63.8 \mathrm{μs}\left({\color{red}22.6 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-unlimited $$352 \mathrm{ms} \pm 1.76 \mathrm{ms}\left({\color{gray}-1.372 \mathrm{\%}}\right) $$ Flame Graph

@TimDiekmann
TimDiekmann added this pull request to the merge queue Sep 7, 2026
Merged via the queue into main with commit 50327ec Sep 7, 2026
219 checks passed
Base automatically changed from t/sre-989-carry-crate-source-hashes-without-a-build to main September 7, 2026 09:49
@TimDiekmann
TimDiekmann deleted the t/sre-1034-reference-a-packages-own-tasks-by-bare-name-in-task branch September 7, 2026 09:49
@github-actions github-actions Bot added the area/deps Relates to third-party dependencies (area) label Sep 7, 2026
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/deps Relates to third-party dependencies (area) 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