Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion .github/skills/dependency-flow/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,33 @@ MAUI uses two types of channels:
### SDK Channels (automatic)
Pattern: `.NET X.0.Yxx SDK` (e.g., `.NET 10.0.1xx SDK`)

These are configured via default channel mappings — builds are **automatically** added when they complete on a mapped branch. Preview releases use `.NET X.0.Yxx SDK Preview N`.
These are configured via default channel mappings — builds are **automatically** added when they complete on a mapped branch.

**Common branch → channel patterns (not exhaustive — always verify with the command below):**
- **Servicing release branches** (`release/X.0.Yxx-srN`) all map to the **single** general SDK channel for that band (e.g., `release/10.0.1xx-sr6`, `release/10.0.1xx-sr7`, etc. all map to `.NET 10.0.1xx SDK`). There is **no** `.NET X.0.Yxx SDK SRn` channel — do not invent one.
- **Preview release branches** (`release/X.0.Yxx-previewN`) map to dedicated per-preview channels (e.g., `release/11.0.1xx-preview3` → `.NET 11.0.1xx SDK Preview 3`).
- **RC release branches** (`release/X.0.Yxx-rcN`) map to dedicated per-RC channels (e.g., `.NET 10.0.1xx SDK RC 2`). MAUI defaults for these are only active during the corresponding pre-release cycle.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Documentation — Two related observations on this RC bullet, both verified against live darc output:

  1. Present-tense "map to" overstates current state. darc get-default-channels --source-repo https://github.com/dotnet/maui shows zero active RC default mappings right now (SR and preview entries are populated, RC rows are empty). The qualifier sentence ("only active during the corresponding pre-release cycle") explains why, but an agent skimming bullets may miss the qualifier.

  2. The "find a previous RC sibling" guidance added at line 50 silently fails for RC. SR and preview siblings are findable in get-default-channels output; RC siblings are not (they're removed after each cycle). An agent that follows the verify-by-sibling guardrail for an RC branch outside an active cycle will get no result and has nothing in the skill telling it to stop rather than guess.

This isn't a blocker — the input-validation rule ("Channel names: Must match output from maestro_default_channels") catches a fabricated channel name before execution, and the add-default-channel explicit-confirmation gate ensures a human sees the proposed command. But a small wording tweak would close the residual gap:

RC release branches (release/X.0.Yxx-rcN) use dedicated per-RC channels (e.g., .NET 10.0.1xx SDK RC 2) only while their cycle is active — these default mappings are removed after the RC ships, so get-default-channels will show no RC sibling to copy from. If you can't find a sibling, stop and ask release engineering rather than guessing the channel name.

And correspondingly drop "the previous RC" from the sibling list at line 50 (or replace with the escalation hint above).

Flagged by: 2/3 reviewers (merged: R1 = phrasing certainty 💡, R2 = sibling-guardrail silent failure ❌; severity = 💡 per lower-of-the-two consensus rule). Targets content introduced in commit 8bdac51 in response to round-1 feedback — multi-round self-correction applied.

- **Main/development branches** (`main`, `netN.0`, `release/X.0.Yxx`) map to the general SDK channel for that band.
- **Other shapes** also exist in dotnet/maui from time to time — point-sub-release branches (`-rc2.1`, `-preview6.1`), `inflight/*` mirrors, and vendor-suffixed branches (e.g., `release/10.0.1xx-meaipreview1`). Do not assume the four bullets above are complete — always check.

**Always verify by listing existing mappings before constructing a command:**
```bash
darc get-default-channels --source-repo https://github.com/dotnet/maui
```
Find a sibling branch (e.g., the previous SR, the previous RC, or the previous preview) and copy its channel exactly.

### Adding a new branch to the default channel mapping

Common case: a new servicing release branch is created (e.g., `release/10.0.1xx-sr7`) and needs to be added so its builds flow automatically.

⚠️ `add-default-channel` is in the explicit-confirmation list below. Show the user the exact command and wait for approval before running:

```bash
darc add-default-channel \
--channel ".NET 10.0.1xx SDK" \
--branch release/10.0.1xx-sr7 \
--repo https://github.com/dotnet/maui
```

### Workload Release Channels (manual promotion)
Pattern: `.NET X Workload Release` (e.g., `.NET 10 Workload Release`)
Expand Down
Loading