Specline canon 2.8.0 Handbook For agents ↗
Reference · Frontmatter

Spec frontmatter

The per-spec fields, set on spec.md at ratification. Frontmatter is identity, state, and routing — nothing else; the graph lives only in relations.md. An agent triages any spec from its first ten lines: who owns it, what state it's in, how much breaks if it's wrong, and how much autonomy the build was granted.

FieldValuesWhen
slugkebab-caseAlways. The spec's identity — matches the folder name; unique across specs/, knowledge/, and archive/. Frozen once ratified: renaming a referenced spec dangles its inbound edges.
typefeature | bug | chore | parentAlways. A bug is a spec with type: bug; a decomposition parent is type: parent.
statusdraft | ratified | building | blocked | shipped | killedAlways. shipped and killed are set during archiving and exist only in archive/.
decidera named humanAlways. The PO accountable for this spec.
blast_radiuslow | medium | highAdvised before build (Specline warns if missing). Declared risk surface; drives reviewer depth, implementer effort, and model tier.
sizesmall | largeDeclared build size (default small). small = one slice; large = an atomic batch. The build axis — distinct from appetite (the review axis).
target_modellight | standard | frontierOptional. Pins a capability tier; if absent, derived from blast_radius and the coupling proxy.
createddateAlways. Spec authoring date; the lead-time clock starts here.
stale_afterdateSet on entering building or blocked — the staleness / abandonment trigger (B4).
loop_budgetpositive integerOptional. The PO's autonomy grant — the cap on autonomous build cycles with no green-checkpoint advance.
acceptance_resultsa linkOn archived specs only — the structural proxy that graduation ran the acceptance checks (B5).

These are per-spec, set at ratify. loop_budget lives here, in the spec's frontmatter — it is the PO's autonomy grant for this build, not a repo-wide setting in specline.yml. The build escalates back to a human gate at the first of two triggers: loop_budget exhausted (no progress) or stale_after reached (too much time).