Repository navigation
[Epic]: Remaining Python OpenTelemetry work #873
Description
Parent tracker for the remaining Python OpenTelemetry fixes, core/testing prerequisites, and conformance qualification. Deliver the work through small, independently reviewable PRs; each child issue owns its reproduction, design choices, acceptance criteria, and tests.
Scope reviewed on 2026-10-28. The 13 sub-issues below are attached as native GitHub sub-issues so progress is visible in one place. They include the remaining work split from closed PRs #758 and #795, plus the existing invocation-error reporting gap.
OTel runtime correctness
- #853 — [OTel]: Report terminal failures and keep exception events within span bounds
- #854 — [OTel]: Export unvisited replay completions with the correct parent context
- #855 — [OTel]: Recover failed completion exports and isolate invocation finalization errors
- #856 — [OTel]: Bound provider flush waiting without blocking unrelated providers
Core instrumentation contract
- #852 — [Bug]: Isolate terminal plugin error snapshots from checkpointed state
- #772 — [Plugin] Preserve handler errors in invocation-end hooks when returning PENDING
Local-runner parity and installed artifacts
- #858 — [Testing]: Prune completed-context descendants from replay state
- #859 — [Testing]: Match ReplayChildren lifecycle and wire representation
- #860 — [Testing]: Record callback terminal completions as updated operations
- #861 — [Testing]: Acknowledge invocation input without losing pending updates
- #862 — [Testing]: Preserve empty callback error history without changing runtime errors
- #863 — [CI]: Validate the built testing-library wheel in OTel compatibility lanes
Conformance and integration
-
#874 — Complete replay and chained-execution conformance coverage tracks PR test(otel): cover replay and chained execution #796, the remaining handlers, deferred callback qualification, and the cloud case 21 timing gap.
-
fix(otel): restore case 11 replay coverage #864 is merged and restores case 11 chained-invoke replay coverage.
-
Open PR test(otel): cover replay and chained execution #796 carries the remaining case 21–24 and 27 handlers and qualification work. Its current description leaves cases 25–26 explicitly
NOT_IMPLEMENTEDand defers the additional case 17 callback-error regression. -
Restore case 25 after terminal status/event behavior ([OTel]: Report terminal failures and keep exception events within span bounds #853) and empty-error history/runtime consistency ([Testing]: Preserve empty callback error history without changing runtime errors #862) are ready.
-
Restore case 26 after completion telemetry ([OTel]: Export unvisited replay completions with the correct parent context #854), callback update production ([Testing]: Record callback terminal completions as updated operations #860), and input acknowledgment ([Testing]: Acknowledge invocation input without losing pending updates #861) are ready. Preserve the assertion inside the observed step that completion has already reached the exporter and preserve raw export counts at both later barriers.
-
Restore the additional case 17 regression with error snapshot isolation ([Bug]: Isolate terminal plugin error snapshots from checkpointed state #852) and the relevant error-history fixes. Included diagnostic payloads are untruncated; metadata-only history omits payloads and cannot reconstruct error details.
-
Resolve or explicitly disposition the case 21 history-order timing failure documented in test(otel): cover replay and chained execution #796 before claiming complete cloud qualification. A successful execution result alone does not establish the required telemetry/history contract.
-
Shared requirements and orchestration remain in aws/aws-durable-execution-conformance-tests#131 and the shared conformance repository. Coordinate requirement changes there instead of adding Python-only workarounds.
Related work with broader ownership
- [Feature]: Add Python LMI cloud tests for lifecycle, concurrency and OpenTelemetry #742 owns deployed Python LMI observability/X-Ray coverage alongside lifecycle tests. It already has Java #798 — Durable Functions on LMI as its parent; retain that hierarchy and track the Python OTel acceptance here by reference.
- Improve the monorepo release process #716 and [Bug]: Fix release publish workflow #487 track cross-package release/publishing behavior, including the OTel package. Their broader release scope remains separate; link any concrete OTel release blocker discovered while delivering this work.
- Plugin conformance tests are flaky when CloudWatch logs are not yet visible #708 tracks log-visibility flakiness in the general plugin conformance suite. It is related test-infrastructure work, not evidence that an OTel runtime fix has passed or failed.
Working independently
Start each implementation from current main, use the child issue's focused regression, and keep unrelated runtime/testing changes in their own PRs. Coordinate overlapping files without recreating the closed implementation stack. Test the combined fixes through the public SDK and real exporters after they land. A closed child issue must link the merged fix or an explicit resolution; do not close this parent merely because a tracking PR exists.
Completion criteria
- All native sub-issues have merged fixes or an explicitly documented disposition.
- Replay preserves saved successes/failures, operation identity, and completed-work skipping; completion telemetry has the correct parent, status, event bounds, and export phase in both views.
- Export-failure cleanup and provider-flush behavior satisfy the bounds and ownership rules in their child issues without claiming exactly-once delivery.
- Runner parity is checked across memory/filesystem stores, replay/state reads, callback updates, and history serialization; installed-wheel lanes exercise the built testing library.
- Deferred conformance cases and the additional callback-error regression are restored and qualified, with remaining gaps shown explicitly rather than counted as passes.
- Python LMI OTel acceptance is linked from [Feature]: Add Python LMI cloud tests for lifecycle, concurrency and OpenTelemetry #742, with deployed evidence appropriate to Python's process model.
- Documentation and validation results reflect the final behavior, and external assumptions have evidence or are marked unverified. In particular, the empty callback-error
Error.Payloadservice shape is currently documented as unverified against deployed Lambda in test(otel): cover replay and chained execution #796.
Activity