MoSCoW is a categorical commitment framework for near-term, capacity-constrained delivery—not a discovery tool, scoring model, or portfolio allocator. This guide equips technology leaders to run disciplined MoSCoW cycles by defining explicit category criteria, assigning decision rights, embedding guardrails, and validating outcomes against measurable KPIs so prioritization becomes an accountable management decision rather than a negotiation theater.

<div class="my-stack-md p-6 bg-surface-container-low border-l-4 border-primary rounded-r-lg">
Key Takeaway: MoSCoW works when you treat it as a commitment mechanism: define crisp criteria, assign decision rights, enforce a Must capacity cap, publish a Won't list with re-review dates, and measure both outcomes and guardrails. If guardrails degrade, success is not declared.

</div>

## What MoSCoW Is (and Isn't)

MoSCoW is a categorical prioritization method aimed at near-term, timeboxed planning. It is optimized for teams that must deliver a coherent slice of value with fixed capacity or deadlines while keeping stakeholders aligned on what will not be done.

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:42rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Category</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">What It Is</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">What It Is Not</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Purpose</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Classify items into Must, Should, Could, Won&#39;t to reflect constraints, commitments, and tradeoffs. Grounded in explicit criteria and evidence.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">A scoring model like RICE or WSJF. Those assign numerical scores; MoSCoW forces categorical commitments.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Scope</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Near-term, capacity-constrained delivery (release, sprint sequence, event-driven window).</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">A portfolio allocation tool for cross-product or multi-year investment choices.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Discovery</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Requires evidence before freezing scope.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">A discovery method. Use customer discovery, Lean Startup, or design thinking first.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Objectives</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Helps decide which work achieves outcomes set by OKRs/SMART goals.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">A replacement for objectives.</td></tr></tbody>
</table>
</div>

### The Four Categories: Decision Intent and Triggers

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:42rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Category</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Decision Intent</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Common Triggers</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Must</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Non-negotiable within the timebox</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Safety, security, or compliance deadlines; contractual obligations; critical defect with material impact; enabler work without which other Musts fail</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Should</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Valuable and expected, but negotiable if capacity is tight</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Material customer value or risk reduction; important differentiators; high-confidence ROI not tied to a hard date</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Could</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Nice to have; includes learning experiments</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Smaller improvements; UX polish; instrumented experiments; buffer to absorb variability</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Won&#39;t (this time)</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Explicitly out of scope for this timebox</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Strategic but too large now; unclear value; depends on unresolved discovery; competing for scarce capacity</td></tr></tbody>
</table>
</div>

## When to Use It

Use MoSCoW when:

- The planning horizon is short to medium (a release, a few sprints, or an event-driven window) and capacity is relatively fixed.

- You need commitments that multiple functions can align on: engineering, design, sales, support, compliance.

- A clear Won't list will prevent scope creep and stakeholder surprises.

Avoid or limit MoSCoW when:

- You are exploring a new market, problem space, or business model. Start with discovery methods to build evidence before locking categories.

- You are making cross-product or multi-year investment choices. Use portfolio management or structured decision analysis.

- The process is about improving a known, measurable workflow end to end. Use process-improvement approaches first, then bring outputs into MoSCoW if they must compete for capacity.

Cadence depends on planning context, decision horizon, available evidence, and team rhythm. Do not force a schedule; let the cadence match the decision window and evidence maturity.

## Decision Context & Stakeholder Map

This MoSCoW cycle resolves a specific decision: commit to a 10-week release scope for Onboarding & Insights culminating in a customer advisory event. The team must align engineering, product, support, and compliance on what ships, what waits, and why.

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:48rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Role</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Interest</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Decision Right</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Communication Channel</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product Director</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Category criteria integrity, portfolio alignment</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Decide (Criteria)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Criteria sheet review, Executive Sync</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product Manager (PM)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Scope composition, stakeholder alignment, delivery</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Decide (Classification), Consult (Criteria)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Workshop, Decision Log, Slack/Email</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Engineering Lead / EM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Feasibility, velocity, technical risk, capacity commitment</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Decide (Capacity Commitment), Consult (Classification)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Workshop, Capacity Worksheet, Sprint Planning</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Tech Lead (TL)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Dependency validation, technical decomposition</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Consult (Classification, Capacity)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Workshop, Dependency Map</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Compliance/Security Lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Regulatory obligations, security posture</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Decide (Compliance Musts)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Criteria Sheet, Workshop</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Support Lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Customer impact, escalation volume, SLA risk</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Consult (Classification)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Workshop, Position Statement</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Design Lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Usability, activation flow, experiment design</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Consult (Classification)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Workshop, Position Statement</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Executive Sponsor</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Tie-breaking, strategic alignment, budget</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Decide (Escalations), Inform (Final Plan)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Escalation Path, Review Meeting</td></tr></tbody>
</table>
</div>

## Governance & Decision Rights

Clarity on who decides what is often more valuable than the categories themselves. Assign explicit roles and escalation paths.

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:48rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Decision Area</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Accountable Owner</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Consulted Parties</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Notes</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Category criteria (Must/Should/Could/Won&#39;t)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product Director</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Security, Compliance, Architecture, Support</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Publish a one-page criteria sheet and keep it versioned.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Item classification</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product Manager (PM)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Tech Lead (TL), Design Lead, Support Lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM proposes; TL confirms feasibility and dependencies.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Compliance/security Musts</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Compliance or Security Lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Legal, PM, TL</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Hard deadlines and obligations override preferences.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Tie-breakers and escalations</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Executive Sponsor</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM, TL, Finance</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Used when category inflation or conflicts persist.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Reclassification during execution</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">TL, Executive Sponsor</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Requires evidence of material change.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Capacity commitment approval</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Engineering Lead / EM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM, TL</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Closes the loop between classification and sprint planning.</td></tr></tbody>
</table>
</div>

## Category Criteria Template {#criteria-template}

Use this versioned one-pager to define acceptance standards before classifying any item. Default Must capacity cap: ≤ 60% of planned capacity.

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:48rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Category</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Criteria to Accept (3–5 bullets)</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Evidence Standard</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Must Capacity Cap</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Must</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">1. Compliance or contractual deadline within the timebox.<br>2. Critical defect with quantified impact on customer operations or revenue.<br>3. Enabler without which a Must cannot ship.<br>4. Safety or security incident remediation with defined SLA.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Regulatory notice, contract clause, incident report with p95 metrics, ARR-at-risk calculation, dependency graph showing blocking path.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">≤ 60% of planned capacity (default)</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Should</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">1. Delivers material value or risk reduction this timebox but not tied to a hard date.<br>2. Evidence of customer demand or ROI (qualitative or quantitative).<br>3. Does not block Musts.<br>4. Aligns to a stated OKR for the period.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Customer interview synthesis, usage data, support ticket trends, ROI model with assumptions.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">N/A</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Could</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">1. Useful improvement or learning experiment.<br>2. Fits remaining capacity after Must/Should commitment.<br>3. Low risk to ship; reversible or behind a flag.<br>4. Instrumented for learning.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Experiment hypothesis, UX audit, tech debt score, team capacity buffer calculation.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">N/A</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Won&#39;t</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">1. Valuable but too large, risky, or uncertain for this timebox.<br>2. Requires unresolved discovery.<br>3. Not aligned to immediate objectives.<br>4. Explicit reason and re-review date required.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Discovery gap analysis, effort estimate &gt; timebox, strategic misalignment note, re-review trigger.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">N/A</td></tr></tbody>
</table>
</div>

### Completed Category Criteria Sheet: SignalPath (Worked Example)

All case study figures are illustrative.

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:42rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Category</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Criteria to Accept</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Must</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">1) Compliance or contractual deadline within the timebox; OR 2) Critical defect with quantified impact on customer operations or revenue; OR 3) Enabler without which a Must cannot ship.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Should</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Delivers material value or risk reduction this timebox but not tied to a hard date; evidence of customer demand or ROI; does not block Musts.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Could</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Useful improvement or learning; fits remaining capacity; low risk to ship.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Won&#39;t</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Valuable but too large, risky, or uncertain for this timebox; requires unresolved discovery; not aligned to immediate objectives.</td></tr></tbody>
</table>
</div>

## Workshop Runbook (Facilitator Guide) {#workshop-runbook}

### Pre-Work Template: Independent Position Statement

Submit 48 hours before workshop. One paragraph per top-3 item.

<div class="my-stack-md p-6 bg-surface-container-low border-l-4 border-primary rounded-r-lg">
Example (Support Lead): "Ingestion reliability fix is Must. Two enterprise accounts at risk of SLA breach ($180k ARR). Error rate 4.2% p95. No workaround exists. Blocking activation for both accounts."

</div>

### Anonymous Pre-Voting Setup

- Tool: Miro, Google Forms, or Planning Poker app (example tools only).

- Mechanic: Each stakeholder votes Must/Should/Could/Won't for each candidate item.

- Output: Vote distribution per item (e.g., "Guided Setup: Must 1, Should 6, Could 2, Won't 0 → Discussion triggered").

### Live Agenda (60 Minutes)

- Reveal & Context (15 min): Display anonymous vote distributions. Facilitator reads items with high divergence.

- Gap Discussion (30 min): Focus on items with split votes. PM presents evidence; TL validates feasibility. Stakeholders speak to their pre-submitted positions.

- Consent Round (10 min): Facilitator asks each accountable owner: "Do you consent to this classification?" Record objections.

- Objection Log & Close (5 min): Document dissenting views, assumptions, and risks. Confirm decision log link and next review date.

### Output Checklist (Required Artifacts)

- [ ] Final MoSCoW list (versioned)

- [ ] Decision log link (shared with all stakeholders)

- [ ] Reclassification rule (trigger + approval path)

- [ ] Next review date (calendar invite sent)

## Capacity Planning Worksheet {#capacity-worksheet}

### Inputs

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:42rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Parameter</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Value</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Source</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Team Velocity (range)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">8–10 pts/sprint</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Historical (last 6 sprints)</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Sprints in Timebox</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">5</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Release Plan</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Planned Capacity (pts)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">45 (9 pts/sprint × 5)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Velocity × Sprints</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Must Total (pts)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">31</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Classified Backlog</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Should Total (pts)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">16 (pre-cut) → 13 (committed)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Classified Backlog</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Could Total (pts)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">8</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Classified Backlog</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Buffer %</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">~2% (1 pt)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Policy</td></tr></tbody>
</table>
</div>

### Output: Committed Scope Calculation

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:48rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Category</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Points</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Status</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Notes</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Must</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">31</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Committed</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Non-negotiable</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Should</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">13</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Committed</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Guided Setup reduced 8→6; Pricing Prompt (3) deferred</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Buffer</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">1</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Reserved</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Absorbs Must/Should variance</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Subtotal</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>45</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>At Capacity</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"></td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Could</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">8</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Contingency</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Ranked for buffer consumption (see below)</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Deferred Shoulds</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">3 (Pricing Prompt) + 2 (Guided Setup tips)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Won&#39;t (this cycle)</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Re-review: Next quarterly planning</td></tr></tbody>
</table>
</div>

### Could Buffer Rank Order (Consumption Priority)

- Instrumentation improvements for setup funnel (3 pts) — improves learning

- Sample dashboards for Go/Node SDKs (3 pts) — measurable adoption signal

- Dashboard color palette update (2 pts) — UX polish

## Reclassification Protocol

Trigger Definition (Material Change):

- New compliance/regulatory guidance with deadline inside timebox.

- Production incident creating new critical defect or blocking a Must.

- External dependency break (vendor, platform, partner) with no workaround.

- Strategic pivot authorized by Executive Sponsor.

Approval Path:

- PM Proposes: Documents item, new evidence, effort delta, and proposed category shift.

- TL Validates: Confirms feasibility, dependency impact, and revised capacity math.

- Executive Sponsor Approves: Signs off on tradeoff (typically: a Should/Won't absorbs the delta).

- Decision Log Updated: New classification, rationale, objections, assumptions, owner, date.

- Stakeholders Notified: Decision log link shared; Won't list updated with new re-review dates.

## Case Study: SignalPath {#case-study}

Context: SignalPath, a B2B analytics platform (120 employees, 3 product teams). The Onboarding & Insights team commits to a 10-week plan ending with a customer advisory event. Capacity: ~9 engineer-weeks per 2-week sprint × 5 sprints = 45 points (illustrative).

Classified Backlog Highlights (Effort in Points):

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:48rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Category</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Item</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Effort</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Rationale</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Must</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Data retention policy update</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">8</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Regulatory trigger within 60 days; cross-team storage API dependency.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Must</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Ingestion reliability fix (Kafka connector)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">13</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Blocks 2 enterprise customers; penalty risk; error rate 4.2% p95.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Must</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Auth token expiration bug fix</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">5</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Silent reconnect failures materially impact ingestion pipeline.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Must</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Storage schema migration (enabler)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">5</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Required for retention policy update.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Should</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Guided workspace setup w/ progress indicators</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">8 → 6</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Hypothesis: reduce time-to-activation 5d → 3d. Scope reduced to fit.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Should</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Alert configuration templates</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">5</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Addresses frequent support asks; improves activation quality.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Should</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Pricing page in-app prompt</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">3</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Deferred</strong> to Won&#39;t; expected month-2 expansion nudge.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Could</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Dashboard color palette update</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">2</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">UX polish; buffer consumption rank 3.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Could</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Sample dashboards (Go, Node SDKs)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">3</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Measurable adoption; buffer consumption rank 2.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Could</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Instrumentation improvements (setup funnel)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">3</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Improves learning; buffer consumption rank 1.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Won&#39;t</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Real-time anomaly detection engine</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">34</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Strategic but too large; discovery incomplete. <strong>Re-review: Next quarterly planning.</strong></td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Won&#39;t</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Slack integration rewrite</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">21</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Useful but not aligned to immediate activation goals.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Won&#39;t</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Legacy reporting sunset</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">18</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Requires separate customer communication plan.</td></tr></tbody>
</table>
</div>
Capacity Math (Explicit):

- Musts: 31 pts

- Shoulds (committed): 13 pts

- Buffer: 1 pt

- Total Committed: 45 pts (matches planned capacity)

- Coulds: 8 pts held as ranked contingency

- Deferred Shoulds (5 pts) moved to Won't with re-review dates.

Tradeoffs Documented:

- Anomaly Detection (Won't): Unclear problem-solution fit; single large dependency cannot complete in timebox. Re-review set for next quarterly planning.

- Ingestion Fix (Must): Quantified customer impact ($180k ARR at risk); error budget breach visible in telemetry. Bundled with targeted regression test plan.

Case Study Metadata:

- Owners: PM (Scope), TL (Feasibility), EM (Capacity), Sponsor (Escalation)

- Trade-offs: Activation speed vs. expansion prompt; compliance vs. learning experiments.

- KPIs: Time-to-activation, setup completion, ingestion failure rate, support load.

- Risks: Must inflation (31/45 = 69% > 60% cap — exception documented), hidden storage API dependency.

- Outcomes: Committed scope fits capacity; Won't list published; decision log live.

## Measures & Guardrails

Success is not declared if outcomes move but guardrails degrade. Process measures protect the roadmap from wishful thinking.

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:96rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Metric</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Type</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Baseline</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Target</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Cadence</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Data Source</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Owner</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Alert Threshold</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Median time-to-activation (first dashboard)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Outcome</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">5 days</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">3 days</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Weekly</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product Analytics (e.g., Mixpanel)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">&gt; 4 days at Week 6</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Setup completion rate within 7 days</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Outcome</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">62%</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">75%</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Weekly</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product Analytics</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">&lt; 65% at Week 6</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Expansion revenue from usage thresholds (cohort)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Outcome</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$0.0</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$15k inc. MRR</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Per-Release</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Billing System</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM / Finance</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">$0 at Release</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">P0/P1 support contacts per 100 new accounts</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Guardrail</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">12</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">≤ 8</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Weekly</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Support Platform (e.g., PagerDuty)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Support Lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">&gt; 10 for 2 consecutive weeks</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Setup error rate (instrumented funnel)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Guardrail</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">7.5%</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">≤ 5%</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Weekly</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Product Analytics</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">&gt; 6% for 2 consecutive weeks</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Data ingestion failure rate (p95 new accounts)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Guardrail</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">4.0%</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">≤ 2.0%</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Weekly</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Observability (e.g., Datadog)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">TL</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">&gt; 3% for 2 consecutive weeks</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Security/privacy incidents (onboarding)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Guardrail</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">0</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">0</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Per-Incident</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Security Logs</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Security Lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Any incident</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Spillover rate (work carried to next timebox)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Process</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">28%</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">≤ 10%</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Per-Sprint</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Agile Tool (e.g., Jira)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">EM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">&gt; 15% any sprint</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Rework ratio (re-opened / closed items)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Process</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">14%</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">≤ 7%</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Per-Sprint</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Agile Tool</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">EM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">&gt; 10% any sprint</td></tr></tbody>
</table>
</div>
Guardrail Breach Protocol:

- Automatic sprint retro topic for any single breach.

- Escalation to Executive Sponsor if 2 consecutive misses on any guardrail.

- Sponsor decides: scope reduction, capacity injection, or timeline extension.

## Failure Modes & Countermeasures

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:42rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Failure Mode</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Symptom</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Operational Countermeasure</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Must Inflation</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Everything becomes Must; capacity collapses; spillover rises.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Hard triggers for Must; <strong>Must capacity cap ≤ 60%</strong> unless compliance/customer-impact exception documented by accountable owner.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Vague Won&#39;t</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Stakeholders assume deferred work might still happen; scope creep returns.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Publish Won&#39;t list with reasons, re-review dates, and evidence that would change the decision.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Hidden Dependencies</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">A Should is blocked by unplanned platform change; slippage cascades.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>TL validation of dependencies required before final classification.</strong> Enablers for Musts are themselves Must. <strong>Workshop Output:</strong> Lightweight dependency map (see template below).</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Groupthink / Abilene Paradox</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Group commits to plan few individually support; self-censorship or assumed alignment.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">1. Independent position statements (pre-work).<br>2. Anonymous pre-voting on categories.<br>3. Record objections/assumptions in decision log.<br>4. Ask each: &quot;What would you choose if deciding alone?&quot; Log responses.<br>5. Require explicit consent; silence ≠ agreement.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Treating MoSCoW as Scoring</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Endless debates on numbers; categories lose meaning.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Keep categories qualitative but evidence-backed. Use scoring only if true rank-order beyond categories is needed.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Overly Rigid Cadence</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Planning windows mismatch reality; late evidence unusable.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Let cadence follow decision horizon and evidence availability. Use formal reclassification rule for material changes.</td></tr></tbody>
</table>
</div>

### Dependency Map Template (Workshop Output)

Required for all Must and top Should items.

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:60rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Item</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Depends On</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Owner</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Risk</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Mitigation</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Data Retention Policy</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Storage API v2 (Platform Team)</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Platform TL</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">API delay &gt; 1 sprint</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Mock interface; parallel schema work</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Ingestion Reliability Fix</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Kafka Client Lib Upgrade</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Backend TL</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Lib regression risk</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Canary deploy; rollback plan</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Guided Setup</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Design System v3 Components</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Design Lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Component API change</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Use stable fallback components</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Alert Templates</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Notification Service Config</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Backend TL</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Config schema change</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Feature flag templates</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Auth Token Fix</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Identity Provider (IdP) Settings</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Security Lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">IdP rollout coordination</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Joint test session scheduled</td></tr></tbody>
</table>
</div>

## Continue / Modify / Stop Criteria

Continue (Standardize) when:

- Outcome targets met or trending strongly in the right direction within guardrails.

- Process measures improve (spillover and rework within targets).

- Stakeholder confidence high; category criteria feel natural.

Modify when:

- Outcome movement mixed, or guardrails frequently hit.

- Must capacity > 70% of total for 2 consecutive cycles (quantitative threshold).

- Criteria gamed or misinterpreted. Rework criteria sheet, tighten evidence standards, or adjust buffers.

Stop or Limit Use when:

- Entering a discovery-heavy phase where freezing categories harms learning.

- Portfolio-level tradeoffs dominate. Move decisions to portfolio governance; keep MoSCoW scoped to team releases.

- Process metrics indicate MoSCoW adds overhead without improving clarity or delivery.

Actionable Decisions: Standardize current criteria/workshop format; modify triggers/buffers/mechanics; improve measurement quality; expand pilot to another team; restore prior planning method.

## Decision & Governance Checklist {#checklist}

Use in review meeting. Keep short and factual.

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:42rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Review Question</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Owner</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Status</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Do items labeled Must meet explicit criteria with evidence?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Have security/compliance Musts been validated by the accountable lead?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Compliance/Security Lead</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Are dependencies for Must and top Should items mapped and owned?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">TL</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Is capacity allocated with a buffer for uncertainty?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Are success metrics and guardrails defined and baselined?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM + Data Analyst</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Were independent positions and anonymous pre-votes collected?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Facilitator</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Are objections and assumptions recorded with owners?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Facilitator</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Is the Won&#39;t list published with reasons and re-review dates?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Is a reclassification rule defined for mid-cycle changes?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Is the next review date set and participants confirmed?</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Are Could items explicitly ranked for buffer consumption order?</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>Is the decision log link shared with all stakeholders?</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Facilitator</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Yes/No</td></tr></tbody>
</table>
</div>

## 4-Week Rollout Plan

<div class="my-stack-md overflow-x-auto">
<table class="w-full border-collapse text-left" style="min-width:48rem;">
<thead><tr><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Week</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Activities</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Owner</th><th scope="col" class="border border-outline-variant bg-surface-container-low px-4 py-3 text-left font-label-md font-semibold text-on-surface">Exit Criteria</th></tr></thead>
<tbody><tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>1</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Draft criteria sheet → stakeholder review (24h comments) → finalize v1.0.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM, Product Director</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Criteria sheet published, versioned, linked in team space.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>2</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Backlog decomposition + dependency mapping (5-row map minimum). Async position collection (top 3 items per stakeholder).</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM, TL, Stakeholders</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Decomposed backlog with effort ranges; dependency map complete; position statements received.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>3</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Workshop (60 min): pre-vote reveal → gap discussion → consent → objection log. Decision log published. Capacity commit (EM signs). Won&#39;t list with re-review dates published.</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Facilitator, PM, EM, Sponsor</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Decision log live; capacity committed; Won&#39;t list distributed; calendar invite for re-review sent.</td></tr>
<tr><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant"><strong>4</strong></td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Sprint 1 kickoff. Measurement instrumentation verified (dashboards live). Mid-cycle check scheduled (Week 6).</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">PM, TL, EM, Data Analyst</td><td class="border border-outline-variant px-4 py-3 align-top text-body-md text-on-surface-variant">Sprint 1 backlog reflects MoSCoW commit; metric dashboards show baseline data; mid-cycle check on calendar.</td></tr></tbody>
</table>
</div>

## Conclusion

MoSCoW is at its best when a technology team must make disciplined tradeoffs fast and communicate them clearly. It is not a substitute for discovery or portfolio strategy, but it complements objectives and helps keep scope aligned to what matters now. Start with a narrow, measurable pilot. Define crisp criteria, make decision rights explicit, and publish your Won't list. Measure both outcomes and guardrails so success is real, not cosmetic. When the cycle ends, decide whether to continue, modify, or stop based on evidence. Used this way, MoSCoW turns prioritization from a tug-of-war into an accountable, repeatable management decision.