diff --git a/CONTRIBUTOR-DOCS/03_project-planning/03_components/README.md b/CONTRIBUTOR-DOCS/03_project-planning/03_components/README.md
index 32e941a523..76904bc25b 100644
--- a/CONTRIBUTOR-DOCS/03_project-planning/03_components/README.md
+++ b/CONTRIBUTOR-DOCS/03_project-planning/03_components/README.md
@@ -27,12 +27,15 @@
- Asset
- [Asset migration roadmap](asset/rendering-and-styling-migration-analysis.md)
- Avatar
+ - [Avatar accessibility migration analysis](avatar/accessibility-migration-analysis.md)
+ - [Avatar — 2nd-Gen Migration Plan](avatar/migration-plan.md)
- [Avatar accessibility migration analysis](avatar/rendering-and-styling-migration-analysis.md)
- Badge
- [Badge accessibility migration analysis](badge/accessibility-migration-analysis.md)
- [Badge migration roadmap](badge/rendering-and-styling-migration-analysis.md)
- Button
- [Button accessibility migration analysis](button/accessibility-migration-analysis.md)
+ - [Button Migration Plan](button/migration-plan.md)
- [Button migration roadmap](button/rendering-and-styling-migration-analysis.md)
- Button Group
- [Button Group migration roadmap](button-group/rendering-and-styling-migration-analysis.md)
diff --git a/CONTRIBUTOR-DOCS/03_project-planning/03_components/button/migration-plan.md b/CONTRIBUTOR-DOCS/03_project-planning/03_components/button/migration-plan.md
new file mode 100644
index 0000000000..a78e93154b
--- /dev/null
+++ b/CONTRIBUTOR-DOCS/03_project-planning/03_components/button/migration-plan.md
@@ -0,0 +1,608 @@
+
+
+[CONTRIBUTOR-DOCS](../../../README.md) / [Project planning](../../README.md) / [Components](../README.md) / Button / Button Migration Plan
+
+
+
+# Button Migration Plan
+
+
+
+
+In this doc
+
+- [TL;DR](#tldr)
+ - [Most blocking open questions](#most-blocking-open-questions)
+- [1st-gen API surface](#1st-gen-api-surface)
+ - [Properties / attributes](#properties--attributes)
+ - [Methods](#methods)
+ - [Events](#events)
+ - [Slots](#slots)
+ - [CSS custom properties](#css-custom-properties)
+ - [Shadow DOM output (rendered HTML)](#shadow-dom-output-rendered-html)
+- [Dependencies](#dependencies)
+- [Changes overview](#changes-overview)
+ - [Must ship — breaking or a11y-required](#must-ship--breaking-or-a11y-required)
+ - [Additive — ships when ready, zero breakage for consumers already on 2nd-gen](#additive--ships-when-ready-zero-breakage-for-consumers-already-on-2nd-gen)
+- [2nd-gen API decisions](#2nd-gen-api-decisions)
+ - [Public API](#public-api)
+ - [Behavioral semantics](#behavioral-semantics)
+ - [Pending accessible-name rule (2nd-gen)](#pending-accessible-name-rule-2nd-gen)
+ - [Accessibility semantics notes (2nd-gen)](#accessibility-semantics-notes-2nd-gen)
+ - [Deferred semantics note (2nd-gen)](#deferred-semantics-note-2nd-gen)
+ - [Internal semantic button implications](#internal-semantic-button-implications)
+- [Architecture: core vs SWC split](#architecture-core-vs-swc-split)
+ - [Shared semantics reuse](#shared-semantics-reuse)
+ - [Global alignment contract](#global-alignment-contract)
+- [Migration checklist](#migration-checklist)
+ - [Preparation (this ticket)](#preparation-this-ticket)
+ - [Setup](#setup)
+ - [API](#api)
+ - [Styling](#styling)
+ - [Accessibility](#accessibility)
+ - [Testing](#testing)
+ - [Documentation](#documentation)
+ - [Review](#review)
+- [Blockers and open questions](#blockers-and-open-questions)
+ - [Deferred follow-up tickets](#deferred-follow-up-tickets)
+- [References](#references)
+
+
+
+
+
+> **SWC-1873** · Planning output. Must be reviewed before implementation begins.
+
+---
+
+## TL;DR
+
+- `sp-button` is planned to become button-only in 2nd-gen; deprecated link mode moves to native `` with global button styling
+- 2nd-gen `sp-button` should render an internal semantic `