feat: add Foundry project ownership spec - #9441
Open
huimiu wants to merge 2 commits into
Open
Conversation
huimiu
requested review from
JeffreyCA,
RickWinter,
hemarina,
richardpark-msft,
tg-msft and
vhvb1989
as code owners
August 5, 2026 12:21
|
Azure Pipelines: 22 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
🔗 Linked Issue RequiredThanks for the contribution! Please link a GitHub issue to this PR by adding |
Contributor
There was a problem hiding this comment.
Pull request overview
Defines the ownership transfer of Foundry project configuration from azure.ai.agents to azure.ai.projects.
Changes:
- Specifies
azd ai project initbehavior and compatibility. - Designs agent-to-project handoff and error propagation.
- Documents implementation, testing, telemetry, and release plans.
Comment on lines
+449
to
+452
| "modelFilter": { | ||
| "locations": [], | ||
| "excludedModels": [] | ||
| }, |
Comment on lines
+306
to
+308
| Switching from one existing endpoint to another requires confirmation. | ||
| Switching from an existing project to a new project removes `endpoint` only | ||
| after confirmation. `--force` permits these two transitions in scripts. |
Comment on lines
+404
to
+407
| `projectInitAction.Run` follows this order: | ||
|
|
||
| 1. Load or create the minimal azd project and active environment. | ||
| 2. Parse public flags or a delegated init request. |
Comment on lines
+699
to
+707
| The projects init span records only low-cardinality values: | ||
|
|
||
| ```text | ||
| invocation_source = direct | azure.ai.agents | ||
| project_mode = new | existing_id | existing_endpoint | legacy_migration | ||
| mutation = created | updated | noop | ||
| model_action = create | reuse | skip | ||
| infra_provider = none | bicep | terraform | ||
| ``` |
Comment on lines
+800
to
+805
| The projects release must land before or with the agents release that invokes | ||
| its init contract. PM and release owners must confirm a coordinated update to | ||
| `azure.ai.projects`, the agents dependency in | ||
| `cli/azd/extensions/azure.ai.agents/extension.yaml`, and the | ||
| `microsoft.foundry` meta-package. The registry must not offer an agents version | ||
| whose required projects command is outside its dependency range. |
Comment on lines
+459
to
+460
| The projects command writes the result atomically after all requested | ||
| mutations succeed: |
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.
Suppressed comments (2)
docs/specs/azure-ai-project-service-ownership/spec.md:140
- The environment contract is under-specified for the promised compatibility. The current setup also persists
AZURE_RESOURCE_GROUP,AZURE_AI_ACCOUNT_NAME,AZURE_AI_PROJECT_NAME, andAZURE_OPENAI_ENDPOINT, plus conditional connection values (init_foundry_resources_helpers.go:376-434). Specify which extension preserves every existing value; listing only the ID and endpoint risks breaking existing init consumers despite the later claim that the same values are stored. (azd-code-reviewer)
The command also saves `AZURE_AI_PROJECT_ID` and
`FOUNDRY_PROJECT_ENDPOINT` in the active azd environment. This gives later
operations the project identity they already expect today.
docs/specs/azure-ai-project-service-ownership/spec.md:329
- The central handoff has no concrete transport in the current extension API.
AzdClient.Extension()exposes onlyReadyandReportError(pkg/azdext/extension_grpc.pb.go:34-39), so one extension cannot invoke another custom operation “through the framework” as written. Define whether this requires a new core RPC/capability or a hidden versioned projects command, including request/response and version negotiation, and add any core work to the rollout. (azd-code-reviewer)
Agent init sends the project requirements it discovered to a projects-owned
init operation through the azd extension framework. Projects performs the
selection and update, then returns the project service name and any project
information agents still needs for its own setup.
Comment on lines
+368
to
+374
| The migration ships in three steps: | ||
|
|
||
| 1. Add project init and project-owned update behavior. | ||
| 2. Switch agent init to the internal handoff while keeping compatibility | ||
| flags. | ||
| 3. Remove duplicated project setup and IaC code from agents after the | ||
| coordinated extensions are available. |
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.
Summary
azure.ai.projectauthoring fromazure.ai.agentstoazure.ai.projects.Why
Issue #9085 is only partially complete. Project provisioning already belongs to
azure.ai.projects, but agent initialization still creates and updates the project service. This prevents standalone project setup and leaves ownership split across two extensions.The spec proposes
azd ai project initfor direct project setup while keepingazd ai agent initas a one-command experience through an internal handoff. It keeps the currentendpoint,deployments, andnetworkcontract, avoiding an unnecessary schema migration. Provision and deploy commands remain unchanged.Details
The spec focuses on greenfield and existing-project flows, non-interactive use, safe repeated initialization, legacy compatibility, user-visible changes, rollout, dependencies, and open product questions.
Relates to #9085.