Skip to main content

max / synckit

Explain the rusqlite version constraint in both manifests The reasoning lived only in commit 9caecf6, so a manifest reader saw a bare version and no sign that it is a tree-wide constraint rather than an arbitrary choice. libsqlite3-sys carries `links = "sqlite3"`, so two rusqlite majors in one graph is a resolver error and every consumer moves in the same pass. Comments only. No version requirement changed and Cargo.lock is untouched. GoingsOn problem 3664871f asked for this plus comments on chacha20poly1305 and sha2, on the reading that both are pinned a major behind. They are not: both are `0.11` and 0.11.0 is the latest published major of each, unchanged since the extraction from the MNW tree. The finding predates that extraction. Its rusqlite half was stale too, naming a 0.39 hold and commit 1365b8f1, neither of which exists here.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-23 20:11 UTC
Signed with PGP, not checked
Commit: 8c4ab94bb80fb2cdc13ff6f87712e2efe8e6a433
Parent: 77c771e
2 files changed, +15 insertions, -0 deletions
@@ -78,6 +78,15 @@
78 78
79 79 # SyncStore engine (feature = "store"). Owns the app's SQLite connection. Bundled
80 80 # so no system libsqlite is needed; `functions` to register the `hash_row_id` UDF.
81 + #
82 + # The version here is a tree-wide choice, not this crate's. libsqlite3-sys carries
83 + # `links = "sqlite3"`, so two rusqlite majors in one dependency graph is a resolver
84 + # error rather than a warning: this crate cannot move until every consuming app can
85 + # move in the same pass. `rusqlite::Connection` is in this crate's public API as
86 + # well, which makes each bump breaking for consumers. The move to 0.40 (commit
87 + # 9caecf6, 2026-08-07) needed no code change and was gated only on GoingsOn and
88 + # Balanced Breakfast leaving sqlx-sqlite. Keep this version equal to
89 + # synckit-config's.
81 90 rusqlite = { version = "0.40", features = ["bundled", "functions"], optional = true }
82 91 # The local config store (posture types + KV store). The config sync adapter
83 92 # (src/store/config.rs) turns a ConfigSpec into a SyncTable. Path dep: sibling in
@@ -6,6 +6,12 @@
6 6 description = "Local key/value app settings with sync postures. The store half of SyncKit's config sync, usable with no network."
7 7
8 8 [dependencies]
9 + # Bundled so no system libsqlite is needed. The version is a tree-wide choice, not
10 + # this crate's: libsqlite3-sys carries `links = "sqlite3"`, so two rusqlite majors
11 + # in one dependency graph is a resolver error rather than a warning, and every
12 + # consumer has to move in the same pass. `rusqlite::Connection` is in this crate's
13 + # public API too, so a bump is breaking. Moved to 0.40 in commit 9caecf6
14 + # (2026-08-07) with no code change. Keep this version equal to synckit-client's.
9 15 rusqlite = { version = "0.40", features = ["bundled"] }
10 16 thiserror = "2"
11 17