Skip to content

HYBIM-948 refresh README and changelog for first Splunk AO release - #195

Open
pradystar wants to merge 1 commit into
mainfrom
docs/first-release-readme-changelog
Open

HYBIM-948 refresh README and changelog for first Splunk AO release#195
pradystar wants to merge 1 commit into
mainfrom
docs/first-release-readme-changelog

Conversation

@pradystar

Copy link
Copy Markdown
Collaborator

Summary

Refresh the README and changelog for the first Splunk AO Python SDK release, covering standalone and O11y configuration and the SDK’s OTLP based telemetry behavior.

Why

The existing documentation described legacy Galileo behavior and did not accurately explain current routing, lifecycle, batching, authentication, diagnostics, and OpenTelemetry integration requirements.

What changed

  • Documented standalone and O11y installation, authentication, and routing.
  • Added Agent Stream name/ID guidance and routing precedence.
  • Documented service naming and reserved routing Resource attributes.
  • Clarified @log, handler, manual logger, flush(), terminate(), and provider shutdown behavior.
  • Added standard OpenTelemetry instrumentation and custom exporter examples.
  • Documented export diagnostics and session behavior for both deployments.
  • Corrected dataset and experiment examples.
  • Reset the changelog for the first Splunk AO release.

Tests

Validated 23 Python examples, 9 shell examples, 76 focused tests.

@pradystar
pradystar requested a review from Copilot July 31, 2026 00:02
@pradystar
pradystar requested review from fercor-cisco and sheilattran8 and removed request for Copilot July 31, 2026 00:02

@fercor-cisco fercor-cisco left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 This review was generated by the Astra agent (claude-opus-4-8). It may contain mistakes.

Verdict: request_changes — The new "Export diagnostics" docs describe a public attribute (processor.export_health) and rejection/recovery/logger behavior that do not exist in the source.

Comment thread README.md
Comment on lines +372 to +379
The processor returned by `add_splunk_ao_span_processor()` exposes the latest
receiver acknowledgement as `processor.export_health`. Its `healthy` value is:

- `None` before an acknowledgement, or after a transport or non-2xx failure.
- `True` after an accepted 2xx response.
- `False` after a 2xx response that rejects telemetry.

This is advisory diagnostic state, not a delivery guarantee.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 major (documentation): processor.export_health does not exist. A repo-wide grep for export_health matches only this README line — nothing in src/ or tests/. The object returned by add_splunk_ao_span_processor() is a SplunkAOSpanProcessor (src/splunk_ao/otel.py:155), whose only public members are on_start, on_end, shutdown, force_flush, and the exporter/processor properties. A user who follows these docs and reads processor.export_health.healthy will get an AttributeError, and the entire None/True/False semantics described here are fabricated. Either implement the attribute or remove this block.

🤖 Generated by the Astra agent

Comment thread README.md
Comment on lines +367 to +370
A successful HTTP response can still acknowledge that some or all spans were
rejected. The SDK emits a sanitized, rate-limited error for those
acknowledgements and one informational message after recovery. Export failures
never fail the instrumented application or business request.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 major (documentation): This claims the SDK detects successful-HTTP-response telemetry rejections and "emits a sanitized, rate-limited error for those acknowledgements and one informational message after recovery." No such logic exists in the export path: NormalizingSpanExporter.export() (src/splunk_ao/exporter/span_transform.py:84) simply delegates to the underlying OTLP exporter, and none of the exporter modules parse partial-success responses or emit logs. Please remove or correct this paragraph.

🤖 Generated by the Astra agent

Comment thread README.md

logging.basicConfig(level=logging.INFO)
logging.getLogger("opentelemetry.exporter.otlp.proto.http.trace_exporter").setLevel(logging.WARNING)
logging.getLogger("splunk_ao.exporter").setLevel(logging.INFO)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 major (documentation): There is no splunk_ao.exporter logger that surfaces "Agent Observability successful-response rejection diagnostics." The exporter modules (sink.py, o11y.py, standalone.py, config.py, span_transform.py) contain no logging.getLogger / log calls at all. Setting this logger to INFO will produce nothing. The opentelemetry.exporter.otlp... line above it (transport/auth/retry/HTTP errors) is accurate; this line is not.

🤖 Generated by the Astra agent

Comment thread CHANGELOG.md
Comment on lines +35 to +40
- Successful HTTP responses that reject telemetry produce sanitized,
rate-limited SDK error logs and a recovery log after a later accepted
response.
- Exporters expose bounded, read-only receiver-acknowledgement health. Health is
unknown before an acknowledgement and after ordinary transport or non-2xx
failures; it is not a delivery guarantee.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 major (documentation): These two Diagnostics bullets describe the same non-existent behavior flagged in README: (1) SDK-emitted sanitized/rate-limited rejection errors with a recovery log, and (2) exporters exposing "read-only receiver-acknowledgement health" (i.e. export_health). Neither exists in the source. Remove or align with what the code actually does once the README section is corrected.

🤖 Generated by the Astra agent

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.

2 participants