Repository navigation
Expand file tree
/
Copy pathCargo.toml
More file actions
442 lines (436 loc) · 25.5 KB
/
Copy pathCargo.toml
File metadata and controls
442 lines (436 loc) · 25.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
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
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
[workspace]
members = [
"crates/lance-graph",
"crates/lance-graph-catalog",
"crates/lance-graph-benches",
"crates/lance-graph-planner",
"crates/lance-graph-contract",
"crates/lance-graph-mask-risc",
"crates/lance-graph-quack",
# The fold reading of R2IL over mask-risc (FoldDialect, D-SQLP-1). A member
# since 2026-10-13: the fold path is a core capability, and CI and the root
# Dockerfiles check out the OGAR sibling it path-deps (`ogar-loco`,
# `ogar-r2il`). The contract may never depend on OGAR (`ogar-loco` depends on
# the contract), but members other than the contract may.
"crates/lance-graph-r2il",
# EXPERIMENTAL, routed nowhere: Cypher (upstream front end, read-only) →
# bound LogicalOperator → Quack, with typed refusals.
"crates/lance-graph-cypher-quack",
"crates/lance-graph-lane-fold",
# Z8RUN capstone: the ReportPlan / zero-copy pivot layer Quack and z8run
# both lower into (no second evaluator; lowers INTO lance-graph-quack).
"crates/lance-graph-report",
"crates/neural-debug",
"crates/lance-graph-callcenter",
"crates/lance-graph-archetype",
"crates/lance-graph-rbac",
"crates/lance-graph-ontology",
"crates/bgz-tensor",
"tools/dto-class-check",
"crates/lance-graph-consumer-conformance",
# PR-G2 (TD-RACTOR-SUPERVISOR-5): ractor-supervised callcenter actor tree
"crates/lance-graph-supervisor",
"crates/sigma-tier-router",
# TD-SHADER-DRIVER-WORKSPACE-CONFLICT-1: moved from exclude to members
"crates/cognitive-shader-driver",
# 01-deps-substrate: embedded SurrealDB-on-Lance cognitive store
"crates/surreal_container",
# Generic SoA -> S3 -> volume -> Lance hydration pattern (minted here per
# operator directive; closes ISS-REMOTE-URI-CONSTRUCTORS-PREDATE-THE-HYDRATION-DOCTRINE)
"crates/lance-graph-hydrate",
]
exclude = [
"crates/lance-graph-sap",
# D-HOLO-H14c Lance 13 masked-I/O probe: own narrow dependency set.
"crates/holo-lance-masked-io-probe",
"crates/lance-graph-glove-parity",
# Python bindings (upstream-inherited, opt-in via --manifest-path)
"crates/lance-graph-python",
"crates/lance-graph-codec-research",
"crates/bgz17",
"crates/deepnsm",
"crates/deepnsm-v2",
"crates/lance-graph-osint",
"crates/reader-lm",
"crates/bge-m3",
"crates/p64-bridge",
"crates/causal-edge",
"crates/highheelbgz",
"crates/thinking-engine",
"crates/holograph",
"crates/lance-graph-cognitive",
"crates/learning",
"crates/jc",
"crates/sigker",
# Outage perturbation-shape simulator — standalone zero-dep research crate.
# The applied companion to jc: supplies the genuine eigenvalue-perturbation
# result (Weyl/Davis-Kahan on the weighted Laplacian) that jc::weyl
# (equidistribution) is NOT, composed with a DC-power-flow/LODF cascade.
# Verify via `cargo test --manifest-path crates/perturbation-sim/Cargo.toml`.
"crates/perturbation-sim",
# Place/Residue golden-spiral codec — standalone, with a MANDATORY git dep on
# the AdaWorldAPI ndarray fork (the SIMD foundation). Verified via
# `cargo test --manifest-path crates/helix/Cargo.toml`.
"crates/helix",
# Aerial+ ARM-discovery transcode — standalone zero-dep proposer crate,
# verified via `cargo test --manifest-path crates/lance-graph-arm-discovery/Cargo.toml`.
# Kept out of the workspace so the nondeterministic autoencoder never
# enters the deterministic lance-graph compile path (determinism boundary).
"crates/lance-graph-arm-discovery",
# Quasicryth research transcode (Tacconelli 2026, arxiv 2603.14999) —
# standalone zero-dep research crate. Verifies the workspace's φ-substrate
# decisions (bgz17 17φ/11, helix golden-spiral, jc::weyl) against the
# reference algebra. Covers tilings + hierarchy + deep-position detection
# PLUS arithmetic coding + tokenization + codebook construction
# (FlatCodebook + CowRadixCodebook variants) + an end-to-end
# compress/decompress pipeline that round-trips under both variants.
# NOT byte-compatible with the upstream .qm56 output — simplifies the
# v5.6 multi-tier n-gram + LZMA-escape + word-LZ77 + per-context-model
# machinery to a single-tier unigram pipeline (see crate README).
# Verified via `cargo test --manifest-path crates/quasicryth-research/Cargo.toml`.
"crates/quasicryth-research",
# TurboQuant ANN index (Google arXiv 2504.19874) bridged onto the spine —
# standalone, path-deps the AdaWorldAPI turbovec + ndarray forks. Kept out
# of the main graph so turbovec's faer/statrs tree never enters the
# deterministic lance-graph compile path. Both scoring kernels (native
# nibble-LUT ADC + ndarray::simd::matmul_i8_to_i32 polyfill GEMM) compiled.
# Verify via `cargo test --manifest-path crates/lance-graph-turbovec/Cargo.toml`.
"crates/lance-graph-turbovec",
# Golden-image probe — the full Ada stack (lance-graph + lance7/lancedb0.30
# + ndarray fork + ractor fork + surrealdb kv-lance + OGAR) in ONE binary.
# Portable git-deps build (own [workspace] + a surrealdb [patch]) for any
# session + Railway/CI. MUST stay excluded (keeps surrealdb-core/OGAR out of
# the default build). Verify via `cargo build --manifest-path crates/symbiont/Cargo.toml`
# or `docker build -f crates/symbiont/Dockerfile -t symbiont .`.
# W0B mask-ABI differential at the R2IL seam: proves ogar-r2il's CallMask
# algebra and lance-graph-mask-risc's agree bit-identically over the same
# borrowed words, with CallMask as the oracle. MUST stay excluded -- it
# path-deps the OGAR sibling, and no ordinary workspace test should need
# that checkout present. Verify via
# `cargo test --manifest-path crates/r2il-mask-abi-probe/Cargo.toml`.
"crates/r2il-mask-abi-probe",
# NAL over the fold path (D-NALP-1/2): path-deps lance-graph-r2il, so it
# needs the OGAR checkout too. Own workspace root; verify via
# `cargo test --manifest-path crates/lance-graph-nal/Cargo.toml`.
"crates/lance-graph-nal",
# Relational algebra over coordinate populations (D-RA-1): path-deps
# lance-graph-r2il like lance-graph-nal. Own workspace root; verify via
# `cargo test --manifest-path crates/lance-graph-relalg/Cargo.toml`.
"crates/lance-graph-relalg",
# D-HOLO-H14d probe (plan d-holo-h14d-logic-mask-read-v1): its own workspace
# root; path-deps relalg and pulls lance 13. Excluded so no workspace crate
# gains a dependency.
"crates/holo-h14d-probe",
# D-MTP-1: its own workspace root (datafrog oracle is a git dev-dependency).
# `cargo test --manifest-path crates/lance-graph-metta/Cargo.toml`.
"crates/lance-graph-metta",
"crates/symbiont",
# OGAR (Open Graph of Active Record) activation crate — re-exports OGAR's full
# AR surface (ogar-vocab Class/codebook + ogar-class-view impl ClassView +
# ogar-ontology + ogar-adapter-surrealql) and hosts the codebook parity-guard.
# EXCLUDED (own [workspace], git-deps OGAR + lance-graph-contract@main = one
# source, no [patch]) so OGAR never enters the default build; the lance-graph
# half of the OGIT(ontology)/OGAR(ogar) clean separation. Verify via
# `cargo test --manifest-path crates/lance-graph-ogar/Cargo.toml`.
"crates/lance-graph-ogar",
# A lance-graph ReportResult as an addressed OGAR ObjectSlot source
# (implements ogar-doc-ir's DocObjectSource::grid_of). EXCLUDED for the same
# reason as lance-graph-ogar: path-deps the OGAR sibling. Verify via
# `cargo test --manifest-path crates/lance-graph-report-ogar/Cargo.toml`.
"crates/lance-graph-report-ogar",
# Directory desired-state simulation over SoA lanes + Quack (versions as
# shared snapshot + delta overlay; invariants as Semijoin / GroupReduce
# programs). EXCLUDED for the same reason: path-deps the OGAR sibling
# (ogar-dir-core / ogar-ad / ogar-dir-sim). Verify via
# `cargo test --manifest-path crates/lance-graph-dir-sim/Cargo.toml`.
"crates/lance-graph-dir-sim",
# Cognitive Compilation loop (claude/cognitive-compilation-lance-graph-h8sgym).
# The NEW piece is the Elixir-shaped template — thinking styles, JITson, and
# i4-32D thinking-style vectors already exist; the template was the gap. Four
# standalone zero-dep crates, EXCLUDED so they never enter the default build.
# Verify each via `cargo test --manifest-path crates/<name>/Cargo.toml`.
# Plan: .claude/plans/cognitive-compilation-v1.md.
"crates/elixir-template", # representation + parser + source_ranking_v1 slice
"crates/template-runtime", # deterministic reflex executor (OGAR-action dispatch)
"crates/template-equivalence", # replay grading (Exact/RankOrder real; Semantic deferred)
"crates/cognitive-compiler", # trace → template synthesis surface (logic deferred)
# Golden image: NEW Elixir-template stack linked on top of the OLD AdaWorldAPI
# forks (lance-graph + ndarray + ractor + surrealdb kv-lance + OGAR) in ONE
# binary. Own [workspace] + git-deps (sibling of crates/symbiont). Verify via
# `cargo build --manifest-path crates/cognitive-stack/Cargo.toml` or the Dockerfile.
"crates/cognitive-stack",
# 1BRC substrate probe — standalone zero-dep groupby-aggregate throughput
# baseline (Lane A scalar / Lane C std::thread) at container scale. See
# crates/onebrc-probe/README.md. Verify via
# `cargo test --manifest-path crates/onebrc-probe/Cargo.toml`.
"crates/onebrc-probe",
# X-C2-1 injection harness (RP-SEAL Tier 0) — fault injection over a
# synthetic cycle; anti-vacuity gate reproduces the known in-tree
# false-accepts against the REAL live implementations. Verify via
# `cargo test --manifest-path crates/rp-seal-t0-probe/Cargo.toml`.
"crates/rp-seal-t0-probe",
# ERA5 0.25-degree global grid baked onto the canonical 512-byte NodeRow --
# one cell = one node, one timestep = one Lance version. Standalone and
# genuinely zero-dep (see the crate manifest for why helix is NOT an
# optional path dep). Verify via
# `cargo test --manifest-path crates/weather-poc/Cargo.toml`.
# Plan: .claude/plans/weather-soa-bake-v1.md.
"crates/weather-poc",
"crates/d-diamond-1-probe",
]
resolver = "2"
# ─── Workspace-level dependency pins ────────────────────────────────────────
#
# Task 01 (deps_substrate) — Lance 6 / LanceDB 0.29 / surrealdb kv-lance
#
# RESOLVED(A) 2026-05-28 — Lance pinned to `=6.0.0` across all crate Cargo.tomls
# (lance-graph, lance-graph-benches, lance-graph-callcenter, lance-graph-catalog,
# lance-graph-ontology, holograph, surreal_container; lance-arrow + lance-index
# + lance-linalg + lance-namespace bump in lock-step). #423's coordinated
# 4 → 6 jump landed at 6.0.0.
#
# The user authorised a follow-on patch 6.0.0 → 6.0.1, but it is **CURRENTLY
# BLOCKED by lancedb 0.29.0's transitive `lance = "=6.0.0"` requirement**:
# lancedb 0.29.0 is the latest 0.29.x published on crates.io and pins lance
# to exact-equals 6.0.0. Cargo cannot satisfy both `lance = "=6.0.1"` (our
# pin) and lancedb's transitive `lance = "=6.0.0"`. Resolution path: wait
# for lancedb 0.29.1+ that bumps the lance pin, OR drop the strict-equals
# pin in lance-graph (doctrine change). Tracked as TD-LANCE-6.0.1-PIN.
#
# RESOLVED(B) 2026-05-28 — LanceDB pinned to `=0.29.0` (the latest 0.29 patch);
# transitively pins lance =6.x, datafusion 53, arrow 58.
#
# RESOLVED(A2/B2) 2026-05-31 — bumped Lance 6.0.0 → `=7.0.0` and LanceDB
# 0.29.0 → `=0.30.0` (lockstep across lance-graph, -benches, -callcenter,
# -catalog, -ontology, holograph, surreal_container; lance-arrow / -index /
# -linalg / -namespace move together). lancedb 0.30.0 transitively pins lance
# `=7.0.0`, so the strict-equals lockstep is satisfied. This SUPERSEDES the
# 6.0.1 BLOCKED note above — that path was always dead: no lancedb release ever
# pinned lance =6.0.1 (0.29.0 → 6.0.0, then 0.30.0 → 7.0.0, skipping 6.0.1).
# arrow stays 58, datafusion stays 53 (lance 7 + lancedb 0.30 keep ^58 / ^53).
# The one transitive move is object_store 0.12 → 0.13, which ALIGNS with the
# AdaWorldAPI/surrealdb fork (its workspace `object_store = "0.13.0"`): lance
# 6's object_store 0.12 conflicted with surrealdb's 0.13; lance 7's 0.13 does
# not. CAVEAT: surrealdb-core's `kv-lance` feature STILL pins lance/lance-index
# `=6.0.0` + lancedb `=0.29.0` — that fork needs the SAME 7.0.0/0.30.0 bump
# before kv-lance can wire against this workspace (see BLOCKED(C) below).
# API-level compile against the lance-7 Rust surface is UNVERIFIED here
# (disk-limited sandbox); CI in a disk-ample env is the gate.
#
# BLOCKED(D) STILL OPEN — codex P2 correction on PR #425 (2026-05-28).
# The earlier RESOLVED(D) claim was FALSE: there is no `[patch.crates-io]`
# block in this workspace root (`git grep '\[patch'` on this commit finds
# only this comment), and `Cargo.lock` continues to resolve `ndarray 0.16.1`
# from `registry+https://github.com/rust-lang/crates.io-index` (verified via
# `cargo tree -i ndarray@0.16.1` → lance-index 6.0.0 → lance 6.0.0).
#
# Technical reality:
# - The AdaWorldAPI/ndarray fork is at `version = "0.17.2"` (see
# `/home/user/ndarray/Cargo.toml`); no 0.16-line branch / tag exists
# (verified: only `master` + working branch, both at 0.17.2).
# - `lance-index 6.0.0` pins `ndarray = "0.16.1"` (features =
# `["matrixmultiply-threading"]`) in its registry manifest.
# - A `[patch.crates-io] ndarray = { git = "https://github.com/adaworldapi/ndarray.git" }`
# to the 0.17.2 fork would NOT satisfy lance-index's 0.16 requirement —
# cargo would emit `"warning: Patch ndarray v0.17.2 ... was not used in
# the crate graph"`. The semver gap defeats a fork-by-git patch.
#
# What IS wired to the fork: the workspace's DIRECT ndarray dep
# (`ndarray = { path = "../../../ndarray" }` declared by lance-graph's own
# `crates/lance-graph/Cargo.toml`) — `Cargo.lock` lists `ndarray 0.17.2` as
# a separate entry from the local source. So the fork IS reachable for
# workspace-direct consumers. Only the lance TRANSITIVE remains on the
# crates.io 0.16.1.
#
# Attempted resolution (2026-05-28, user directive "just use [patch] to
# overwrite ndarray = 0.16 with 0.17.2"): the `[patch.crates-io]` block
# below points `ndarray` at the AdaWorldAPI fork. Cargo's `[patch]` does
# NOT force a version downgrade — if the fork's `0.17.2` doesn't semver-
# match lance-index's `0.16.1` requirement, cargo emits the warning
# `"Patch ndarray v0.17.2 ... was not used in the crate graph"` and the
# transitive continues to resolve to crates.io 0.16.1 in `Cargo.lock`.
# This patch is therefore a DECLARED INTENT (not a guaranteed effect):
# - It DOES wire workspace-direct ndarray consumers to the fork
# (already wired via the path dep in lance-graph's own Cargo.toml).
# - It DOES NOT guarantee the lance transitive switches off crates.io
# until upstream lance-index supports ndarray 0.17 OR the fork ships
# a `0.16.x`-versioned branch (see TD-NDARRAY-PATCH-0_16).
# Cross-ref: TECH_DEBT.md TD-NDARRAY-PATCH-0_16; PR #425 codex review.
#
# STILL OPEN — BLOCKED(C): `surrealdb` with `kv-lance` feature.
# Upstream surrealdb (crates.io) does NOT ship a `kv-lance` feature. This
# feature lives in the AdaWorldAPI fork (core/src/kvs/lance/ per
# cognitive-substrate.md). A fork-access human must supply:
# - the git URL of the fork (e.g. https://github.com/AdaWorldAPI/surrealdb)
# - the branch or tag to pin (e.g. `branch = "kv-lance-v2"`)
# - the exact feature flag name (confirmed: `kv-lance` from spec)
# - whether a published crate path or `[patch.crates-io]` override is
# required for workspace compilation.
# Until resolved, surreal_container's `surrealdb` dep stays commented out.
#
# Crate-level pins (canonical source of truth — workspace.dependencies is not
# used; each consumer crate declares its own pin with exact-equals so the
# whole graph resolves to the same semver):
# lance = "13.*" (lance-arrow / lance-index / lance-linalg /
# lance-namespace bump in lock-step)
# lancedb = "0.40.*"
# datafusion = "54" (+ datafusion-common / -expr / -sql /
# -functions-aggregate)
# arrow-array = "58" (+ arrow-schema / -buffer / -ipc / arrow)
# ─── [patch.crates-io] — point ndarray at the AdaWorldAPI fork ──────────────
#
# Per user directive 2026-05-28 ("don't use crates.io; try [patch]
# github.com/adaworldapi/ndarray.git or adjacent" → "just use [patch] to
# overwrite ndarray = 0.16 with 0.17.2"). The fork's `0.17.2` will:
# - Satisfy workspace-direct consumers (already wired via path dep).
# - Emit `"Patch ndarray v0.17.2 ... was not used in the crate graph"`
# against lance-index's `ndarray = "0.16.1"` until lance-index 0.17-
# compat lands OR a 0.16-line branch is added to the fork.
# The patch is a declared-intent override; effect on the transitive depends
# on semver compat. See BLOCKED(D) comment above + TD-NDARRAY-PATCH-0_16.
# ── One place per version, for the crates whose versions must move together ──
#
# These were declared in eight member manifests, in a dozen spellings
# (`arrow = "58"`, `{ version = "58" }`, `{ version = "58", optional = true }`,
# …). A bump was eight edits, and an inconsistent one was invisible until a
# resolve produced two majors.
#
# What this does NOT do, and cannot: pin the TRANSITIVE closure. Cargo has no
# recursive version pin — `[workspace.dependencies]` centralises OUR
# declarations, `=x.y.z` pins only the edges we declare, and `[patch]`
# redirects a source rather than a version graph. What `lancedb` pulls in as
# ITS datafusion is governed by lancedb's own requirement. The artifact that
# freezes the whole graph is `Cargo.lock`, which is why this workspace commits
# 29 of them and why FLOAT AND FIX (MedCare-rs, OGAR) does not transfer here.
#
# The lance family moves in EXACT lockstep (`=`); arrow and datafusion are
# caret by design, so the lockfile is what holds them still between bumps.
# datafusion is a SINGLE major here since #962 removed the `delta` feature —
# deltalake was the only thing that pulled 53, and it is gone (0 hits in the
# lock).
[workspace.dependencies]
# `default-features = false` + lance's own default list MINUS `aws`.
#
# WHY: `lance/aws` -> `lance-io/aws` -> `dep:aws-config` -> `aws-smithy-json
# 0.63.0`, which does not compile against `aws-smithy-types 1.7.0`
# (`Document::Object` took a `DocumentObject`, `Document` went
# `#[non_exhaustive]`). 0.63.0 declares `aws-smithy-types ^1.6.1`, so it ALWAYS
# resolves the breaking 1.7.0, and the newest `aws-config` requires `^0.63.0`
# and cannot reach the fixed 0.64.0. No version selection fixes it; this repo
# tracks no lock, so every CI run re-resolves into the break. It is upstream's
# bug, reproducing on our `main` and on every branch.
#
# WHAT THIS DOES *NOT* COST -- measured, not assumed. `lance-io`'s `aws`
# feature bundles TWO unrelated things: the AWS *SDK* (`aws-config`, the broken
# half) and `object_store/aws`, the generic S3-COMPATIBLE backend. Only the
# first is dropped here: `object_store/aws` is declared DIRECTLY by this
# workspace and by `crates/lance-graph`, so cargo unification keeps it on.
# Verified with the change applied: `cargo tree -i aws-config` -> "did not
# match any packages", while `cargo tree -e features -i object_store` still
# lists feature "aws". So S3-compatible object storage is UNAFFECTED --
# including `lance-graph-hydrate`'s slab hydration, which drives `object_store`
# with `aws_endpoint` + `aws_virtual_hosted_style_request = false` (an
# S3-compatible endpoint, not an AWS-native one) and never touches the SDK.
# Nothing in this workspace names `aws_config` / `aws_sdk_*` /
# `aws_credential_types` at all -- the SDK was pure transitive weight.
#
# WHAT IT DOES COST: AWS-*native* credential machinery only -- IMDS, SSO,
# STS assume-role -- which a deployment carrying explicit key/secret/endpoint
# does not use.
#
# TO RESTORE: `--features lance-graph/aws-sdk` (see that crate's [features]).
# If upstream is still broken when someone wants it, the escape hatch is a
# fork of `aws-smithy-json` fixed against `aws-smithy-types 1.7` -- the two
# call sites need `.into()` and one wildcard arm; upstream's own compiler
# hints spell both out.
lance = { version = "13.*", default-features = false, features = [
"azure",
"gcp",
"oss",
"huggingface",
"tencent",
"tos",
"goosefs",
"geo",
] }
lance-linalg = "13.*"
lance-index = "13.*"
lancedb = { version = "0.40.*", default-features = false }
# ⊘ OPERATOR RULING 2026-09-18 — NEVER PIN TO `.0.0`; FLOAT THE PATCH.
# *"never pin to x.00, always float x.*"* / *"so no decimal .0.0"*. The
# `=X.Y.0` exact-equals these replaced are RETIRED. Floating the patch is
# strictly SAFER here, not looser, and the manifest already records why:
# lines 143-146 above log a graph cargo could NOT satisfy, because our
# `lance = "=6.0.1"` was narrower than lancedb's transitive `lance =
# "=6.0.0"`. An exact pin on OUR side can only ever be equal to or narrower
# than what the family asks for, so it buys nothing and breaks the moment
# lancedb's transitive requirement moves by a patch. `11.*` resolves to
# whatever lancedb demands — today the identical 11.0.0 — and survives that
# move. ⊘ The struck rationale ("Exact, not caret: the lance family moves in
# EXACT lockstep ... A bump is one deliberate PR") is kept here as the reason
# the pins were once exact; the lockstep FACT still holds, and the deliberate
# bump is now the MAJOR (11 → 12), which floating the patch does not touch.
# arrow/datafusion were already caret and are unaffected.
arrow = "58"
arrow-array = "58"
arrow-schema = "58"
datafusion = { version = "54", default-features = false }
datafusion-common = "54"
datafusion-expr = "54"
datafusion-sql = "54"
datafusion-functions-aggregate = "54"
# `object_store` follows LANCE, not DataFusion: lance 12 moved to ^0.14.1 while
# datafusion 54 stays on ^0.13.2, so both are in the graph whatever this says
# (upstream's split, not ours). Every direct use in this workspace hands the
# store or a `Path` to lance or to lance-graph-hydrate, so it must be lance's
# major; on 0.13 those call sites fail with "multiple different versions of
# crate `object_store`" (measured on the lance 12 bump, 2026-09-25).
object_store = { version = "0.14", features = ["aws"] }
[patch.crates-io]
# Redirects the REAL crates.io `ndarray` -- the upstream numeric crate this is
# a fork OF -- onto the fork, so a transitive pull of upstream can never become
# a second package identity. Note the section: `[patch.crates-io]` CANNOT
# redirect the AdaWorldAPI git URL, and two excluded crates
# (`perturbation-sim`, `helix`) do use that git coordinate. No member binary
# sees both identities today, but that is a consequence of those crates being
# EXCLUDED, not of this patch.
#
# P0: "prefer the local/fork source, always"; the direct deps already assume
# the sibling via path = "../../../ndarray".
#
# ⊘ CORRECTED 2026-09-20. This comment previously read: "The git-URL form
# re-fetched AdaWorldAPI/ndarray+its burn submodule on every resolve; burn is
# outside the session repo scope (403) and the gitlink rev is unfetchable, so
# the git form deadlocks offline sessions." Measured on master (e1ef350):
# `git ls-tree HEAD` shows NO `160000` gitlink and NO `.gitmodules` -- `burn`
# is `crates/burn`, an in-tree workspace member. Its OWN git deps
# (AdaWorldAPI/burn.git rev 9b2b671) are genuinely out of session scope, but
# cargo resolves the `ndarray` package rather than every member's
# dependencies: a throwaway crate with `ndarray = { git = ".../ndarray",
# branch = "master" }` returned `cargo metadata` exit 0, `Locking 10
# packages`, `ndarray v0.17.2 (...#e1ef350a)`, no burn fetch, no 403. So the
# git form does NOT deadlock. What survives: a git coordinate needs network on
# a fresh resolve where a path coordinate needs none. Path form = zero network,
# identical source -- which is the reason to keep it, and it is a smaller
# reason than the one this comment used to give.
# Full measurement + the target geometry: .claude/knowledge/CARGO-COMPUTE-SUBSTRATE.md
ndarray = { path = "../ndarray" }
[patch."https://github.com/AdaWorldAPI/lance-graph"]
# OGAR's crates (`ogar-loco`, reached through the `lance-graph-r2il` member)
# depend on the contract by its git coordinate. Without this the workspace
# would hold two contract packages: the member and the git copy.
lance-graph-contract = { path = "crates/lance-graph-contract" }
[patch."https://github.com/AdaWorldAPI/ndarray"]
# The same sibling checkout for crates that name the canonical git coordinate
# (today `lance-graph-mask-risc`, so that git consumers of Quack can build).
# Without this, a member on the git coordinate would resolve a second ndarray
# package beside the path one (CARGO-COMPUTE-SUBSTRATE rule 9).
ndarray = { path = "../ndarray" }
# Dev/test debuginfo OFF (operator, 2026-08-18: "Cargo Debug*=0 or so makes it
# much smaller and faster"). Measured incident the same day: full debuginfo
# test binaries grew target/ to 17 GB and killed the linker with SIGBUS on a
# full disk; debug = 0 shrinks the lance/datafusion-stack test binaries by
# roughly an order of magnitude and links faster. Set "line-tables-only" here
# instead if line-numbered backtraces are ever worth the size again.
[profile.dev]
debug = 0