Repository navigation
[Teams Chatbot] Onboard API Stewardship Board - #17266
Jiaqi Zhang (JiaqiZhang-Dev) wants to merge 46 commits into
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
|
Azure Pipelines: Successfully started running 2 pipeline(s). 70 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d # Conflicts: # tools/sdk-ai-bots/azure-sdk-qa-bot-agent/tests/tenant_config_test.py # tools/sdk-ai-bots/azure-sdk-qa-bot-evaluation/unit_tests/test_pure_logic.py # tools/sdk-ai-bots/azure-sdk-qa-bot-knowledge-sync/tests/configurationLoader.test.ts
Integrate final GitHub MCP overflow handling from jiaqizhang-dev-github-comment-retrieval, centralize shared review guidance, and revert unused frontend channel onboarding changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
…ipped Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Keep specialist routing in tenant configuration and preserve safeguards from real channel threads. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
There was a problem hiding this comment.
🟡 Changes recommended
Missing channel mappings, unsupported dev/test deployment selections, and incomplete check retrieval leave routing and diagnosis gaps.
3 open issues
What changed in this PR
Onboards the API Stewardship Board to the existing Azure SDK chat agent, with advisory-only guidance, scoped knowledge retrieval, and evaluation coverage.
Changes:
- Registers the Board tenant and guidance, adds dev/test listener channels, and configures a disabled production listener.
- Improves shared PR diagnosis, policy applicability checks, and oversized GitHub log handling.
- Adds maintained knowledge sources, 35 evaluation records, and regression coverage.
| File | Description |
|---|---|
| tools/sdk-ai-bots/perf-evaluation.yml | Adds the Board performance scenario. |
| tools/sdk-ai-bots/offline-evaluation.yml | Adds the Board offline scenario. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-knowledge-sync/tests/configurationLoader.test.ts | Tests the new documentation sources. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-knowledge-sync/config/knowledge-config.json | Adds Avocado and package-name approval documentation. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-evaluation/unit_tests/test_pure_logic.py | Tests datasets, tenant selection, and pipeline invocation. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-evaluation/evaluation_datasets/perf/apistewardshipboard.jsonl | Adds 34 Board evaluation cases. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-evaluation/evaluation_datasets/basic/apistewardshipboard.jsonl | Adds a basic review-request case. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-evaluation/_evals_runner.py | Maps the Board scenario to its channel name. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/tools/knowledge_tools.py | Targets retrieval at current evidence gaps. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/tools/github_mcp_tools.py | Enables job-log retrieval and bounded diagnostic excerpts. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/tests/tenant_config_test.py | Covers Board configuration and shared guidance. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/tests/source_scoping_test.py | Tests Board knowledge-source filtering. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/tests/knowledge_tools_test.py | Checks updated search-query guidance. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/tests/github_mcp_parser_test.py | Tests log excerpts, output limits, and redaction. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/skills/tenant_skills.py | Advertises Board guidance and adjusts specialist routing. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/prompts/tenants/api_stewardship_board.md | Defines advisory scope and review guidance. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/prompts/tenants/api_spec_review.md | Delegates PR diagnosis to shared guidance. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/pipelines/logicapp/template.json | Makes listener state configurable. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/pipelines/logicapp/parameters.azure_sdk.test.json | Adds the Board test channel. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/pipelines/logicapp/parameters.azure_sdk.dev.json | Adds the Board development channel. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/pipelines/logicapp/parameters.api_stewardship_board.prod.json | Configures the dedicated, disabled production listener. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/pipelines/logicapp-cd.yml | Adds the Board deployment selection. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/config/tenant_config.py | Registers the tenant, sources, and scope. |
| tools/sdk-ai-bots/azure-sdk-qa-bot-agent/agents/chat_agent/instruction.md | Refines shared PR investigation and evidence-based answers. |
Review effort: Balanced
Read the PR, commit statuses, and check runs in parallel and use both check-run and status-context links for diagnosis. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Resolve all dev/test deployments to the shared Azure SDK listener while retaining team-specific production deployments. Add the MCP dev/test channels and remove unused dedicated parameter files. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Restore expert conclusions and necessary case context while keeping historical remedies scoped and removing unrelated expectations. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Allow all synced engineering documentation for the Stewardship tenant while preserving source and service-plane scoping. Add regression coverage for unrestricted document titles and namespace-review links. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
|
|
||
| Stay within the tool-call budget: diagnosing a PR already requires reading the PR and its check runs; only if needed, add a single `get_file_contents` call to read `CODEOWNERS`. | ||
| GitHub MCP is read-only — never request reviewers or merge on the user's behalf. | ||
| ## PR Review Workflow |
There was a problem hiding this comment.
Is this the general flow or does it only impact API Stewardship Board channel?
There was a problem hiding this comment.
As this PR is about API Stewardship Board, shall we split this change in a separate PR?
There was a problem hiding this comment.
Agreed, this is shared behavior, not specific to the Board channel. Moved the shared PR-review workflow, GitHub log/overflow fixes, retrieval and existing-tenant fixes, and generic dev/test listener consolidation to #17398.
#17266 now temporarily targets that branch, so its diff contains only Board onboarding and the required configuration. The combined code is preserved without rewriting history. After #17398 merges, we'll return this PR's base to main. Board production remains disabled.
| ), | ||
| TenantID.AZURE_SDK_ONBOARDING: ( | ||
| "Azure SDK onboarding process: service onboarding phases, SDK lifecycle, " | ||
| "repository access and permissions (including specification repositories), " |
There was a problem hiding this comment.
Just curious, why do we update the api-spec-review and azure-sdk-onboarding descriptions? Is it because repository permissions might relate to spec-review?
There was a problem hiding this comment.
Yes—repository/workflow access can be the cause of a spec PR's checks being stuck or awaiting approval. Those edits remove the blanket reroute to SDK Onboarding so the shared PR workflow can diagnose the access/trigger evidence without switching tenants just for permissions.
That is an existing-tenant behavior change, not a Board onboarding requirement, so I've moved the description/configuration changes and their tests to #17398. This PR's skill-description diff now only adds the Board skill.
Separate shared PR diagnostics, bounded GitHub log retrieval, evidence-gap searches, existing-tenant guidance and filters, and shared dev/test listeners from Stewardship onboarding. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
Stack the onboarding changes on the independently reviewed shared fixes without rewriting history. Preserve the original combined feature state together with current main updates. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d
The base branch was changed.
Integrate the merged PR review workflow, update Board skill delegation, remove obsolete shared test contracts, and preserve Board dev/test listener subscriptions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 51c50bdd-a0cd-4d23-b7a1-b92f02400d4d


Purpose
Bring the existing Azure SDK chatbot to the API Stewardship Board channel to help with data-plane API design, review processes, compatibility questions, and Board review guidance. Reuse
azure-sdk-chat-agentrather than introduce a separate agent.Related to Azure/azure-sdk-pr#3031.
PR stack and scope
Depends on #17398. This PR temporarily targets
jiaqizhang-dev-shared-chatbot-fixes, so its diff contains only Stewardship onboarding and its required configuration. Merge #17398 first, then synchronize this branch with currentmainas needed and return this PR's base tomain.Shared PR/CI investigation, GitHub log/overflow handling, retrieval guidance, fixes to existing tenants, and generic dev/test listener consolidation have moved to #17398. They are not part of this PR's onboarding diff.
Changes
azure_sdklisteners, rather than creating dedicated Board dev/test listeners or parameter files.Split verification
The shared branch was incorporated with a normal merge commit, preserving the original onboarding history without a force-push. The combined tracked tree exactly matches the original feature state at
aac2cabc4plus the upstream main changes; the onboarding-only diff is 18 files.Focused combined agent coverage passed 128 tests; retained evaluation pure-logic coverage passed 34 tests, and knowledge configuration coverage passed 5 tests. All 9 team/environment combinations compiled in preview-only Logic App checks at
1fb73656b9ab7066130a0305c60827fc193a45c1: dev/test resolve to the shared SDK listener, production to the selected team's listener. No deployments or new hosted evaluations were run for the split. The evaluation below is the existing historical run, not a new result.Evaluation
Perf CI 6992928 evaluated 34 cases against dev agent v288, from commit
a564eaa72.Composite pass rate: 85.3% (29/34). The pipeline failed its quality gate on five cases.
Before rerunning, we audited the dataset against the 44-thread channel export and restored reasonable expert conclusions and necessary question context, while removing unrelated expectations. These remain curated scenarios, not verbatim transcripts.
All 34 cases used the updated references and routed to the correct agent version and Board tenant; none failed answer collection.
* All 34 grader context fields remain empty, so the groundedness scores do not establish factual accuracy.
Example questions and bot answers
Two passing cases and one below-threshold case are shown below. Questions and bot answers are copied verbatim from this run.
Previously approved break repeats in new preview (PASS; composite 5.0/5)
Question
Bot answer
Why it still fails
previeworGAversion must be backward compatible with the latest GA; andNrenamed a resource relative to GA, then previewN+1that keeps the same rename is still breaking relative to GA, and the tooling will report it again.Do you need another approval?
Adjacent distinction
Resource-specific LRO monitor is allowed (PASS; composite 5.0/5)
Question
Bot answer
Yes — for an LRO action on a specific resource, a resource-scoped status monitor under that resource is an acceptable pattern, and using an operation ID as the final path segment is consistent with Azure guidance and Azure.Core modeling.
operationId.kindproperty.Practical recommendation
POST /resources/{id}:action, a monitor shape like.../resources/{id}/operations/{operationId}is fine.WidgetandGadgetactions return different monitor/result shapes, separate per-resource-type monitor endpoints are preferable to a single mixed endpoint.Important distinction
PUTand a user-specified operation ID.Unknown InternalARMContracts synchronization rule (BELOW THRESHOLD; composite 2.0/5)
Question
Bot answer
No — you do not have to merge all of
mainfirst just to add an internal API toInternalARMContracts.InternalARMContractsis a private branch used for ARM-internal APIs, never published and with no SDK generation. It is also treated as a non-standard branch with only team-member approval required for merge.main.mainonly when needed, for example if:main,A useful distinction:
InternalARMContractsbranch itself: just change the files you need.InternalARMContracts: don’t mergemaininto that topic branch just because it exists; the release-branch guidance says to bring over only the specific changes you need, typically by cherry-pick or manual copy.If EngSys or branch behavior is acting up on this non-standard branch, the maintained guidance says the branch owner is the right contact, and the remediation is to bring the branch state back in line with
mainas needed.