SRE-1039: Record cache, persistent and env in task-dependencies.json - #9563
SRE-1039: Record cache, persistent and env in task-dependencies.json#9563TimDiekmann wants to merge 1 commit into
cache, persistent and env in task-dependencies.json#9563Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
cache, persistent and env in the task documentscache, persistent and env in task-dependencies.json
PR SummaryLow Risk Overview The Rust generator in 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. |
There was a problem hiding this comment.
🟢 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.
Merging this PR will not alter performance
Comparing Footnotes
|
Codecov Report✅ All modified and coverable lines are covered by tests. 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 Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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.
35dcc30 to
4b8c372
Compare
Benchmark results
|
| Function | Value | Mean | Flame graphs |
|---|---|---|---|
| resolve_policies_for_actor | user: empty, selectivity: high, policies: 2002 | Flame Graph | |
| resolve_policies_for_actor | user: empty, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: empty, selectivity: medium, policies: 1002 | Flame Graph | |
| resolve_policies_for_actor | user: seeded, selectivity: high, policies: 3314 | Flame Graph | |
| resolve_policies_for_actor | user: seeded, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: seeded, selectivity: medium, policies: 1527 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: high, policies: 2078 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: medium, policies: 1033 | Flame Graph |
policy_resolution_medium
| Function | Value | Mean | Flame graphs |
|---|---|---|---|
| resolve_policies_for_actor | user: empty, selectivity: high, policies: 102 | Flame Graph | |
| resolve_policies_for_actor | user: empty, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: empty, selectivity: medium, policies: 52 | Flame Graph | |
| resolve_policies_for_actor | user: seeded, selectivity: high, policies: 269 | Flame Graph | |
| resolve_policies_for_actor | user: seeded, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: seeded, selectivity: medium, policies: 108 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: high, policies: 133 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: medium, policies: 63 | Flame Graph |
policy_resolution_none
| Function | Value | Mean | Flame graphs |
|---|---|---|---|
| resolve_policies_for_actor | user: empty, selectivity: high, policies: 2 | Flame Graph | |
| resolve_policies_for_actor | user: empty, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: empty, selectivity: medium, policies: 2 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: high, policies: 8 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: medium, policies: 3 | Flame Graph |
policy_resolution_small
| Function | Value | Mean | Flame graphs |
|---|---|---|---|
| resolve_policies_for_actor | user: empty, selectivity: high, policies: 52 | Flame Graph | |
| resolve_policies_for_actor | user: empty, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: empty, selectivity: medium, policies: 26 | Flame Graph | |
| resolve_policies_for_actor | user: seeded, selectivity: high, policies: 94 | Flame Graph | |
| resolve_policies_for_actor | user: seeded, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: seeded, selectivity: medium, policies: 27 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: high, policies: 66 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: low, policies: 1 | Flame Graph | |
| resolve_policies_for_actor | user: system, selectivity: medium, policies: 29 | Flame Graph |
read_scaling_complete
| Function | Value | Mean | Flame graphs |
|---|---|---|---|
| entity_by_id;one_depth | 1 entities | Flame Graph | |
| entity_by_id;one_depth | 10 entities | Flame Graph | |
| entity_by_id;one_depth | 25 entities | Flame Graph | |
| entity_by_id;one_depth | 5 entities | Flame Graph | |
| entity_by_id;one_depth | 50 entities | Flame Graph | |
| entity_by_id;two_depth | 1 entities | Flame Graph | |
| entity_by_id;two_depth | 10 entities | Flame Graph | |
| entity_by_id;two_depth | 25 entities | Flame Graph | |
| entity_by_id;two_depth | 5 entities | Flame Graph | |
| entity_by_id;two_depth | 50 entities | Flame Graph | |
| entity_by_id;zero_depth | 1 entities | Flame Graph | |
| entity_by_id;zero_depth | 10 entities | Flame Graph | |
| entity_by_id;zero_depth | 25 entities | Flame Graph | |
| entity_by_id;zero_depth | 5 entities | Flame Graph | |
| entity_by_id;zero_depth | 50 entities | Flame Graph |
read_scaling_linkless
| Function | Value | Mean | Flame graphs |
|---|---|---|---|
| entity_by_id | 1 entities | Flame Graph | |
| entity_by_id | 10 entities | Flame Graph | |
| entity_by_id | 100 entities | Flame Graph | |
| entity_by_id | 1000 entities | Flame Graph | |
| entity_by_id | 10000 entities | 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
|
Flame Graph | |
| entity_by_id | entity type ID: https://blockprotocol.org/@alice/types/entity-type/book/v/1
|
Flame Graph | |
| entity_by_id | entity type ID: https://blockprotocol.org/@alice/types/entity-type/building/v/1
|
Flame Graph | |
| entity_by_id | entity type ID: https://blockprotocol.org/@alice/types/entity-type/organization/v/1
|
Flame Graph | |
| entity_by_id | entity type ID: https://blockprotocol.org/@alice/types/entity-type/page/v/2
|
Flame Graph | |
| entity_by_id | entity type ID: https://blockprotocol.org/@alice/types/entity-type/person/v/1
|
Flame Graph | |
| entity_by_id | entity type ID: https://blockprotocol.org/@alice/types/entity-type/playlist/v/1
|
Flame Graph | |
| entity_by_id | entity type ID: https://blockprotocol.org/@alice/types/entity-type/song/v/1
|
Flame Graph | |
| entity_by_id | entity type ID: https://blockprotocol.org/@alice/types/entity-type/uk-address/v/1
|
Flame Graph |
representative_read_entity_type
| Function | Value | Mean | Flame graphs |
|---|---|---|---|
| get_entity_type_by_id | Account ID: bf5a9ef5-dc3b-43cf-a291-6210c0321eba
|
Flame Graph |
representative_read_multiple_entities
| Function | Value | Mean | Flame graphs |
|---|---|---|---|
| entity_by_property | traversal_paths=0 | 0 | |
| entity_by_property | traversal_paths=255 | 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true | |
| entity_by_property | traversal_paths=2 | 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false | |
| entity_by_property | traversal_paths=2 | 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true | |
| entity_by_property | traversal_paths=2 | 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true | |
| entity_by_property | traversal_paths=2 | 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true | |
| link_by_source_by_property | traversal_paths=0 | 0 | |
| link_by_source_by_property | traversal_paths=255 | 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true | |
| link_by_source_by_property | traversal_paths=2 | 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false | |
| link_by_source_by_property | traversal_paths=2 | 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true | |
| link_by_source_by_property | traversal_paths=2 | 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true | |
| link_by_source_by_property | traversal_paths=2 | 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true |
scenarios
| Function | Value | Mean | Flame graphs |
|---|---|---|---|
| full_test | query-limited | Flame Graph | |
| full_test | query-unlimited | Flame Graph | |
| linked_queries | query-limited | Flame Graph | |
| linked_queries | query-unlimited | Flame Graph |
🌟 What is the purpose of this PR?
The checked-in
docs/task-dependencies.jsonlist, 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 carriescache,persistentandenvas turbo resolves them.🔗 Related links
🔍 What does this change?
{ "dependsOn": [...], "cache": …, "persistent": …, "env": [...] }. The values come from the dry run'sresolvedTaskDefinition, the definition turbo arrives at after merging the root and the packageturbo.json.cacheappears only asfalse,persistentonly astrue,envonly when set. A plain build reads{ "dependsOn": [...] }, adevreads{ "dependsOn": [...], "cache": false, "persistent": true }.Pre-Merge Checklist 🚀
🚢 Has this modified a publishable library?
This PR:
📜 Does this require a change to the docs?
The changes in this PR:
🕸️ Does this require a change to the Turbo Graph?
The changes in this PR:
None.
🐾 Next steps
None.
🛡 What tests cover this?
The documents are regenerated and diffed in CI (
Validate Task Dependencies). Verified locally that everydependsOnlist is unchanged against the parent commit and that the added fields matchturbo run --dry=jsonfor every task.❓ How to test this?
turbo run //#doc:task-dependencies; the working tree stays cleanapps/hash-api/docs/task-dependencies.json;devcarries"cache": false, "persistent": true,test:unitcarries"env": ["TEST_COVERAGE"]