Skip to content

SRE-1007: Make the Brunch agent transport boundary check fire in CI, and fix the violation - #9498

Merged
kostandinang merged 2 commits into
mainfrom
ka/sre-1007-brunch-transport-boundary-ci
Sep 2, 2026
Merged

SRE-1007: Make the Brunch agent transport boundary check fire in CI, and fix the violation#9498
kostandinang merged 2 commits into
mainfrom
ka/sre-1007-brunch-transport-boundary-ci

Conversation

@kostandinang

Copy link
Copy Markdown
Contributor

🌟 What is the purpose of this PR?

Restore the Brunch transport boundary and make future violations fail at the earliest relevant CI gates. The Petrinaut website now consumes core-owned client-tool contracts directly, while the AI SDK transport remains independent of Brunch core, bindings, plugins, and substrates.

This proves that manifest violations fail during yarn install and that changes to every file scanned by the core architecture suite affect its Turbo task. It does not replace the source-level architecture checks or change runtime behavior.

🔗 Related links

🚫 Blocked by

None.

🔍 What does this change?

  • Moves browser-safe client-tool constants, inferred types, and parsers to the existing @hashintel/brunch-agent/client-tools core subpath.
  • Removes the transport's core dependency and client-tools re-export; website consumers now declare and import core directly.
  • Declares the Brunch context and app scan roots as inputs to core's test:unit task, excluding generated and dependency directories.
  • Adds matching Yarn and Oxlint boundary enforcement and enables constraint checks during installation.
  • Updates the lockfile and prune graph fixture to represent the corrected dependency direction.
🏗️ Agent notes

Mission contract

  • Imperative: Repair the transport dependency direction and prevent the architecture check from being silently skipped when any governed package or app file changes.
  • Throughline: apps/petrinaut-website reads browser contracts from Brunch core; transport-aisdk depends only on wire-level libraries. Package installation checks the manifest boundary, while Turbo selects the core architecture suite from every tree it scans.
  • Proof: The full core suite and transport suite pass; affected website consumers pass tests, lint, typecheck, and build; a deliberately reintroduced transport-to-core dependency fails both yarn constraints and yarn install; Turbo's resolved inputs include the transport manifest and app source while excluding generated directories.
  • Constraints: Preserve the existing host-facing tool contract and runtime behavior. Keep private package topology intact. Do not replace broader source-level architecture checks with manifest-only constraints.
  • Fog-line: The Yarn rule could reproduce the current transport's exact ai/valibot allowlist or enforce the architectural boundary. It enforces the latter, banning Brunch-family and substrate dependencies while allowing future wire encoders.
  • Stop or reorient: Reorient if consumers require the transport re-export, the install-time check exposes unrelated existing violations, or external task inputs hash generated artifacts. None were observed.

Implementation record

  • The constraint applies across dependency types and uses dependency.error, so it cannot silently autofix a forbidden edge.
  • enableConstraintsChecks: true promotes the rule from a standalone lint to install-time validation.
  • The Turbo dry run resolved both external scan roots and zero node_modules, dist, .turbo, or .flue inputs.
  • The transport lint rule was red-proved with a temporary forbidden core subpath import; the fixture was removed afterward.

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:

  • affected the execution graph, and the turbo.json's have been updated to reflect this

⚠️ Known issues

None known.

🐾 Next steps

None required for this fix.

🛡 What tests cover this?

  • Full Brunch core suite: 197 passed, 1 skipped.
  • Transport suite: 9 passed.
  • Affected website contract tests: 8 passed.
  • Prune repository fixture suite: 6 passed.
  • Core, transport, and website lint/typecheck/build checks passed.
  • Yarn constraints, install-time negative proof, changed-file formatting, and resolved Turbo input inspection passed.

❓ How to test this?

  1. Run yarn install --immutable and yarn constraints.
  2. Run yarn workspace @hashintel/brunch-agent test:unit and python3 .github/actions/prune-repository/prune_test.py.
  3. Run mise exec -- turbo run test:unit --filter '@hashintel/brunch-agent' --dry=json and confirm the resolved inputs include sibling Brunch packages and apps/brunch-agent, without generated directories.
  4. To red-proof the install guard, temporarily add @hashintel/brunch-agent to the transport dependencies and confirm yarn install exits with YN0084; then revert the temporary edit.

📹 Demo

Not applicable — this changes dependency and CI enforcement only.

Made with Cursor

Make transport dependency violations affect the core architecture task and fail during installation.

Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercel Bot commented Sep 2, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated
hashdotdesign-tokens Building Building Preview Sep 2, 2026 12:36pm UTC
petrinaut Ready Ready Preview Sep 2, 2026 12:36pm UTC
2 Skipped Deployments
Project Deployment Actions Updated
hash Ignored Ignored Preview Sep 2, 2026 12:36pm UTC
petrinaut-docs Ignored Ignored Preview Sep 2, 2026 12:36pm UTC

Request Review

@github-actions github-actions Bot added area/deps Relates to third-party dependencies (area) area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team area/apps labels Sep 2, 2026
@kostandinang
kostandinang marked this pull request as ready for review September 2, 2026 11:58
@kostandinang
kostandinang requested a review from a team as a code owner September 2, 2026 11:58
@TimDiekmann
TimDiekmann requested a review from indietyp September 2, 2026 12:00
Comment thread .yarnrc.yml
Comment thread yarn.config.cjs
@codspeed-hq

codspeed-hq Bot commented Sep 2, 2026

Copy link
Copy Markdown

Merging this PR will degrade performance by 15.38%

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

❌ 2 regressed benchmarks
✅ 96 untouched benchmarks

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Benchmark BASE HEAD Efficiency
bit_matrix/dense/iter_row[64] 140.8 ns 170 ns -17.16%
bit_matrix/dense/iter_row[200] 185.8 ns 215 ns -13.57%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing ka/sre-1007-brunch-transport-boundary-ci (b6275ed) with main (27b32c4)1

Open in CodSpeed

Footnotes

  1. No successful run was found on main (ef69d0b) during the generation of this report, so 27b32c4 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

Comment thread libs/@hashintel/brunch-agent/packages/core/turbo.json
@kostandinang
kostandinang added this pull request to the merge queue Sep 2, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 2, 2026
@github-actions

github-actions Bot commented Sep 2, 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 $$28.0 \mathrm{ms} \pm 258 \mathrm{μs}\left({\color{gray}1.79 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$3.47 \mathrm{ms} \pm 25.3 \mathrm{μs}\left({\color{gray}-0.341 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 1002 $$12.7 \mathrm{ms} \pm 120 \mathrm{μs}\left({\color{gray}1.13 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 3314 $$43.7 \mathrm{ms} \pm 411 \mathrm{μs}\left({\color{gray}1.09 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$14.5 \mathrm{ms} \pm 137 \mathrm{μs}\left({\color{gray}1.49 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 1527 $$24.6 \mathrm{ms} \pm 213 \mathrm{μs}\left({\color{gray}0.799 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 2078 $$28.9 \mathrm{ms} \pm 214 \mathrm{μs}\left({\color{gray}0.381 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.80 \mathrm{ms} \pm 26.9 \mathrm{μs}\left({\color{gray}0.757 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 1033 $$14.0 \mathrm{ms} \pm 137 \mathrm{μs}\left({\color{gray}3.03 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_medium

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 102 $$3.90 \mathrm{ms} \pm 45.4 \mathrm{μs}\left({\color{gray}0.997 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$3.04 \mathrm{ms} \pm 24.9 \mathrm{μs}\left({\color{gray}0.448 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 52 $$3.47 \mathrm{ms} \pm 31.4 \mathrm{μs}\left({\color{gray}1.80 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 269 $$5.23 \mathrm{ms} \pm 46.7 \mathrm{μs}\left({\color{gray}-0.302 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$3.58 \mathrm{ms} \pm 21.7 \mathrm{μs}\left({\color{gray}0.499 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 108 $$4.20 \mathrm{ms} \pm 40.1 \mathrm{μs}\left({\color{gray}1.21 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 133 $$4.49 \mathrm{ms} \pm 37.9 \mathrm{μs}\left({\color{gray}0.659 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.54 \mathrm{ms} \pm 24.9 \mathrm{μs}\left({\color{gray}1.06 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 63 $$4.17 \mathrm{ms} \pm 32.0 \mathrm{μs}\left({\color{gray}0.811 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_none

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2 $$2.73 \mathrm{ms} \pm 19.5 \mathrm{μs}\left({\color{gray}3.62 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.57 \mathrm{ms} \pm 18.9 \mathrm{μs}\left({\color{gray}0.817 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 2 $$2.69 \mathrm{ms} \pm 18.8 \mathrm{μs}\left({\color{gray}3.36 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 8 $$2.97 \mathrm{ms} \pm 16.7 \mathrm{μs}\left({\color{gray}2.04 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.76 \mathrm{ms} \pm 18.4 \mathrm{μs}\left({\color{gray}2.84 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 3 $$2.98 \mathrm{ms} \pm 20.6 \mathrm{μs}\left({\color{gray}2.89 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_small

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 52 $$3.07 \mathrm{ms} \pm 15.3 \mathrm{μs}\left({\color{gray}-0.934 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.81 \mathrm{ms} \pm 20.0 \mathrm{μs}\left({\color{gray}0.666 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 26 $$3.06 \mathrm{ms} \pm 23.3 \mathrm{μs}\left({\color{gray}3.01 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 94 $$3.50 \mathrm{ms} \pm 26.9 \mathrm{μs}\left({\color{gray}1.25 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$3.04 \mathrm{ms} \pm 22.8 \mathrm{μs}\left({\color{gray}1.38 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 27 $$3.38 \mathrm{ms} \pm 28.8 \mathrm{μs}\left({\color{gray}3.01 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 66 $$3.44 \mathrm{ms} \pm 24.6 \mathrm{μs}\left({\color{gray}0.820 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.98 \mathrm{ms} \pm 18.8 \mathrm{μs}\left({\color{gray}-0.436 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 29 $$3.36 \mathrm{ms} \pm 20.2 \mathrm{μs}\left({\color{gray}1.58 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_complete

Function Value Mean Flame graphs
entity_by_id;one_depth 1 entities $$42.2 \mathrm{ms} \pm 259 \mathrm{μs}\left({\color{gray}-0.087 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 10 entities $$33.0 \mathrm{ms} \pm 247 \mathrm{μs}\left({\color{gray}-1.577 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 25 entities $$35.6 \mathrm{ms} \pm 257 \mathrm{μs}\left({\color{gray}-2.742 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 5 entities $$31.4 \mathrm{ms} \pm 246 \mathrm{μs}\left({\color{gray}-3.352 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 50 entities $$41.8 \mathrm{ms} \pm 286 \mathrm{μs}\left({\color{gray}0.298 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 1 entities $$49.4 \mathrm{ms} \pm 278 \mathrm{μs}\left({\color{gray}-0.908 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 10 entities $$40.0 \mathrm{ms} \pm 372 \mathrm{μs}\left({\color{gray}-0.365 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 25 entities $$90.1 \mathrm{ms} \pm 600 \mathrm{μs}\left({\color{gray}0.972 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 5 entities $$33.2 \mathrm{ms} \pm 199 \mathrm{μs}\left({\color{gray}-1.396 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 50 entities $$308 \mathrm{ms} \pm 1.33 \mathrm{ms}\left({\color{red}20.2 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 1 entities $$10.4 \mathrm{ms} \pm 59.1 \mathrm{μs}\left({\color{gray}-1.051 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 10 entities $$10.5 \mathrm{ms} \pm 66.9 \mathrm{μs}\left({\color{gray}-4.219 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 25 entities $$10.6 \mathrm{ms} \pm 61.1 \mathrm{μs}\left({\color{gray}-0.048 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 5 entities $$10.4 \mathrm{ms} \pm 66.6 \mathrm{μs}\left({\color{gray}-0.771 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 50 entities $$10.5 \mathrm{ms} \pm 64.7 \mathrm{μs}\left({\color{gray}-0.982 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_linkless

Function Value Mean Flame graphs
entity_by_id 1 entities $$10.5 \mathrm{ms} \pm 63.0 \mathrm{μs}\left({\color{gray}-1.002 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10 entities $$10.5 \mathrm{ms} \pm 68.6 \mathrm{μs}\left({\color{gray}-1.790 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 100 entities $$10.6 \mathrm{ms} \pm 88.8 \mathrm{μs}\left({\color{gray}0.421 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 1000 entities $$10.6 \mathrm{ms} \pm 76.9 \mathrm{μs}\left({\color{gray}-0.766 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10000 entities $$10.8 \mathrm{ms} \pm 81.2 \mathrm{μs}\left({\color{gray}-0.883 \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.9 \mathrm{ms} \pm 65.6 \mathrm{μs}\left({\color{gray}-3.613 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/book/v/1 $$11.1 \mathrm{ms} \pm 95.3 \mathrm{μs}\left({\color{gray}2.05 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/building/v/1 $$10.8 \mathrm{ms} \pm 69.8 \mathrm{μs}\left({\color{gray}-0.702 \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 69.4 \mathrm{μs}\left({\color{gray}-1.439 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/page/v/2 $$10.9 \mathrm{ms} \pm 69.7 \mathrm{μs}\left({\color{gray}-1.239 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/person/v/1 $$11.1 \mathrm{ms} \pm 82.3 \mathrm{μs}\left({\color{gray}-1.229 \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 81.3 \mathrm{μs}\left({\color{gray}-1.128 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/song/v/1 $$10.9 \mathrm{ms} \pm 69.6 \mathrm{μs}\left({\color{gray}-1.660 \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 71.1 \mathrm{μs}\left({\color{gray}-0.327 \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.14 \mathrm{ms} \pm 46.0 \mathrm{μs}\left({\color{gray}-0.915 \mathrm{\%}}\right) $$ Flame Graph

representative_read_multiple_entities

Function Value Mean Flame graphs
entity_by_property traversal_paths=0 0 $$56.1 \mathrm{ms} \pm 437 \mathrm{μs}\left({\color{gray}0.052 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$110 \mathrm{ms} \pm 712 \mathrm{μs}\left({\color{gray}-0.108 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false $$64.0 \mathrm{ms} \pm 514 \mathrm{μs}\left({\color{gray}0.336 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$73.5 \mathrm{ms} \pm 589 \mathrm{μs}\left({\color{gray}-0.479 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$82.9 \mathrm{ms} \pm 772 \mathrm{μs}\left({\color{gray}0.313 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$88.1 \mathrm{ms} \pm 498 \mathrm{μs}\left({\color{gray}-0.018 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=0 0 $$43.3 \mathrm{ms} \pm 318 \mathrm{μs}\left({\color{gray}0.658 \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.7 \mathrm{ms} \pm 592 \mathrm{μs}\left({\color{gray}-0.018 \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 $$49.1 \mathrm{ms} \pm 326 \mathrm{μs}\left({\color{gray}-0.191 \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 $$58.5 \mathrm{ms} \pm 439 \mathrm{μs}\left({\color{gray}-0.777 \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.5 \mathrm{ms} \pm 529 \mathrm{μs}\left({\color{gray}0.823 \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 $$61.9 \mathrm{ms} \pm 522 \mathrm{μs}\left({\color{gray}0.580 \mathrm{\%}}\right) $$

scenarios

Function Value Mean Flame graphs
full_test query-limited $$123 \mathrm{ms} \pm 826 \mathrm{μs}\left({\color{gray}0.917 \mathrm{\%}}\right) $$ Flame Graph
full_test query-unlimited $$136 \mathrm{ms} \pm 712 \mathrm{μs}\left({\color{gray}2.23 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-limited $$18.6 \mathrm{ms} \pm 131 \mathrm{μs}\left({\color{lightgreen}-17.483 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-unlimited $$531 \mathrm{ms} \pm 1.87 \mathrm{ms}\left({\color{gray}-2.644 \mathrm{\%}}\right) $$ Flame Graph

@kostandinang
kostandinang added this pull request to the merge queue Sep 2, 2026
Merged via the queue into main with commit 8a2ab9c Sep 2, 2026
326 of 330 checks passed
@kostandinang
kostandinang deleted the ka/sre-1007-brunch-transport-boundary-ci branch September 2, 2026 14:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps area/deps Relates to third-party dependencies (area) area/infra Relates to version control, CI, CD or IaC (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.

3 participants