Skip to content

Developer#25

Merged
deborahjacob-botanu merged 4 commits intomainfrom
developer
Apr 19, 2026
Merged

Developer#25
deborahjacob-botanu merged 4 commits intomainfrom
developer

Conversation

@deborahjacob-botanu
Copy link
Copy Markdown
Collaborator

Summary

Changes

Type of change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • CI / build / tooling

Testing

  • Unit tests pass (pytest)
  • Lint passes (ruff check)
  • Type check passes (mypy)

Checklist

  • My code follows the project's coding style
  • I have added SPDX headers to new files
  • I have added tests for my changes
  • I have updated documentation if needed
  • All commits are signed off (git commit -s) per the DCO

deborahjacob-botanu and others added 4 commits March 12, 2026 12:39
When BOTANU_API_KEY is set and no explicit endpoint is configured,
the SDK now defaults to https://ingest.botanu.ai:4318 and sets the
Authorization header automatically. Also adds OTEL_EXPORTER_OTLP_ENDPOINT
as a fallback and cleans up README badges.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduces SampledSpanProcessor that preserves the host app's existing
TracerProvider sampling ratio when botanu is bootstrapped into a project
that already has OpenTelemetry wired up. register.py exposes an explicit
entry point so existing-OTel users can opt in without the decorator
touching their provider. bootstrap.py detects a configured provider and
hands off instead of overriding it.

Decorators accept an optional step parameter (stored in RunContext, not
yet emitted to span attributes) so multi-step workflow plumbing can land
without breaking the 0.x contract -- kept backward compatible until the
collector servicegraph work unblocks and we start emitting it.

scripts/pre_publish_check.py is a red/green gate that builds the wheel,
runs twine check, installs into a fresh venv, validates the public API
surface, and runs a decorator + emit_outcome smoke test. Safe to run on
Windows (ASCII markers, no unicode).

Also updates CI, CodeQL, repolinter, scorecard, and release workflows
plus the collector / existing-otel / installation docs to match the new
bootstrap flow.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Gate OTLP bearer token on *.botanu.ai + local dev hosts so a
  customer-supplied OTEL_EXPORTER_OTLP_ENDPOINT cannot exfiltrate
  the tenant API key. Redact Authorization/x-api-key/botanu-api-key
  headers and user:pass URL credentials in logs.
- Add workflow-level input/output capture gated by
  content_capture_rate + content_sampler. Writes
  botanu.eval.input_content / botanu.eval.output_content so the
  evaluator stops scoring placeholder strings.
- Add set_input_content / set_output_content on LLMTracker and
  matching helpers on data tracking.
- SampledSpanProcessor gates on_start with the same decision as
  on_end; forwarding on_start unconditionally orphans span
  bookkeeping inside wrapped processors (QUAL-C1 memory leak).
- Add ResourceEnricher for deployment attributes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
No 0.1.0 tag was ever cut, so the dated 2026-02-05 entry was a
fabrication. Collapse initial-release bullets into [Unreleased],
drop the inaccurate "Lean mode (default)" line and stale extras
list, and update the comparison link to point at main until the
first real tag lands.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@deborahjacob-botanu deborahjacob-botanu merged commit a338422 into main Apr 19, 2026
11 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant