Repository navigation
fix(buck2): isolate fingerprint from product capability closures - #1795
schickling-assistant merged 22 commits into
Conversation
… core agent-identity: agent/effect-utils/buck2-migration-dev3 agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.6.0 agent-runtime: OMP 18.6.0 agent-model: anthropic/claude-opus-5-5
agent-identity: agent/effect-utils/buck2-migration-dev3 agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.6.0 agent-runtime: OMP 18.6.0 agent-model: anthropic/claude-opus-5-5
agent-identity: agent/effect-utils/buck2-migration-dev3 agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.6.0 agent-runtime: OMP 18.6.0 agent-model: anthropic/claude-opus-5-5
agent-identity: agent/effect-utils/buck2-migration-dev3 agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.6.0 agent-runtime: OMP 18.6.0 agent-model: anthropic/claude-opus-5-5
agent-identity: agent/effect-utils/buck2-migration-dev3 agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.6.0 agent-runtime: OMP 18.6.0 agent-model: anthropic/claude-opus-5-5
# Conflicts: # nix/buck2-products/native-targets.json # nix/buck2-products/native-targets.json.genie.ts # nix/buck2-products/native.nix # packages/@overeng/genie/BUCK # packages/@overeng/megarepo/BUCK # packages/@overeng/otel-scrape/BUCK # packages/@overeng/otelite/BUCK # packages/@overeng/tui-stories/BUCK # rust/ai-gateway/BUCK # rust/buck2-tools/archive-tool/BUCK # rust/buck2-tools/core/BUCK # rust/buck2-tools/events/BUCK # rust/buck2-tools/product/BUCK # rust/content-address-contract/BUCK # rust/content-address-contract/Cargo.toml # rust/content-address-contract/generation.json # rust/content-address-contract/src/lib.rs # rust/content-address-core/BUCK # rust/content-address-interop/BUCK # rust/effect-rust-fixtures/hash-core/BUCK # rust/effect-rust-fixtures/hash-interop/BUCK # rust/effect-rust-fixtures/math-core/BUCK # rust/effect-rust-fixtures/math-interop/BUCK # rust/effect-rust-fixtures/napi-adapter/BUCK # rust/effect-rust-fixtures/wasm-adapter/BUCK # rust/effect-rust-macros/BUCK # rust/effect-rust/BUCK
…ract agent-identity: agent/effect-utils/buck2-migration-dev3 agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.6.0 agent-runtime: OMP 18.6.0 agent-model: anthropic/claude-opus-5-5
Pipeline traces20 jobs; 5 successful, 0 failed, 0 cancelled, 15 skipped
All other jobs (15)
Main baseline samples (by job): pr-reviews-resolved n=0, tested-tree n=0, default-ref-policy n=0, source-shape n=0, test-live-deploy-ci-tools n=0, deploy-storybooks n=0, test-integration-notion n=0, publish-products n=0, trusted-buck2-remote-cache-proof n=0, quality n=0, test-playwright-tui-react n=0, build-products n=0, cargo n=0, test[runner=namespace-profile-macos-arm64] n=0, weaver n=0, test-playwright-utils n=0, test[runner=namespace-profile-linux-x86-64] n=0, test-integration-restate n=0, pr-a-inert-buck n=0, notify-alignment n=0. 15 job(s) without a start time are omitted from the timeline, not measured as zero. |
# Conflicts: # buck2/dependencies/BUCK # context/effect/socket/BUCK # context/opentui/BUCK # packages/@overeng/agent-session-ingest/BUCK # packages/@overeng/ai-gateway-conformance/BUCK # packages/@overeng/ai-gateway-edge/BUCK # packages/@overeng/buck2-tools/BUCK # packages/@overeng/ci-tools/BUCK # packages/@overeng/content-address/BUCK # packages/@overeng/devbar/BUCK # packages/@overeng/effect-ai-claude-cli/BUCK # packages/@overeng/effect-ai-gateway/BUCK # packages/@overeng/effect-distributed-lock/BUCK # packages/@overeng/effect-path/BUCK # packages/@overeng/effect-react/BUCK # packages/@overeng/effect-rpc-explorer-react/BUCK # packages/@overeng/effect-rpc-explorer/BUCK # packages/@overeng/effect-rpc-tanstack/BUCK # packages/@overeng/effect-rpc-tanstack/examples/basic/BUCK # packages/@overeng/effect-rust-fixture-consumer/BUCK # packages/@overeng/effect-rust/BUCK # packages/@overeng/effect-schema-form-aria/BUCK # packages/@overeng/effect-schema-form/BUCK # packages/@overeng/genie-smalltalk/BUCK # packages/@overeng/genie/BUCK # packages/@overeng/gh-ci-utils/BUCK # packages/@overeng/kdl-effect/BUCK # packages/@overeng/kdl/BUCK # packages/@overeng/megarepo/BUCK # packages/@overeng/notion-cli/BUCK # packages/@overeng/notion-core/BUCK # packages/@overeng/notion-datasource-sync/BUCK # packages/@overeng/notion-effect-client/BUCK # packages/@overeng/notion-effect-schema/BUCK # packages/@overeng/notion-md/BUCK # packages/@overeng/notion-property-write/BUCK # packages/@overeng/notion-react/BUCK # packages/@overeng/npm-release/BUCK # packages/@overeng/otel-browser/BUCK # packages/@overeng/otel-contract/BUCK # packages/@overeng/otel-scrape/BUCK # packages/@overeng/otelite/BUCK # packages/@overeng/outline/BUCK # packages/@overeng/oxc-config/BUCK # packages/@overeng/pingping/BUCK # packages/@overeng/pingping/crates/netinfo-macos/BUCK # packages/@overeng/pty-effect/BUCK # packages/@overeng/react-inspector/BUCK # packages/@overeng/restate-effect/BUCK # packages/@overeng/stylex-tokens/BUCK # packages/@overeng/tui-core/BUCK # packages/@overeng/tui-react/BUCK # packages/@overeng/tui-stories/BUCK # packages/@overeng/utils-dev/BUCK # packages/@overeng/utils-storybook/BUCK # packages/@overeng/utils/BUCK # rust/ai-gateway/BUCK # rust/buck2-tools/archive-tool/BUCK # rust/buck2-tools/core/BUCK # rust/buck2-tools/events/BUCK # rust/buck2-tools/product/BUCK # rust/content-address-contract/BUCK # rust/content-address-contract/Cargo.toml # rust/content-address-contract/generation.json # rust/content-address-contract/src/lib.rs # rust/content-address-core/BUCK # rust/content-address-interop/BUCK # rust/effect-rust-fixtures/hash-core/BUCK # rust/effect-rust-fixtures/hash-interop/BUCK # rust/effect-rust-fixtures/math-core/BUCK # rust/effect-rust-fixtures/math-interop/BUCK # rust/effect-rust-fixtures/napi-adapter/BUCK # rust/effect-rust-fixtures/wasm-adapter/BUCK # rust/effect-rust-macros/BUCK # rust/effect-rust/BUCK
agent-identity: agent/effect-utils/buck2-migration-dev3 agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.6.0 agent-runtime: OMP 18.6.0 agent-model: anthropic/claude-opus-5-5
# Conflicts: # packages/@overeng/utils-storybook/BUCK
# Conflicts: # buck2/dependencies/pnpm-store-buck.ts # context/effect/socket/BUCK # context/opentui/BUCK # packages/@overeng/agent-session-ingest/BUCK # packages/@overeng/ai-gateway-conformance/BUCK # packages/@overeng/ai-gateway-edge/BUCK # packages/@overeng/buck2-tools/BUCK # packages/@overeng/ci-tools/BUCK # packages/@overeng/content-address/BUCK # packages/@overeng/devbar/BUCK # packages/@overeng/effect-ai-claude-cli/BUCK # packages/@overeng/effect-ai-gateway/BUCK # packages/@overeng/effect-distributed-lock/BUCK # packages/@overeng/effect-iroh/BUCK # packages/@overeng/effect-path/BUCK # packages/@overeng/effect-react/BUCK # packages/@overeng/effect-rpc-explorer-react/BUCK # packages/@overeng/effect-rpc-explorer/BUCK # packages/@overeng/effect-rpc-tanstack/BUCK # packages/@overeng/effect-rpc-tanstack/examples/basic/BUCK # packages/@overeng/effect-rust-fixture-consumer/BUCK # packages/@overeng/effect-rust/BUCK # packages/@overeng/effect-schema-form-aria/BUCK # packages/@overeng/effect-schema-form/BUCK # packages/@overeng/genie-smalltalk/BUCK # packages/@overeng/genie/BUCK # packages/@overeng/gh-ci-utils/BUCK # packages/@overeng/kdl-effect/BUCK # packages/@overeng/kdl/BUCK # packages/@overeng/megarepo/BUCK # packages/@overeng/notion-cli/BUCK # packages/@overeng/notion-core/BUCK # packages/@overeng/notion-datasource-sync/BUCK # packages/@overeng/notion-effect-client/BUCK # packages/@overeng/notion-effect-schema/BUCK # packages/@overeng/notion-md/BUCK # packages/@overeng/notion-property-write/BUCK # packages/@overeng/notion-react/BUCK # packages/@overeng/npm-release/BUCK # packages/@overeng/otel-browser/BUCK # packages/@overeng/otel-contract/BUCK # packages/@overeng/otel-scrape/BUCK # packages/@overeng/otelite/BUCK # packages/@overeng/outline/BUCK # packages/@overeng/oxc-config/BUCK # packages/@overeng/pingping/BUCK # packages/@overeng/pingping/crates/netinfo-macos/BUCK # packages/@overeng/pty-effect/BUCK # packages/@overeng/react-inspector/BUCK # packages/@overeng/restate-effect/BUCK # packages/@overeng/stylex-tokens/BUCK # packages/@overeng/tui-core/BUCK # packages/@overeng/tui-react/BUCK # packages/@overeng/tui-stories/BUCK # packages/@overeng/utils-dev/BUCK # packages/@overeng/utils-storybook/BUCK # packages/@overeng/utils/BUCK # rust/ai-gateway/BUCK # rust/buck2-tools/archive-tool/BUCK # rust/buck2-tools/core/BUCK # rust/buck2-tools/events/BUCK # rust/buck2-tools/product/BUCK # rust/content-address-contract/BUCK # rust/content-address-contract/Cargo.toml # rust/content-address-contract/generation.json # rust/content-address-contract/src/lib.rs # rust/content-address-core/BUCK # rust/content-address-interop/BUCK # rust/effect-rust-fixtures/hash-core/BUCK # rust/effect-rust-fixtures/hash-interop/BUCK # rust/effect-rust-fixtures/math-core/BUCK # rust/effect-rust-fixtures/math-interop/BUCK # rust/effect-rust-fixtures/napi-adapter/BUCK # rust/effect-rust-fixtures/wasm-adapter/BUCK # rust/effect-rust-macros/BUCK # rust/effect-rust/BUCK
# Conflicts: # packages/@overeng/buck2-tools/BUCK # packages/@overeng/genie-smalltalk/BUCK # packages/@overeng/otel-scrape/BUCK # packages/@overeng/otelite/BUCK # packages/@overeng/pingping/BUCK # packages/@overeng/pingping/crates/netinfo-macos/BUCK # rust/ai-gateway/BUCK # rust/buck2-tools/archive-tool/BUCK # rust/buck2-tools/core/BUCK # rust/buck2-tools/events/BUCK # rust/buck2-tools/fingerprint/src/lib.rs # rust/buck2-tools/product/BUCK # rust/content-address-contract/BUCK # rust/content-address-contract/Cargo.toml # rust/content-address-contract/generation.json # rust/content-address-contract/src/lib.rs # rust/content-address-core/BUCK # rust/content-address-interop/BUCK # rust/effect-rust-fixtures/hash-core/BUCK # rust/effect-rust-fixtures/hash-interop/BUCK # rust/effect-rust-fixtures/math-core/BUCK # rust/effect-rust-fixtures/math-interop/BUCK # rust/effect-rust-fixtures/napi-adapter/BUCK # rust/effect-rust-fixtures/wasm-adapter/BUCK # rust/effect-rust-macros/BUCK # rust/effect-rust/BUCK
agent-identity: agent/effect-utils/buck2-migration-dev3 agent-persona: generalist agent-supervisor: unavailable agent-tool: unknown agent-runtime: unknown agent-model: unknown
# Conflicts: # packages/@overeng/effect-rust/BUCK # packages/@overeng/otel-scrape/BUCK # packages/@overeng/otelite/BUCK # packages/@overeng/pingping/BUCK # packages/@overeng/pingping/crates/netinfo-macos/BUCK # rust/ai-gateway/BUCK # rust/buck2-tools/archive-tool/BUCK # rust/buck2-tools/core/BUCK # rust/buck2-tools/events/BUCK # rust/buck2-tools/product/BUCK # rust/content-address-contract/BUCK # rust/content-address-contract/Cargo.toml # rust/content-address-contract/generation.json # rust/content-address-contract/src/lib.rs # rust/content-address-core/BUCK # rust/content-address-interop/BUCK # rust/effect-rust-fixtures/hash-core/BUCK # rust/effect-rust-fixtures/hash-interop/BUCK # rust/effect-rust-fixtures/math-core/BUCK # rust/effect-rust-fixtures/math-interop/BUCK # rust/effect-rust-fixtures/napi-adapter/BUCK # rust/effect-rust-fixtures/wasm-adapter/BUCK # rust/effect-rust-macros/BUCK # rust/effect-rust/BUCK
…source bundling The cache-target inventory gained buildCapabilities/linuxBuildCapabilities, but publish.sh still enforced the old exact key set, so pr-a-inert-buck rejected every inventory. Extend effect-utils/buck-cache-targets/v1 with both fields (sorted, unique kebab-case capability IDs; non-empty build list; disjoint lists) and add negative controls to the release-products contract test. The package-command-runner fixture asserted a bundle comment for a pure re-export module, which Bun never emits. Give the workspace boundary module live code and assert its runtime value so recursive source resolution is proven by behaviour rather than by bundler comments. agent-identity: agent/effect-utils/buck2-migration-dev3 agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.6.0 agent-runtime: OMP 18.6.0 agent-model: anthropic/claude-opus-5-5
…2026-10-10-product-capability-closure # Conflicts: # packages/@overeng/genie-smalltalk/BUCK # packages/@overeng/megarepo/BUCK # packages/@overeng/otel-scrape/BUCK # packages/@overeng/otelite/BUCK # packages/@overeng/pingping/BUCK # packages/@overeng/pingping/crates/netinfo-macos/BUCK # packages/@overeng/tui-stories/BUCK # packages/@overeng/utils/BUCK # rust/ai-gateway/BUCK # rust/buck2-tools/archive-tool/BUCK # rust/buck2-tools/core/BUCK # rust/buck2-tools/events/BUCK # rust/buck2-tools/product/BUCK # rust/content-address-contract/BUCK # rust/content-address-contract/Cargo.toml # rust/content-address-contract/generation.json # rust/content-address-contract/src/lib.rs # rust/content-address-core/BUCK # rust/content-address-interop/BUCK # rust/effect-rust-fixtures/hash-core/BUCK # rust/effect-rust-fixtures/hash-interop/BUCK # rust/effect-rust-fixtures/math-core/BUCK # rust/effect-rust-fixtures/math-interop/BUCK # rust/effect-rust-fixtures/napi-adapter/BUCK # rust/effect-rust-fixtures/wasm-adapter/BUCK # rust/effect-rust-macros/BUCK # rust/effect-rust/BUCK
…2026-10-10-product-capability-closure # Conflicts: # context/effect/socket/BUCK # context/opentui/BUCK # genie/buck2/typescript-package-projection.ts # genie/buck2/typescript-package-projection.unit.test.ts # packages/@overeng/agent-session-ingest/BUCK # packages/@overeng/ai-gateway-conformance/BUCK # packages/@overeng/ai-gateway-edge/BUCK # packages/@overeng/buck2-tools/BUCK # packages/@overeng/ci-tools/BUCK # packages/@overeng/content-address/BUCK # packages/@overeng/devbar/BUCK # packages/@overeng/effect-ai-claude-cli/BUCK # packages/@overeng/effect-ai-gateway/BUCK # packages/@overeng/effect-distributed-lock/BUCK # packages/@overeng/effect-iroh/BUCK # packages/@overeng/effect-path/BUCK # packages/@overeng/effect-react/BUCK # packages/@overeng/effect-rpc-explorer-react/BUCK # packages/@overeng/effect-rpc-explorer/BUCK # packages/@overeng/effect-rpc-tanstack/BUCK # packages/@overeng/effect-rpc-tanstack/examples/basic/BUCK # packages/@overeng/effect-rust-fixture-consumer/BUCK # packages/@overeng/effect-rust/BUCK # packages/@overeng/effect-schema-form-aria/BUCK # packages/@overeng/effect-schema-form/BUCK # packages/@overeng/genie-smalltalk/BUCK # packages/@overeng/genie/BUCK # packages/@overeng/gh-ci-utils/BUCK # packages/@overeng/kdl-effect/BUCK # packages/@overeng/kdl/BUCK # packages/@overeng/megarepo/BUCK # packages/@overeng/notion-cli/BUCK # packages/@overeng/notion-core/BUCK # packages/@overeng/notion-datasource-sync/BUCK # packages/@overeng/notion-effect-client/BUCK # packages/@overeng/notion-effect-schema/BUCK # packages/@overeng/notion-md/BUCK # packages/@overeng/notion-property-write/BUCK # packages/@overeng/notion-react/BUCK # packages/@overeng/npm-release/BUCK # packages/@overeng/otel-browser/BUCK # packages/@overeng/otel-contract/BUCK # packages/@overeng/outline/BUCK # packages/@overeng/oxc-config/BUCK # packages/@overeng/pty-effect/BUCK # packages/@overeng/react-inspector/BUCK # packages/@overeng/restate-effect/BUCK # packages/@overeng/stylex-tokens/BUCK # packages/@overeng/tui-core/BUCK # packages/@overeng/tui-react/BUCK # packages/@overeng/tui-stories/BUCK # packages/@overeng/utils-dev/BUCK # packages/@overeng/utils-storybook/BUCK # packages/@overeng/utils/BUCK
|
Owner GO at exact head b88c246. Delta since the approved 28719df: 139ad77 (an ordinary merge of main 7019b68; 31 conflicts, all generated, regenerated by the generators) plus b88c246 (a reasoned per-line oxlint exception for a runtime-generated data: URL import in a test). Independent delta review: MERGE (generated-only resolutions; main products keep their full capabilities). dev5 gate: check:quick EXIT=0, exact receipt; genie:buck2:test 199/199. |
|
Owner GO at exact head 733bb60. Delta since the GO at b88c246: an ordinary merge of main 5b01824. The remerge diff is limited to generated BUCK files plus the #1858 port: core/src/lib.rs keeps this PR's extraction; fingerprint_admission.rs moved into the buck2-fingerprint crate byte-identically (blob b6ec0458 equals main's); both acquire() call sites are present (fingerprint/src/lib.rs:392 and :520). dev5: genie:run, 199/199 projection tests, buck2-fingerprint cargo tests 18 passed (all 6 #1858 admission tests pass), check:quick EXIT=0 with an exact receipt. |
|
Product closure owner GO at exact head 5501c46. Independent final delta review: MERGE. Generated-only resolutions preserve main data-graph, capability inventory and fingerprint admission. Exact clean-head dev5 check:quick EXIT=0; 199 projection tests passed. Hosted CI run38825855844 is passing at that exact head. Native merge queue accepted this head at position1 under the designated first-priority product-closure order. Posted on behalf of @schickling
|
Storybook Previews
Report historyPR 1795 · 2026-10-16 01:52 UTC
PR 1795 · 2026-10-16 00:32 UTC
|
…red product closure
|
Owner GO at exact head bc262b0. Independent fix-delta review MERGE: admission file is initialized before atomic nonempty-directory publication; deterministic regression retains concurrency controls; capability assertion repaired against declared closure plus independent explicit toolset. Focused7admission tests and full from-source contract passed; exact clean-head check:quick EXIT0. Hosted pull_request run38834671387 completed success at this exact head. Prior merge-group failures were fixed, not rerun blindly. Posted on behalf of @schickling
|
Problem
A behavior-preserving edit to the Buck fingerprint implementation invalidated every product source recipe: 45/45 drvPaths changed on both Linux and Darwin, despite unchanged product source bytes. Fingerprint reached archive/product via the shared core crate and every recipe via the blanket capability projection. The measured macOS cold lane had a 94–130 s pre-task premium; native work included a 51–57 s otelite critical tail.
Goal
Fingerprint implementation changes must not invalidate the four native/compiled imports (
otelite,otel-scrape,typescript-api-server,ci-tools-compiled). Keep hermetic declared tools, npm emit/typecheck behavior, and main-only cache publication unchanged.Decisions
Verification
Published head:
4eed999b3ce99d86fd1b0a0f8fa3657f81d73aa9. Latest ordinary main merge parent:f26a211a8cae02a37857f7522316137dc0049203. Last completed scoped review/byte-proof head:20ffcf1a38f5557402bed2f14edf7c5da810680b; its byte baseline iscfdbdde1f6cc668ef16e5d31ed96f503a9b2b6ec. Original churn census baseline:9e457abef86f760d513705b9a816c592445548e2.Fresh immutable
nix evalcompares the published head to local object-only child7965bce9304cb19fd08bf3a99b3b1a9c49146883, whose only edit is an appended fingerprint comment (not pushed). Four source/import drvPaths remain identical on both platforms; archive/product/events remain identical while fingerprint changes. All 13 JS source/capability identities remain identical. The earlier20ffcf1aprobe also usednix derivation showto prove whole-object producerCommit/output-path-only differences:The most recent Linux heavy-slot byte proof realized all 15 artifacts at
20ffcf1a(exit 0, 249 s admitted hold) and its exact main-parent baseline atcfdbdde1(exit 0, 168 s):20ffcf1aand its main merge parent: 13 JS payloads, compiled CI-tools archive, TS-server archive. The original baseline was explicitly refreshed after stopping on Genie/Mr differences, which are also present in main's changed sources; the other 13 remain identical to the original baseline. No byte rebuild for the newest merge: existing product runtime sources did not change, and the generated native contract delta is only fingerprint/timestamp comments; the operator explicitly requested the cheap stability probe only.20ffcf1aafter the previous main merge and inventory-consumer correction. The newest main integration has no handwritten conflicts; generated files were regenerated. Its merge-delta review is owned by the operator, not claimed completed here.All 15 main@merge-parent = final merged artifact SHA256 receipts
fbe9653a20a78b0fe76ac6c94b311842176bed5f83a4205832d41ae509d9a706e770a27d4bbddc682a572bcbd8f6d573164420f30085e0b13ad0bc2f2238e1eae8c8b7563e174e077d44e63d719fcb25f39336d4f8cced2fb4cb0e13a66734a2efe9a73d5006d604d6b52e6060d8d15b09d97cd5370acf324fa766082a2ed463755d24473106d53f4b0bdaceae081ea965072c91425c03eb657451fa6ccaad2a53272d0b8ced759600477145cc72777e8b30e6bcd0b08131cfe05052a445f1d9f87df77f040ffca1c439580e80cd9dd2e65167bd5cfd13f06111346a66c05a07a158981d214e9c8428ff525c10a749e0cf94a387daf8061444a36bbfaf60123c0fcbddfb9d5a05cfed74b05fa431e4236c8675c0b9beb68e8544e37928c7e17a67b2b9785a9d3afe0d803e18ac958e792fd690d7f30173abbe3265f38bcb5c21fd5b505b4056d373cd99b4d1264a3f79774381faa9cd06d1b4cb4bcef1ccf03ad003e6548303491ee6a4e91dbf5a5efa8910cfea6651ccc4a53d0bf73d68d0c2a2820649dda28315da21179426e1c480c7a1288e547014604d4ee2e5738f4bc8f951a12b6242634b27b7d5c55741d0e055dce76f128337395e15770fbb3cae005fd1dc1d6095815c0ef49b770befd01d85b126378436391fe57c15cb2ad6a5dfComplexity
An independent crate is required because native packaging genuinely uses core helpers. Separate source-only dependency views are required because declaration-backed workspace trees pull in npm fingerprint actions; weakening tool declarations alone cannot cut that real action graph. Per-kind capability declarations reuse one generator and one Nix selector, rather than duplicating tool inventories.
Concerns
The recipe cutover needs one main cache seed. The expected avoided critical tail is 51–57 s plus overlapping native/tool work; no post-change macOS wall-clock result or ≤600 s claim is made. npm fingerprint proofs intentionally still rebuild when their implementation changes. JS recipes intentionally remain commit-bound, outside this lane's pre-task source-build cost.
Friction & bottlenecks
Follow-ups
No implementation follow-up is needed for the selected closure fix. Operational shared-builder capacity is separately reported to the operator. The macOS lane timing result remains owned by the lane measurement work, not inferred from derivation identity.
References
Option D: narrow declared dependencies, retain hermetic proof and main-only cache production. Main owns readiness, merge-delta review and PR CI/merge_group acceptance; no auto-merge or enrollment is enabled by this worker.
Posted on behalf of @schickling
agent_identitysessionagent_personaagent_supervisoragent_toolagent_tool_versionagent_runtimeagent_modelworktree