---
name: release-milestones
description: >
  Reconcile shipped SkiaSharp pull requests and linked issues, maintain
  Chromium-derived release milestone dates, roll open work forward, and close
  shipped milestones with the repository-owned PowerShell script. Use whenever
  a maintainer asks to update, repair, reconcile, advance, close, or inspect
  release milestones, milestone dates, or release assignments.
---

# Release Milestones

**Release - Finish** automatically runs both milestone operations after every
successful preview, RC, stable, patch, or hotfix Finish. Its dry-run includes
the milestone plan, and its push run verifies the exact immutable shipment tag
before any milestone write.

Use **Release - Milestones** separately for diagnostics or repairs, with the
needed independent operations selected and `push` disabled for a read-only run.
After reviewing that output, dispatch again with `push` enabled, or run the two
repository-owned scripts separately:

```powershell
# Reconcile shipped assignments (read-only)
./scripts/infra/publishing/reconcile-release-assignments.ps1 `
  -Version 4.153.0

# Reconcile shipped assignments
./scripts/infra/publishing/reconcile-release-assignments.ps1 `
  -Version 4.153.0 `
  -Push

# Update dates, roll work forward, and close shipped milestones (read-only)
./scripts/infra/publishing/update-release-milestones.ps1

# Apply milestone updates
./scripts/infra/publishing/update-release-milestones.ps1 `
  -Push
```

Assignment reconciliation maps merged pull requests and linked issues to the
release where they shipped. Milestone updates maintain upcoming
Chromium-derived dates, move remaining open work to the next unshipped
milestone, and close shipped milestones. When an exact shipped-release
milestone is missing, reconciliation plans or creates it before assigning work.

Always run and present the selected read-only operation(s) before requesting
confirmation for `-Push`. Missing shipped milestones are repaired
automatically; missing tags, release boundaries, and ambiguous ownership still
block remote reconciliation or closure. These scripts never create release
branches, tags, packages, or GitHub Releases.
