Create and manage Decision (DEC-NNN) and Assumption (ASM-NNN) records. Use when: documenting non-obvious choices, tracking risky assumptions, explaining rationale. Triggers: "document decision",...
docs/sdd-guidelines.mdยง1.4: "A system can have perfect existence links yet lose integrity if decision reasoning is lost."
| Non-obvious (document) | Obvious (skip) |
|---|---|
| Alternatives exist | No realistic alternative |
| Trade-off involved | Direct REQ โ Design mapping |
| Future risk from assumption | Industry standard practice |
| Reviewer would ask "why?" | Self-evident |
| High-risk (formal ASM-NNN) | Low-risk (inline @assumes) |
|---|---|
| Invalidation = rework | Invalidation = minor fix |
| External dependency | Internal detail |
| Multiple items share it | Single item affected |
| Uncertain confidence | High confidence |
| Level | Decision | Assumption |
|---|---|---|
| High | Separate DEC-NNN.md |
Separate ASM-NNN.md |
| Medium | Inline @rationale block |
Inline @assumes + brief |
| Low | Inline @rationale comment |
Inline @assumes only |
Assess significance โ Does it warrant a file or inline?
For High significance:
# Templates are in this skill's templates/ directory
# Copy to your project's spec/decisions/
mkdir -p spec/decisions
# Then create from template structure (see templates/DEC-template.md)
Fill required fields:
Link from artifact:
`@rationale:` DEC-003
Assess risk โ Formal record or inline?
For High-risk:
# Copy template structure to your project
mkdir -p spec/assumptions
# Then create from template structure (see templates/ASM-template.md)
Fill required fields:
Link from artifact:
`@assumes:` ASM-002
## Token Bucket Algorithm
`@derives:` REQ-005
`@rationale:` Chose token bucket over sliding window โ O(1) memory per key
vs O(n) for sliding window. Critical for 10K+ concurrent keys.
## API Gateway
`@derives:` REQ-003
`@assumes:` Single-region deployment (if multi-region, need distributed rate limiting)
## Authentication Flow
`@derives:` REQ-AUTH-001
`@rationale:` DEC-002 (OAuth2 vs custom auth)
`@assumes:` ASM-001 (IdP availability)
spec/
โโโ decisions/
โ โโโ DEC-001.md # Architecture decisions
โ โโโ DEC-002.md
โ โโโ ...
โโโ assumptions/
โโโ ASM-001.md # High-risk assumptions
โโโ ...
| Type | Pattern | Example |
|---|---|---|
| Decision | DEC-{NNN} |
DEC-001 |
| Domain-specific | DEC-{DOMAIN}-{NNN} |
DEC-AUTH-001 |
| Assumption | ASM-{NNN} |
ASM-001 |
| Domain-specific | ASM-{DOMAIN}-{NNN} |
ASM-PERF-001 |
When a decision is replaced:
---
id: DEC-005
supersedes: DEC-002
---
# Use JWT instead of Session Tokens
## Context
DEC-002 chose session tokens. New requirements (REQ-015: stateless API)
invalidate that decision.
...
Update old decision:
---
id: DEC-002
status: superseded
superseded_by: DEC-005
---
When assumption proves false:
Update ASM record:
status: invalidated
invalidated_at: 2025-01-17
invalidated_by: "Production showed 3 regions needed"
Find all @assumes: ASM-NNN references
Re-verify each dependent artifact
Create new assumption or decision if needed
@rationalesuperseded_bydocs/sdd-guidelines.md ยง1.4 Supporting Recordsdocs/sdd-philosophy.md ยง2.2 Decision