Core Systems¶
Ownership Model
Core systems define the canonical event lifecycle. If ownership is unclear, the default is: EventCache governs transitions, EventStore governs indexed retrieval, and enhancers/engines transform without becoming state authorities.
System Contracts¶
| System | Owns | Guarantees |
|---|---|---|
| EventCache | Canonical event state and mutation workflow. | Single source of truth, consistent publish semantics, rollback-capable mutation path. |
| EventStore | In-memory indexed event persistence. | Fast retrieval by key and metadata relations with stable lookup behavior. |
| EventEnhancer | Normalization and write-path preparation. | Category/timezone-safe transformations and consistent shape before persistence/render. |
| TimeEngine | Temporal occurrence horizon and tick state. | Predictable upcoming-state computation for reminders and time-aware UI. |
| ViewEnhancer + WorkspaceManager | Presentation shaping and workspace policies. | UI-facing filtering/overrides without leaking business logic into components. |
Non-Negotiable Invariants¶
Event mutations must route through EventCache. Provider adapters must not become alternate state stores. Presentation modules can filter and annotate but cannot redefine core ownership semantics.
Code Anchors¶
Event lifecycle: src/core/EventCache.ts
Indexed storage: src/core/EventStore.ts
Normalization pipeline: src/core/EventEnhancer.ts
Temporal engine: src/core/TimeEngine.ts
View shaping: src/core/ViewEnhancer.ts
Workspace policy: src/features/workspaces/WorkspaceManager.ts