Skip to content

Design decisions

These records explain why Sevak is built the way it is. Each one is short: the situation that forced a choice, what was chosen, what it costs, and whether it still stands. They describe decisions that are visible in the code today; the code paths named in each are the place to check that a record is still true.

New decisions are added as the next number. A decision that is replaced is not deleted: its status changes to Superseded by ADR-NNNN and the new record explains the change.

ADR Decision Status
0001 Local-first, no telemetry Accepted
0002 Tauri shell, Rust core, plugin architecture Accepted
0003 A closed Action vocabulary; the platform provider is the only OS layer Accepted
0004 Keyword and global routing, and how results are ranked Accepted
0005 Approval before a script plugin or workflow runs Accepted
0006 Alfred Script Filter compatibility Accepted
0007 Automated release on every merge to main Accepted, with known risks
0008 Text-only configuration in TOML with comment-preserving saves Accepted
0009 Taking over Super+Space differently on each OS Accepted
0010 Network features only on the user's action or opt-in Accepted
0011 Snippet expansion through low-level input hooks, and no Wayland support Accepted
0012 Native extensions reuse the script plugin trust model; no sandbox, honestly labelled Accepted

See also the threat model and How Sevak works.