uwiger/jobs
58.1
Adequate · 23 September 2026
3.7k
lines of production code
Erlang
primary language
5
measurements over time
What this system is
This system is a job scheduling and regulation framework for Erlang, designed to manage task execution with features for rate limiting, sampling, and queue management. It supports both active job scheduling and passive queue operations, allowing users to directly enqueue and dequeue items. The codebase includes comprehensive documentation, test coverage for queue behaviors, and examples for monitoring CPU-based feedback.
Features
Add CPU-based feedback example with performance logging
Added new example files (performer.erl, performance\_logger.erl, jobs\_cpu.gnu) that demonstrate CPU-based feedback on a single queue. The example includes a performance logger that records job metrics (enqueued, done, queue frequency) and a gnuplot script to visualize the data, providing a complete workflow for monitoring and analyzing CPU usage in the system.
examples · medium confidence
Add passive queue support with enqueue/dequeue API
The JOBS framework now supports passive queues, allowing users to directly insert and extract items using the new \jobs:enqueue/2\ and \jobs:dequeue/2\ functions. This change introduces the \jobs\_queue\_list\ module to handle passive queue semantics and adds corresponding exports to the main \jobs\ module, enabling direct interaction with queue contents rather than just job requests.
src · high confidence
Added jobs.hrl header file with type and record definitions
A new header file, include/jobs.hrl, was added to the project. This file defines the core data structures and types for the jobs library, including records for rate and counter-based regulation (rr, cr, grp), queue configurations (queue, sampler), and producer states (stateless, stateful). It also exports opaque types for counter and reg\_obj, establishing the public API surface for interacting with the job scheduling and regulation system.
include · high confidence
Behavioural changes
Migrate build system to Rebar3 and add static analysis
The project now uses Rebar3 as the primary build tool, replacing the previous setup. This includes a new Makefile that supports compilation, testing, documentation generation, cross-reference checking, and Dialyzer analysis. Dependencies for build tools (parse\_trans, setup, edown, meck) are explicitly managed in rebar.config, and a rebar.lock file is added to ensure reproducible builds.
(repo-wide) · high confidence
Updated JOBS documentation with expanded examples and configuration details
The documentation in the \doc/\ directory has been significantly expanded and updated. The \overview.edoc\ file now includes detailed sections on job scheduling, queueing, and sampling/dampening features, along with comprehensive Erlang code examples for regulating HTTP requests, using explicit ask/done patterns, and demonstrating producer and passive queue behaviors. Additionally, generated Markdown documentation for modules such as \jobs\, \jobs\_app\, \jobs\_queue\, and various samplers has been regenerated to reflect the current API, including new functions like \modify\_queue/2\ and \ask\_queue/2\, and updated copyright information.
doc · high confidence
Test coverage
Add property for observing the current queue
Added a new property for observing the current queue, implemented via the new \jobs\_eqc\_queue\ and \jobs\_queue\_model\ test modules. These modules provide a model for generating random queues and verifying queue behavior, including FIFO and LIFO styles, timed-out jobs, and observation of queue state.
test · 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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 52 → 58 (+6.2)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 91 → 93 (+1.5)
- Architecture 100 → 100 (+0.0)
- Maturity 35 → 48 (+12.3)
- Readiness 57 → 59 (+1.9)
- Security 61 → 60 (-1.4)
Resolved (7)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- No exposed public API
- Test reliability not included
- TooManyMethods: jobs_server (src/jobs_server.erl)
- complexity unreadable for .erl, .hrl — churn × complexity hotspots could not be measured
- dormant codebase — no living knowledge left to concentrate
New (14)
- Coverage not measured — no coverage collector is wired up
- Documentation: no architecture or design documentation (jobs.md)
- Documentation: no installation or build instructions (jobs_app.md)
- Documentation: no usage examples (jobs_app.md)
- Duplicated block (16–17 lines × 2) (src/jobs_server.erl)
- High: security finding (details withheld)
- Medium: security finding (details withheld)
- Outdated: parse_trans
- Outdated: setup
- TodoComment (examples/performance_logger.erl)
- TodoComment (examples/performer.erl)
- TodoComment (src/jobs_server.erl)
- jobs_server.i_handle_call (cognitive 50) (src/jobs_server.erl)
- jobs_server.i_handle_call (cyclomatic 61) (src/jobs_server.erl)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
uwiger/jobs 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 23 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 867ac4d33f50ce2628f68625568ebc25c5e38d97 — 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-955b9cee9818.