SDD Change Proposal Template

Use this template when a ticket is too risky for a sentence but too early for implementation detail. It captures the behavior, boundaries, owner, and review evidence before the team writes code.

spec.md
# Change Proposal

Owner:
Status: Draft | Review | Approved
Date:

## Problem
- What is broken, missing, or changing?

## Goal
- What user or system behavior must be true after this ships?

## Non-goals
- What is explicitly out of scope for this change?

## Acceptance Criteria
- Given ...
  When ...
  Then ...

## Open Questions
- [ ] ...

## Evidence Required
- Test:
- Log or metric:
- Manual check:
- Rollback signal:

When to use this template

What a filled version looks like

The template becomes useful after it carries a real decision, owner, and evidence. This is the level of specificity to aim for.

## Goal
- Refund a captured charge within 90 days without creating duplicate refunds.

## Non-goals
- No new payment provider.
- No bulk refund flow.

## Acceptance Criteria
- Given the same idempotency key is replayed
  When the refund endpoint receives it again
  Then the existing refund_id is returned and no second event is emitted.

Review before implementation

Weak vs strong wording

Weak

Allow users to refund orders and make sure duplicate refunds do not happen.

Strong

Captured charges may be refunded for 90 days. Replayed requests with the same idempotency key return the existing refund_id, do not create a second row, and do not emit a second refund_requested event.

FAQ

Is this different from a PRD?

Yes. A PRD explains product intent. This change proposal turns that intent into engineering behavior, acceptance criteria, and evidence.

How long should it be?

Most useful proposals fit on one page. If the change needs architecture trade-offs, link to a design doc instead of expanding this template forever.

When is it ready for implementation?

It is ready when reviewers agree on scope, non-goals, affected systems, and the evidence required before merge.

Related resources

Editorial note

This template is written for spec-driven development workflows. The example is illustrative and should be adapted to your domain.

Tip: keep it under /docs/specs/ or /.specs/, then update it in the same pull request as implementation changes. Last updated: May 11, 2026.