-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathCargo.toml
More file actions
259 lines (232 loc) · 11.5 KB
/
Copy pathCargo.toml
File metadata and controls
259 lines (232 loc) · 11.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
[workspace]
members = [
"crates/tracedecay",
"crates/tracedecay-agent-hosts",
"crates/tracedecay-api",
"crates/tracedecay-contracts",
"crates/tracedecay-automation",
"crates/tracedecay-automation-runtime",
"crates/tracedecay-capture",
"crates/tracedecay-cli",
"crates/tracedecay-code-extraction",
"crates/tracedecay-code-index",
"crates/tracedecay-code-index-retention",
"crates/tracedecay-code-index-runtime",
"crates/tracedecay-configuration",
"crates/tracedecay-daemon-control",
"crates/tracedecay-daemon-identity",
"crates/tracedecay-daemon-protocol",
"crates/tracedecay-daemon-service",
"crates/tracedecay-dashboard-api",
"crates/tracedecay-domain",
"crates/tracedecay-framing",
"crates/tracedecay-global-db",
"crates/tracedecay-graph-db",
"crates/tracedecay-graph-query",
"crates/tracedecay-host-admission",
"crates/tracedecay-host-integration",
"crates/tracedecay-hooks",
"crates/tracedecay-hotpath-guard",
"crates/tracedecay-lcm",
"crates/tracedecay-lsp",
"crates/tracedecay-maintenance",
"crates/tracedecay-mcp",
"crates/tracedecay-mcp-catalog",
"crates/tracedecay-policy",
"crates/tracedecay-privacy",
"crates/tracedecay-private-fs",
"crates/tracedecay-project",
"crates/tracedecay-query",
"crates/tracedecay-runtime-core",
"crates/tracedecay-sdk",
"crates/tracedecay-search-eval",
"crates/tracedecay-session-memory",
"crates/tracedecay-session-runtime",
"crates/tracedecay-sessions",
"crates/tracedecay-session-temporal-store",
"crates/tracedecay-source-edit",
"crates/tracedecay-temporal-query",
"crates/tracedecay-rusqlite-runtime",
"crates/tracedecay-store",
"crates/tracedecay-store-runtime",
"crates/tracedecay-tool-catalog",
"crates/tracedecay-application",
]
exclude = [
"vendor/hotpath-macros",
".worktrees",
".codex-worktrees",
]
resolver = "3"
# Declared once here; every package inherits via
# `edition.workspace = true`. Cargo has no config-level edition default, so this
# inheritance table is the sanctioned single source of truth.
[workspace.package]
edition = "2024"
version = "1.0.0-beta.63"
[workspace.dependencies]
# Opt-in profiler, pinned once for the whole workspace. Non-optional on purpose:
# the macros must always resolve, and with no profiling feature selected the
# crate pulls only `hotpath-macros` and expands every macro to a no-op, so the
# explicit feature-off comparison build carries no measurable profiler weight.
# Backend selection (`hotpath/hotpath`, `-alloc`, `-cpu`, `-mcp`) lives on the
# roots (`tracedecay-cli`, `tracedecay`); cargo unifies the one proc-macro
# build across the graph, so no member needs a feature just to be measured.
hotpath = { version = "0.24", default-features = false, features = ["threads"] }
grafeo-adapters = { version = "=0.5.42", default-features = false, features = ["algos"] }
grafeo-common = { version = "=0.5.42", default-features = false }
grafeo-core = { version = "=0.5.42", default-features = false, features = ["lpg"] }
grafeo-engine = { version = "=0.5.42", default-features = false, features = ["lpg", "gql", "algos", "wal", "grafeo-file"] }
grafeo-storage = { version = "=0.5.42", default-features = false, features = ["wal"] }
rusqlite = { version = "0.40.1", default-features = false, features = ["backup", "cache"] }
# Pinned once: the MCP git handlers and the root's edit/lifecycle readers must
# resolve the same object database and status implementation, so a feature
# added for one is never missing for the other.
gix = { version = "=0.87.1", default-features = false, features = ["revision", "blob-diff", "parallel", "sha1", "sha256", "status"] }
schemars = "1.2.1"
[profile.bench]
opt-level = 3
debug = false
debug-assertions = false
overflow-checks = false
incremental = false
# Workspace crates retain line tables and incremental state; dependencies omit
# debuginfo to reduce compile, cache, and link costs. CI explicitly disables
# incremental compilation through CARGO_INCREMENTAL.
# `line-tables-only` (not `1`/limited) is deliberate: backtraces and panic
# locations keep file:line, while the spine rlibs and per-suite test binaries
# shrink several-fold, measured 764–966 MiB per root-lib cache entry at
# debug=1 against 45.7 MiB without debuginfo, which was blowing the shared
# build-cache budget and turning evictions into repeat 5-minute misses.
#
# `test` (built-in, inherits `dev`) and `perf` (below) inherit every setting
# and package override declared here, so per-package overrides live only on
# `dev`.
[profile.dev]
debug = "line-tables-only"
incremental = true
opt-level = 1
# Focused root unit tests retain test assertions while keeping rustc's
# code-generation working set bounded on developer hosts.
[profile.bounded-test]
inherits = "test"
debug = 0
incremental = false
opt-level = 0
codegen-units = 1
[profile.dev.package."*"]
debug = 0
# Wire-protocol crate: opt-level=1 + thin-local-LTO spends ~86s LLVM on a
# 130MiB rlib / 2.2M instructions of serde+DTO glue (measured). This is not a
# kernel; keep it unoptimized so rmeta/rlib stay cheap for the root crate.
[profile.dev.package.tracedecay-daemon-protocol]
opt-level = 0
# The first token count pays a one-time BPE model load (embedded-vocabulary
# base64 decode + BPE regex compile) that costs seconds in unoptimized
# builds; the dashboard token-count warm task and its tests hit it on every
# test-process start, and `context_scout_model` gives its proposal one second
# in total. Optimize the loader wherever tests run, not only under `perf`.
[profile.dev.package.tiktoken-rs]
opt-level = 2
[profile.dev.package.regex]
opt-level = 2
# The full-suite profile. Ordinary `cargo build` / `cargo test` (dev/test)
# optimize no specific workspace package so edit-compile loops stay cheap;
# this profile inherits dev and additionally keeps the critical-path kernels
# below optimized so the generation-scale code-index and graph-publication
# suites run at production-like speed. Hosted CI (`.github/workflows/ci.yml`)
# and the local full-suite aliases (`cargo test-ci` / `cargo test-all` in
# .cargo/config.toml) all build support binaries, archives and tests with
# this one profile, so they share artifacts and assertions stay on.
[profile.perf]
inherits = "dev"
# Code-index lifecycle tests exercise six-figure production generations under
# the same bounded readiness contracts as the daemon. Keep the owning kernels
# optimized without hiding assertions or optimizing unrelated workspace code.
[profile.perf.package.tracedecay-code-extraction]
opt-level = 2
[profile.perf.package.tracedecay-code-index]
opt-level = 2
[profile.perf.package.tracedecay-code-index-runtime]
opt-level = 2
[profile.perf.package.tracedecay-domain]
opt-level = 2
[profile.perf.package.tracedecay-graph-db]
opt-level = 2
[profile.perf.package.tracedecay-runtime-core]
opt-level = 2
[profile.perf.package.tracedecay-rusqlite-runtime]
opt-level = 2
[profile.perf.package.tracedecay-store]
opt-level = 2
[profile.perf.package.grafeo-adapters]
opt-level = 2
[profile.perf.package.grafeo-common]
opt-level = 2
[profile.perf.package.grafeo-core]
opt-level = 2
[profile.perf.package.grafeo-engine]
opt-level = 2
[profile.perf.package.grafeo-storage]
opt-level = 2
[profile.perf.package.serde_json]
opt-level = 2
# Graph publication digest checks hash multi-megabyte canonical replay
# sources on every durable read/write; unoptimized sha2 alone exceeds the
# exact-SQL test transaction budget.
[profile.perf.package.sha2]
opt-level = 3
# The upstream Rust grammar rejects `#[cfg(...)]` attributes on
# struct-destructuring fields (tree-sitter/tree-sitter-rust#301). Every
# `tree-sitter-rust` consumer in the graph resolves to the PR author's fork,
# pinned to the PR head commit, until the fix lands upstream.
[patch.crates-io]
# Keep profiled async bodies in one frame; see vendor/hotpath-macros/PATCH.md.
hotpath-macros = { path = "vendor/hotpath-macros" }
tree-sitter-rust = { git = "https://github.com/vanessa-rodrigues/tree-sitter-rust", rev = "877df9f82f320243ab23929589a940208faa9d15" }
# The vendored COBOL external scanner in 0.5.0 spins forever at end of input
# whenever a token starts in the sequence-number area with no six-column line
# before EOF, and no parse deadline can interrupt a scanner call. This fork is
# v0.5.0 plus the upstream fix (yutaro-sakamoto/tree-sitter-cobol#42), which
# is still unmerged upstream (#1104).
tokensave-large-treesitters = { git = "https://github.com/ScriptedAlchemy/tokensave-large-treesitters", rev = "102d0103b6fd093c1e5989cceede1ed9f08fe6a9" }
# Patched grafeo 0.5.42, consumed from our fork at the reviewed head of
# ScriptedAlchemy/grafeo#1 (codex/checked-lpg-block-ranges): the accumulated
# patch stack (arena multi-chunk fix, streaming serialization + mmap compact
# open, compact/overlay/close correctness, transaction-bounded WAL recovery,
# version-gc below the horizon) plus the
# review fixes: close() checkpoints once a raw store handle escapes, the
# Dict marker mapping is versioned as CompactStore section v4 (v3 stores
# stay readable; binaries at older pins fail closed on v4 stores with a
# typed unsupported-version error), dropping a property index reaches the
# compact base, neighbors() filters base edge tombstones, and the tiered
# arena accepts exact-fit values while typing over-aligned allocations.
# On top of that head, the LPG block-directory format v2 widens entry
# offsets and lengths to u64: a v1 section larger than 4 GiB silently
# truncated offsets on write and panicked the reader on any block straddling
# the 4 GiB line. v1 sections stay readable and corrupt directory entries
# fail typed so quarantine can fire.
# The published crates carry a tiered-storage arena whose `HotVersionRef` can
# only address a single 1 MiB chunk, which caps an epoch near 32 Ki node
# records and then panics; the fork spans epochs across chunks and types the
# exhaustion errors. The fork also carries graph correctness and bounded WAL
# group-write fixes, and (ScriptedAlchemy/grafeo#4) the direct compact build:
# `IncrementalCompactStoreBuilder` + `GrafeoDB::write_compact_container`
# turn a verified row stream into a compacted container with one container
# write, with no staging LPG, WAL, or in-memory `compact()` copy, which is
# how sealed generation stores are built. Since ScriptedAlchemy/grafeo#5 the
# builder spools pushed values to a file and the container write encodes
# them one column at a time, so the build never holds every row's values
# or the finished columnar store. Since ScriptedAlchemy/grafeo#6 every
# compact structure reports the heap it owns from its own capacity, and
# `memory_usage` includes the compact base with a mapped section reported
# apart, which is what the graph engine's resident owner charges. Its
# workspace resolves sibling crates by path, so every grafeo crate must
# come from the same revision. A mixed
# registry/git graph would build type-incompatible instances of the patched
# crates.
grafeo-adapters = { git = "https://github.com/ScriptedAlchemy/grafeo.git", rev = "9ac25815c2184854a295f3b1c1c3e2706f07b2aa" }
grafeo-common = { git = "https://github.com/ScriptedAlchemy/grafeo.git", rev = "9ac25815c2184854a295f3b1c1c3e2706f07b2aa" }
grafeo-core = { git = "https://github.com/ScriptedAlchemy/grafeo.git", rev = "9ac25815c2184854a295f3b1c1c3e2706f07b2aa" }
grafeo-engine = { git = "https://github.com/ScriptedAlchemy/grafeo.git", rev = "9ac25815c2184854a295f3b1c1c3e2706f07b2aa" }
grafeo-storage = { git = "https://github.com/ScriptedAlchemy/grafeo.git", rev = "9ac25815c2184854a295f3b1c1c3e2706f07b2aa" }