Skip to main content

max / goingson

Take synckit-client 0.10, and amend the version-1 ledger row 0.10 puts exclude_where in the wire fingerprint. user_config carries the config policy predicate, so this manifest's digest moved: b2f13d42..., was 41d64618... The row is amended in place rather than a version 2 added. The grows-only rule covers shipped history and there is none here: the gate landed 2026-08-24 and the last tagged release is v0.5.0 (2026-07-16), so no device in the field ever sealed the old digest and a version 2 would record a shape nobody ran. Once a release carries the gate, the next move is a new row. The lockfile churn beside the synckit line is this machine re-resolving a lock written elsewhere, same-major throughout.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-28 16:59 UTC
Signed with PGP, not checked
Commit: a84cea3b2144f2eb304617a400466636ba4b361f
Parent: 0db557c
3 files changed, +32 insertions, -23 deletions
M Cargo.lock +19 -19
@@ -1387,7 +1387,7 @@
1387 1387 "libc",
1388 1388 "option-ext",
1389 1389 "redox_users",
1390 - "windows-sys 0.60.2",
1390 + "windows-sys 0.59.0",
1391 1391 ]
1392 1392
1393 1393 [[package]]
@@ -1628,7 +1628,7 @@
1628 1628 checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1629 1629 dependencies = [
1630 1630 "libc",
1631 - "windows-sys 0.60.2",
1631 + "windows-sys 0.59.0",
1632 1632 ]
1633 1633
1634 1634 [[package]]
@@ -3650,7 +3650,7 @@
3650 3650 "png 0.18.1",
3651 3651 "serde",
3652 3652 "thiserror 2.0.20",
3653 - "windows-sys 0.60.2",
3653 + "windows-sys 0.61.2",
3654 3654 ]
3655 3655
3656 3656 [[package]]
@@ -3783,7 +3783,7 @@
3783 3783 source = "registry+https://github.com/rust-lang/crates.io-index"
3784 3784 checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
3785 3785 dependencies = [
3786 - "windows-sys 0.60.2",
3786 + "windows-sys 0.59.0",
3787 3787 ]
3788 3788
3789 3789 [[package]]
@@ -3891,7 +3891,7 @@
3891 3891 source = "registry+https://github.com/rust-lang/crates.io-index"
3892 3892 checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8"
3893 3893 dependencies = [
3894 - "proc-macro-crate 3.5.0",
3894 + "proc-macro-crate 1.3.1",
3895 3895 "proc-macro2",
3896 3896 "quote",
3897 3897 "syn 2.0.119",
@@ -5206,7 +5206,7 @@
5206 5206 "errno",
5207 5207 "libc",
5208 5208 "linux-raw-sys",
5209 - "windows-sys 0.60.2",
5209 + "windows-sys 0.59.0",
5210 5210 ]
5211 5211
5212 5212 [[package]]
@@ -5263,7 +5263,7 @@
5263 5263 "security-framework",
5264 5264 "security-framework-sys",
5265 5265 "webpki-root-certs",
5266 - "windows-sys 0.60.2",
5266 + "windows-sys 0.59.0",
5267 5267 ]
5268 5268
5269 5269 [[package]]
@@ -5803,7 +5803,7 @@
5803 5803 checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
5804 5804 dependencies = [
5805 5805 "libc",
5806 - "windows-sys 0.60.2",
5806 + "windows-sys 0.61.2",
5807 5807 ]
5808 5808
5809 5809 [[package]]
@@ -6002,7 +6002,7 @@
6002 6002
6003 6003 [[package]]
6004 6004 name = "synckit-client"
6005 - version = "0.9.1"
6005 + version = "0.10.0"
6006 6006 dependencies = [
6007 6007 "apple-native-keyring-store",
6008 6008 "argon2",
@@ -6575,10 +6575,10 @@
6575 6575 checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
6576 6576 dependencies = [
6577 6577 "fastrand",
6578 - "getrandom 0.4.3",
6578 + "getrandom 0.3.4",
6579 6579 "once_cell",
6580 6580 "rustix",
6581 - "windows-sys 0.60.2",
6581 + "windows-sys 0.59.0",
6582 6582 ]
6583 6583
6584 6584 [[package]]
@@ -6600,7 +6600,7 @@
6600 6600 "parking_lot",
6601 6601 "rustix",
6602 6602 "signal-hook",
6603 - "windows-sys 0.60.2",
6603 + "windows-sys 0.61.2",
6604 6604 ]
6605 6605
6606 6606 [[package]]
@@ -7082,7 +7082,7 @@
7082 7082 "png 0.18.1",
7083 7083 "serde",
7084 7084 "thiserror 2.0.20",
7085 - "windows-sys 0.60.2",
7085 + "windows-sys 0.61.2",
7086 7086 ]
7087 7087
7088 7088 [[package]]
@@ -7117,7 +7117,7 @@
7117 7117 dependencies = [
7118 7118 "memoffset",
7119 7119 "tempfile",
7120 - "windows-sys 0.60.2",
7120 + "windows-sys 0.61.2",
7121 7121 ]
7122 7122
7123 7123 [[package]]
@@ -7647,7 +7647,7 @@
7647 7647 source = "registry+https://github.com/rust-lang/crates.io-index"
7648 7648 checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
7649 7649 dependencies = [
7650 - "windows-sys 0.60.2",
7650 + "windows-sys 0.59.0",
7651 7651 ]
7652 7652
7653 7653 [[package]]
@@ -8504,10 +8504,6 @@
8504 8504 "winnow 1.0.4",
8505 8505 ]
8506 8506
8507 - [[patch.unused]]
8508 - name = "ops-status"
8509 - version = "0.1.0"
8510 -
8511 8507 [[patch.unused]]
8512 8508 name = "quasi-axum"
8513 8509 version = "0.74.0"
@@ -8523,3 +8519,7 @@
8523 8519 [[patch.unused]]
8524 8520 name = "quasi-store"
8525 8521 version = "0.1.0"
8522 +
8523 + [[patch.unused]]
8524 + name = "ops-status"
8525 + version = "0.1.0"
@@ -42,7 +42,7 @@
42 42 goingson-core = { workspace = true }
43 43 painhours = { workspace = true }
44 44 goingson-db-sqlite = { workspace = true }
45 - synckit-client = { git = "https://makenot.work/git/max/synckit.git", version = "0.9" }
45 + synckit-client = { git = "https://makenot.work/git/max/synckit.git", version = "0.10" }
46 46 synckit-config = { git = "https://makenot.work/git/max/synckit.git", version = "0.2" }
47 47
48 48 # The quasi stack, which is the frontend. Git URLs redirected to the
@@ -453,8 +453,9 @@
453 453 /// still writing the dropped column.
454 454 ///
455 455 /// What moves this number is the manifest, not migrations: a new synced table or
456 - /// column, a changed `pk`, row-id scheme, sync mode or delete mode. Local-only
457 - /// DDL does not cross the wire and must not fire the gate.
456 + /// column, a changed `pk`, row-id scheme, sync mode or delete mode, or an edited
457 + /// `exclude_where` predicate (`user_config` has one). Local-only DDL does not
458 + /// cross the wire and must not fire the gate.
458 459 pub(crate) const STORAGE_VERSION: u32 = 1;
459 460
460 461 /// Every storage version this app has ever shipped, with the manifest
@@ -466,10 +467,18 @@
466 467 /// Read only by `manifest_matches_its_ledger`, which is the only thing that ever
467 468 /// needs it: the ledger is a claim about history that a test checks, not a value
468 469 /// the running app consults.
470 + /// Version 1's fingerprint was amended in place on 2026-08-28, which the
471 + /// grows-only rule above would otherwise forbid. It is allowed exactly once and
472 + /// exactly here: synckit-client 0.10 added `exclude_where` to the wire manifest,
473 + /// `user_config` carries a predicate, and version 1 has never shipped. The last
474 + /// tagged release is v0.5.0 (2026-07-16); the gate landed 2026-08-24. No device
475 + /// in the field ever sealed the old digest, so there is no history to preserve
476 + /// and a version 2 would record a shape nobody ran. Once a release carries this,
477 + /// the rule binds: the next move is a new row.
469 478 #[cfg(test)]
470 479 const LEDGER: &[LedgerEntry] = &[LedgerEntry {
471 480 version: 1,
472 - fingerprint: "41d646183a266e6ee4e7a5b58dc054afa96b369923f231bc688f130228764e4e",
481 + fingerprint: "b2f13d426c9e80d6e10930e8f5aa158a517bf5a66efdb1eb2203e6ab1d9b1d13",
473 482 }];
474 483
475 484 /// How to describe one of the manifest's tables to a person: a display name, and