paypal/squbs
57.6
Adequate · 27 September 2026
13k
lines of production code
Scala
primary language
4
measurements over time
What this system is
This release marks the comprehensive migration of the Squbs framework from Akka to Apache Pekko, updating the build infrastructure and all internal actor system references. Key features include new runtime monitoring capabilities via JMX beans for actors and HTTP clients, alongside a new ActorRegistry for dynamic lookups and a robust admin console for managing MBeans. The update also introduces stream processing utilities like circuit breakers and retry logic, while deprecating older orchestration patterns in favor of native Pekko streams. The release is supported by extensive test coverage for the new components and Java API wrappers.
Features
Add TriggerEvent enum for stream state control
A new Java enum, TriggerEvent, has been added to the squbs-unicomplex module. This enum defines two states, ENABLE and DISABLE, which likely provide a structured way to control the flow of the Unicomplex lifecycle state to the application, as suggested by the associated issue \#175.
squbs-unicomplex/src/main/java · medium confidence
Add deprecated orchestration and stream pattern components
Added new components to the squbs-pattern module, including the Orchestration module (OFuture, OPromise, Orchestrator, Aggregator) and stream patterns (BroadcastBuffer, PersistentBuffer). These components are marked as deprecated in favor of Pekko streams, and the Orchestration module specifically targets single-threaded environments with a custom Future implementation.
squbs-pattern · high confidence
Added admin console for managing MBeans via JSON API
The admin console has been migrated from the experimental squbs-admin-exp module into the main squbs-admin module, making the admin interface a standard part of the library. This change introduces the AdminSvc and MBeanUtil Scala classes, which expose a RESTful JSON API for listing and retrieving Java Management Extensions (JMX) MBeans. Users can now access a list of all registered MBeans and their attributes in JSON format, with support for excluding sensitive data or specific fields from the response.
squbs-admin/src/main/scala · medium confidence
Added stress testing capabilities to the testkit
The testkit now includes a new LoadActor and CPUStatsActor to support load and stress testing. The LoadActor simulates a specified number of transactions per second (TPS) over a warm-up and steady-state period, tracking metrics like steady-state TPS. The CPUStatsActor monitors and records CPU load statistics (average and standard deviation) during the test. This introduces a new harness for generating and measuring system load, addressing the need for 100% test coverage of the load testing harness as indicated by the commit messages.
squbs-testkit/src/main/scala/org/squbs/testkit/stress · high confidence
Initial project scaffolding and repository configuration
The repository was initialized with essential project configuration and metadata files, including .gitignore, version.sbt (set to 1.0.2-SNAPSHOT), and build options (compileOptions.sbt, jvmopts). The project's legal and community standards were established with the addition of the Apache 2.0 license (LICENSE.txt), author attribution (AUTHORS.txt), and contribution guidelines (CONTRIBUTING.md). Additionally, the project documentation structure was configured via mkdocs.yml, and the README was updated to include build status, license, and documentation badges.
(repo-wide) · high confidence
Introduce ActorMonitor for runtime actor inspection via JMX
The squbs-actormonitor module is added, providing a new way to inspect and monitor Akka/Pekko actors through JMX beans. This feature exposes actor metadata—including class name, route configuration, parent, children, dispatcher, and mailbox size—allowing users to debug and observe actor states at runtime. The implementation includes the core monitoring logic, configuration for limits (max actors, max children display), and test coverage to ensure stability.
squbs-actormonitor · high confidence
Introduce CustomTestKit and TestRoute for Pekko-based testing
The testkit module now provides new Scala test utilities for Pekko, including CustomTestKit for booting a full Unicomplex with configurable resources and ports, and TestRoute for creating Pekko HTTP routes from RouteDefinitions. The suite also adds helper traits like DebugTiming, PortGetter, and Timeouts to support testing workflows.
squbs-testkit/src/main/scala/org/squbs/testkit · high confidence
Introduce PerpetualStream and LifecycleEventSource for server-lifecycle-managed streams
Added new components in the squbs-unicomplex module to support perpetual streams that start and stop with the server. This includes the Scala API (PerpetualStream, PerpetualStreamBase) and Java API (AbstractPerpetualStream) for defining long-running Akka Streams that are automatically managed by the Unicomplex lifecycle. Additionally, a LifecycleEventSource is provided to allow other components to react to lifecycle state changes (Active/Stopping) via a reactive stream source.
squbs-unicomplex/src/main/scala/org/squbs/stream · high confidence
Introduce circuit breaker and metrics for the HTTP client
The HTTP client now includes built-in circuit breaker support, allowing users to configure failure thresholds, fallback strategies, and custom failure deciders to prevent cascading failures. Additionally, the client exposes JMX beans for monitoring configuration and runtime state, and provides time-bucketed metrics to track circuit breaker status (success, fallback, fail-fast, exception) for observability.
squbs-httpclient · high confidence
Introduced JMX monitoring and remote guardian for the deprecated ZkCluster
The ZkCluster module now exposes JMX beans (MembersInfo and PartitionsInfo) to monitor cluster membership and partition status, and adds a RemoteGuardian actor that terminates the JVM with exit code 99 upon receiving a remote quarantine event. These additions provide external observability and fault-handling capabilities for the deprecated Zookeeper-based cluster coordination.
squbs-zkcluster/src/main/scala/org/squbs/cluster · high confidence
Java API for testkit added
New Java-facing testkit classes were added to the \squbs-testkit\ module, including \CustomTestKit\, \DebugTimingTestKit\, \JUnitCustomRouteTestKit\, \JUnitRouteTest\, \RouteDefinitionTest\, \TestNGCustomRouteTestKit\, \TestNGRouteTest\, and \Timeouts\. These classes provide Java-friendly wrappers and test utilities for route testing and system management, enabling Java developers to use the testkit without dealing with Scala-specific APIs.
squbs-testkit/src/main/scala/org/squbs/testkit/japi · high confidence
New ActorRegistry component for dynamic actor lookup
The squbs-actorregistry module introduces a new ActorRegistry system that allows applications to dynamically look up and interact with actors by their request message type, response type, or name. The core \ActorLookup\ API supports both fire-and-forget (tell) and request-response (ask) patterns, returning Scala Futures or Java CompletionStages. This enables loose coupling between components by allowing senders to route messages to actors based on message contracts rather than hardcoded paths. The registry also exposes JMX beans for monitoring registered actors and their message types.
squbs-actorregistry · high confidence
New lifecycle hooks and graceful stop utilities
The squbs-unicomplex module introduces a new \ExtensionLifecycle\ trait that adds a \preCubesInit\ phase, allowing extensions to run before cubes are initialized. Additionally, a \GracefulStopHelper\ trait and \ActorWithGracefulStopHelper\ class are added to provide standardized, timeout-aware mechanisms for gracefully stopping actors and their dependencies.
squbs-unicomplex/src/main/scala/org/squbs/lifecycle · high confidence
New pipeline extension and request context API
The squbs-pipeline module now includes a new PipelineExtension that manages server and client pipeline flows, allowing users to configure and retrieve pipeline flows via configuration. Additionally, the RequestContext class has been updated to support adding and removing attributes, providing a way to attach arbitrary data to request contexts during processing.
squbs-pipeline/src/main · high confidence
New stream processing and configuration components
The library introduces several new stream processing components including BoundedOrdering for ordering streams within a sliding window, Deduplicate for filtering duplicate elements, and Retry for handling transient failures. Additionally, a new EnvironmentResolverRegistry extension allows for dynamic environment resolution, while MetricsExtension and MetricsFlow provide new ways to collect and expose metrics. The change also adds a Java API for manual marshalling and unmarshalling, and introduces a new configuration file for circuit breaker settings.
squbs-ext/src/main · high confidence
Behavioural changes
Add Squbs metadata configuration for the admin service
A new configuration file (META-INF/squbs-meta.conf) was added to define the metadata for the admin service, specifying the cube name (org.squbs.admin), version (0.7.1), and service details including the listener name (admin-listister) and web context (adm).
squbs-admin/src/main/resources · high confidence
Default configuration for listeners, thread pools, and timeouts
The squbs-unicomplex module now ships with a default reference.conf that defines the actor system name, service infrastructure timeouts, and a default HTTP listener configuration (port 8080, 0.0.0.0). It also introduces a configurable external configuration directory and file list, and sets up a blocking dispatcher with optimized thread pool parameters (core/max pool sizes of 2-24).
squbs-unicomplex/src/main/resources · medium confidence
Deprecated zkcluster rebalance logic and new DataCenterAwareness implementation
The \squbs-zkcluster\ module introduces new \DataCenterAwareness\ and \RebalanceLogic\ implementations that support data-center-aware cluster rebalancing. The new \DataCenterAwareRebalanceLogic\ and \CorrelateRoundRobinRoutingLogic\ provide logic for rebalancing partitions based on correlation identifiers (e.g., IP address prefixes). All new classes in \DataCenterAwareness.scala\ and the \rebalance\ package object are marked as deprecated since version 0.15.0, indicating the \zkcluster\ module is being phased out in favor of the native Pekko cluster capabilities.
squbs-zkcluster/src/main/scala/org/squbs/cluster/rebalance · medium confidence
Migrate build infrastructure to Pekko and modernize SBT tooling
The project's build configuration has been updated to support the Pekko ecosystem, with new version constants defined for Pekko (1.0.2) and Pekko HTTP (1.0.1) in the build definitions. The SBT build tool has been upgraded to version 1.9.9, and the build plugins have been updated to modern versions, including sbt-scoverage 1.9.3, sbt-codacy-coverage 3.0.3, and sbt-pgp 2.1.2. These changes ensure the project can compile and run using the new Pekko libraries while maintaining updated testing and code coverage tooling.
project · high confidence
Migrate cluster configuration from Akka to Pekko
The ZkMembershipMonitor's configuration has been updated to use Apache Pekko instead of Akka. The reference configuration now defines Pekko as the actor system provider and registers the Kryo serializer for cluster messages, while the dispatcher configuration for ZkMembershipMonitor has been updated to use Pekko's PinnedDispatcher.
squbs-zkcluster/src/main/resources · medium confidence
Migrated from Akka to Pekko
The Unicomplex module has been migrated from Akka to Pekko, updating all internal actor system references and imports to use the Pekko libraries. This change ensures compatibility with the Pekko runtime environment.
squbs-unicomplex/src/main/scala/org/squbs/unicomplex · high confidence
Replace Akka dispatcher with Pekko-based ForkJoinConfigurator
The ForkJoinConfigurator in the squbs-unicomplex module has been updated to use the Pekko dispatcher infrastructure instead of Akka's. This change modifies how the system configures and registers ForkJoinPool executors, including JMX monitoring and thread factory adaptation, aligning the dispatcher implementation with the Pekko ecosystem.
squbs-unicomplex/src/main/scala/org/squbs/dispatcher · high confidence
Test coverage
Added Java API test kit for route and actor testing; Added Java API test services for Flow and Route; Added Java API tests for the Pipeline Flow; Added Java test actor for Pekko compatibility; Added Java test suite for PerpetualStream and lifecycle management; Added stress test for LoadActor; Added test configuration files for the squbs-testkit module; Added test configuration for Unicomplex resource scanning; Added test coverage for ForkJoinConfigurator; Added test coverage for the Squbs pipeline module; Added test fixtures for squbs-unicomplex classpaths; Added test infrastructure for ZkCluster multi-actor system; Added test resource configuration for the unicomplex; Added test resource files for the zkcluster module; Added test resources and configuration for the testkit; Added tests for BoundedOrdering, Retry, and Timeout stream stages; Added tests for JSON marshalling and unmarshalling; Added tests for JSON marshalling support; Added tests for MaterializationMetricsCollector; Added tests for PerpetualStream lifecycle and shutdown behavior; Added tests for ZkCluster and data center awareness; Added tests for environment resolution and JMX monitoring; Added tests for environment resolution logic; Added tests for stream processing stages; Added tests for the CustomTestKit, CustomRouteTestKit, PortGetter, and TestRoute utilities; Added tests for the admin console MBean service; Added tests for the generic resolver registry; Added tests for the load testing harness; Added tests for the new Pekko-based Circuit Breaker implementation; Added tests for the resolver registry and endpoint resolution logic; Added unit tests for metrics and configuration utilities; Added unit tests for the circuit breaker state and stream integration.
Dependencies
Migrate build system to Apache Pekko
The project's build configuration has been updated to use Apache Pekko as the underlying actor framework, replacing the previous Akka dependency. This change affects all modules (such as squbs-unicomplex, squbs-pattern, and squbs-testkit), which now depend on 'org.apache.pekko' artifacts like 'pekko-actor' and 'pekko-http' instead of their Akka counterparts.
(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 45 → 58 (+12.5)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 94 (-6.2)
- Architecture 69 → 100 (+30.7)
- Maturity 51 → 49 (-2.5)
- Readiness 28 → 59 (+31.0)
- Security 61 → 55 (-6.2)
Resolved (11)
- Coverage not measured — test suite did not build
- Dimension evaluation failed
- 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)
- LLM evaluation failed
- No exposed public API
- No tests found
- Test reliability not included
New (61)
- CircuitBreaker.createLogic (cognitive 23) (squbs-ext/src/main/scala/org/squbs/streams/circuitbreaker/CircuitBreaker.scala)
- CubeSupervisor.receive (cognitive 20) (squbs-unicomplex/src/main/scala/org/squbs/unicomplex/Unicomplex.scala)
- CubeSupervisor.startupReceive (cognitive 25) (squbs-unicomplex/src/main/scala/org/squbs/unicomplex/Unicomplex.scala)
- CubeSupervisor.startupReceive (cyclomatic 23) (squbs-unicomplex/src/main/scala/org/squbs/unicomplex/Unicomplex.scala)
- Documentation: no architecture or design documentation (docs/marshalling.md)
- Documentation: no architecture or design documentation (docs/orchestration_dsl.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no licence statement (docs/LICENSE.txt)
- Documentation: no usage examples (README.md)
- Dormant codebase
- Duplicated block (20 lines × 2) (squbs-testkit/src/main/scala/org/squbs/testkit/japi/JUnitCustomRouteTestKit.scala)
- Duplicated block (7 lines × 2) (squbs-pattern/src/main/scala/org/squbs/pattern/stream/BroadcastBuffer.scala)
- Duplicated block (7 lines × 2) (squbs-pattern/src/main/scala/org/squbs/pattern/timeoutpolicy/MathUtil.scala)
- FileTooLong: unicomplex/Unicomplex.scala (squbs-unicomplex/src/main/scala/org/squbs/unicomplex/Unicomplex.scala)
- 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 41 more
Architecture
- Containers 0 added · 0 removed · contexts 10 added · 0 removed · edges 15 added · 0 removed
Added bounded contexts (10)
- repository
- squbs-actormonitor
- squbs-actorregistry
- squbs-ext
- squbs-httpclient
- squbs-pattern
- squbs-pipeline
- squbs-testkit
- squbs-unicomplex
- squbs-zkcluster
Added dependency edges (15)
- squbs-actormonitor → squbs-unicomplex
- squbs-actorregistry → squbs-ext
- squbs-actorregistry → squbs-unicomplex
- squbs-ext → squbs-pattern
- squbs-ext → squbs-pipeline (coupling)
- squbs-ext → squbs-unicomplex
- squbs-httpclient → squbs-ext (coupling)
- squbs-httpclient → squbs-pipeline (coupling)
- squbs-pattern → squbs-ext
- squbs-pipeline → squbs-unicomplex
- squbs-testkit → squbs-ext
- squbs-testkit → squbs-unicomplex (coupling)
- squbs-unicomplex → squbs-ext
- squbs-unicomplex → squbs-pipeline (coupling)
- squbs-zkcluster → squbs-unicomplex
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
paypal/squbs 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 27 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 2569bf50c7510a4a0817e50978be0826f07b6dcd — 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-d00c643c3f66.