pub const BUF_CAPACITY: usize = 64 * 1024;
pub const STDIN_INITIAL_CAPACITY: usize = 4096;
pub const MMAP_THRESHOLD: u64 = 1_048_576;
pub const DEFAULT_MAX_FILESIZE: u64 = 1_073_741_824;
pub const TEMPFILE_PREFIX: &str = ".atomwrite-";
pub const TEMPFILE_SUFFIX: &str = ".tmp";
pub const SCRATCH_DIR_REL: &str = ".atomwrite/scratch";
pub const CANONICAL_SUBCOMMAND_COUNT: usize = 45;
pub const DEFAULT_BACKUP_RETENTION: u8 = 5;
pub const DIR_PERMISSIONS: u32 = 0o755;
pub const TEMPFILE_PERMISSIONS: u32 = 0o600;
pub const BINARY_DETECT_SIZE: usize = 8192;
pub const LINE_ENDING_DETECT_SIZE: usize = 8192;
pub const EXIT_BROKEN_PIPE: i32 = 141;
pub const EXIT_SUCCESS: i32 = 0;
pub const EXIT_TRANSACTION_ROLLBACK_FAILED: i32 = 80;
pub const EXIT_CHECKSUM_VERIFY_FAILED: i32 = 81;
pub const MAX_NDJSON_LINE_SIZE: usize = 256 * 1024;
pub const MAX_JSON_DEPTH: usize = 128;
const _: () = assert!(BUF_CAPACITY >= 4096);
const _: () = assert!(STDIN_INITIAL_CAPACITY >= 1024);
const _: () = assert!(MMAP_THRESHOLD as usize >= BUF_CAPACITY);
const _: () = assert!(DEFAULT_MAX_FILESIZE >= MMAP_THRESHOLD);
const _: () = assert!(BINARY_DETECT_SIZE == LINE_ENDING_DETECT_SIZE);
const _: () = assert!(BINARY_DETECT_SIZE >= 1024);
const _: () = assert!(MAX_NDJSON_LINE_SIZE >= 4096);
const _: () = assert!(MAX_JSON_DEPTH >= 16);
const _: () = assert!(DEFAULT_BACKUP_RETENTION >= 1);
const _: () = assert!(DIR_PERMISSIONS & 0o111 != 0); const _: () = assert!(TEMPFILE_PERMISSIONS & 0o077 == 0); const _: () = assert!(EXIT_SUCCESS == 0);
const _: () = assert!(EXIT_BROKEN_PIPE == 128 + 13);
pub const FUZZY_MAX_PATTERN_BYTES: usize = 64 * 1024;
pub const FUZZY_MAX_LEVENSHTEIN_CHARS: usize = 8192;
pub const FUZZY_MAX_WINDOWS: usize = 4096;
pub const FUZZY_DEFAULT_MAX_REPLACEMENTS: u64 = 1;
pub const FUZZY_HARD_MAX_REPLACEMENTS: u64 = 10_000;
pub const FUZZY_MAX_BUFFER_GROWTH_FACTOR: usize = 4;
pub const FUZZY_MAX_BUFFER_GROWTH_BYTES: usize = 16 * 1024 * 1024;
const _: () = assert!(FUZZY_MAX_PATTERN_BYTES >= 1024);
const _: () = assert!(FUZZY_MAX_LEVENSHTEIN_CHARS >= 64);
const _: () = assert!(FUZZY_MAX_WINDOWS >= 16);
const _: () = assert!(FUZZY_DEFAULT_MAX_REPLACEMENTS >= 1);
const _: () = assert!(FUZZY_HARD_MAX_REPLACEMENTS >= FUZZY_DEFAULT_MAX_REPLACEMENTS);
const _: () = assert!(FUZZY_MAX_BUFFER_GROWTH_FACTOR >= 2);
pub const WAL_KEEP_SECS_DEFAULT: u64 = 0;
pub const WAL_MAX_COUNT_DEFAULT: u64 = 100;
pub const WAL_RATE_LIMIT_DEFAULT: u64 = 10;
pub const WAL_ARCHIVE_DAYS_DEFAULT: u64 = 7;
pub const FUZZY_THRESHOLD_AUTO: f64 = 0.70;
pub const FUZZY_THRESHOLD_AGGRESSIVE: f64 = 0.50;
pub const FUZZY_THRESHOLD_CONTEXT: f64 = 0.80;
pub const FUZZY_THRESHOLD_JW: f64 = 0.85;
pub const FUZZY_DUAL_GATE_NEAR_EXACT: f64 = 0.99;
pub const FUZZY_BEST_CANDIDATE_MIN: f64 = 0.50;
pub const FUZZY_BEST_CANDIDATE_TEXT_MAX: usize = 500;
pub const FUZZY_MAX_CANDIDATES: usize = 3;
pub const FUZZY_ADAPTIVE_SHORT_PATTERN_CHARS: usize = 8;
pub const FUZZY_ADAPTIVE_SHORT_BOOST: f64 = 0.05;
pub const FUZZY_CONTEXT_SOFT_FLOOR_DELTA: f64 = 0.05;
pub const ENSURE_TRAILING_NEWLINE_JSON: bool = true;
pub const CONFIRM_LARGE_FILE_BYTES: u64 = 100 * 1024;
pub const SHRINK_BLOCK_PERCENT: u8 = 50;
pub const AUTO_ROTATE_MAX_AGE_SECS: u64 = 24 * 3600;
pub const DEFAULT_TIMEOUT_SECS: u64 = 120;
pub const DEFAULT_RISK_THRESHOLD_OFF: u8 = 255;
pub const DEFAULT_RISK_THRESHOLD_ON: u8 = 50;
const _: () = assert!(CONFIRM_LARGE_FILE_BYTES >= 1024);
const _: () = assert!(SHRINK_BLOCK_PERCENT > 0 && SHRINK_BLOCK_PERCENT <= 99);
const _: () = assert!(AUTO_ROTATE_MAX_AGE_SECS >= 60);
const _: () = assert!(DEFAULT_TIMEOUT_SECS > 0);
const _: () = assert!(DEFAULT_RISK_THRESHOLD_ON > 0 && DEFAULT_RISK_THRESHOLD_ON < 100);
pub const DEFAULT_SEARCH_MAX_FILESIZE_BYTES: u64 = 10 * 1024 * 1024;
pub const DEFAULT_SEARCH_MAX_COLUMNS: usize = 500;
pub const DEFAULT_PROGRESS_EVERY_FILES: u64 = 50;
pub const DEFAULT_WAL_HEAL_THRESHOLD_SECS: u64 = 3600;
pub const DEFAULT_WAL_HEAL_MAX_DURATION_MS: u64 = 100;
pub const DEFAULT_SEMANTIC_SEARCH_TOP: usize = 20;
pub const DEFAULT_SEMANTIC_SEARCH_MIN_SCORE: f64 = 0.05;
pub const DEFAULT_SPARSE_MAX_ENTRIES: usize = 100;
pub const DEFAULT_SPARSE_MAX_BYTES: usize = 1_048_576;
pub const DEFAULT_SPARSE_OUTLINE_DEPTH: usize = 50;
pub const DEFAULT_SPARSE_MAX_SYMBOLS: usize = 20;
pub const DEFAULT_WATCH_DEBOUNCE_MS: u64 = 200;
pub const WATCH_DEBOUNCE_FLOOR_MS: u64 = 50;
pub const DEFAULT_WATCH_IDLE_EXIT_MS: u64 = 500;
pub const WRITE_CONTENT_RISK_PATTERNS: &[&str] = &[
"rm -rf /",
"rm -rf /*",
"rm -fr /",
"mkfs.",
"dd if=",
":(){ :|:& };:",
"curl ",
"| sh",
"|sh",
"| bash",
"|bash",
"wget ",
"chmod -R 777 /",
"chown -R",
];
pub const DEFAULT_QUERY_TOP: usize = 10;
pub const DEFAULT_DIFF_CONTEXT_LINES: usize = 3;
pub const DEFAULT_LIST_LIMIT: usize = 100;
pub const WAL_L1_LARGE_FILE_BYTES: u64 = 1024 * 1024;
pub const WAL_SMALL_RECORD_BYTES: u64 = 4096;
pub const WAL_AUTO_HEAL_COUNT_THRESHOLD: u64 = WAL_MAX_COUNT_DEFAULT;
pub const WAL_AUTO_HEAL_AGE_SECS: u64 = WAL_ARCHIVE_DAYS_DEFAULT * 86_400;
pub const WAL_STATS_TOP_DIRS: usize = 10;
pub const BATCH_PROGRESS_DIVISOR: u64 = 20;
pub const BATCH_PROGRESS_MIN: u64 = 1;
pub const BATCH_PROGRESS_MAX: u64 = 50;
pub const FUZZY_MINI_DIFF_MAX_CHARS: usize = 800;
pub const PERSIST_RETRY_DELAYS_MS: &[u64] = &[100, 200, 400];
pub const DIFF_SIMILARITY_TIMEOUT_MS: u64 = 500;
pub const LOCK_POLL_FAST_MS: u64 = 10;
pub const LOCK_POLL_SLOW_MS: u64 = 50;
pub const LOCK_POLL_FAST_ATTEMPTS: u32 = 20;
pub const BACKUP_EXCLUDE_GLOBS: &[&str] = &["*.bak.*", "**/*.bak.*"];
pub const EVENT_CHANNEL_CAP: usize = 1024;
pub const RAM_PER_TASK_BYTES: u64 = 16 * 1024 * 1024;
const _: () = assert!(DEFAULT_SEARCH_MAX_FILESIZE_BYTES >= 1024);
const _: () = assert!(DEFAULT_SEARCH_MAX_COLUMNS >= 16);
const _: () = assert!(DEFAULT_BACKUP_RETENTION >= 1);
const _: () = assert!(DEFAULT_WAL_HEAL_THRESHOLD_SECS >= 1);
const _: () = assert!(DEFAULT_WAL_HEAL_MAX_DURATION_MS >= 1);
const _: () = assert!(WAL_L1_LARGE_FILE_BYTES >= 4096);
const _: () = assert!(WAL_SMALL_RECORD_BYTES >= 64);
const _: () = assert!(WAL_AUTO_HEAL_COUNT_THRESHOLD >= 1);
const _: () = assert!(WAL_AUTO_HEAL_AGE_SECS >= 86_400);
const _: () = assert!(BATCH_PROGRESS_DIVISOR >= 1);
const _: () = assert!(BATCH_PROGRESS_MAX >= BATCH_PROGRESS_MIN);
const _: () = assert!(WATCH_DEBOUNCE_FLOOR_MS >= 1);
const _: () = assert!(FUZZY_MINI_DIFF_MAX_CHARS >= 64);
const _: () = assert!(!PERSIST_RETRY_DELAYS_MS.is_empty());
const _: () = assert!(DIFF_SIMILARITY_TIMEOUT_MS >= 1);
const _: () = assert!(LOCK_POLL_FAST_MS >= 1);
const _: () = assert!(LOCK_POLL_SLOW_MS >= LOCK_POLL_FAST_MS);
const _: () = assert!(LOCK_POLL_FAST_ATTEMPTS >= 1);
const _: () = assert!(!BACKUP_EXCLUDE_GLOBS.is_empty());
const _: () = assert!(EVENT_CHANNEL_CAP >= 16);
const _: () = assert!(RAM_PER_TASK_BYTES >= 1024 * 1024);