Skip to content
CAI
Software that uses CAICheck a score

chaps-io/gush

65.3

Adequate · 20 September 2026

1.1k

lines of production code

Ruby

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Gush is a Ruby-based workflow engine that manages job execution and dependency graphs using ActiveJob for backend abstraction and Redis for state persistence. It provides a command-line interface for defining, monitoring, and controlling workflows, replacing its previous Sidekiq and Goliath-based architecture. The system supports complex job chaining, retry logic, and payload passing, with a focus on CLI-driven management rather than a web interface.

Features

New CLI overview command displays detailed workflow and job status

The CLI now includes a dedicated overview feature that presents a structured table of workflow details, including ID, name, job counts (failed, succeeded, enqueued, running, remaining), and the start time. It provides a clear status indicator (ready, running, stopped, finished, or failed) and lists individual jobs with their current state, helping users monitor workflow progress directly from the command line.

lib/gush/cli · high confidence

Removals

Removal of legacy Gush server configuration

The legacy server configuration file (gush\_server.rb) has been removed. This file previously defined the template engine (Slim), Redis connection settings, and an EventMachine-based pub/sub listener for job status updates. Users relying on this specific server-side configuration setup will need to migrate to the current architecture.

lib/gush/config · high confidence

Removal of legacy WebSocket-based frontend assets

The server no longer serves the legacy JavaScript files (\controls.js\ and \jquery.min.js\) that powered the previous WebSocket-based web interface. This change removes the client-side code responsible for connecting to \ws://localhost:9000/ws\ and rendering workflow/job lists, indicating a shift away from the in-browser real-time UI towards the new CLI and Sidekiq-based workflow management.

lib/gush/server · high confidence

Behavioural changes

Adopts ActiveJob for job scheduling and execution

Gush now uses ActiveJob for scheduling and executing jobs instead of the previous Sidekiq-based implementation, providing a more standard and abstracted interface for job definitions. The configuration file has been renamed from Gushfile.rb to Gushfile, and the README has been updated to reflect the new API, installation steps, and examples using the ActiveJob integration.

(repo-wide) · high confidence

CLI commands now handled by Gush::CLI with Bundler integration

The bin/gush entry point has been refactored to delegate all command-line logic to the Gush::CLI class, replacing the previous inline handling of subcommands like 'server', 'create', 'start', 'list', 'redis', and 'worker'. This change introduces Bundler for dependency management and adds specific error handling for workflow-related issues, such as missing workflows or dependency cycles, providing clearer feedback to users when these errors occur.

bin · high confidence

Gush 5.0: Migration to ActiveJob and redesigned workflow execution model

Gush has been upgraded to version 5.0.0, replacing the Sidekiq backend with ActiveJob to provide a more flexible job execution abstraction. The internal data model has been significantly restructured: jobs and workflows no longer inherit from Tree nodes, instead using explicit \incoming\ and \outgoing\ arrays to manage dependencies. State tracking has shifted from boolean flags to timestamp-based attributes (e.g., \started\_at\, \finished\_at\), and the CLI now uses Thor for command handling. Additionally, the library introduces a migration system for storage schema updates and removes the legacy Goliath server and ConcurrentWorkflow classes.

lib/gush · high confidence

Introduce workflow persistence migration and restructure core library loading

This change adds a database migration (version 1) that persists workflow data to Redis, ensuring workflows survive restarts or clears, and restructures the main library entry point to explicitly load new components like the JSON handler, CLI, graph logic, client, and configuration, while removing the previous inline tree-building and workflow-starting logic that is now handled by the new client and migration infrastructure.

lib · high confidence

Test coverage

Added comprehensive test suite for Gush core components; Added test infrastructure and specs for Gush core; Integration tests for workflow execution, retry logic, and payload passing; Removed obsolete specs for Gush::Job and Gush::Workflow.

Dependencies

Migrate from Sidekiq to ActiveJob and update dependencies

Gush now uses ActiveJob (\>= 7.0.0, \< 9) instead of Sidekiq for job execution, allowing it to work with any ActiveJob adapter. The gem has updated its dependency list to include concurrent-ruby, multi\_json, redis-mutex, hiredis, graphviz, terminal-table, paint, thor, and launchy, while removing older dependencies like rubytree and sidekiq. Development dependencies have also been updated to include rubocop and its related gems for code style consistency.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 65.

Lenses

  • Code Health 98
  • Architecture 69
  • Maturity 56
  • Readiness 65
  • Security 99

Changes since last survey

  • 300 commits — 263 feature/other, 37 fixes

By area

  • lib/gush — 119 commits
  • (root) — 114 commits
  • (repo) — 30 commits
  • .github/workflows — 13 commits
  • spec/lib — 11 commits
  • lib/gush.rb — 4 commits
  • bin/gush — 2 commits
  • spec/gush — 2 commits
  • spec/spec_helper.rb — 2 commits
  • spec/features — 1 commit
  • spec/gush_spec.rb — 1 commit
  • spec/redis.conf — 1 commit

Notable commits

  • fix: Added missing require to fix gush clear
  • fix: Bugfix for issues with gush-control
  • fix: Bump Ruby Graphviz gem to fix warnings in Ruby 2.2
  • fix: Cosmetic fixes.
  • fix: Fix Redis URL
  • fix: Fix bug when retried jobs didn't correctly reset their failed flag when ran again (fixes #61)
  • fix: Fix bug when using workflow with parameters This closes #29
  • fix: Fix bug which didn't mark workflows as failed when one of the jobs failed. #19
  • fix: Fix bug with double rendering of nodes in viz command and use UUIDs of jobs.
  • fix: Fix bug.
  • fix: Fix build badge and mention Chaps
  • fix: Fix critical bug which enqueued too many jobs that weren't ready to start yet.
  • fix: Fix for ruby2.0 which cannot load Pathname from json
  • fix: Fix graph rendering and update the graph png in README
  • fix: Fix graph specs.
  • fix: Fix incorrenct number of arguments
  • fix: Fix invalid YAML syntax.
  • fix: Fix misinformation
  • fix: Fix repo name.
  • fix: Fix rubygems warnings and relax gem dependencies.
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

chaps-io/gush was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit d5180baf21bde13bb1c2c74d7d25e3d41be514ea — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.