Reference · Config
The specline.yml config
A repo's tunables — the numbers and names it calibrates to its own scale —
live in specline.yml at the repo root, read deterministically by Specline. It is
the source of truth for pins and thresholds. specline.yml tunes the grain,
not the methodology: it does not configure rules, schema, or partitions. Absent → Specline
falls back to canon defaults.
# specline.yml
canon: 2.6
tier: 1
deciders: [jonathan]
deputy: null
staleness: # the staleness windows (durations), per state
building: 30 days # frontmatter stale_after is computed from these
blocked: 14 days
focus_limit: # decider WIP — the B7 ceiling (per decider)
building: 3
active: 6
coupling_ceiling: 50% # B2 — spec + forced loads, as % of context_window
context_window: 400000 # chars in the weakest in-use model's window (the coupling denominator)
suggest_slicing_past: 6 # acceptance/Behavior count above which Specline nudges to slice (while size: small)
review_rounds_before_human: 2 # outer-loop verifier↔implementer bounce budget
models: # capability tier → real model
light: claude-haiku
standard: claude-sonnet
frontier: claude-opus
merge_target: main # (v2.8, optional) where impl PRs merge and graduation lands; absent → repo default branch | Key | Values | What it tunes |
|---|---|---|
canon | version string | The canon version this repo pins. This contract changes first; repo conventions follow. |
tier | 0 | 1 | 2 | The adoption tier. Specline checks only the rules of the declared tier; tier-2 governance fires only at tier: 2. |
deciders | list of names | The named POs who may ratify and accept. |
deputy | a name | null | Who decides when a decider is unavailable. With no deputy, the agent applies the entry's stated default and parks blocked. |
staleness.building | duration (default 30 days) | The window before a building spec is presumed abandoned. stale_after is computed from this (B4). |
staleness.blocked | duration (default 14 days) | The window before a blocked spec is presumed abandoned (B4). |
focus_limit.building | int (default 3) | Max specs a decider may have in building at once (B7). |
focus_limit.active | int (default 6) | Max specs a decider may have in active states (ratified|building|blocked) at once (B7). |
coupling_ceiling | % (default 50%) | B2 — spec.md + transitively forced loads, as a percentage of context_window. Specline warns on breach. |
context_window | chars (default 400000) | Chars in the weakest in-use model's window — the denominator for the coupling ceiling. |
suggest_slicing_past | int (default 6) | Acceptance/Behavior count above which Specline nudges to slice, while size: small. |
review_rounds_before_human | int (default 2) | The outer-loop verifier↔implementer bounce budget before the human gate. |
models | tier → model map | Binds each capability tier (light/standard/frontier) to a real model, so specs stay agent-agnostic. |
merge_target | branch name | (v2.8, optional) The branch impl PRs merge into and graduation lands on. Repo-level on purpose — a spec doesn't choose its integration branch. Absent → the repo's default branch. |
▸
Per-repo, set once. specline.yml is the repo's calibration — the thresholds and pins every spec is measured against. Contrast it with frontmatter, which is per-spec and set at every ratification. Tune the numbers here; the rules are the canon's.
▸
Up: handbook — start light. The law: the canon, "Configuration — specline.yml".