Skip to content

Retire Agent365 observability distributions - #289

Open
Nikhil Navakiran (nikhilNava) wants to merge 8 commits into
mainfrom
retire-observability
Open

Nikhil Navakiran (nikhilNava) wants to merge 8 commits into
mainfrom
retire-observability

Conversation

@nikhilNava

@nikhilNava Nikhil Navakiran (nikhilNava) commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary Retire all six Agent365 Observability distributions from this repository while preserving the eight Notifications, Runtime, and Tooling packages. - Remove Observability implementations, dedicated tests/examples, workspace members, observability-only Runtime APIs, and exclusive dependencies. Keep shared dependencies required by remaining frameworks. - Update the lockfile, architecture/package documentation, repository instructions, and dependency diagram. Preserve historical changelogs. Document the Runtime API break and set the shared next-major release target to 3.0.0. - Add a prominently linked consumer migration and package-owner guide directing users to the separately maintained microsoft-opentelemetry distro. - Build into fresh directories and verify the exact active wheel inventory, versions, payloads, and dependency metadata before artifact upload/publication. Reject retired, unexpected, missing, or stale artifacts; publish from a single downstream job after both Python matrix jobs succeed, and surface upload failures. ### Retired distributions - microsoft-agents-a365-observability-core - microsoft-agents-a365-observability-hosting - microsoft-agents-a365-observability-extensions-agent-framework - microsoft-agents-a365-observability-extensions-langchain - microsoft-agents-a365-observability-extensions-openai - microsoft-agents-a365-observability-extensions-semantic-kernel ### Migration and operational boundaries This is an intentional removal, not a drop-in compatibility layer. The guide documents uninstall/install steps, verified imports/APIs, initialization, route-specific authentication, context propagation, framework instrumentation, unsupported functionality, and why generic OTLP does not guarantee Agent365 parity. The guide also includes an owner-operated PyPI retirement checklist and ready-to-paste retirement text. This PR does not change PyPI settings, yank/delete published versions, or disable external publishers. Owners must address project notices/archival, old release branches and workflow reruns, external promotion pipelines, publisher credentials, and previously staged artifacts. ## Validation - Python 3.11: 491 tests passed, including a fresh pre-commit run. - Python 3.12: 491 tests passed through tox using the corrected build-backend configuration from main. - Ruff lint/format and centralized dependency constraints passed. - Strict mypy passed for the new release verifier and its tests. - Fresh 3.0.0 builds produced exactly eight wheels with no retired distributions, namespaces, or dependencies. - Retired dependencies are removed. All retained patched package versions/sources from main are preserved, and publisher/coverage tools remain locked. Existing limitations: package-level type checks still report errors in 14 unchanged source files. The published-metadata test file also retains two strict-mypy index errors, reproduced unchanged against its pre-fix baseline; the added regression test introduces no new type errors. The unit suite emits two existing warnings. Builds and source-copying wheel tests were run sequentially because the existing backend temporarily rewrites package manifests.

Move observability consumers to the separately maintained Microsoft
OpenTelemetry distro while preserving Notifications, Runtime, and Tooling.
Remove retired packages and exclusive dependencies, retain historical
changelogs, and document migration and package-owner retirement actions.

Guard release artifacts against stale or retired distributions before
promotion and publication.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4c600437-fe81-4d93-82b7-f59a2d8ed1f9
Copilot AI balanced review requested due to automatic review settings October 28, 2026 22:17
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

The following issues were found:
  • ✅ 0 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ⚠️ 1 package(s) with unknown licenses.
See the Details below.

License Issues

uv.lock

PackageVersionLicenseIssue Type
backports-tarfile1.2.0NullUnknown License
Denied Licenses: GPL-3.0-only, AGPL-3.0-only

OpenSSF Scorecard

Scorecard details
PackageVersionScoreDetails
actions/actions/download-artifact d3f86a106a0bac45b974a628896c90dbdf5c8093 🟢 5.4
Details
CheckScoreReason
Maintained🟢 34 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 3
Packaging⚠️ -1packaging workflow not detected
Binary-Artifacts🟢 10no binaries found in the repo
Code-Review🟢 10all changesets reviewed
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
SAST🟢 10SAST tool is run on all commits
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
pip/backports-tarfile 1.2.0 UnknownUnknown
pip/coverage 7.17.0 UnknownUnknown
pip/docutils 0.23 UnknownUnknown
pip/id 1.6.1 UnknownUnknown
pip/jaraco-classes 3.4.0 🟢 4.7
Details
CheckScoreReason
Code-Review⚠️ 0Found 0/30 approved changesets -- score normalized to 0
Binary-Artifacts🟢 10no binaries found in the repo
Packaging⚠️ -1packaging workflow not detected
Maintained🟢 68 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 6
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Security-Policy🟢 10security policy file detected
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Token-Permissions🟢 9detected GitHub workflow tokens with excessive permissions
SAST⚠️ 0no SAST tool detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
License⚠️ 0license file not detected
Fuzzing⚠️ 0project is not fuzzed
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
pip/jaraco-context 6.1.2 UnknownUnknown
pip/jaraco-functools 4.6.0 UnknownUnknown
pip/jeepney 0.9.0 UnknownUnknown
pip/keyring 25.7.0 UnknownUnknown
pip/markdown-it-py 4.2.0 UnknownUnknown
pip/mdurl 0.1.2 UnknownUnknown
pip/nh3 0.3.7 UnknownUnknown
pip/pytest-cov 7.1.0 UnknownUnknown
pip/pywin32-ctypes 0.2.3 🟢 3
Details
CheckScoreReason
Maintained⚠️ 00 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Packaging⚠️ -1packaging workflow not detected
Code-Review⚠️ 0Found 0/30 approved changesets -- score normalized to 0
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Security-Policy⚠️ 0security policy file not detected
License🟢 9license file detected
Fuzzing⚠️ 0project is not fuzzed
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Signed-Releases⚠️ -1no releases found
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
pip/readme-renderer 46.0 UnknownUnknown
pip/rfc3986 2.0.0 UnknownUnknown
pip/rich 15.0.0 UnknownUnknown
pip/secretstorage 3.5.0 UnknownUnknown
pip/twine 6.2.0 UnknownUnknown

Scanned Files

  • .github/workflows/ci.yml
  • libraries/microsoft-agents-a365-observability-hosting/pyproject.toml
  • uv.lock

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues remain for the observability retirement and release-safeguard changes.

No open issues 🎉

What changed in this PR

Retires all six Agent365 observability distributions while retaining the eight Notifications, Runtime, and Tooling packages. Adds release safeguards to prevent retired, unexpected, missing, or stale artifacts from being published.

Changes:

  • Removes observability implementations, dedicated tests/examples, workspace entries, dependencies, and observability-only Runtime APIs.
  • Adds wheel inventory, version, payload, and dependency verification; updates CI to build fresh artifacts and publish from one matrix job.
  • Updates package, architecture, testing, and contributor guidance while preserving historical changelogs.
File Description
tests/​usage_example.py Removes the retired observability example.
tests/​test_release_artifacts.py Tests artifact verification and retirement safeguards.
tests/​test_published_security_constraints.py Updates active package expectations and rejects retired dependencies.
tests/​TEST_PLAN.md Removes observability testing plans.
tests/​test_dependency_constraints.py Updates the active internal package inventory.
tests/​runtime/​test_environment_utils.py Removes tests for the retired scope helper.
tests/​RUNNING_TESTS.md Updates setup and remaining test-suite guidance.
tests/​README.md Documents the remaining offline test scope.
tests/​observability/​hosting/​token_cache_helpers/​__init__.py Removes the retired test initializer.
tests/​observability/​hosting/​scope_helpers/​test_scope_helper_utils.py Removes hosting attribute-extraction tests.
tests/​observability/​hosting/​scope_helpers/​test_populate_invoke_agent_scope.py Removes invocation-scope population tests.
tests/​observability/​hosting/​scope_helpers/​test_populate_baggage.py Removes baggage-population tests.
tests/​observability/​hosting/​middleware/​test_observability_hosting_manager.py Removes hosting middleware configuration tests.
tests/​observability/​hosting/​middleware/​__init__.py Removes the middleware test initializer.
tests/​observability/​hosting/​__init__.py Removes the hosting test initializer.
tests/​observability/​extensions/​semantickernel/​test_wrapper_semantic_kernel.py Removes Semantic Kernel instrumentation tests.
tests/​observability/​extensions/​semantickernel/​test_span_enricher.py Removes Semantic Kernel enrichment tests.
tests/​observability/​extensions/​semantickernel/​__init__.py Removes the adapter test initializer.
tests/​observability/​extensions/​openai/​test_trace_processor_bounded.py Removes bounded trace-processor tests.
tests/​observability/​extensions/​openai/​test_prompt_suppression.py Removes prompt-suppression tests.
tests/​observability/​extensions/​openai/​integration/​conftest.py Removes live OpenAI integration fixtures.
tests/​observability/​extensions/​openai/​integration/​__init__.py Removes the integration test initializer.
tests/​observability/​extensions/​openai/​__init__.py Removes the adapter test initializer.
tests/​observability/​extensions/​langchain/​test_tracer_bounded.py Removes bounded LangChain tracer tests.
tests/​observability/​extensions/​langchain/​integration/​conftest.py Removes live LangChain integration fixtures.
tests/​observability/​extensions/​langchain/​integration/​__init__.py Removes the integration test initializer.
tests/​observability/​extensions/​langchain/​__init__.py Removes the adapter test initializer.
tests/​observability/​extensions/​agentframework/​test_utils.py Removes message-extraction tests.
tests/​observability/​extensions/​agentframework/​test_span_enricher.py Removes Agent Framework enrichment tests.
tests/​observability/​extensions/​agentframework/​integration/​conftest.py Removes live Agent Framework integration fixtures.
tests/​observability/​extensions/​agentframework/​integration/​__init__.py Removes the integration test initializer.
tests/​observability/​extensions/​agentframework/​__init__.py Removes the adapter test initializer.
tests/​observability/​extensions/​__init__.py Removes the extension test initializer.
tests/​observability/​core/​test_utils.py Removes telemetry utility tests.
tests/​observability/​core/​test_span_processor.py Removes baggage-to-span propagation tests.
tests/​observability/​core/​test_output_scope.py Removes output-scope tests.
tests/​observability/​core/​test_output_scope_bounded.py Removes output-message replacement tests.
tests/​observability/​core/​test_export_config_consistency.py Removes retired export configuration tests.
tests/​observability/​core/​exporters/​test_enriching_span_processor.py Removes enrichment processor tests.
tests/​observability/​core/​exporters/​test_enriched_span.py Removes enriched-span wrapper tests.
tests/​observability/​core/​__init__.py Removes the core test initializer.
tests/​observability/​__init__.py Removes the observability test initializer.
tests/​.env.example Removes retired integration credential examples.
scripts/​verify_release_artifacts.py Validates wheel inventory, versions, payloads, and dependencies.
pyproject.toml Removes retired workspace members, dependencies, and integration configuration.
libraries/​microsoft-agents-a365-runtime/​README.md Clarifies retained Runtime functionality and links migration guidance.
libraries/​microsoft-agents-a365-runtime/​pyproject.toml Updates Runtime package metadata.
libraries/​microsoft-agents-a365-runtime/​microsoft_agents_a365/​runtime/​environment_utils.py Removes observability scope constants and helper.
libraries/​microsoft-agents-a365-runtime/​microsoft_agents_a365/​runtime/​__init__.py Removes the retired helper export.
libraries/​microsoft-agents-a365-runtime/​docs/​design.md Documents retained environment utilities.
libraries/​microsoft-agents-a365-observability-hosting/​setup.py Removes hosting build configuration.
libraries/​microsoft-agents-a365-observability-hosting/​README.md Removes retired hosting documentation.
libraries/​microsoft-agents-a365-observability-hosting/​pyproject.toml Removes the hosting distribution manifest.
libraries/​microsoft-agents-a365-observability-hosting/​microsoft_agents_a365/​observability/​hosting/​token_cache_helpers/​__init__.py Removes token-cache exports.
libraries/​microsoft-agents-a365-observability-hosting/​microsoft_agents_a365/​observability/​hosting/​scope_helpers/​utils.py Removes hosting telemetry attribute extraction.
libraries/​microsoft-agents-a365-observability-hosting/​microsoft_agents_a365/​observability/​hosting/​scope_helpers/​populate_invoke_agent_scope.py Removes invocation-scope population.
libraries/​microsoft-agents-a365-observability-hosting/​microsoft_agents_a365/​observability/​hosting/​scope_helpers/​populate_baggage.py Removes hosting baggage population.
libraries/​microsoft-agents-a365-observability-hosting/​microsoft_agents_a365/​observability/​hosting/​scope_helpers/​__init__.py Removes the scope-helper initializer.
libraries/​microsoft-agents-a365-observability-hosting/​microsoft_agents_a365/​observability/​hosting/​middleware/​observability_hosting_manager.py Removes hosting middleware configuration.
libraries/​microsoft-agents-a365-observability-hosting/​microsoft_agents_a365/​observability/​hosting/​middleware/​baggage_middleware.py Removes baggage propagation middleware.
libraries/​microsoft-agents-a365-observability-hosting/​microsoft_agents_a365/​observability/​hosting/​middleware/​__init__.py Removes middleware exports.
libraries/​microsoft-agents-a365-observability-hosting/​microsoft_agents_a365/​observability/​hosting/​__init__.py Removes hosting public exports.
libraries/​microsoft-agents-a365-observability-extensions-semantickernel/​setup.py Removes extension build configuration.
libraries/​microsoft-agents-a365-observability-extensions-semantickernel/​README.md Removes retired adapter documentation.
libraries/​microsoft-agents-a365-observability-extensions-semantickernel/​pyproject.toml Removes the extension manifest.
libraries/​microsoft-agents-a365-observability-extensions-semantickernel/​microsoft_agents_a365/​observability/​extensions/​semantickernel/​utils.py Removes message-extraction utilities.
libraries/​microsoft-agents-a365-observability-extensions-semantickernel/​microsoft_agents_a365/​observability/​extensions/​semantickernel/​trace_instrumentor.py Removes Semantic Kernel instrumentation.
libraries/​microsoft-agents-a365-observability-extensions-semantickernel/​microsoft_agents_a365/​observability/​extensions/​semantickernel/​span_processor.py Removes Semantic Kernel span processing.
libraries/​microsoft-agents-a365-observability-extensions-semantickernel/​microsoft_agents_a365/​observability/​extensions/​semantickernel/​span_enricher.py Removes Semantic Kernel span enrichment.
libraries/​microsoft-agents-a365-observability-extensions-semantickernel/​microsoft_agents_a365/​observability/​extensions/​semantickernel/​__init__.py Removes the adapter initializer.
libraries/​microsoft-agents-a365-observability-extensions-semantickernel/​docs/​design.md Removes retired adapter design documentation.
libraries/​microsoft-agents-a365-observability-extensions-openai/​setup.py Removes extension build configuration.
libraries/​microsoft-agents-a365-observability-extensions-openai/​README.md Removes retired adapter documentation.
libraries/​microsoft-agents-a365-observability-extensions-openai/​pyproject.toml Removes the extension manifest.
libraries/​microsoft-agents-a365-observability-extensions-openai/​microsoft_agents_a365/​observability/​extensions/​openai/​trace_instrumentor.py Removes OpenAI Agents instrumentation.
libraries/​microsoft-agents-a365-observability-extensions-openai/​microsoft_agents_a365/​observability/​extensions/​openai/​constants.py Removes tracing constants.
libraries/​microsoft-agents-a365-observability-extensions-openai/​microsoft_agents_a365/​observability/​extensions/​openai/​__init__.py Removes instrumentor exports.
libraries/​microsoft-agents-a365-observability-extensions-openai/​docs/​design.md Removes retired adapter design documentation.
libraries/​microsoft-agents-a365-observability-extensions-langchain/​setup.py Removes extension build configuration.
libraries/​microsoft-agents-a365-observability-extensions-langchain/​README.md Removes retired adapter documentation.
libraries/​microsoft-agents-a365-observability-extensions-langchain/​pyproject.toml Removes the extension manifest.
libraries/​microsoft-agents-a365-observability-extensions-langchain/​microsoft_agents_a365/​observability/​extensions/​langchain/​__init__.py Removes LangChain instrumentor exports.
libraries/​microsoft-agents-a365-observability-extensions-langchain/​docs/​design.md Removes retired adapter design documentation.
libraries/​microsoft-agents-a365-observability-extensions-agentframework/​setup.py Removes extension build configuration.
libraries/​microsoft-agents-a365-observability-extensions-agentframework/​README.md Removes retired adapter documentation.
libraries/​microsoft-agents-a365-observability-extensions-agentframework/​pyproject.toml Removes the extension manifest.
libraries/​microsoft-agents-a365-observability-extensions-agentframework/​microsoft_agents_a365/​observability/​extensions/​agentframework/​utils.py Removes message-extraction utilities.
libraries/​microsoft-agents-a365-observability-extensions-agentframework/​microsoft_agents_a365/​observability/​extensions/​agentframework/​trace_instrumentor.py Removes Agent Framework instrumentation.
libraries/​microsoft-agents-a365-observability-extensions-agentframework/​microsoft_agents_a365/​observability/​extensions/​agentframework/​span_processor.py Removes framework span processing.
libraries/​microsoft-agents-a365-observability-extensions-agentframework/​microsoft_agents_a365/​observability/​extensions/​agentframework/​span_enricher.py Removes Agent Framework span enrichment.
libraries/​microsoft-agents-a365-observability-extensions-agentframework/​microsoft_agents_a365/​observability/​extensions/​agentframework/​__init__.py Removes instrumentor exports.
libraries/​microsoft-agents-a365-observability-extensions-agentframework/​docs/​design.md Removes retired adapter design documentation.
libraries/​microsoft-agents-a365-observability-core/​setup.py Removes core build configuration.
libraries/​microsoft-agents-a365-observability-core/​README.md Removes retired core documentation.
libraries/​microsoft-agents-a365-observability-core/​pyproject.toml Removes the core distribution manifest.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​trace_processor/​util.py Removes tracing attribute inventories.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​trace_processor/​span_processor.py Removes baggage-to-span processing.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​trace_processor/​__init__.py Removes processor exports.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​tool_type.py Removes telemetry tool types.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​tool_call_details.py Removes tool-call telemetry details.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​spans_scopes/​output_scope.py Removes output-message tracing scopes.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​spans_scopes/​__init__.py Removes the scope initializer.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​span_details.py Removes span configuration models.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​request.py Removes the tracing request model.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​models/​user_details.py Removes telemetry user details.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​models/​service_endpoint.py Removes the telemetry endpoint model.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​models/​response.py Removes the tracing response model.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​models/​operation_source.py Removes operation-source telemetry types.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​models/​caller_details.py Removes caller telemetry details.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​models/​agent_type.py Removes agent telemetry classifications.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​models/​__init__.py Removes the model initializer.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​middleware/​__init__.py Removes baggage-builder exports.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​message_utils.py Removes telemetry message normalization and serialization.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​invoke_agent_details.py Removes invocation-scope configuration.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​inference_operation_type.py Removes inference telemetry types.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​inference_call_details.py Removes inference telemetry details.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​guardrail_target_type.py Removes guardrail target constants.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​guardrail_risk_severity.py Removes guardrail severity constants.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​guardrail_finding.py Removes guardrail finding models.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​guardrail_details.py Removes guardrail telemetry details.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​guardrail_decision_type.py Removes guardrail decision types.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​exporters/​spectra_exporter_options.py Removes Spectra exporter configuration.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​exporters/​enriching_span_processor.py Removes enrichment registration and processing.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​exporters/​enriched_span.py Removes enriched-span wrapping and serialization.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​exporters/​agent365_exporter_options.py Removes Agent365 exporter configuration.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​exporters/​__init__.py Removes exporter exports.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​channel.py Removes the tracing channel model.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​agent_details.py Removes agent telemetry details.
libraries/​microsoft-agents-a365-observability-core/​microsoft_agents_a365/​observability/​core/​__init__.py Removes the core observability public API.
generate_dependency_diagram.py Removes retired package categories and styling.
docs/​prd/​tasks/​CentralizedPackageVersions-Tasks.md Clarifies historical task scope.
docs/​prd/​PRD-CentralizedPackageVersions.md Distinguishes historical design from current scope.
docs/​changelogs/​observability-hosting.md Preserves hosting release history.
docs/​changelogs/​observability-extensions-semantickernel.md Preserves Semantic Kernel release history.
docs/​changelogs/​observability-extensions-openai.md Preserves OpenAI extension release history.
docs/​changelogs/​observability-extensions-langchain.md Preserves LangChain extension release history.
DEPENDENCIES.md Updates the diagram to the eight active packages.
.github/​workflows/​ci.yml Adds fresh artifact directories, verification, and single-job publication.
.github/​copilot-instructions.md Documents retirement and release safeguards.
.claude/​commands/​review-pr.md Replaces the observability-specific review example.
.claude/​agents/​task-implementer.md Updates package and testing guidance.
.claude/​agents/​prd-writer.md Updates architecture planning guidance.
.claude/​agents/​prd-task-generator.md Updates task-generation package scope.

Review effort: Balanced

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The retirement is carried through the workspace, lockfile, and publish path, and the new wheel check fails closed instead of skipping bad artifacts. The migration write-up matches the deleted exporter route and is specific about what callers must change.

Two minor comments inline.

Comment thread tests/test_release_artifacts.py Resolved
Comment thread README.md Resolved
Isolate stale-version regression coverage from duplicate-wheel rejection and restore Bash build instructions alongside PowerShell examples.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4c600437-fe81-4d93-82b7-f59a2d8ed1f9
Copilot AI balanced review requested due to automatic review settings October 29, 2026 18:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues were identified for the observability retirement and release-safeguard changes.

No open issues 🎉

Review effort: Balanced

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The retirement is carried through the workspace, lockfile, and publish path, and the new wheel check fails closed instead of skipping bad artifacts. The migration guide is specific about what callers have to change.

Two minor comments inline.

Since my last review:

  • Fixed: Isolate stale-version rejection from duplicate-wheel rejection (tests/test_release_artifacts.py)
  • Fixed: Contributor build step is now Windows-only PowerShell (README.md)

Comment thread docs/design.md Resolved
Comment thread .github/workflows/ci.yml Resolved
Replace the missing .pypirc dependency with an owner-configured upload URL and fail explicitly when it is absent. Preserve artifact verification and upload failure propagation, document owner setup, and make architecture build examples portable.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4c600437-fe81-4d93-82b7-f59a2d8ed1f9
Copilot AI balanced review requested due to automatic review settings October 29, 2026 20:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues remain to block approval.

No open issues 🎉

Review effort: Balanced

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The safeguards match the claim that only the eight active distributions can be released.

Two minor comments inline.

Since my last review:

  • Fixed: Architecture build snippet still depends on $env:TEMP (docs/design.md)
  • Fixed: Publish step can't succeed without a .pypirc, and its failure is now fatal (.github/workflows/ci.yml)

Comment thread HOW_TO_SET_A_VERSION.md Resolved
Comment thread HOW_TO_SET_A_VERSION.md Resolved
Chain URL validation and artifact verification before manual upload, even without shell errexit. Use portable paths in the PowerShell release procedure.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4c600437-fe81-4d93-82b7-f59a2d8ed1f9
Copilot AI balanced review requested due to automatic review settings October 29, 2026 21:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Retiring six published distributions requires owner confirmation of consumer migration readiness and controls over legacy release branches, publisher credentials, and external artifact promoters that cannot be validated from this checkout.

No open issues 🎉

Review effort: Balanced

@rbrighenti

Copy link
Copy Markdown
Contributor

Claude Code Review Summary

Review Date: 2026-10-30T13:45:13Z
Commit: 8a773dc
Approval Status: APPROVED WITH MINOR NOTES (address CRM-001 to CRM-003 before merge)

Local validation: uv lock --check, ruff check, and ruff format --check passed, and pytest passed (485 tests). Migration-guide claims were checked against the removed source and upstream microsoft/opentelemetry-distro-python@81ba38b6.

Findings Summary

Severity Count
Critical 0
High 0
Medium 3
Low 4
  • 🟡 CRM-001: The publish step installs an unpinned, unlocked twine while it holds the feed token
  • 🟡 CRM-002: Runtime public API removal has no Runtime CHANGELOG entry
  • 🟡 CRM-003: Migration guide omits the distro's replacement scope helper and its different default scope
  • 🔵 CRM-004: Guide conflicts with upstream Step 1 on uninstalling Runtime without saying so
  • 🔵 CRM-005: FIC description omits the documented DefaultAzureCredential fallback
  • 🔵 CRM-006: CODEOWNERS still routes removed paths
  • 🔵 CRM-007: Release-gate tests miss several verifier branches

Positives

  • The retirement is complete. No library, test, workspace, tox, or workflow references to the retired packages remain.
  • Historical changelogs were moved byte-for-byte (R100).
  • The fail-closed wheel verifier runs at build and again before upload. Publishing is limited to one matrix leg, and upload failures are no longer swallowed.
  • uv sync --locked now enforces the committed lockfile in CI.

Comment thread .github/workflows/ci.yml Resolved
@rbrighenti

Copy link
Copy Markdown
Contributor

🔵 [CRM-006] CODEOWNERS still routes removed paths

Severity low
File .github/CODEOWNERS
Line(s) 4-5 (file not in this PR's diff)
Identified By architecture-reviewer

Description

/libraries/microsoft-agents-a365-observability-*/ and /tests/observability/ remain in CODEOWNERS. They do no harm, but they are stale, and they would auto-request the observability team if anyone recreated those paths.

Suggestion

Remove the entries, or keep them intentionally as a tripwire and add a comment saying so.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The retirement is applied consistently across the workspace, and the new wheel check fails closed instead of skipping bad artifacts. That is the right shape for this removal; the release path and the remaining package contract need to be held to the same standard.

Two things to address before this merges; details inline.

Comment thread .github/workflows/ci.yml Resolved
Comment thread tests/RUNNING_TESTS.md Resolved
Lock publishing and coverage tools, gate uploads on the complete Python matrix, document the breaking 3.0.0 retirement and route-specific migration, and cover remaining wheel-verifier branches.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4c600437-fe81-4d93-82b7-f59a2d8ed1f9
Copilot AI balanced review requested due to automatic review settings October 30, 2026 14:16
@nikhilNava

Copy link
Copy Markdown
Contributor Author

CRM-006: removed the two retired Observability CODEOWNERS rules in 5ca59d7.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues are reported for the Observability package retirement.

No open issues 🎉

Review effort: Balanced

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The remaining package surface and the migration guidance line up with that removal.

Two things to address before this merges; details inline.

Since my last review:

  • Fixed: Release upload does not wait for the 3.12 test leg (.github/workflows/ci.yml)
  • Fixed: Test setup no longer installs pytest-cov, so the documented coverage commands fail (tests/RUNNING_TESTS.md)

Keep Runtime installed after consumers remove observability packages. Cover the exact wheel requirement, regenerate the dependency graph and lock, and fix the Runtime migration link in the published description.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4c600437-fe81-4d93-82b7-f59a2d8ed1f9

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues remain for the observability retirement and retained-package changes.

No open issues 🎉

Review effort: Balanced

Preserve the patched dependency versions and tox configuration from main while resolving the generated lockfile without restoring retired observability packages.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4c600437-fe81-4d93-82b7-f59a2d8ed1f9
Copilot AI balanced review requested due to automatic review settings October 30, 2026 15:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues require changes to the observability retirement and retained-package updates.

No open issues 🎉

Review effort: Balanced

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Approving at 8083a24. All seven earlier findings (CRM-001–007) are fixed in 5ca59d7/cdc2506:

  • twine 6.2.0 is locked.
  • The publish job waits for the full matrix and re-verifies wheels before upload.
  • The Runtime CHANGELOG has a breaking-change entry.
  • The migration guide covers the scope helper, the upstream Step 1 override, and the DefaultAzureCredential fallback.
  • CODEOWNERS is cleaned up, and the verifier has new tests for the uncovered branches.

The 3.0.0 release target and the retirement plan are confirmed by the owner. Merging main only touched uv.lock. The merged lock passes uv lock --check, keeps every security bump from #290, and has no observability entries. CI is green on this head.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The retirement is carried through the workspace, lockfile, and publish path, and the wheel check fails closed instead of shipping a stale drop. The remaining Runtime and Tooling contract, including the 3.0.0 target, matches that removal.

One minor comment inline.

Comment thread docs/design.md Resolved
Describe the downstream publisher, its full-matrix gate, and artifact re-verification instead of the previous matrix-cell upload.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4c600437-fe81-4d93-82b7-f59a2d8ed1f9

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues are reported that would block approval.

No open issues 🎉

Review effort: Balanced

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Re-approving at a8f410a. The only change since my previous approval (8083a24, dismissed by the push) is the docs/design.md publishing description. It now matches the workflow: a downstream job waits for both Python legs, downloads the 3.11 artifact, and re-verifies before upload. versioning/TARGET-VERSION is still 3.0.0, and CI is green on this head.

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.

6 participants