Benches stay on the scheduled workflow (not per-PR) — confirmed acceptable. This issue tracks the ongoing bench hygiene that comes with that.
Current state
.github/workflows/scheduled-deep-checks.yml runs, on schedule:
cargo bench --no-run — compiles all bench targets (catches bench bit-rot).
cargo bench --bench interactive_slo — the interactive-SLO bench.
- 26 bench targets exist under
src-tauri/benches/ (agenda, backlink_query, commands, history, pagination, property, tag_query, undo_redo, loro_vs_sql_reads, interactive_slo, …).
- No per-PR bench gate (deliberate) and no automated SLO-regression tracking yet.
To do (ongoing)
- Track SLOs over time. Capture the
interactive_slo results from each scheduled run (step-summary or an artifact) and watch for regressions — flag when a tracked operation crosses its budget. (Measure-not-imagine: use observed values, not invented budgets.)
- Coverage review — which commands need benches? Audit the command surface (the
agaric_commands! set) against the existing bench targets and identify hot/user-facing commands with no bench (e.g. anything on the editor/block hot path that isn't covered by commands_bench/interactive_slo). Add benches where a perf regression would be user-visible.
- Which existing benches need improvement? Review the 26 targets for: stale/unrepresentative workloads, missing realistic data sizes, benches that no longer compile-only-but-never-run meaningfully, and duplicate/overlapping coverage. Tighten or retire as needed.
- Keep the scheduled compile gate green (bench bit-rot is the cheapest thing to catch).
Related: #113 (bench-gated DB perf items — uses benches to gate refactors; distinct from this hygiene issue).
Benches stay on the scheduled workflow (not per-PR) — confirmed acceptable. This issue tracks the ongoing bench hygiene that comes with that.
Current state
.github/workflows/scheduled-deep-checks.ymlruns, on schedule:cargo bench --no-run— compiles all bench targets (catches bench bit-rot).cargo bench --bench interactive_slo— the interactive-SLO bench.src-tauri/benches/(agenda, backlink_query, commands, history, pagination, property, tag_query, undo_redo, loro_vs_sql_reads, interactive_slo, …).To do (ongoing)
interactive_sloresults from each scheduled run (step-summary or an artifact) and watch for regressions — flag when a tracked operation crosses its budget. (Measure-not-imagine: use observed values, not invented budgets.)agaric_commands!set) against the existing bench targets and identify hot/user-facing commands with no bench (e.g. anything on the editor/block hot path that isn't covered bycommands_bench/interactive_slo). Add benches where a perf regression would be user-visible.Related: #113 (bench-gated DB perf items — uses benches to gate refactors; distinct from this hygiene issue).