21 packages
-
eu.exeris.exeris-kernel-parent
Main Parent POM for Kernel modules. Imports the BOM and enforces strict Code Quality gates (Checkstyle, PMD).
16 -
eu.exeris.exeris-kernel-spi
The "Invisible Wall" — agnostic L0/L1/L2 contracts and RAII memory protocols.
16 -
eu.exeris.exeris-kernel-bom
Single Source of Truth for Exeris Kernel (Java 26+, FFM, Virtual Threads, Agrona, JCTools).
16 -
eu.exeris.exeris-kernel-core
The "Brain": KernelBootstrap orchestrator, AbstractLoanedBuffer base class, WatermarkManager, ResourceArbiter. Depends only on exeris-kernel-spi.
15 -
eu.exeris.exeris-kernel-community
Free-tier Community implementations: CommunityMemoryProvider (Arena-based), CommunityKernelCryptoProvider (OpenSSL 3.x / TCP-only, no QUIC), CommunityTelemetryProvider (Console, JFR, File sinks).
6 -
eu.exeris.exeris-kernel-community-testkit
Reusable community HTTP fixture utilities for tests across modules.
5 -
eu.exeris.exeris-kernel-tck
Technology Compatibility Kit: L1 unit tests, L2 integration tests, L3 system guarantees. Zero-GC JFR monitor, Panama Segfault Shield, Virtual Thread Avalanche, Bootstrap Matrix.
1 -
eu.exeris.exeris-spring-runtime-parent
Host-runtime integration layer enabling Spring applications to run on top of the Exeris execution model.
0 -
eu.exeris.exeris-spring-runtime-build-config
Shared build tooling configuration (Checkstyle, PMD, etc.) for the exeris-spring-runtime project.
0 -
eu.exeris.exeris-spring-runtime-bom
Bill of Materials for consistent version alignment across all exeris-spring-runtime modules.
0 -
eu.exeris.exeris-spring-boot-autoconfigure
Spring Boot autoconfiguration for the Exeris runtime integration. Scope: configuration properties binding, bean wiring, lifecycle coordination, conditional classpath activation, and bootstrap sequencing. This module MUST remain thin and declarative. It must not contain: - transport implementation, - request processing logic, - transaction or persistence ownership, - heavyweight compatibility bridging. See docs/architecture/module-boundaries.md for enforcement rules.
0 -
eu.exeris.exeris-spring-runtime-actuator
Operational visibility bridge between the Exeris runtime diagnostics and Spring Boot Actuator endpoints. Scope: - health indicators reading Exeris KernelProviders state, - info contributors exposing runtime mode and provider inventory, - Micrometer MeterRegistry bridge to Exeris TelemetrySink, - graceful shutdown coordination (SmartLifecycle order with Exeris bootstrap), - runtime diagnostic endpoints (watermark state, provider list, memory pressure). This module must not: - redefine the Exeris telemetry model or bypass TelemetrySink, - act as a control-plane for runtime configuration changes, - become a dumping ground for cross-module utilities, - own any data-plane execution path. See docs/architecture/module-boundaries.md.
0 -
eu.exeris.exeris-spring-runtime-web
Bridge between the Exeris HTTP/transport runtime and the Spring handler invocation model. Scope in Pure Mode: - implements HttpHandler (kernel SPI) as the transport-to-Spring bridge, - route registration against Exeris HttpServerEngine, - request/response abstraction (ExerisServerRequest / ExerisServerResponse), - codec integration for body serialization without heap copies, - error mapping (ExerisKernelException → HTTP status), - graceful connection close coordination. Explicitly excluded in Pure Mode: - Spring DispatcherServlet, HandlerMapping, HandlerAdapter (no MVC dispatch), - Servlet API, HttpServletRequest, HttpServletResponse, - WebFlux ServerWebExchange or ReactorHttpHandlerAdapter. Compatibility mode (Phase 2) will add an opt-in MVC dispatch bridge. It will be clearly labelled and must not activate by default. See docs/architecture/module-boundaries.md for enforcement rules. See docs/architecture/kernel-integration-seams.md for the exact SPI seams.
0 -
eu.exeris.exeris-spring-runtime-tx
Transaction boundary bridge between Exeris runtime resource semantics and the Spring transaction abstraction (@Transactional, PlatformTransactionManager). Scope (Phase 3): - implements PlatformTransactionManager backed by Exeris StorageContext, - bridges @Transactional semantics to Exeris transaction lifecycle, - propagates ScopedValue-based transaction context across virtual threads, - manages resource cleanup on commit/rollback using Exeris PersistenceConnection, - Spring transaction synchronization callbacks → kernel resource release. Phase 2 Note: This module is a planned placeholder in Phase 1. It will be activated in Phase 3 once the persistence integration strategy is decided. ThreadLocal is BANNED as a transaction context carrier. ScopedValue is the correct propagation mechanism aligned with the kernel's execution model. See docs/phases/phase-3-tx-persistence.md for the full delivery plan.
0 -
eu.exeris.exeris-spring-runtime-data
Optional, high-risk persistence integration module. This module is a PLANNED PLACEHOLDER and MUST NOT be activated by default. It will be populated in Phase 3 only after the persistence integration strategy has been validated and formally decided. Potential scope (Phase 3, subject to architectural review): - DataSource adapter backed by Exeris PersistenceEngine, - thin JDBC compatibility bridge if explicitly justified, - Exeris-native repository implementation strategy, - explicit compatibility layer for JDBC-expecting frameworks. DANGER: This module is the highest risk for architectural regression. Designs that orbit around DataSource/HikariCP/JPA/Hibernate and treat Exeris as a secondary component will be rejected. See docs/phases/phase-3-tx-persistence.md for the full risk analysis. See docs/adr/ADR-001-host-runtime-model.md sections 4.2 and 4.3.
0 -
eu.exeris.exeris-spring-runtime-flow
Compatibility-friendly bridge that exposes the kernel FlowEngine to Spring beans as a structured asynchronous / saga programming model — without making Spring @Async (or any thread-pool task executor) the canonical execution path for compensable, parkable, or event-triggered work. Scope (Phase 4B — 1.0 preview, default-off): - FlowEngineSupplier: deferred ScopedValue accessor pattern (Step 1). - ExerisFlowProperties: enabled + persistenceEnabled + choreographyEnabled + requireEngine flags, all default to safe values. - ExerisFlowAutoConfiguration: @ConditionalOnProperty gating; wires the template, registrar, and engine supplier from ExerisRuntimeLifecycle.getFlowEngine(). - ExerisFlowDefinition (Step 2): interface for Spring beans declaring kernel FlowDefinitions through FlowDefinitionBuilder + FlowStepAction lambdas. - ExerisFlowTemplate (Step 2): imperative invocation surface for Spring beans — schedule, park, wake, lookupParked, stats, plan registry. Resolves the engine via FlowEngineSupplier per call (ScopedValue contract). - ExerisFlowDefinitionRegistrar (Step 2): SmartInitializingSingleton + SmartLifecycle that compiles plans at lifecycle start and populates the template's plan registry; tolerates a missing engine when exeris.runtime.flow.require-engine=false (test/dev only). Step 3 will add ExerisFlowChoreographyBridge (opt-in event-driven flow trigger, gated additionally on FlowEngineCapabilities.choreographySupport()). Activation: exeris.runtime.flow.enabled = true (matchIfMissing = false) Hard rules (Phase 4B invariants — to be locked in at closure): - @Async is NOT a workaround for missing flow capability. - Durable snapshot persistence (FlowSnapshotStore) is NOT shipped in 0.5.0-preview; persistenceEnabled defaults false. Held back until an Exeris-owned FlowSnapshotStore lands in tx or data module. - Step lambdas closing over Spring beans must not invert lifecycle ownership — flow lifecycle stays kernel-owned. - No HTTP / web / persistence concerns in this module. See docs/phases/phase-4-events-flow.md (Section 4B) for the full delivery plan.
0 -
eu.exeris.exeris-spring-runtime-events
Compatibility-friendly bridge that exposes the kernel EventBus to Spring beans as publish/subscribe primitives without making the Spring ApplicationContext the canonical event owner. Scope (Phase 4A — 1.0 preview, default-off): - ExerisEventPublisher: Spring bean publishing into kernel EventBus, - @ExerisEventListener: method-level annotation; scanned by ExerisEventListenerRegistrar and registered as kernel EventHandler subscriptions, - ExerisEventTypeRegistry: facade over kernel EventRegistry for type-name → ordinal lookup. Activation: exeris.runtime.events.enabled = true (matchIfMissing = false) Hard rules: - Spring ApplicationEventPublisher is NEVER wired into the Exeris EventBus. - No Spring event types (org.springframework.context.event.*) on the kernel bus path. - No HTTP / transaction / persistence concerns in this module. See docs/phases/phase-4-events-flow.md (Section 4A) for the full delivery plan.
0 -
eu.exeris.exeris-spring-runtime-graph
Spring-side seam for the kernel Graph SPI per ADR-030 (Phase 4C — 1.0 preview, default-off). Scope (Phase 4C — kernel-independent in landing, kernel-gated in graduation): - GraphEngineSupplier: deferred accessor pattern (tryGet + default requireEngine) mirroring EventEngineSupplier / FlowEngineSupplier — reads KernelProviders.GRAPH_ENGINE captured by ExerisRuntimeLifecycle. - ExerisGraphProperties: enabled (default false) + requireEngine (default true) two-property matrix matching Phase 4A/4B autoconfig discipline. - ExerisGraphAutoConfiguration: @ConditionalOnProperty(enabled=true) gating; wires the template, supplier, and @ExerisGraphQuery BeanPostProcessor. - ExerisGraphTemplate: JdbcTemplate-shaped facade over kernel GraphSession — execute(ExerisGraphSessionCallback), traverseBfs, streamBfsJson (caller owns the returned LoanedBuffer, releases via try-with-resources), inTransaction(Consumer<GraphSession>), dialect(). - @ExerisGraphQuery + ExerisGraphQueryProcessor: declarative parameterised MATCH-DSL strings; BeanPostProcessor routes by method return type (LoanedBuffer → stream JSON; List<UUID> → BFS); unsupported return types fail fast at post-processing time before context refresh completes. Activation: exeris.runtime.graph.enabled = true (matchIfMissing = false) exeris.runtime.graph.require-engine = false (opt-in for dev/test where the kernel graph provider is absent) Hard rules (Phase 4C invariants — to be locked in at closure): - No Spring Data Neo4j compatibility (org.springframework.data.. banned by GraphModuleBoundaryTest). - No fluent GraphQueryBuilder DSL (kernel ships GraphTraversal record only). - No GraphCursor / unbounded traversal API (kernel "Planned — not yet implemented" per exeris-kernel/docs/subsystems/graph.md:149). - No cross-resource transactions (graph session transactions stay kernel-local; ExerisPlatformTransactionManager from -tx is a different resource). - No multi-engine fan-out (one GraphEngine per ApplicationContext). - LoanedBuffer streamBfsJson caller owns the buffer; template does not retain a reference and does not transfer ownership. See docs/adr/ADR-030-phase-4c-spring-side-seam-for-kernel-graph-spi.md for the full ADR; GA graduation is kernel-gated on Community GraphChurnRatioTck green in CI (kernel Sprint 7).
0 -
eu.exeris.exeris-kernel-build-config
Strict Code Quality Rules (Checkstyle, PMD) + APT processors for Exeris Kernel (Java 26+)
0 -
eu.exeris.exeris-kernel-community-kafka
Community Kafka / Redpanda EventEngine binding (since 0.7.0). Isolates kafka-clients (and its transitives — zstd-jni, lz4-java, snappy-java, jackson-databind) so single-node operators of exeris-kernel-community do NOT ship a Kafka client on their classpath. See ADR-008 (Open-Core boundary) and v0.7 EVENT-204.
0