All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Security
- OTLP bearer token is attached only when the endpoint host is botanu-owned
(
*.botanu.ai) or a local dev host, preventing tenant API-key leakage via a customer-suppliedOTEL_EXPORTER_OTLP_ENDPOINT. - Authorization /
x-api-key/botanu-api-keyheaders anduser:pass@URL credentials are redacted in logs.
- OTLP bearer token is attached only when the endpoint host is botanu-owned
(
- Brownfield OTel coexistence
SampledSpanProcessorpreserves the host app's existing TracerProvider sampling ratio when botanu is bootstrapped into a project that already has OTel wired up.register.pyentry point for explicit opt-in without decorator-side provider mutation.- Bootstrap detects a pre-configured provider and hands off instead of overriding it.
- Content capture for eval
- Workflow-level input/output capture gated by
content_capture_rateconfig and a sharedcontent_sampler. Writesbotanu.eval.input_content/botanu.eval.output_content. set_input_content()/set_output_content()onLLMTrackerwith the same gate, plus matching helpers on data-tracking helpers.
- Workflow-level input/output capture gated by
- Multi-step workflows
@botanu_workflow(..., step=...)parameter (stored inRunContext, not yet emitted to span attributes — kept backward compatible until the collector servicegraph work lands).
- Resources
ResourceEnricherspan processor for deployment attributes.
- Release tooling
scripts/pre_publish_check.pyred/green gate: builds sdist + wheel, runstwine check, installs into a fresh venv, validates the public API surface, runs an end-to-end decorator +emit_outcomesmoke test.
SampledSpanProcessor.on_startnow gates on the same ratio decision ason_end; forwardingon_startunconditionally while gatingon_endleaked span bookkeeping inside wrapped exporters (QUAL-C1).
Carried forward from the pre-tag scaffolding (never published):
enable()/disable()bootstrap,@botanu_workflow,@botanu_outcome,emit_outcome(),set_business_context(),RunContextEnricher— with UUIDv7 run_ids.- LLM tracking aligned with OTel GenAI semconv:
track_llm_call(),track_tool_call(), token accounting, 15+ provider normalization. - Data tracking:
track_db_operation(),track_storage_operation(),track_messaging_operation(); 30+ system normalizations. - W3C Baggage propagation with
RunContext(retry tracking + deadline). - Cloud resource detectors via optional extras (
aws,gcp,azure,container,cloud). - Auto-instrumentation bundled in the base install — HTTP clients, web frameworks, databases, messaging, and GenAI providers; instrumentation packages no-op when their target library is not installed.