From 421ad5f7750c9d47e0b002678db976b242354002 Mon Sep 17 00:00:00 2001 From: Chuck Smith Date: Tue, 26 May 2026 20:11:43 -0400 Subject: [PATCH] chore: add post-v1.0 roadmap milestones from solid_queue_dashboard parity Adds v1.1 Error Intelligence, v1.2 UX Polish, v1.3 Alerting Depth, v1.4 Audit & Compliance, and v2.0 Extensibility milestones adapted from solid_queue_dashboard's roadmap where relevant to solid_stack_web. Excludes configurable display timezone (already handled via JS timestamp controller). Co-Authored-By: Claude Sonnet 4.6 --- ROADMAP.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/ROADMAP.md b/ROADMAP.md index b952fb5..c8322c1 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -29,6 +29,53 @@ The path to v1.0.0 is staged: first achieve feature parity with `solid_queue_das --- +## v1.1 — Error Intelligence + +> _Surface patterns in failures, not just individual failed jobs._ + +- **Error frequency report** — group all failed jobs by error class + message prefix; show count and a sample backtrace; makes "ArgumentError (x212), TimeoutError (x88)" visible at a glance without clicking into each job +- **Failed job trend chart** — "Failures — Last 12 Hours" sparkline on the queue dashboard overview card; makes failure spikes visible before you click into the failed jobs list +- **P99 + standard deviation in performance stats** — extend the stats table with a 99th-percentile and std-dev column; high std dev signals inconsistent jobs worth investigating + +--- + +## v1.2 — UX Polish + +> _Quality-of-life improvements for teams using the dashboard daily._ + +- **Sortable columns on jobs, failed jobs, and history** — server-side `?sort=&dir=` params matching the pattern already used for cache entries and stats +- **Sticky filter preferences** — persist last-used status, period, and queue filter to `localStorage` so filter state survives page reloads + +--- + +## v1.3 — Alerting Depth + +> _More signals, fewer blind spots._ + +- **Slow job webhook alert** — fire when the slow-job count crosses a configurable threshold; pairs with the existing `slow_job_threshold` config — adds the alerting half +- **Process stale webhook alert** — fire when a worker's `last_heartbeat_at` expires; a worker going silent means jobs stop processing without any visible signal +- **Job wait time column** — show time from `enqueued_at` to `created_at` on claimed executions; a direct measure of queue SLA (how long jobs waited before a worker picked them up) + +--- + +## v1.4 — Audit & Compliance + +> _Requires an opt-in migration — kept separate from the no-migration-required releases above._ + +- **Admin audit log** — record who retried, discarded, or paused what and when; needs a `solid_stack_web_audit_events` table via an engine-provided migration (`rails solid_stack_web:install:migrations`); identity comes from the `authenticate` block; CSV export included + +--- + +## v2.0 — Extensibility + +> _Breaking changes or large architectural additions._ + +- **i18n / locale support** — wrap all user-visible strings in `I18n.t`; makes the gem usable for non-English apps +- **Custom dashboard cards** — registration hook so host apps can inject their own stat cards alongside the built-in queue, cache, and cable cards +- **Custom nav links** — `config.nav_links = [{ label: "Admin", url: "/admin" }]` to integrate the dashboard into the host app's navigation + +--- + ## Out of Scope (for now) - **Background job execution** — this is a monitoring engine, not a worker runner; it will never enqueue or execute jobs itself