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
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
[]
= "coding-agent-search"
= "0.7.0"
= "2024"
= ["Jeffrey Emanuel"]
= "Unified TUI search over local coding agent histories"
= "LICENSE"
= "2"
= "https://github.com/Dicklesworthstone/coding_agent_session_search"
= "cass"
= [
"/Cargo.toml",
"/Cargo.lock",
"/build.rs",
"/LICENSE",
"/README.md",
"/src/**/*.rs",
"/src/pages_assets/**",
]
[]
= "1.0.102"
= "2.0.18"
= "0.1.44"
= { = "0.3.23", = ["env-filter", "fmt", "ansi", "json"] }
= { = "=0.4.9", = ["test-internals", "tls-native-roots"] }
= { = "4.6.1", = ["derive", "cargo", "env", "unicode", "wrap_help"] }
= "4.6.5"
= "0.3.0"
= "0.18.4"
= "0.16.3"
= "3.1.1"
= { = "1.0.228", = ["derive"] }
= "1.0.149"
= { = "0.13.4", = false, = ["blocking", "json", "rustls-no-provider"] }
# reqwest 0.13 ships rustls without a crypto provider under `rustls-no-provider`;
# cass installs `ring` (see `ensure_rustls_crypto_provider`) instead of letting
# the default `rustls` feature pull aws-lc-sys and its cmake build into every
# release target. The platform verifier supplies the trust roots.
= { = "0.23.43", = false, = ["ring", "std"] }
= { = "=0.2.4", = "tru" }
= "3.27.0"
= "0.2.1"
= "1.3.1" # MessagePack for binary metadata serialization (Opt 3.1)
= "1.1.2"
= "6.0.0"
= "8.0.2"
= "1.1.1"
= "0.15.7"
= "8.2.0"
# fsqlite 0.3.1 (crates.io): the 0.3.0 asupersync-0.4.3 runtime migration and
# bug-fix wave (GH#333 concurrent-open BusyRecovery retries, GH#334
# FileIdentity re-derivation after file replacement — the cass#393
# st_dev/namespace-sidecar repair d29339c — 8-writer rollback cascade,
# cross-connection visibility) plus the 0.3.1 correctness wave: allocator
# post-savepoint page-aliasing quarantine, committed-freelist resurrection
# refusal, shared concurrent-writer EOF high-water, sidecar-less read-only
# first-contact opens (GH#140), Darwin OFD locking. The engine API is async
# (!Send futures); CASS's synchronous call shape is preserved by
# src/franken_sync.rs, which drives every engine future on a private
# current-thread asupersync runtime.
= { = "=0.3.8", = "fsqlite", = ["fts5", "async-api"] }
# The production storage-integrity probe calls FrankenSQLite's public VFS API
# directly so it can inspect native writer locks without opening the pager.
= { = "=0.3.8", = "fsqlite-types" }
= "1.12.0"
= "0.5.15"
= "0.12.5"
= "0.4.3"
= "1.0.6"
= "0.18"
= "2.1.2" # Fast non-cryptographic hashing for cache keys (P1 Opt 1.3), replaces unmaintained fxhash
= { = "0.8.15", = ["xxh3"] } # Fast content hashing for search-hit dedup (bead sdoxg)
= "1.0.18" # Zero-allocation integer-to-string for hot paths (bead w32k6)
= "1.15.1" # Stack-allocated small vectors for hot paths (Opt 4.4)
= "1.12.3"
= "0.9.0"
# FrankenTUI migration foundation (bead 2noh9.2.1).
# Strategy: pin a Git revision for reproducible CI builds.
= { = "=0.5.0" }
= { = "=0.5.0", = ["native-backend", "crossterm-compat"] }
= { = "=0.5.0" }
= { = "=0.5.0", = false, = ["markdown", "syntax", "charts", "canvas", "theme", "clipboard", "clipboard-fallback", "export", "visual-fx", "forms", "validation", "help"] }
= "6.0.0"
= "2.5.0"
= "0.3.3"
= ">=0.21"
= "1.8.5"
= "2.0.5"
= { = "0.13.3", = false, = ["html"] }
= { = "0.4.44", = ["serde"] }
= "1.0.28"
= "0.2.5"
= "0.11.1"
= "1.21.4"
= "0.15.0"
= "1.5.0"
= "0.1.25"
= "2.1.3"
= { = "2.7.1", = ["bytemuck"] }
= "0.9.10"
= "1.25.0"
# Semantic embedding + reranking are PURE-RUST via frankensearch's `native`
# feature: the frankentorch all-MiniLM-L6-v2 sentence embedder (NativeEmbedder)
# + the ms-marco cross-encoder reranker (NativeReranker). The old
# `fastembed`/ONNX-Runtime stack was removed (cass #308): ort 2.0.0-rc.12 could
# not run the all-MiniLM LayerNorm export, and its prebuilt AVX/AVX2 vendor
# binaries crashed pre-AVX2 CPUs at static init (#256/#307). No ONNX means no
# AVX-static-init hazard and no separate `-baseline` artifact is needed.
# Registry pin (gh#416): the 0.4.0 line is the first crates.io release
# carrying `quill`, `cass-compat`, `ann`, and `native`; registry 0.3.2 was a
# stale same-version twin of an older tree and must never be resolved.
= { = "=0.4.0", = false, = ["hash", "cass-compat", "quill", "ann", "native"] }
= { = "=0.2.1", = ["connectors", "cursor", "chatgpt", "opencode", "crush", "goose", "hermes"] }
= "1.4.0" # Portable SIMD for P0 Opt 2: SIMD dot product
= "0.7.6" # Stack-based arrays for P1 Opt 1.4: Edge N-gram optimization
= "3.0.1" # Probabilistic membership testing for P2 Opt 3.3: Workspace Cache
# Crypto for ChatGPT encrypted conversations and HTML export encryption.
# The aes-gcm + digest + hkdf + hmac + sha2 family must stay on compatible
# majors: aes-gcm 0.10 uses digest 0.10, which is what sha2 0.10 / hmac 0.12 /
# hkdf 0.12 export. Leaving these as wildcards lets cargo upgrade hkdf + hmac
# to 0.13 (digest 0.11), which fails to satisfy aes-gcm's KeyInit bound and
# breaks the encryption.rs build with ~29 trait-bound errors.
= "0.11"
= "0.17.14"
= "2.5.8"
= "0.13.0" # PBKDF2 key derivation for Web Crypto compatible HTML export encryption
# SHA256 hashing for model verification
= "0.11"
= "0.4.3"
# Interactive terminal prompts for setup wizard
= "0.12.0"
# SFTP fallback for sync when rsync is unavailable
= "0.9.5"
= "0.5.3"
= "0.13" # Must match sha2 0.11 / aes-gcm 0.11 (digest 0.11 family); see comment above.
= { = "1.8.2", = ["derive"] }
= "1.1.9"
= "0.10"
# QR code generation (optional, for recovery secret QR codes)
= { = "0.14.1", = true }
= { = "0.25.10", = true, = false, = ["png"] }
= "0.2.2"
# macOS keychain access (optional, for ChatGPT decryption)
[]
= "3.7.0"
# Statically link OpenSSL into Unix release binaries so they do not require a
# matching system libssl. Windows builds use platform TLS/crypto stacks through
# transitive dependencies, and forcing vendored OpenSSL breaks MSVC cross-builds.
[]
= { = "0.10.79", = ["vendored"] }
# Restores the default SIGPIPE disposition at startup (#356): with Rust's
# ignore-SIGPIPE default plus the release profile's panic=abort, every stdout
# write to a closed pipe (`cass ... | head`) became a SIGABRT crash report.
[]
= "0.1.3"
[]
= ["qr", "encryption"]
= ["dep:qrcode", "dep:image"]
= [] # Enables HTML export encryption (deps already included for ChatGPT)
= []
# NOTE: the former `semantic` feature was retired (bead tg5o9). It had become
# vacuous after cass#308: the pure-Rust `frankensearch/native` backend
# (frankentorch tensors, runtime-dispatched SIMD) ships in the always-on
# frankensearch feature set above, so every binary carries semantic support on
# any CPU and there is no `-baseline` artifact or AVX2 static-init hazard
# (cass#256) anymore. `--no-default-features` builds still had the native
# stack compiled in while the stale `cfg(not(feature = "semantic"))` arm
# refused `--mode semantic` with an ONNX-era error — an internally
# contradictory binary. Semantic availability is now a runtime question
# (model installed or hash fallback), never a compile-time one.
# Opt-in: upgrade sibling repo rev/worktree drift from warning to hard error and
# validate the optional /data/projects path checkouts before enabling local overrides.
= []
# Internal, in-memory seam for feeding engine-ranked message identities through
# the production CASS SQLite message projector and result reducer. This does not
# enable artifact persistence or make a conformance/admission claim by itself.
= []
[]
= { = "10.0.0", = false, = ["build", "cargo"] }
= "1.1.2"
[]
= "2.2.2"
= "3.1.4"
= { = "1.47.2", = ["yaml", "json"] }
= "0.8.2"
= "1.21.4"
= "4.0.1"
= "1.11.0"
= { = "1", = ["derive"] }
= "0.9.34"
= "0.10"
= "0.10"
# rusqlite is retained only for C-SQLite interop fixtures in tests; production
# storage and historical salvage paths use frankensqlite.
= { = "0.40.2", = ["bundled", "modern_sqlite"] }
# The manifest-policy build gate requires this explicit dev entry for compat
# fixture assertions, even though production also uses the same pinned crate.
= { = "=0.3.8", = "fsqlite-types" }
# The fsqlite family now resolves from crates.io (0.3.1) for every direct and
# transitive consumer, so the former [patch.crates-io] git override is gone.
# build.rs enforces the registry identity (single 0.3.1 fsqlite family in the
# lockfile, no patch reintroduction) as the dependency source contract.
[[]]
= "cass"
= "src/main.rs"
= false
[[]]
= "cass-pages-perf-bundle"
= "src/bin/cass-pages-perf-bundle.rs"
= false
[[]]
= "e2e-run-bundle"
= "src/bin/e2e-run-bundle.rs"
= false
# fsqlite 0.3.x's async engine builds enormous debug-mode futures; at
# opt-level 0 a single statement poll can overflow even a 16 MiB test-thread
# stack (analytics::query storage tests SIGABRT'd during the 0.3.1 gate).
# Upstream frankensqlite develops at `[profile.dev] opt-level = 1` and
# franken_agent_detection uses this exact dependencies-only form for the same
# reason. Applies to dependencies only, never this crate's own code/tests.
#
# The fsqlite 0.3.4 uptake pushed these futures past what opt-level 1 covers:
# `cli_read_db_tests::state_meta_json_reports_active_data_dir_lock_without_db_path_metadata`
# SIGABRT'd on a stack overflow. Verified as a size problem, not a logic
# regression — the same test passes unchanged under a larger thread stack — so
# the fix is `RUST_MIN_STACK` in `.cargo/config.toml` rather than opt-level 2
# here. opt-level 2 also works but forces a full rebuild of every dependency
# at roughly double the artifact size, which is not worth it for a test-thread
# stack bound.
[]
= 1
[]
= true
= 1
= true
= "abort"
= 3
# Optimized build with symbols for profiling (perf/flamegraphs).
# Usage: RUSTFLAGS="-C force-frame-pointers=yes" cargo build --profile profiling
[]
= "release"
= true
= false
# Dedicated profile for benchmark runs that need to land in .bench-history/
# pass-over-pass ratchets per the gauntlet keep-gate rules. Inherits release
# (opt-level=3, lto, panic=abort) and adds line-tables + frame pointers so
# samply/flamegraph attribution works without rebuilding.
# Usage: RUSTFLAGS="-C force-frame-pointers=yes" cargo bench --profile release-perf
[]
= "release"
= "line-tables-only"
= false
# The dependency graph is pinned to the asupersync 0.4.x line (0.4.9). Keep
# frankensqlite plus frankensearch and franken-agent-detection revs aligned so
# Cargo.lock does not reintroduce a parallel asupersync 0.3.x stack.
#
# If you need to build against a local checkout of asupersync (sibling
# at ../asupersync) during runtime-level hacking, add the following
# [patch.crates-io] block LOCALLY and DO NOT COMMIT IT — the
# fresh-clone CI guard (.github/workflows/fresh-clone-build.yml) will
# fail if any [patch] block pointing at sibling paths is committed:
#
# [patch.crates-io]
# asupersync = { path = "../asupersync" }
# franken-decision = { path = "../asupersync/franken_decision" }
# franken-evidence = { path = "../asupersync/franken_evidence" }
# franken-kernel = { path = "../asupersync/franken_kernel" }
#
# build.rs validates the committed dependency source contracts and can validate
# sibling repos below when `strict-path-dep-validation` is enabled.
#
# LOCAL DEVELOPMENT: Uncomment the [patch] sections below to build against
# local sibling repo checkouts instead of committed registry/git pins. These
# are commented out by default so that a clean clone builds without requiring
# specific directory layout. See build.rs for validation details.
#
# A fresh-clone build regression guard runs in CI (.github/workflows/fresh-clone-build.yml)
# — if you re-enable any of these [patch] blocks, that workflow will fail.
#
# [patch."https://github.com/Dicklesworthstone/frankensqlite"]
# fsqlite = { path = "../frankensqlite/crates/fsqlite" }
# fsqlite-types = { path = "../frankensqlite/crates/fsqlite-types" }
# [patch."https://github.com/Dicklesworthstone/franken_agent_detection"]
# franken-agent-detection = { path = "../franken_agent_detection" }
#
# Enable strict validation before uncommenting any additional sibling path overrides:
# cargo check --features strict-path-dep-validation
# LOCAL DEV ONLY (CASS->Quill flip). Must be re-commented before commit: a path
# patch on a shared branch breaks every other checkout.
# [patch."https://github.com/Dicklesworthstone/frankensearch"]
# frankensearch = { path = "../frankensearch/frankensearch" }
# frankensearch-core = { path = "../frankensearch/crates/frankensearch-core" }
# frankensearch-index = { path = "../frankensearch/crates/frankensearch-index" }
# frankensearch-embed = { path = "../frankensearch/crates/frankensearch-embed" }
# frankensearch-fusion = { path = "../frankensearch/crates/frankensearch-fusion" }
# frankensearch-lexical = { path = "../frankensearch/crates/frankensearch-lexical" }
# frankensearch-quill = { path = "../frankensearch/crates/frankensearch-quill" }
# frankensearch-rerank = { path = "../frankensearch/crates/frankensearch-rerank" }
[]
= ["x86_64-unknown-linux-gnu"]
= ["shell", "powershell"]
= ["github"]
[[]]
= "index_perf"
= false
[[]]
= "runtime_perf"
= false
[[]]
= "search_perf"
= false
[[]]
= "search_latency_e2e"
= false
[[]]
= "crypto_perf"
= false
[[]]
= "db_perf"
= false
[[]]
= "export_perf"
= false
[[]]
= "cache_micro"
= false
[[]]
= "integration_regression"
= false
[[]]
= "redaction_perf"
= false
[[]]
= "docs"
= "tests/docs/mod.rs"
[[]]
= "upgrade"
= "tests/upgrade/mod.rs"
[[]]
= "recovery"
= "tests/recovery/mod.rs"