Skip to content

{Misc.} Decentralize repository owned agents and tooling - #34160

Open
Aditya Pujara (a0x1ab) wants to merge 2 commits into
devfrom
a0x1ab/repository-owned-agents-9b1d5c02
Open

Aditya Pujara (a0x1ab) wants to merge 2 commits into
devfrom
a0x1ab/repository-owned-agents-9b1d5c02

Conversation

@a0x1ab

@a0x1ab Aditya Pujara (a0x1ab) commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

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.yml layout.

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
@yonzhan

Copy link
Copy Markdown
Collaborator

Thank you for your contribution! We will review the pull request and get back to you soon.

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
@a0x1ab Aditya Pujara (a0x1ab) changed the title [Engineering] Decentralize repository-owned agents and tooling {Misc.} Decentralize repository owned agents and tooling Oct 2, 2026
@a0x1ab
Aditya Pujara (a0x1ab) marked this pull request as ready for review October 2, 2026 08:51
Copilot AI balanced review requested due to automatic review settings October 2, 2026 08:51

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.

Copilot review overview

🟡 Changes recommended

Unresolved workflow authorization, handoff recovery, and review-policy correctness issues prevent safe approval.

Review effort: Balanced
Findings: 3 High severity · 6 Medium severity

Open (9)
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 "")
Comment thread .x/x.yml
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

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants