0.4.0 (June 13, 2026)

agora-etl-rs becomes Agora's optional acceleration substrate for measured core hot paths while Python keeps runtime semantics.

Added

  • agora.core.acceleration as the single optional acceleration boundary.
  • DeliveryConfig(acceleration_mode=...) with auto, off, and required.
  • Declarative [performance] config with acceleration and profile.
  • Acceleration status in Pipeline.explain(), run summaries, tracing attributes, agora run --plan, agora doctor, and agora doctor --json.
  • Performance profiles that resolve to explicit runtime settings while keeping manual overrides authoritative.
  • Benchmark matrix runner for 0.3.3 baseline, pure Python 0.4.0, and Rust-enabled 0.4.0 runs.

Changed

  • Runtime modules no longer import agora_rs directly.
  • Existing Rust primitives are selected through the acceleration facade.
  • Direct flush, Rust prefetch, checkpoint state, metrics accumulator, and linear batch buffer decisions are visible in runtime metrics.
  • throughput profile is the opt-in gate for Rust source prefetch outside buffered lanes until release benchmarks justify broader activation.

Removed

  • agora.core.runtime.RecordDeliveryCoordinator
  • agora.core.sink._WRITE_OK
  • agora.core.context compatibility exports: _NOOP_SPAN_SCOPE, _BoundLogger, _NoopSpanScope, _PipelineSpanScope, and _normalize_trace_value
  • Legacy source/sink data-plane bool flag inference
  • BaseSource.runtime_counters() compatibility shim

Release Rule

Performance claims must be backed by benchmark JSON. Candidate Rust expansions, including JSONL batch encoding and Arrow IPC transport, remain benchmark-gated.