5.4 KiB
Epic 1.5 — Store Invariants, Replay Contracts & Projection Enforcement Layer
completed deliverables
1. event store invariants formalization
extended and hardened the EventStore correctness model beyond basic append/read semantics.
formalized invariants:
- append-only enforcement as strict storage rule
- idempotency via
eventIduniqueness - monotonic per-session sequencing
- total ordering guarantee per session stream
- deterministic read consistency across implementations
this clarified EventStore as a strict correctness boundary, not just a persistence abstraction.
2. replay contract system (cross-store determinism)
introduced a unified contract layer for verifying replay correctness across all EventStore implementations.
contract guarantees:
- identical event streams MUST produce identical replay outputs
- ordering must be preserved independent of storage backend
- partial replay (cursor-based) must remain deterministic
- replay must be stateless and side-effect free
covered implementations:
- in-memory event store
- sqlite event store
- future persistence adapters
3. projection contract enforcement layer
defined formal constraints for projection systems to ensure deterministic state reconstruction.
projection invariants:
- projection MUST be a pure function:
EventStream → State - projections MUST NOT retain or mutate internal state
- projections MUST NOT depend on external systems
- identical inputs MUST produce identical outputs
introduced projection-level contract tests to enforce:
- determinism across repeated builds
- correct handling of empty streams
- correct ordering sensitivity
- stable state reconstruction semantics
4. test fixtures & reusable contract infrastructure
introduced shared testing primitives to enforce consistency across modules.
components:
- deterministic
stored()/event()builders - reusable EventStore contract test suite
- reusable replay contract test suite
- projection contract test base class
ensures:
correctness rules are defined once and enforced everywhere
5. concurrency correctness validation layer
formalized and tested concurrency guarantees for EventStore implementations.
validated properties:
- safe concurrent appends
- absence of race-condition-based sequence corruption
- uniqueness enforcement under parallel writes
- deterministic final stream state under concurrent load
introduced stress-style test utilities for reproducible concurrency validation.
6. projection infrastructure alignment
aligned projection system with replay engine from Epic 2 while maintaining strict separation of concerns.
ensured:
- projections depend only on event stream abstraction
- projections remain implementation-agnostic
- replay engine is the only execution driver
- no direct store coupling inside projection logic
this created a clean boundary:
EventStore → EventReplayer → Projection → State
7. event system boundary tightening
refined event system usage rules across all layers:
- event payload remains the only domain extension point
- metadata is strictly non-semantic
- sequence is the only ordering primitive
- causality is informational only (not execution-driving)
ensured event system remains the single authoritative truth layer without semantic leakage.
8. architectural separation enforcement
formalized module separation rules:
core/events→ source of truth + replay primitivescore/events/projections→ deterministic state buildersinfrastructure/persistence→ storage implementations onlytesting/contracts→ cross-module correctness enforcement
enforced rule:
no module may assume correctness of another without contract validation
9. replay correctness guarantee foundation
strengthened replay guarantees introduced in Epic 2:
- deterministic replay across time and environment
- backend-independent state reconstruction
- full reproducibility of session state from event stream
- elimination of hidden state assumptions in projection lifecycle
Epic 1.5 made replay correctness explicitly testable and enforced, not implicit.
final architecture after Epic 1.5
EventStore (contract-enforced)
↓
StoredEvent stream (ordered, idempotent)
↓
EventReplayer (deterministic engine)
↓
Projection contracts (pure functions)
↓
State (reconstructed, disposable)
major architectural outcomes
Epic 1.5 established:
- formal correctness contracts for EventStore and replay systems
- deterministic projection enforcement layer
- reusable cross-module test contract infrastructure
- concurrency-safe event persistence validation
- strict replay determinism guarantees across implementations
- hardened separation between storage, replay, and projection layers
what Epic 1.5 intentionally does NOT include
not implemented:
- session lifecycle FSM (Epic 2)
- transition engine execution semantics (Epic 3)
- workflow orchestration
- runtime kernel
- tool execution system
- policy/approval integration
those systems are explicitly higher-level and depend on this layer being stable.
final state
Correx now has:
a formally contract-enforced event sourcing foundation with deterministic replay, validated projection semantics, and strict cross-implementation guarantees ensuring that all state reconstruction logic is reproducible, testable, and backend-independent.