Skip to content

Commit 5b44015

Browse files
liveansCopilot
andcommitted
Merge branch 'main' into fix-osx-cert-validation-alerts
Resolve enum-addition conflict in SecurityStatusPal.cs by keeping both CertValidationFailed (from this PR) and MutualAuthFailed (from main). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2 parents 0231107 + e0bfb35 commit 5b44015

1,689 files changed

Lines changed: 58225 additions & 29099 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.

.config/dotnet-tools.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
]
1616
},
1717
"microsoft.dotnet.xharness.cli": {
18-
"version": "11.0.0-prerelease.26204.1",
18+
"version": "11.0.0-prerelease.26279.1",
1919
"commands": [
2020
"xharness"
2121
]
File renamed without changes.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
applyTo: "src/native/managed/cdac/**"
3+
---
4+
5+
# cDAC — Folder-Specific Guidance
6+
7+
## Preface
8+
9+
The instructions under `API Review`, `DacDbi interface` and `Dump compatibility` only apply if the SDK version in global.json is a preview, release candidate or otherwise a development branch of .NET 11. If this is a development branch of .NET 12 or later, you **MUST** ignore these three sections entirely. Check `global.json` before applying them.
10+
11+
## API Review (.NET 11 dev branches only)
12+
13+
New APIs on implementations of IContract under the folder src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/** do **NOT** need to go through API review. **MUST NOT** describe such changes as "breaking" or "public API changes".
14+
15+
## DacDbi interface (.NET 11 dev branches only)
16+
17+
The DacDbi COM interface is **internal and unstable**.
18+
19+
- **MUST NOT** flag changes to DacDbi as breaking changes.
20+
- **MUST NOT** warn about COM ABI compatibility, vtable ordering, or
21+
GUID changes on DacDbi.
22+
23+
## Dump compatibility (.NET 11 dev branches only)
24+
25+
- **MUST NOT** raise concerns about older dumps lacking new data descriptors.
26+
- **MUST NOT** request fallback paths, conditional reads, or versioning
27+
shims for missing descriptors on the grounds of "supporting older dumps".
28+
29+
## Exception types (ALL branches)
30+
31+
When porting `HRESULT`-returning APIs to throw exceptions, the following mappings **MUST** be accepted:
32+
- `ArgumentException` → for `E_INVALIDARG`
33+
- `NullReferenceException` → for `E_POINTER`
34+
- `InvalidCastException` → for `E_NOINTERFACE`
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
applyTo: "src/coreclr/jit/**"
3+
---
4+
5+
# RyuJIT (JIT compiler) — Folder-Specific Guidance
6+
7+
## Code Review Guidelines
8+
9+
- **Do not routinely request new targeted tests for pure refactors, mechanical cleanups, or other non-behavioral JIT codebase improvements.** JIT changes alter global codegen and are often validated by existing end-to-end suites and differential testing, so additional per-PR regression tests may not be needed for changes that do not affect observable behavior. However, targeted tests are appropriate and should be encouraged for bug fixes, changes with a clear repro, observable behavior changes, and previously untested edge cases that are not already covered by existing tests.

.github/policies/resourceManagement.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -633,7 +633,7 @@ configuration:
633633
then:
634634
- mentionUsers:
635635
mentionees:
636-
- JulieLeeMSFT
636+
- anicka-net
637637
- dotnet/gc
638638
replyTemplate: >-
639639
Tagging subscribers to this area: ${mentionees}

.github/skills/ci-pipeline-monitor/pipelines.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ cached mapping table).
3737
| runtime-coreclr libraries-pgo | |
3838
| runtime-coreclr pgostress | |
3939
| runtime-coreclr jit-cfg | Sat-Sun 22:00 UTC | Control flow guard. |
40+
| runtime-coreclr crossgen2 | Daily | Crossgen2 R2R + comparison tests. |
41+
| runtime-coreclr crossgen2 outerloop | Daily | Crossgen2 outerloop R2R tests. |
42+
| runtime-coreclr crossgen2-composite | Daily | Crossgen2 composite R2R tests. |
43+
| runtime-coreclr crossgen2-composite gcstress | Weekends | Crossgen2 composite with GC stress. |
4044

4145
## Cached Definition ID Mapping
4246

@@ -64,6 +68,10 @@ entries via the AzDO Definitions API, and adds new rows here.
6468
| runtime-coreclr superpmi-replay | 150 | |
6569
| runtime-coreclr superpmi-asmdiffs-checked-release | 153 | |
6670
| runtime-coreclr jit-cfg | 155 | |
71+
| runtime-coreclr crossgen2 | 124 | |
72+
| runtime-coreclr crossgen2 outerloop | 134 | |
73+
| runtime-coreclr crossgen2-composite | 136 | |
74+
| runtime-coreclr crossgen2-composite gcstress | 141 | |
6775
| runtime-coreclr jitstress-random | 159 | |
6876
| runtime-coreclr libraries-jitstress-random | 160 | |
6977
| runtime-coreclr pgostress | 230 | |
Lines changed: 313 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,313 @@
1+
---
2+
name: pr-failure-scan
3+
description: >
4+
Analyze a dotnet/runtime PR's CI failures, skip failures already known to
5+
Build Analysis, find matching Known Build Errors, and create or draft new
6+
KBEs for the remaining failures. Supports dry-run output to local markdown
7+
files instead of creating GitHub issues.
8+
---
9+
10+
# PR Failure Scan Skill
11+
12+
Use this skill for requests like:
13+
14+
- `/pr-failure-scan <PR URL>`
15+
- `/pr-failure-scan <PR URL> dryrun`
16+
- `create KBEs for PR <number>`
17+
18+
This skill is **PR-targeted** and **local-account-aware**. It complements the
19+
scheduled CI failure scan workflow but does not try to reproduce the workflow's
20+
safe-output or follow-up PR behavior.
21+
22+
## Shared instructions
23+
24+
Before triaging any failure candidate, read and follow:
25+
26+
- `.github/workflows/shared/create-kbe.instructions.md`
27+
28+
That file owns the shared KBE lookup flow, KBE body template, signature
29+
specificity guidance, verification checklist, and the rules for identifying
30+
"existing KBE that Build Analysis likely missed".
31+
32+
## Step 0: Parse input
33+
34+
Accept one of:
35+
36+
- a PR number,
37+
- a PR URL,
38+
- text containing a PR reference,
39+
- an optional trailing `dryrun` token.
40+
41+
Interpret `dryrun` case-insensitively. The source repository is always
42+
`dotnet/runtime`.
43+
44+
Examples:
45+
46+
- `/pr-failure-scan 123456`
47+
- `/pr-failure-scan https://github.com/dotnet/runtime/pull/123456`
48+
- `/pr-failure-scan https://github.com/dotnet/runtime/pull/123456 dryrun`
49+
50+
## Step 1: Resolve identities and require explicit permission for non-owned PRs
51+
52+
1. Resolve the target PR metadata: title, author login, URL, head SHA, base
53+
branch, state, draft status.
54+
2. Resolve the currently authenticated GitHub user (`gh api user` is fine).
55+
3. Compare the PR author's login with the authenticated user's login.
56+
57+
If they differ, you **must** ask for explicit confirmation before doing the rest
58+
of the run. Running the command itself is **not** enough permission.
59+
60+
The confirmation must warn the user that this skill can create GitHub issues
61+
under their account, and that analyzing an unknown PR carries risk because the
62+
resulting issue content and decisions will be attributed to them.
63+
64+
If the user declines, stop immediately.
65+
66+
## Step 2: Gather PR CI context
67+
68+
Use the latest completed check runs for the PR head SHA.
69+
70+
Collect all of:
71+
72+
1. The `Build Analysis` check run payload from the GitHub REST API.
73+
2. The non-success CI check runs for the PR head SHA.
74+
3. The AzDO build URLs linked from those check runs.
75+
76+
The local skill has a different candidate-source model than the scheduled
77+
workflow:
78+
79+
- The workflow starts from a fixed main-branch pipeline list.
80+
- This skill starts from one PR and must use the PR's Build Analysis results to
81+
decide what is already known, what is still unknown, and which failed
82+
pipelines were excluded from Build Analysis.
83+
84+
## Step 3: Decide which failures are in scope
85+
86+
Build the candidate list from two sources:
87+
88+
1. **Build Analysis unknowns on analyzed pipelines.**
89+
- Parse the `Build Analysis` check text for `Create issue in this repo` links
90+
and the surrounding failure description.
91+
- Each such entry is an in-scope candidate unless you later find an existing
92+
matching KBE.
93+
2. **Failed pipelines explicitly excluded from Build Analysis.**
94+
- Parse the Build Analysis warning section listing pipelines excluded from
95+
analysis.
96+
- For each excluded pipeline that also failed on this PR, inspect its AzDO
97+
build/timeline/logs and derive concrete failure candidates yourself.
98+
99+
Skip any failure that Build Analysis already treated as known. The skill should
100+
not re-triage failures already recognized by Build Analysis.
101+
102+
If Build Analysis and the raw PR checks disagree, prefer the raw CI evidence and
103+
report the disagreement in the final output.
104+
105+
## Step 4: Analyze each candidate failure
106+
107+
For each candidate failure, do the following:
108+
109+
1. Gather the most concrete available evidence:
110+
- the Build Analysis excerpt or create-issue link context,
111+
- the AzDO failed timeline record,
112+
- the relevant build or task log,
113+
- for Helix-submitted legs, the Helix console log or failure details when
114+
accessible.
115+
2. Extract the narrowest signature that fits the shared rules.
116+
3. Run the shared KBE lookup flow from
117+
`.github/workflows/shared/create-kbe.instructions.md`.
118+
4. Classify the candidate into exactly one of these buckets:
119+
- **new KBE needed**
120+
- **existing KBE matched but Build Analysis likely missed it**
121+
- **unhandled**
122+
123+
### PR-specific guidance for excluded or partially-analyzed pipelines
124+
125+
For PR-targeted runs, it is acceptable to prepare a **draft-only** KBE candidate
126+
for a Build Analysis unknown or excluded failure even when the evidence is not
127+
yet strong enough for fully automated filing, as long as you clearly mark why
128+
the case still needs human review.
129+
130+
Use this only for the local skill. Do **not** feed this relaxed draft behavior
131+
back into the scheduled workflow rules.
132+
133+
Typical cases where a draft-only candidate may still be useful:
134+
135+
- Build Analysis already surfaced a `Create issue in this repo` link for the
136+
failure.
137+
- The pipeline is excluded from Build Analysis, but the PR clearly contains a
138+
repeated failure family worth turning into a reviewable draft.
139+
- The failure has a recognizable issue shape, but the exact log line still
140+
needs to be copied from a deeper log.
141+
142+
For such draft-only cases:
143+
144+
- keep the issue in the **new KBE needed** bucket only for this local skill,
145+
- make the uncertainty explicit in the draft body,
146+
- explain the missing evidence in the final report.
147+
148+
If a candidate is too weak even for a useful draft, place it in **unhandled**
149+
with a concrete reason.
150+
151+
### Dry-run drafting guidance
152+
153+
When producing a dry-run draft, optimize for a human-reviewable issue proposal
154+
that is close to what a developer would want to file from the PR, even if the
155+
draft still needs final cleanup before live filing.
156+
157+
In particular:
158+
159+
- Prefer a descriptive draft title that names the concrete failure shape over a
160+
generic `Hang:` / `Test failure:` title when that better communicates the
161+
issue for a human reviewer.
162+
- If the failure happens during xUnit discovery, prefer the discovery-time
163+
signature over a later native-crash bucket when both are visible and the
164+
discovery signature is the more stable reusable match.
165+
- For infra-shaped submission failures, prefer a multi-token array signature
166+
over one long literal line when the issue is really identified by a small set
167+
of stable tokens.
168+
169+
## Step 5: Write draft files and optionally create live issues
170+
171+
### Draft files for all new KBEs
172+
173+
For every item in the **new KBE needed** bucket, always write a markdown draft
174+
file before deciding whether to create a GitHub issue. This applies to both
175+
`dryrun` and live mode.
176+
177+
1. Write one markdown file per `new KBE needed` item.
178+
2. Prefer the session artifact directory if it is available. Otherwise, use a
179+
temporary directory outside the repo. Do not write draft files into the repo
180+
checkout.
181+
3. Report the exact file path for every draft.
182+
183+
Each draft file should contain:
184+
185+
- proposed title,
186+
- proposed labels,
187+
- a human-review-oriented draft body,
188+
- any explicit note when the draft still needs more evidence before live filing.
189+
190+
These dry-run files are **review artifacts**, not necessarily byte-for-byte live
191+
issue bodies. Keep them easy to compare and edit on disk.
192+
193+
Prefer this layout for dry-run files:
194+
195+
````markdown
196+
# Draft KBE issue
197+
198+
- Proposed title: `...`
199+
- Proposed labels: `Known Build Error`, `blocking-clean-ci`
200+
201+
## Draft issue body
202+
203+
## Build Information
204+
Build: ...
205+
Build error leg or test failing: ...
206+
207+
## Error Message
208+
209+
```json
210+
...
211+
```
212+
213+
**Failure details:**
214+
```text
215+
...
216+
```
217+
218+
**Affected legs:**
219+
- ...
220+
221+
**Console Log:**
222+
- ...
223+
224+
**First build in window:**
225+
- ...
226+
227+
**Recommended action:**
228+
...
229+
````
230+
231+
For dry-run artifacts, prefer the layout above over adding extra sections like
232+
`Pull request:` or `## Error Details` unless they are truly necessary for
233+
understanding the draft.
234+
235+
When linking to a draft file in a user-facing message or confirmation question,
236+
include both:
237+
238+
- a clickable local-file link when the UI supports one, and
239+
- the plain absolute path.
240+
241+
### Dry-run mode
242+
243+
In `dryrun` mode:
244+
245+
1. Do **not** create any GitHub issues.
246+
2. Stop after writing the draft files and producing the final report.
247+
248+
### Live mode
249+
250+
In live mode:
251+
252+
1. First prepare the complete batch of proposed issues.
253+
2. Write all draft files as described above.
254+
3. Process the proposed issues one by one. For each KBE:
255+
- Ask the user whether to create this specific issue.
256+
- The question must include:
257+
- the proposed issue title,
258+
- a short description of what the KBE is about,
259+
- the list of failures it covers, or a shortened summary if the list is
260+
long,
261+
- a clickable draft-file link when possible plus the plain absolute path,
262+
- a clear statement that the GitHub issue will be created on behalf of the
263+
currently authenticated user.
264+
- Only create that issue if the user explicitly confirms.
265+
- If the user declines, skip that issue and continue to the next proposed
266+
KBE.
267+
268+
Use the shared KBE template guidance for the body.
269+
270+
Every live-created issue body must include a visible AI disclosure note because
271+
the issue is being filed under a developer account. A concise note is enough,
272+
for example:
273+
274+
> [!NOTE]
275+
> This issue draft was prepared with GitHub Copilot assistance and reviewed by
276+
> the submitting developer.
277+
278+
## Step 6: Final output format
279+
280+
The final response must contain all four sections below.
281+
282+
### 1. New issues created or draft files
283+
284+
List either:
285+
286+
- the created issue URLs, or
287+
- the dry-run draft file paths.
288+
289+
### 2. New issues and the failures they cover
290+
291+
For every newly created or newly drafted KBE, provide:
292+
293+
- title,
294+
- URL or file path,
295+
- short description of what the issue is about,
296+
- the specific failure or failure family it covers.
297+
298+
### 3. Existing KBE matches that Build Analysis likely missed
299+
300+
For every such failure, provide:
301+
302+
- failing leg / build context,
303+
- matched KBE number and URL,
304+
- why it appears to match,
305+
- why Build Analysis likely missed it.
306+
307+
### 4. Failures not handled
308+
309+
For every unhandled failure, provide:
310+
311+
- failing leg / build context,
312+
- why it was not handled,
313+
- what evidence or follow-up would be needed to handle it.

0 commit comments

Comments
 (0)