desktop/src-tauri/crates/core/src/adapters/crush/common.rs
Comment 1, line 1
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:1
//! Crush-specific helpers under the independent adapter-directory convention.Comment 2, line 2
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:2
//! Read-only database access copied from adapters/goose/common.rs, following hermes/kilo.Comment 3, line 3
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:3
//!Comment 4, line 4
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:4
//! Fixed source: charmbracelet/crush 1f3827bcd2d20f38076b2d46123683271e6ed9ba.Comment 5, line 5
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:5
//! - sessions.prompt_tokens/completion_tokens snapshot the last nonzero step's contextComment 6, line 6
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:6
//! size (agent.go:2060-2086 SET overwrites; reset after summary; title adds a request).Comment 7, line 7
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:7
//! They are not cumulative usage and are excluded from token statistics to avoid inflation.Comment 8, line 8
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:8
//! - sessions.cost accumulates (agent.go:2065); finished children roll into their parentComment 9, line 9
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:9
//! (coordinator.go:1742-1758). Read only roots with parent_session_id IS NULLComment 10, line 10
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:10
//! to avoid double-counting, matching official stats.sql.Comment 11, line 11
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:11
//! - messages has no token columns; only assistant messages carry model/provider.Comment 12, line 13
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:13
// Read-only database helpers copied from adapters/hermes/common.rs; modules remain independent.Comment 13, line 21
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:21
/// Read-only source access; busy-like probe failures switch to a staging snapshot.Comment 14, line 45
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:45
/// SQLite busy/locked/CANTOPEN errors prevent a successful consistency probe.Comment 15, line 55
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:55
/// Staging page/time/size limits and cleanup follow architecture.md.Comment 16, line 73
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:73
/// Open read-only; short busy_timeout bounds probe waits before a staging fallback.Comment 17, line 86
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:86
/// Online Backup creates a consistent system-temporary snapshot without writing the source.Comment 18, line 117
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:117
// More means pages were copied; count those pages toward the size limit.Comment 19, line 128
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:128
// Busy/Locked or other non-exhaustive results retry without progress, within the timeout.Comment 20, line 129
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:129
// 2026-09-30 fix: retries previously added pages and raced the timeout, causingComment 21, line 130
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:130
// platform-specific false size-limit failures (Linux CI hit the page cap before timeout).Comment 22, line 149
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:149
/// Probe read-only sessions.db; busy-like probe failures use staging, later failures propagate.Comment 23, line 150
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:150
/// Never write the source database.Comment 24, line 177
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:177
/// Short schema query probes access, following kilo's rule.Comment 25, line 182
desktop/src-tauri/crates/core/src/adapters/crush/common.rs:182
/// Required sessions columns for cost-only records; detection requires all columns.