Skip to content

πŸ•°οΈ 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