Release v0.3.2
Focus
0.3.2 turns the refactored 0.3.x core into a tighter release contract.
This release is about hardening what already exists:
- explicit public boundaries
- preservation-backed runtime behavior
- clearer plugin contracts
- stronger diagnostics, security posture, and performance guardrails
Highlights
Public API boundaries are now frozen more deliberately
Agora now treats the package facades as explicit release contracts:
agoraagora.coreagora.core.<domain>agora.core.runtimeas an advanced public facade
Architecture tests now fail when public surfaces drift, when compatibility
exports are undocumented, or when plugin-facing code leaks into underscore
support modules by accident.
Runtime guarantees are preservation-backed end to end
The 0.3.x runtime guarantee matrix is now fully preservation-backed. This
covers lane selection, ordering, checkpoint cadence, DLQ routing, retry
boundaries, shutdown/cancellation behavior, and process/buffered invariants.
This release is therefore much safer for continued internal refactor: the code
can keep moving without reopening ambiguity about preserved runtime semantics.
Observability and health diagnostics are safer
Built-in health payloads now redact and truncate last_error before exposing it
through metrics/health surfaces.
Plugin diagnostics are also clearer:
agora plugins listnow shows broken entry-points explicitly- entry-point key collisions with built-ins/public keys are surfaced as
diagnostics instead of silently winning by import order agora doctoris more explicit about its trust boundary during config import
and pipeline-build checks
Plugin contract cleanup is now reflected in code, tests, and docs
The official agora-etl-plugins bundle and the incubating plugin packages now
follow the updated contract more consistently:
- MANIFEST compatibility binds to
AGORA_PLUGIN_MANIFEST_VERSIONinstead of
hard-coded stale values - package metadata points at the real
agora-etlcore artifact - plugin contract tests now fail when plugin packages depend on internal Agora
support modules or on legacy module paths that now have public replacements
For 0.3.x, two advanced public plugin modules remain intentionally supported:
agora.core.registryfor MANIFEST compatibility bindingagora.core.retryfor shared retry helpers
Benchmark coverage now has a concrete maintenance budget
0.3.2 records the first post-refactor benchmark baseline and a simple perf
budget for future maintenance work.
The benchmark split now covers:
- file-backed lane throughput
- runtime orchestration-heavy shapes such as buffered execution, sink fan-out,
and observability overhead - Arrow process transport microbenchmarks
This makes it possible to catch hot-path regressions intentionally instead of
relying on anecdotal before/after impressions.
Upgrade notes
For builders
- Prefer
agoraand documentedagora.core.<domain>facades over file-level
modules. - Avoid underscore-prefixed imports even if a compatibility export still exists
in0.3.x.
For plugin authors
- Bind MANIFEST compatibility from
agora.core.registry. - Prefer
agora.state,agora.runner, and the documented plugin-contract
modules indocs/plugins/contract.md. - Treat
agora.core.registryandagora.core.retryas advanced public plugin
contracts in0.3.x.
Deprecated aliases retained through 0.3.x
agora.core.runtime.RecordDeliveryCoordinatoragora.core.sink._WRITE_OKagora.core.context._NOOP_SPAN_SCOPEagora.core.context._BoundLoggeragora.core.context._NoopSpanScopeagora.core.context._PipelineSpanScopeagora.core.context._normalize_trace_value
These remain compatibility bridges in 0.3.x and are still targeted for
removal in 0.4.0.
Validation
Release validation for 0.3.2 includes:
- public surface / architecture tests
- preservation coverage for runtime guarantees and plugin contract behavior
- package-local CI for
agora-etl-plugins - benchmark baselines for the canonical Phase 5 scenarios