Skip to content

docs: technical design spec for unifying Foundry config in azure.yaml#8590

Open
huimiu wants to merge 14 commits into
mainfrom
hui/unify-azure-yaml
Open

docs: technical design spec for unifying Foundry config in azure.yaml#8590
huimiu wants to merge 14 commits into
mainfrom
hui/unify-azure-yaml

Conversation

@huimiu

@huimiu huimiu commented Jun 10, 2026

Copy link
Copy Markdown
Member

Summary

  • Add technical design spec for unifying Foundry agent configuration in azure.yaml at docs/specs/unify-azure-yaml/spec.md
  • Docs only, no product code changes

Details

Design spec (docs/specs/unify-azure-yaml/spec.md)

The spec is the engineering counterpart to the product brief. It covers two areas the brief does not address:

  • End to end experience: command flows for azd ai agent init, provision, deploy, up, and azd down; a Foundry service next to a normal service via uses:; connecting to an existing project via endpoint:; migration from host: azure.ai.agent and separate agent.yaml / agent.manifest.yaml files; partial deploy failure and safe re-run behavior.
  • Technical design: config binding through AdditionalProperties and gRPC, wiring host: microsoft.foundry to a new service target, JSON Schema composition at the service level, $ref file includes and overlay overrides, ${VAR} vs ${{...}} templating, service target lifecycle with per-agent fan-out, init rework, state reconciliation, sibling-extension schema ownership, and telemetry and errors.

…yaml

Engineering design that backs the unified azure.yaml product brief. Covers the end to end command experience and the technical design (schema composition, config binding, the microsoft.foundry service target, ref includes, templating, init rework, reconciliation), plus a provision dependency callout and new open questions.

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.

Pull request overview

Adds an engineering technical design spec documenting the proposed unified azure.yaml shape and lifecycle for Foundry projects/agents, including schema composition, config binding, $ref includes, templating, lifecycle fan-out, migration/deprecation, and open questions. This lives under docs/specs/ and introduces no product code changes.

Changes:

  • Add a new design spec at docs/specs/unify-azure-yaml/spec.md covering end-to-end CLI flows and detailed technical design.
  • Document proposed schema composition for host: microsoft.foundry and extension wiring/rollout considerations.
  • Define $ref include/overlay behavior, templating coexistence (${VAR} vs ${{...}}), and reconciliation/idempotency approach.

Comment thread docs/specs/unify-azure-yaml/spec.md Outdated
Comment thread docs/specs/unify-azure-yaml/spec.md Outdated
Comment thread docs/specs/unify-azure-yaml/spec.md
Comment thread docs/specs/unify-azure-yaml/spec.md Outdated
@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown

📋 Prioritization Note

Thanks for the contribution! The linked issue isn't in the current milestone yet.
Review may take a bit longer — reach out to @rajeshkamal5050 or @kristenwomack if you'd like to discuss prioritization.

@huimiu huimiu requested a review from danieljurek as a code owner June 10, 2026 05:48
@huimiu huimiu force-pushed the hui/unify-azure-yaml branch from e1dc707 to f38e2d4 Compare June 10, 2026 05:51
@huimiu huimiu removed the request for review from danieljurek June 10, 2026 05:52
huimiu added 9 commits June 10, 2026 14:11
Align $ref path handling with FileRef.json (accept absolute paths and URLs), document path rebasing and instruction/prompt file loading, model agent-level tools, scope deploy-mode validation to hosted agents, order routine reconciliation after agents, add a sibling-extension schema-ownership section (Option A), and merge Parts 3 and 4 into a single flat Open questions section. Trim the summary to deltas on the brief.
Remove the built-in Bicep, idempotency, and per-agent CLI items from the open questions list, since the brief raises each with a recommended option (opt-in in-memory Bicep, Bicep-like reconciliation semantics, and 3a per-agent build). Fold the #8349/#8350 references into the 2.8 reconciliation section and note where the brief leaves instructions-format and routines open.
John's brief already raises skill instructions format (open question 5) and routines ownership and triggers (open question 6). The instructions item also contradicted section 2.4, which already decides both inline and file forms. Remove both echoes; open questions now list only items this design adds.
FileRef.json states absolute paths and URLs are accepted and that sibling properties act as overlay overrides, and the brief recommends Option A (azure.ai.agents owns schema and reconciliation). That settles ref ownership, overlay rules, and absolute/remote paths, so remove both from open questions and fold the accepted-paths decision into section 2.4. Open questions now list only items the brief leaves open.
Issue 8587's preferred fix is deploy-time reconciliation of toolboxes and connections, which the design already does (folded into 2.8). Issue 8165's stated minimum, reusing an existing account, is the endpoint design (folded into 1.4). Split-file validation is already decided in 2.4. Remove all three from open questions, leaving only items with no settled direction: agent versioning (8066), gRPC config size, and composition surface naming (8049).
@glharper

Copy link
Copy Markdown
Member

I'm not seeing a new skill added for design-spec.

@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown

🔗 Linked Issue Required

Thanks for the contribution! Please link a GitHub issue to this PR by adding Fixes #123 to the description or using the sidebar.
No issue yet? Feel free to create one!

@huimiu

huimiu commented Jun 11, 2026

Copy link
Copy Markdown
Member Author

I'm not seeing a new skill added for design-spec.

@glharper Sorry, wrong content removed

Comment thread docs/specs/unify-azure-yaml/spec.md
Comment thread docs/specs/unify-azure-yaml/spec.md
Comment thread docs/specs/unify-azure-yaml/spec.md Outdated
Comment thread docs/specs/unify-azure-yaml/spec.md Outdated
Comment thread docs/specs/unify-azure-yaml/spec.md Outdated
@huimiu

huimiu commented Jun 12, 2026

Copy link
Copy Markdown
Member Author

Thanks for the review!

  • Network settings — Noted that VNET config is on the Foundry Account, not the Project. azd doesn't manage the Account, so you'd need to eject to Bicep today. The Bicep work needs to cover this path.
  • azd down — Added a note that the existing teardown logic likely already handles this — just needs a confirm.
  • ${{...}} — Clarified that azd never resolves this; it's passed through as-is to Foundry.
  • State reconciliation (§2.8) — Switched to idempotent CreateOrUpdate, letting Foundry handle it server-side instead of diffing on the client.
  • Schema ownership (§2.10) — Flipped to Option B: microsoft.foundry meta-package owns the schema, each sibling extension contributes its slice. Reconciliation stays in azure.ai.agents. Core will need a new slice contribution mechanism.

therealjohn pushed a commit that referenced this pull request Jun 12, 2026
* feat(agents): add microsoft.foundry azure.yaml schema

Schema-only scaffolding for unifying Microsoft Foundry agent config in
azure.yaml (design spec PR #8590, section 2.3).

- Add the host: microsoft.foundry conditional to schemas/v1.0 and
  schemas/alpha azure.yaml.json, composing the extension schema at the
  service level via allOf and turning off project/runtime/docker/image/config.
- Add microsoft.foundry to the host examples list.
- Publish the Foundry extension schemas under
  cli/azd/extensions/azure.ai.agents/schemas/: microsoft.foundry.json plus
  per-resource files (Agent, Skill, Routine, Connection, Toolbox, Deployment,
  FileRef), ported from the PM preview repo with $id rewritten to the
  azure-dev path and relative $refs preserved.
- microsoft.foundry.json uses additionalProperties: true at the project level
  (deliberate deviation from the preview's false) so future Foundry resource
  types do not break the schema, per the brief and design spec section 2.3.

Authoring-only: no service-target wiring, provider registration, or
alpha-feature gating (those are later PRs).

* fix(agents): relax PromptAgent to accept skill without instructions

PromptAgent now requires name + kind plus at least one of instructions
or skill (anyOf), instead of always requiring instructions. A prompt
agent backed by a skill (which supplies the instructions) no longer
fails schema validation.

This fixes the complex sample's summarizer-agent validation failure.

* fix(agents): enforce Foundry schema dependencies

Require project when hosted agents define docker or runtime settings, and enforce routine trigger-specific required fields for schedule, webhook, and event triggers.

* fix(agents): align Foundry schema constraints

Use conditional schema constraints for hosted-agent project requirements and routine trigger-specific fields.

* feat: target foundry azure.yaml schema at integration branch with validatable samples

* fix: normalize foundry azure.yaml schema URLs to short raw.githubusercontent form
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.

4 participants