π°οΈ Aeon β The Temporal Engine of WhittakerTech¶
Time, distilled into code.
Aeon unifies scheduling, recurrence, and time-aware logic across all WhittakerTech engines.
It is the layer that connects events, calendars, jobs, and temporal states through a consistent DSL and adapter-based architecture.
β¨ Purpose¶
Aeon manages when things happen β whether itβs a recurring meeting, a job retry, or a cache refresh.
It provides a unified interface for:
- ποΈ Scheduling: attach time data to any model via
Aeon::Schedulable - β»οΈ Recurrence: use IceCube-compatible rules for repeating events
- π Querying: fetch occurrences across time windows with
Aeon::Timekeeper - πΎ Caching: memoize expanded schedules for rapid calendar rendering
- 𧬠Mutation: handle "Change This / All / Future" logic safely
- π Integration: connect to metrics, validation, or job systems via adapters
Aeon does not dictate how time is used β it simply ensures every engine agrees on what time means.
π§± Architecture Overview¶
| Layer | Components | Description |
|---|---|---|
| Model Layer | Period, Timestamp, RecurrenceAdapter |
Defines how time and recurrence are stored and interpreted. |
| Query Layer | PeriodQuery, Timekeeper |
Expands and queries time ranges. |
| Cache Layer | CacheWindow, CacheManager, CacheInvalidation, Refresher |
Optimizes recurring data retrieval and prewarming. |
| Mutation Layer | Mutator, DeepCloneService, ExceptionManager |
Handles event updates and change propagation. |
| Integration Layer | Schedulable, Worker, IntegrationSurfaces |
Exposes Aeon to host models and sibling engines. |
See full documentation β
π Aeon Architecture Index
βοΈ Configuration Example¶
# config/initializers/aeon.rb
Aeon.configure do |config|
config.cache_window_count = 2
config.cache_window_units = :weeks
config.default_timezone = "UTC"
# Optional adapters
config.metrics_adapter = Argus::Adapter.new(prefix: "aeon")
config.validation_adapter = Veritas::Adapter.new(strict: true)
end
Adapters are fully swappable. For example:
config.metrics_adapter = PrometheusAdapter.new
config.validation_adapter = JSONSchemaValidator.new
π§© Integration Surfaces¶
Aeon communicates through open contracts, not dependencies.
Each connected engine plugs into a different surface of time:
| Engine | Role | Interface |
|---|---|---|
| Prisms | Consumer | Aeon::Timekeeper for calendar rendering |
| Leeloo | Consumer | Aeon::CacheManager for access control |
| Mercury / Oscar | Legacy Consumers | Aeon::Worker for job orchestration |
| Argus / Veritas | Optional Adapters | Metrics & validation providers |
Replace any adapter at runtime β Aeon adapts to your environment.
π Philosophy¶
Aeon began as a clock.
It became a calendar.
Now it keeps the rhythm of creation β steady, quiet, eternal.
β WhittakerTech Temporal Systems Architecture Team