Implement layered public API design (ADR-030) #272

Closed
opened 2025-12-31 23:04:05 -08:00 by jwilger · 0 comments
jwilger commented 2025-12-31 23:04:05 -08:00 (Migrated from github.com)

Summary

Implement the layered crate public API design established in ADR-030 and documented in ARCHITECTURE.md.

Background

The eventcore crate should export a minimal API for application developers, while eventcore-types provides the full API for backend implementers. This cleanup reduces API surface area, clarifies audience separation, and makes future evolution easier.

Acceptance Criteria

  • EventCollector projector implemented in eventcore-testing (#278)
  • eventcore-examples crate created (#279)
  • Integration tests migrated to eventcore-examples (#280)
  • eventcore/src/lib.rs exports only application-developer types (#281)
  • Internal types made pub(crate)
  • Dead code removed
  • All tests pass after API cleanup

Sub-Issues

  • #278 - Implement EventCollector projector in eventcore-testing (ADR-031)
  • #279 - Create eventcore-examples crate (ADR-032)
  • #280 - Migrate integration tests to eventcore-examples
  • #281 - Remove unnecessary exports from eventcore public API
  • #276 - Architect continuous polling mode (future work)
  • ADR-030: Layered Crate Public API Design
  • ADR-031: Black-Box Integration Testing via Projections
  • ADR-032: Integration Test Crate for End-to-End Testing

References

  • ARCHITECTURE.md: Crate Organization section
## Summary Implement the layered crate public API design established in ADR-030 and documented in ARCHITECTURE.md. ## Background The `eventcore` crate should export a minimal API for application developers, while `eventcore-types` provides the full API for backend implementers. This cleanup reduces API surface area, clarifies audience separation, and makes future evolution easier. ## Acceptance Criteria - [ ] EventCollector projector implemented in eventcore-testing (#278) - [ ] eventcore-examples crate created (#279) - [ ] Integration tests migrated to eventcore-examples (#280) - [ ] `eventcore/src/lib.rs` exports only application-developer types (#281) - [ ] Internal types made `pub(crate)` - [ ] Dead code removed - [ ] All tests pass after API cleanup ## Sub-Issues - #278 - Implement EventCollector projector in eventcore-testing (ADR-031) - #279 - Create eventcore-examples crate (ADR-032) - #280 - Migrate integration tests to eventcore-examples - #281 - Remove unnecessary exports from eventcore public API ## Related - #276 - Architect continuous polling mode (future work) - ADR-030: Layered Crate Public API Design - ADR-031: Black-Box Integration Testing via Projections - ADR-032: Integration Test Crate for End-to-End Testing ## References - ARCHITECTURE.md: Crate Organization section
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#272
No description provided.