Spec blocks & the status lifecycle

A spec is a work package: the implementation detail an AI coding agent needs to build part of the system. wcl wad spec --from <rev> can seed one mechanically (baseline sha + exact change list); the intent — summary, rationale, ordered instructions — is authored by the LLM/human decomposing the change.

BlockFieldsNotes
spectitle, status, created, updated?, owner?, summary, from_rev?, affected[], supersedes?, body?affected holds system/container ids; from_rev records the baseline sha when the spec was seeded from a diff
changeentity key as inline label, op, value?mechanical change list rows — op is :added / :removed / :modified; value is the rendered WCL of an added/removed entity
field_changepath as inline label, kind, old?, new?nested in change; old/new carry rendered WCL text
StatusMeaningWho moves it
:planningskeleton written, intent being authored/reviewedauthor
:in_progressan implementer picked it upimplementer
:completelanded and confirmed by the userauthor, after user confirmation
:abandonedwon't happen — revert the data or keep it with an ADR explainingauthor