Assumption Ledger
Maintain a project-wide Assumption Ledger — durable memory of what was assumed, how sure we were, and how it was proved or disproved. Supports fresh context per slice without losing epistemic continuity.
Input
Mode + context: $ARGUMENTS
Modes:
create — initialize a new ledger
update — add/update assumptions from a card, spike verdict, or slice result
review — summarize current ledger and recommend what to validate next
Ledger location
Default: docs/assumptions.md. If it exists, update — don't duplicate.
Ledger schema
Each entry MUST include:
- ID:
A-### (stable identifier)
- Statement: one sentence, falsifiable if possible
- Type: Requirement | Architecture | Implementation
- Confidence: 0-100%
- Status: Proposed | Validated | Invalidated | Obsolete
- Introduced by: (card / spike / slice / commit)
- Validated by: (test name, command, spike evidence) — required for Validated/Invalidated
- Last reviewed: YYYY-MM-DD
Graduation Protocol
Assumptions track uncertainty and confidence. They are not permanent authority.
When assumptions stabilize, promote them to their canonical home:
- Capsule promotion: durable semantic law or glossary boundary →
docs/capsule.md or docs/capsule-<feature>.md
- Roadmap/decision promotion: strategic initiative choice with
reversibility/rationale →
docs/roadmap.md (and/or decisions log)
- Milestone promotion: temporary phase sequencing or deferment →
docs/milestone.md
- Contract promotion: enforceable invariant now ready for code-level checks
→
/pragma:contract + tests
When promoted, keep the assumption entry for history and add a "Promoted to"
reference with path/anchor.
Procedure
Mode: create
Create docs/assumptions.md with sections: Active (Proposed), Validated, Invalidated/Obsolete, Open Questions. Seed with 3-10 initial assumptions if obvious from capsule/card.
Mode: update
- Extract assumptions from context ("ASSUMPTION:" lines in cards, spike verdicts, slice summaries)
- Match against existing entries → update confidence/status/evidence. New → assign ID, add under Active.
- Confidence < 70% → mark High Risk, recommend clarification or
/pragma:spike
- Disproved by spike/test → move to Invalidated, note "Replaced by A-###" if superseded
- For any stabilized assumption, apply the graduation protocol and add
cross-reference links to the promoted artifact
Mode: review
- List Active (Proposed) sorted by: lowest confidence first, highest impact first
- Recommend:
/pragma:spike for unknowns, /pragma:card+/pragma:slice for E2E-validatable assumptions, /pragma:characterize for behavior already in code
- Identify stale assumptions (not reviewed recently, weak evidence)
- Identify promotable assumptions and their target authority document
Constraints
- No vague assumptions. "Should be scalable" → rewrite as falsifiable statement.
- Validated/Invalidated requires evidence. Cite test, command output, or spike verdict.
- Do not delete history. Invalidated assumptions stay recorded.
- Assumptions are not features. The ledger records knowledge state, not work.
- Do not treat assumptions as semantic authority. Durable definitions and
laws must be promoted to capsule.
Output
- The updated
docs/assumptions.md diff summary
- The top 3 highest-risk active assumptions
- Promotion summary (assumptions promoted, with destination artifacts)
- The recommended next step (often
/pragma:spike or /pragma:card)
- Lifecycle:
State: governance, Next: /pragma:consult (or the explicitly recommended next step), Loop: /pragma:consult (default unless user explicitly continues directly)
1---2name: assumptions3description: Create and maintain an Assumption Ledger — a persistent record of assumptions, their confidence, and validation status. Use when starting a new slice, resuming work in a new context window, or when implicit assumptions risk causing drift. Tracks requirements, architecture, and implementation assumptions.4---56# Assumption Ledger78Maintain a project-wide **Assumption Ledger** — durable memory of what was assumed, how sure we were, and how it was proved or disproved. Supports fresh context per slice without losing epistemic continuity.910## Input1112Mode + context: $ARGUMENTS1314Modes:15- `create` — initialize a new ledger16- `update` — add/update assumptions from a card, spike verdict, or slice result17- `review` — summarize current ledger and recommend what to validate next1819## Ledger location2021Default: `docs/assumptions.md`. If it exists, update — don't duplicate.2223## Ledger schema2425Each entry MUST include:2627- **ID**: `A-###` (stable identifier)28- **Statement**: one sentence, falsifiable if possible29- **Type**: Requirement | Architecture | Implementation30- **Confidence**: 0-100%31- **Status**: Proposed | Validated | Invalidated | Obsolete32- **Introduced by**: (card / spike / slice / commit)33- **Validated by**: (test name, command, spike evidence) — required for Validated/Invalidated34- **Last reviewed**: YYYY-MM-DD3536## Graduation Protocol3738Assumptions track uncertainty and confidence. They are not permanent authority.39When assumptions stabilize, promote them to their canonical home:4041- **Capsule promotion**: durable semantic law or glossary boundary →42 `docs/capsule.md` or `docs/capsule-<feature>.md`43- **Roadmap/decision promotion**: strategic initiative choice with44 reversibility/rationale → `docs/roadmap.md` (and/or decisions log)45- **Milestone promotion**: temporary phase sequencing or deferment →46 `docs/milestone.md`47- **Contract promotion**: enforceable invariant now ready for code-level checks48 → `/pragma:contract` + tests4950When promoted, keep the assumption entry for history and add a "Promoted to"51reference with path/anchor.5253## Procedure5455### Mode: create5657Create `docs/assumptions.md` with sections: Active (Proposed), Validated, Invalidated/Obsolete, Open Questions. Seed with 3-10 initial assumptions if obvious from capsule/card.5859### Mode: update60611. Extract assumptions from context ("ASSUMPTION:" lines in cards, spike verdicts, slice summaries)622. Match against existing entries → update confidence/status/evidence. New → assign ID, add under Active.633. **Confidence < 70%** → mark High Risk, recommend clarification or `/pragma:spike`644. Disproved by spike/test → move to Invalidated, note "Replaced by A-###" if superseded655. For any stabilized assumption, apply the graduation protocol and add66 cross-reference links to the promoted artifact6768### Mode: review69701. List Active (Proposed) sorted by: lowest confidence first, highest impact first712. Recommend: `/pragma:spike` for unknowns, `/pragma:card`+`/pragma:slice` for E2E-validatable assumptions, `/pragma:characterize` for behavior already in code723. Identify stale assumptions (not reviewed recently, weak evidence)734. Identify promotable assumptions and their target authority document7475## Constraints7677- **No vague assumptions.** "Should be scalable" → rewrite as falsifiable statement.78- **Validated/Invalidated requires evidence.** Cite test, command output, or spike verdict.79- **Do not delete history.** Invalidated assumptions stay recorded.80- **Assumptions are not features.** The ledger records knowledge state, not work.81- **Do not treat assumptions as semantic authority.** Durable definitions and82 laws must be promoted to capsule.8384## Output85861. The updated `docs/assumptions.md` diff summary872. The top 3 highest-risk active assumptions883. Promotion summary (assumptions promoted, with destination artifacts)894. The recommended next step (often `/pragma:spike` or `/pragma:card`)905. **Lifecycle**: `State: governance`, `Next: /pragma:consult` (or the explicitly recommended next step), `Loop: /pragma:consult` (default unless user explicitly continues directly)