Feature · Work

Decision log

Find each decision that a spec records, with its reason.

Last changed

Generated from commit 1d7dbff ·

How it works

What a spec is

A spec, for example SPEC-7, is a list of blocks. A block is a goal, context, requirement, decision, question, risk or approach. Each block keeps a reference, for example R3, for life.

Statuses

Draft, Ready, Building, Done and Archived. Marking a spec Ready needs a clear audit of the current revision, or a written waiver. A waiver shows as "Waived, not passed".

Notes

Anyone can add a comment, question or objection on a block. Send to agent sends all open notes to the work item's worker in one message. The worker answers with one new revision.

The audit

A fixed set of rules checks the current revision and pins each finding to its block. The audit checks structure. It does not judge whether the plan is wise.

Tickets and the trace

Each requirement can become a ticket: a child work item that cites the block. The trace shows each requirement's tickets, checks and evidence, and a verdict: unplanned, planned, in progress, failing or proven.

The decision log

Decisions keeps accepted, superseded and retired decisions, for example DEC-12, each with its reason and the alternatives. Select Record decision to add one. A new spec starts from the decisions that apply.

Who can write

Members and above can write specs and record decisions. Revisions never overwrite each other: a save on an old revision is refused.

Limits

Build notes are not raised from code changes by themselves.

From the help article Specs and the decision log, checked against the product on .

What you can do

The operations this feature's screens call. Each one is POST /api/<name>, and the badge says who may call it.

  • listProjectDecisions

    Viewer

    Lists project decisions.

    Types: { q?: string; domain?: string; status?: ProjectDecisionStatus[]; limit?: number; cursor?: string } returns { items: ProjectDecision[]; domains: Array<{ domain: string; count: number }>; unreadCount: number; nextCursor: string …

  • markDecisionsRead

    Viewer

    Marks the decisions read.

    Types: Record<string, never> returns { unreadCount: number }

  • retireProjectDecision

    Member

    Retires the project decision.

    Types: { decisionId: string; reason: string } returns { decision: ProjectDecision }

  • getProjectDecision

    Viewer

    One decision with its whole supersession chain, oldest first.

    Types: { decisionId?: string; key?: string } returns { decision: ProjectDecision; chain: ProjectDecision[] }

  • recordProjectDecision

    Member

    Records a project decision.

    Types: { title: string; decision: string; reason: string; alternatives?: string[]; domain?: string; supersedes?: string } returns { decision: ProjectDecision }

  • listMembers

    Viewer

    Lists members.

    Types: EmptyRequest returns ListMembersResponse

Screens

What it records

The feature writes these events to the audit log, the permanent record of what happened.

  • Project decision recorded
  • Project decision retired
  • Project decision superseded
  • Spec audited
  • Spec created
  • Spec note added
  • Spec note resolved
  • Spec revised
  • Spec status changed
  • Spec tickets created
  • Spec trace changed

Generated from code at commit 1d7dbff ·

Turn the numbers into shipped work.

Crewshal runs these choices for you: a persistent AI worker with memory and rules, on your Claude and Codex subscriptions.