Skip to content

Commit 9462bab

Browse files
authored
Merge pull request #130 from utof/architecture-audit/v0.6.x
arch-audit checkpoint: Batches A→E landed + SQLite deadlock fixed 78 commits: 61 checkpoint (Batches A/B/C/D/E of the architecture-audit umbrella) + 17 fixes surfaced during CI validation. Fixes on top of the checkpoint: - Arc::clone → .clone() on unsize coercion sites (74e3865) - 11 latent clippy errors + bindings_compile assertion scope (d8e1561, 0f1db29) - cargo-nextest adoption (closes #121) + repo-wide no-cargo-test enforcement (04ecb43) - cargo-nextest install in CI (466a41a) - nextest slow-timeout + retry tuning, iterated (7db4266, e53cb65, 8c74f39) - rusqlite 0.38 → 0.39 (bundled SQLite 3.51.1 → 3.51.3) — closes the upstream lock-order inversion documented in #131 (8dc4156, 3fec391) - Application-level drop-order fix in run_scan_inner_with_metadata: all sender clones dropped before writer.join() (GRDB.swift #739 pattern). 7 previously-deadlocking desktop tests now pass in 335ms. (4bc301b, 4680561) Follow-up trackers filed: - #131 updated with resolution (SQLite lib bug + app-level drop-order). - #132 Dependabot setup for cargo + bun + actions. - #133 remove [patch.crates-io] for refinery once PR #425 ships. Branch stays open for Batch F onwards. [skip ci]
2 parents cf465f2 + 4680561 commit 9462bab

105 files changed

Lines changed: 12002 additions & 3448 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.config/nextest.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# cargo-nextest configuration
2+
# https://nexte.st/docs/configuration/
3+
4+
[profile.default]
5+
# Flag a test as "slow" after 40s and terminate after two slow periods
6+
# (80s total per test). Rationale: the slowest clean test in any crate
7+
# is ~14s (fts proptest in perima-db). Past 40s is a sign of lock
8+
# contention or deadlock, not legitimate compute. nextest 0.9.133 lacks
9+
# a CLI `--slow-timeout` flag, but honors this config key — keeps
10+
# `timeout NNN cargo nextest ...` wrappers from killing the whole suite
11+
# on a single hang.
12+
slow-timeout = { period = "40s", terminate-after = 2 }

.github/workflows/ci.yml

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,17 @@ jobs:
2929

3030
- uses: taiki-e/install-action@just
3131

32-
# WHY: `just ci` runs `cargo deny check` and `typos`. Both are
33-
# external binaries — neither ships with the Rust toolchain. Using
34-
# taiki-e/install-action fetches prebuilt binaries (seconds) rather
35-
# than `cargo install` (minutes), which matters on the 3-OS matrix.
32+
# WHY: `just ci` runs `cargo deny check`, `typos`, and
33+
# `cargo nextest run`. All three are external binaries — none ship
34+
# with the Rust toolchain. Using taiki-e/install-action fetches
35+
# prebuilt binaries (seconds) rather than `cargo install` (minutes),
36+
# which matters on the 3-OS matrix. Nextest swap landed in commit
37+
# adopting `cargo nextest run` workspace-wide (closes #121) — the
38+
# SQLite lock-order inversion that `cargo test` reproduces ~20% is
39+
# documented in CLAUDE.md + GH #131.
3640
- uses: taiki-e/install-action@cargo-deny
3741
- uses: taiki-e/install-action@typos
42+
- uses: taiki-e/install-action@cargo-nextest
3843

3944
- uses: actions/setup-node@v4
4045
with:
@@ -61,3 +66,36 @@ jobs:
6166
- name: Run just ci
6267
shell: bash
6368
run: just ci
69+
70+
bindings-drift:
71+
name: bindings.ts drift check
72+
runs-on: ubuntu-latest
73+
needs: build
74+
steps:
75+
- uses: actions/checkout@v4
76+
77+
- uses: dtolnay/rust-toolchain@stable
78+
79+
- uses: Swatinem/rust-cache@v2
80+
81+
- uses: taiki-e/install-action@just
82+
83+
# WHY: same Tauri Linux deps as the matrix job's Linux branch —
84+
# tauri-build links against GTK3 + WebKit2GTK on Linux.
85+
- name: Install Tauri Linux deps
86+
run: |
87+
sudo apt-get update -q
88+
sudo apt-get install -yq \
89+
libgtk-3-dev \
90+
libwebkit2gtk-4.1-dev \
91+
libappindicator3-dev \
92+
librsvg2-dev \
93+
patchelf
94+
95+
# WHY: regenerate bindings.ts via the specta-export feature and
96+
# fail the job if `git diff` shows the committed copy is stale.
97+
# Catches every Rust-side change to a #[tauri::command] signature,
98+
# a specta-derived type, or a CoreError variant that wasn't paired
99+
# with a bindings.ts commit.
100+
- name: Bindings drift check
101+
run: just bindings

CLAUDE.md

Lines changed: 171 additions & 15 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)