Skip to content

Latest commit

 

History

History
78 lines (53 loc) · 2.36 KB

File metadata and controls

78 lines (53 loc) · 2.36 KB

Architecture

liquidrazor/process-events is a provider-only library. Its job is to expose concrete immutable runtime process events and the small typed metadata/value objects attached to them.

It intentionally stays out of infrastructure concerns.

Boundaries

This package includes:

  • worker lifecycle event implementations
  • outbound external call lifecycle event implementations
  • compact typed metadata/value objects used by those events

This package does not include:

  • event contracts
  • dispatchers
  • listeners or subscribers
  • orchestration logic
  • worker supervision logic
  • retry engines
  • timeout engines
  • cancellation engines
  • transport adapters
  • kernel lifecycle events

Dependency Direction

All event contracts come from liquidrazor/event-manager.

  • Concrete events implement LiquidRazor\EventManager\Contracts\ProcessEventInterface
  • No local copy of ProcessEventInterface or any immutable/base contract is defined here

liquidrazor/process-events depends on liquidrazor/event-manager; not the other way around.

Package Layout

include/
  Metadata/
    Worker/
    ExternalCall/
lib/
  Worker/
  ExternalCall/
src/

Layout responsibilities:

  • include/ holds the public metadata/value objects
  • lib/Worker/ holds concrete worker lifecycle events
  • lib/ExternalCall/ holds concrete external call lifecycle events
  • src/ is reserved for minimal package-level glue and is currently empty

Immutability And Payload Shape

All event classes and metadata/value objects in the implemented package are final readonly.

Payloads are modeled as typed objects, not raw arrays or generic context bags. The current implementation also normalizes and validates constructor input:

  • string identifiers/classifications are trimmed
  • empty required strings are rejected
  • numeric fields such as attempt numbers, exit codes, timeout values, and durations are validated
  • timing data rejects a finish time earlier than the start time

Transport Boundary

External call events describe the caller/process perspective only. They do not expose transport- or client-specific implementation objects.

This package API is intentionally transport-agnostic. Normalize details from HTTP, RPC, SDK, AMQP, or other clients into the metadata types before constructing events.

Related Docs