Task 1
Record a Decision
Create a durable Decision with a stable key, rationale, Actor attribution, and optional source provenance.
Permission boundary
decisions.create.workspaceSteps
- 1Choose a stable decisionKey that callers can reuse when the wording changes.
- 2Record the Decision text and rationale as the meaning-bearing, immutable statement.
- 3Attach source provenance when evidence is available; do not copy evidence into an editable note.
- 4Use a DecisionCandidate instead when the proposed meaning still requires review.
CLI from this repository
pnpm decision-log decisions create \
--key architecture/database \
--title "Use Postgres for the system of record" \
--decision-text "Decision data is stored in Postgres." \
--rationale "Transactions protect append-only writes."Creates are idempotent and audited. Once active, meaning changes require a new Decision and a DecisionSupersession relationship.
Task 2
Retrieve the current answer
Resolve the active Decision by stable key without hiding the historical Decisions it superseded.
Permission boundary
decisions.read.workspaceSteps
- 1Send the stable decisionKey, plus a Project context when the key is scoped to a Project.
- 2Treat the returned Decision as the current answer for that key and context.
- 3Follow its supersession history when the reason for change matters.
GraphQL, CLI, and MCP
GraphQL query: currentDecision
pnpm decision-log decisions current architecture/database
MCP tool: decision_log.get_current_decision
MCP resource: decision-log://current/{decisionKey}Current retrieval is available through GraphQL, CLI, and MCP against the same permission boundary.
Task 3
Supersede safely
Replace changed meaning with a new immutable Decision and an explicit link to the prior record.
Permission boundary
decisions.supersede.workspaceSteps
- 1Retrieve the current Decision and confirm it is the record being replaced.
- 2Create the replacement with the new Decision text, rationale, and reason for change.
- 3Verify the replacement is current and the prior Decision remains retrievable in history.
Supported surfaces
GraphQL mutation: supersedeDecision
pnpm decision-log decisions supersede {decisionId}
MCP tool: decision_log.supersede_decisionSupersession and replacement creation are atomic and audited. The prior Decision is never rewritten.
