diff --git a/Cargo.toml b/Cargo.toml index 12f2788421..33c50902c9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -218,3 +218,255 @@ opt-level = 3 # pinned to the PR head commit, until the fix lands upstream. [patch.crates-io] tree-sitter-rust = { git = "https://github.com/vanessa-rodrigues/tree-sitter-rust", rev = "877df9f82f320243ab23929589a940208faa9d15" } + +# Dev opt-level 0 for workspace glue crates (every tracedecay-* crate that is +# not a profile.perf kernel below). A `cargo build -p tracedecay-cli --timings` +# audit on 8 cores found the wall-time critical path is a serial chain of +# workspace crates whose cost is ~85% LLVM codegen at dev opt-level 1: +# rusqlite-runtime (96s codegen), tracedecay (69s), daemon-service (49s), +# mcp (35s), application (142s, off-path but fan-out). Compiling dispatch, +# DTO, and plumbing crates unoptimized cut a cold build from 461s to 345s +# wall (-25%) and workspace CPU by ~45% (measured). The perf-pinned kernels +# (code-index, rusqlite-runtime, store, grafeo-*, ...) keep dev opt-level 1 so +# local tests keep optimized engine code; the perf mirror pins preserve every +# crate's previous perf level since `perf` inherits dev overrides. + +[profile.dev.package.tracedecay] +opt-level = 0 + +[profile.perf.package.tracedecay] +opt-level = 1 + +[profile.dev.package.tracedecay-agent-hosts] +opt-level = 0 + +[profile.perf.package.tracedecay-agent-hosts] +opt-level = 1 + +[profile.dev.package.tracedecay-api] +opt-level = 0 + +[profile.perf.package.tracedecay-api] +opt-level = 1 + +[profile.dev.package.tracedecay-application] +opt-level = 0 + +[profile.perf.package.tracedecay-application] +opt-level = 1 + +[profile.dev.package.tracedecay-automation] +opt-level = 0 + +[profile.perf.package.tracedecay-automation] +opt-level = 1 + +[profile.dev.package.tracedecay-automation-runtime] +opt-level = 0 + +[profile.perf.package.tracedecay-automation-runtime] +opt-level = 1 + +[profile.dev.package.tracedecay-capture] +opt-level = 0 + +[profile.perf.package.tracedecay-capture] +opt-level = 1 + +[profile.dev.package.tracedecay-cli] +opt-level = 0 + +[profile.perf.package.tracedecay-cli] +opt-level = 1 + +[profile.dev.package.tracedecay-code-index-retention] +opt-level = 0 + +[profile.perf.package.tracedecay-code-index-retention] +opt-level = 1 + +[profile.dev.package.tracedecay-configuration] +opt-level = 0 + +[profile.perf.package.tracedecay-configuration] +opt-level = 1 + +[profile.dev.package.tracedecay-daemon-control] +opt-level = 0 + +[profile.perf.package.tracedecay-daemon-control] +opt-level = 1 + +[profile.dev.package.tracedecay-daemon-identity] +opt-level = 0 + +[profile.perf.package.tracedecay-daemon-identity] +opt-level = 1 + +[profile.dev.package.tracedecay-daemon-service] +opt-level = 0 + +[profile.perf.package.tracedecay-daemon-service] +opt-level = 1 + +[profile.dev.package.tracedecay-dashboard-api] +opt-level = 0 + +[profile.perf.package.tracedecay-dashboard-api] +opt-level = 1 + +[profile.dev.package.tracedecay-framing] +opt-level = 0 + +[profile.perf.package.tracedecay-framing] +opt-level = 1 + +[profile.dev.package.tracedecay-global-db] +opt-level = 0 + +[profile.perf.package.tracedecay-global-db] +opt-level = 1 + +[profile.dev.package.tracedecay-graph-query] +opt-level = 0 + +[profile.perf.package.tracedecay-graph-query] +opt-level = 1 + +[profile.dev.package.tracedecay-hooks] +opt-level = 0 + +[profile.perf.package.tracedecay-hooks] +opt-level = 1 + +[profile.dev.package.tracedecay-host-admission] +opt-level = 0 + +[profile.perf.package.tracedecay-host-admission] +opt-level = 1 + +[profile.dev.package.tracedecay-host-integration] +opt-level = 0 + +[profile.perf.package.tracedecay-host-integration] +opt-level = 1 + +[profile.dev.package.tracedecay-lcm] +opt-level = 0 + +[profile.perf.package.tracedecay-lcm] +opt-level = 1 + +[profile.dev.package.tracedecay-lsp] +opt-level = 0 + +[profile.perf.package.tracedecay-lsp] +opt-level = 1 + +[profile.dev.package.tracedecay-maintenance] +opt-level = 0 + +[profile.perf.package.tracedecay-maintenance] +opt-level = 1 + +[profile.dev.package.tracedecay-mcp] +opt-level = 0 + +[profile.perf.package.tracedecay-mcp] +opt-level = 1 + +[profile.dev.package.tracedecay-mcp-catalog] +opt-level = 0 + +[profile.perf.package.tracedecay-mcp-catalog] +opt-level = 1 + +[profile.dev.package.tracedecay-policy] +opt-level = 0 + +[profile.perf.package.tracedecay-policy] +opt-level = 1 + +[profile.dev.package.tracedecay-privacy] +opt-level = 0 + +[profile.perf.package.tracedecay-privacy] +opt-level = 1 + +[profile.dev.package.tracedecay-private-fs] +opt-level = 0 + +[profile.perf.package.tracedecay-private-fs] +opt-level = 1 + +[profile.dev.package.tracedecay-project] +opt-level = 0 + +[profile.perf.package.tracedecay-project] +opt-level = 1 + +[profile.dev.package.tracedecay-query] +opt-level = 0 + +[profile.perf.package.tracedecay-query] +opt-level = 1 + +[profile.dev.package.tracedecay-sdk] +opt-level = 0 + +[profile.perf.package.tracedecay-sdk] +opt-level = 1 + +[profile.dev.package.tracedecay-search-eval] +opt-level = 0 + +[profile.perf.package.tracedecay-search-eval] +opt-level = 1 + +[profile.dev.package.tracedecay-session-memory] +opt-level = 0 + +[profile.perf.package.tracedecay-session-memory] +opt-level = 1 + +[profile.dev.package.tracedecay-session-runtime] +opt-level = 0 + +[profile.perf.package.tracedecay-session-runtime] +opt-level = 1 + +[profile.dev.package.tracedecay-session-temporal-store] +opt-level = 0 + +[profile.perf.package.tracedecay-session-temporal-store] +opt-level = 1 + +[profile.dev.package.tracedecay-sessions] +opt-level = 0 + +[profile.perf.package.tracedecay-sessions] +opt-level = 1 + +[profile.dev.package.tracedecay-source-edit] +opt-level = 0 + +[profile.perf.package.tracedecay-source-edit] +opt-level = 1 + +[profile.dev.package.tracedecay-store-runtime] +opt-level = 0 + +[profile.perf.package.tracedecay-store-runtime] +opt-level = 1 + +[profile.dev.package.tracedecay-temporal-query] +opt-level = 0 + +[profile.perf.package.tracedecay-temporal-query] +opt-level = 1 + +[profile.dev.package.tracedecay-tool-catalog] +opt-level = 0 + +[profile.perf.package.tracedecay-tool-catalog] +opt-level = 1 diff --git a/crates/tracedecay-agent-hosts/src/agents/context_scout/owner.rs b/crates/tracedecay-agent-hosts/src/agents/context_scout/owner.rs index e06de7ab96..7cd16aea08 100644 --- a/crates/tracedecay-agent-hosts/src/agents/context_scout/owner.rs +++ b/crates/tracedecay-agent-hosts/src/agents/context_scout/owner.rs @@ -1012,26 +1012,20 @@ impl ProjectContextScoutOwnerV1 { let retired = match (&mutation, &receipt.result) { ( ContextScoutPublicMutationV1::Cancel { work }, - ContextScoutMutationResultV1::Cancel(outcome), - ) if matches!( - outcome, - ContextScoutDurableStoreOutcomeV1::Stored - | ContextScoutDurableStoreOutcomeV1::Duplicate - ) => - { - Some((*work, None)) - } + ContextScoutMutationResultV1::Cancel( + ContextScoutDurableStoreOutcomeV1::Stored + | ContextScoutDurableStoreOutcomeV1::Duplicate, + ), + ) => Some((*work, None)), ( ContextScoutPublicMutationV1::Delivery { work, .. }, - ContextScoutMutationResultV1::Delivery { outcome, receipt }, - ) if matches!( - outcome, - ContextScoutDurableStoreOutcomeV1::Stored - | ContextScoutDurableStoreOutcomeV1::Duplicate - ) => - { - Some((*work, Some(receipt.outcome))) - } + ContextScoutMutationResultV1::Delivery { + outcome: + ContextScoutDurableStoreOutcomeV1::Stored + | ContextScoutDurableStoreOutcomeV1::Duplicate, + receipt, + }, + ) => Some((*work, Some(receipt.outcome))), _ => None, }; if let Some((work, delivery)) = retired diff --git a/crates/tracedecay-code-index/tests/code_index_suite/production_orchestration.rs b/crates/tracedecay-code-index/tests/code_index_suite/production_orchestration.rs index e2612b6792..1a5cf9d3da 100644 --- a/crates/tracedecay-code-index/tests/code_index_suite/production_orchestration.rs +++ b/crates/tracedecay-code-index/tests/code_index_suite/production_orchestration.rs @@ -3111,15 +3111,15 @@ fn partitioned_codec_fixture() -> ( } const PARTITIONED_FORMAT_STATE_DIGEST: &str = - "sha256:ca971dd9b11abf99ed277e3f7808e23ec2a7b79dd38f431d81ed907ada6d6c21"; + "sha256:ab12b9eca3975dd7324ff093905fda1bfe7ee2a92dc9646e817b8052e9602faf"; const PARTITIONED_FORMAT_SEGMENTS: &[(&str, u64)] = &[ ( - "sha256:8e9ad377067c5f3b8f967a8b6e0ebe75c061683b6a33e83502b7a324373fec72", - 1_732, + "sha256:3b7947038f6d94ea076ac2cc89403bc3fe58cae074552c7096dc4d99eacebe5a", + 1_737, ), ( - "sha256:7c35a2c0b0dda1c2eb2f7f1e774a3e6eec5b31a0a9b473d28fa4ff60407e5205", - 1_261, + "sha256:5a85600a39a6eda3a6a214c1461f5f87821cd5d7f86849217d98d127197357e9", + 1_298, ), ( "sha256:72ba1636f87140dea312d95e797b5257ee1834eeca3c86a62b1bd1ba48548fed", @@ -3150,8 +3150,8 @@ const PARTITIONED_FORMAT_SEGMENTS: &[(&str, u64)] = &[ 1_075, ), ( - "sha256:209c0686cb2ca402c068a08b8fba0fc9d445d224d6bb7c4dddc78447e282f171", - 1_311, + "sha256:7cbe00299daee294c3562cc24d10ec0b1b4a24e3b5bb4140711bd5822e952cd7", + 1_354, ), ( "sha256:808085bc4aeb5167f643382c4c493d1853848941967d2efeb08646e2f009c912",