Skip to content
CAI
Software that uses CAICheck a score

riker-rs/riker

64.1

Adequate · 21 September 2026

4.4k

lines of production code

Rust

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Rust-based actor framework that provides a structured environment for building concurrent applications using the actor model. It features a procedural macro for automatic message routing and a simplified, generic message-passing protocol that supports hierarchical actor trees, pub/sub channels, and various supervision strategies. The framework also includes a modernized system kernel with structured logging, scheduled task management, and dead-letter handling.

Features

Added new example programs for the Riker actor framework

The examples directory now includes ten new Rust source files that demonstrate various actor patterns and features of the Riker library. These include basic actor creation, message passing, hierarchical actor trees, and specific supervision strategies such as restart, escalate, and stop. Additional examples showcase the use of channels for pub/sub messaging, system and dead-letter event subscriptions, and actor selection by path.

examples · high confidence

Introduce the \`\#\[actor\]\` macro for automatic message enum generation

The \riker-macros\ crate now provides a new \\#\[actor\]\ procedural macro that automatically generates a message enum and associated \Receive\ trait implementations for actor types. This allows developers to define message types and have the macro handle the boilerplate for routing messages to the correct handler, supporting generic actors through proper generic preservation.

riker-macros/src · high confidence

Behavioural changes

Refactor actor reference and path types to use Arc\<str\> and new traits

The actor module has been refactored to improve memory efficiency and modernize the API. The \ActorRef\ struct has been replaced by a new \ActorReference\ trait and a \BasicActorRef\ type, shifting the public interface to use \Arc\<str\>\ for actor paths and names to reduce memory allocations. Additionally, the \Actor\ trait and related components like \ActorCell\ and \ActorRef\ have been updated to align with this new structure, including changes to how actor selection and message passing are handled through the new \ActorReference\ trait.

src/actor · high confidence

Refactor actor system modules and upgrade scheduling API

The system module refactors the internal architecture by removing the legacy io, persist, and system initialization files, replacing them with a new logging subsystem using slog and a modernized timer API. The timer now uses DateTime\<Utc\> for scheduled times instead of SystemTime, and returns a specific ScheduleId (UUID) rather than a generic identifier. Additionally, the logger implementation has been updated to use the slog crate for structured logging, and dead letter logging is now handled by a dedicated actor subscribing to the dead letter channel.

src/system · high confidence

Refactor kernel internals to use generic Envelope types

The kernel module has been refactored to replace the generic \Enqueued\<Msg\>\ wrapper with a specific \Envelope\<Msg\>\ type for message passing. This change simplifies the internal messaging protocol by removing the intermediate \Enqueued\ enum, allowing the \QueueWriter\ and \QueueReader\ to handle \Envelope\<Msg\>\ directly. Additionally, the \Provider\ struct now uses \DashMap\ for tracking actor paths, and the \KernelRef\ has been simplified to use a single \Sender\<KernelMsg\>\ channel, reducing the complexity of the actor system's core dispatching and lifecycle management.

src/kernel · medium confidence

Simplified message passing and validation rules

The framework now uses a generic \AnyMessage\ type for message passing, replacing the previous complex \ActorMsg\ and \Envelope\ structures with a simpler \Envelope\<T\>\ and \AnyMessage\ wrapper. Additionally, the \validate\path\ function has been updated to allow periods (\.\) and asterisks (\\\) in actor paths, and the \validate\_name\ regex now requires at least one character.

src · high confidence

Test coverage

Added integration tests for the actor macro with generics and nested types; Updated test suite with modern Rust patterns and expanded coverage.

Dependencies

Update Rust dependencies and add pre-commit hooks

The project updates several Rust dependencies to newer versions, including upgrading from futures-preview to futures 0.3.4, config from 0.8 to 0.10.1, rand from 0.4 to 0.7, regex from 0.2 to 1, and uuid from 0.6 to 0.8. Additionally, new dependencies such as pin-utils, slog, slog-stdlog, slog-scope, num\_cpus, and dashmap are added, while riker-macros is introduced as a local dependency. The package.json file is added to configure pre-commit hooks using Husky and lint-staged for development workflow enforcement.

(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

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 63 → 64 (+1.5)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 98 → 97 (-0.7)
  • Architecture 100 → 100 (+0.0)
  • Maturity 45 → 45 (+0.0)
  • Readiness 64 → 67 (+2.3)
  • Security 78 → 85 (+6.7)
  • Domain Modelling 100 → 100 (+0.0)
  • Event Sourcing 100 → 100 (+0.0)

Resolved (13)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Scanner failed to run — not a clean result
  • Test reliability not included
  • The 'Example' section shows only a stub for an actor trait impl (recv(..), msg: ...) with no working code and no explanation of how to run it. (README.md)
  • dormant codebase — no living knowledge left to concentrate

New (44)

  • Dependency hygiene PARTLY measured — Cargo dependencies read, no committed lock to grade for currency
  • Documentation: no contributor guidance (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 2) (src/kernel/provider.rs)
  • Duplicated block (10 lines × 4) (src/actor/actor_cell.rs)
  • Duplicated block (11 lines × 2) (src/actor/actor_cell.rs)
  • Duplicated block (12 lines × 2) (src/actor/actor_cell.rs)
  • Duplicated block (13 lines × 2) (src/actor/actor_cell.rs)
  • Duplicated block (13 lines × 2) (src/system.rs)
  • Duplicated block (30 lines × 2) (src/actor/selection.rs)
  • Duplicated block (7 lines × 2) (src/actor/actor_cell.rs)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 24 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

riker-rs/riker 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 21 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 ccd4e5f76f12e5d409c6dcf7e03401391e06b550 — 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-fa71c66cabd8.