Skip to content

SRE-805: Validate mise lockfile in CI#9018

Closed
claude[bot] wants to merge 2 commits into
mainfrom
claude/sre-805-validate-mise-lock
Closed

SRE-805: Validate mise lockfile in CI#9018
claude[bot] wants to merge 2 commits into
mainfrom
claude/sre-805-validate-mise-lock

Conversation

@claude

@claude claude Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Requested by Tim Diekmann · Slack thread

🌟 What is the purpose of this PR?

Before: a bad .config/mise/mise.lock — stale versions after a config.toml pin bump, missing platform entries, or a corrupt/tampered locked artifact — is only caught by a human reading the diff, or at install time on the affected platform. CI never exercises the lockfile directly; the Docker builds only hit it implicitly and late.

After: the Lint workflow fails fast (well under 2 minutes) with mise's own error messages when the lockfile is stale, incomplete for the platform, or fails checksum verification — on both linux-x64 and linux-arm64 runners.

How — mise-native validation only, no custom scripting:

  1. Locked resolution: mise install --locked --dry-run — mise fails if any configured tool (including ones not pinned in config.toml, e.g. rust from rust-toolchain.toml) is missing from the lockfile, or lacks a pre-resolved URL for the current platform. No downloads.
  2. Integrity: mise install --locked cargo-binstall java just node protoc sentry-cli taplo uv yq — actually downloads the locked URLs and mise verifies the sha256 checksums and sizes. These are the tools carrying platforms.* entries in the lockfile; cargo/npm/pipx tools install through their own package managers and have no locked URLs to verify.

Skip behavior: mise.lock does not exist on main until #9000 merges, so every validation step is gated on the file existing and the job passes as a no-op until then. This PR is green both before and after #9000 lands.

Deliberately out of scope: the wrong-arch asset class (e.g. mise lock emitting the yq_darwin_amd64 asset under the macos-arm64 key, as reproduced in #9000) is not checked — it is an upstream mise lock bug (draft issue text is on this PR), the lockfile it produces is internally consistent, and catching it cross-platform would require exactly the kind of custom lockfile parsing we decided against. macOS entries are validated for presence (layer 1) but not downloaded.

🔗 Related links

🚫 Blocked by

🔍 What does this change?

  • Adds a mise-lock job to .github/workflows/lint.yml, matrixed over ubuntu-24.04 and ubuntu-24.04-arm (same runners as deploy.yml), using the repo-pinned jdx/mise-action.
  • Wires the new job into the passed gate job (accepting success|skipped).

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

  • The tool list in the "Install URL-locked tools" step is maintained by hand (a comment in the workflow says to keep it in sync with mise.lock); a tool missing from the list is still validated by the dry-run step, just not downloaded.
  • config.ci.toml/config.dev.toml tools are not validated: mise keeps per-environment lockfiles (mise.ci.lock etc.), which don't exist yet.

🐾 Next steps

  • Regenerate the lockfile once the upstream mise lock wrong-arch bug (yq macos-arm64) is fixed.
  • Consider locking the CI environment (mise.ci.lock) and extending validation to it.

🛡 What tests cover this?

  • Behavior relies on mise's own locked-mode semantics (verified against mise 2026.7.0 source: locked resolution failure, locked URL-presence check running under --dry-run, and install-time sha256/size verification).

❓ How to test this?

  1. Check out this branch and observe the Mise lockfile jobs skip (no lockfile on main yet).
  2. Cherry-pick the lockfile commit from SRE-805: Harden Docker mise tool installation against transient upstream failures #9000 onto this branch: the jobs run, resolve every tool from the lockfile, and download + checksum-verify the URL-locked tools.
  3. Corrupt any checksum or URL in mise.lock, or bump a config.toml pin without re-locking: the job fails with mise's own error message.

Add a 'Mise lockfile' job to the Lint workflow that catches broken,
stale, or wrong-architecture .config/mise/mise.lock entries:

- .github/scripts/validate-mise-lock.py runs offline checks: config.toml
  pins match locked versions, required platforms are covered, no
  platform entry points at an asset for a different OS/arch, and no two
  platforms share a non-universal asset.
- 'mise install --locked --dry-run' natively fails on tools missing
  from the lockfile or lacking pre-resolved URLs for the platform.
- A real 'mise install --locked' of URL-locked tools downloads and
  sha256-verifies the locked artifacts on linux-x64 and linux-arm64.

The job skips gracefully while mise.lock is absent on main, and the
known wrong-arch yq macos-arm64 entry produced by 'mise lock' upstream
is allowlisted as a warning with a tracking comment.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EcBiQCfeizMQJubtqXkiMs
@vercel

vercel Bot commented Jul 13, 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, Comment Jul 13, 2026 1:44pm
hashdotdesign-tokens Ready Ready Preview, Comment Jul 13, 2026 1:44pm
petrinaut Ready Ready Preview, Comment Jul 13, 2026 1:44pm

@github-actions github-actions Bot added the area/infra Relates to version control, CI, CD or IaC (area) label Jul 13, 2026
@claude

claude Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Upstream issue draft for jdx/mise — this session can only write to hashintel repos, so filing it needs someone with access. Ready to copy-paste at https://github.com/jdx/mise/issues/new:

Title: mise lock resolves the darwin_amd64 asset for platforms.macos-arm64 for aqua:mikefarah/yq

mise version: 2026.7.0

Repro: In a project with yq = "4.53.2" in mise.toml (aqua backend, aqua:mikefarah/yq), run:

mise lock -p linux-x64,linux-arm64,macos-x64,macos-arm64

Observed: the macos-arm64 entry is byte-identical to the macos-x64 entry — both point at the yq_darwin_amd64 asset (release asset id 398368453):

[tools.yq."platforms.macos-arm64"]
checksum = "sha256:616b0a0f6a5b79d746f05a169c2b9bb40dee00c605ef165b9a1c1681bba738ac"
url = "https://github.com/mikefarah/yq/releases/download/v4.53.2/yq_darwin_amd64"
url_api = "https://api.github.com/repos/mikefarah/yq/releases/assets/398368453"
provenance = "cosign"

[tools.yq."platforms.macos-x64"]
checksum = "sha256:616b0a0f6a5b79d746f05a169c2b9bb40dee00c605ef165b9a1c1681bba738ac"
url = "https://github.com/mikefarah/yq/releases/download/v4.53.2/yq_darwin_amd64"
url_api = "https://api.github.com/repos/mikefarah/yq/releases/assets/398368453"
provenance = "cosign"

Expected: macos-arm64 should resolve the native yq_darwin_arm64 asset, which exists in the v4.53.2 release.

All other tools in the same config (aqua and core backends: cargo-binstall, just, protoc, sentry-cli, taplo, uv, node, java) resolve per-platform correctly in the same run — only yq is affected. Reproduced twice by independent mise lock runs. Since the checksum is computed from the wrong asset, the lockfile is internally consistent and installs verify "successfully" on Apple silicon (running under Rosetta 2), so nothing catches it at install time.

Found while locking tools in hashintel/hash PR #9000.

@codspeed-hq

codspeed-hq Bot commented Jul 13, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 98 untouched benchmarks


Comparing claude/sre-805-validate-mise-lock (057b501) with main (b6fb59e)

Open in CodSpeed

Per review: no Python validator for the lockfile. The mise-lock job now
relies solely on mise itself:

- 'mise install --locked --dry-run' fails on tools missing from the
  lockfile or lacking pre-resolved URLs for the current platform.
- 'mise install --locked <url-locked tools>' downloads the locked URLs
  and verifies sha256 checksums and sizes natively.

The wrong-arch asset class (e.g. the upstream yq macos-arm64 bug) is
intentionally no longer checked in CI.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EcBiQCfeizMQJubtqXkiMs
@codecov

codecov Bot commented Jul 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 59.73%. Comparing base (6736174) to head (057b501).
⚠️ Report is 5 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #9018   +/-   ##
=======================================
  Coverage   59.73%   59.73%           
=======================================
  Files        1371     1371           
  Lines      135461   135461           
  Branches     6066     6066           
=======================================
+ Hits        80911    80912    +1     
+ Misses      53618    53617    -1     
  Partials      932      932           
Flag Coverage Δ
apps.hash-ai-worker-ts 1.39% <ø> (ø)
apps.hash-api 6.39% <ø> (ø)
blockprotocol.type-system 40.84% <ø> (ø)
local.claude-hooks 0.00% <ø> (ø)
local.harpc-client 51.49% <ø> (ø)
local.hash-backend-utils 1.90% <ø> (ø)
local.hash-graph-sdk 10.02% <ø> (ø)
local.hash-isomorphic-utils 0.18% <ø> (ø)
rust.antsi 0.00% <ø> (ø)
rust.error-stack 90.89% <ø> (ø)
rust.harpc-codec 84.70% <ø> (ø)
rust.harpc-net 96.21% <ø> (+0.01%) ⬆️
rust.harpc-tower 67.03% <ø> (ø)
rust.harpc-types 0.00% <ø> (ø)
rust.harpc-wire-protocol 92.23% <ø> (ø)
rust.hash-codec 72.76% <ø> (ø)
rust.hash-graph-api 7.41% <ø> (ø)
rust.hash-graph-authorization 62.59% <ø> (ø)
rust.hash-graph-embeddings 91.88% <ø> (ø)
rust.hash-graph-postgres-store 29.13% <ø> (ø)
rust.hash-graph-store 38.47% <ø> (ø)
rust.hash-graph-temporal-versioning 47.95% <ø> (ø)
rust.hash-graph-types 0.00% <ø> (ø)
rust.hash-graph-validation 84.71% <ø> (ø)
rust.hashql-ast 89.63% <ø> (ø)
rust.hashql-compiletest 28.39% <ø> (ø)
rust.hashql-core 78.98% <ø> (ø)
rust.hashql-diagnostics 72.51% <ø> (ø)
rust.hashql-eval 80.04% <ø> (ø)
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.

@claude

claude Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Folded into #9000 per review feedback (mise-native validation only, commit 373ac55); the upstream jdx/mise issue draft in the comment above remains valid.

@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 $$26.1 \mathrm{ms} \pm 182 \mathrm{μs}\left({\color{gray}0.339 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$3.42 \mathrm{ms} \pm 17.5 \mathrm{μs}\left({\color{gray}-0.031 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 1002 $$12.4 \mathrm{ms} \pm 98.1 \mathrm{μs}\left({\color{gray}-0.503 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 3314 $$43.7 \mathrm{ms} \pm 324 \mathrm{μs}\left({\color{gray}0.092 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$15.0 \mathrm{ms} \pm 142 \mathrm{μs}\left({\color{gray}3.36 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 1527 $$24.6 \mathrm{ms} \pm 219 \mathrm{μs}\left({\color{gray}-0.228 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 2078 $$26.7 \mathrm{ms} \pm 187 \mathrm{μs}\left({\color{gray}-1.238 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.73 \mathrm{ms} \pm 20.0 \mathrm{μs}\left({\color{gray}-0.739 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 1033 $$13.6 \mathrm{ms} \pm 132 \mathrm{μs}\left({\color{gray}-0.250 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_medium

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 102 $$3.76 \mathrm{ms} \pm 20.2 \mathrm{μs}\left({\color{gray}0.311 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$3.03 \mathrm{ms} \pm 15.0 \mathrm{μs}\left({\color{gray}-0.229 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 52 $$3.38 \mathrm{ms} \pm 17.3 \mathrm{μs}\left({\color{gray}-0.138 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 269 $$5.13 \mathrm{ms} \pm 28.7 \mathrm{μs}\left({\color{gray}-0.896 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$3.58 \mathrm{ms} \pm 17.0 \mathrm{μs}\left({\color{gray}0.542 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 108 $$4.11 \mathrm{ms} \pm 21.1 \mathrm{μs}\left({\color{gray}0.180 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 133 $$4.35 \mathrm{ms} \pm 25.9 \mathrm{μs}\left({\color{gray}0.203 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.47 \mathrm{ms} \pm 16.0 \mathrm{μs}\left({\color{gray}-0.886 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 63 $$4.08 \mathrm{ms} \pm 23.6 \mathrm{μs}\left({\color{gray}0.403 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_none

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2 $$2.70 \mathrm{ms} \pm 13.7 \mathrm{μs}\left({\color{gray}2.89 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.54 \mathrm{ms} \pm 14.3 \mathrm{μs}\left({\color{gray}0.048 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 2 $$2.68 \mathrm{ms} \pm 14.6 \mathrm{μs}\left({\color{gray}2.48 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 8 $$2.98 \mathrm{ms} \pm 19.7 \mathrm{μs}\left({\color{gray}3.21 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.76 \mathrm{ms} \pm 11.8 \mathrm{μs}\left({\color{gray}2.73 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 3 $$2.96 \mathrm{ms} \pm 14.2 \mathrm{μs}\left({\color{gray}3.64 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_small

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 52 $$3.04 \mathrm{ms} \pm 15.6 \mathrm{μs}\left({\color{gray}-0.051 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.78 \mathrm{ms} \pm 14.0 \mathrm{μs}\left({\color{gray}-0.718 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 26 $$3.00 \mathrm{ms} \pm 13.8 \mathrm{μs}\left({\color{gray}-0.239 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 94 $$3.42 \mathrm{ms} \pm 21.6 \mathrm{μs}\left({\color{gray}0.365 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$3.02 \mathrm{ms} \pm 15.1 \mathrm{μs}\left({\color{gray}-0.137 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 27 $$3.33 \mathrm{ms} \pm 15.9 \mathrm{μs}\left({\color{gray}0.522 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 66 $$3.39 \mathrm{ms} \pm 21.3 \mathrm{μs}\left({\color{gray}0.883 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.00 \mathrm{ms} \pm 16.8 \mathrm{μs}\left({\color{gray}-1.451 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 29 $$3.33 \mathrm{ms} \pm 22.3 \mathrm{μs}\left({\color{gray}0.935 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_complete

Function Value Mean Flame graphs
entity_by_id;one_depth 1 entities $$41.7 \mathrm{ms} \pm 214 \mathrm{μs}\left({\color{gray}-0.912 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 10 entities $$32.9 \mathrm{ms} \pm 173 \mathrm{μs}\left({\color{gray}0.557 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 25 entities $$35.6 \mathrm{ms} \pm 226 \mathrm{μs}\left({\color{gray}-0.363 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 5 entities $$51.4 \mathrm{ms} \pm 1.15 \mathrm{ms}\left({\color{gray}3.22 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 50 entities $$42.1 \mathrm{ms} \pm 233 \mathrm{μs}\left({\color{gray}-0.743 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 1 entities $$48.6 \mathrm{ms} \pm 210 \mathrm{μs}\left({\color{gray}-2.565 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 10 entities $$40.2 \mathrm{ms} \pm 205 \mathrm{μs}\left({\color{gray}0.042 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 25 entities $$90.2 \mathrm{ms} \pm 478 \mathrm{μs}\left({\color{gray}-1.197 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 5 entities $$33.5 \mathrm{ms} \pm 143 \mathrm{μs}\left({\color{gray}-0.768 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 50 entities $$305 \mathrm{ms} \pm 975 \mathrm{μs}\left({\color{red}10.3 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 1 entities $$10.5 \mathrm{ms} \pm 59.3 \mathrm{μs}\left({\color{gray}-0.037 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 10 entities $$10.6 \mathrm{ms} \pm 56.9 \mathrm{μs}\left({\color{gray}-0.193 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 25 entities $$10.7 \mathrm{ms} \pm 64.2 \mathrm{μs}\left({\color{gray}0.847 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 5 entities $$10.6 \mathrm{ms} \pm 54.6 \mathrm{μs}\left({\color{gray}0.159 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 50 entities $$10.7 \mathrm{ms} \pm 65.7 \mathrm{μs}\left({\color{gray}-0.100 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_linkless

Function Value Mean Flame graphs
entity_by_id 1 entities $$10.6 \mathrm{ms} \pm 54.9 \mathrm{μs}\left({\color{gray}0.213 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10 entities $$10.8 \mathrm{ms} \pm 44.6 \mathrm{μs}\left({\color{gray}-0.176 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 100 entities $$10.8 \mathrm{ms} \pm 74.7 \mathrm{μs}\left({\color{gray}0.146 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 1000 entities $$10.8 \mathrm{ms} \pm 64.8 \mathrm{μs}\left({\color{gray}0.261 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10000 entities $$11.2 \mathrm{ms} \pm 71.6 \mathrm{μs}\left({\color{gray}-0.309 \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 59.4 \mathrm{μs}\left({\color{gray}-0.935 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/book/v/1 $$11.0 \mathrm{ms} \pm 77.7 \mathrm{μs}\left({\color{gray}0.127 \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 68.3 \mathrm{μs}\left({\color{gray}-1.368 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/organization/v/1 $$10.9 \mathrm{ms} \pm 52.6 \mathrm{μs}\left({\color{gray}0.017 \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 62.4 \mathrm{μs}\left({\color{gray}-0.090 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/person/v/1 $$11.0 \mathrm{ms} \pm 56.7 \mathrm{μs}\left({\color{gray}0.121 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/playlist/v/1 $$10.9 \mathrm{ms} \pm 58.1 \mathrm{μs}\left({\color{gray}-0.734 \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 65.5 \mathrm{μs}\left({\color{gray}-0.407 \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 58.6 \mathrm{μs}\left({\color{gray}-0.545 \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.48 \mathrm{ms} \pm 47.2 \mathrm{μs}\left({\color{gray}-0.832 \mathrm{\%}}\right) $$ Flame Graph

representative_read_multiple_entities

Function Value Mean Flame graphs
entity_by_property traversal_paths=0 0 $$59.5 \mathrm{ms} \pm 510 \mathrm{μs}\left({\color{gray}-0.244 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$114 \mathrm{ms} \pm 741 \mathrm{μs}\left({\color{gray}0.494 \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.9 \mathrm{ms} \pm 373 \mathrm{μs}\left({\color{gray}-0.719 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$76.5 \mathrm{ms} \pm 584 \mathrm{μs}\left({\color{gray}-0.038 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$86.5 \mathrm{ms} \pm 629 \mathrm{μs}\left({\color{gray}-0.043 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$91.4 \mathrm{ms} \pm 593 \mathrm{μs}\left({\color{gray}0.195 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=0 0 $$44.7 \mathrm{ms} \pm 214 \mathrm{μs}\left({\color{gray}-1.571 \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 $$75.4 \mathrm{ms} \pm 479 \mathrm{μs}\left({\color{gray}0.940 \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 $$51.6 \mathrm{ms} \pm 349 \mathrm{μs}\left({\color{gray}0.658 \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 $$61.5 \mathrm{ms} \pm 395 \mathrm{μs}\left({\color{gray}0.492 \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 $$63.3 \mathrm{ms} \pm 315 \mathrm{μs}\left({\color{gray}-0.263 \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 $$64.3 \mathrm{ms} \pm 527 \mathrm{μs}\left({\color{gray}0.487 \mathrm{\%}}\right) $$

scenarios

Function Value Mean Flame graphs
full_test query-limited $$116 \mathrm{ms} \pm 509 \mathrm{μs}\left({\color{lightgreen}-8.175 \mathrm{\%}}\right) $$ Flame Graph
full_test query-unlimited $$129 \mathrm{ms} \pm 436 \mathrm{μs}\left({\color{lightgreen}-5.888 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-limited $$18.7 \mathrm{ms} \pm 95.1 \mathrm{μs}\left({\color{gray}0.860 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-unlimited $$575 \mathrm{ms} \pm 938 \mathrm{μs}\left({\color{gray}4.10 \mathrm{\%}}\right) $$ Flame Graph

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

Labels

area/infra Relates to version control, CI, CD or IaC (area)

Development

Successfully merging this pull request may close these issues.

1 participant