You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Resolves CONTRIBUTING.md conflict by placing the new fork-CI
documentation (### How CI works for pull requests from forks,
### Working on the pipeline split itself) under ## Contribution
flow, ahead of the new ## Changelog entry section that was added
to main in PR #5864.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
*No* (test-only, CI-only, doc-only, pure internal refactor that
87
+
passes the next test) ⇒ no entry required. Document the omission
88
+
in the PR description.
89
+
90
+
3.**Preview-feature carve-out.** If the change is to a preview-only
91
+
code path *and* it could affect default-config semantics for any
92
+
customer in the next two minor releases, treat it as customer-
93
+
observable and require an entry under `Other Changes`. PR #5310
94
+
(PPAF dynamic enablement preview that affected default-config
95
+
memory) is the canonical example.
96
+
97
+
4.**Unsure after applying steps 1–3?** Default to **leaving a
98
+
non-blocking comment** on the PR asking the reviewer to confirm:
99
+
100
+
> "Changelog classifier outcome is ambiguous for this diff
101
+
> (touches shipped src but customer impact unclear). Defaulting
102
+
> to **no entry**; please verify and add one if needed."
103
+
104
+
Do **not** silently skip an entry on an ambiguous case — the
105
+
comment is the signal.
106
+
107
+
This rubric is mirrored in `CONTRIBUTING.md` (the human-author
108
+
audience). The two must stay in sync.
51
109
- When suggesting build/test changes, reference the relevant MSBuild property or pipeline YAML (point to `Directory.Build.props` or `templates/*`).
52
110
- Do not change version numbers or packaging settings without explicit instruction — these are centrally managed.
53
111
- If adding or modifying tests that require the emulator, include/update relevant CI/template steps and document required environment variables.
@@ -60,10 +118,7 @@ Purpose: quick, actionable context so an AI coding assistant can be immediately
60
118
-**IssueFixAgent** (`.github/agents/issue-fix-agent.agent.md`) — Comprehensive workflow for triaging and fixing GitHub issues. Use `@IssueFixAgent` in VS Code Copilot Chat or follow the plan manually.
- Start with: `@IssueFixAgent investigate issue #XXXX` or see Quick Start in the agent file.
63
-
-**ReleaseCopilotAgent** (`.github/agents/release-copilot-agent.agent.md`) — Guides the team through full releases and hotfix releases of the Cosmos DB .NET SDK. Automates changelog generation, version bumping, API contract file generation (GenAPI), and PR creation.
64
-
- Three modes: **Minor Mode** (full GA + Preview release), **Hotfix Mode** (cherry-pick patch release on any previous version), and **Add Missed PRs** (add PRs that were missed in a previous changelog).
65
-
- In VS Code Copilot Chat: `@ReleaseCopilotAgent start minor`, `@ReleaseCopilotAgent start hotfix`, or `@ReleaseCopilotAgent add missed PRs`.
66
-
- In the Copilot CLI: describe the task naturally (e.g., "I want to start a minor release", "start hotfix", or "I need to add missed PRs to a release"). The agent instructions are loaded automatically via this file.
121
+
-**Release flows** for the Cosmos DB .NET SDK + Microsoft.Azure.Cosmos.FaultInjection package live in the [cosmos-sdk-copilot-toolkit](https://github.com/Azure/cosmos-sdk-copilot-toolkit) under skills `cosmos-release-dotnet` (main SDK: minor / hotfix / add-missed-PRs modes) and `cosmos-release-dotnet-faultinjection` (FaultInjection package). The in-repo `release-copilot-agent.agent.md` was retired to avoid drift; both skills are the canonical source. In the Copilot CLI: describe the task naturally ("start a minor release", "release fault injection beta", etc.) — the routing agent loads the right skill automatically.
67
122
-**MsdataDirectSyncAgent** (`.github/agents/msdata-direct-sync-agent.agent.md`) — Orchestrates syncing the msdata/direct branch with the latest v3 main and msdata direct codebase.
68
123
- In VS Code Copilot Chat: `@MsdataDirectSyncAgent sync msdata/direct`.
69
124
- In the Copilot CLI: describe the task naturally (e.g., "sync the msdata/direct branch with main").
This PR touches shipped source but does not appear to update the
53
+
corresponding `changelog.md`.
54
+
55
+
Touched (and missing entry for):
56
+
${{ steps.detect.outputs.main_missing == 'true' && '- `Microsoft.Azure.Cosmos/src/**` ⇒ expected an entry in `changelog.md` (`### Unreleased`)' || '' }}
57
+
${{ steps.detect.outputs.fi_missing == 'true' && '- `Microsoft.Azure.Cosmos/FaultInjection/src/**` ⇒ expected an entry in `Microsoft.Azure.Cosmos/FaultInjection/changelog.md` (`### Unreleased`)' || '' }}
58
+
59
+
### How to decide
60
+
61
+
Use the rubric in `.github/copilot-instructions.md` ("Changelog
62
+
classifier") or in `CONTRIBUTING.md` ("Changelog entry"). Quick
63
+
version:
64
+
65
+
- Customer-observable change (behavior, perf, memory, API) ⇒ **add an entry**, even if the PR is `[Internal]`.
66
+
- Test-only / CI-only / doc-only / pure-internal-refactor with zero customer-observable effect ⇒ no entry, add the `no-changelog-needed` label to silence this check.
67
+
- **Unsure?** Default to adding a one-line entry under `#### Other Changes`. Reviewer will adjust.
68
+
69
+
This check is **non-blocking** — merge is not gated on it. The
70
+
reviewer is responsible for the final classification.
Internal should be used for PRs that have no customer impact. This flag is used to help generate the changelog to know which PRs should be included.
23
+
The `[Internal]` prefix is a review hint indicating no customer-observable impact (test pipelines, CI, doc-only changes, pure internal refactors). It does **not** affect changelog generation — the changelog is maintained per-PR in `### Unreleased` of `changelog.md`. See CONTRIBUTING.md for the full `[Internal]` definition and the preview-feature carve-out.
24
24
Examples:<br />
25
-
Diagnostics: Adds GetElapsedClientLatency to CosmosDiagnostics<br/>
26
-
PartitionKey: Fixes null reference when using default(PartitionKey)<br/>
25
+
Diagnostics: Adds GetElapsedClientLatency to CosmosDiagnostics<br/>
26
+
PartitionKey: Fixes null reference when using default(PartitionKey)<br/>
27
27
[v4] Client Encryption: Refactors code to external project<br/>
28
28
[Internal] Query: Adds code generator for CosmosNumbers for easy additions in the future.<br/>
- The PR title and the changelog entry are **not the same thing**. The
178
+
title is engineering shorthand; the entry is a release-note line.
179
+
180
+
Example:
181
+
182
+
| PR title (engineering) | Changelog entry (customer-facing) |
183
+
|---|---|
184
+
|`DocumentClient: Adds tests for PartitionKeyRangeLocation disposal`|`Fixes per-CosmosClient memory and CPU leak introduced in 3.53.0 by disposing GlobalPartitionEndpointManagerCore. See [PR 5778](https://github.com/Azure/azure-cosmos-dotnet-v3/pull/5778).`|
185
+
186
+
### Default verb → subsection mapping
187
+
188
+
When the change has no other obvious classification, use the verb in your
189
+
PR title as a starting point:
190
+
191
+
| PR title verb | Default subsection |
192
+
|---|---|
193
+
|`Adds` (customer-visible) | Features Added |
194
+
|`Adds` (internal refactor, no observable effect) | Other Changes (often omit) |
195
+
|`Fixes` (customer-visible defect) | Bugs Fixed |
196
+
|`Removes` (public API removal) | Breaking Changes |
197
+
|`Removes` (internal/private code) | Other Changes (often omit) |
198
+
|`Refactors`| Other Changes (omit if no observable effect) |
199
+
200
+
The verb regex enforced by `.github/workflows/prlint.yml` still governs
201
+
the PR title, but the PR title no longer drives the changelog content.
202
+
203
+
### When the `[Internal]` prefix is appropriate
204
+
205
+
`[Internal]` in the PR title is reserved for changes with **no
206
+
customer-observable impact**:
207
+
208
+
- Test-pipeline / CI / build-tooling changes.
209
+
- Internal refactors that do not change runtime behavior, allocations,
210
+
memory profile, CPU profile, or surfaced types.
211
+
- Documentation-only changes inside the repo (not changelog).
212
+
213
+
`[Internal]` is **not** appropriate for:
214
+
215
+
- Any change to `Microsoft.Azure.Cosmos/src/**` that a customer could
216
+
observe by running their workload under different SDK versions, even
217
+
if the change is to an "internal" type. PR #5310 (PPAF dynamic
218
+
enablement, which changed `DocumentClient` reference semantics from
219
+
weak to strong) is the canonical anti-example — the change was
220
+
preview-internal but had load-bearing customer-observable effects.
221
+
222
+
**Preview-feature carve-out:** if a preview-only change might affect
223
+
default-config semantics for any customer in the next two minor
224
+
releases, it does not qualify as `[Internal]` — it goes under
225
+
`Other Changes` (or `Bugs Fixed` / `Breaking Changes` as appropriate).
226
+
227
+
### What reviewers verify
228
+
229
+
When reviewing a PR, check:
230
+
231
+
1. The "Changelog" section of the PR description is filled in.
232
+
2. If an entry was added: it is in the right subsection, the language
233
+
is customer-facing, and the bullet links to the PR.
234
+
3. If the author chose "No changelog entry required": the justification
235
+
is genuine (test-only, doc-only, CI-only, or pure internal refactor
236
+
with no customer-observable effect).
237
+
238
+
### Conflicts in `### Unreleased`
239
+
240
+
If two PRs add bullets to the same subsection of `### Unreleased` you
241
+
may see a merge conflict. Take both bullets — the order is not
242
+
significant.
243
+
141
244
### Test failures
142
245
143
246
If the Pull Request is experiencing test failures, these will appear as failed checks:
0 commit comments