Feature · Work
Decision log
Find each decision that a spec records, with its reason.
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.
ViewerlistProjectDecisionsLists 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 …
ViewermarkDecisionsReadMarks the decisions read.
Types:
Record<string, never>returns{ unreadCount: number }
MemberretireProjectDecisionRetires the project decision.
Types:
{ decisionId: string; reason: string }returns{ decision: ProjectDecision }
ViewergetProjectDecisionOne decision with its whole supersession chain, oldest first.
Types:
{ decisionId?: string; key?: string }returns{ decision: ProjectDecision; chain: ProjectDecision[] }
MemberrecordProjectDecisionRecords a project decision.
Types:
{ title: string; decision: string; reason: string; alternatives?: string[]; domain?: string; supersedes?: string }returns{ decision: ProjectDecision }
ViewerlistMembersLists members.
Types:
EmptyRequestreturnsListMembersResponse
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