Skip to content

Commit 1ad7a6d

Browse files
Merge branch 'main' into stable_version_release
2 parents 656ce78 + 731c5fa commit 1ad7a6d

8,832 files changed

Lines changed: 816022 additions & 314812 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitattributes

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
# Use unix line endings always, even on Windows
22
* text=auto eol=lf
3+
4+
.github/workflows/*.lock.yml linguist-generated=true merge=ours

.github/.prettierignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,19 @@ coverage
88
fixtures
99
specification
1010

11+
# auto-generated agentic workflow lock files
12+
workflows/*.lock.yml
13+
1114
# unmanaged files and folders
1215
**/*instructions.md
1316
chatmodes
1417
ISSUE_TEMPLATE
1518
policies
1619
prompts
1720
PULL_REQUEST_TEMPLATE
21+
22+
# lock files for agent workflows
23+
**/*.lock.yml
24+
25+
# synced from external repos
26+
workflows/post-apiview.yml

.github/CODEOWNERS

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
# PRLabel: %Cognitive Services
1616
/dev/cognitiveservices/data-plane/Language/ @assafi @rokulka @ChongTang @annatisch @heaths @deyaaeldeen @joseharriaga @minhanh-phan
1717

18+
# PRLabel: %Foundry %Client
19+
/specification/ai-foundry/data-plane/Foundry @johanste @trrwilson @glecaros @balapv @dargilco
20+
1821
# PRLabel: %Analysis Services
1922
/specification/analysisservices/ @taiwu
2023

@@ -62,7 +65,7 @@
6265
/specification/cdn/resource-manager/Microsoft.Cdn/EdgeActions/ @tundwed @anamikanupur
6366

6467
# PRLabel: %Cognitive Services
65-
/specification/cognitiveservices/ @rkuthala @MattGal
68+
/specification/cognitiveservices/ @rkuthala @fmabroukmsft
6669

6770
# PRLabel: %Cognitive Services - Form Recognizer
6871
/specification/cognitiveservices/data-plane/FormRecognizer/ @bojunehsu @nizi1127 @johanste
@@ -121,7 +124,7 @@
121124
/specification/deploymentmanager/ @netrock
122125

123126
# PRLabel: %Device Registry
124-
/specification/deviceregistry/ @rohankhandelwal @atastrophic @siongithub @mryanlo
127+
/specification/deviceregistry/ @atastrophic @siongithub @mryanlo @hmmorales @chgennar @sofia-geislinger @mfsmoot
125128

126129
/specification/documentdb/ @dmakwana
127130

@@ -310,7 +313,7 @@
310313
/.github/copilot-instructions.md @praveenkuttappan @maririos
311314
/.github/prompts/ @praveenkuttappan @maririos
312315
/.github/instructions/ @praveenkuttappan @maririos
313-
/.github/instructions/*arm*.md @raosuhas
316+
/.github/instructions/*arm*.md @praveenkuttappan @raosuhas @ravimeda @laxmankumar12
314317
/.github/chatmodes/ @praveenkuttappan @maririos
315318

316319
# Add owners for notifications for specific pipelines

.github/actionlint.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
self-hosted-runner:
2+
labels:
3+
- 1ES.Pool=azsdk-pool-github-runners
4+
- azsdk-pool-github-test
5+
16
paths:
27
.github/workflows/*.lock.yml:
38
ignore:
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
description: Expert in Azure API specifications who suggests hero scenarios — end-to-end developer workflows grounded in TypeSpec definitions that seed SDK samples, docs, and tests
3+
tools: ["read", "search", "bash"]
4+
---
5+
6+
# Hero Scenarios Agent
7+
8+
Before starting any work, read the detailed guidelines from
9+
`.github/prompts/hero-scenarios-guidelines.md` and follow them precisely.

.github/arm-leases/README.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# ARM Leases - Design Discussion Period
2+
3+
## Overview
4+
5+
This directory contains lease files that establish a time-limited design discussion period for Resource Providers (RPs) in the Azure REST API specifications repository. ARM leases provide a structured timeframe for Product Managers (PMs) and RP owners to collaborate on API design, review specifications.
6+
7+
**Important**: Only Product Managers (PMs) are authorized to add lease.yaml files to this directory. Lease files should be added after conducting office hours discussions with RP owners. The reviewer field should contain the GitHub alias of a PM who has reviewed and approved the lease.
8+
9+
## Code Owners and Contribution Guidelines
10+
11+
This directory is intended to be governed via CODEOWNERS to ensure proper governance:
12+
13+
- **Product Managers (PMs)**: Can add and modify `lease.yaml` files after office hours discussions with RP owners
14+
- **Engineers**: Can enhance and improve the validation workflow and related automation
15+
- **Approvals**: All changes should be reviewed and approved by designated code owners (PMs and engineers listed in CODEOWNERS, when configured)
16+
17+
**Adding New PMs**: To grant a new PM access to add lease files, they should be added to the CODEOWNERS file for the `.github/arm-leases/` directory path when CODEOWNERS protection is configured.
18+
19+
## Lease File Structure
20+
21+
Each lease must be placed in the following directory structure:
22+
23+
```
24+
.github/arm-leases/<orgName>/<rpNamespace>/[<serviceName> (optional)]/lease.yaml
25+
```
26+
27+
### Path Requirements:
28+
29+
- `<orgName>`: lowercase alphanumeric only (e.g., testservice, widgetservice)
30+
- `<rpNamespace>`: alphanumeric with dots, case-sensitive (e.g., Microsoft.TestRP, Azure.Widget)
31+
- `<serviceName>`: (optional) customer-facing service name within an RP (e.g., DiskRP, ComputeRP). Must not start with "stable" or "preview"
32+
33+
### Lease File Format
34+
35+
The `lease.yaml` file must follow this format:
36+
37+
```yaml
38+
lease:
39+
resource-provider: Microsoft.TestRP # Must match the rpNamespace folder name
40+
startdate: 2026-01-07 # ISO 8601 format (YYYY-MM-DD)
41+
duration: P180D # ISO 8601 duration (max 180 days, e.g., P180D, P90D, P5M)
42+
reviewer: "@evanhissey" # GitHub alias of the approving reviewer
43+
```
44+
45+
### Copy-Paste Template
46+
47+
Create a file at `.github/arm-leases/<orgName>/<rpNamespace>/<serviceName>(optional)/lease.yaml` with the following content (replace the placeholder values):
48+
49+
```yaml
50+
lease:
51+
resource-provider: <rpNamespace>
52+
startdate: <YYYY-MM-DD>
53+
duration: P180D
54+
reviewer: "@your-github-alias"
55+
```
56+
57+
## Validation Rules
58+
59+
All lease files are automatically validated with the following requirements:
60+
61+
### 1. File Location
62+
63+
- Only `lease.yaml` files are allowed in the `.github/arm-leases/` directory
64+
- Must follow the folder structure: `<orgName>/<rpNamespace>/[<serviceName> (optional)]/lease.yaml`
65+
66+
### 2. Resource Provider Name
67+
68+
- Must match the `<rpNamespace>` folder name exactly
69+
- Example: If folder is `Microsoft.TestRP`, then `resource-provider` must be `Microsoft.TestRP`
70+
71+
### 3. Start Date
72+
73+
- Must be in ISO 8601 format: `YYYY-MM-DD`
74+
- Must be a valid calendar date
75+
76+
### 4. Duration
77+
78+
- Required field that cannot be empty
79+
- Must be a valid ISO 8601 duration (e.g., `P180D`, `P90D`, `P5M`)
80+
- **Maximum duration is 180 days**
81+
- Supports day-based (`P90D`), month-based (`P5M`), and combined formats
82+
83+
### 5. Reviewer
84+
85+
- Required field that cannot be empty
86+
- Must be a GitHub alias starting with `@` (e.g., `@githubUsername`)
87+
88+
## Troubleshooting
89+
90+
If your PR check **"ARM Lease Validation"** is failing, review the error messages in the check output and fix the issues in your `lease.yaml` file. Common causes include:
91+
92+
- **Invalid folder structure**: Ensure the path follows `<orgName>/<rpNamespace>/[<serviceName>]/lease.yaml` with lowercase org name
93+
- **Resource provider mismatch**: The `resource-provider` value must match the `<rpNamespace>` folder name exactly
94+
- **Past start date**: The `startdate` must be a valid date in `YYYY-MM-DD` format
95+
- **Invalid duration**: Use a valid ISO 8601 duration that does not exceed 180 days (e.g., `P180D`, `P90D`, `P5M`)
96+
- **Missing or empty fields**: All fields (`resource-provider`, `startdate`, `duration`, `reviewer`) are required
97+
- **Disallowed files**: Only `lease.yaml` and `README.md` files are permitted in `.github/arm-leases/`
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
lease:
2+
resource-provider: Microsoft.Widget
3+
startdate: "2026-04-15"
4+
duration: P180D
5+
reviewer: "@pshao25"

.github/aw/actions-lock.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"entries": {
3+
"actions/checkout@v6.0.2": {
4+
"repo": "actions/checkout",
5+
"version": "v6.0.2",
6+
"sha": "de0fac2e4500dabe0009e67214ff5f5447ce83dd"
7+
},
8+
"actions/github-script@v7": {
9+
"repo": "actions/github-script",
10+
"version": "v7",
11+
"sha": "f28e40c7f34bde8b3046d885e986cb6290c5673b"
12+
},
13+
"actions/github-script@v8": {
14+
"repo": "actions/github-script",
15+
"version": "v8",
16+
"sha": "ed597411d8f924073f98dfc5c65a23a2325f34cd"
17+
},
18+
"actions/github-script@v9": {
19+
"repo": "actions/github-script",
20+
"version": "v9",
21+
"sha": "373c709c69115d41ff229c7e5df9f8788daa9553"
22+
},
23+
"actions/github-script@v9.0.0": {
24+
"repo": "actions/github-script",
25+
"version": "v9.0.0",
26+
"sha": "d746ffe35508b1917358783b479e04febd2b8f71"
27+
},
28+
"github/gh-aw-actions/setup@v0.68.1": {
29+
"repo": "github/gh-aw-actions/setup",
30+
"version": "v0.68.1",
31+
"sha": "2fe53acc038ba01c3bbdc767d4b25df31ca5bdfc"
32+
}
33+
}
34+
}

.github/copilot-instructions.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,24 @@ Refer to [new-typespec-project.instructions.md](./instructions/typespec-project.
99

1010
Refer to [language-emitter.instructions.md](./instructions/language-emitter.instructions.md) for detailed steps on how to add language emitters to an existing `tspconfig.yaml` file in a TypeSpec project.
1111

12+
# When to invoke the azure-typespec-author skill
13+
14+
The `azure-typespec-author` skill **must** be invoked immediately in all modes (including plan mode) for any task that involves creating and modifying TypeSpec (`.tsp`) files except for `client.tsp` under the specification directory in this repository. This includes but is not limited to:
15+
16+
- Adding, bumping, or promoting API versions (preview, stable)
17+
- Adding or modifying resources, operations, models, properties, or decorators
18+
- Changing visibility, constraints, breaking changes, LRO patterns, or suppressions
19+
- Defining or updating operationId, spread models, or extension resources
20+
- Converting Swagger to TypeSpec (post-conversion edits)
21+
22+
**If you are unsure whether a user request involves TypeSpec authoring, ask the user to confirm before proceeding.** For example, if the request mentions API changes, versioning, resource definitions, or spec modifications but does not explicitly mention TypeSpec, prompt the user:
23+
24+
> "This request may involve TypeSpec specification changes. Would you like me to use the azure-typespec-author skill to help with this?"
25+
26+
If the user confirms, invoke the `azure-typespec-author` skill immediately. Do **not** build typespec authoring related plan or attempt to make `.tsp` file changes without invoking this skill first.
27+
28+
**Do NOT use this skill for:** SDK generation, releasing SDK packages, `client.tsp` or code customization, or standalone MCP tool calls that do not involve editing `.tsp` files.
29+
1230
# SDK generation from TypeSpec
1331

1432
You must use Azure SDK MCP server to generate SDK from TypeSpec.

.github/cspell.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import:
33
- ../cspell.yaml
44
ignorePaths:
55
- CODEOWNERS*
6+
- arm-leases/**
67
- policies/**
78
- workflows/*.lock.yml
89
- workflows/**/*.md

0 commit comments

Comments
 (0)