Learn
Architecture
Responsibility boundaries from command ingress to ordered output and diagnostics.
Architecture
Public UseCase facade
The application subclasses UseCase<S>, registers typed handlers, submits commands, observes snapshots, and owns close. The facade prevents callers from coordinating internal queues directly.
Input port
The input boundary validates command registration and resolves admission instructions. It reports typed rejection without pretending that rejected intent became an execution.
Interactor
The interactor owns scheduling, processing identity, execution groups, the processing registry, cancellation coordination, error routing, history, and close semantics.
Output port
The output boundary exposes the current snapshot and ordered stream. Application listeners observe publication; they do not mutate the runtime's internal execution state.
Queues
AdmissionQueue represents intent delayed by input rules. PendingQueue represents accepted entries waiting for processing policy. PublicationQueue serializes observable output. Keeping these roles separate prevents debounce, concurrency, and listener reentrancy from becoming one ambiguous queue.
Diagnostics bridge
Diagnostics is opt-in and read-only. The core emits bounded operational data through a separate public library; tools must not obtain mutation authority over the application runtime.