{Misc.} Decentralize repository owned agents and tooling - #34160
Open
Aditya Pujara (a0x1ab) wants to merge 2 commits into
Open
Aditya Pujara (a0x1ab) wants to merge 2 commits into
Aditya Pujara (a0x1ab) wants to merge 2 commits into
Conversation
Preserve Coordinator, Fixer, Tester and Reviewer with versioned source inventories and repository-owned policy. Runtime activation remains explicitly gated on central integration, immutable discovery and validation parity. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9b1d5c02-4be1-4677-ac69-1046a5632dbc
Collaborator
|
Thank you for your contribution! We will review the pull request and get back to you soon. |
microsoft-github-policy-service
Bot
requested a review
from Yong Zhang (yonzhan)
October 2, 2026 07:29
Retain exact implementation bodies and deterministically serialize unordered settings. Verified with the real azdev license checker. Keep activation and execution-parity gates unchanged. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9b1d5c02-4be1-4677-ac69-1046a5632dbc
Aditya Pujara (a0x1ab)
marked this pull request as ready for review
October 2, 2026 08:51
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unresolved workflow authorization, handoff recovery, and review-policy correctness issues prevent safe approval.
Review effort: Balanced
Findings: 3
Open (9)
Core runtime files are excluded from production review · New Valid History Notes are ignored for release-note validation · New Unverified PR URLs incorrectly establish AAZ provenance · New Bounded AAZ PR search misreports older sources as absent · New Completion marker is posted before recoverable task handoff · New Unknown PR scope incorrectly labels module failures out of scope · New Workflow and dependency changes miss delivery risk signals · New Template HTML comments prevent related-command matching · New Reviewer lacks access to required regression coverage evidence · New
What changed in this PR
Moves Azure CLI’s repository-owned agents and tooling into the canonical .x package layout.
Changes:
- Adds scoped agent definitions and complete tooling implementations.
- Declares the repository profile, tool ownership, dependencies, and validation assets.
- Removes legacy charters and skill wrappers; documents migration provenance.
| File | Description |
|---|---|
.x/x.yml |
Declares the package profile, tools, inventory, and dependencies. |
.x/tools/validation/checks.py |
Adds repository validation routines. |
.x/tools/validation/assets/Validate-PowerShell.ps1 |
Adds PowerShell validation. |
.x/tools/validation/assets/Program.cs |
Adds C# syntax validation. |
.x/tools/validation/assets/CSharpSyntax.csproj |
Defines the C# validator project. |
.x/tools/tester/azure_cli/live_tests.py |
Adds test selection and regression evidence helpers. |
.x/tools/settings.py |
Centralizes repository-owned domain settings. |
.x/tools/reviewer/policy/analysis.py |
Adds review analysis and risk assessment. |
.x/tools/reviewer/azure_cli/review.py |
Adds CLI review and release-note policy. |
.x/tools/reviewer/azure_cli/failures.py |
Adds test-failure classification. |
.x/tools/fixer/title_gate/title_repair.py |
Adds title and History Notes repair. |
.x/tools/fixer/formatting/guidance.py |
Adds PR metadata guidance. |
.x/tools/fixer/azure_cli/targets.py |
Adds module and extension discovery. |
.x/tools/fixer/azure_cli/routing.py |
Adds extension tracker creation. |
.x/tools/fixer/azure_cli/guidance.py |
Adds code-generation guidance. |
.x/tools/fixer/azure_cli/aaz.py |
Adds AAZ task and source-PR helpers. |
.x/tester.md |
Removes the legacy Tester charter. |
.x/skills/start_extension_tracker_task.py |
Removes the legacy extension-handoff wrapper. |
.x/skills/start_aaz_source_task.py |
Removes the legacy AAZ task wrapper. |
.x/skills/promote_aaz_fork_pr.py |
Removes the legacy promotion wrapper. |
.x/skills/infer_target_for_repo.py |
Removes legacy target inference. |
.x/skills/get_pr_regression_coverage_summary.py |
Removes legacy coverage analysis. |
.x/skills/find_promoted_aaz_source_pr.py |
Removes the legacy source lookup wrapper. |
.x/skills/find_aaz_fork_prs_ready_for_promotion.py |
Removes the legacy promotion-discovery wrapper. |
.x/skills/changed_test_files.py |
Removes legacy test selection. |
.x/reviewer.md |
Removes the legacy Reviewer charter. |
.x/README.md |
Documents package ownership and validation. |
.x/migration-provenance.json |
Records migration sources and hashes. |
.x/fixer.md |
Removes the legacy Fixer charter. |
.x/definitions/tester.md |
Adds the scoped Tester definition. |
.x/definitions/reviewer.md |
Adds the scoped Reviewer definition. |
.x/definitions/fixer.md |
Adds the scoped Fixer definition. |
.x/definitions/coordinator.md |
Adds package coordination rules. |
.x/coordinator.md |
Removes the legacy Coordinator charter. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| def _is_cli_production_file(repository, path): | ||
| if repository == "Azure/azure-cli": | ||
| return ( | ||
| path.startswith("src/azure-cli/azure/cli/command_modules/") |
| head_repo=head_repo, | ||
| head_sha=head_sha, | ||
| )] | ||
| if not is_hotfix and not pr_title.startswith("["): |
| generation_sources = [path for path in paths if _review_matches_any(path, _GENERATION_SOURCE_PATTERNS)] | ||
| if generation_source_prs is None: | ||
| linked_generation_source = bool(_GENERATION_SOURCE_PR.search(str((pr or {}).get('body') or ''))) | ||
| linked_aaz_source = linked_generation_source |
Comment on lines
+44
to
+64
| max_pages=1, token=token, sanitize=False, | ||
| ) | ||
| fragment = f"-issue-{issue_number}-" | ||
| return next( | ||
| ( | ||
| pull_request for pull_request in response["data"] | ||
| if fragment in ( | ||
| (pull_request.get("head") or {}).get("ref") or "" | ||
| ) | ||
| and ( | ||
| pull_request.get("state") == "open" | ||
| or bool(pull_request.get("merged_at")) | ||
| ) | ||
| and ( | ||
| ( | ||
| (pull_request.get("head") or {}).get("repo") or {} | ||
| ).get("full_name") == AAZ_SOURCE_FORK | ||
| ) | ||
| ), | ||
| None, | ||
| ) |
| f"Routed to {target['repo']} as #{new_issue['number']} " | ||
| f"({new_issue['html_url']}) because this targets the " | ||
| f"`{target['name']}` extension, whose source lives in " | ||
| f"`Azure/azure-cli-extensions`.\n\n{BUG_ANALYSIS_MARKER}", |
| item["reason"] = f"same {kind} (`{name}`) as PR changes" | ||
| relevant.append(item) | ||
| continue | ||
| if scope: |
Comment on lines
+311
to
+322
| evidence = '\n'.join(('\n'.join([change['filename'], *[text for _, text in _review_added_lines(change)][:100]]) for change in production_changes)) | ||
| signals = [] | ||
|
|
||
| def add_signal(pattern, points, label, review): | ||
| if pattern.search(evidence): | ||
| signals.append({'label': label, 'points': points, 'review': review}) | ||
| add_signal(_RISK_SECURITY_PATTERN, 28, 'security-sensitive behavior', 'required') | ||
| add_signal(_RISK_SOVEREIGN_PATTERN, 18, 'sovereign-cloud behavior', 'required') | ||
| add_signal(_RISK_OPERATIONS_PATTERN, 22, 'delivery or infrastructure', 'required') | ||
| add_signal(_RISK_CUSTOMER_PATTERN, 18, 'public CLI behavior', 'recommended') | ||
| add_signal(_RISK_DEPENDENCY_PATTERN, 18, 'dependency or supply chain', 'required') | ||
| add_signal(_RISK_RELIABILITY_PATTERN, 12, 'failure-handling behavior', 'recommended') |
|
|
||
| def _required_commands(pr): | ||
| """Only use commands explicitly identified by the PR as related.""" | ||
| body = str((pr or {}).get("body") or "") |
| entry_point: tools/tester/azure_cli/live_tests.py:changed_test_files | ||
| public: true | ||
| tester.azure_cli.live_tests:get_pr_regression_coverage_summary: | ||
| role: Tester |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Repository owned agents and tooling
Move the repository's agent definitions, complete tooling implementations, domain profile and dependency/validation declarations into the canonical
.x/definitions/,.x/tools/and.x/x.ymllayout.