Repository navigation
Releases: speclinedev/specline
Release list
Canon 3.1.0 — two normative parts, unattended builds opt-in
Completes what v3.0 started: separates ordinary spec writing and record
keeping from unattended-build machinery. Part 1 (writing a spec) and Part 2
(keeping the record) are normative; Part 3 (unattended builds) is opt-in via
unattended: true in specline.yml (default off) and is labeled
experimental everywhere it surfaces.
- Lifecycle state follows location: shape in
docs/drafts/, approve into
docs/specs/, graduate intoarchive/andknowledge/. - Tiers are removed — one validation mode;
unattendedis the only switch. - CLI, MCP, GitHub Action, reference site, and handbook aligned to the new
contract;upgrademigrates legacy draft/ratified spec folders without
silently approving them.
Full rationale and rule-by-rule changes in specline-3.1.md's "Changes from
v2.8" section and docs/proposals/v3.1-amendment.md. See #26.
Canon 3.0.0 — attended by default, one branch is the normal shape
Merge-first falls away as a MUST: no spec has to land on the merge target
before work begins. One branch — spec, build, graduation, one PR — is now
the normal shape; the two-branch shape stays legal for parallel shaping or
a runner that needs a landed baseline.
New build: attended | unattended key (absence = attended, the default).
Amendment mid-build is a normal move for an attended spec: the builder says
so, the decider agrees, the diff is the record — no handback ceremony.
Everything designed for an unattended runner is preserved, not deleted:
status.md, the build loop, routing, and the full runner contract move into
a dedicated "Unattended builds" chapter, text unchanged from v2.8, gated
behind build: unattended.
Full changelog in specline-3.0.md's "Changes from v2.8" section.
See #25.
v2.8.0
Canon 2.8.0 — the runnable-command entry shape + merge_target.
- An agent-loopable acceptance item MAY carry its command inline:
<claim> — run:cmd`` — one shell invocation, exit 0 settles the claim. Opt-in, never required; a v2.7 spec stays valid untouched. - New advisory doctor rule
CHECK-RUN-MALFORMED(warns on a malformed— run:item; absence never fires). - Runner contract: non-normative SHOULD — reflect runnable-check advances into status.md's Last green checkpoint.
specline.ymlgains optionalmerge_target(repo-level integration branch; absent → the repo's default branch).
Canon 2.7.1 — slug-as-ID + the runner contract
First shipped release of the 2.7 line (2.7.0 was merged but never tagged).
2.7.0 — slug-as-ID
A spec's identity is its slug (the folder name), not a four-digit counter-allocated ID. .id-counter, the numeric id frontmatter field, and the counter-gap check are gone. Collisions surface as real git conflicts at merge instead of silent duplicate numbers. SLUG-DUPLICATE replaces ID-DUPLICATE; FRONTMATTER-ID-MISMATCH → FRONTMATTER-SLUG-MISMATCH. See MIGRATING-2.6-to-2.7.md.
2.7.1 — the runner contract
The minimal file-observable behaviors a build-loop runner must satisfy to be Specline-compliant: a machine-parseable ## State handoff token (building | ready-for-review | blocked | escalated), plus mirroring the reviewer's bounce verdict and the escalation reason into status.md. Transport stays the runner's own business.
Action + CLI resolve from source at this tag; standalone binaries are attached by the release workflow.
Canon 2.6.3 — spec design.md → implementation.md
Renames the per-spec build-scratch design.md → implementation.md (it holds the 'how' — mechanics + suggested UI approach — not graphic design). Frees design.md for its natural meaning: a repo-level design-system doc alongside architecture.md. Doc-only; no rule change. Pin the Action at speclinedev/specline/cli@v2.6.
Canon 2.6.2 — Assumptions section naming
Patch: the spec-body Assumptions section now has a single canonical name in the canon prose (it was titled "Assumptions / external dependencies" in one place but "Assumptions" in the checklist + allowlist, which tripped UNKNOWN-SECTION for agents using the long title). No rule change. Pin the Action at speclinedev/specline/cli@v2.6.
Canon 2.6.1 — spec.md is integrity
Patch to 2.6.0: STRUCT-MISSING-SPEC is promoted from advisory to integrity (blocks). spec.md is the constitutive file — a specs/ folder without it is not a spec, and its dir-derived id would otherwise let other specs resolve relations to an empty shell. relations.md and other auxiliary files stay advisory. Quarantine keeps it humane: it blocks only a PR that touches the empty folder.
Pin the Action at speclinedev/specline@v2.6.1.
Canon 2.6 — gate integrity, advise on taste
Canon 2.6 re-tiers Specline: it blocks only on integrity (parse/reference/ID/enum/archive facts) and treats every judgment about spec quality — completeness, sizing, mechanics (B6), build-readiness, lifecycle — as an advisory warning that never blocks. The decider owns 'enough'.
- Ratification is git's: the approving merge to main is the record;
ratified_by/ratified_atandFRONTMATTER-MISSING-RATIFIEDare gone. Specline never duplicates what code or git already owns. - B6 is now an unverified advisory indicator, not a defect.
- New
specline upgrade(2.5) + bundled canonspecline-2.6.md.
Pin the Action at speclinedev/specline@v2.6.0.
Canon 2.5.0
Canon 2.5.0 — the current Specline release (dropped the -draft label; same contract, honest version).
- doctor enforces canon 2.5: CORRECTIONS-MALFORMED + required
## Corrections, and CANON-PIN-MISMATCH (warn-only) specline upgradebumps a repo's pin + regenerates generated files to the served canon- bundled canon: specline-2.5.md (2.5.0)
Pin the Action at speclinedev/specline@v2.5.0.