Remove unnecessary exports from eventcore public API (ADR-030) #281

Closed
opened 2026-01-01 10:19:29 -08:00 by jwilger · 0 comments
jwilger commented 2026-01-01 10:19:29 -08:00 (Migrated from github.com)

Parent Issue

Blocks #272 (Implement layered public API design)

Description

After integration tests have been migrated to eventcore-examples (per ADR-032) and EventCollector has been implemented in eventcore-testing (per ADR-031), we can safely reduce the public API surface of the eventcore crate.

Goals

  1. Remove backend-implementer types from eventcore public API:

    • EventStore trait stays in eventcore-types only
    • CheckpointStore trait stays in eventcore-types only
    • Internal projection machinery remains pub(crate)
  2. Keep application-developer API in eventcore:

    • execute() function
    • run_projection() function
    • Command trait and derive macro
    • Projector trait
    • Domain types (events, errors)
  3. Verify no downstream breakage:

    • All tests in eventcore-examples pass using only public APIs
    • Macros continue to work
    • Documentation examples compile

Depends On

  • #278 - EventCollector implementation (needed for test verification)
  • #279 - eventcore-examples crate creation
  • #280 - Integration test migration

Acceptance Criteria

  • eventcore/src/lib.rs exports only application-developer types
  • Internal projection types are pub(crate) not pub
  • Dead code (unused config methods, etc.) is removed
  • All workspace tests pass
  • Cargo doc generates without warnings
## Parent Issue Blocks #272 (Implement layered public API design) ## Description After integration tests have been migrated to `eventcore-examples` (per ADR-032) and EventCollector has been implemented in `eventcore-testing` (per ADR-031), we can safely reduce the public API surface of the `eventcore` crate. ## Goals 1. **Remove backend-implementer types** from `eventcore` public API: - `EventStore` trait stays in `eventcore-types` only - `CheckpointStore` trait stays in `eventcore-types` only - Internal projection machinery remains `pub(crate)` 2. **Keep application-developer API** in `eventcore`: - `execute()` function - `run_projection()` function - `Command` trait and derive macro - `Projector` trait - Domain types (events, errors) 3. **Verify no downstream breakage**: - All tests in `eventcore-examples` pass using only public APIs - Macros continue to work - Documentation examples compile ## Depends On - #278 - EventCollector implementation (needed for test verification) - #279 - eventcore-examples crate creation - #280 - Integration test migration ## Acceptance Criteria - [ ] `eventcore/src/lib.rs` exports only application-developer types - [ ] Internal projection types are `pub(crate)` not `pub` - [ ] Dead code (unused config methods, etc.) is removed - [ ] All workspace tests pass - [ ] Cargo doc generates without warnings
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
jwilger/eventcore#281
No description provided.